diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index b681b408e..f6cc8c1b3 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.bo; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.NumberUtil; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.common.LocalDateRange; @@ -503,20 +504,25 @@ public class CalculateFormulaVarBO { private void handleWelfareData(SalaryAcctCalculateBO salaryAcctCalculateBO, Map> resultMap) { // 社保福利可选字段 List fieldNames = Lists.newArrayList(salaryAcctCalculateBO.getWelfareColumns().values()); + Map> fieldNameMap = fieldNames.stream().collect(Collectors.groupingBy(fieldName -> fieldName.split("_")[0])); + // 社保福利数据 Map> tempMap = new HashMap<>(); welfareData.forEach(map -> { // String key = map.getOrDefault("employeeId", StringUtils.EMPTY) + "_" + map.getOrDefault("taxAgentId", StringUtils.EMPTY); String taxAgentId = Utils.null2String(map.getOrDefault("taxAgentId", StringUtils.EMPTY)); - String taxAgentIdKey = taxAgentId + "_"; + // String taxAgentIdKey = taxAgentId + "_"; String key = Utils.null2String(map.getOrDefault("employeeId", StringUtils.EMPTY)); List formulaVarValues = tempMap.computeIfAbsent(key, k -> Lists.newArrayList()); - formulaVarValues.addAll(fieldNames.stream().filter(fieldName -> fieldName.startsWith(taxAgentIdKey)).map(fieldName -> { - String fieldId = SalaryFormulaReferenceEnum.WELFARE.getValue() - + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR - + fieldName; - return new FormulaVarValue().setFieldId(fieldId).setFieldValue(String.valueOf(map.getOrDefault(fieldName, StringUtils.EMPTY))); - }).collect(Collectors.toList())); + List fieldNameList = fieldNameMap.get(taxAgentId); + if (CollectionUtil.isNotEmpty(fieldNameList)) { + formulaVarValues.addAll(fieldNameList.stream().map(fieldName -> { + String fieldId = SalaryFormulaReferenceEnum.WELFARE.getValue() + + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + + fieldName; + return new FormulaVarValue().setFieldId(fieldId).setFieldValue(String.valueOf(map.getOrDefault(fieldName, StringUtils.EMPTY))); + }).collect(Collectors.toList())); + } }); // 填充到返回结果集中 for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) {