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
|
|
|
|
}
|
|
|
|
|
|
}
|