diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 2d532855e..977f1572e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -7,7 +7,9 @@ import com.engine.salary.util.valid.DataCheck; import lombok.*; import java.util.Collection; +import java.util.Date; import java.util.List; +import java.util.Set; /** * 薪资核算人员列表查询条件 @@ -59,4 +61,7 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { private List ids; private String workcode; + + private List taxAgentIds; + private Set salaryMonths; } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 28f8e7779..86781c4d3 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -521,7 +521,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -538,7 +537,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -555,7 +553,6 @@ LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE delete_type = 0 - AND salary_acct_record_id = #{param.salaryAcctRecordId} @@ -564,6 +561,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -573,6 +573,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -625,6 +637,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -634,6 +649,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN @@ -684,6 +711,9 @@ + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -693,6 +723,18 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + -- 分部 AND t.subcompany_id IN diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index 542988877..85aa622e3 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; @@ -117,14 +118,16 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); salaryAcctEmployeeList = getAuthService(user).auth(salaryAcctEmployeeList, AuthFilterTypeEnum.QUERY_DATA,SalaryAcctEmployeePO.class,"report"); - if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return page; } - Set innerEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeeList, SalaryAcctEmployeePO::getEmployeeId); + // 内部人员id + Set innerEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toCollection(LinkedHashSet::new)); + // 3.关键字搜索参数 if (StringUtils.isNotEmpty(queryParam.getKeyword())) { if (CollectionUtils.isNotEmpty(innerEmployeeIds)) { @@ -283,7 +286,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // 查询薪资核算人员 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); salaryAcctEmployeeList = getAuthService(user).auth(salaryAcctEmployeeList, AuthFilterTypeEnum.QUERY_DATA,SalaryAcctEmployeePO.class,"report"); if (CollectionUtils.isNotEmpty(queryParam.getSubCompanyIds()) || CollectionUtils.isNotEmpty(queryParam.getDepartmentIds()) || StringUtils.isNotBlank(queryParam.getKeyword())) { @@ -306,8 +310,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala if (CollectionUtils.isNotEmpty(queryParam.getIds())) { salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth)).collect(Collectors.toList()); - Collections.reverse(salaryAcctEmployeeList); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index ba9b2f370..551d9240f 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -54,6 +54,8 @@ import weaver.wechat.util.Utils; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪酬统计报表 *

Copyright: Copyright (c) 2022

@@ -71,6 +73,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary public static final String LAST_INFO = "lastInfoList"; public static final String SAME_INFO = "sameInfoList"; + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); private SalaryStatisticsReportMapper getSalaryStatisticsReportMapper() { return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); @@ -197,16 +200,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary this.getSalaryStatisticsReportMapper().updateIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOldValues(po); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(po); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } else { List list = listByName(saveParam.getReportName()); if (CollectionUtils.isNotEmpty(list)) { @@ -217,15 +220,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().insertIgnoreNull(poNew); // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } return StringUtils.EMPTY; } @@ -305,16 +308,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsItemService(user).saveOrUpdateBatch(salaryStatisticsItemList); //记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(po.getId())); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "更新报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); - loggerContext.setOldValues(oldPO); - loggerContext.setNewValues(po); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(po.getId())); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "更新报表")); + loggerContext.setOldValues(oldPO); + loggerContext.setNewValues(po); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); return StringUtils.EMPTY; } @@ -333,17 +336,17 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().deleteByIds(deleteIds); //删除薪资项 getSalaryStatisticsItemService(user).deleteByReportIds(deleteIds); - list.forEach(e -> { - // 记录日志 - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(e.getId())); - loggerContext.setTargetName(e.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "删除报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "删除报表") + e.getReportName()); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - }); + list.forEach(e -> { + // 记录日志 + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(e.getId())); + loggerContext.setTargetName(e.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "删除报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "删除报表") + e.getReportName()); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + }); } Map resultMap = new HashMap<>(2); @@ -396,8 +399,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary loggerContext.setTargetId(String.valueOf(po.getId())); loggerContext.setTargetName(po.getReportName()); loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "新增报表")); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增报表")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增报表")); loggerContext.setNewValues(po); SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } @@ -474,7 +477,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(queryParam); // 设置dimensionValue为维度值 - SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder().list(salaryAcctEmployeeList).lastList(Collections.emptyList()).sameList(Collections.emptyList()).salaryStatisticsItemList(salaryStatisticsItemPOS).employeeId((long) user.getUID()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).dimensionValue(param.getDimensionValue()).build(); + SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder() + .list(salaryAcctEmployeeList) + .lastList(Collections.emptyList()) + .sameList(Collections.emptyList()) + .salaryStatisticsItemList(salaryStatisticsItemPOS) + .employeeId((long) user.getUID()) + .dimensionValue(param.getDimensionValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); Map> resultMap = new HashMap<>(); List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); @@ -780,38 +791,74 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map subComIdNameMap = new HashMap<>(); Map lastEmpIdSubComMap = new HashMap<>(); Map sameEmpIdSubComMap = new HashMap<>(); - comInfoMap.forEach((k, v) -> { - subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); - empIdSubComMap.put(k, v.getSubcompanyid()); - subComIds.add(v.getSubcompanyid()); - }); - lastComInfoMap.forEach((k, v) -> { - lastEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); - sameComInfoMap.forEach((k, v) -> { - sameEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); + + if (isRealOrg) { + comInfoMap.forEach((k, v) -> { + subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); + empIdSubComMap.put(k, v.getSubcompanyid()); + subComIds.add(v.getSubcompanyid()); + }); + lastComInfoMap.forEach((k, v) -> { + lastEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + sameComInfoMap.forEach((k, v) -> { + sameEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + } else { + data.getList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + subComIdNameMap.put(employee.getSubcompanyId(), employee.getSubcompanyName()); + subComIds.add(employee.getDepartmentId()); + empIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + lastEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + sameEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + } + String dimensionValue = data.getDimensionValue(); subComIds.forEach(subComId -> { if (dimensionValue == null) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, subComIdNameMap.get(subComId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(subComEmployeePOS, lastSubComEmployeePOS, sameSubComEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, subComIdNameMap.get(subComId))) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } data.setListByDimensionValue(subComEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -820,6 +867,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "无分组")) { List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } @@ -843,44 +893,78 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map lastEmpIdDepartIdMap = new HashMap<>(); Map sameEmpIdDepartIdMap = new HashMap<>(); Map departIdNameMap = new HashMap<>(); - simpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); - departIds.add(employee.getDepartmentId()); - empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - lastSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - sameSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); + if (isRealOrg) { + simpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + lastSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + sameSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } else { + data.getList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } String dimensionValue = data.getDimensionValue(); departIds.forEach(departId -> { if (dimensionValue == null) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, departIdNameMap.get(departId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(departEmployeePOS, lastDepartEmployeePOS, sameDepartEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } data.setListByDimensionValue(departEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + + } if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "无分组")); @@ -888,7 +972,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary records.add(noGrouping); } } else if (StringUtils.equals(dimensionValue, "无分组")) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 22e20a454..504f8f2f2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -53,6 +53,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 薪资核算人员 *

Copyright: Copyright (c) 2022

@@ -116,6 +118,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @Override public List countBySalaryAcctRecordId(Collection salaryAcctRecordIds) { @@ -667,11 +674,6 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct lambdaQueryChainWrapper.setSalaryMonths(yearMonths); } - // 收入所得项目 -// if (CollectionUtils.isNotEmpty(param.getIncomeCategory())) { -// lambdaQueryChainWrapper.in(SalaryAcctEmployeePO::getIncomeCategory, param.getIncomeCategory().stream().map(Object::toString).collect(Collectors.toList())); -// } - //排除未归档数据 List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll(); List salaryAcctRecordIds = salaryAcctRecordPOS.stream() @@ -701,70 +703,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // 获取分部信息 List subCompanyIds = param.getSubCompany(); if (CollectionUtils.isNotEmpty(subCompanyIds)) { -// SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); -// List allSubcompanyIds = new ArrayList<>(); -// for (Long subCompanyId : subCompanyIds) { -// String organizationIds = Util.null2String(subCompanyId); -// String allChildSubcompanyId = subCompanyComInfo.getAllChildSubcompanyId(subCompanyId.toString(), organizationIds); -// allSubcompanyIds.addAll(Arrays.asList(allChildSubcompanyId.split(","))); -// } - employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + } else { + list.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyId())).collect(Collectors.toList()); + } } // 部门过滤 List depart = param.getDepart(); if (CollectionUtils.isNotEmpty(depart)) { -// List allDepartIds = new ArrayList<>(); -// for (Long subDepartId : depart) { -// String ids = Util.null2String(subDepartId); -// try { -// String allDepartId = DepartmentComInfo.getAllChildDepartId(subDepartId.toString(), ids); -// allDepartIds.addAll(Arrays.asList(allDepartId.toString().split(","))); -// } catch (Exception e) { -// log.error("获取子部门失败", e); -// } -// } - employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } } - // 职级过滤 -// if (CollectionUtils.isNotEmpty(param.getGrade())) { -// Set employeeIdsByGradeFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getGrade() != null && param.getGrade().contains(simpleEmployee.getGrade().getId())) { -// employeeIdsByGradeFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByGradeFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 岗位过滤 List position = param.getPosition(); if (CollectionUtils.isNotEmpty(position)) { - // Set employeeIdsByPostionFilter = new HashSet<>(); - // simpleEmployeeList.forEach(simpleEmployee -> { - // if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { - // employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); - // } - // }); - // if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { - // return Lists.newArrayList(); - // } - employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } } // 人事状态过滤 if (CollectionUtils.isNotEmpty(param.getStatus())) { - Set employeeIdsByStatus = new HashSet<>(); - employeeList.forEach(simpleEmployee -> { - if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { - employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + if (isRealOrg) { + Set employeeIdsByStatus = new HashSet<>(); + employeeList.forEach(simpleEmployee -> { + if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { + employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + } + }); + if (CollectionUtils.isEmpty(employeeIdsByStatus)) { + return Lists.newArrayList(); } - }); - if (CollectionUtils.isEmpty(employeeIdsByStatus)) { - return Lists.newArrayList(); + list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(po -> po.getStatus() != null && param.getStatus().contains(po.getStatus())).collect(Collectors.toList()); } - list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); } // 入职日期 if (CollectionUtils.isNotEmpty(param.getHiredate())) { @@ -780,27 +759,15 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } list = list.stream().filter(po -> employeeIdsByHiredate.contains(po.getEmployeeId())).collect(Collectors.toList()); } -// // 离职日期 todo -// if (CollectionUtils.isNotEmpty(param.getLeavedate())) { -// Set employeeIdsByLeavedate = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// -// if (simpleEmployee.get() != null && ) { -// employeeIdsByLeavedate.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByLeavedate)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByLeavedate.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 人员 if (CollectionUtils.isNotEmpty(param.getEmployee())) { list = list.stream().filter(po -> param.getEmployee().contains(po.getEmployeeId())).collect(Collectors.toList()); } - Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); - list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + if(isRealOrg){ + Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); + list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return list; } diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..6f35124c3 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -145,4 +145,15 @@ public class SalarySysConstant { * 我的薪资福利工资单个税扣缴义务人显示状态 */ public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + + + /** + * 报表是否开启缓存,0:关闭 1:开启 + */ + public static final String REPORT_CACHE = "REPORT_CACHE"; + + /** + * 报表组织类型,null/0 :核算时组织信息 1:实时组织信息 + */ + public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; }