From 291cd426fec77d3de7f6f8f2a9c43dbcd846f953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 17 Feb 2025 15:54:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=BC=8F=E5=8F=98=E9=87=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=8E=B7=E5=8F=96=E4=B8=8A=E6=9C=88=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salaryacct/bo/CalculateFormulaVarBO.java | 31 ++++++++++++++++++- .../SalaryFormulaReferenceEnum.java | 1 + .../service/SalaryAcctResultService.java | 18 +++++++++-- .../salary/service/impl/PushServiceImpl.java | 4 +-- .../service/impl/RemoteExcelServiceImpl.java | 3 ++ .../impl/SalaryAcctCalculateServiceImpl.java | 7 ++++- .../impl/SalaryAcctResultServiceImpl.java | 19 +++++++++++- 7 files changed, 76 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index f14966bc5..806ceadd6 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -101,6 +101,11 @@ public class CalculateFormulaVarBO { */ private List> variableArchiveList; + /** + * 上月核算结果 + */ + List lastMonthResultPOS; + public CalculateFormulaVarBO(List simpleEmployees, List salaryArchiveData, List addUpSituationPOS, @@ -109,7 +114,8 @@ public class CalculateFormulaVarBO { List> welfareData, List attendQuoteDataDTOS, List salaryAcctResultPOS, - List> variableArchiveList) { + List> variableArchiveList, + List lastMonthResultPOS) { this.simpleEmployees = simpleEmployees; this.salaryArchiveData = salaryArchiveData; this.addUpSituationPOS = addUpSituationPOS; @@ -119,6 +125,7 @@ public class CalculateFormulaVarBO { this.attendQuoteDataDTOS = attendQuoteDataDTOS; this.salaryAcctResultPOS = salaryAcctResultPOS; this.variableArchiveList = variableArchiveList; + this.lastMonthResultPOS = lastMonthResultPOS; } /** @@ -147,7 +154,10 @@ public class CalculateFormulaVarBO { handleAttendQuoteData(salaryAcctCalculateBO, resultMap); //处理核算人员信息 handleSalaryAcctEmployee(salaryAcctCalculateBO, resultMap); + //处理人员信息 handleSimpleEmployees(resultMap); + //处理上月薪资核算结果 + handleLastMonthResult(salaryAcctCalculateBO, resultMap); return resultMap; } @@ -231,6 +241,25 @@ public class CalculateFormulaVarBO { }); } + private void handleLastMonthResult(SalaryAcctCalculateBO salaryAcctCalculateBO, Map> resultMap) { + // key:薪资项目的id、value:薪资项目的code + Map salaryItemCodeMap = SalaryEntityUtil.convert2Map(salaryAcctCalculateBO.getSalaryItemPOS(), SalaryItemPO::getId, SalaryItemPO::getCode); + // key:employeeId_taxAgentId、value:薪资核算结果集合 + Map> salaryAcctResultMap = SalaryEntityUtil.group2Map(lastMonthResultPOS, + salaryAcctResultPO -> salaryAcctResultPO.getEmployeeId() + "_" + salaryAcctResultPO.getTaxAgentId()); + // 填充到返回结果集中 + salaryAcctResultMap.forEach((key, salaryAcctResultPOS) -> { + List formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList()); + formulaVarValues.addAll(salaryAcctResultPOS.stream() + .map(salaryAcctResultPO -> { + String fieldId = SalaryFormulaReferenceEnum.LAST_MONTH_CALC.getValue() + + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + + salaryItemCodeMap.getOrDefault(salaryAcctResultPO.getSalaryItemId(), StringUtils.EMPTY); + return new FormulaVarValue().setFieldId(fieldId).setFieldValue(salaryAcctResultPO.getResultValue()); + }) + .collect(Collectors.toList())); + }); + } /** * 处理薪资档案(会涉及调薪计薪规则)+处理核算日期 diff --git a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java index da3b76213..eafb0e32e 100644 --- a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java +++ b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java @@ -17,6 +17,7 @@ public enum SalaryFormulaReferenceEnum implements BaseEnum { SALARY_ITEM("salaryItem", "薪资项目", 84960), // SALARY_ITEM_OF_HISTORY("salaryItemOfHistory", "历史台账薪资项目", 85364), + LAST_MONTH_CALC("lastMonthCalc", "上月核算", 257728), EMPLOYEE_INFO("employeeInfo", "员工基本信息", 85366), SALARY_ARCHIVES("salaryArchives", "薪资档案", 85368), ATTEND("attend", "考勤引用", 85367), diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index ea6c2fe30..ac7309950 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.util.page.PageInfo; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; @@ -159,6 +160,7 @@ public interface SalaryAcctResultService { /** * 锁定单元格 + * * @param param */ void lock(SalaryAcctResultLockParam param); @@ -179,8 +181,8 @@ public interface SalaryAcctResultService { void batchUpdateOriginResultValue(List salaryAcctResultValues); /** - * @description 薪资回算 * @return void + * @description 薪资回算 * @author Harryxzy * @date 2022/11/24 20:26 */ @@ -196,8 +198,8 @@ public interface SalaryAcctResultService { List listBySalaryAcctRecordIdsAndSalaryItemIds(Collection salaryAcctRecordIds, Collection salaryItemIds); /** - * @description 根据薪资核算人员id、薪资项目id获取薪资核算结果 * @return List + * @description 根据薪资核算人员id、薪资项目id获取薪资核算结果 * @author Harryxzy * @date 2022/12/26 22:24 */ @@ -207,6 +209,7 @@ public interface SalaryAcctResultService { /** * 检查当前用户是否有查看权限 + * * @param salaryAcctRecordId * @return */ @@ -214,7 +217,18 @@ public interface SalaryAcctResultService { /** * 薪资核算结果批量更新 + * * @param param */ void batchUpdate(SalaryAcctResultBatchUpdateParam param); + + /** + * 查询指定账套月份的数据 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ + List listBySobSalaryMonth(Date salaryMonth, Long salarySobId, List employeeIds); } diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index 9eabd3c7b..214eae1a3 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -289,7 +289,7 @@ public class PushServiceImpl extends Service implements PushService { List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>()); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(),new ArrayList<>()); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); @@ -403,7 +403,7 @@ public class PushServiceImpl extends Service implements PushService { List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>()); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(), new ArrayList<>()); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); List pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build()); diff --git a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java index e40399497..8a447abba 100644 --- a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java @@ -143,6 +143,7 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic if (referenceEnum != null) { switch (referenceEnum) { case SALARY_ITEM: + case LAST_MONTH_CALC: case ISSUED: vars = salaryItem2FormulaVar(referenceEnum, extendParam); break; @@ -241,6 +242,8 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic if (ReferenceTypeEnum.FORMULA.equals(referenceTypeEnum)) { result.put(SalaryFormulaReferenceEnum.SALARY_ITEM.getDefaultLabel(), salaryItem2FormulaVar(SalaryFormulaReferenceEnum.SALARY_ITEM, null)); + result.put(SalaryFormulaReferenceEnum.LAST_MONTH_CALC.getDefaultLabel(), + salaryItem2FormulaVar(SalaryFormulaReferenceEnum.LAST_MONTH_CALC, null)); result.put(SalaryFormulaReferenceEnum.ISSUED.getDefaultLabel(), salaryItem2FormulaVar(SalaryFormulaReferenceEnum.ISSUED, null)); result.put(SalaryFormulaReferenceEnum.SALARY_ARCHIVES.getDefaultLabel(), diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 8b30ec9bc..81fae4808 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -27,6 +27,7 @@ import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.formlua.entity.standard.ExcelResult; import com.engine.salary.service.*; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -189,9 +190,13 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc List otherSalaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); Map> otherSalaryAcctEmployeePOMap = SalaryEntityUtil.group2Map(otherSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); sw.stop(); + // 查询上个薪资所属月核算人员薪资数据 + sw.start("查询上个薪资所属月核算人员薪资数据"); + List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); + sw.stop(); // 10、转换成公式编辑器中的变量 sw.start("转换成公式编辑器中的变量"); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); sw.stop(); sw.start("数据结构准备"); diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index d2784f8cb..aacf3381f 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; @@ -192,6 +193,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe private VariableItemService getVariableItemService(User user) { return ServiceUtil.getService(VariableItemServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); } @@ -917,7 +919,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true); //更新薪资核算记录最后操作日期 - getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(),new Date()); + getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date()); stopWatch.stop(); log.info(stopWatch.prettyPrint()); @@ -1244,4 +1246,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } + + @Override + public List listBySobSalaryMonth(Date salaryMonth, Long salarySobId, List employeeIds) { + List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listSome(SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryMonth).build()); + List recordIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getId, Collectors.toList()); + + SalaryAcctResultPO resultParam = SalaryAcctResultPO.builder().salaryAcctRecordIds(recordIds).build(); + if(CollUtil.isNotEmpty(employeeIds)){ + resultParam.setEmployeeIds(employeeIds); + } + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(resultParam); + + encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + return salaryAcctResultPOS; + } } \ No newline at end of file