Merge branch 'feature/报表缓存' into release/2.8.4.2306.02

This commit is contained in:
钱涛 2023-06-21 09:48:23 +08:00
commit 1e78c40e9a
9 changed files with 256 additions and 99 deletions

View File

@ -55,5 +55,14 @@ public class SalaryCacheKey {
*/
public final static String CUSTOM_DATA = "CUSTOM_DATA";
/**
* 报表主键
*/
public final static String SALARY_REPORT_IDS = "SALARY_REPORT_IDS";
public final static String SALARY_REPORT_CONDITIONS = "SALARY_REPORT_CONDITIONS_";
public final static String SALARY_REPORT_DATA = "SALARY_REPORT_DATA_";
}

View File

@ -0,0 +1,34 @@
package com.engine.salary.report.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* 分析图数据展示范围设置
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
//"报表查询入参")
public class SalaryReportCacheInfo {
List<Report> reports;
class Report {
String key;
List<Condition> conditions;
}
class Condition {
String key;
Map<String, Object> result;
}
}

View File

@ -2,10 +2,7 @@ package com.engine.salary.report.entity.param;
import com.engine.salary.common.BaseQueryParam;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.*;
import java.util.Date;
import java.util.List;
@ -22,6 +19,7 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
//"薪酬统计报表数据查询参数
public class SalaryStatisticsReportDataQueryParam extends BaseQueryParam {
//报表id

View File

@ -75,11 +75,10 @@ public interface SalaryStatisticsReportService {
*
* @param dimension
* @param param
* @param salaryStatisticsReport
* @param salaryStatisticsItemList
* @return
*/
PageInfo<Map<String, Object>> buildReportRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataQueryParam param, SalaryStatisticsReportPO salaryStatisticsReport, List<SalaryStatisticsItemPO> salaryStatisticsItemList);
PageInfo<Map<String, Object>> buildReportRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataQueryParam param, List<SalaryStatisticsItemPO> salaryStatisticsItemList);
/**
* 构建数据透视记录
@ -91,4 +90,12 @@ public interface SalaryStatisticsReportService {
* @return
*/
PageInfo<Map<String, Object>> buildDataPerspectiveRecords(SalaryStatisticsDataPerspectiveQueryParam param, SalaryStatisticsReportPO reportPO, SalaryStatisticsDimensionPO dimension, List<SalaryStatisticsItemPO> salaryStatisticsItemPOS);
/**
* 清除报表缓存
*/
void removeReportCache();
}

View File

