From ef7384281e43f3aeea9fdc7be361bd680d34d42e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 8 Jan 2024 18:10:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=95=E8=A5=BF=E4=B8=87=E4=BC=97=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E9=A1=B9=E7=9B=AE=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index b698d823f..cefdd5bfc 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1404,16 +1404,41 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除"); } List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); - Map sobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId, SalarySobItemPO::getShowInWorkflow); - List salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId, Collectors.toList()); - List itemPOList = getSalaryItemService(user).listByIds(salaryItemIds); + List sortedSalarySobItemPOS = new ArrayList<>(); + Map> sobItemByGroup = SalaryEntityUtil.group2Map(salarySobItemPOS, SalarySobItemPO::getSalarySobItemGroupId); + // 给薪资项目排序 + for (Map.Entry> entry : sobItemByGroup.entrySet()) { + if (CollectionUtils.isNotEmpty(entry.getValue())) { + entry.setValue(entry.getValue().stream().sorted(Comparator.comparingInt(SalarySobItemPO::getSortedIndex)).collect(Collectors.toList())); + } + } + // 给分组排序 + List salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List sortedGroupIds = salarySobItemGroupPOS.stream().sorted(Comparator.comparingInt(SalarySobItemGroupPO::getSortedIndex)).map(SalarySobItemGroupPO::getId).collect(Collectors.toList()); + sortedGroupIds.stream().forEach(groupId -> { + List groupSobItemPOS = sobItemByGroup.get(groupId); + if (CollectionUtils.isNotEmpty(groupSobItemPOS)) { + sortedSalarySobItemPOS.addAll(groupSobItemPOS); + } + }); + List salarySobItemPOSNoGroup = sobItemByGroup.get(0L); + if (CollectionUtils.isNotEmpty(salarySobItemPOSNoGroup)) { + sortedSalarySobItemPOS.addAll(salarySobItemPOSNoGroup); + } + Map sobItemPOMap = SalaryEntityUtil.convert2Map(sortedSalarySobItemPOS, SalarySobItemPO::getSalaryItemId, SalarySobItemPO::getShowInWorkflow); + List salaryItemIds = SalaryEntityUtil.properties(sortedSalarySobItemPOS, SalarySobItemPO::getSalaryItemId, Collectors.toList()); + Map itemPOMap = SalaryEntityUtil.convert2Map(getSalaryItemService(user).listByIds(salaryItemIds), SalaryItemPO::getId); List> result = new ArrayList<>(); - itemPOList.stream().forEach( po -> { - Map map = new HashMap<>(); - map.put("id", po.getId()); - map.put("name", po.getName()); - map.put("default",sobItemPOMap.get(po.getId()) == null ? 0 : sobItemPOMap.get(po.getId())); - result.add(map); + sortedSalarySobItemPOS.stream().forEach( sobItemPO -> { + SalaryItemPO po = itemPOMap.get(sobItemPO.getSalaryItemId()); + if (po != null) { + Map map = new HashMap<>(); + map.put("id", po.getId()); + map.put("name", po.getName()); + map.put("default",sobItemPOMap.get(po.getId()) == null ? 0 : sobItemPOMap.get(po.getId())); + result.add(map); + } + }); return result;