薪酬系统-工资单模板,复制功能改造

This commit is contained in:
sy 2024-01-23 10:52:53 +08:00
parent e8aee9ab64
commit 94d72cd93c
2 changed files with 56 additions and 2 deletions

View File

@ -23,6 +23,8 @@ public class SalaryTemplateCopyParam {
// 模板名称")
private String name;
private Long salarySobId;
public static void checkParam(SalaryTemplateCopyParam copyParam) {
if (copyParam.getId() == null) {
throw new SalaryRunTimeException("id必选");

View File

@ -2,6 +2,7 @@ package com.engine.salary.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SalarySobBiz;
@ -16,15 +17,17 @@ import com.engine.salary.entity.salaryBill.param.SalaryTemplateQueryParam;
import com.engine.salary.entity.salaryBill.param.SalaryTemplateSaveParam;
import com.engine.salary.entity.salaryBill.po.SalaryBillItemNamePO;
import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
import com.engine.salary.entity.salarysob.po.SalarySobItemHidePO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.enums.salarybill.SalaryTemplateWhetherEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salarysob.SalarySobEmpFieldMapper;
import com.engine.salary.service.*;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.mzlion.core.utils.BeanUtils;
@ -68,6 +71,14 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
return ServiceUtil.getService(SalaryBillItemNameServiceImpl.class, user);
}
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
return (SalarySobEmpFieldService) ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
}
private SalarySobEmpFieldMapper getSalarySobEmpFieldMapper() {
return MapperProxyFactory.getProxy(SalarySobEmpFieldMapper.class);
}
@Override
public SalaryTemplatePO getById(Long id) {
return mapper.getById(id);
@ -272,6 +283,47 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
salaryTemplateNew.setId(null);
salaryTemplateNew.setName(copyParam.getName());
salaryTemplateNew.setUseType(SalaryTemplateWhetherEnum.FALSE.getValue());
//20240122逻辑变更拷贝工资单模板时可变更薪资账套
if (copyParam.getSalarySobId() != null && !copyParam.getSalarySobId().equals(salaryTemplate.getSalarySobId())) {
// 查询薪资账套的员工信息字段
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(copyParam.getSalarySobId());
List<String> empFieldCodeList = salarySobEmpFieldPOS.stream().map(SalarySobEmpFieldPO::getFieldCode).collect(Collectors.toList());
Map<String, Long> empFieldCodeWithIdMap = SalaryEntityUtil.convert2Map(salarySobEmpFieldPOS, SalarySobEmpFieldPO::getFieldCode, SalarySobEmpFieldPO::getId);
// 查询薪资账套的薪资项目副本
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobIdWithHideItem(copyParam.getSalarySobId());
List<Long> salaryItemIdList = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList());
//拷贝数据中的薪资项目
List<SalaryTemplateSalaryItemSetListDTO> salaryItemSettingList = JSONArray.parseArray(salaryTemplate.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
for (SalaryTemplateSalaryItemSetListDTO salaryItemSetting : salaryItemSettingList) {
if ("111111111111111111".equals(salaryItemSetting.getGroupId()) && salaryItemSetting.getItems() != null) {
List<SalaryTemplateSalaryItemListDTO> newItems = new ArrayList<>();
for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) {
SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId()));
if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) {
templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString());
templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString());
newItems.add(templateItem);
}
}
salaryItemSetting.setItems(newItems);
} else {
List<SalaryTemplateSalaryItemListDTO> newItems = new ArrayList<>();
for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) {
SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId()));
if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) {
templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString());
templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString());
newItems.add(templateItem);
}
}
salaryItemSetting.setItems(newItems);
}
}
List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryItemSettingList = JSONArray.parseArray(salaryTemplate.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class);
}
mapper.insert(salaryTemplateNew);
// 复制工资单自定义名称信息