岗位上传做处理
This commit is contained in:
@@ -1164,12 +1164,16 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void uploadFileJob(List<JobExcelVo> list) {
|
public void uploadFileJob(List<JobExcelVo> list) {
|
||||||
|
System.out.println("==================== 导入开始 ====================");
|
||||||
|
System.out.println("Excel 总条数:" + list.size());
|
||||||
//查询所有企业
|
//查询所有企业
|
||||||
Map<String, Long> companyNameToIdMap = companyNameToIdMap(list);
|
Map<String, Long> companyNameToIdMap = companyNameToIdMap(list);
|
||||||
//岗位字典转换
|
//岗位字典转换
|
||||||
List<Job> jobList = buildJobList(list, companyNameToIdMap);
|
List<Job> jobList = buildJobList(list, companyNameToIdMap);
|
||||||
|
System.out.println("转换为 Job 后的条数:" + jobList.size());
|
||||||
//岗位去重
|
//岗位去重
|
||||||
List<Job> dedupedJobList = dedupJobList(jobList);
|
List<Job> dedupedJobList = dedupJobList(jobList);
|
||||||
|
System.out.println("去重后剩余 Job 条数:" + dedupedJobList.size());
|
||||||
//批量保存岗
|
//批量保存岗
|
||||||
jobMapper.updateFileBatchInsert(dedupedJobList);
|
jobMapper.updateFileBatchInsert(dedupedJobList);
|
||||||
//构建联系人列表(关联去重后的岗位)
|
//构建联系人列表(关联去重后的岗位)
|
||||||
@@ -1211,6 +1215,8 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
* 字典转换 + Job对象构建(业务数据转换)
|
* 字典转换 + Job对象构建(业务数据转换)
|
||||||
*/
|
*/
|
||||||
private List<Job> buildJobList(List<JobExcelVo> allExcelVoList, Map<String, Long> companyNameToIdMap) {
|
private List<Job> buildJobList(List<JobExcelVo> allExcelVoList, Map<String, Long> companyNameToIdMap) {
|
||||||
|
String postingDate=DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS);
|
||||||
|
String downTime=DateUtils.getMonthThree(DateUtils.YYYY_MM_DD_HH_MM_SS);
|
||||||
return allExcelVoList.stream().map(it -> {
|
return allExcelVoList.stream().map(it -> {
|
||||||
Job job = new Job();
|
Job job = new Job();
|
||||||
BeanUtils.copyProperties(it, job);
|
BeanUtils.copyProperties(it, job);
|
||||||
@@ -1233,7 +1239,8 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
job.setJobLocationAreaCode(jobAreaCode);
|
job.setJobLocationAreaCode(jobAreaCode);
|
||||||
job.setIsPublish(1);
|
job.setIsPublish(1);
|
||||||
job.setDataSource("1");
|
job.setDataSource("1");
|
||||||
job.setPostingDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD_HH_MM_SS));
|
job.setPostingDate(postingDate);
|
||||||
|
job.setDownTime(downTime);
|
||||||
job.setView(0L);
|
job.setView(0L);
|
||||||
//填充region_code
|
//填充region_code
|
||||||
job.setRegionCode(StringUtil.getAreaToRegionCode(jobAreaCode));
|
job.setRegionCode(StringUtil.getAreaToRegionCode(jobAreaCode));
|
||||||
@@ -1251,17 +1258,28 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
*/
|
*/
|
||||||
private List<Job> dedupJobList(List<Job> jobList) {
|
private List<Job> dedupJobList(List<Job> jobList) {
|
||||||
Map<String, Job> dedupMap = new LinkedHashMap<>();
|
Map<String, Job> dedupMap = new LinkedHashMap<>();
|
||||||
|
// Map<String, Integer> keyCountMap = new HashMap<>();
|
||||||
for (Job job : jobList) {
|
for (Job job : jobList) {
|
||||||
String dedupKey = String.format(
|
String dedupKey = String.format(
|
||||||
"%s_%s_%s",
|
"%s_%s_%s_%s_%s_%s",
|
||||||
Optional.ofNullable(job.getCompanyId()).orElse(null),
|
Optional.ofNullable(job.getCompanyId()).orElse(0L),
|
||||||
|
Optional.ofNullable(job.getCode()).map(String::trim).orElse(""),
|
||||||
job.getJobTitle().trim(),
|
job.getJobTitle().trim(),
|
||||||
job.getJobLocation().trim(),
|
job.getJobLocation().trim(),
|
||||||
job.getMinSalary(),
|
job.getMinSalary(),
|
||||||
job.getMaxSalary()
|
job.getMaxSalary()
|
||||||
);
|
);
|
||||||
|
//计算重复
|
||||||
|
// keyCountMap.put(dedupKey, keyCountMap.getOrDefault(dedupKey, 0) + 1);
|
||||||
dedupMap.putIfAbsent(dedupKey, job);
|
dedupMap.putIfAbsent(dedupKey, job);
|
||||||
}
|
}
|
||||||
|
//查看重复key
|
||||||
|
// System.out.println("========== 重复KEY统计(出现次数>1)==========");
|
||||||
|
// keyCountMap.forEach((key, count) -> {
|
||||||
|
// if (count > 1) {
|
||||||
|
// System.out.println("重复KEY:" + key + " → 出现次数:" + count);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
return new ArrayList<>(dedupMap.values());
|
return new ArrayList<>(dedupMap.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1278,7 +1296,8 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
|
|||||||
job.getJobTitle().trim(),
|
job.getJobTitle().trim(),
|
||||||
job.getJobLocation().trim()
|
job.getJobLocation().trim()
|
||||||
),
|
),
|
||||||
job -> job
|
job -> job,
|
||||||
|
(oldJob, newJob) -> newJob
|
||||||
));
|
));
|
||||||
|
|
||||||
for (JobExcelVo vo : allExcelVoList) {
|
for (JobExcelVo vo : allExcelVoList) {
|
||||||
|
|||||||
@@ -379,7 +379,7 @@
|
|||||||
job_location_area_code, posting_date, vacancies, latitude, longitude, "view", company_id,
|
job_location_area_code, posting_date, vacancies, latitude, longitude, "view", company_id,
|
||||||
is_hot, apply_num, description, is_publish, data_source, job_url, remark, del_flag,
|
is_hot, apply_num, description, is_publish, data_source, job_url, remark, del_flag,
|
||||||
create_by, create_time, row_id, job_category,job_type,type,job_address,region_code,
|
create_by, create_time, row_id, job_category,job_type,type,job_address,region_code,
|
||||||
staff_type,pass,pass_reason,job_status
|
staff_type,pass,pass_reason,job_status,down_time
|
||||||
) VALUES
|
) VALUES
|
||||||
<foreach collection="list" item="job" separator=",">
|
<foreach collection="list" item="job" separator=",">
|
||||||
(
|
(
|
||||||
@@ -389,7 +389,7 @@
|
|||||||
#{job.isHot}, #{job.applyNum}, #{job.description}, #{job.isPublish}, #{job.dataSource},
|
#{job.isHot}, #{job.applyNum}, #{job.description}, #{job.isPublish}, #{job.dataSource},
|
||||||
#{job.jobUrl}, #{job.remark}, #{job.delFlag}, #{job.createBy}, #{job.createTime},
|
#{job.jobUrl}, #{job.remark}, #{job.delFlag}, #{job.createBy}, #{job.createTime},
|
||||||
#{job.rowId}, #{job.jobCategory},#{job.jobType},#{job.type},#{job.jobAddress},
|
#{job.rowId}, #{job.jobCategory},#{job.jobType},#{job.type},#{job.jobAddress},
|
||||||
#{job.regionCode},#{job.staffType},#{job.pass},#{job.passReason},'0'
|
#{job.regionCode},#{job.staffType},#{job.pass},#{job.passReason},'0',#{job.downTime}
|
||||||
)
|
)
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|||||||
Reference in New Issue
Block a user