diff --git a/src/com/engine/salary/service/SIAccountService.java b/src/com/engine/salary/service/SIAccountService.java index 14ce42d15..8a9a97497 100644 --- a/src/com/engine/salary/service/SIAccountService.java +++ b/src/com/engine/salary/service/SIAccountService.java @@ -278,11 +278,29 @@ public interface SIAccountService { /** - * 合计行 + * 正常缴纳合计行 * * @param queryParam * @return */ Map listCommonSum(InsuranceAccountDetailParam queryParam); + + /** + * 补缴合计行 + * @param insuranceAccountDetailParam + */ + Map listSupplementarySum(InsuranceAccountDetailParam insuranceAccountDetailParam); + + /** + * 退差合计列 + * @param insuranceAccountDetailParam + */ + Map listRecessionSum(InsuranceAccountDetailParam insuranceAccountDetailParam); + + /** + * 补差合计列 + * @param insuranceAccountDetailParam + */ + Map listBalanceSum(InsuranceAccountDetailParam insuranceAccountDetailParam); } diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 9123d1974..e5e6f8672 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -2834,6 +2834,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return apidatas; } + @Override public Map listCommonSum(InsuranceAccountDetailParam queryParam) { @@ -2846,13 +2847,128 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { 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); +// Map maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b); + Map sumRow = countSum(records); + datas.put("sumRow", sumRow); + return datas; + } + + @Override + public Map listSupplementarySum(InsuranceAccountDetailParam queryParam) { + Long employeeId = (long) user.getUID(); + Map datas = new HashMap<>(); + queryParam.setPageSize(10000000); + + //过滤出福利档案基础信息表中runStatus为正在缴纳和待减员的人员 + List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); + List canAccountIds = baseInfoPOList.stream() + .filter(f->f.getPaymentOrganization().toString().equals(queryParam.getPaymentOrganization()) + && (f.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue()))) + .map(InsuranceArchivesBaseInfoPO::getEmployeeId) + .collect(Collectors.toList()); + queryParam.setEmployeeIds(canAccountIds); + + //补缴缴纳列表 + queryParam.setPaymentStatus(PaymentStatusEnum.REPAIR.getValue()); + + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + + List list = getInsuranceAccountDetailMapper().list(queryParam); + encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); + //数据组装 + List> records = getService(user).buildCommonRecords(list, employeeId); +// Map maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b); + Map sumRow = countSum(records); + datas.put("sumRow", sumRow); + return datas; + } + + @Override + public Map listRecessionSum(InsuranceAccountDetailParam queryParam) { + Long employeeId = (long) user.getUID(); + Map datas = new HashMap<>(); + queryParam.setPageSize(10000000); + // 分权逻辑 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgents)) { + //防止普通用户查询 + queryParam.setTaxAgents(Collections.singletonList(-1L)); + } else { + queryParam.setTaxAgents(taxAgents); + } + } + + //退差列表 + queryParam.setPaymentStatus(PaymentStatusEnum.RECESSION.getValue()); + + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + + List list = getInsuranceAccountDetailMapper().list(queryParam); + encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); + //数据组装 + List> records = getService(user).buildCommonRecords(list, employeeId); + Map sumRow = countSum(records); + datas.put("sumRow", sumRow); + return datas; + } + + @Override + public Map listBalanceSum(InsuranceAccountDetailParam queryParam) { + Long employeeId = (long) user.getUID(); + Map datas = new HashMap<>(); + queryParam.setPageSize(10000000); + // 分权逻辑 + Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgents)) { + //防止普通用户查询 + queryParam.setTaxAgents(Collections.singletonList(-1L)); + } else { + queryParam.setTaxAgents(taxAgents); + } + } + + //补差列表 + queryParam.setPaymentStatus(PaymentStatusEnum.BALANCE.getValue()); + + //排序配置 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + + SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List list = getInsuranceAccountDetailMapper().list(queryParam); + encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); + //数据组装 + List> records = getService(user).buildCommonRecords(list, employeeId); + Map sumRow = countSum(records); + datas.put("sumRow", sumRow); + return datas; + } + + public Map countSum(List> records ){ // 获取需要统计的列 String[] keys = {"Base", "Com", "Sum", "Per", "total"}; - List numKeys = new ArrayList<>(); - for(String key : maxSizeRecord.keySet()){ - if(StringUtils.containsAny(key,keys)){ - numKeys.add(key); + Set numKeys = new HashSet<>(); +// for(String key : maxSizeRecord.keySet()){ +// if(StringUtils.containsAny(key,keys)){ +// numKeys.add(key); +// } +// } + for(int i =0; i < records.size(); i++){ + Map record = records.get(i); + for(String key : record.keySet()){ + if(StringUtils.containsAny(key,keys)){ + numKeys.add(key); + } } } Map sumRow = new HashMap<>(); @@ -2869,10 +2985,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } sumRow.put(numKey,value); } - datas.put("sumRow", sumRow); - return datas; + return sumRow; } + /** * 检查补差数据中的福利缴纳费用相关福利类别,是否在正常缴纳中有设置缴纳 * @param po diff --git a/src/com/engine/salary/web/SIAccountController.java b/src/com/engine/salary/web/SIAccountController.java index 2ea27a93a..b9978755f 100644 --- a/src/com/engine/salary/web/SIAccountController.java +++ b/src/com/engine/salary/web/SIAccountController.java @@ -150,6 +150,23 @@ public class SIAccountController { return new ResponseResult>(user).run(getService(user)::listSupplementaryPage, insuranceAccountDetailParam); } + /** + * 获取补缴缴纳列表合计行 + * + * @param request + * @param response + * @param insuranceAccountDetailParam + * @return + */ + @POST + @Path("/detail/supplementary/list/sum") + @Produces(MediaType.APPLICATION_JSON) + public String listSupplementarySum(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::listSupplementarySum, insuranceAccountDetailParam); + } + /** * 根据姓名获取补缴缴纳列表 * @@ -677,6 +694,24 @@ public class SIAccountController { return new ResponseResult>(user).run(getService(user)::listRecessionPage, insuranceAccountDetailParam); } + + /** + * 获取退差列表合计列 + * + * @param request + * @param response + * @param insuranceAccountDetailParam + * @return + */ + @POST + @Path("/detail/recession/list/sum") + @Produces(MediaType.APPLICATION_JSON) + public String listRecessionSum(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::listRecessionSum, insuranceAccountDetailParam); + } + /** * 通过id获取InsuranceAccountDetailPO中的社保、公积金、其他福利个人和公司缴纳数据 * @param request @@ -896,6 +931,23 @@ public class SIAccountController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getService(user)::listBalancePage, insuranceAccountDetailParam); } + + /** + * 获取补差列表合计列 + * + * @param request + * @param response + * @param insuranceAccountDetailParam + * @return + */ + @POST + @Path("/detail/balance/list/sum") + @Produces(MediaType.APPLICATION_JSON) + public String listBalanceSum(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getService(user)::listBalanceSum, insuranceAccountDetailParam); + } // **********************************补差 end*********************************/ /**