From 857475347ef9fa01c877cde52121450aabadd569 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 21 Apr 2025 09:30:30 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=8E=E4=B9=8B=E9=AB=98=E8=96=AA=E9=85=AC?= =?UTF-8?q?=E4=BA=8C=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SalaryAcctResultService.java | 7 +++ .../impl/SalaryAcctResultServiceImpl.java | 54 +++++++++++++++++++ .../salary/web/SalarySobController.java | 15 ++++++ .../salary/wrapper/SalaryApprovalWrapper.java | 37 ++++++++----- 4 files changed, 100 insertions(+), 13 deletions(-) diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index a32e35aa4..f5461aca6 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -235,4 +235,11 @@ public interface SalaryAcctResultService { void generateMzgCpjsgzcl(MzqQueryParam param); void generateMzgCpjsgzdj(MzqQueryParam param); + + /** + * 美之高 - 统计需要渲染到流程字段中的值 + * @param param + * @return + */ + Map sumSalaryApprovalFields(SalaryAcctResultQueryParam param); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 2fcfd7046..1f213f8b3 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -1738,4 +1738,58 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return resultList; } + /** + * 美之高 - 统计需要渲染到流程字段中的值 + * @param param + * @return + */ + @Override + public Map sumSalaryApprovalFields(SalaryAcctResultQueryParam param) { + Map resultMap = new HashMap<>(); + // 查询核算记录 + if (param.getSalaryAcctRecordId() == null) { + throw new SalaryRunTimeException("参数错误!"); + } + SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (salaryAcctRecord == null) { + throw new SalaryRunTimeException("核算记录不存在或已被删除!"); + } + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId()); + if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { + return resultMap; + } + // 获取账套信息 + SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecord.getSalarySobId()); + if (salarySobPO != null) { + resultMap.put("salarySobName", salarySobPO.getName()); + } + resultMap.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(salaryAcctRecord.getSalaryMonth())); + List salaryAcctEmpIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + BaseBean baseBean = new BaseBean(); + String needSumFields = baseBean.getPropValue("mzgSalaryReport", "need_sum_fields"); + List fieldList = Arrays.stream(needSumFields.split(",")).collect(Collectors.toList()); + Map fieldItemMap = new HashMap<>(); + for (String field : fieldList) { + String fieldItemIdStr = baseBean.getPropValue("mzgSalaryReport", field + "_item_id"); + Long salaryItemId = NumberUtils.isCreatable(fieldItemIdStr) ? Long.valueOf(fieldItemIdStr) : 0L; + fieldItemMap.put(field, salaryItemId); + } + List salaryItemIds = fieldItemMap.values().stream().collect(Collectors.toList()); + // 查询薪资核算结果 + List acctResultList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds); + Map> acctResultMap = SalaryEntityUtil.group2Map(acctResultList, SalaryAcctResultPO::getSalaryItemId); + for (Map.Entry entry : fieldItemMap.entrySet()) { + Long salaryItemId = entry.getValue(); + List singeItemResultList = acctResultMap.get(salaryItemId); + if (CollectionUtils.isNotEmpty(singeItemResultList)) { + BigDecimal sumValue = singeItemResultList.stream() + .map(SalaryAcctResultPO::getResultValue) + .filter(NumberUtils::isCreatable) + .map(BigDecimal::new) + .reduce(new BigDecimal("0"), BigDecimal::add); + resultMap.put(entry.getKey(), sumValue.toPlainString()); + } + } + return resultMap; + } } \ No newline at end of file diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 5882004c9..50da5a073 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -658,6 +658,21 @@ public class SalarySobController { return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalAcctResult, param); } + /** + * 美之高 - 统计需要渲染到流程字段中的值 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/salaryApproval/fields/sum") + @Produces(MediaType.APPLICATION_JSON) + public String sumSalaryApprovalFields(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::sumSalaryApprovalFields, param); + } + /** * 保存审批流程id * @param request diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java index 81c6b10ce..edd5a5526 100644 --- a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java @@ -19,7 +19,6 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; -import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; @@ -27,15 +26,13 @@ import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; - -import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS; +import java.util.stream.Collectors; /** * 薪资账套的薪资审批 @@ -118,6 +115,8 @@ public class SalaryApprovalWrapper extends Service { List columns = Lists.newArrayList(); // 查询薪资账套的员工信息字段 List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + // 只要展示姓名字段 + salarySobEmpFieldPOS = salarySobEmpFieldPOS.stream().filter(salarySobEmpFieldPO -> salarySobEmpFieldPO.getFieldCode().equals("userName")).collect(Collectors.toList()); List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); // 获取薪资项目信息 List salaryItemPOS = getSalaryItemService(user).listAll(); @@ -140,15 +139,19 @@ public class SalaryApprovalWrapper extends Service { } // 获取固定列头数 - SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS); - if (salaryAcctFixedColumns != null) { - int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3; - if (fixedNum == 0) { - fixedNum = 3; - } - for (int i = 0; i < fixedNum; i++) { - columns.get(i).setFixed("left"); - } + // SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS); + // if (salaryAcctFixedColumns != null) { + // int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3; + // if (fixedNum == 0) { + // fixedNum = 3; + // } + // for (int i = 0; i < fixedNum; i++) { + // columns.get(i).setFixed("left"); + // } + // } + + for (int i = 0; i < 1; i++) { + columns.get(i).setFixed("left"); } Map datas = new HashMap<>(); @@ -165,4 +168,12 @@ public class SalaryApprovalWrapper extends Service { public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) { getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam); } + + /** + * 美之高 - 统计需要渲染到流程字段中的值 + * @param param + */ + public Map sumSalaryApprovalFields(SalaryAcctResultQueryParam param) { + return getSalaryAcctResultService(user).sumSalaryApprovalFields(param); + } }