@ -3,6 +3,7 @@ package com.engine.salary.report.service.impl;
import com.alibaba.fastjson.JSON;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
@ -41,6 +42,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.wechat.util.Utils;
import java.util.*;
import java.util.stream.Collectors;
@ -95,6 +97,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalaryCacheService getSalaryCacheService(User user) {
return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
}
// private ExtEmployeeService extEmployeeService;
//
// private HrmCommonEmployeeService hrmCommonEmployeeService;
@ -175,18 +181,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98080, "名称不允许重复"));
}
Long id = IdGenerator.generate();
SalaryStatisticsReportPO poNew = SalaryStatisticsReportPO.builder()
.id(id)
.reportName(saveParam.getReportName())
.dimension(StringUtils.join(saveParam.getDimensionIds(), ","))
.createTime(now)
.creator((long) user.getUID())
.updateTime(now)
.deleteType(0)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.salaryStartMonth(SalaryDateUtil.getFirstDayDateOfYear(new Date()))
.salaryEndMonth(SalaryDateUtil.getLastDayOfYear(new Date()))
.build();
SalaryStatisticsReportPO poNew = SalaryStatisticsReportPO.builder().id(id).reportName(saveParam.getReportName()).dimension(StringUtils.join(saveParam.getDimensionIds(), ",")).createTime(now).creator((long) user.getUID()).updateTime(now).deleteType(0).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).salaryStartMonth(SalaryDateUtil.getFirstDayDateOfYear(new Date())).salaryEndMonth(SalaryDateUtil.getLastDayOfYear(new Date())).build();
getSalaryStatisticsReportMapper().insertIgnoreNull(poNew);
// 记录日志
@ -207,14 +202,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
if (Objects.isNull(param.getSalaryStartMonth()) || Objects.isNull(param.getSalaryEndMonth())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100294, "薪资所属月必传"));
}
if ((CollectionUtils.isNotEmpty(param.getTaxAgent()) && param.getTaxAgent().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getIncomeCategory()) && param.getIncomeCategory().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getSubCompany()) && param.getSubCompany().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getGrade()) && param.getGrade().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getPosition()) && param.getPosition().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getStatus()) && param.getStatus().size() > 10)
|| (CollectionUtils.isNotEmpty(param.getEmployee()) && param.getEmployee().size() > 10)
) {
if ((CollectionUtils.isNotEmpty(param.getTaxAgent()) && param.getTaxAgent().size() > 10) || (CollectionUtils.isNotEmpty(param.getIncomeCategory()) && param.getIncomeCategory().size() > 10) || (CollectionUtils.isNotEmpty(param.getSubCompany()) && param.getSubCompany().size() > 10) || (CollectionUtils.isNotEmpty(param.getGrade()) && param.getGrade().size() > 10) || (CollectionUtils.isNotEmpty(param.getPosition()) && param.getPosition().size() > 10) || (CollectionUtils.isNotEmpty(param.getStatus()) && param.getStatus().size() > 10) || (CollectionUtils.isNotEmpty(param.getEmployee()) && param.getEmployee().size() > 10)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182014, "统计数据范围条件数量过多"));
}
@ -312,8 +300,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String resultType = "success";
// 单个设为定薪提示
if (total > 1) {
resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (success) + "; "
+ SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (total - success);
resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (success) + "; " + SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (total - success);
if ((total - success) > 0) {
resultType = "info";
}
@ -326,14 +313,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
}
@Override
public PageInfo<Map<String, Object>> buildReportRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataQueryParam param, SalaryStatisticsReportPO po, List<SalaryStatisticsItemPO> salaryStatisticsItemList) {
public PageInfo<Map<String, Object>> buildReportRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataQueryParam param, List<SalaryStatisticsItemPO> salaryStatisticsItemList) {
Map<String, Boolean> checkMap = SalaryStatisticsReportBO.checkLoad(salaryStatisticsItemList);
// 如果一个都没有直接返回
if (!checkMap.get("isNow")) {
return new PageInfo<Map<String, Object>>();
}
// 参数转换
SalaryStatisticsReportBO.poToQueryParam(param, po);
// 获取本期报表分权后的核算人员
List<SalaryAcctEmployeePO> list = getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(param);
@ -344,14 +330,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
// 获取去年同期报表分权后的核算人员
List<SalaryAcctEmployeePO> sameList = checkMap.get("isSame") ? getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(sameParam) : Lists.newArrayList();
SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder()
.list(list)
.lastList(lastList)
.sameList(sameList)
.salaryStatisticsItemList(salaryStatisticsItemList)
.employeeId((long) user.getUID())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder().list(list).lastList(lastList).sameList(sameList).salaryStatisticsItemList(salaryStatisticsItemList).employeeId((long) user.getUID()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build();
List<SalaryAcctEmployeePO> allList = Lists.newArrayList();
allList.addAll(list);
@ -374,8 +353,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
@Override
public PageInfo<Map<String, Object>> buildDataPerspectiveRecords(SalaryStatisticsDataPerspectiveQueryParam param, SalaryStatisticsReportPO reportPO, SalaryStatisticsDimensionPO dimension, List<SalaryStatisticsItemPO> salaryStatisticsItemPOS) {
// 获取报表统计薪资项目
List<Long> salaryItemIds = salaryStatisticsItemPOS.stream().filter(item -> StringUtils.isNotBlank(item.getItemValue())).map(p -> p.getItemValue().split(","))
.flatMap(Arrays::stream).map(Long::valueOf).collect(Collectors.toList());
List<Long> salaryItemIds = salaryStatisticsItemPOS.stream().filter(item -> StringUtils.isNotBlank(item.getItemValue())).map(p -> p.getItemValue().split(",")).flatMap(Arrays::stream).map(Long::valueOf).collect(Collectors.toList());
// 参数转换
param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth()));
param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth()));
@ -386,25 +364,17 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
param.setEmployee(((List<Map>) JSON.parseArray(reportPO.getEmployeeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList()));
param.setHiredate(JSON.parseArray(reportPO.getHiredateSetting(), Date.class));
SalaryStatisticsReportDataQueryParam queryParam = new SalaryStatisticsReportDataQueryParam();
com.mzlion.core.utils.BeanUtils.copyProperties(param,queryParam);
com.mzlion.core.utils.BeanUtils.copyProperties(param, queryParam);
// 获取本期报表分权后的核算人员
List<SalaryAcctEmployeePO> 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()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).dimensionValue(param.getDimensionValue()).build();
// 获取根据维度值过滤出的本次核算人员信息
calculateReportRecordsByDimension(dimension, SalaryStatisticsReportDataQueryParam.builder().build(), salaryStatisticsReportData, Collections.EMPTY_MAP);
List<SalaryAcctEmployeePO> listByDimensionValue = salaryStatisticsReportData.getListByDimensionValue();
if(CollectionUtils.isEmpty(listByDimensionValue)){
if (CollectionUtils.isEmpty(listByDimensionValue)) {
throw new SalaryRunTimeException("该维度值中无数据!");
}
// 同一个人放在一起
@ -431,10 +401,69 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
return pageInfo;
}
@Override
public void removeReportCache() {
//获取所有缓存报表的id
String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS));
if (StringUtils.isNotBlank(salaryReportIds)) {
Arrays.asList(salaryReportIds.split(",")).forEach(id -> {
if (StringUtils.isNotBlank(id)) {
//报表下条件id
String salaryReportConditions = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id);
if (StringUtils.isNotBlank(salaryReportConditions)) {
Arrays.asList(salaryReportConditions.split(",")).forEach(paramMd5 -> {
if (StringUtils.isNotBlank(paramMd5)) {
//条件对应的结果
getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5);
}
}
);
getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id);
}
}
});
getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_IDS);
}
}
public List getReportCache() {
List report = new ArrayList<>();
//获取所有缓存报表的id
String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS));
if (StringUtils.isNotBlank(salaryReportIds)) {
Arrays.asList(salaryReportIds.split(",")).forEach(id -> {
if (StringUtils.isNotBlank(id)) {
//报表下条件id
String salaryReportConditions = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id);
List c= new ArrayList<>();
if (StringUtils.isNotBlank(salaryReportConditions)) {
Arrays.asList(salaryReportConditions.split(",")).forEach(paramMd5 -> {
if (StringUtils.isNotBlank(paramMd5)) {
Map<String, Object> data = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5);
Map kv= new HashMap<>();
kv.put(paramMd5,data);
c.add(kv);
}
}
);
report.add(c);
}
}
});
}
return report;
}
/**
* 获取根据维度值过滤出的本次核算人员信息
*
* @param listByDimensionValue 根据维度筛选后的薪资核算人员
* @param map 薪资核算结果
* @param map 薪资核算结果
*/
private List<Map<String, Object>> buildResultRecords(List<SalaryAcctEmployeePO> listByDimensionValue, Map<Long, Map<String, String>> map) {
// 获取人员信息
@ -465,7 +494,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
resultMap.put("departmentName", emp == null ? "" : emp.getDepartmentName());
resultMap.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth()));
resultMap.put("taxAgent", taxAgentMap.get(se.getTaxAgentId()));
resultMap.put("salarySob",SalarySobMap.get(se.getSalarySobId()));
resultMap.put("salarySob", SalarySobMap.get(se.getSalarySobId()));
resultMap.put("acctTimes", salaryAcctRecordMap.get(se.getSalaryAcctRecordId()));
resultList.add(resultMap);
}
@ -548,12 +577,12 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
List<Date> salaryMonthList = listMap.keySet().stream().sorted().collect(Collectors.toList());
String dimensionValue = data.getDimensionValue();
salaryMonthList.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
Map<String, Object> temp = new HashMap<>();
temp.put(DM, SalaryDateUtil.getFormatYearMonth(k));
temp.putAll(SalaryStatisticsReportBO.calculateItem(listMap.get(k), lastListMap.get(ReportTimeUtil.getLastYearMonth(k)), sameListMap.get(ReportTimeUtil.getSameYearMonth(k)), salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue,SalaryDateUtil.getFormatYearMonth(k)) ){
} else if (StringUtils.equals(dimensionValue, SalaryDateUtil.getFormatYearMonth(k))) {
data.setListByDimensionValue(listMap.get(k));
}
});
@ -573,12 +602,12 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
Map<Long, String> taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentList, TaxAgentPO::getId, TaxAgentPO::getName);
String dimensionValue = data.getDimensionValue();
listMap.forEach((k, v) -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
Map<String, Object> temp = new HashMap<>();
temp.put(DM, taxAgentMap.get(k));
temp.putAll(SalaryStatisticsReportBO.calculateItem(v, lastListMap.get(k), sameListMap.get(k), salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if(StringUtils.equals(dimensionValue, taxAgentMap.get(k))){
} else if (StringUtils.equals(dimensionValue, taxAgentMap.get(k))) {
data.setListByDimensionValue(v);
}
});
@ -645,7 +674,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
subComIds.forEach(subComId -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList());
@ -653,13 +682,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
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)) ){
} else if (StringUtils.equals(dimensionValue, subComIdNameMap.get(subComId))) {
List<SalaryAcctEmployeePO> subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList());
data.setListByDimensionValue(subComEmployeePOS);
}
});
if(dimensionValue == null){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
@ -669,7 +698,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
noGrouping.putAll(SalaryStatisticsReportBO.calculateItem(noGroupingList, lastNoGroupingList, sameNoGroupingList, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(noGrouping);
}
}else if( StringUtils.equals(dimensionValue, "无分组") ){
} else if (StringUtils.equals(dimensionValue, "无分组")) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
data.setListByDimensionValue(noGroupingList);
}
@ -714,7 +743,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
departIds.forEach(departId -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList());
@ -722,13 +751,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
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)) ){
} else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) {
List<SalaryAcctEmployeePO> departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList());
data.setListByDimensionValue(departEmployeePOS);
}
});
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
@ -738,7 +767,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
noGrouping.putAll(SalaryStatisticsReportBO.calculateItem(noGroupingList, lastNoGroupingList, sameNoGroupingList, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(noGrouping);
}
}else if( StringUtils.equals(dimensionValue, "无分组") ){
} else if (StringUtils.equals(dimensionValue, "无分组")) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
data.setListByDimensionValue(noGroupingList);
}
@ -956,13 +985,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
employeeListMap.forEach((k, v) -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
Map<String, Object> temp = new HashMap<>();
// temp.put(DM, Objects.nonNull(employeeByIdMap.get(k)) ? employeeByIdMap.get(k) : employeeExtByIdMap.get(k));
temp.put(DM, employeeByIdMap.get(k));
temp.putAll(SalaryStatisticsReportBO.calculateItem(v, lastEmployeeListMap.get(k), sameEmployeeListMap.get(k), salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue, employeeByIdMap.get(k)) ){
} else if (StringUtils.equals(dimensionValue, employeeByIdMap.get(k))) {
data.setListByDimensionValue(v);
}
});
@ -983,7 +1012,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
quarters.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> listYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getQuarter(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastListYear = data.getLastList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getQuarter(ReportTimeUtil.getPlusYearMonth(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth()), 3)))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameListYear = data.getSameList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getQuarter(ReportTimeUtil.getPlusYearMonth(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth()), 12)))).collect(Collectors.toList());
@ -991,7 +1020,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(listYear, lastListYear, sameListYear, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if(StringUtils.equals(dimensionValue, k)){
} else if (StringUtils.equals(dimensionValue, k)) {
List<SalaryAcctEmployeePO> listYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getQuarter(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
data.setListByDimensionValue(listYear);
}
@ -1012,7 +1041,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
halfYears.forEach(k -> {
if(dimensionValue == null){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> listHalfYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getHalfYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastListHalfYear = data.getLastList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getHalfYear(ReportTimeUtil.getPlusYearMonth(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth()), 6)))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameListHalfYear = data.getSameList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getHalfYear(ReportTimeUtil.getPlusYearMonth(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth()), 12)))).collect(Collectors.toList());
@ -1020,7 +1049,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(listHalfYear, lastListHalfYear, sameListHalfYear, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if(StringUtils.equals(dimensionValue, k)){
} else if (StringUtils.equals(dimensionValue, k)) {
List<SalaryAcctEmployeePO> listHalfYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getHalfYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
data.setListByDimensionValue(listHalfYear);
}
@ -1041,7 +1070,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
years.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> listYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastListYear = data.getLastList().stream().filter(sa -> Objects.equals(ReportTimeUtil.getLastYear(k), ReportTimeUtil.getYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameListYear = data.getSameList().stream().filter(sa -> Objects.equals(ReportTimeUtil.getLastYear(k), ReportTimeUtil.getYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
@ -1049,7 +1078,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(listYear, lastListYear, sameListYear, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue, k) ){
} else if (StringUtils.equals(dimensionValue, k)) {
List<SalaryAcctEmployeePO> listYear = data.getList().stream().filter(sa -> Objects.equals(k, ReportTimeUtil.getYear(SalaryDateUtil.getFormatYearMonth(sa.getSalaryMonth())))).collect(Collectors.toList());
data.setListByDimensionValue(listYear);
}
@ -1697,7 +1726,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
workYears.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = data.getList().stream().filter(po -> Objects.equals(empIdWorkYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastSalaryAcctEmployees = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdWorkYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameSalaryAcctEmployees = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdWorkYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
@ -1705,13 +1734,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(salaryAcctEmployees, lastSalaryAcctEmployees, sameSalaryAcctEmployees, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( Double.compare(Double.valueOf(dimensionValue), k) == 0 ){
} else if (Double.compare(Double.valueOf(dimensionValue), k) == 0) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = data.getList().stream().filter(po -> Objects.equals(empIdWorkYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
data.setListByDimensionValue(salaryAcctEmployees);
}
});
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdWorkYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdWorkYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdWorkYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
@ -1721,7 +1750,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
noGrouping.putAll(SalaryStatisticsReportBO.calculateItem(noGroupingList, lastNoGroupingList, sameNoGroupingList, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(noGrouping);
}
}else if( StringUtils.equals(dimensionValue, "无分组") ){
} else if (StringUtils.equals(dimensionValue, "无分组")) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdWorkYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
data.setListByDimensionValue(noGroupingList);
}
@ -1765,7 +1794,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
companyYears.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = data.getList().stream().filter(po -> Objects.equals(empIdCompanyYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastSalaryAcctEmployees = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdCompanyYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameSalaryAcctEmployees = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdCompanyYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
@ -1773,13 +1802,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(salaryAcctEmployees, lastSalaryAcctEmployees, sameSalaryAcctEmployees, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue, k) ){
} else if (StringUtils.equals(dimensionValue, k)) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = data.getList().stream().filter(po -> Objects.equals(empIdCompanyYearMap.get(po.getEmployeeId()), k)).collect(Collectors.toList());
data.setListByDimensionValue(salaryAcctEmployees);
}
});
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdCompanyYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdCompanyYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
List<SalaryAcctEmployeePO> sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdCompanyYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
@ -1789,7 +1818,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
noGrouping.putAll(SalaryStatisticsReportBO.calculateItem(noGroupingList, lastNoGroupingList, sameNoGroupingList, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(noGrouping);
}
}else if( StringUtils.equals(dimensionValue, "无分组")){
} else if (StringUtils.equals(dimensionValue, "无分组")) {
List<SalaryAcctEmployeePO> noGroupingList = data.getList().stream().filter(po -> empIdCompanyYearMap.get(po.getEmployeeId()) == null).collect(Collectors.toList());
data.setListByDimensionValue(noGroupingList);
}
@ -1833,7 +1862,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
}
String dimensionValue = data.getDimensionValue();
groups.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupSpacing(k, groupBelong, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> lastSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupSpacing(k, groupBelong, dimension.getDimCode(), data.getLastList(), lastEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> sameSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupSpacing(k, groupBelong, dimension.getDimCode(), data.getSameList(), sameEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
@ -1841,7 +1870,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k.getStartValue() + "-" + k.getEndValue());
temp.putAll(SalaryStatisticsReportBO.calculateItem(salaryAcctEmployees, lastSalaryAcctEmployees, sameSalaryAcctEmployees, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue, k.getStartValue() + "-" + k.getEndValue()) ){
} else if (StringUtils.equals(dimensionValue, k.getStartValue() + "-" + k.getEndValue())) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupSpacing(k, groupBelong, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
data.setListByDimensionValue(salaryAcctEmployees);
}
@ -1914,7 +1943,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
String dimensionValue = data.getDimensionValue();
groups.forEach(k -> {
if(dimensionValue == null ){
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, groupBelong, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> lastSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, groupBelong, dimension.getDimCode(), data.getLastList(), lastEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> sameSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, groupBelong, dimension.getDimCode(), data.getSameList(), sameEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
@ -1922,7 +1951,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
temp.put(DM, k.getValue());
temp.putAll(SalaryStatisticsReportBO.calculateItem(salaryAcctEmployees, lastSalaryAcctEmployees, sameSalaryAcctEmployees, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
}else if( StringUtils.equals(dimensionValue, k.getValue()) ){
} else if (StringUtils.equals(dimensionValue, k.getValue())) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, groupBelong, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
data.setListByDimensionValue(salaryAcctEmployees);
}

View File

@ -1,11 +1,13 @@
package com.engine.salary.report.wrapper;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONArray;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.component.WeaFormOption;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
@ -26,9 +28,11 @@ import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl;
import com.engine.salary.report.service.impl.SubTableExportServiceImpl;
import com.engine.salary.service.SalaryAcctEmployeeService;
import com.engine.salary.service.SalaryAcctResultService;
import com.engine.salary.service.SalaryCacheService;
import com.engine.salary.service.SalaryItemService;
import com.engine.salary.service.impl.SalaryAcctEmployeeServiceImpl;
import com.engine.salary.service.impl.SalaryAcctResultServiceImpl;
import com.engine.salary.service.impl.SalaryCacheServiceImpl;
import com.engine.salary.service.impl.SalaryItemServiceImpl;
import com.engine.salary.util.*;
import com.engine.salary.util.excel.ExcelUtilPlus;
@ -41,10 +45,12 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.general.PageIdConst;
import weaver.hrm.User;
import weaver.wechat.util.Utils;
import java.util.*;
import java.util.stream.Collectors;
/**
* 薪酬统计维度
* <p>Copyright: Copyright (c) 2022</p>
@ -78,11 +84,15 @@ public class SalaryStatisticsReportWrapper extends Service {
}
private SalaryAcctResultService getSalaryAcctResultService(User user) {
return (SalaryAcctResultService) ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user);
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalaryCacheService getSalaryCacheService(User user) {
return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
}
/**
@ -136,11 +146,11 @@ public class SalaryStatisticsReportWrapper extends Service {
List<SalaryStatisticsReportPO> salaryStatisticsReports = getSalaryStatisticsReportService(user).listAll();
salaryStatisticsReports.stream().forEach(report -> Collections.addAll(haveUsedDimIds, report.getDimension().split(",")));
statsDimOptions.stream().forEach(option -> {
if (defaultDimensionIds.contains(Long.valueOf(option.getId()))){
if (defaultDimensionIds.contains(Long.valueOf(option.getId()))) {
// 默认维度不允许修改删除
option.setCanDelete(false);
option.setCanEdit(false);
}else if(haveUsedDimIds.contains(option.getId())){
} else if (haveUsedDimIds.contains(option.getId())) {
// 被薪资统计报表引用的不能删除
option.setCanEdit(true);
option.setCanDelete(false);
@ -234,8 +244,8 @@ public class SalaryStatisticsReportWrapper extends Service {
* @return
*/
public Map<String, Object> getData(SalaryStatisticsReportDataQueryParam param) {
if (param.getId() == null || param.getDimensionId() == null) {
Long id = param.getId();
if (id == null || param.getDimensionId() == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
}
SalaryStatisticsDimensionPO dimension = getSalaryStatisticsDimensionService(user).getById(param.getDimensionId());
@ -245,14 +255,33 @@ public class SalaryStatisticsReportWrapper extends Service {
// weaTable对象
Map<String, Object> weaTable = new HashMap<>();
// 查询报表配置
SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(param.getId());
SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(id);
if (po == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161845, "薪酬统计报表不存在"));
}
// 参数转换
SalaryStatisticsReportBO.poToQueryParam(param, po);
String paramMd5 = SecureUtil.md5(param.toString());
//已缓存的报表id
String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS));
String salaryReportConditions = "";
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)) {
return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5);
}
}
// 查询自定义统计项目
List<SalaryStatisticsItemPO> salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId());
// 列表data
PageInfo<Map<String, Object>> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, po, salaryStatisticsItemList);
PageInfo<Map<String, Object>> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, salaryStatisticsItemList);
// 组装合计
Map<String, Object> countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID());
@ -265,10 +294,18 @@ public class SalaryStatisticsReportWrapper extends Service {
resultMap.put("columns", weaTableColumns);
resultMap.put("pageInfo", page);
resultMap.put("countResult", countResultMap);
resultMap.put("reportId", param.getId());
resultMap.put("reportId", id);
getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_IDS, salaryReportIds + "," + id);
getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id, salaryReportConditions + "," + paramMd5);
getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + paramMd5, resultMap);
return resultMap;
}
/**
* 导出报表数据
*
@ -288,10 +325,14 @@ public class SalaryStatisticsReportWrapper extends Service {
if (dimension == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "统计维度不存在"));
}
// 参数转换
SalaryStatisticsReportBO.poToQueryParam(param, po);
// 查询自定义统计项目
List<SalaryStatisticsItemPO> salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId());
// 列表data
PageInfo<Map<String, Object>> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, po, salaryStatisticsItemList);
PageInfo<Map<String, Object>> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, salaryStatisticsItemList);
// 组装合计
Map<String, Object> countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID());
List<Map<String, Object>> list = page.getList();
@ -344,6 +385,7 @@ public class SalaryStatisticsReportWrapper extends Service {
/**
* 获取报表透视数据
*
* @param param
* @return
*/
@ -371,9 +413,9 @@ public class SalaryStatisticsReportWrapper extends Service {
List<WeaTableColumn> weaTableColumns = buildDataPerspectiveTableColumns(itemList);
WeaTable table = new WeaTable();
String pageId="a4f85an7-9576-4125-adn9-7d06e7sy69f2";
String pageId = "a4f85an7-9576-4125-adn9-7d06e7sy69f2";
table.setPageID(pageId);
table.setPageUID(pageId+user.getUID());
table.setPageUID(pageId + user.getUID());
table.setPagesize(PageIdConst.getPageSize(pageId, user.getUID()));
table.setBackfields("");

View File

@ -583,7 +583,25 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct
// lambdaQueryChainWrapper.in(SalaryAcctEmployeePO::getIncomeCategory, param.getIncomeCategory().stream().map(Object::toString).collect(Collectors.toList()));
// }
List<SalaryAcctEmployeePO> list = getSalaryAcctEmployeeMapper().listSome(lambdaQueryChainWrapper);
//排除未归档数据
List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll();
List<Long> salaryAcctRecordIds = salaryAcctRecordPOS.stream()
.filter(po -> !Objects.equals(po.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()))
.map(SalaryAcctRecordPO::getId)
.collect(Collectors.toList());
List<SalaryAcctEmployeePO> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
//分片查询
List<List<Long>> partition = Lists.partition(salaryAcctRecordIds, 500);
List<SalaryAcctEmployeePO> empList = new ArrayList<>();
partition.forEach(part -> {
lambdaQueryChainWrapper.setSalaryAcctRecordIds(salaryAcctRecordIds);
empList.addAll(getSalaryAcctEmployeeMapper().listSome(lambdaQueryChainWrapper));
});
list = empList;
}
if (CollectionUtils.isEmpty(list)) {
return Lists.newArrayList();
}

