Merge remote-tracking branch 'origin/feature/操作日志组件' into feature/操作日志组件

This commit is contained in:
sy 2024-02-22 15:24:12 +08:00
commit e4cbcdd400
7 changed files with 140 additions and 47 deletions

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salarysob.po;
import com.engine.salary.elog.annotation.ElogTransform;
import com.engine.salary.enums.SalaryRoundingModeEnum;
import com.engine.salary.enums.SalaryValueTypeEnum;
import lombok.AllArgsConstructor;
@ -23,6 +24,7 @@ import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
//hrsa_salary_sob_item
@ElogTransform( name="薪资账套薪资项目" )
public class SalarySobItemPO {
/**

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salarysob.po;
import com.engine.salary.elog.annotation.ElogTransform;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -17,77 +18,110 @@ import java.util.Date;
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@ElogTransform( name="薪资账套" )
//hrsa_salary_sob
public class SalarySobPO {
/**
* 主键id
*/
@ElogTransform( name="主键" )
private Long id;
/**
* 名称
*/
@ElogTransform( name="名称" )
private String name;
/**
* 个税扣缴义务人的主键id
*/
@ElogTransform( name="个税扣缴义务人id" )
private Long taxAgentId;
/**
* 应税项目1:正常工资薪金所得
*/
@ElogTransform( name="薪资类型" )
private Integer incomeCategory;
/**
* 薪资周期1:上上月2:上月3:本月4:下月
*/
@ElogTransform( name="薪资周期" )
private Integer salaryCycleType;
/**
* 薪资周期的起始日期
*/
@ElogTransform( name="薪资周期起始日期" )
private Integer salaryCycleFromDay;
/**
* 税款所属期1:上上月2:上月3:本月4:下月
*/
@ElogTransform( name="税款所属期" )
private Integer taxCycleType;
/**
* 考勤周期1:上上月2:上月3:本月4:下月
*/
@ElogTransform( name="考勤周期" )
private Integer attendCycleType;
/**
* 考勤周期的起始日期
*/
@ElogTransform( name="考勤周期起始日期" )
private Integer attendCycleFromDay;
/**
* 社保福利所属期1:上上月2:上月3:本月4:下月
*/
@ElogTransform( name="社保福利所属期" )
private Integer socialSecurityCycleType;
/**
* 是否禁用0正常使用1禁用
*/
@ElogTransform( name="是否禁用" )
private Integer disable;
/**
* 描述
*/
@ElogTransform( name="描述" )
private String description;
/**
* 创建人
*/
@ElogTransform( name="创建人" )
private Long creator;
/**
* 创建时间
*/
@ElogTransform( name="创建时间" )
private Date createTime;
/**
* 更新时间
*/
@ElogTransform( name="更新时间" )
private Date updateTime;
/**
* 是否已删除0未删除1已删除
*/
@ElogTransform( name="是否已删除" )
private Integer deleteType;
/**
* 租户ID
*/
@ElogTransform( name="租户" )
private String tenantKey;
Collection<Long> ids;

View File

@ -1,5 +1,6 @@
package com.engine.salary.report.entity.bo;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
@ -932,6 +933,16 @@ public class SalaryStatisticsReportBO {
return sumDecimal;
}
private static String handle4GroupValue(String dimCode, SalaryAcctEmployeePO sa, Map<Long, Map<String, String>> salaryAcctResultValueMap, SalaryStatisticsItemPO item) {
if (salaryAcctResultValueMap.get(sa.getId()) != null) {
String value = salaryAcctResultValueMap.get(sa.getId()).get(dimCode);
if (StringUtils.isNotBlank(value)) {
return value;
}
}
return "";
}
/**
* 定量-单项式分组list分割
*
@ -960,6 +971,22 @@ public class SalaryStatisticsReportBO {
return list.stream().filter(i -> ids.contains(i.getId())).collect(Collectors.toList());
}
public static List<SalaryAcctEmployeePO> listAcctEmpByRationGroupIndividual(String groupIndividual, String dimCode, List<SalaryAcctEmployeePO> list, Map<Long, String> yearMap, Map<Long, Map<String, String>> salaryAcctResultValueMap, List<SalaryStatisticsItemPO> salaryStatisticsItemList) {
Set<Long> ids = Sets.newHashSet();
for (SalaryAcctEmployeePO sa : list) {
salaryStatisticsItemList.forEach(item -> {
String value = handle4GroupValue(dimCode, sa, salaryAcctResultValueMap, item);
if (StrUtil.equals(groupIndividual, value)) {
ids.add(sa.getId());
}
});
}
return list.stream().filter(i -> ids.contains(i.getId())).collect(Collectors.toList());
}
public static Map<String, Boolean> checkLoad(List<SalaryStatisticsItemPO> salaryStatisticsItemList) {
boolean isNow = false;
boolean isLast = false;

View File

@ -13,26 +13,26 @@ import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
@ToString
//hrsa_salary_statistics_item")
//薪酬报表统计子表自定义统计项")
//hrsa_salary_statistics_item
//薪酬报表统计子表自定义统计项
@ElogTransform(name = "统计项目")
public class SalaryStatisticsItemPO implements Serializable {
private static final long serialVersionUID = 5335849418826222822L;
//主键id")
//主键id
@ElogTransform(name = "主键id")
private Long id;
//统计报表id")
//统计报表id
@ElogTransform(name = "报表id")
private Long statReportId;
//统计项名称")
//统计项名称
@ElogTransform(name = "统计项名称")
private String itemName;
//统计项集合")
//统计项集合
@ElogTransform(name = "统计项集合")
private String itemValue;
@ -49,7 +49,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//计数规则")
//计数规则
@ElogTransform(name = "计数规则")
private String countRule;
@ -66,7 +66,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//求和规则")
//求和规则
@ElogTransform(name = "求和规则")
private String sumRule;
@ -83,7 +83,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//平均值规则")
//平均值规则
@ElogTransform(name = "平均值规则")
private String avgRule;
@ -100,7 +100,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//最大值规则")
//最大值规则
@ElogTransform(name = "最大值规则")
private String maxRule;
@ -117,7 +117,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//最小值规则")
//最小值规则
@ElogTransform(name = "最小值规则")
private String minRule;
@ -134,7 +134,7 @@ public class SalaryStatisticsItemPO implements Serializable {
* }
* jsonToString
*/
//中位数规则")
//中位数规则
@ElogTransform(name = "中位数规则")
private String medianRule;
@ -177,7 +177,7 @@ public class SalaryStatisticsItemPO implements Serializable {
@ElogTransform(name = "平铺是否使用")
private String tileRule;
//顺序")
//顺序
@ElogTransform(name = "顺序")
private Integer indexValue;
@ -186,23 +186,23 @@ public class SalaryStatisticsItemPO implements Serializable {
*
* @see UnitTypeEnum
*/
//统计单位")
//统计单位
@ElogTransform(name = "统计单位")
private Integer unitType;
//创建时间")
//创建时间
private Date createTime;
//更新时间")
//更新时间
private Date updateTime;
//创建人")
//创建人
private Long creator;
//是否删除")
//是否删除
private Integer deleteType;
//租户key")
//租户key
private String tenantKey;
private Collection<Long> ids;

View File

@ -423,7 +423,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
Map<Long, List<SalaryAcctResultPO>> salaryAcctEmpResultMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
Map<Long, Map<String, String>> map = new HashMap<>();
salaryAcctEmpResultMap.forEach((k, v) -> {
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), p -> Util.null2o(p.getResultValue()), (key1, key2) -> key2));
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), SalaryAcctResultPO::getResultValue, (key1, key2) -> key2));
map.put(k, collect);
});
@ -469,7 +469,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
List<Long> finalSalaryAcctEmpIds = getSalaryAcctResultService(user).listAcctEmpIdByAcctEmpId(salaryAcctEmployeeIds);
Map<Long, List<SalaryAcctResultPO>> salaryAcctEmpResultMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
salaryAcctEmpResultMap.forEach((k, v) -> {
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), p -> Util.null2o(p.getResultValue()), (key1, key2) -> key2));
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), SalaryAcctResultPO::getResultValue, (key1, key2) -> key2));
resultMap.put(k, collect);
});
salaryAcctEmployeeIds.stream().forEach(id -> {
@ -497,7 +497,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
Map<Long, List<SalaryAcctResultPO>> salaryAcctEmpResultMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
Map<Long, Map<String, String>> map = new HashMap<>();
salaryAcctEmpResultMap.forEach((k, v) -> {
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), p -> Util.null2o(p.getResultValue()), (key1, key2) -> key2));
Map<String, String> collect = v.stream().collect(Collectors.toMap(p -> Util.null2String(p.getSalaryItemId()), p -> Util.null2String(p.getResultValue()), (key1, key2) -> key2));
map.put(k, collect);
});
@ -520,12 +520,11 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
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 + id + "_" + paramMd5);
}
}
);
if (StringUtils.isNotBlank(paramMd5)) {
//条件对应的结果
getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5);
}
});
getSalaryCacheService(user).remove(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id);
}
}
@ -548,14 +547,13 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
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);
}
}
);
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);
}
}
@ -664,7 +662,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
case SalaryStatisticsDimensionConstant.DM_COMPANY_YEAR:
return buildCompanyYearRecords(data, salaryAcctResultValueMap);
default:
return new PageInfo<>();
return buildSalaryItemRecords(dimension, data, salaryAcctResultValueMap);
}
// 定量-组距式分组
} else if (SalaryStatisticsDimensionTypeEnum.RATION_GROUP_SPACING.getValue().equals(dimension.getDimType())) {
@ -1088,9 +1086,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
Map<Long, List<SalaryAcctEmployeePO>> sameEmployeeListMap = data.getSameList().stream().collect(Collectors.groupingBy(SalaryAcctEmployeePO::getEmployeeId));
List<Long> empIds = accountDetailPOList.stream().map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList());
Map<Long, DataCollectionEmployee> employeeByIdMap = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds)
.stream()
.collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o));
Map<Long, DataCollectionEmployee> employeeByIdMap = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds).stream().collect(Collectors.toMap(DataCollectionEmployee::getEmployeeId, o -> o));
//人员维度扩展属性
EmployeeInfoExpandDTO employeeInfoExpandDTO = getSalaryStatisticsDimensionService(user).getExpandFieldSettings("dim_employee");
@ -1108,11 +1104,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
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).getUsername());
fieldSettings.forEach(
fieldSetting -> {
temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k, new HashMap<>()).get(fieldSetting.getField()));
}
);
fieldSettings.forEach(fieldSetting -> {
temp.put(fieldSetting.getField(), expandEmployeeMap.getOrDefault(k, new HashMap<>()).get(fieldSetting.getField()));
});
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).getUsername())) {
@ -1951,6 +1945,41 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary
return result;
}
private PageInfo<Map<String, Object>> buildSalaryItemRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataDTO data, Map<Long, Map<String, String>> salaryAcctResultValueMap) {
//查询薪资项目存在的种类维度
Set<String> dimensionSet = new HashSet<>();
for (Long k : salaryAcctResultValueMap.keySet()) {
Map<String, String> map = salaryAcctResultValueMap.get(k);
dimensionSet.add(map.getOrDefault(dimension.getDimCode(), ""));
}
PageInfo<Map<String, Object>> result = new PageInfo<>();
List<Map<String, Object>> records = new ArrayList<>();
Map<Long, String> empIdYearMap = new HashMap<>();
Map<Long, String> lastEmpIdYearMap = new HashMap<>();
Map<Long, String> sameEmpIdYearMap = new HashMap<>();
String dimensionValue = data.getDimensionValue();
dimensionSet.stream().sorted((a,b)->b.length()-a.length()).forEach(k -> {
if (dimensionValue == null) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> lastSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, dimension.getDimCode(), data.getLastList(), lastEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
List<SalaryAcctEmployeePO> sameSalaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, dimension.getDimCode(), data.getSameList(), sameEmpIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
Map<String, Object> temp = new HashMap<>();
temp.put(DM, k);
temp.putAll(SalaryStatisticsReportBO.calculateItem(salaryAcctEmployees, lastSalaryAcctEmployees, sameSalaryAcctEmployees, salaryAcctResultValueMap, data.getSalaryStatisticsItemList()));
records.add(temp);
} else if (StringUtils.equals(dimensionValue, k)) {
List<SalaryAcctEmployeePO> salaryAcctEmployees = SalaryStatisticsReportBO.listAcctEmpByRationGroupIndividual(k, dimension.getDimCode(), data.getList(), empIdYearMap, salaryAcctResultValueMap, data.getSalaryStatisticsItemList());
data.setListByDimensionValue(salaryAcctEmployees);
}
});
result.setList(records);
return result;
}
// private PageInfo<Map<String, Object>> buildRationGroupSpacing4NoItemRecords(SalaryStatisticsDimensionPO dimension, SalaryStatisticsReportDataDTO data, Map<Long, Map<String, String>> salaryAcctResultValueMap) {
// PageInfo<Map<String, Object>> result = new PageInfo<>();
// List<Map<String, Object>> records = new ArrayList<>();

