From b4050e4ee850de70bcadbae3556671810023ff80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Sun, 29 Sep 2024 16:58:41 +0800
Subject: [PATCH 01/18] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=BF=AB=E7=85=A7?=
=?UTF-8?q?=E6=90=9C=E7=B4=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../SalaryStatisticsReportServiceImpl.java | 184 +++++++++++-------
.../SalaryStatisticsReportWrapper.java | 44 ++---
.../impl/SalaryAcctEmployeeServiceImpl.java | 109 ++++-------
.../sys/constant/SalarySysConstant.java | 11 ++
4 files changed, 187 insertions(+), 161 deletions(-)
diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java
index 42a65d485..ab16db7cc 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);
}
@@ -479,7 +482,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());
@@ -848,44 +859,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, "无分组"));
@@ -893,7 +938,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/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java
index 22fb6261f..7556b7bf8 100644
--- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java
+++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java
@@ -332,28 +332,28 @@ public class SalaryStatisticsReportWrapper extends Service {
if (empDimensionOptional.isPresent()) {
empDimensionId = empDimensionOptional.get();
}
- if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) {
- //报表中缓存的条件
- salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id));
- if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) {
- Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5);
- if (param.getDimensionId().equals(empDimensionId)) {
- // 人员维度需要分页
- Map finalResultMap = new HashMap<>();
- PageInfo