From 2c79afa65edd685d34fa337b7ceddd8b174cdb05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 28 May 2024 17:29:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=94=81=E5=AE=9A=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/SalaryAcctResultBO.java | 16 +++--- ...SalaryAcctResultUpdateLockStatusParam.java | 14 ++--- .../salaryacct/po/SalaryAcctEmployeePO.java | 7 ++- .../salaryaccounting/LockStatusEnum.java | 23 +++++--- .../salaryacct/SalaryAcctEmployeeMapper.java | 7 ++- .../salaryacct/SalaryAcctEmployeeMapper.xml | 39 ++++++++++--- .../service/SalaryAcctEmployeeService.java | 6 ++ .../service/SalaryAcctResultService.java | 2 +- .../impl/SalaryAcctCalculateServiceImpl.java | 4 +- .../impl/SalaryAcctEmployeeServiceImpl.java | 57 ++++++++++++++----- .../impl/SalaryAcctExcelServiceImpl.java | 6 -- .../impl/SalaryAcctResultServiceImpl.java | 40 ++++++------- .../salary/web/SalaryAcctController.java | 10 +++- .../wrapper/SalaryAcctEmployeeWrapper.java | 8 +-- 14 files changed, 158 insertions(+), 81 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 64f6bcfe5..121092602 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -181,9 +181,9 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName(), 0), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); @@ -192,18 +192,18 @@ public class SalaryAcctResultBO { // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } // 回算的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getDefaultLabel(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } @@ -288,6 +288,8 @@ public class SalaryAcctResultBO { } // 主键id map.put("id", e.getId()); + //锁定状态 + map.put("lockStatus", LockStatusEnum.getByValue(e.getLockStatus()).getDefaultLabel()); //人员id map.put("employeeId", e.getEmployeeId()); // 个税扣缴义务人 @@ -552,7 +554,7 @@ public class SalaryAcctResultBO { // .canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0)) .canEdit(true) .pattern(salarySobItemPO.getPattern()) - .lockStatus(lockItems.contains(salarySobItemPO.getSalaryItemId()) ? LockStatusEnum.LOCK.getValue() : LockStatusEnum.UNLOCK.getValue()) + .lockStatus(lockItems.contains(salarySobItemPO.getSalaryItemId()) ? LockStatusEnum.LOCK.getDefaultLabel() : LockStatusEnum.UNLOCK.getDefaultLabel()) .build(); } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultUpdateLockStatusParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultUpdateLockStatusParam.java index 1e6042977..c4ed999fd 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultUpdateLockStatusParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultUpdateLockStatusParam.java @@ -21,19 +21,19 @@ import java.util.Set; @AllArgsConstructor @NoArgsConstructor public class SalaryAcctResultUpdateLockStatusParam { - //锁定状态 private LockStatusEnum lockStatus; - //薪资项目的Id") - private Long salaryItemId; - //薪资核算人员的id") -// private Set idStrSet; + //薪资核算记录的id + private Long salaryAcctRecordId; + + //薪资项目的Id + private Long salaryItemId; //薪资项目的IdList private Set salaryItemIds; - //薪资核算记录的id") - private Long salaryAcctRecordId; + //薪资核算人员的id + private Set acctEmpIds; } diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index 322fc6c68..cc67bfe05 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -1,7 +1,7 @@ package com.engine.salary.entity.salaryacct.po; -import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -108,6 +108,11 @@ public class SalaryAcctEmployeePO { @ElogTransform(name = "更新时间") private Date updateTime; + + @ElogTransform(name = "锁定状态") + private Integer lockStatus; + + //--------条件---------- //主键id集合 private Collection ids; diff --git a/src/com/engine/salary/enums/salaryaccounting/LockStatusEnum.java b/src/com/engine/salary/enums/salaryaccounting/LockStatusEnum.java index 316f9aa91..e7fa758c2 100644 --- a/src/com/engine/salary/enums/salaryaccounting/LockStatusEnum.java +++ b/src/com/engine/salary/enums/salaryaccounting/LockStatusEnum.java @@ -3,25 +3,25 @@ package com.engine.salary.enums.salaryaccounting; import com.engine.salary.enums.BaseEnum; -public enum LockStatusEnum implements BaseEnum { - DEFAULT("DEFAULT", "默认", 0), - LOCK("LOCK", "锁定", 0), - UNLOCK("UNLOCK", "未锁定", 0); +public enum LockStatusEnum implements BaseEnum { + LOCK(1, "LOCK", 0), + UNLOCK(0, "UNLOCK", 0); - private String value; + private Integer value; private String defaultLabel; private int labelId; - LockStatusEnum(String value, String defaultLabel, int labelId) { + + LockStatusEnum(Integer value, String defaultLabel, int labelId) { this.value = value; this.defaultLabel = defaultLabel; this.labelId = labelId; } @Override - public String getValue() { + public Integer getValue() { return value; } @@ -34,4 +34,13 @@ public enum LockStatusEnum implements BaseEnum { public String getDefaultLabel() { return defaultLabel; } + + public static LockStatusEnum getByValue(Integer value) { + for (LockStatusEnum lockStatusEnum : LockStatusEnum.values()) { + if (lockStatusEnum.getValue().equals(value)) { + return lockStatusEnum; + } + } + return UNLOCK; + } } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java index c27b10ac8..3b97e3084 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 薪资核算人员 @@ -16,7 +17,7 @@ import java.util.List; * @author qiantao * @version 1.0 **/ -public interface SalaryAcctEmployeeMapper { +public interface SalaryAcctEmployeeMapper { /** * 批量插入 @@ -117,4 +118,8 @@ public interface SalaryAcctEmployeeMapper { * @return 返回记录,没有返回null */ SalaryAcctEmployeePO getById(Long id); + + void lockByAcctEmpIds(@Param("lockStatus") Integer lockStatus, @Param("acctEmpIds") Set acctEmpIds); + + void lockByRecordId(@Param("lockStatus") Integer lockStatus, @Param("recordId") Long recordId); } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 06d86e035..cc1dc0e33 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -15,6 +15,7 @@ + @@ -52,7 +54,7 @@ INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type) + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) VALUES ( @@ -66,14 +68,15 @@ #{emp.updateTime}, #{emp.deleteType}, #{emp.tenantKey}, - #{emp.employeeType} + #{emp.employeeType}, + #{emp.lockStatus} ) INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type) + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) select @@ -87,7 +90,8 @@ #{emp.updateTime,jdbcType=DATE}, #{emp.deleteType,jdbcType=INTEGER}, #{emp.tenantKey,jdbcType=VARCHAR}, - #{emp.employeeType,jdbcType=INTEGER} + #{emp.employeeType,jdbcType=INTEGER}, + #{emp.lockStatus,jdbcType=INTEGER} from dual @@ -95,7 +99,7 @@ INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type) + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) VALUES ( #{emp.salaryAcctRecordId}, @@ -108,7 +112,8 @@ #{emp.updateTime}, #{emp.deleteType}, #{emp.tenantKey}, - #{emp.employeeType} + #{emp.employeeType}, + #{emp.lockStatus} ) @@ -1144,6 +1149,7 @@ + @@ -1162,6 +1168,7 @@ , t.delete_type , t.tenant_key , t.employee_type + , t.lock_status @@ -1252,4 +1259,22 @@ FROM hrsa_salary_acct_emp t WHERE id = #{id} AND delete_type = 0 + + + UPDATE hrsa_salary_acct_emp + SET lock_status = #{lockStatus} + WHERE delete_type = 0 + AND id IN + + #{acctEmpId} + + + + + UPDATE hrsa_salary_acct_emp + SET lock_status = #{lockStatus} + WHERE delete_type = 0 + AND salary_acct_record_id =#{recordId} + + diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index 91bc0ec48..a4d905a62 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -256,4 +256,10 @@ public interface SalaryAcctEmployeeService { */ List listByTaxAgentAndSalaryMonth(List taxAgentIds, Set salaryMonths); + /** + * 锁定人员 + * @param updateParam + */ + void lockEmp(SalaryAcctResultUpdateLockStatusParam updateParam); + } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 0090f8330..7c8e8a00f 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -158,7 +158,7 @@ public interface SalaryAcctResultService { List listBySalaryAcctRecordIdsAndTaxAgentIds(Collection salaryAcctRecordIds, Collection taxAgentIds); /** - * 更新锁定状态 + * 锁定项目 * * @param updateParam */ diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index bf47e7e0e..c70f3ad81 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -30,7 +30,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.ListUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; @@ -167,7 +166,6 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc } //核算锁定的值 Map salaryAcctLockResultPOS = MapUtils.emptyIfNull(salaryAcctCalculateBO.getSalaryAcctLockResultPOS()); - List lockSalaryItemIds = ListUtils.emptyIfNull(salaryAcctCalculateBO.getLockSalaryItemIds()); sw.stop(); // 9、查询相同税款所属期内涉及合并计税的其他薪资核算结果 sw.start("查询相同税款所属期内涉及合并计税的其他薪资核算结果"); @@ -258,7 +256,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 处理小数点 resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap, salaryItemIdKeySalarySobItemPOMap); //是否锁定 - if (lockSalaryItemIds.contains(salaryItemId) && salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { + if (salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { resultValue = salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId).getResultValue(); } // 将已经计算过的薪资项目的值转换成公式变量的值添加到集合中 diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 5e12b5bc2..05e45d42a 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -18,6 +18,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.OperateTypeEnum; +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salaryacct.SalaryAcctEmployeeMapper; @@ -208,7 +209,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public List listByParam(SalaryAcctEmployeeQueryParam queryParam) { - ValidUtil.doValidator(queryParam); +// ValidUtil.doValidator(queryParam); //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); queryParam.setOrderRule(orderRule); @@ -697,19 +698,19 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // } // list = list.stream().filter(po -> employeeIdsByPostionFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); // } - // 人事状态过滤 - if (CollectionUtils.isNotEmpty(param.getStatus())) { - Set employeeIdsByStatus = new HashSet<>(); - employeeList.forEach(simpleEmployee -> { - if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { - employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); - } - }); - if (CollectionUtils.isEmpty(employeeIdsByStatus)) { - return Lists.newArrayList(); - } - list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); - } + // 人事状态过滤 + if (CollectionUtils.isNotEmpty(param.getStatus())) { + Set employeeIdsByStatus = new HashSet<>(); + employeeList.forEach(simpleEmployee -> { + if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { + employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + } + }); + if (CollectionUtils.isEmpty(employeeIdsByStatus)) { + return Lists.newArrayList(); + } + list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); + } // 入职日期 if (CollectionUtils.isNotEmpty(param.getHiredate())) { Set employeeIdsByHiredate = new HashSet<>(); @@ -754,4 +755,32 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return getSalaryAcctEmployeeMapper().listSome(SalaryAcctEmployeePO.builder().taxAgentIds(taxAgentIds).salaryMonths(salaryMonths).build()); } + + @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()); + if (CollectionUtils.isEmpty(salaryAcctEmployees)) { + return; + } + + LockStatusEnum lockStatus = updateParam.getLockStatus(); + if (lockStatus == null) { + throw new SalaryRunTimeException("锁定状态异常!"); + } + + Set acctEmpIds = updateParam.getAcctEmpIds(); + if (CollUtil.isNotEmpty(acctEmpIds)) { + //锁定指定人员 + getSalaryAcctEmployeeMapper().lockByAcctEmpIds(lockStatus.getValue(), acctEmpIds); + } else { + //锁定全部 + getSalaryAcctEmployeeMapper().lockByRecordId(lockStatus.getValue(), updateParam.getSalaryAcctRecordId()); + } + } + } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index a7e648150..d21fe8d56 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1382,12 +1382,6 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc loggerContext.setOldValueList(list4log); SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); - // 存储薪资核算结果数据来源日志 - new Thread() { - public void run() { - handleSalaryAcctResultLog(salaryAcctResults); - } - }.start(); //报表 getSalaryAcctReportService(user).batchSave(salaryAcctReports); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index c4ea52b9e..c3d96f1ef 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1,5 +1,6 @@ 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; @@ -554,7 +555,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } Map resultMap = Maps.newHashMap(); // 查询薪资核算使用的薪资账套下的薪资项目 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(salaryAcctRecordId,true); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(salaryAcctRecordId, true); for (SalarySobItemIncomeCategoryDTO incomeCategoryDTO : salarySobItemAggregateDTO.getIncomeCategories()) { for (SalarySobItemGroupDTO salarySobItemGroupDTO : incomeCategoryDTO.getItemGroups()) { for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { @@ -640,7 +641,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 存储薪资核算结果数据来源日志 salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId()); - saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS); // 查询操作日志的targetName String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(salaryAcctEmployeePO.getSalaryAcctRecordId()); @@ -717,7 +717,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe @Override public void calculate(SalaryAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee) { - StopWatch stopWatch = new StopWatch("总核算耗时,id:"+calculateParam.getSalaryAcctRecordId()); + StopWatch stopWatch = new StopWatch("总核算耗时,id:" + calculateParam.getSalaryAcctRecordId()); try { stopWatch.start("数据准备"); // 1、查询薪资核算记录 @@ -759,15 +759,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 7、查询考勤引用的所有字段 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); - //核算锁定值 - List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); - Map acctResults = new HashMap<>(); - if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { - List acctResultPOS = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singleton(calculateParam.getSalaryAcctRecordId()), 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(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - } - // 8、查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); formulaIds.addAll(SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId)); @@ -790,6 +781,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe 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("核算耗时"); @@ -865,16 +870,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe stopWatch.stop(); log.info(stopWatch.prettyPrint()); - // 存储薪资核算数据来源日志 - new Thread() { - public void run() { - List exceptItemIds = new ArrayList<>(); - List salaryAcctEmployeeIds = salaryAcctEmployeePOS.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - exceptItemIds.addAll(lockSalaryItemIds); - exceptItemIds.addAll(salaryItemPOS.stream().filter(PO -> Objects.equals(PO.getValueType(), NumberUtils.INTEGER_ONE) && Objects.equals(PO.getUseInEmployeeSalary(), 0)).map(SalaryItemPO::getId).collect(Collectors.toList())); - getSalaryAcctResultLogService(user).deleteBySalaryAcctEmpIdExceptItemIds(salaryAcctEmployeeIds, exceptItemIds); - } - }.start(); + // 记录日志 // 查询操作日志的targetName String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(calculateParam.getSalaryAcctRecordId()); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 4088342c7..68e029c08 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -467,7 +467,7 @@ public class SalaryAcctController { } - //更新薪资核算结果的锁定状态 + //更新薪资项目锁定状态 @POST @Path("/acctresult/updateLockStatus") @Produces(MediaType.APPLICATION_JSON) @@ -476,6 +476,14 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param); } + @POST + @Path("/acctresult/lockEmp") + @Produces(MediaType.APPLICATION_JSON) + public String lock(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultUpdateLockStatusParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::lockEmp, param); + } + //批量更新 @POST @Path("/acctresult/batchUpdate") diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index 526fbfcb5..095935fd5 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -5,10 +5,7 @@ import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO; -import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeAddParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeDeleteParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeSaveParam; +import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.exception.SalaryRunTimeException; @@ -195,4 +192,7 @@ public class SalaryAcctEmployeeWrapper extends Service { getSalaryAcctEmployeeService(user).refresh(salaryAcctRecordId); } + public void lockEmp(SalaryAcctResultUpdateLockStatusParam salaryAcctResultUpdateLockStatusParam) { + getSalaryAcctEmployeeService(user).lockEmp(salaryAcctResultUpdateLockStatusParam); + } } From 6bd0d1b8a837c5dd715e9cbf2af8a4906fb0b2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 28 May 2024 17:51:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=94=81=E5=AE=9A=E4=BA=BA=E5=91=98sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202405280703.sql | 3 +++ resource/sqlupgrade/GS/sql202405280703.sql | 3 +++ resource/sqlupgrade/JC/sql202405280703.sql | 3 +++ resource/sqlupgrade/Mysql/sql202405280703.sql | 1 + resource/sqlupgrade/Oracle/sql202405280703.sql | 2 ++ resource/sqlupgrade/PG/sql202405280703.sql | 1 + resource/sqlupgrade/SQLServer/sql202405280703.sql | 2 ++ resource/sqlupgrade/ST/sql202405280703.sql | 3 +++ 8 files changed, 18 insertions(+) create mode 100644 resource/sqlupgrade/DM/sql202405280703.sql create mode 100644 resource/sqlupgrade/GS/sql202405280703.sql create mode 100644 resource/sqlupgrade/JC/sql202405280703.sql create mode 100644 resource/sqlupgrade/Mysql/sql202405280703.sql create mode 100644 resource/sqlupgrade/Oracle/sql202405280703.sql create mode 100644 resource/sqlupgrade/PG/sql202405280703.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202405280703.sql create mode 100644 resource/sqlupgrade/ST/sql202405280703.sql diff --git a/resource/sqlupgrade/DM/sql202405280703.sql b/resource/sqlupgrade/DM/sql202405280703.sql new file mode 100644 index 000000000..905ff7b4f --- /dev/null +++ b/resource/sqlupgrade/DM/sql202405280703.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status NUMBER(11, 0); +/ + diff --git a/resource/sqlupgrade/GS/sql202405280703.sql b/resource/sqlupgrade/GS/sql202405280703.sql new file mode 100644 index 000000000..905ff7b4f --- /dev/null +++ b/resource/sqlupgrade/GS/sql202405280703.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status NUMBER(11, 0); +/ + diff --git a/resource/sqlupgrade/JC/sql202405280703.sql b/resource/sqlupgrade/JC/sql202405280703.sql new file mode 100644 index 000000000..905ff7b4f --- /dev/null +++ b/resource/sqlupgrade/JC/sql202405280703.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status NUMBER(11, 0); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202405280703.sql b/resource/sqlupgrade/Mysql/sql202405280703.sql new file mode 100644 index 000000000..329bd939c --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202405280703.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_emp ADD COLUMN lock_status int(0) NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202405280703.sql b/resource/sqlupgrade/Oracle/sql202405280703.sql new file mode 100644 index 000000000..24fc81139 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202405280703.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status NUMBER(11, 0) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202405280703.sql b/resource/sqlupgrade/PG/sql202405280703.sql new file mode 100644 index 000000000..902cfab0d --- /dev/null +++ b/resource/sqlupgrade/PG/sql202405280703.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_emp ADD COLUMN lock_status int NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202405280703.sql b/resource/sqlupgrade/SQLServer/sql202405280703.sql new file mode 100644 index 000000000..086ab3bf5 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202405280703.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status int NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202405280703.sql b/resource/sqlupgrade/ST/sql202405280703.sql new file mode 100644 index 000000000..905ff7b4f --- /dev/null +++ b/resource/sqlupgrade/ST/sql202405280703.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_status NUMBER(11, 0); +/ +