From 6b8be6a43055663f1bd6429ba50ccbafceb59f15 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Thu, 24 Oct 2024 18:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=9A=E6=89=8D=E6=9E=97=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jclproduct/utils/EmploymentUtil.java | 25 ++++++- .../jclproduct/EmploymentRecordCrob.java | 69 ++++++++++++++----- 2 files changed, 74 insertions(+), 20 deletions(-) diff --git a/src/com/engine/jclproduct/utils/EmploymentUtil.java b/src/com/engine/jclproduct/utils/EmploymentUtil.java index a36d28c..789a85c 100644 --- a/src/com/engine/jclproduct/utils/EmploymentUtil.java +++ b/src/com/engine/jclproduct/utils/EmploymentUtil.java @@ -7,6 +7,7 @@ import weaver.common.DateUtil; import weaver.conn.RecordSet; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -80,7 +81,7 @@ public class EmploymentUtil { .workcode(Util.null2String(rs.getString("workcode"))) .status(Util.getIntValue(rs.getString("status"))) .companyStartDate(Util.null2String(rs.getString("companystartdate"))) - .companyWorkyear(Util.null2String(rs.getString("companyworkyear"))) + .companyWorkyear("".equals(Util.null2String(rs.getString("companyworkyear"))) ? "0.00" : Util.null2String(rs.getString("companyworkyear"))) .sex(Util.getIntValue(rs.getString("sex"))) .birthday(Util.null2String(rs.getString("birthday"))) .jobTitle(Util.getIntValue(rs.getString("jobtitle"))) @@ -117,7 +118,29 @@ public class EmploymentUtil { break; } + } + + /** + * 日期字符串 与当前日期比较 + * @param dateStr1 + * @return + */ + public static boolean compareDate(String dateStr1){ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + boolean result = false; + try { + LocalDate inputDate = LocalDate.parse(dateStr1, formatter); + + LocalDate today = LocalDate.now(); + // 判断当前日期是否大于传入的日期 + if (today.isAfter(inputDate)) { + result = true; + } + } catch (Exception e) { + e.printStackTrace(); + } + return result; } diff --git a/src/weaver/interfaces/jclproduct/EmploymentRecordCrob.java b/src/weaver/interfaces/jclproduct/EmploymentRecordCrob.java index 5557446..71d3b30 100644 --- a/src/weaver/interfaces/jclproduct/EmploymentRecordCrob.java +++ b/src/weaver/interfaces/jclproduct/EmploymentRecordCrob.java @@ -1,6 +1,7 @@ package weaver.interfaces.jclproduct; +import cn.hutool.core.collection.CollectionUtil; import com.engine.jclproduct.entity.bo.EmploymentRecordBo; import com.engine.jclproduct.entity.po.DataDutyPo; import com.engine.jclproduct.entity.po.EmploymentRecordPo; @@ -14,9 +15,9 @@ import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.interfaces.schedule.BaseCronJob; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; /** * @Author liang.cheng @@ -56,9 +57,16 @@ public class EmploymentRecordCrob extends BaseCronJob { //1.入转调离 人员数据变化处理 DataDutyPo dataDutyPo = dutyDatasChange(hrmresource); - hrmresourceUpdate.add(dataDutyPo.getHrmresourceUpdate()); - hrmresourceInsert.add(dataDutyPo.getHrmresourceInsert()); - employmentRecordInsert.addAll(dataDutyPo.getEmploymentRecordInsert()); + if (dataDutyPo.getHrmresourceUpdate() != null) { + hrmresourceUpdate.add(dataDutyPo.getHrmresourceUpdate()); + } + if (dataDutyPo.getHrmresourceInsert() != null) { + hrmresourceInsert.add(dataDutyPo.getHrmresourceInsert()); + } + + if (CollectionUtil.isNotEmpty(dataDutyPo.getEmploymentRecordInsert())) { + employmentRecordInsert.addAll(dataDutyPo.getEmploymentRecordInsert()); + } }); @@ -67,20 +75,38 @@ public class EmploymentRecordCrob extends BaseCronJob { bb.writeLog("employmentRecordInsert:"+employmentRecordInsert.size()); //3.人员信息中间表 //更新 - hrmresourceUpdate.forEach(e -> { - - }); + hrmresourceUpdate.forEach(e -> rs.executeUpdate("update uf_hrmresource_day set status=?,companystartdate=?,companyworkyear=?," + + " sex=?,birthday=?,jobtitle=?,departmentid=?,subcompanyid=?,managerid=? where userid=?",e.getStatus(),e.getCompanyStartDate(), + e.getCompanyWorkyear(),e.getSex(),e.getBirthday(),e.getJobTitle(),e.getDepartmentId(),e.getSubcompanyId(),e.getManagerId(),e.getUserId())); //插入 - hrmresourceInsert.forEach(e->{ - - }); + hrmresourceInsert.forEach(e-> rs.executeUpdate("insert into uf_hrmresource_day(userId,workcode,companystartdate,companyworkyear," + + " birthday,jobtitle,departmentid,subcompanyid,managerid,status,sex) values(?,?,?,?,?,?,?,?,?,?,?)",e.getUserId(),e.getWorkcode(), + e.getCompanyStartDate(),e.getCompanyWorkyear(),e.getBirthday(),e.getJobTitle(),e.getDepartmentId(),e.getSubcompanyId(),e.getManagerId(),e.getStatus(),e.getSex())); //4.人员任职记录表 employmentRecordInsert.forEach(e->{ //1.更新上一条数据stopDate + List list = new ArrayList<>(); + rs.executeQuery("select id,startDate from uf_EmploymentRecord where userid = ?",e.getUserId()); + while (rs.next()) { + list.add(EmploymentRecordPo.builder().id(Util.getIntValue(rs.getString("id"))).startDate(Util.null2String(rs.getString("startDate"))).build()); + } + + if (CollectionUtil.isNotEmpty(list)) { + String date = DateUtil.getCurrentDate(); + EmploymentRecordPo latest = list.stream() + .max(Comparator.comparing(record -> LocalDate.parse(record.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")))) + .orElse(null); + assert latest != null; + if (EmploymentUtil.compareDate(latest.getStartDate())) { + date = DateUtil.getYesterday(); + } + + rs.executeUpdate("update uf_EmploymentRecord set stopDate = ? where id = ?",date,latest.getId()); + } //2.新增数据 @@ -147,16 +173,21 @@ public class EmploymentRecordCrob extends BaseCronJob { employmentRecord.setChangeNewSuperior(hrmresource.getManagerId()); //调动 - employmentRecord.setChangType(3); - + employmentRecord.setChangType(2); employmentRecords.add(employmentRecord); } - //3.1 数据不一致,人员中间表更新 - hrmresource.setId(lastResource.getId()); - dataDutyPo.setHrmresourceUpdate(hrmresource); - //3.2 数据不一致,任职记录表新增 - dataDutyPo.setEmploymentRecordInsert(employmentRecords); + + if (!hrmresource.getStatus().equals(lastResource.getStatus()) + || !hrmresource.getDepartmentId().equals(lastResource.getDepartmentId()) + || !hrmresource.getJobTitle().equals(lastResource.getJobTitle()) + || !hrmresource.getManagerId().equals(lastResource.getManagerId())) { + //3.1 数据不一致,人员中间表更新 + hrmresource.setId(lastResource.getId()); + dataDutyPo.setHrmresourceUpdate(hrmresource); + //3.2 数据不一致,任职记录表新增 + dataDutyPo.setEmploymentRecordInsert(employmentRecords); + } }else { //4.数据不存在作新增