核算闭环提醒

This commit is contained in:
钱涛 2024-03-07 09:43:22 +08:00
parent a52788aa1b
commit 427ce223e7
1 changed files with 17 additions and 1 deletions

View File

@ -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<SalaryCalcItemGraphNode> nodes;
private Map<Long, String> 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<Long> 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;
}