From be2d6b693a67924bd12da2e3bac98d59722c2a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 17 Oct 2024 18:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E9=94=81=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctCalculateBO.java | 8 --- .../salaryacct/bo/SalaryAcctResultBO.java | 2 + .../param/SalaryAcctResultLockParam.java | 34 ++++++++++ .../salaryacct/po/SalaryAcctEmployeePO.java | 5 ++ .../salaryacct/po/SalaryAcctRecordPO.java | 1 + .../salaryacct/SalaryAcctManager.java | 22 ++---- .../salaryacct/SalaryAcctEmployeeMapper.java | 2 + .../salaryacct/SalaryAcctEmployeeMapper.xml | 15 +++- .../service/SalaryAcctEmployeeService.java | 2 + .../service/SalaryAcctResultService.java | 7 ++ .../impl/SalaryAcctCalculateServiceImpl.java | 10 +-- .../impl/SalaryAcctEmployeeServiceImpl.java | 40 +++++++---- .../impl/SalaryAcctResultServiceImpl.java | 68 ++++++++++--------- .../salary/web/SalaryAcctController.java | 8 +++ .../wrapper/SalaryAcctResultWrapper.java | 5 ++ 15 files changed, 153 insertions(+), 76 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index afba2a327..e0a777bcd 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -4,7 +4,6 @@ import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; -import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; @@ -49,13 +48,6 @@ public class SalaryAcctCalculateBO { */ private SalarySobCycleDTO salarySobCycleDTO; - /** - * 核算锁定值 - */ - private Map salaryAcctLockResultPOS; - private List lockSalaryItemIds; - - /** * 相同税款所属期内其他薪资核算记录(薪资类型为工资薪金的账套的) */ diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index ef1dcca05..7cf9c3aff 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -318,6 +318,8 @@ public class SalaryAcctResultBO { map.put("id", e.getId()); //锁定状态 map.put("lockStatus", LockStatusEnum.getByValue(e.getLockStatus()).getDefaultLabel()); + //锁定数据 + map.put("lockItems", e.getLockItems()); //人员id map.put("employeeId", e.getEmployeeId()); // 个税扣缴义务人 diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java new file mode 100644 index 000000000..555411825 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资数据单元格锁定 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultLockParam { + //锁定状态 + @DataCheck(require = true,message = "锁定状态不能为空") + private LockStatusEnum lockStatus; + + //薪资核算人员Id + @DataCheck(require = true,message = "薪资核算人员不能为空") + private Long acctEmpId; + + //薪资项目的Id + @DataCheck(require = true,message = "薪资项目不能为空") + private Long salaryItemId; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index d86941b8b..3645db6fc 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -12,6 +12,7 @@ import lombok.experimental.Accessors; import java.util.Collection; import java.util.Date; +import java.util.List; /** * 薪资核算人员 @@ -110,6 +111,7 @@ public class SalaryAcctEmployeePO { private Date updateTime; + @Deprecated @ElogTransform(name = "锁定状态") private Integer lockStatus; @@ -142,6 +144,9 @@ public class SalaryAcctEmployeePO { */ private String status; + //锁定的项目 + private List lockItems; + //--------条件---------- //主键id集合 diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index d2f089f21..26cd0b3c4 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -126,6 +126,7 @@ public class SalaryAcctRecordPO { /** * 锁定的薪资项目 */ + @Deprecated private List lockSalaryItemIds; //查询条件------------------------------- diff --git a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java index 78392dfd4..289b898bd 100644 --- a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java +++ b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java @@ -261,8 +261,11 @@ public class SalaryAcctManager extends Service { // 7、查询考勤引用的所有字段 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); -// //核算锁定值 -// List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); + //fixme 先全部锁定 + +// //将除重新核算的项目外的所有的值都锁定 +// List salaryItemIds = calculateParam.getSalaryItemIds(); +// List lockSalaryItemIds = salaryItemPOS.stream().map(SalaryItemPO::getId).filter(id -> !salaryItemIds.contains(id)).collect(Collectors.toList()); // Map acctResults = new HashMap<>(); // if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { // List acctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); @@ -273,19 +276,6 @@ public class SalaryAcctManager extends Service { // .collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); // } - //将除重新核算的项目外的所有的值都锁定 - List salaryItemIds = calculateParam.getSalaryItemIds(); - List lockSalaryItemIds = salaryItemPOS.stream().map(SalaryItemPO::getId).filter(id -> !salaryItemIds.contains(id)).collect(Collectors.toList()); - Map acctResults = new HashMap<>(); - if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { - List acctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - acctResults = Optional.ofNullable(acctResultPOS) - .orElse(new ArrayList<>()) - .stream() - .filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())) - .collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - } - // 8、查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); @@ -323,8 +313,6 @@ public class SalaryAcctManager extends Service { .setSalarySobPO(salarySobPO) .setSalarySobCycleDTO(salarySobCycleDTO) .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) - .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) - .setLockSalaryItemIds(lockSalaryItemIds) .setSalarySobItemPOS(salarySobItemPOS) .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) .setExpressFormulas(expressFormulas) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java index 84b16591c..a7f66818a 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java @@ -124,4 +124,6 @@ public interface SalaryAcctEmployeeMapper { void lockByRecordId(@Param("lockStatus") Integer lockStatus, @Param("recordId") Long recordId); void updateIgnoreNull(@Param("salaryAcctEmployeePO")SalaryAcctEmployeePO salaryAcctEmployeePO); + + void lock(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 86781c4d3..6cede4796 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -25,6 +25,7 @@ + @@ -966,6 +968,7 @@ + @@ -994,6 +997,7 @@ , t.jobcall , t.jobcall_id , t.status + , t.lock_items @@ -1166,4 +1170,13 @@ WHERE id = #{salaryAcctEmployeePO.id} AND delete_type = 0 + + UPDATE hrsa_salary_acct_emp + + lock_items = + #{lockItems, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + WHERE id = #{id} AND delete_type = 0 + + diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index 6c506cb04..f2647df1b 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -267,4 +267,6 @@ public interface SalaryAcctEmployeeService { * @param salaryAcctEmployeePO */ void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO); + + void lock(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 7c8e8a00f..ea6c2fe30 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -157,6 +157,13 @@ public interface SalaryAcctResultService { */ List listBySalaryAcctRecordIdsAndTaxAgentIds(Collection salaryAcctRecordIds, Collection taxAgentIds); + /** + * 锁定单元格 + * @param param + */ + void lock(SalaryAcctResultLockParam param); + + /** * 锁定项目 * diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index c7cce5da7..ee7588545 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -31,7 +31,6 @@ import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.util.StopWatch; @@ -162,6 +161,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc sw.start("查询薪资核算人员的薪资核算结果"); List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); + Map empItemValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOS, p -> p.getSalaryAcctEmpId() + "_" + p.getSalaryItemId(), SalaryAcctResultPO::getResultValue); sw.stop(); // 查询浮动薪资 sw.start("查询浮动薪资"); @@ -174,8 +174,6 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc for (Map.Entry> et : collect.entrySet()) { salaryAcctResultPOMap.put(et.getKey(), et.getValue().get(0).getOriginResultValue()); } - //核算锁定的值 - Map salaryAcctLockResultPOS = MapUtils.emptyIfNull(salaryAcctCalculateBO.getSalaryAcctLockResultPOS()); sw.stop(); // 9、查询相同税款所属期内涉及合并计税的其他薪资核算结果 sw.start("查询相同税款所属期内涉及合并计税的其他薪资核算结果"); @@ -210,6 +208,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc StringBuffer noticeMsg = new StringBuffer(); for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { Long salaryAcctEmployeePOId = salaryAcctEmployeePO.getId(); + List lockItems = salaryAcctEmployeePO.getLockItems(); //1 获取当前薪资核算人员的公式中的变量的值 List formulaVarValues = formulaVarMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); //2 人员信息 @@ -272,9 +271,10 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 处理小数点 resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap, salaryItemIdKeySalarySobItemPOMap); + //是否锁定 - if (salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { - resultValue = salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId).getResultValue(); + if (lockItems != null && lockItems.contains(salaryItemId)) { + resultValue = empItemValueMap.get(salaryAcctEmployeePOId + "_" + salaryItemId); } // 将已经计算过的薪资项目的值转换成公式变量的值添加到集合中 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 47170d989..ee0ddc70a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -9,6 +9,7 @@ import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; @@ -16,6 +17,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; @@ -108,6 +110,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) { + return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); + } + + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @Override @@ -769,12 +776,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void lockEmp(SalaryAcctResultUpdateLockStatusParam updateParam) { - // 查询薪资核算记录 - SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(updateParam.getSalaryAcctRecordId()); - if (CollectionUtils.isEmpty(salaryAcctRecord.getLockSalaryItemIds())) { - salaryAcctRecord.setLockSalaryItemIds(new ArrayList<>()); - } - List salaryAcctEmployees = listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId()); + List salaryAcctEmployees = listByIds(updateParam.getAcctEmpIds()); if (CollectionUtils.isEmpty(salaryAcctEmployees)) { return; } @@ -784,13 +786,20 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct throw new SalaryRunTimeException("锁定状态异常!"); } - Set acctEmpIds = updateParam.getAcctEmpIds(); - if (CollUtil.isNotEmpty(acctEmpIds)) { - //锁定指定人员 - getSalaryAcctEmployeeMapper().lockByAcctEmpIds(lockStatus.getValue(), acctEmpIds); - } else { - //锁定全部 - getSalaryAcctEmployeeMapper().lockByRecordId(lockStatus.getValue(), updateParam.getSalaryAcctRecordId()); + if (updateParam.getLockStatus() == LockStatusEnum.LOCK){ + SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(updateParam.getSalaryAcctRecordId()); + List salarySobItems = salaryAcctSobConfig.getSalarySobItems(); + List itemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId,Collectors.toList()); + + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + salaryAcctEmployeePO.setLockItems(itemIds); + lock(salaryAcctEmployeePO); + }); + }else { + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + salaryAcctEmployeePO.setLockItems(new ArrayList<>()); + lock(salaryAcctEmployeePO); + }); } } @@ -798,4 +807,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct public void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO) { getSalaryAcctEmployeeMapper().updateIgnoreNull(salaryAcctEmployeePO); } + + @Override + public void lock(SalaryAcctEmployeePO salaryAcctEmployeePO) { + getSalaryAcctEmployeeMapper().lock(salaryAcctEmployeePO); + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 67f31f4ef..2e8258f96 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1,6 +1,5 @@ package com.engine.salary.service.impl; -import cn.hutool.core.collection.CollUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; @@ -831,21 +830,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(103378, "薪资核算人员不能为空")); } - - //核算锁定值 - List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); - Map acctResults = new HashMap<>(); - if (CollUtil.isNotEmpty(lockSalaryItemIds)) { - List acctResultPOS = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singleton(calculateParam.getSalaryAcctRecordId()), lockSalaryItemIds); - acctResults = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())).collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - } - List lockEmpIds = salaryAcctEmployeePOS.stream().filter(po -> LockStatusEnum.LOCK.getValue().equals(po.getLockStatus())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(lockEmpIds)) { - List acctResultPOS = listBySalaryAcctEmployeeIds(lockEmpIds); - Map acctResultMaps = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - acctResults.putAll(acctResultMaps); - } - stopWatch.stop(); stopWatch.start("核算耗时"); @@ -874,8 +858,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setSalarySobPO(salarySobPO) .setSalarySobCycleDTO(salarySobCycleDTO) .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) - .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) - .setLockSalaryItemIds(lockSalaryItemIds) .setSalarySobItemPOS(salarySobItemPOS) .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) .setExpressFormulas(expressFormulas) @@ -1018,13 +1000,32 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // return salaryAcctEmployeeService.filterByAuthority(salaryAcctEmployees, employeeId); // } + + @Override + public void lock(SalaryAcctResultLockParam param) { + ValidUtil.doValidator(param); + + SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(param.getAcctEmpId()); + if (salaryAcctEmployeePO == null) { + return; + } + + List lockItemIds = salaryAcctEmployeePO.getLockItems() == null ? new ArrayList<>() : salaryAcctEmployeePO.getLockItems(); + Long salaryItemId = param.getSalaryItemId(); + + if (param.getLockStatus() == LockStatusEnum.LOCK) { + lockItemIds.add(salaryItemId); + } else { + lockItemIds.remove(salaryItemId); + } + + salaryAcctEmployeePO.setLockItems(lockItemIds); + + getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO); + } + @Override public void updateLockStatusByParam(SalaryAcctResultUpdateLockStatusParam updateParam) { - // 查询薪资核算记录 - SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(updateParam.getSalaryAcctRecordId()); - if (CollectionUtils.isEmpty(salaryAcctRecord.getLockSalaryItemIds())) { - salaryAcctRecord.setLockSalaryItemIds(new ArrayList<>()); - } List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId()); if (CollectionUtils.isEmpty(salaryAcctEmployees)) { return; @@ -1036,15 +1037,18 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } else { salaryItemIds = Collections.singleton(updateParam.getSalaryItemId()); } - if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { - Set lockSalaryItemIds = new HashSet<>(); - lockSalaryItemIds.addAll(salaryAcctRecord.getLockSalaryItemIds()); - lockSalaryItemIds.addAll(salaryItemIds); - salaryAcctRecord.setLockSalaryItemIds(new ArrayList(lockSalaryItemIds)); - } else { - salaryAcctRecord.getLockSalaryItemIds().removeAll(salaryItemIds); - } - getSalaryAcctRecordService(user).updateLockSalaryItemIds(salaryAcctRecord); + + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + List lockItemIds = salaryAcctEmployeePO.getLockItems() == null ? new ArrayList<>() : salaryAcctEmployeePO.getLockItems(); + + if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { + lockItemIds.addAll(salaryItemIds); + } else { + lockItemIds.removeAll(salaryItemIds); + } + salaryAcctEmployeePO.setLockItems(lockItemIds); + getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO); + }); } diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index c8739df1d..a196d53ef 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -464,6 +464,14 @@ public class SalaryAcctController { } + @POST + @Path("/acctresult/lock") + @Produces(MediaType.APPLICATION_JSON) + public String lock(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultLockParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lock, param); + } + //更新薪资项目锁定状态 @POST @Path("/acctresult/updateLockStatus") diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 094602f01..ac3573064 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -189,6 +189,11 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult getSalaryAcctResultService(user).save(saveParam); } + + public void lock(SalaryAcctResultLockParam param) { + getSalaryAcctResultService(user).lock(param); + } + /** * 更新薪资核算结果的值的锁定状态 *