View File

@ -18,6 +18,8 @@ import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
import com.engine.salary.mapper.salarybill.SalarySendMapper;
import com.engine.salary.report.service.SalaryStatisticsReportService;
import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl;
import com.engine.salary.service.*;
import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum;
import com.engine.salary.sys.service.SalarySysConfService;
@ -96,6 +98,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalaryAcctReportServiceImpl.class, user);
}
private SalaryStatisticsReportService getSalaryStatisticsReportService(User user) {
return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user);
}
@Override
public SalaryAcctRecordPO getById(Long id) {
@ -551,6 +557,9 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
// 生成工资单
getSalarySendService(user).generateSalaryBill(salaryAcctRecordId);
//删除报表缓存
getSalaryStatisticsReportService(user).removeReportCache();
// 记录日志
// String targetName = getLogTargetNameById(salaryAcctRecordId);
@ -675,6 +684,9 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
salaryAcctRecordPO.setStatus(SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue());
salaryAcctRecordPO.setUpdateTime(new Date());
getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO);
//删除报表缓存
getSalaryStatisticsReportService(user).removeReportCache();
}

View File

@ -29,6 +29,8 @@ import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper;
import com.engine.salary.report.service.SalaryStatisticsReportService;
import com.engine.salary.report.service.impl.SalaryStatisticsReportServiceImpl;
import com.engine.salary.service.*;
import com.engine.salary.sys.constant.SalarySysConstant;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
@ -167,6 +169,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
private SalaryStatisticsReportService getSalaryStatisticsReportService(User user) {
return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user);
}
private SalaryCheckResultService salaryCheckResultService;
@ -584,6 +590,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
}
// 存储薪资核算结果数据来源日志
salaryAcctResultPOS = getSalaryAcctRecordService(user).listBySalaryAcctEmpId(saveParam.getSalaryAcctEmpId());
saveSalaryAcctResultLog(salaryAcctResultPOSOld,salaryAcctResultPOS);
@ -638,6 +645,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
encryptUtil.encryptList(list, SalaryAcctResultPO.class);
List<List<SalaryAcctResultPO>> partition = Lists.partition(list, 100);
partition.forEach(getSalaryAcctResultMapper()::batchInsert);
}
}