weaver-hrm-salary/src/com/engine/salary/entity/salarysob/bo/SalarySobItemBO.java

238 lines
11 KiB
Java
Raw Normal View History

2022-03-24 16:59:52 +08:00
package com.engine.salary.entity.salarysob.bo;
2022-03-25 18:05:07 +08:00
import com.engine.salary.constant.SalaryDefaultTenantConstant;
2022-03-24 16:59:52 +08:00
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.po.*;
2022-11-16 10:32:05 +08:00
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
2022-03-24 16:59:52 +08:00
import com.engine.salary.util.SalaryEntityUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import dm.jdbc.util.IdGenerator;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.math.NumberUtils;
2023-07-18 14:03:59 +08:00
import java.util.*;
2022-03-24 16:59:52 +08:00
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 薪资账套薪资项目
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalarySobItemBO {
/**
* 默认包含的员工信息字段转换成薪资账套员工信息字段po
*
* @param salarySobId 薪资账套id
* @param defaultEmpFieldList 默认包含的员工信息字段
* @param employeeId 当前登陆人员id
* @return
*/
2022-03-25 18:05:07 +08:00
public static List<SalarySobEmpFieldPO> convert2EmpFieldPO(Long salarySobId, List<SalarySobDefaultEmpFieldPO> defaultEmpFieldList, Long employeeId) {
2022-03-24 16:59:52 +08:00
Date now = new Date();
return defaultEmpFieldList.stream()
.map(field -> new SalarySobEmpFieldPO()
.setSalarySobId(salarySobId)
.setFieldCode(field.getFieldCode())
.setSortedIndex(field.getSortedIndex())
.setCanDelete(field.getCanDelete())
.setCreator(employeeId)
.setCreateTime(now)
.setUpdateTime(now)
.setDeleteType(0)
2022-03-25 18:05:07 +08:00
.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY))
2022-03-24 16:59:52 +08:00
.collect(Collectors.toList());
}
/**
* 转换成薪资账套的薪资项目副本po
*
* @param salarySobId
* @param salarySobDefaultItemGroupPOS
* @param salarySobDefaultItemPOS
* @param defaultSalaryItemPOS
* @param employeeId
* @param tenantKey
* @return
*/
public static Result initSalarySobItem(Long salarySobId,
List<SalarySobDefaultItemGroupPO> salarySobDefaultItemGroupPOS,
List<SalarySobDefaultItemPO> salarySobDefaultItemPOS,
List<SalaryItemPO> defaultSalaryItemPOS,
Long employeeId, String tenantKey) {
Date now = new Date();
2023-07-18 14:03:59 +08:00
// 需要保存的隐藏项目
List<SalarySobItemHidePO> needInsertItemHides = new ArrayList<>();
2022-03-24 16:59:52 +08:00
// 处理薪资账套默认的薪资项目分类
Map<Long, Long> salarySobItemGroupIdMap = Maps.newHashMapWithExpectedSize(salarySobDefaultItemGroupPOS.size());
List<SalarySobItemGroupPO> salarySobItemGroups = Lists.newArrayListWithExpectedSize(salarySobDefaultItemGroupPOS.size());
for (SalarySobDefaultItemGroupPO salarySobDefaultItemGroupPO : salarySobDefaultItemGroupPOS) {
long salarySobItemGroupId = IdGenerator.generate();
salarySobItemGroups.add(SalarySobItemGroupPO.builder()
.id(salarySobItemGroupId)
.name(salarySobDefaultItemGroupPO.getName())
.salarySobId(salarySobId)
.sortedIndex(salarySobDefaultItemGroupPO.getSortedIndex())
.description(salarySobDefaultItemGroupPO.getDescription())
.creator(employeeId)
.createTime(now)
.updateTime(now)
.tenantKey(tenantKey)
.deleteType(NumberUtils.INTEGER_ZERO)
.build());
salarySobItemGroupIdMap.put(salarySobDefaultItemGroupPO.getId(), salarySobItemGroupId);
2023-07-18 14:03:59 +08:00
// 保存薪资项目分类隐藏信息
needInsertItemHides.add(SalarySobItemHidePO.builder()
.id(IdGenerator.generate())
.salarySobId(salarySobId)
.salaryItemId(salarySobItemGroupId)
.isGroup(1)
.itemHide(0L)
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
2022-03-24 16:59:52 +08:00
}
2023-07-18 14:03:59 +08:00
2022-03-24 16:59:52 +08:00
List<SalarySobItemPO> salarySobItems = Lists.newArrayListWithExpectedSize(defaultSalaryItemPOS.size());
// 处理薪资账套默认的系统薪资项目
Set<Long> sysSalaryItemIds = SalaryEntityUtil.properties(salarySobDefaultItemPOS, SalarySobDefaultItemPO::getSysSalaryItemId);
Map<Long, SalaryItemPO> salaryItemPOMap = defaultSalaryItemPOS.stream()
.filter(salaryItemPO -> sysSalaryItemIds.contains(salaryItemPO.getSysSalaryItemId()))
.collect(Collectors.toMap(SalaryItemPO::getSysSalaryItemId, Function.identity(), (a, b) -> a));
for (SalarySobDefaultItemPO salarySobDefaultItemPO : salarySobDefaultItemPOS) {
SalaryItemPO salaryItemPO = salaryItemPOMap.get(salarySobDefaultItemPO.getSysSalaryItemId());
2022-03-25 18:05:07 +08:00
if (salaryItemPO==null)continue;
2022-03-24 16:59:52 +08:00
salarySobItems.add(SalarySobItemPO.builder()
.salarySobId(salarySobId)
.salarySobItemGroupId(salarySobItemGroupIdMap.getOrDefault(salarySobDefaultItemPO.getSobDefaultItemGroupId(), NumberUtils.LONG_ZERO))
.salaryItemId(salaryItemPO.getId())
.formulaId(salaryItemPO.getFormulaId())
.sortedIndex(salarySobDefaultItemPO.getSortedIndex())
.description(salaryItemPO.getDescription())
.canDelete(salarySobDefaultItemPO.getCanDelete())
.creator(employeeId)
.createTime(now)
.updateTime(now)
.tenantKey(tenantKey)
.deleteType(NumberUtils.INTEGER_ZERO)
.build());
2023-07-18 14:03:59 +08:00
// 保存薪资项目隐藏信息
needInsertItemHides.add(SalarySobItemHidePO.builder()
.id(IdGenerator.generate())
.salarySobId(salarySobId)
.salaryItemId(salaryItemPO.getId())
.isGroup(0)
2023-07-18 17:00:09 +08:00
.itemHide(Long.valueOf(salaryItemPO.getHideDefault()== null ? 0 : salaryItemPO.getHideDefault()))
2023-07-18 14:03:59 +08:00
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
2022-03-24 16:59:52 +08:00
}
// 处理薪资账套默认的自定义薪资项目(开启了"默认使用"
for (int i = 0; i < defaultSalaryItemPOS.size(); i++) {
SalaryItemPO salaryItemPO = defaultSalaryItemPOS.get(i);
if (sysSalaryItemIds.contains(salaryItemPO.getSysSalaryItemId())) {
continue;
}
2022-11-22 14:36:59 +08:00
// 获取系统默认回算薪资项目的系统id
List<Long> backItemSysItemIds = SalarySobBackItemBO.getDefault().stream().map(SalarySobDefaultBackItemPO::getSysSalaryItemId).collect(Collectors.toList());
if (backItemSysItemIds.contains(salaryItemPO.getSysSalaryItemId())) {
continue;
}
2022-03-24 16:59:52 +08:00
salarySobItems.add(SalarySobItemPO.builder()
.salarySobId(salarySobId)
.salarySobItemGroupId(NumberUtils.LONG_ZERO)
.salaryItemId(salaryItemPO.getId())
.formulaId(salaryItemPO.getFormulaId())
.sortedIndex(i)
.description(salaryItemPO.getDescription())
.canDelete(NumberUtils.INTEGER_ONE)
.creator(employeeId)
.createTime(now)
.updateTime(now)
.tenantKey(tenantKey)
.deleteType(NumberUtils.INTEGER_ZERO)
.build());
2023-07-18 14:03:59 +08:00
// 保存薪资项目隐藏信息
needInsertItemHides.add(SalarySobItemHidePO.builder()
.id(IdGenerator.generate())
.salarySobId(salarySobId)
.salaryItemId(salaryItemPO.getId())
.isGroup(0)
2023-07-18 17:00:09 +08:00
.itemHide(Long.valueOf(salaryItemPO.getHideDefault() == null ? 0 : salaryItemPO.getHideDefault()))
2023-07-18 14:03:59 +08:00
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
2022-03-24 16:59:52 +08:00
}
2022-11-22 14:36:59 +08:00
2022-11-16 10:32:05 +08:00
// 薪资账套默认的回算薪资项目
List<SalarySobBackItemPO> salarySobBackItems = Lists.newArrayListWithExpectedSize(2);
for (SalarySobDefaultBackItemPO salarySobDefaultBackItemPO : SalarySobBackItemBO.getDefault()) {
Map<Long, SalaryItemPO> sysSalaryItemMap = SalaryEntityUtil.convert2Map(defaultSalaryItemPOS, SalaryItemPO::getSysSalaryItemId);
SalaryItemPO salaryItemPO = sysSalaryItemMap.get(salarySobDefaultBackItemPO.getSysSalaryItemId());
SalarySobBackItemPO salarySobBackItemPO = SalarySobBackItemPO.builder()
.id(IdGenerator.generate())
.salarySobId(salarySobId)
.salaryItemId(salaryItemPO.getId())
.salaryItemCode(salaryItemPO.getCode())
.dataType(salaryItemPO.getDataType())
.roundingMode(salaryItemPO.getRoundingMode())
.pattern(salaryItemPO.getPattern())
.valueType(salaryItemPO.getValueType())
.formulaId(salarySobDefaultBackItemPO.getFormulaId())
.backCalcType(salarySobDefaultBackItemPO.getBackCalcType())
.creator(employeeId)
2022-11-16 14:13:50 +08:00
.createTime(now)
.updateTime(now)
2022-11-16 10:32:05 +08:00
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.tenantKey(tenantKey).build();
salarySobBackItems.add(salarySobBackItemPO);
}
2023-07-18 14:03:59 +08:00
return new Result().setNeedInsertSalarySobItems(salarySobItems).setNeedInsertSalarySobItemGroups(salarySobItemGroups)
.setNeedInsertSalarySobBackItems(salarySobBackItems).setNeedInsertItemHides(needInsertItemHides);
2022-03-24 16:59:52 +08:00
}
@Data
@Accessors(chain = true)
public static class Result {
/**
* 需要保存的薪资项目
*/
List<SalarySobItemPO> needInsertSalarySobItems;
/**
* 需要保存的薪资项目分类
*/
List<SalarySobItemGroupPO> needInsertSalarySobItemGroups;
2022-11-16 10:32:05 +08:00
/**
* 需要保存的回算薪资项目
*/
List<SalarySobBackItemPO> needInsertSalarySobBackItems;
2023-07-18 14:03:59 +08:00
/**
* 需要保存的薪资项目隐藏信息
*/
List<SalarySobItemHidePO> needInsertItemHides;
2022-03-24 16:59:52 +08:00
}
}