View File

@ -114,6 +114,7 @@ public class SalaryStatisticsDimensionWrapper extends Service {
* @return
*/
public SalaryStatisticsDimensionFormDTO getFrom(Long id) {
List<SalaryItemPO> salaryItemList = salaryItemService(user).listAll();
List<WeaFormOption> statsDimOptions = Lists.newArrayList();
// statsDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_SEX, SalaryI18nUtil.getI18nLabel(98622, "性别")));
@ -129,12 +130,12 @@ public class SalaryStatisticsDimensionWrapper extends Service {
// statsDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_AGE, SalaryI18nUtil.getI18nLabel(174001, "年龄")));
statsDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_WORK_YEAR, SalaryI18nUtil.getI18nLabel(174000, "工龄")));
statsDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_COMPANY_YEAR, SalaryI18nUtil.getI18nLabel(174003, "司龄")));
statsDimOptions.addAll(salaryItemList.stream().map(item -> new WeaFormOption(item.getId().toString(), item.getName())).collect(Collectors.toList()));
List<WeaFormOption> groupDimOptions = Lists.newArrayList();
// groupDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_AGE, SalaryI18nUtil.getI18nLabel(174001, "年龄")));
groupDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_WORK_YEAR, SalaryI18nUtil.getI18nLabel(174000, "工龄")));
groupDimOptions.add(new WeaFormOption(SalaryStatisticsDimensionConstant.DM_COMPANY_YEAR, SalaryI18nUtil.getI18nLabel(174003, "司龄")));
List<SalaryItemPO> salaryItemList = salaryItemService(user).listAll();
groupDimOptions.addAll(salaryItemList.stream()
.filter(item -> SalaryDataTypeEnum.NUMBER.getValue().equals(item.getDataType()))
.map(item -> new WeaFormOption(item.getId().toString(), item.getName())).collect(Collectors.toList()));

View File

@ -269,7 +269,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
loggerContext.setUser(user);
loggerContext.setTargetId("" + salarySob.getId());
loggerContext.setTargetName(salarySob.getName());
loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue());
loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "编辑薪资账套薪资项目"));
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "编辑薪资账套薪资项目"));
SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext);