From f5b7b162adc491b68670befdd20a2820fec037f2 Mon Sep 17 00:00:00 2001 From: Administrator <704728292@qq.com> Date: Tue, 10 Jun 2025 14:00:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E7=82=B9=E8=8A=B1=E5=90=8D=E5=86=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmployeeRelationServiceImpl.java | 77 +++++++++++++------ 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeRelationServiceImpl.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeRelationServiceImpl.java index c521920..730e08f 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeRelationServiceImpl.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/EmployeeRelationServiceImpl.java @@ -848,15 +848,10 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { /** * 查询离职记录表是否为空 */ - boolean b = checkIsNotEmpty(ebTableName, stratDate, endDate); - if(b){ + //boolean b = checkIsNotEmpty(ebTableName, stratDate, endDate); //不存在 List> employeeInformation = queryEmployeeInformationInfo(employee_informationName, stratDate, endDate,subCompany,department); log.error("getRosterInfoByDateRange.employeeInformation:{}", employeeInformation); - if(employeeInformation.size()>0){ - resultList.addAll(employeeInformation); - } - }else { //存在 //先按日期关联查询出员工信息 List> resignationInfo = queryResignationInfo(employee_informationName, ebTableName, stratDate, endDate,subCompany,department); @@ -873,10 +868,25 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { .map(Optional::get) .collect(Collectors.toList()); log.error("getRosterInfoByDateRange.resignationInfoNew:{}", resignationInfoNew); + if(employeeInformation.size()>0){ if(resignationInfoNew.size()>0){ - resultList.addAll(resignationInfoNew); + /** + * 先处理一下退休记录 + */ + // 1. 收集 listB 中的所有 ID + Set idsInB = resignationInfoNew.stream() + .map(map -> map.get("id")) // 假设 ID 的键是 "id" + .collect(Collectors.toSet()); + log.error("getRosterInfoByDateRange.idsInB:{}", idsInB); + // 2. 从 listA 中移除所有 ID 存在于 listB 中的元素 + employeeInformation.removeIf(map -> idsInB.contains(map.get("id"))); + // 3. 将 listB 中的所有元素添加到 listA 中 + employeeInformation.addAll(resignationInfoNew); + log.error("getRosterInfoByDateRange.employeeInformation:{}", employeeInformation); } + resultList.addAll(employeeInformation); } + //} /** * 多租户查询主表名称 */ @@ -886,15 +896,10 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { /** * 查询退休记录表是否为空 */ - boolean b1 = checkIsNotEmpty(ebTableTxName, stratDate, endDate); - if(b1){ + //boolean b1 = checkIsNotEmpty(ebTableTxName, stratDate, endDate); //不存在 List> employeeInformationTx = queryEmployeeInformationInfo(employee_informationName, stratDate, endDate,subCompany,department); log.error("getRosterInfoByDateRange.employeeInformationTx:{}", employeeInformationTx); - if(employeeInformationTx.size()>0){ - resultList.addAll(employeeInformationTx); - } - }else { //存在 //先按日期关联查询出员工信息 List> retirementInfo = queryResignationInfo(employee_informationName, ebTableTxName, stratDate, endDate,subCompany,department); @@ -910,11 +915,24 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { .map(Optional::get) .collect(Collectors.toList()); log.error("getRosterInfoByDateRange.retirementInfoNew:{}", retirementInfoNew); + if(employeeInformationTx.size()>0){ if(retirementInfoNew.size()>0){ - resultList.addAll(retirementInfoNew); + /** + * 先处理一下退休记录 + */ + // 1. 收集 listB 中的所有 ID + Set idsInB = retirementInfoNew.stream() + .map(map -> map.get("id")) // 假设 ID 的键是 "id" + .collect(Collectors.toSet()); + log.error("getRosterInfoByDateRange2222.idsInB:{}", idsInB); + // 2. 从 listA 中移除所有 ID 存在于 listB 中的元素 + employeeInformationTx.removeIf(map -> idsInB.contains(map.get("id"))); + // 3. 将 listB 中的所有元素添加到 listA 中 + employeeInformationTx.addAll(retirementInfoNew); + log.error("getRosterInfoByDateRange2222.employeeInformationTx:{}", employeeInformationTx); } + resultList.addAll(employeeInformationTx); } - /** * 多租户查询主表名称 */ @@ -924,15 +942,10 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { /** * 查询调动记录表是否为空 */ - boolean b2 = checkIsNotEmptyForDd(ebTableDdName, endDate); - if(b2){ + //boolean b2 = checkIsNotEmptyForDd(ebTableDdName, endDate); //不存在 List> employeeInformationDd = queryEmployeeInformationInfo(employee_informationName, stratDate, endDate,subCompany,department); log.error("getRosterInfoByDateRange.employeeInformationDd:{}", employeeInformationDd); - if(employeeInformationDd.size()>0){ - resultList.addAll(employeeInformationDd); - } - }else { //存在 //先按日期关联查询出员工信息 List> transferInfo = queryTransferInfo(employee_informationName, ebTableDdName, endDate,subCompany,department); @@ -949,10 +962,24 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { .map(Optional::get) .collect(Collectors.toList()); log.error("getRosterInfoByDateRange.transferInfoNew:{}", transferInfoNew); - if(transferInfoNew.size()>0){ - resultList.addAll(transferInfoNew); + if(employeeInformationDd.size()>0){ + if(transferInfoNew.size()>0){ + /** + * 先处理一下调动记录 + */ + // 1. 收集 listB 中的所有 ID + Set idsInB = transferInfoNew.stream() + .map(map -> map.get("id")) // 假设 ID 的键是 "id" + .collect(Collectors.toSet()); + log.error("getRosterInfoByDateRange3333.idsInB:{}", idsInB); + // 2. 从 listA 中移除所有 ID 存在于 listB 中的元素 + employeeInformationDd.removeIf(map -> idsInB.contains(map.get("id"))); + // 3. 将 listB 中的所有元素添加到 listA 中 + employeeInformationDd.addAll(transferInfoNew); + log.error("getRosterInfoByDateRange3333.employeeInformationDd:{}", employeeInformationDd); + } + resultList.addAll(employeeInformationDd); } - } convertHireDatesRobust(resultList); /** * 相关id转化为名称 @@ -995,7 +1022,7 @@ public class EmployeeRelationServiceImpl implements EmployeeRelationService { " b.yglxmc,c.name subcompanyName,d.name departmentName,e.name positionName,f.username superiorName from " + tableName+ "" + " a left join uf_jcl_yglx b on a.yglx = b.id left join eteams.department c on a.subcompany = c.id " + " left join eteams.department d on a.department = d.id left join eteams.position e on a.position = e.id " + - " left join eteams.employee f on a.id = f.id where a.zhgzr is null and a.hiredate <= '" + endDate + "' and a.delete_type = 0 " ; + " left join eteams.employee f on a.superior = f.id where a.zhgzr is null and a.hiredate <= '" + endDate + "' and a.delete_type = 0 " ; String str = " union all select a.id,a.username,a.hiredate,a.mobile,a.email,a.job_num,a.yglx,a.subcompany,a.department,a.position,a.superior," + " b.yglxmc,c.name subcompanyName,d.name departmentName,e.name positionName,f.username superiorName from " + tableName+ "" +