From db2b80cddfaeadb77f22a084124a94c44e0f16ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 18 Jun 2025 15:42:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E5=BC=80=EF=BC=8C=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96=E4=B8=8A=E4=B8=AA=E6=9C=88?= =?UTF-8?q?=E7=9A=84=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctCalculateServiceImpl.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 81fae4808..b87e29341 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -193,10 +193,19 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 查询上个薪资所属月核算人员薪资数据 sw.start("查询上个薪资所属月核算人员薪资数据"); List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); + Map lastMonthResultMap = SalaryEntityUtil.convert2Map(lastMonthResultPOS, e -> e.getEmployeeId() + "_" + e.getTaxAgentId() + "_" + e.getSalaryItemId(), SalaryAcctResultPO::getResultValue); + //查询上个月标记数据,赋值到本月锁定并标记 +// SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder() +// .salaryMonths(Sets.newHashSet(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1))) +// .salarySobIds(Collections.singleton(salaryAcctCalculateBO.getSalarySobPO().getId())) +// .employeeIds(employeeIds).build(); +// List lastMonthEmployeePOS = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); +// Map> lastMonthEmpMarkItemsMap = SalaryEntityUtil.convert2Map(lastMonthEmployeePOS, e -> e.getEmployeeId() + "_" + e.getTaxAgentId(), SalaryAcctEmployeePO::getMarkItems); + sw.stop(); // 10、转换成公式编辑器中的变量 sw.start("转换成公式编辑器中的变量"); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList, lastMonthResultPOS); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); sw.stop(); sw.start("数据结构准备"); @@ -217,6 +226,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { Long salaryAcctEmployeePOId = salaryAcctEmployeePO.getId(); List lockItems = salaryAcctEmployeePO.getLockItems(); + List markItems = salaryAcctEmployeePO.getMarkItems(); //1 获取当前薪资核算人员的公式中的变量的值 List formulaVarValues = formulaVarMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); //2 人员信息 @@ -280,6 +290,11 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 处理小数点 resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap, salaryItemIdKeySalarySobItemPOMap); + //如果标记了,取上个月标记的值 + if (markItems != null && markItems.contains(salaryItemId)) { + resultValue = lastMonthResultMap.getOrDefault(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId() + "_" + salaryItemId, StringUtils.EMPTY); + } + //是否锁定 if (lockItems != null && lockItems.contains(salaryItemId)) { resultValue = empItemValueMap.getOrDefault(salaryAcctEmployeePOId + "_" + salaryItemId, StringUtils.EMPTY);