From e35d5a6c71c8cf01321535a196eb4b353a7dd387 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 26 Jun 2024 09:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=81=E6=B3=A2=E7=B2=BE=E5=8D=8E=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctResultServiceImpl.java | 58 ++++++++++++++++--- .../salary/web/SalaryAcctController.java | 4 +- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index a9cb8a1cc..9ea97192a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1317,6 +1317,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 根据部门分类汇总 Map>> resultGroup = SalaryEntityUtil.group2Map(resultMap, map -> Objects.isNull(map.getOrDefault("departmentId", "")) ? "" : map.getOrDefault("departmentId", "").toString()); + LinkedHashMap>> sortedGroupBy = new LinkedHashMap<>(); + resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + resultGroup = sortedGroupBy; + Map> sumResultByGroup = getSumResultByGroup(resultGroup, Collections.emptyList(), salaryItemList); Map depMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAllDeptInfo(), DeptInfo::getId, DeptInfo::getName); @@ -1444,14 +1448,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe if (param.isYasjbfgzhzReport()) { // 月按实际部分工资汇总表 根据部门分类汇总 resultGroup = SalaryEntityUtil.group2Map(resultMap, map -> - Objects.isNull(map.getOrDefault("departmentId", " ")) ? " " : map.getOrDefault("departmentId", " ").toString() + Objects.isNull(map.getOrDefault("departmentId", "0")) ? "0" : map.getOrDefault("departmentId", "0").toString() ); + LinkedHashMap>> sortedGroupBy = new LinkedHashMap<>(); + resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + resultGroup = sortedGroupBy; } else { // 月发放工资分摊表 根据记账科目-记账部门分类汇总 resultGroup = SalaryEntityUtil.group2Map(resultMap, map -> (Objects.isNull(map.getOrDefault(jzkmItemId.toString(), " ")) ? " " : map.getOrDefault(jzkmItemId.toString(), " ").toString()) + "-" + (Objects.isNull(map.getOrDefault(jzbmItemId.toString(), " ")) ? " " : map.getOrDefault(jzbmItemId.toString(), " ").toString()) ); + LinkedHashMap>> sortedGroupBy = new LinkedHashMap<>(); + resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + resultGroup = sortedGroupBy; } List numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList()); @@ -1471,6 +1481,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 获取部门信息 Map depMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAllDeptInfo(), dep -> dep.getId().toString(), DeptInfo::getName); Map> sumResultByGroup = getSumResultByGroup(resultGroupPage, Collections.emptyList(), numberItems); + + // 排序 + if (param.isYasjbfgzhzReport()) { + LinkedHashMap> sortedGroupBy = new LinkedHashMap<>(); + sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + sumResultByGroup = sortedGroupBy; + } else { + LinkedHashMap> sortedGroupBy = new LinkedHashMap<>(); + sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + sumResultByGroup = sortedGroupBy; + } + + sumResultByGroup.forEach((key,value) -> { if (param.isYasjbfgzhzReport()) { value.put("departmentName", depMap.getOrDefault(key, "")); @@ -1712,7 +1735,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(lastMonthSalaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()), Collections.singletonList(zwcjItemId)); List lastMonthSalaryAcctEmpIds = resultPOList.stream().filter(result -> result.getResultValue().equals(param.getZwcj())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); List finalLastMonthSalaryAcctEmpIds = lastMonthSalaryAcctEmpIds; - lastMonthSalaryAcctEmployeeList = lastMonthSalaryAcctEmployeeList.stream().filter(acctEmp -> finalLastMonthSalaryAcctEmpIds.contains(acctEmp.getId())).collect(Collectors.toList()); + lastMonthSalaryAcctEmployeeList = lastMonthSalaryAcctEmployeeList.stream().filter(acctEmp -> finalLastMonthSalaryAcctEmpIds.contains(acctEmp.getId())).sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList()); // 分页 PageInfo lastMonthSalaryAcctEmployeePOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), lastMonthSalaryAcctEmployeeList); @@ -1735,9 +1758,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Map>> resultGroup = SalaryEntityUtil.group2Map(resultMap, map -> Objects.isNull(map.getOrDefault("employeeId", " ")) ? "" : map.getOrDefault("employeeId", " ").toString() ); + + List numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList()); sumResultByGroup = getSumResultByGroup(resultGroup, Collections.emptyList(), numberItems); - + LinkedHashMap> sortedGroupBy = new LinkedHashMap<>(); + sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + sumResultByGroup = sortedGroupBy; // 获取这些员工上一年的薪资核算数据 LocalDateRange lastYearDateRange = LocalDateRange.builder().fromDate(SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(dateRange.getFromDate()).minusYears(1))) @@ -2176,6 +2203,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList()); // 查询薪资核算人员 List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds); + salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList()); // 分页 PageInfo salaryAcctEmployeePOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), salaryAcctEmployeePOList); if (param.isExport() || param.isSum()) { @@ -2268,8 +2296,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Long zffs1ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs1_item_id"); salaryItemIds.add(zffs1ItemId); // 支付方式-2 - Long zffs2ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs2_item_id"); - salaryItemIds.add(zffs2ItemId); + // Long zffs2ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs2_item_id"); + // salaryItemIds.add(zffs2ItemId); // 查询薪资核算结果 @@ -2284,6 +2312,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Objects.isNull(map.getOrDefault("id", " ")) ? "" : map.getOrDefault("id", " ").toString() ); + LinkedHashMap> sortedGroupBy = new LinkedHashMap<>(); + resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue())); + resultGroup = sortedGroupBy; + List salaryItemList = getSalaryItemService(user).listByIds(salaryItemIds); List numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList()); List numberItemStrList = numberItems.stream().map(item -> item.getId().toString()).collect(Collectors.toList()); @@ -2291,12 +2323,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 获取人员信息 Map empMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listByIds(salaryEmpIds), DataCollectionEmployee::getEmployeeId); + List zffsResult = resultList.stream().filter(item -> salaryAcctEmpIds.contains(item.getSalaryAcctEmpId()) && item.getSalaryItemId().equals(zffs1ItemId)).collect(Collectors.toList()); + Map zffsResultTimeMap = SalaryEntityUtil.convert2Map(zffsResult, po -> po.getSalaryAcctEmpId().toString(), SalaryAcctResultPO::getCreateTime); + // 获取薪资核算人员 resultGroup.forEach((key,value) -> { DataCollectionEmployee employee = empMap.getOrDefault(Long.valueOf(value.getOrDefault("employeeId", "0").toString()), DataCollectionEmployee.builder().build()); value.put("rzsj", employee.getCompanystartdate()); // 支付方式 - String zffs = ((value.get(zffs1ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs1ItemId.toString()).toString())) ? " " : value.get(zffs1ItemId.toString()).toString()) + - ((value.get(zffs2ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs2ItemId.toString()).toString())) ? " " : value.get(zffs2ItemId.toString()).toString()); + String zffs2= "本月已发"; + Date date = zffsResultTimeMap.get(key); + if (date != null && SalaryDateUtil.getFormatYearMonth(date).equals(param.getStartDate())) { + SalaryDateUtil.getFormatYearMonth(date).equals(param.getStartDate()); + zffs2 = "上月已发"; + } + String zffs = ((value.get(zffs1ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs1ItemId.toString()).toString())) ? " " : value.get(zffs1ItemId.toString()).toString()) + zffs2; value.put("zffs", zffs); }); @@ -2376,7 +2416,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } }); for (WeaTableColumn column : sumColumn) { - if (!numberItemStrList.contains(column.getColumn())) { + if (column.getColumn().equals("userName") && param.isExport()) { + sumRow.put(column.getColumn(), "总计"); + } else if (!numberItemStrList.contains(column.getColumn())) { } else { BigDecimal sumValue = list.stream().map(map -> map.get(column.getColumn()) == null ? "" : map.get(column.getColumn()).toString()) diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 80b7d80ca..48f30de4c 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -1223,7 +1223,7 @@ public class SalaryAcctController { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getSalaryAcctResultWrapper(user).exportSjjtReport(param); String time = LocalDate.now().toString(); - String fileName = "年度奖金报批" + time; + String fileName = "工资发放表" + ( param.isDyhzReport() ? "(当月汇总)" : "(当月实际计提)" ) + time; try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); } catch (UnsupportedEncodingException e) { @@ -1236,7 +1236,7 @@ public class SalaryAcctController { response.setContentType("application/octet-stream"); return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { - log.error("年度奖金报批", e); + log.error("工资发放表", e); throw e; } }