From 427ce223e72dfc92610b721c822190a28d9cf9d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 7 Mar 2024 09:43:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E9=97=AD=E7=8E=AF=E6=8F=90?= =?UTF-8?q?=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryCalcItemGraph.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java index 52baba1db..ecfad44da 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcItemGraph.java @@ -5,6 +5,7 @@ import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; @@ -13,6 +14,7 @@ import org.apache.commons.lang3.StringUtils; import java.util.*; import java.util.concurrent.LinkedTransferQueue; +import java.util.stream.Collectors; /** * 对薪资核算时涉及的薪资项目进行排序 @@ -25,6 +27,7 @@ import java.util.concurrent.LinkedTransferQueue; public class SalaryCalcItemGraph { private List nodes; + private Map items; /** * 根据薪资账套的薪资项目、公式详情构建实例 @@ -51,7 +54,7 @@ public class SalaryCalcItemGraph { SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemCode); if (salaryItemPO == null) { continue; - }else { + } else { subSalarySobItem = SalarySobItemPO.builder().salaryItemId(salaryItemPO.getId()).salaryItemCode(salaryItemPO.getCode()).build(); } } @@ -63,6 +66,7 @@ public class SalaryCalcItemGraph { } } this.nodes = Lists.newArrayList(nodeMap.values()); + this.items = SalaryEntityUtil.convert2Map(salaryItemPOS, SalaryItemPO::getId, SalaryItemPO::getName); } /** @@ -130,6 +134,18 @@ public class SalaryCalcItemGraph { // 倒序 Collections.reverse(result); + if (!Objects.equals(result.size(), nodes.size())) { + + List resultIds = SalaryEntityUtil.properties(result, SalaryCalcItem::getSalaryItemId, Collectors.toList()); + String errItemName = nodes.stream() + .map(SalaryCalcItemGraphNode::getSalaryCalcItem) + .map(SalaryCalcItem::getSalaryItemId) + .filter(itemId -> !resultIds.contains(itemId)) + .map(itemId -> items.getOrDefault(itemId, "")) + .collect((Collectors.joining(",", "[", "]"))); + + throw new SalaryRunTimeException("薪资项目:" + errItemName + "存在闭环!"); + } // 返回结果列表 return result; }