上传岗位添加新接口以及处理上传数据等。
This commit is contained in:
@@ -3,6 +3,7 @@ package com.ruoyi.cms.service.impl;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -743,6 +744,10 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
public void importRow(String path) {
|
||||
try {
|
||||
logger.info("开始导入Excel数据...");
|
||||
|
||||
//先清理旧数据
|
||||
Long oldDataNum = jobMapper.delRowWork();
|
||||
logger.info("删除旧的row-work..." + oldDataNum);
|
||||
// 读取Excel文件中的数据
|
||||
List<RowWork> rowWorks = ExcelToObject.readExcelToObjects(path, RowWork.class);
|
||||
logger.info("从Excel中读取到 {} 条数据", rowWorks.size());
|
||||
@@ -753,6 +758,11 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
orgDataMap.put("58同城", new ArrayList<>());
|
||||
orgDataMap.put("前程无忧", new ArrayList<>());
|
||||
orgDataMap.put("猎聘网", new ArrayList<>());
|
||||
orgDataMap.put("石河子人才网2", new ArrayList<>());
|
||||
orgDataMap.put("石河子招聘网", new ArrayList<>());
|
||||
orgDataMap.put("天互招聘网", new ArrayList<>());
|
||||
orgDataMap.put("乌鲁木齐快聘网", new ArrayList<>());
|
||||
orgDataMap.put("新疆人才网", new ArrayList<>());
|
||||
|
||||
// 遍历数据,按ORG分类,每类最多取20000条
|
||||
for (RowWork rowWork : rowWorks) {
|
||||
@@ -769,11 +779,23 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
int zlCount = orgDataMap.get("智联招聘").size();
|
||||
int tcCount = orgDataMap.get("58同城").size();
|
||||
int qcCount = orgDataMap.get("前程无忧").size();
|
||||
int lpCount = orgDataMap.get("前程无忧").size();
|
||||
int lpCount = orgDataMap.get("猎聘网").size();
|
||||
int shzrc2Count = orgDataMap.get("石河子人才网2").size();
|
||||
int shzzpCount = orgDataMap.get("石河子招聘网").size();
|
||||
int thzpCount = orgDataMap.get("天互招聘网").size();
|
||||
int wlmqkpCount = orgDataMap.get("乌鲁木齐快聘网").size();
|
||||
int xjrcCount = orgDataMap.get("新疆人才网").size();
|
||||
|
||||
|
||||
logger.info("智联招聘数据量: {}", zlCount);
|
||||
logger.info("58同城数据量: {}", tcCount);
|
||||
logger.info("前程无忧数据量: {}", qcCount);
|
||||
logger.info("猎聘网数据量: {}", lpCount);
|
||||
logger.info("石河子人才网2数据量: {}", shzrc2Count);
|
||||
logger.info("石河子招聘网数据量: {}", shzzpCount);
|
||||
logger.info("天互招聘网数据量: {}", thzpCount);
|
||||
logger.info("乌鲁木齐快聘网数据量: {}", wlmqkpCount);
|
||||
logger.info("新疆人才网数据量: {}", xjrcCount);
|
||||
|
||||
// 合并所有数据(智联招聘 + 58同城 + 前程无忧)
|
||||
List<RowWork> allData = new ArrayList<>();
|
||||
@@ -781,6 +803,11 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
allData.addAll(orgDataMap.get("58同城"));
|
||||
allData.addAll(orgDataMap.get("前程无忧"));
|
||||
allData.addAll(orgDataMap.get("猎聘网"));
|
||||
allData.addAll(orgDataMap.get("石河子人才网2"));
|
||||
allData.addAll(orgDataMap.get("石河子招聘网"));
|
||||
allData.addAll(orgDataMap.get("天互招聘网"));
|
||||
allData.addAll(orgDataMap.get("乌鲁木齐快聘网"));
|
||||
allData.addAll(orgDataMap.get("新疆人才网"));
|
||||
|
||||
// 批量插入数据
|
||||
int batchSize = 50;
|
||||
@@ -873,12 +900,19 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
logger.info("生成唯一标识符: {}", string);
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
Job jobOne = null;
|
||||
for (RowWork rowWork : rowWorks) {
|
||||
try {
|
||||
Job job = new Job();
|
||||
if(StringUtil.isEmptyOrNull(rowWork.getAca112())){
|
||||
continue;
|
||||
}
|
||||
//去重
|
||||
jobOne = jobMapper.selectOne(Wrappers.lambdaQuery(Job.class).eq(Job::getJobTitle, rowWork.getAca112()).eq(Job::getMinSalary, Long.valueOf(rowWork.getSalaryLow())).eq(Job::getMaxSalary, rowWork.getSalaryHight())
|
||||
.eq(Job::getCompanyName, rowWork.getAAB004()).eq(Job::getJobLocation, rowWork.getAAE006()).orderByDesc(Job::getCreateTime).last("LIMIT 1"));
|
||||
if (jobOne != null) {
|
||||
continue;
|
||||
}
|
||||
job.setJobTitle(rowWork.getAca112());
|
||||
job.setMinSalary(Long.valueOf(rowWork.getSalaryLow()));
|
||||
job.setMaxSalary(Long.valueOf(rowWork.getSalaryHight()));
|
||||
@@ -896,10 +930,14 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
job.setJobLocation(rowWork.getAAE006());
|
||||
job.setPostingDate(formattedDate);
|
||||
job.setJobCategory(rowWork.getJobCategory());
|
||||
if (rowWork.getAcb240() == null) {
|
||||
if (org.apache.commons.lang3.StringUtils.isEmpty(rowWork.getAcb240())) {
|
||||
job.setVacancies(-1L);
|
||||
} else {
|
||||
job.setVacancies(Long.valueOf(rowWork.getAcb240().replace("人", "")));
|
||||
String v = rowWork.getAcb240().replace("人", "").replace("以上", "");
|
||||
if (org.apache.commons.lang3.StringUtils.isNotEmpty(v) && v.contains("-")) {
|
||||
v = v.split("-")[1];
|
||||
}
|
||||
job.setVacancies(org.apache.commons.lang3.StringUtils.isNotEmpty(v) ? Long.valueOf(v) : -1L);
|
||||
}
|
||||
if (rowWork.getLatitude() != null && !rowWork.getLatitude().isEmpty()) {
|
||||
job.setLatitude(new BigDecimal(rowWork.getLatitude()));
|
||||
@@ -912,7 +950,8 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
if(Objects.isNull(rowWork.getCounty())){
|
||||
job.setJobLocationAreaCode(null);
|
||||
}else {
|
||||
job.setJobLocationAreaCode(Integer.valueOf(Objects.requireNonNull(iBussinessDictDataService.findCode(areaData, rowWork.getCounty()))));
|
||||
String code = iBussinessDictDataService.findCode(areaData, rowWork.getCounty());
|
||||
job.setJobLocationAreaCode(org.apache.commons.lang3.StringUtils.isNotEmpty(code) ? Integer.valueOf(code) : null);
|
||||
}
|
||||
job.setDescription(rowWork.getAcb22a());
|
||||
job.setIsPublish(1);
|
||||
@@ -946,6 +985,12 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
||||
}
|
||||
|
||||
logger.info("数据导入完成,总共插入 {} 条公司数据和 {} 条职位数据", totalCompanyInserted, totalJobInserted);
|
||||
Job job = jobMapper.selectOne(Wrappers.lambdaQuery(Job.class).eq(Job::getCreateTime, formattedDate).last("LIMIT 1"));
|
||||
if (job != null) {
|
||||
logger.info("存在新插入的数据,日期为:" + formattedDate);
|
||||
} else {
|
||||
logger.info("不存在新插入的数据:");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("导入数据过程中发生异常: {}", e.getMessage(), e);
|
||||
throw new RuntimeException(e);
|
||||
|
||||
Reference in New Issue
Block a user