From d3d6ccde30ca809a2156fb084ed95e1ffacaf114 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Wed, 6 Nov 2024 13:33:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A6=E6=B1=89=E8=81=94=E7=89=B9=E4=BA=8C?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../crob/ResourcePersonInfoCron.java | 121 ++++++++++++++++-- .../seclinktel/entity/po/EducationModePo.java | 4 +- .../entity/po/ResourceOtherInfoPo.java | 4 +- 3 files changed, 117 insertions(+), 12 deletions(-) diff --git a/src/weaver/interfaces/seclinktel/crob/ResourcePersonInfoCron.java b/src/weaver/interfaces/seclinktel/crob/ResourcePersonInfoCron.java index 9160de9..cfbae3c 100644 --- a/src/weaver/interfaces/seclinktel/crob/ResourcePersonInfoCron.java +++ b/src/weaver/interfaces/seclinktel/crob/ResourcePersonInfoCron.java @@ -1,18 +1,18 @@ package weaver.interfaces.seclinktel.crob; +import com.weaver.general.BaseBean; import com.weaver.general.Util; import weaver.conn.RecordSet; import weaver.interfaces.schedule.BaseCronJob; import weaver.interfaces.seclinktel.entity.po.EducationModePo; +import weaver.interfaces.seclinktel.entity.po.ResourceOtherInfoPo; import weaver.interfaces.seclinktel.entity.po.WorkInfoModePo; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Author liang.cheng @@ -25,6 +25,7 @@ public class ResourcePersonInfoCron extends BaseCronJob { public void execute() { RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); //1.工作经历 List workInfos = new ArrayList<>(); rs.executeQuery("select xm,qgslzsj,gsmc,zw1 from uf_gzjl"); @@ -43,25 +44,129 @@ public class ResourcePersonInfoCron extends BaseCronJob { Function.identity(), BinaryOperator.maxBy(Comparator.comparing(WorkInfoModePo::getLastCompanyLeaveDate)))) .values()); + Map workResultPoMap = workResult.stream() + .collect(Collectors.toMap(WorkInfoModePo::getUserId, workInfo -> workInfo)); - //2.教育经历第一学历 + //2.教育经历第一学历 List educationFirst = new ArrayList<>(); - rs.executeQuery("select xm,xl,zy from uf_jxjl where sfwdyxl = 0"); + rs.executeQuery("select id,xm,xl,zy from uf_jxjl where sfwdyxl = 0"); while (rs.next()) { + Integer id = Util.getIntValue(rs.getString("id")); Integer userId = Util.getIntValue(rs.getString("xm")); + Integer firstDegree = Util.getIntValue(rs.getString("xl")); + String firstDegreeMajor = Util.null2String(rs.getString("zy")); + educationFirst.add(EducationModePo.builder().id(id).userId(userId).firstDegree(firstDegree).firstDegreeMajor(firstDegreeMajor).build()); } + List educationFirstResult = new ArrayList<>(educationFirst.stream() + .collect(Collectors.toMap( + EducationModePo::getUserId, + e -> e, + (existing, replacement) -> existing.getId() > replacement.getId() ? existing : replacement)) + .values()); + Map educationFirstMap = educationFirstResult.stream() + .collect(Collectors.toMap(EducationModePo::getUserId, educationModePo -> educationModePo)); //2.教育经历最高学历 List educationHighest = new ArrayList<>(); - rs.executeQuery("select xm,xl,zy from uf_jxjl where sfwzgxl = 0"); + rs.executeQuery("select id,xm,xl,zy from uf_jxjl where sfwzgxl = 0"); while (rs.next()) { - + Integer id = Util.getIntValue(rs.getString("id")); + Integer userId = Util.getIntValue(rs.getString("xm")); + Integer highestDegree = Util.getIntValue(rs.getString("xl")); + String highestDegreeMajor = Util.null2String(rs.getString("zy")); + educationHighest.add(EducationModePo.builder().id(id).userId(userId).highestDegree(highestDegree).highestDegreeMajor(highestDegreeMajor).build()); } + List educationHighResult = new ArrayList<>(educationHighest.stream() + .collect(Collectors.toMap( + EducationModePo::getUserId, + e -> e, + (existing, replacement) -> existing.getId() > replacement.getId() ? existing : replacement)) + .values()); + Map educationHighMap = educationHighResult.stream() + .collect(Collectors.toMap(EducationModePo::getUserId, educationModePo -> educationModePo)); + + + List otherInfoPos = new ArrayList<>(); + List uniqueUserIds = getUniqueUserIds(workResult, educationFirstResult, educationHighResult); + uniqueUserIds.forEach(userId -> { + WorkInfoModePo workInfoModePo = workResultPoMap.get(userId); + EducationModePo educationModeFirst = educationFirstMap.get(userId); + EducationModePo educationModeHigh = educationHighMap.get(userId); + + ResourceOtherInfoPo build = ResourceOtherInfoPo.builder().id(userId).build(); + if (workInfoModePo != null) { + build.setLastWorkunitName(workInfoModePo.getLastWorkunitName()); + build.setLastJobName(workInfoModePo.getLastJobName()); + } + + if (educationModeFirst != null) { + build.setFirstDegree(educationModeFirst.getFirstDegree()); + build.setFirstDegreeMajor(educationModeFirst.getFirstDegreeMajor()); + } + + if (educationModeHigh != null) { + build.setHighestDegree(educationModeHigh.getHighestDegree()); + build.setHighestDegreeMajor(educationModeHigh.getHighestDegreeMajor()); + } + + otherInfoPos.add(build); + + }); + + String scopeId = bb.getPropValue("seclinktel", "scopeid"); + String firstDegree = bb.getPropValue("seclinktel", "firstDegree"); + String firstDegreeMajor = bb.getPropValue("seclinktel", "firstDegreeMajor"); + String highestDegree = bb.getPropValue("seclinktel", "highestDegree"); + String highestDegreeMajor = bb.getPropValue("seclinktel", "highestDegreeMajor"); + String lastWorkunitName = bb.getPropValue("seclinktel", "lastWorkunitName"); + String lastJobName = bb.getPropValue("seclinktel", "lastJobName"); + + otherInfoPos.forEach(e -> { + + //2.插入更新 + rs.executeQuery("select count(1) as nums from cus_fielddata where " + + " scope = 'HrmCustomFieldByInfoType' and scopeid = "+scopeId+" and id = ?",e.getId()); + + rs.next(); + int nums = Util.getIntValue(rs.getString("nums")); + if (nums > 0) { + //更新 + rs.executeUpdate("update cus_fielddata set "+firstDegree+"=?, "+firstDegreeMajor+"=?, "+highestDegree+"=?, "+highestDegreeMajor+"=?, "+lastWorkunitName+"=?, "+lastJobName+"= ? "+ + " where id=? and scope = 'HrmCustomFieldByInfoType' and "+scopeId+" = 1",e.getFirstDegree(),e.getFirstDegreeMajor(),e.getHighestDegree(),e.getHighestDegreeMajor(),e.getLastWorkunitName(), + e.getLastJobName(),e.getId()); + }else { + //插入 + rs.executeUpdate("insert into cus_fielddata(scope,scopeid,id,"+firstDegree+","+firstDegreeMajor+","+highestDegree+","+highestDegreeMajor+", "+lastWorkunitName+", "+lastJobName+") values(?,?,?,?,?,?,?,?,?)", + "HrmCustomFieldByInfoType",scopeId,e.getId(),e.getFirstDegree(),e.getFirstDegreeMajor(),e.getHighestDegree(),e.getHighestDegreeMajor(),e.getLastWorkunitName(),e.getLastJobName()); + } + + }); + + + } + + + + public List getUniqueUserIds(List workResult,List educationFirstResult, + List educationHighResult) { + List userIdsFromEducationFirst = educationFirstResult.stream() + .map(EducationModePo::getUserId) + .collect(Collectors.toList()); + List userIdsFromWork = workResult.stream() + .map(WorkInfoModePo::getUserId) + .collect(Collectors.toList()); + List userIdsFromEducationHigh = educationHighResult.stream() + .map(EducationModePo::getUserId) + .collect(Collectors.toList()); + return Stream.concat( + Stream.concat(userIdsFromEducationFirst.stream(), userIdsFromWork.stream()), + userIdsFromEducationHigh.stream() + ).distinct().collect(Collectors.toList()); } } diff --git a/src/weaver/interfaces/seclinktel/entity/po/EducationModePo.java b/src/weaver/interfaces/seclinktel/entity/po/EducationModePo.java index 94f5664..66f62b4 100644 --- a/src/weaver/interfaces/seclinktel/entity/po/EducationModePo.java +++ b/src/weaver/interfaces/seclinktel/entity/po/EducationModePo.java @@ -22,11 +22,11 @@ public class EducationModePo { private Integer userId; - private String firstDegree; + private Integer firstDegree; private String firstDegreeMajor; - private String highestDegree; + private Integer highestDegree; private String highestDegreeMajor; diff --git a/src/weaver/interfaces/seclinktel/entity/po/ResourceOtherInfoPo.java b/src/weaver/interfaces/seclinktel/entity/po/ResourceOtherInfoPo.java index abb58bd..51632ea 100644 --- a/src/weaver/interfaces/seclinktel/entity/po/ResourceOtherInfoPo.java +++ b/src/weaver/interfaces/seclinktel/entity/po/ResourceOtherInfoPo.java @@ -21,11 +21,11 @@ public class ResourceOtherInfoPo { private String birthday; - private String firstDegree; + private Integer firstDegree; private String firstDegreeMajor; - private String highestDegree; + private Integer highestDegree; private String highestDegreeMajor;