diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index 8eba860bb..399e4d0fe 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -49,7 +49,8 @@ public class SalaryAcctCalculateBO { /** * 核算锁定值 */ - private Map salaryAcctLockResultPOS; + private Map salaryAcctLockResultPOS; + private List lockSalaryItemIds; /** diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 377b963dc..cb64b4c02 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -133,7 +133,8 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc Set salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); //核算锁定的值 - Map salaryAcctLockResultPOS = MapUtils.emptyIfNull(salaryAcctCalculateBO.getSalaryAcctLockResultPOS()); + Map salaryAcctLockResultPOS = MapUtils.emptyIfNull(salaryAcctCalculateBO.getSalaryAcctLockResultPOS()); + List lockSalaryItemIds = salaryAcctCalculateBO.getLockSalaryItemIds(); // 9、查询相同税款所属期内涉及合并计税的其他薪资核算结果 Set otherSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getOtherSalaryAcctRecordPOS(), SalaryAcctRecordPO::getId); List otherSalaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); @@ -156,6 +157,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc List salaryAcctResultTempPOS = Lists.newArrayList(); // 开始核算 for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { + Long salaryAcctEmployeePOId = salaryAcctEmployeePO.getId(); //1 获取当前薪资核算人员的公式中的变量的值 List formulaVarValues = formulaVarMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); //2人员信息 @@ -194,8 +196,8 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO); //是否锁定 - if (salaryAcctLockResultPOS.containsKey(salaryItemId) && salaryAcctLockResultPOS.get(salaryItemId) != null) { - resultValue = salaryAcctLockResultPOS.get(salaryItemId).getResultValue(); + if (lockSalaryItemIds.contains(salaryItemId) && salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { + resultValue = salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId).getResultValue(); } // 将已经计算过的薪资项目的值转换成公式变量的值添加到集合中 @@ -207,7 +209,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 转换成薪资核算结果po SalaryAcctResultTempPO salaryAcctResultTempPO = new SalaryAcctResultTempPO() .setSalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId()) - .setSalaryAcctEmpId(salaryAcctEmployeePO.getId()) + .setSalaryAcctEmpId(salaryAcctEmployeePOId) .setEmployeeId(salaryAcctEmployeePO.getEmployeeId()) .setTaxAgentId(salaryAcctEmployeePO.getTaxAgentId()) .setSalarySobId(salaryAcctEmployeePO.getSalarySobId()) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 375c83781..2f5e7e428 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -548,14 +548,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe //核算锁定值 List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); - Map acctResults = new HashMap<>(); + Map acctResults = new HashMap<>(); if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { List acctResultPOS = listBySalaryAcctRecordIds(Collections.singleton(calculateParam.getSalaryAcctRecordId())); acctResults = Optional.ofNullable(acctResultPOS) .orElse(new ArrayList<>()) .stream() .filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())) - .collect(Collectors.toMap(SalaryAcctResultPO::getSalaryItemId, a -> a, (a, b) -> a)); + .collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); } // 8、查询公式详情 @@ -595,6 +595,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setSalarySobCycleDTO(salarySobCycleDTO) .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) + .setLockSalaryItemIds(lockSalaryItemIds) .setSalarySobItemPOS(salarySobItemPOS) .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) .setExpressFormulas(expressFormulas) @@ -741,14 +742,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salaryAcctResultValues = this.listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); Map salaryAcctResultValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId); // 值可以锁定的薪资项目 - Set salaryItemIds = canLockSalaryItemIds(salaryAcctRecord.getSalarySobId()); +// Set salaryItemIds = canLockSalaryItemIds(salaryAcctRecord.getSalarySobId()); // if (Objects.nonNull(updateParam.getSalaryItemId())) { // if (!salaryItemIds.contains(updateParam.getSalaryItemId())) { // return; // } // salaryItemIds = Collections.singleton(updateParam.getSalaryItemId()); // } - salaryItemIds = Collections.singleton(updateParam.getSalaryItemId()); + Set salaryItemIds = Collections.singleton(updateParam.getSalaryItemId()); if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { salaryAcctRecord.getLockSalaryItemIds().addAll(salaryItemIds); } else {