From 4eb931686eb56182f90b424cc3ff9d24c37d26cd Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 5 Dec 2023 14:57:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=B2=81=E6=8E=A7=E6=95=B0=E5=AD=97temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/bo/SalaryAcctResultReportBO.java | 39 ++++ .../salaryacct/bo/SalaryAcctResultBO.java | 29 +++ .../param/SalaryAcctResultBatchEditParam.java | 40 +++++ .../SalaryAcctResultBatchUpdateParam.java | 37 ++++ .../service/SalaryAcctRecordService.java | 6 + .../service/SalaryAcctResultService.java | 17 +- .../impl/SalaryAcctRecordServiceImpl.java | 99 +++++++++++ .../impl/SalaryAcctResultServiceImpl.java | 168 ++++++++++++++++++ .../salary/web/SalaryAcctController.java | 27 +++ .../wrapper/SalaryAcctRecordWrapper.java | 8 + .../wrapper/SalaryAcctResultWrapper.java | 21 ++- 11 files changed, 483 insertions(+), 8 deletions(-) create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java create mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java diff --git a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java index 6a23857a5..485389860 100644 --- a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java +++ b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.math.NumberUtils; import java.util.*; @@ -62,6 +63,44 @@ public class SalaryAcctResultReportBO { .collect(Collectors.toList()); } + public static List lkszConvert2PO(List items, + SalaryAcctEmployeePO salaryAcctEmployee, + Long employeeId, Map emps) { + if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { + return Collections.emptyList(); + } + Date now = new Date(); + return items.stream() + .map(e -> { + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctEmployee.getSalarySobId()) + .salaryItemId(e.getSalaryItemId()) + .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployee.getId().toString()) + .employeeId(salaryAcctEmployee.getEmployeeId().toString()) + .taxAgentId(salaryAcctEmployee.getTaxAgentId()) + .resultValue(e.getResultValue()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + + DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployee.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + return po; + }) + .collect(Collectors.toList()); + } + public static List convert2ReportPO(Collection temps, Map emps) { // Map longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 57b6e1927..29cae5d4a 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -27,6 +27,7 @@ import com.engine.salary.util.page.Column; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.BeanUtils; @@ -577,6 +578,34 @@ public class SalaryAcctResultBO { .collect(Collectors.toList()); } + + public static List batchEditConvert2PO(Map salaryAcctResultOldPOMap, + List items, + SalaryAcctEmployeePO salaryAcctEmployee, + Long employeeId) { + if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { + return Collections.emptyList(); + } + Date now = new Date(); + return items.stream() + .map(e -> SalaryAcctResultPO.builder() + .salarySobId(salaryAcctEmployee.getSalarySobId()) + .salaryItemId(e.getSalaryItemId()) + .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployee.getId()) + .employeeId(salaryAcctEmployee.getEmployeeId()) + .taxAgentId(salaryAcctEmployee.getTaxAgentId()) + .resultValue(StringUtils.trim(e.getResultValue())) + .originResultValue(salaryAcctResultOldPOMap.get(salaryAcctEmployee.getId() + "-" + e.getSalaryItemId())) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()) + .collect(Collectors.toList()); + } + public static Map buildEmployeeFieldName() { Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields(); Map employeeFieldNameMap = Maps.newHashMapWithExpectedSize(declaredFields.length); diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java new file mode 100644 index 000000000..21922043c --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java @@ -0,0 +1,40 @@ +package com.engine.salary.entity.salaryacct.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @ClassName SalaryAcctResultBatchUpdateParam + * @author Harryxzy + * @date 2023/12/4 13:48 + * @description 鲁控数字批量编辑参数 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultBatchEditParam { + + private Long salaryAcctRecordId; + + private List resultValueList; + + + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public class resultValue { + + // 薪资核算人员id + private Long salaryAcctEmpId; + + // 薪资项目值 + private List items; + } + +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java new file mode 100644 index 000000000..8eabde532 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -0,0 +1,37 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @ClassName SalaryAcctResultBatchUpdateParam + * @author Harryxzy + * @date 2023/12/4 13:48 + * @description 鲁控数字批量更新参数 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultBatchUpdateParam { + + //薪资核算记录的id + @DataCheck(require = true, message = "薪资核算记录ID不得为空") + private Long salaryAcctRecordId; + + //薪资项目的Id + @DataCheck(require = true, message = "薪资项目id不得为空") + private Long salaryItemId; + + // 薪资核算人员id + private List salaryAcctEmpIdList; + + //薪资项目值 + private String value; + +} diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 1ba3419bf..319552b78 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -207,4 +207,10 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); + + /** + * 鲁控数字-结账 + * @param salaryAcctRecordId + */ + void lkszJz(Long salaryAcctRecordId); } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 67320ed0d..871188360 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -4,10 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; -import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam; +import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.util.page.PageInfo; @@ -207,4 +204,16 @@ public interface SalaryAcctResultService { * @return */ Boolean checkAuth(Long salaryAcctRecordId); + + /** + * 鲁控数字薪资核算结果批量更新 + * @param param + */ + void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param); + + /** + * 鲁控数字薪资核算结果批量编辑 + * @param param + */ + void lkszBatchEdit(SalaryAcctResultBatchEditParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 8038d08f7..1a189f762 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -4,6 +4,9 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; @@ -12,6 +15,7 @@ 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.salarysob.dto.SalarySobCycleDTO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; @@ -31,11 +35,14 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; +import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; +import java.time.YearMonth; import java.util.*; import java.util.stream.Collectors; @@ -77,6 +84,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + // private SalaryCheckResultService salaryCheckResultService; // // private SalaryCheckResultDetailService salaryCheckResultDetailService; @@ -102,6 +113,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public SalaryAcctRecordPO getById(Long id) { @@ -810,4 +825,88 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe public List listSome(SalaryAcctRecordPO po) { return getSalaryAcctRecordMapper().listSome(po); } + + @Override + public void lkszJz(Long salaryAcctRecordId) { + SalaryAcctRecordPO salaryAcctRecordPO = getById(salaryAcctRecordId); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); + } + YearMonth salaryMonth = SalaryDateUtil.toYearMonth(SalaryDateUtil.dateToLocalDate(salaryAcctRecordPO.getSalaryMonth()).plusMonths(1)); + // 创建下一个月的薪资核算记录 + Long newSalaryAcctRecordId = save(SalaryAcctRecordSaveParam.builder().salarySobId(salaryAcctRecordPO.getSalarySobId()).salaryMonth(salaryMonth).build()); + // 查询下个月的薪资核算人员 + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(newSalaryAcctRecordId); + List acctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); + // 获取原来的薪资核算结果 + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); + List resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(salaryAcctRecordId), salarySobItemIds); + // 过滤掉新的核算记录中不存在的人 + resultPOS = resultPOS.stream().filter(result -> acctEmpIds.contains(result.getEmployeeId())).collect(Collectors.toList()); + Map> resultMap = SalaryEntityUtil.group2Map(resultPOS, SalaryAcctResultPO::getEmployeeId); + // 查询人员信息,供报表使用 + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + // 需要保存的核算结果 + List needInsertResultList = new ArrayList<>(); + // 报表 + List needInsertResultReportList = new ArrayList<>(); + Date now = new Date(); + Long uid = Long.valueOf(user.getUID()); + salaryAcctEmployeePOList.stream().forEach(acctEmp -> { + List oldResultList = resultMap.get(acctEmp.getEmployeeId()); + oldResultList.stream().forEach(oldResult -> { + // 薪资核算结果 + needInsertResultList.add(SalaryAcctResultPO.builder() + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(oldResult.getSalaryItemId()) + .salaryAcctRecordId(newSalaryAcctRecordId) + .salaryAcctEmpId(acctEmp.getId()) + .employeeId(acctEmp.getEmployeeId()) + .taxAgentId(acctEmp.getTaxAgentId()) + .resultValue(StringUtils.trim(oldResult.getResultValue())) + .originResultValue(oldResult.getOriginResultValue()) + .creator(uid) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + + // 报表结果 + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(oldResult.getSalaryItemId()) + .salaryAcctRecordId(newSalaryAcctRecordId) + .salaryAcctEmpId(acctEmp.getId().toString()) + .employeeId(acctEmp.getEmployeeId().toString()) + .taxAgentId(acctEmp.getTaxAgentId()) + .resultValue(StringUtils.trim(oldResult.getResultValue())) + .creator(uid) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + + DataCollectionEmployee dataCollectionEmployee = emps.get(acctEmp.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + needInsertResultReportList.add(po); + }); + }); + + // 入库 + getSalaryAcctResultService(user).batchSave(needInsertResultList); + getSalaryAcctReportService(user).batchSave(needInsertResultReportList); + + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 039546c4d..734f2ade4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; @@ -46,6 +47,7 @@ import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -55,6 +57,7 @@ import com.weaver.util.threadPool.entity.LocalRunnable; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -1088,4 +1091,169 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } return true; } + + @Override + public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + ValidUtil.doValidator(param); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除"); + } + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + // 薪资账套中包含的薪资项目 + List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); + if (!salarySobItemIds.contains(param.getSalaryItemId())) { + throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套"); + } + // 获取需要更新的核算人员信息 + List salaryAcctEmployeePOList = Collections.emptyList(); + if (CollectionUtils.isEmpty(param.getSalaryAcctEmpIdList())) { + // 没有选择核算人员,更新核算记录中所有人员 + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId())); + } else { + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getSalaryAcctEmpIdList())); + } + + if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) { + List salaryAcctEmployeeIdList = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList()); + // 查询薪资核算结果 + List resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId())); + Map salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId); + List needUpdateList = new ArrayList<>(); + List needInsertList = new ArrayList<>(); + Date now = new Date(); + salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> { + if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) { + // 更新 + SalaryAcctResultPO po = salaryAcctResultPOMap.get(salaryAcctEmployeePO.getId()); + po.setResultValue(param.getValue()); + po.setUpdateTime(now); + needUpdateList.add(po); + } else { + // 新增 + needInsertList.add(SalaryAcctResultPO.builder() + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(param.getSalaryItemId()) + .salaryAcctRecordId(param.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployeePO.getId()) + .employeeId(salaryAcctEmployeePO.getEmployeeId()) + .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) + .resultValue(StringUtils.trim(param.getValue())) + .originResultValue("") + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } + }); + // 入库 + if (CollectionUtils.isNotEmpty(needUpdateList)) { + getSalaryAcctResultMapper().batchUpdate(needUpdateList); + } + + if (CollectionUtils.isNotEmpty(needInsertList)) { + getSalaryAcctResultMapper().batchInsert(needInsertList); + } + } + } + + @Override + public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { + throw new SalaryRunTimeException("薪资核算结果不存在或已被删除"); + } + + List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); + Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); + + // 需要更新数据的薪资核算人员id + List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getSalaryAcctEmpId).collect(Collectors.toList()); + // 查询原来的薪资核算结果 + List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); + // 解密 + encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); + // 保存参数转换成薪资核算结果po + List salaryAcctResultPOS = new ArrayList<>(); + // 获取薪资项目回算前的值 + Map salaryAcctResultOldPOMap = salaryAcctResultPOSOld.stream() + .collect(Collectors.groupingBy(p -> p.getSalaryAcctEmpId() + "-" + p.getSalaryItemId(), + Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(SalaryAcctResultPO::getId)), + s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); + List salaryAcctResultReportPOS = new ArrayList<>(); + param.getResultValueList().forEach(resultValue -> { + SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getSalaryAcctEmpId()); + salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); + // 报表 + salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); + }); + + // 删除原来的薪资核算结果 + param.getResultValueList().stream().forEach(resultValue -> { + List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + // 报表 + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + }); + + // 保存薪资核算结果 + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 加密 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultMapper()::batchInsert); + } + + //报表 + if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } + } + + + public void temp(SalaryAcctResultSaveParam saveParam){ + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); + + // 查询薪资核算人员 + SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(saveParam.getSalaryAcctEmpId()); + if (Objects.isNull(salaryAcctEmployeePO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); + } + // 查询原来的薪资核算结果 + List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); + // 解密 + encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); + // 保存参数转换成薪资核算结果po + List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID()); + SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); + + // 删除原来的薪资核算结果 + List saveItemIds = saveParam.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); + // 保存薪资核算结果 + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 加密 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultMapper()::batchInsert); + } + //报表 todo + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); + List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); + if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } + + + // 存储薪资核算结果数据来源日志 + salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId()); + saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS); + } } \ No newline at end of file diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 078060a02..45de6654d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -158,6 +158,15 @@ public class SalaryAcctController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } + + // 结账 + @GET + @Path("/lkszJz") + @Produces(MediaType.APPLICATION_JSON) + public String lkszJz(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::lkszJz, id); + } /* ********************************薪资核算记录相关 end*********************************/ @@ -448,6 +457,24 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param); } + //鲁控数字批量更新 + @POST + @Path("/acctresult/lkszBatchUpdate") + @Produces(MediaType.APPLICATION_JSON) + public String lkszBatchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchUpdate, param); + } + + //鲁控数字批量编辑 + @POST + @Path("/acctresult/lkszBatchEdit") + @Produces(MediaType.APPLICATION_JSON) + public String lkszBatchEdit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchEditParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchEdit, param); + } + //薪资核算 @POST @Path("/acctresult/accounting") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 9c17eaf78..5cd43cecb 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -258,4 +258,12 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord public void backCalculate(Long salaryAcctRecordId){ getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId); } + + /** + * 鲁控数字-结账 + * @param salaryAcctRecordId + */ + public void lkszJz(Long salaryAcctRecordId) { + getSalaryAcctRecordService(user).lkszJz(salaryAcctRecordId); + } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 8c0e6404d..59bbd3093 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -9,10 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; -import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam; -import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam; +import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; @@ -260,6 +257,22 @@ public class SalaryAcctResultWrapper extends Service { return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId); } + /** + * 鲁控数字薪资核算结果批量更新 + * @param param + */ + public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + getSalaryAcctResultService(user).lkszBatchUpdate(param); + } + + /** + * 鲁控数字薪资核算结果批量编辑 + * @param param + */ + public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { + getSalaryAcctResultService(user).lkszBatchEdit(param); + } + /** * 薪资核算-校验 From 2a02e17c15e57958e48a68fd099a033c7bf4201d Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 6 Dec 2023 15:55:47 +0800 Subject: [PATCH 2/4] temp --- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 734f2ade4..f051dfefd 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1151,12 +1151,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe }); // 入库 if (CollectionUtils.isNotEmpty(needUpdateList)) { - getSalaryAcctResultMapper().batchUpdate(needUpdateList); - } + // 数据加密 + encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class); + List> partition = Lists.partition(needUpdateList, 100); + partition.forEach(getSalaryAcctResultMapper()::batchUpdate); - if (CollectionUtils.isNotEmpty(needInsertList)) { - getSalaryAcctResultMapper().batchInsert(needInsertList); } + batchSave(needInsertList); } } From 419baeb8cd41050570327b61d740d16b949728b6 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 6 Dec 2023 16:05:08 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E9=B2=81=E6=8E=A7=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIAccountBiz.java | 1 - .../salary/component/WeaTableColumnGroup.java | 12 ++++ .../salaryacct/bo/SalaryAcctRecordBO.java | 3 + .../salaryacct/bo/SalaryAcctResultBO.java | 23 ++++---- .../dto/SalaryAcctResultDetailDTO.java | 3 + .../param/SalaryAcctResultBatchEditParam.java | 4 +- .../SalaryAcctResultBatchUpdateParam.java | 2 +- .../service/SalaryAcctRecordService.java | 2 +- .../service/SalaryAcctReportService.java | 2 + .../service/SalaryAcctResultService.java | 4 +- .../impl/SalaryAcctRecordServiceImpl.java | 3 +- .../impl/SalaryAcctReportServiceImpl.java | 13 +++++ .../impl/SalaryAcctResultServiceImpl.java | 58 +++++++++++++++---- .../salary/web/SalaryAcctController.java | 10 ++-- .../wrapper/SalaryAcctRecordWrapper.java | 2 +- .../wrapper/SalaryAcctResultWrapper.java | 6 +- 16 files changed, 109 insertions(+), 39 deletions(-) diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 4ba839d57..4e5d4378e 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -7,7 +7,6 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO; diff --git a/src/com/engine/salary/component/WeaTableColumnGroup.java b/src/com/engine/salary/component/WeaTableColumnGroup.java index dac9a3569..0dcd305af 100644 --- a/src/com/engine/salary/component/WeaTableColumnGroup.java +++ b/src/com/engine/salary/component/WeaTableColumnGroup.java @@ -18,6 +18,11 @@ public class WeaTableColumnGroup extends WeaTableColumn { */ private Integer pattern; + /** + * 字段类型 + */ + private String dataType; + private List children; public WeaTableColumnGroup() { @@ -40,6 +45,13 @@ public class WeaTableColumnGroup extends WeaTableColumn { this.pattern = pattern; } + public WeaTableColumnGroup(String width, String text, String column, String lockStatus, Integer pattern, String dataType) { + super(width, text, column); + this.lockStatus = lockStatus; + this.pattern = pattern; + this.dataType = dataType; + } + public WeaTableColumnGroup(String width, String text, String column, List children) { super(width, text, column); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index f07aa7d36..11a44f311 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -67,13 +67,16 @@ public class SalaryAcctRecordBO { btnList.add(new WeaTableOperate("删除", null, "1")); } btnList.add(new WeaTableOperate("归档", null, "2")); + btnList.add(new WeaTableOperate("结转", null, "6")); } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); btnList.add(new WeaTableOperate("回算", null, "5")); + btnList.add(new WeaTableOperate("结转", null, "6")); } else { btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); + btnList.add(new WeaTableOperate("结转", null, "6")); } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 29cae5d4a..bfa7210cc 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -141,9 +141,9 @@ public class SalaryAcctResultBO { List childrenColumns = Lists.newArrayList(); for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns); @@ -152,18 +152,18 @@ public class SalaryAcctResultBO { // 没有分类的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } // 回算的薪资项目 for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) { if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } else { - columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern())); + columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType())); } } @@ -378,7 +378,8 @@ public class SalaryAcctResultBO { List salarySobBackItemPOS, List salaryBackItemPOS, Map salaryBackItemFormula, - Map formulaContentMap) { + Map formulaContentMap, + List lockItems) { // 员工信息字段 Map employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee); @@ -407,7 +408,7 @@ public class SalaryAcctResultBO { List groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(),Collections.emptyList()); if(CollectionUtils.isNotEmpty(groupItems)){ List items = groupItems.stream() - .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) + .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems)) .collect(Collectors.toList()); itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder() .salarySobItemGroupId(groupPO.getId()) @@ -420,7 +421,7 @@ public class SalaryAcctResultBO { List noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList()); if(CollectionUtils.isNotEmpty(noGroupItems)){ List items = noGroupItems.stream() - .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap)) + .map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems)) .collect(Collectors.toList()); itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder() .salarySobItemGroupId(0L) @@ -492,7 +493,8 @@ public class SalaryAcctResultBO { private static SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO convert2SalaryAcctResultDetailItemDTO(SalarySobItemPO salarySobItemPO, SalaryItemPO salaryItemPO, Map resultValueMap, - Map formulaContentMap) { + Map formulaContentMap, + List lockItems) { SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0)); String itemFormulaContent; @@ -512,6 +514,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()) .build(); } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java index 1929494a9..8fadd2670 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctResultDetailDTO.java @@ -71,6 +71,9 @@ public class SalaryAcctResultDetailDTO { // 保留小数位数 private Integer pattern; + + // 锁定状态 + private String lockStatus; } @Data diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java index 21922043c..487527d51 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java @@ -28,10 +28,10 @@ public class SalaryAcctResultBatchEditParam { @Builder @AllArgsConstructor @NoArgsConstructor - public class resultValue { + public static class resultValue { // 薪资核算人员id - private Long salaryAcctEmpId; + private Long id; // 薪资项目值 private List items; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java index 8eabde532..141b3a004 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -29,7 +29,7 @@ public class SalaryAcctResultBatchUpdateParam { private Long salaryItemId; // 薪资核算人员id - private List salaryAcctEmpIdList; + private List idList; //薪资项目值 private String value; diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 319552b78..9c3ba4f8c 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -209,7 +209,7 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); /** - * 鲁控数字-结账 + * 鲁控数字-结转 * @param salaryAcctRecordId */ void lkszJz(Long salaryAcctRecordId); diff --git a/src/com/engine/salary/service/SalaryAcctReportService.java b/src/com/engine/salary/service/SalaryAcctReportService.java index c4c1636db..6cf5caa12 100644 --- a/src/com/engine/salary/service/SalaryAcctReportService.java +++ b/src/com/engine/salary/service/SalaryAcctReportService.java @@ -21,6 +21,8 @@ public interface SalaryAcctReportService { */ void batchSave(Collection pos); + void lkszBatchSave(Collection pos); + /** * 根据核算记录删除 * @param salaryAcctRecordIds diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 871188360..ec8efb878 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -206,10 +206,10 @@ public interface SalaryAcctResultService { Boolean checkAuth(Long salaryAcctRecordId); /** - * 鲁控数字薪资核算结果批量更新 + * 薪资核算结果批量更新 * @param param */ - void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param); + void batchUpdate(SalaryAcctResultBatchUpdateParam param); /** * 鲁控数字薪资核算结果批量编辑 diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 1a189f762..ee596af21 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -906,7 +906,6 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe // 入库 getSalaryAcctResultService(user).batchSave(needInsertResultList); - getSalaryAcctReportService(user).batchSave(needInsertResultReportList); - + getSalaryAcctReportService(user).lkszBatchSave(needInsertResultReportList); } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java index 8371241fb..43b7160a8 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java @@ -62,6 +62,19 @@ public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctRe } } + @Override + public void lkszBatchSave(Collection pos) { + if (CollectionUtils.isNotEmpty(pos)) { + SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT); + //默认不显示,关闭状态 + if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) { + pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class); + } + List> partition = Lists.partition((List) pos, 100); + partition.forEach(getSalaryAcctResultReportMapper()::batchInsert); + } + } + @Override public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index f051dfefd..34148f289 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -54,6 +54,7 @@ import com.google.common.collect.Sets; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -301,9 +302,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId()); // 查询公式 Map formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId()); + List lockItems = byId.getLockSalaryItemIds() == null ? Collections.emptyList() : byId.getLockSalaryItemIds(); // 转换成薪资核算结果详情dto - return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap); + return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap, lockItems); } @Override @@ -1093,7 +1095,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } @Override - public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { + public void batchUpdate(SalaryAcctResultBatchUpdateParam param) { ValidUtil.doValidator(param); SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); @@ -1107,12 +1109,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套"); } // 获取需要更新的核算人员信息 - List salaryAcctEmployeePOList = Collections.emptyList(); - if (CollectionUtils.isEmpty(param.getSalaryAcctEmpIdList())) { + List salaryAcctEmployeePOList = new ArrayList<>(); + if (CollectionUtils.isEmpty(param.getIdList())) { // 没有选择核算人员,更新核算记录中所有人员 salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId())); } else { - salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getSalaryAcctEmpIdList())); + salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getIdList())); } if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) { @@ -1120,9 +1122,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 查询薪资核算结果 List resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId())); Map salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId); + List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); + Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); List needUpdateList = new ArrayList<>(); List needInsertList = new ArrayList<>(); Date now = new Date(); + List salaryAcctResultReportPOS = new ArrayList<>(); salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> { if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) { // 更新 @@ -1139,7 +1144,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .salaryAcctEmpId(salaryAcctEmployeePO.getId()) .employeeId(salaryAcctEmployeePO.getEmployeeId()) .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) - .resultValue(StringUtils.trim(param.getValue())) + .resultValue(param.getValue()) .originResultValue("") .creator(Long.valueOf(user.getUID())) .createTime(now) @@ -1148,16 +1153,47 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build()); } + + // 报表 + SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(param.getSalaryItemId()) + .salaryAcctRecordId(param.getSalaryAcctRecordId()) + .salaryAcctEmpId(salaryAcctEmployeePO.getId().toString()) + .employeeId(salaryAcctEmployeePO.getEmployeeId().toString()) + .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) + .resultValue(param.getValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId()); + if (dataCollectionEmployee != null) { + po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); + po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); + po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); + po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); + po.setLocationId(dataCollectionEmployee.getLocationId()); + } + salaryAcctResultReportPOS.add(po); }); + // 入库 if (CollectionUtils.isNotEmpty(needUpdateList)) { // 数据加密 encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class); List> partition = Lists.partition(needUpdateList, 100); partition.forEach(getSalaryAcctResultMapper()::batchUpdate); - } batchSave(needInsertList); + + // 报表入库前先删除 + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId()) ); + getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); + } } @@ -1175,7 +1211,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); // 需要更新数据的薪资核算人员id - List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getSalaryAcctEmpId).collect(Collectors.toList()); + List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getId).collect(Collectors.toList()); // 查询原来的薪资核算结果 List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); // 解密 @@ -1189,7 +1225,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); List salaryAcctResultReportPOS = new ArrayList<>(); param.getResultValueList().forEach(resultValue -> { - SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getSalaryAcctEmpId()); + SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getId()); salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); // 报表 salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); @@ -1198,9 +1234,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 删除原来的薪资核算结果 param.getResultValueList().stream().forEach(resultValue -> { List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); // 报表 - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getSalaryAcctEmpId()), saveItemIds); + getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); }); // 保存薪资核算结果 diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 45de6654d..027678e1d 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -159,7 +159,7 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } - // 结账 + // 结转 @GET @Path("/lkszJz") @Produces(MediaType.APPLICATION_JSON) @@ -457,13 +457,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param); } - //鲁控数字批量更新 + //批量更新 @POST - @Path("/acctresult/lkszBatchUpdate") + @Path("/acctresult/batchUpdate") @Produces(MediaType.APPLICATION_JSON) - public String lkszBatchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { + public String batchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchUpdate, param); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, param); } //鲁控数字批量编辑 diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 5cd43cecb..9bf20496d 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -260,7 +260,7 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord } /** - * 鲁控数字-结账 + * 鲁控数字-结转 * @param salaryAcctRecordId */ public void lkszJz(Long salaryAcctRecordId) { diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 59bbd3093..2bf31ef9c 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -258,11 +258,11 @@ public class SalaryAcctResultWrapper extends Service { } /** - * 鲁控数字薪资核算结果批量更新 + * 薪资核算结果批量更新 * @param param */ - public void lkszBatchUpdate(SalaryAcctResultBatchUpdateParam param) { - getSalaryAcctResultService(user).lkszBatchUpdate(param); + public void batchUpdate(SalaryAcctResultBatchUpdateParam param) { + getSalaryAcctResultService(user).batchUpdate(param); } /** From d6705e89177195c20886b7aa6c416517c301682c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 11 Dec 2023 13:09:20 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BA=A7=E5=93=81-=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/bo/SalaryAcctResultReportBO.java | 40 -------- .../salaryacct/bo/SalaryAcctRecordBO.java | 3 - .../param/SalaryAcctResultBatchEditParam.java | 40 -------- .../SalaryAcctResultBatchUpdateParam.java | 2 +- .../service/SalaryAcctRecordService.java | 6 -- .../service/SalaryAcctReportService.java | 2 - .../service/SalaryAcctResultService.java | 6 -- .../impl/SalaryAcctRecordServiceImpl.java | 83 ---------------- .../impl/SalaryAcctReportServiceImpl.java | 13 --- .../impl/SalaryAcctResultServiceImpl.java | 97 ------------------- .../salary/web/SalaryAcctController.java | 17 ---- .../wrapper/SalaryAcctRecordWrapper.java | 8 -- .../wrapper/SalaryAcctResultWrapper.java | 9 -- 13 files changed, 1 insertion(+), 325 deletions(-) delete mode 100644 src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java diff --git a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java index 485389860..06cb10a8a 100644 --- a/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java +++ b/src/com/engine/salary/entity/report/bo/SalaryAcctResultReportBO.java @@ -8,7 +8,6 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.math.NumberUtils; import java.util.*; @@ -63,45 +62,6 @@ public class SalaryAcctResultReportBO { .collect(Collectors.toList()); } - public static List lkszConvert2PO(List items, - SalaryAcctEmployeePO salaryAcctEmployee, - Long employeeId, Map emps) { - if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) { - return Collections.emptyList(); - } - Date now = new Date(); - return items.stream() - .map(e -> { - SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salarySobId(salaryAcctEmployee.getSalarySobId()) - .salaryItemId(e.getSalaryItemId()) - .salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId()) - .salaryAcctEmpId(salaryAcctEmployee.getId().toString()) - .employeeId(salaryAcctEmployee.getEmployeeId().toString()) - .taxAgentId(salaryAcctEmployee.getTaxAgentId()) - .resultValue(e.getResultValue()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - - DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployee.getEmployeeId()); - if (dataCollectionEmployee != null) { - po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); - po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); - po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); - po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); - po.setLocationId(dataCollectionEmployee.getLocationId()); - } - return po; - }) - .collect(Collectors.toList()); - } - - public static List convert2ReportPO(Collection temps, Map emps) { // Map longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId); if (CollectionUtils.isEmpty(temps)) { diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index dbf3b552e..53eb473b6 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -70,16 +70,13 @@ public class SalaryAcctRecordBO { btnList.add(new WeaTableOperate("删除", null, "1")); } btnList.add(new WeaTableOperate("归档", null, "2")); - btnList.add(new WeaTableOperate("结转", null, "6")); } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); btnList.add(new WeaTableOperate("回算", null, "5")); - btnList.add(new WeaTableOperate("结转", null, "6")); } else { btnList.add(new WeaTableOperate("查看", null, "3")); btnList.add(new WeaTableOperate("重新核算", null, "4")); - btnList.add(new WeaTableOperate("结转", null, "6")); } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java deleted file mode 100644 index 487527d51..000000000 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchEditParam.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.engine.salary.entity.salaryacct.param; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @ClassName SalaryAcctResultBatchUpdateParam - * @author Harryxzy - * @date 2023/12/4 13:48 - * @description 鲁控数字批量编辑参数 - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class SalaryAcctResultBatchEditParam { - - private Long salaryAcctRecordId; - - private List resultValueList; - - - @Data - @Builder - @AllArgsConstructor - @NoArgsConstructor - public static class resultValue { - - // 薪资核算人员id - private Long id; - - // 薪资项目值 - private List items; - } - -} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java index 141b3a004..89c06ad5e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultBatchUpdateParam.java @@ -12,7 +12,7 @@ import java.util.List; * @ClassName SalaryAcctResultBatchUpdateParam * @author Harryxzy * @date 2023/12/4 13:48 - * @description 鲁控数字批量更新参数 + * @description 批量更新参数 */ @Data @Builder diff --git a/src/com/engine/salary/service/SalaryAcctRecordService.java b/src/com/engine/salary/service/SalaryAcctRecordService.java index 9c3ba4f8c..1ba3419bf 100644 --- a/src/com/engine/salary/service/SalaryAcctRecordService.java +++ b/src/com/engine/salary/service/SalaryAcctRecordService.java @@ -207,10 +207,4 @@ public interface SalaryAcctRecordService { List listSome(SalaryAcctRecordPO po); - - /** - * 鲁控数字-结转 - * @param salaryAcctRecordId - */ - void lkszJz(Long salaryAcctRecordId); } diff --git a/src/com/engine/salary/service/SalaryAcctReportService.java b/src/com/engine/salary/service/SalaryAcctReportService.java index 6cf5caa12..c4c1636db 100644 --- a/src/com/engine/salary/service/SalaryAcctReportService.java +++ b/src/com/engine/salary/service/SalaryAcctReportService.java @@ -21,8 +21,6 @@ public interface SalaryAcctReportService { */ void batchSave(Collection pos); - void lkszBatchSave(Collection pos); - /** * 根据核算记录删除 * @param salaryAcctRecordIds diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index ec8efb878..0090f8330 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -210,10 +210,4 @@ public interface SalaryAcctResultService { * @param param */ void batchUpdate(SalaryAcctResultBatchUpdateParam param); - - /** - * 鲁控数字薪资核算结果批量编辑 - * @param param - */ - void lkszBatchEdit(SalaryAcctResultBatchEditParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index ee596af21..d6924e489 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -825,87 +825,4 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe public List listSome(SalaryAcctRecordPO po) { return getSalaryAcctRecordMapper().listSome(po); } - - @Override - public void lkszJz(Long salaryAcctRecordId) { - SalaryAcctRecordPO salaryAcctRecordPO = getById(salaryAcctRecordId); - if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { - throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); - } - YearMonth salaryMonth = SalaryDateUtil.toYearMonth(SalaryDateUtil.dateToLocalDate(salaryAcctRecordPO.getSalaryMonth()).plusMonths(1)); - // 创建下一个月的薪资核算记录 - Long newSalaryAcctRecordId = save(SalaryAcctRecordSaveParam.builder().salarySobId(salaryAcctRecordPO.getSalarySobId()).salaryMonth(salaryMonth).build()); - // 查询下个月的薪资核算人员 - List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(newSalaryAcctRecordId); - List acctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); - // 获取原来的薪资核算结果 - List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); - List salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList()); - List resultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(salaryAcctRecordId), salarySobItemIds); - // 过滤掉新的核算记录中不存在的人 - resultPOS = resultPOS.stream().filter(result -> acctEmpIds.contains(result.getEmployeeId())).collect(Collectors.toList()); - Map> resultMap = SalaryEntityUtil.group2Map(resultPOS, SalaryAcctResultPO::getEmployeeId); - // 查询人员信息,供报表使用 - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - // 需要保存的核算结果 - List needInsertResultList = new ArrayList<>(); - // 报表 - List needInsertResultReportList = new ArrayList<>(); - Date now = new Date(); - Long uid = Long.valueOf(user.getUID()); - salaryAcctEmployeePOList.stream().forEach(acctEmp -> { - List oldResultList = resultMap.get(acctEmp.getEmployeeId()); - oldResultList.stream().forEach(oldResult -> { - // 薪资核算结果 - needInsertResultList.add(SalaryAcctResultPO.builder() - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(oldResult.getSalaryItemId()) - .salaryAcctRecordId(newSalaryAcctRecordId) - .salaryAcctEmpId(acctEmp.getId()) - .employeeId(acctEmp.getEmployeeId()) - .taxAgentId(acctEmp.getTaxAgentId()) - .resultValue(StringUtils.trim(oldResult.getResultValue())) - .originResultValue(oldResult.getOriginResultValue()) - .creator(uid) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()); - - // 报表结果 - SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(oldResult.getSalaryItemId()) - .salaryAcctRecordId(newSalaryAcctRecordId) - .salaryAcctEmpId(acctEmp.getId().toString()) - .employeeId(acctEmp.getEmployeeId().toString()) - .taxAgentId(acctEmp.getTaxAgentId()) - .resultValue(StringUtils.trim(oldResult.getResultValue())) - .creator(uid) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - - DataCollectionEmployee dataCollectionEmployee = emps.get(acctEmp.getEmployeeId()); - if (dataCollectionEmployee != null) { - po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); - po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); - po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); - po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); - po.setLocationId(dataCollectionEmployee.getLocationId()); - } - needInsertResultReportList.add(po); - }); - }); - - // 入库 - getSalaryAcctResultService(user).batchSave(needInsertResultList); - getSalaryAcctReportService(user).lkszBatchSave(needInsertResultReportList); - } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java index 43b7160a8..8371241fb 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctReportServiceImpl.java @@ -62,19 +62,6 @@ public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctRe } } - @Override - public void lkszBatchSave(Collection pos) { - if (CollectionUtils.isNotEmpty(pos)) { - SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT); - //默认不显示,关闭状态 - if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) { - pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class); - } - List> partition = Lists.partition((List) pos, 100); - partition.forEach(getSalaryAcctResultReportMapper()::batchInsert); - } - } - @Override public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 34148f289..5369fea9e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1196,101 +1196,4 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } - - @Override - public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (ObjectUtils.isEmpty(salaryAcctRecordPO)) { - throw new SalaryRunTimeException("薪资核算结果不存在或已被删除"); - } - - List salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); - Map salaryAcctEmployeePOMap = SalaryEntityUtil.convert2Map(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId); - - // 需要更新数据的薪资核算人员id - List updateAcctEmpIds = param.getResultValueList().stream().map(SalaryAcctResultBatchEditParam.resultValue::getId).collect(Collectors.toList()); - // 查询原来的薪资核算结果 - List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(updateAcctEmpIds).build()); - // 解密 - encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); - // 保存参数转换成薪资核算结果po - List salaryAcctResultPOS = new ArrayList<>(); - // 获取薪资项目回算前的值 - Map salaryAcctResultOldPOMap = salaryAcctResultPOSOld.stream() - .collect(Collectors.groupingBy(p -> p.getSalaryAcctEmpId() + "-" + p.getSalaryItemId(), - Collectors.collectingAndThen(Collectors.maxBy(Comparator.comparing(SalaryAcctResultPO::getId)), - s -> s.map(SalaryAcctResultPO::getOriginResultValue).orElse("")))); - List salaryAcctResultReportPOS = new ArrayList<>(); - param.getResultValueList().forEach(resultValue -> { - SalaryAcctEmployeePO salaryAcctEmployeePO = salaryAcctEmployeePOMap.get(resultValue.getId()); - salaryAcctResultPOS.addAll(SalaryAcctResultBO.batchEditConvert2PO(salaryAcctResultOldPOMap, resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID())); - // 报表 - salaryAcctResultReportPOS.addAll(SalaryAcctResultReportBO.lkszConvert2PO(resultValue.getItems(), salaryAcctEmployeePO, (long) user.getUID(), emps)); - }); - - // 删除原来的薪资核算结果 - param.getResultValueList().stream().forEach(resultValue -> { - List saveItemIds = resultValue.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); - // 报表 - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(resultValue.getId()), saveItemIds); - }); - - // 保存薪资核算结果 - if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { - // 加密 - encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - List> partition = Lists.partition(salaryAcctResultPOS, 100); - partition.forEach(getSalaryAcctResultMapper()::batchInsert); - } - - //报表 - if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - } - - - public void temp(SalaryAcctResultSaveParam saveParam){ - List dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport(); - Map emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId); - - // 查询薪资核算人员 - SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(saveParam.getSalaryAcctEmpId()); - if (Objects.isNull(salaryAcctEmployeePO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); - } - // 查询原来的薪资核算结果 - List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); - // 解密 - encryptUtil.decryptList(salaryAcctResultPOSOld, SalaryAcctResultPO.class); - // 保存参数转换成薪资核算结果po - List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(salaryAcctResultPOSOld, saveParam, salaryAcctEmployeePO, (long) user.getUID()); - SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); - - // 删除原来的薪资核算结果 - List saveItemIds = saveParam.getItems().stream().map(SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam::getSalaryItemId).collect(Collectors.toList()); - deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); - // 保存薪资核算结果 - if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { - // 加密 - encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - List> partition = Lists.partition(salaryAcctResultPOS, 100); - partition.forEach(getSalaryAcctResultMapper()::batchInsert); - } - //报表 todo - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); - List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); - if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - - - // 存储薪资核算结果数据来源日志 - salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId()); - saveSalaryAcctResultLog(salaryAcctResultPOSOld, salaryAcctResultPOS); - } } \ No newline at end of file diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index c6032686c..4a8088761 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -159,14 +159,6 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId()); } - // 结转 - @GET - @Path("/lkszJz") - @Produces(MediaType.APPLICATION_JSON) - public String lkszJz(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::lkszJz, id); - } /* ********************************薪资核算记录相关 end*********************************/ @@ -466,15 +458,6 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, param); } - //鲁控数字批量编辑 - @POST - @Path("/acctresult/lkszBatchEdit") - @Produces(MediaType.APPLICATION_JSON) - public String lkszBatchEdit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchEditParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lkszBatchEdit, param); - } - //薪资核算 @POST @Path("/acctresult/accounting") diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 95b461e7d..b3d7d06e3 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -266,12 +266,4 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord public void backCalculate(Long salaryAcctRecordId){ getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId); } - - /** - * 鲁控数字-结转 - * @param salaryAcctRecordId - */ - public void lkszJz(Long salaryAcctRecordId) { - getSalaryAcctRecordService(user).lkszJz(salaryAcctRecordId); - } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 2bf31ef9c..5c1347343 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -265,15 +265,6 @@ public class SalaryAcctResultWrapper extends Service { getSalaryAcctResultService(user).batchUpdate(param); } - /** - * 鲁控数字薪资核算结果批量编辑 - * @param param - */ - public void lkszBatchEdit(SalaryAcctResultBatchEditParam param) { - getSalaryAcctResultService(user).lkszBatchEdit(param); - } - - /** * 薪资核算-校验 *