From 365e88c76e30fd6622fde2eb475b6cd87479756a Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 24 Jul 2025 10:37:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=BB=B4=E5=85=89=E7=94=B5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=B7=A8=E4=B9=89=E5=8A=A1=E4=BA=BA=E5=8F=96=E7=A4=BE?= =?UTF-8?q?=E4=BF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/CalculateFormulaVarBO.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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()) {