diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 8f0ce99fa..44687ab7d 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -71,6 +71,17 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { private Set salaryMonths; + // 艾志提交状态 + private String submitStatus; + + // 艾志审批状态 + private String approveStatus; + + // 艾志合同签署类型编号 + private List htqslxList; + + // 艾志人事代理公司编号 + private List rsdlgsList; private Collection salaryAcctRecordIds; private Collection salarySobIds; diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 5f5749ac7..95f0b5376 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -34,6 +34,8 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //人员姓名 private String employeeName; + private List employeeIds; + //个税扣缴义务人 private Long taxAgentId; @@ -73,6 +75,18 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //其他条件 private List otherConditions; + // 艾志提交状态 + private String submitStatus; + + // 艾志审批状态 + private String approveStatus; + + // 艾志合同签署类型编号 + private List htqslxList; + + // 艾志人事代理公司编号 + private List rsdlgsList; + @Data @NoArgsConstructor diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 1d861e2ef..9aa52e173 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -71,7 +71,7 @@ public interface SalaryAcctResultService { * @param queryParam 列表查询条件 * @return */ - PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam); + PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam, Map pageSumMap); /** * 合计行 diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 45cec9ae5..18ad7e841 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -15,6 +15,7 @@ import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; 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.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -45,7 +46,10 @@ import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.BeanUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; import weaver.hrm.User; import weaver.hrm.company.DepartmentComInfo; @@ -223,6 +227,25 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 分页参数 // 查询薪资核算人员 List salaryAcctEmployeePOS = getSalaryAcctEmployeeMapper().listPage(queryParam); + if (StringUtils.isNotBlank(queryParam.getSubmitStatus())) { + if (queryParam.getSubmitStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_SUBMITTED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzSubmittedStatus()) || po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzSubmittedStatus()) && po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } + } + + if (StringUtils.isNotBlank(queryParam.getApproveStatus())) { + if (queryParam.getApproveStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_APPROVED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzApprovalStatus()) || po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzApprovalStatus()) && po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } + } //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 List taxAgentIds = getTaxAgentService(user).listAllTaxAgents(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); @@ -250,6 +273,32 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } salaryAcctEmployeePOS = needAuthPage; + BaseBean baseBean = new BaseBean(); + // 艾志 合同签署类型 + if (CollectionUtils.isNotEmpty(queryParam.getHtqslxList())) { + Long htqslxItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "htqslx_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "htqslx_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(htqslxItemId)); + List acctEmpId = list.stream().filter(result -> queryParam.getHtqslxList().contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + // 艾志 人事代理公司 + if (CollectionUtils.isNotEmpty(queryParam.getRsdlgsList())) { + // 获取人事代理公司编号对应的名称 + String sql = "select rsdlgs from uf_rsdlgs where bh in("+ StringUtils.join(queryParam.getRsdlgsList(), ",") + ")"; + RecordSet rs = new RecordSet(); + rs.execute(sql); + ArrayList rsdlgsNames = new ArrayList<>(); + while (rs.next()) { + rsdlgsNames.add(rs.getString(1)); + } + Long rsdlgsItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(rsdlgsItemId)); + List acctEmpId = list.stream().filter(result -> rsdlgsNames.contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeePOS, SalaryAcctEmployeePO.class); } @@ -297,6 +346,51 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct salaryAcctEmployeePOS = listByParam(salaryAcctEmployeeQueryParam); } + if (StringUtils.isNotBlank(queryParam.getSubmitStatus())) { + if (queryParam.getSubmitStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_SUBMITTED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzSubmittedStatus()) || po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzSubmittedStatus()) && po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } + } + + if (StringUtils.isNotBlank(queryParam.getApproveStatus())) { + if (queryParam.getApproveStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_APPROVED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzApprovalStatus()) || po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzApprovalStatus()) && po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } + } + BaseBean baseBean = new BaseBean(); + // 艾志 合同签署类型 + if (CollectionUtils.isNotEmpty(queryParam.getHtqslxList())) { + Long htqslxItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "htqslx_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "htqslx_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(htqslxItemId)); + List acctEmpId = list.stream().filter(result -> queryParam.getHtqslxList().contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + // 艾志 人事代理公司 + if (CollectionUtils.isNotEmpty(queryParam.getRsdlgsList())) { + // 获取人事代理公司编号对应的名称 + String sql = "select rsdlgs from uf_rsdlgs where bh in("+ StringUtils.join(queryParam.getRsdlgsList(), ",") + ")"; + RecordSet rs = new RecordSet(); + rs.execute(sql); + ArrayList rsdlgsNames = new ArrayList<>(); + while (rs.next()) { + rsdlgsNames.add(rs.getString(1)); + } + Long rsdlgsItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(rsdlgsItemId)); + List acctEmpId = list.stream().filter(result -> rsdlgsNames.contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 List taxAgentIds = getTaxAgentService(user).listAllTaxAgents(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); List needAuthPage = salaryAcctEmployeePOS.stream().filter(dto -> taxAgentIds.contains(dto.getTaxAgentId())).collect(Collectors.toList()); @@ -481,6 +575,25 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct salaryAcctEmployeePOS = getSalaryAcctEmployeeMapper().listPage4ConsolidatedTax(otherSalaryAcctRecordIds, queryParam); } + if (StringUtils.isNotBlank(queryParam.getSubmitStatus())) { + if (queryParam.getSubmitStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_SUBMITTED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzSubmittedStatus()) || po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzSubmittedStatus()) && po.getAzSubmittedStatus().equals(queryParam.getSubmitStatus())).collect(Collectors.toList()); + } + } + + if (StringUtils.isNotBlank(queryParam.getApproveStatus())) { + if (queryParam.getApproveStatus().equals(AZSalaryAcctEmployeeStatusEnum.NOT_APPROVED.getValue())) { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isBlank(po.getAzApprovalStatus()) || po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } else { + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream() + .filter(po -> StringUtils.isNotBlank(po.getAzApprovalStatus()) && po.getAzApprovalStatus().equals(queryParam.getApproveStatus())).collect(Collectors.toList()); + } + } //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 List taxAgentIds = getTaxAgentService(user).listAllTaxAgents(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); List needAuthPage = salaryAcctEmployeePOS.stream().filter(dto -> taxAgentIds.contains(dto.getTaxAgentId())).collect(Collectors.toList()); @@ -507,6 +620,32 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } salaryAcctEmployeePOS = needAuthPage; + BaseBean baseBean = new BaseBean(); + // 艾志 合同签署类型 + if (CollectionUtils.isNotEmpty(queryParam.getHtqslxList())) { + Long htqslxItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "htqslx_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "htqslx_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(htqslxItemId)); + List acctEmpId = list.stream().filter(result -> queryParam.getHtqslxList().contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + // 艾志 人事代理公司 + if (CollectionUtils.isNotEmpty(queryParam.getRsdlgsList())) { + // 获取人事代理公司编号对应的名称 + String sql = "select rsdlgs from uf_rsdlgs where bh in("+ StringUtils.join(queryParam.getRsdlgsList(), ",") + ")"; + RecordSet rs = new RecordSet(); + rs.execute(sql); + ArrayList rsdlgsNames = new ArrayList<>(); + while (rs.next()) { + rsdlgsNames.add(rs.getString(1)); + } + Long rsdlgsItemId = NumberUtils.isCreatable(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) + ? Long.valueOf(baseBean.getPropValue("azgySalary", "rsdlgs_item_id")) : 0L; + List list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(rsdlgsItemId)); + List acctEmpId = list.stream().filter(result -> rsdlgsNames.contains(result.getResultValue())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList()); + salaryAcctEmployeePOS = salaryAcctEmployeePOS.stream().filter(acctEmp -> acctEmpId.contains(acctEmp.getId())).collect(Collectors.toList()); + } + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeePOS, SalaryAcctEmployeePO.class); } @@ -1028,6 +1167,28 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOList) || param.getAcctEmpIds().size() != salaryAcctEmployeePOList.size()) { throw new SalaryRunTimeException("提交失败,核算人员信息不存在或已被删除,请刷新后重试"); } + // 校验提交权限 + // 艾志 - 提交操作权限 + List submitAuthList = getSalaryEmployeeService(user).listDepIdByEmpIdAndOpe(Long.valueOf(user.getUID()), 0); + if (CollectionUtils.isEmpty(submitAuthList)) { + throw new SalaryRunTimeException("提交失败,当前登录账号无提交权限,请联系管理员"); + } + + //查询登录人拥有查看权限的部门 + List depWithChildList = new ArrayList<>(); + for (Long depId : submitAuthList) { + try { + String depStr = DepartmentComInfo.getAllChildDepartId(depId.toString(), depId.toString()); + depWithChildList.addAll(Arrays.stream(depStr.split(",")).collect(Collectors.toList())); + } catch (Exception e) { + e.printStackTrace(); + } + } + + Optional first = salaryAcctEmployeePOList.stream().filter(acctEmp -> !depWithChildList.contains(acctEmp.getDepartmentId().toString())).findFirst(); + if (first.isPresent()) { + throw new SalaryRunTimeException("提交失败,当前登录账号无提交该部门员工薪资权限,请联系管理员"); + } List needSubmitAcctEmpIds = salaryAcctEmployeePOList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(needSubmitAcctEmpIds)) { @@ -1036,6 +1197,29 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } } + private boolean checkConfirmAuth(List salaryAcctEmployeePOList) { + // 校验提交权限 + // 艾志 - 提交操作权限 + List submitAuthList = getSalaryEmployeeService(user).listDepIdByEmpIdAndOpe(Long.valueOf(user.getUID()), 1); + if (CollectionUtils.isEmpty(submitAuthList)) { + throw new SalaryRunTimeException("提交失败,当前登录账号无提交权限,请联系管理员"); + } + + //查询登录人拥有查看权限的部门 + List depWithChildList = new ArrayList<>(); + for (Long depId : submitAuthList) { + try { + String depStr = DepartmentComInfo.getAllChildDepartId(depId.toString(), depId.toString()); + depWithChildList.addAll(Arrays.stream(depStr.split(",")).collect(Collectors.toList())); + } catch (Exception e) { + e.printStackTrace(); + } + } + + Optional first = salaryAcctEmployeePOList.stream().filter(acctEmp -> !depWithChildList.contains(acctEmp.getDepartmentId().toString())).findFirst(); + return !first.isPresent(); + } + @Override public void azReturn(SalaryAcctEmpAzApprovalStatusParam param) { if (CollectionUtils.isEmpty(param.getAcctEmpIds())) { @@ -1045,6 +1229,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOList) || param.getAcctEmpIds().size() != salaryAcctEmployeePOList.size()) { throw new SalaryRunTimeException("退回失败,核算人员信息不存在或已被删除,请刷新后重试"); } + + if (!checkConfirmAuth(salaryAcctEmployeePOList)) { + throw new SalaryRunTimeException("退回失败,当前登录账号无退回该部门员工薪资权限,请联系管理员"); + } + List canNotReturnEmployeeIds = salaryAcctEmployeePOList.stream() .filter(po -> po.getAzSubmittedStatus() == null || !po.getAzSubmittedStatus().equals(AZSalaryAcctEmployeeStatusEnum.SUBMITTED.getValue())) .map(SalaryAcctEmployeePO::getEmployeeId) @@ -1083,6 +1272,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOList) || param.getAcctEmpIds().size() != salaryAcctEmployeePOList.size()) { throw new SalaryRunTimeException("审核失败,核算人员信息不存在或已被删除,请刷新后重试"); } + if (!checkConfirmAuth(salaryAcctEmployeePOList)) { + throw new SalaryRunTimeException("审核失败,当前登录账号无审核该部门员工薪资权限,请联系管理员"); + } List canNotApproveEmployeeIds = salaryAcctEmployeePOList.stream() .filter(po -> po.getAzSubmittedStatus() == null || !po.getAzSubmittedStatus().equals(AZSalaryAcctEmployeeStatusEnum.SUBMITTED.getValue())) .map(SalaryAcctEmployeePO::getEmployeeId) @@ -1109,6 +1301,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOList) || param.getAcctEmpIds().size() != salaryAcctEmployeePOList.size()) { throw new SalaryRunTimeException("弃审失败,核算人员信息不存在或已被删除,请刷新后重试"); } + if (!checkConfirmAuth(salaryAcctEmployeePOList)) { + throw new SalaryRunTimeException("弃审失败,当前登录账号弃审核该部门员工薪资权限,请联系管理员"); + } List canNotReApproveEmployeeIds = salaryAcctEmployeePOList.stream() .filter(po -> po.getAzApprovalStatus() == null || !po.getAzApprovalStatus().equals(AZSalaryAcctEmployeeStatusEnum.APPROVED.getValue()) ) .map(SalaryAcctEmployeePO::getEmployeeId) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index ff4026efb..5fe982069 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -331,7 +331,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } @Override - public PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam) { + public PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam, Map pageSumMap) { PageInfo page = null; //其他条件 List otherConditions = queryParam.getOtherConditions(); @@ -360,6 +360,26 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); } + // 查询薪资核算所用薪资账套的薪资项目 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId()); + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + Map salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE)) { + // 是回算,获取回算项 + List salarySobBackItemPOS = getSalarySobBackItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + salaryItemIds.addAll(salarySobBackItemPOS.stream().map(SalarySobBackItemPO::getSalaryItemId).collect(Collectors.toList())); + } + List salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds); + + List salaryAcctEmpIds = page.getList().stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + List salaryAcctResultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds); + 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(org.apache.commons.lang3.math.NumberUtils::isCreatable).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add); + pageSumMap.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); + }); + // 查询薪资核算结果 List> data = listBySalaryAcctEmployees(page.getList(), queryParam); diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index e3af0dd59..203992762 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -16,6 +16,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jetbrains.annotations.NotNull; import weaver.hrm.HrmUserVarify; @@ -960,6 +961,34 @@ public class SalaryAcctController { if (StringUtils.isNotBlank(subcompanyIds)) { param.setSubcompanyIds(Arrays.stream(subcompanyIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); } + + String employeeIds = request.getParameter("employeeIds"); + if (StringUtils.isNotBlank(employeeIds)) { + List empIds = Arrays.stream(employeeIds.split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + param.setEmployeeIds(empIds); + } + + String submitStatus = request.getParameter("submitStatus"); + if (StringUtils.isNotBlank(submitStatus)) { + param.setSubmitStatus(submitStatus); + } + + String approveStatus = request.getParameter("approveStatus"); + if (StringUtils.isNotBlank(approveStatus)) { + param.setApproveStatus(approveStatus); + } + + String htqslxListStr = request.getParameter("htqslxList"); + if (StringUtils.isNotBlank(htqslxListStr)) { + List htqslxList = Arrays.stream(htqslxListStr.split(",")).collect(Collectors.toList()); + param.setHtqslxList(htqslxList); + } + + String rsdlgsListStr = request.getParameter("rsdlgsList"); + if (StringUtils.isNotBlank(rsdlgsListStr)) { + List rsdlgsList = Arrays.stream(rsdlgsListStr.split(",")).collect(Collectors.toList()); + param.setRsdlgsList(rsdlgsList); + } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 7f9e6ab56..4dfc5d8e4 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -100,7 +100,8 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult } // 查询薪资核算结果(分页) - PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam); + Map pageSumMap = new HashMap<>(); + PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam, pageSumMap); // 构建薪资核算结果列表的表头 List columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO); @@ -114,6 +115,7 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult Map datas = new HashMap<>(); datas.put("pageInfo", page); datas.put("columns", columns); + datas.put("pageSum", pageSumMap); return datas; } diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java index 81c6b10ce..9112a5247 100644 --- a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java @@ -112,7 +112,8 @@ public class SalaryApprovalWrapper extends Service { } // 查询薪资核算结果(分页) - PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam); + Map pageSumMap = new HashMap<>(); + PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam, pageSumMap); // 构建薪资核算结果审批列表的表头 List columns = Lists.newArrayList(); @@ -154,6 +155,7 @@ public class SalaryApprovalWrapper extends Service { Map datas = new HashMap<>(); datas.put("pageInfo", page); datas.put("columns", columns); + datas.put("pageSum", pageSumMap); return datas; }