diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 5dea8c4b7..625c2f3c3 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -35,6 +35,7 @@ import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.sys.SalarySysConfMapper; @@ -1708,15 +1709,19 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc String gwFieldId = baseBean.getPropValue("shgwSalary", "gw_field_id"); if (param.getTxcj() == 0) { // 第一层级,带出所有的被调薪人 - rs.execute("select bdxr,gskjywr from uf_pltxjzgljmb "); + rs.execute("select bdxr from uf_pltxjzgljmb "); List allEmps = new ArrayList<>(); // 查询所有义务人信息 List taxAgentPOS = getTaxAgentService(user).listAll(); Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getName, TaxAgentPO::getId); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId, TaxAgentPO::getName); + List empIds = new ArrayList<>(); while (rs.next()) { - Long taxAgentId = taxAgentMap.getOrDefault(StringUtils.isBlank(rs.getString("gskjywr")) ? "" : rs.getString("gskjywr"), -1L); - allEmps.add(SalaryAcctEmployeePO.builder().employeeId(Long.valueOf(rs.getInt("bdxr"))).taxAgentId(taxAgentId).build()); + // Long taxAgentId = taxAgentMap.getOrDefault(StringUtils.isBlank(rs.getString("gskjywr")) ? "" : rs.getString("gskjywr"), -1L); + if (!empIds.contains(Long.valueOf(rs.getInt("bdxr")))) { + allEmps.add(SalaryAcctEmployeePO.builder().employeeId(Long.valueOf(rs.getInt("bdxr"))).build()); + empIds.add(Long.valueOf(rs.getInt("bdxr"))); + } } // 查询这些人的基本工资 Long salaryItemId = Long.valueOf(bb.getPropValue("shgwSalary", "pltxSalaryItemId").trim()); @@ -1727,9 +1732,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException("薪资项目不存在"); } // 查询这些人的薪资档案 - List empIds = allEmps.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); - List taxAgentEmpList = allEmps.stream().map(emp -> emp.getTaxAgentId() + "-" + emp.getEmployeeId()).collect(Collectors.toList()); + // List empIds = allEmps.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); + // List taxAgentEmpList = allEmps.stream().map(emp -> emp.getTaxAgentId() + "-" + emp.getEmployeeId()).collect(Collectors.toList()); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().employeeIds(empIds).build()); + // 过滤停薪的 + salaryArchivePOS = salaryArchivePOS.stream().filter(archivePO -> archivePO.getRunStatus() != SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue() && archivePO.getRunStatus() != SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()).collect(Collectors.toList()); List employeeList = getSalaryEmployeeService(user).listByIds(empIds); // 查询这些人的去年绩效分数 int lastYear = new Integer(param.getSxrq()) - 1; @@ -1761,8 +1768,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc }); Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); - // 过滤薪资档案 - salaryArchivePOS = salaryArchivePOS.stream().filter(po -> taxAgentEmpList.contains(po.getTaxAgentId()+"-"+po.getEmployeeId())).collect(Collectors.toList()); + // 过滤薪资档案 250206逻辑变更:不再过滤个税扣缴义务人了,展示所有义务人下的数据 + // salaryArchivePOS = salaryArchivePOS.stream().filter(po -> taxAgentEmpList.contains(po.getTaxAgentId()+"-"+po.getEmployeeId())).collect(Collectors.toList()); + Map> archiveGroupByEmp = SalaryEntityUtil.group2Map(salaryArchivePOS, SalaryArchivePO::getEmployeeId); // key:义务人id-人员id value:薪资档案id Map salaryArchiveMap = SalaryEntityUtil.convert2Map(salaryArchivePOS, s -> s.getTaxAgentId() + "-" + s.getEmployeeId(), SalaryArchivePO::getId); List salaryItemList = new ArrayList<>(); @@ -1773,37 +1781,41 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc Map salaryArchiveItemMap = SalaryEntityUtil.convert2Map(salaryArchiveItemList, po -> po.getSalaryArchiveId()+"_"+po.getSalaryItemId()); allEmps.stream().forEach(emp -> { DataCollectionEmployee e = employeeMap.getOrDefault(emp.getEmployeeId(), DataCollectionEmployee.builder().build()); - // 获取他的薪资档案id - Long archiveId = salaryArchiveMap.get(emp.getTaxAgentId() + "-" + emp.getEmployeeId()); - pltxEmployeeDTO dto = pltxEmployeeDTO.builder().employee(emp.getEmployeeId()) - .employeeName(e.getUsername()) - .bmId(e.getDepartmentId()) - .bmName(e.getDepartmentName()) - .jobTitleId(gwEmpGwIdMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), 0L)) - .jobTitleName(gwEmpGwMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), "")) - .gskjywr(taxAgentNameMap.get(emp.getTaxAgentId())).build(); - Double lastYearJxValue = lastYearJxMap.get(emp.getEmployeeId()) == null ? new Double(0) : lastYearJxMap.get(emp.getEmployeeId()); - dto.setQnjxfs(lastYearJxValue); - if (archiveId != null) { - SalaryArchiveItemPO salaryArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + salaryItemId); - if (salaryArchiveItemPO != null) { - Double jbgz = Double.valueOf(StringUtils.isBlank(salaryArchiveItemPO.getItemValue()) ? "0" : salaryArchiveItemPO.getItemValue()); - Double gwgz = new Double(0); - SalaryArchiveItemPO gwgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + gwgzItemId); - if (gwgzArchiveItemPO != null) { - gwgz = Double.valueOf(StringUtils.isBlank(gwgzArchiveItemPO.getItemValue()) ? "0" : gwgzArchiveItemPO.getItemValue()); - } - Double jxgz = new Double(0); - SalaryArchiveItemPO jxgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + jxgzId); - if (jxgzArchiveItemPO != null) { - jxgz = Double.valueOf(StringUtils.isBlank(jxgzArchiveItemPO.getItemValue()) ? "0" : jxgzArchiveItemPO.getItemValue()); - } - dto.setJbgz(jbgz); + // 获取该人员有几条档案 + List salaryArchivePOList = archiveGroupByEmp.get(emp.getEmployeeId()); + for (SalaryArchivePO salaryArchivePO : salaryArchivePOList) { + // 获取他的薪资档案id + Long archiveId = salaryArchiveMap.get(salaryArchivePO.getTaxAgentId() + "-" + emp.getEmployeeId()); + pltxEmployeeDTO dto = pltxEmployeeDTO.builder().employee(emp.getEmployeeId()) + .employeeName(e.getUsername()) + .bmId(e.getDepartmentId()) + .bmName(e.getDepartmentName()) + .jobTitleId(gwEmpGwIdMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), 0L)) + .jobTitleName(gwEmpGwMap.getOrDefault(weaver.general.Util.null2String(emp.getEmployeeId()), "")) + .gskjywr(taxAgentNameMap.get(salaryArchivePO.getTaxAgentId())).build(); + Double lastYearJxValue = lastYearJxMap.get(emp.getEmployeeId()) == null ? new Double(0) : lastYearJxMap.get(emp.getEmployeeId()); + dto.setQnjxfs(lastYearJxValue); + if (archiveId != null) { + SalaryArchiveItemPO salaryArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + salaryItemId); + if (salaryArchiveItemPO != null) { + Double jbgz = Double.valueOf(StringUtils.isBlank(salaryArchiveItemPO.getItemValue()) ? "0" : salaryArchiveItemPO.getItemValue()); + Double gwgz = new Double(0); + SalaryArchiveItemPO gwgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + gwgzItemId); + if (gwgzArchiveItemPO != null) { + gwgz = Double.valueOf(StringUtils.isBlank(gwgzArchiveItemPO.getItemValue()) ? "0" : gwgzArchiveItemPO.getItemValue()); + } + Double jxgz = new Double(0); + SalaryArchiveItemPO jxgzArchiveItemPO = salaryArchiveItemMap.get(archiveId + "_" + jxgzId); + if (jxgzArchiveItemPO != null) { + jxgz = Double.valueOf(StringUtils.isBlank(jxgzArchiveItemPO.getItemValue()) ? "0" : jxgzArchiveItemPO.getItemValue()); + } + dto.setJbgz(jbgz); - dto.setHjgz(jbgz+gwgz+jxgz); + dto.setHjgz(jbgz+gwgz+jxgz); + } } + result.add(dto); } - result.add(dto); }); } else { // 是二、三、四、五、六层级,获取中间建模的值直接拉过来 @@ -1904,12 +1916,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc baseBean.writeLog("批量调薪过滤查看, 查看人:" + param.getSpr() + ",查看时间:" + SalaryDateUtil.getFormatLocalDate(new Date()) + ",层级:" + param.getTxcj()); if (param.getTxcj() == 0) { // 一级 - rs.execute(" SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr()); - baseBean.writeLog("exc sql => SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr()); + rs.execute(" SELECT bdxr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr()); + baseBean.writeLog("exc sql => SELECT bdxr FROM uf_pltxjzgljmb where dxyjspr= " + param.getSpr()); while (rs.next()) { int bdxr = rs.getInt("bdxr"); - String gskjywr = rs.getString("gskjywr"); - canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).gskjywr(gskjywr).build()); + // String gskjywr = rs.getString("gskjywr"); + canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).build()); } } else { buildCanManageList(param, fieldList, canManageList); @@ -1922,8 +1934,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc BaseBean baseBean = new BaseBean(); Integer txcj = param.getTxcj(); RecordSet rs = new RecordSet(); - rs.execute("SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr()); - baseBean.writeLog("exc sql => SELECT bdxr,gskjywr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr()); + rs.execute("SELECT bdxr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr()); + baseBean.writeLog("exc sql => SELECT bdxr FROM uf_pltxjzgljmb where " + fieldList.get(txcj) + "=" + param.getSpr()); // List sprList = new ArrayList<>(); // for (int i = txcj; i > 0 ; i--) { @@ -1958,8 +1970,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc while (rs.next()) { int bdxr = rs.getInt("bdxr"); - String gskjywr = rs.getString("gskjywr"); - canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).gskjywr(gskjywr).build()); + // String gskjywr = rs.getString("gskjywr"); + canManageList.add(pltxEmployeeDTO.builder().employee(Long.valueOf(bdxr)).build()); } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index e53ff04ad..3c973715e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1877,14 +1877,17 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List gwPltxDt1POS = getGwPltxDt1Service(user).listSome(GwPltxDt1PO.builder().mainid(param.getRequestId()).build()); // 获取能够管理的权限 List pltxEmployeeDTOS = getSalaryAcctExcelService(user).pltxFilterData(PltxInitEmployeeParam.builder().txcj(param.getTxcj()).spr(param.getSpr()).build()); - List canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getGskjywr()+"_split"+DTO.getEmployee()).collect(Collectors.toList()); + // List canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getGskjywr()+"_split"+DTO.getEmployee()).collect(Collectors.toList()); + // 20250206逻辑变更 不再根据义务人过滤 + List canManageEmps = pltxEmployeeDTOS.stream().map(DTO -> DTO.getEmployee().toString()).collect(Collectors.toList()); if (!isCreator && CollectionUtils.isEmpty(canManageEmps)) { // 不是创建人也没有管理权限 return Collections.emptyList(); } if (!isCreator) { // 不是创建人,要分权 - gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getGskjywr()+"_split"+po.getXm().toString())).collect(Collectors.toList()); + // gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getGskjywr()+"_split"+po.getXm().toString())).collect(Collectors.toList()); + gwPltxDt1POS = gwPltxDt1POS.stream().filter(po -> canManageEmps.contains(po.getXm().toString())).collect(Collectors.toList()); } Map empMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG), DataCollectionEmployee::getEmployeeId);