diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index 7308f745a..14ce42d15 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -275,5 +275,14 @@ public interface SIAccountService { * 将福利台账-补差模板导入的数据更新到数据库 */ Map importBalanceInsuranceDetail(InsuranceAcctImportParam importParam); + + + /** + * 合计行 + * + * @param queryParam + * @return + */ + Map listCommonSum(InsuranceAccountDetailParam queryParam); } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 6e0c439e5..47d8d7e4c 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -77,7 +77,6 @@ import weaver.hrm.User; import java.io.InputStream; import java.math.BigDecimal; -import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -2834,7 +2833,79 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } return apidatas; } - + + @Override + public Map listCommonSum(InsuranceAccountDetailParam queryParam) { + + Long employeeId = (long) user.getUID(); + Map datas = new HashMap<>(); + + // 正常缴纳列表 + queryParam.setPageSize(10000000); + PageInfo pageInfo = getSiAccountBiz(user).listCommonPage(queryParam); + List insuranceAccountDetailPOS = pageInfo.getList(); + // 数据组装 + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + Map maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b); + // 获取需要统计的列 + String[] keys = {"Base", "Com", "Sum", "Per", "total"}; + List numKeys = new ArrayList<>(); + for(String key : maxSizeRecord.keySet()){ + if(StringUtils.containsAny(key,keys)){ + numKeys.add(key); + } + } + Map sumRow = new HashMap<>(); + for(String numKey : numKeys){ + BigDecimal value = new BigDecimal(0); + for(Map record : records){ + value = value.add( new BigDecimal(record.get(numKey) == null ? "0" : record.get(numKey).toString()) ); + } + sumRow.put(numKey,value); + } + datas.put("sumRow", sumRow); + return datas; +// records.stream().collect(Collectors.groupingBy(record -> record.getk)) +// +// +// .collect(Collectors.groupingBy(Main::getMapKey, Collectors.counting())); +// records.stream().flatMap(Collectors.toList()); +// +// +// // 查询薪资核算人员 +// List salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByResultQueryParam(queryParam); +// +// if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { +// return null; +// } +// // 查询薪资核算记录 +// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId()); +// if (Objects.isNull(salaryAcctRecordPO)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); +// } +// // 查询薪资核算所用薪资账套的薪资项目 +// List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); +// Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); +// List salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds); +// // 查询薪资核算结果 +// Set salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getId); +// List salaryAcctResultPOS = listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); +// +// Map map = new HashMap<>(); +// Map> acctResultMap = SalaryEntityUtil.group2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId); +// salaryItemPOS.stream().filter(item -> SalaryDataTypeEnum.NUMBER.getValue().equals(item.getDataType())).forEach(item -> { +// BigDecimal sum = Optional.ofNullable(acctResultMap.get(item.getId())) +// .orElse(new ArrayList<>()) +// .stream() +// .map(SalaryAcctResultPO::getResultValue) +// .filter(NumberUtils::isCreatable) +// .map(BigDecimal::new) +// .reduce(BigDecimal.ZERO, BigDecimal::add); +// map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap())); +// }); +// return null; + } + /** * 检查补差数据中的福利缴纳费用相关福利类别,是否在正常缴纳中有设置缴纳 * @param po diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 2710ac14e..2ea27a93a 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -97,6 +97,25 @@ public class SIAccountController { return new ResponseResult>(user).run(getService(user)::listCommonPage, insuranceAccountDetailParam); } + + /** + * 获取正常缴纳列表合计行 + * + * @param request + * @param response + * @param insuranceAccountDetailParam + * @return + */ + @POST + @Path("/detail/common/list/sum") + @Produces(MediaType.APPLICATION_JSON) + public String commonListSum(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::listCommonSum, insuranceAccountDetailParam); + } + + /** * 根据姓名获取正常缴纳列表 *