2022-03-21 20:09:10 +08:00
|
|
|
|
package com.engine.salary.service.impl;
|
|
|
|
|
|
|
2022-03-23 20:54:08 +08:00
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.core.impl.Service;
|
2022-03-23 18:41:38 +08:00
|
|
|
|
import com.engine.salary.biz.SalarySobBiz;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.biz.SalarySobItemBiz;
|
2022-03-25 10:31:31 +08:00
|
|
|
|
import com.engine.salary.biz.SalarySobItemGroupBiz;
|
|
|
|
|
|
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
2022-04-14 20:46:17 +08:00
|
|
|
|
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
2022-03-23 18:41:38 +08:00
|
|
|
|
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
|
|
|
|
|
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
|
|
|
|
|
|
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
|
|
|
|
|
import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam;
|
2022-08-24 10:31:42 +08:00
|
|
|
|
import com.engine.salary.entity.salarysob.po.*;
|
2022-03-23 18:41:38 +08:00
|
|
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
|
|
|
|
|
import com.engine.salary.service.*;
|
|
|
|
|
|
import com.engine.salary.util.SalaryEntityUtil;
|
|
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
2022-04-18 14:45:12 +08:00
|
|
|
|
import com.engine.salary.util.valid.ValidUtil;
|
2022-05-10 17:26:58 +08:00
|
|
|
|
import dm.jdbc.util.IdGenerator;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
2022-03-25 10:31:31 +08:00
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
2022-03-23 20:54:08 +08:00
|
|
|
|
import weaver.hrm.User;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
import java.util.*;
|
2022-08-24 10:31:42 +08:00
|
|
|
|
import java.util.stream.Collectors;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 薪资账套的薪资项目副本
|
|
|
|
|
|
* <p>Copyright: Copyright (c) 2022</p>
|
|
|
|
|
|
* <p>Company: 泛微软件</p>
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author qiantao
|
|
|
|
|
|
* @version 1.0
|
|
|
|
|
|
**/
|
|
|
|
|
|
public class SalarySobItemServiceImpl extends Service implements SalarySobItemService {
|
|
|
|
|
|
|
|
|
|
|
|
private SalarySobItemBiz salarySobItemMapper = new SalarySobItemBiz();
|
2022-03-23 18:41:38 +08:00
|
|
|
|
private SalarySobBiz salarySobBiz = new SalarySobBiz();
|
2022-03-23 20:54:08 +08:00
|
|
|
|
|
2022-03-25 10:31:31 +08:00
|
|
|
|
private SalarySobItemGroupBiz salarySobItemGroupBiz = new SalarySobItemGroupBiz();
|
|
|
|
|
|
|
2022-03-23 20:54:08 +08:00
|
|
|
|
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
|
|
|
|
|
|
return (SalarySobEmpFieldService) ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private SalarySobItemGroupService getSalarySobItemGroupService(User user) {
|
|
|
|
|
|
return (SalarySobItemGroupService) ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-24 10:31:42 +08:00
|
|
|
|
private SalarySobItemHideService getSalarySobItemHideService(User user) {
|
|
|
|
|
|
return (SalarySobItemHideService) ServiceUtil.getService(SalarySobItemHideServiceImpl.class, user);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-04-18 14:45:12 +08:00
|
|
|
|
private SalaryFormulaService getSalaryFormulaService(User user) {
|
|
|
|
|
|
return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user);
|
|
|
|
|
|
}
|
2022-03-28 11:38:33 +08:00
|
|
|
|
|
|
|
|
|
|
private SalaryItemService getSalaryItemService(User user) {
|
|
|
|
|
|
return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user);
|
|
|
|
|
|
}
|
2022-12-02 17:35:14 +08:00
|
|
|
|
|
|
|
|
|
|
private SalarySobBackItemService getSalarySobBackItemService(User user) {
|
|
|
|
|
|
return (SalarySobBackItemService) ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
|
|
|
|
|
|
}
|
2022-03-21 20:09:10 +08:00
|
|
|
|
// private LoggerTemplate salarySobLoggerTemplate;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> list() {
|
|
|
|
|
|
return salarySobItemMapper.listAll();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobId(Long salarySobId) {
|
|
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).build());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-24 10:31:42 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIdWithHideItem(Long salarySobId) {
|
|
|
|
|
|
return salarySobItemMapper.listBySalarySobIdWithHideItem(SalarySobItemPO.builder().salarySobId(salarySobId).build());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIdAndGroupId(Long salarySobId,Collection<Long> salarySobItemGroupIds) {
|
|
|
|
|
|
return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIds(Collection<Long> salarySobIds) {
|
|
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobIds(salarySobIds).build());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIdAndSalaryItemIdNotIn(Long salarySobId, Collection<Long> salaryItemIds) {
|
2022-03-30 11:29:48 +08:00
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).notInSalaryItemIds(salaryItemIds).build());
|
2022-03-23 18:41:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalarySobItemPO> listBySalaryItemIds(Collection<Long> salaryItemIds) {
|
|
|
|
|
|
if (CollectionUtils.isEmpty(salaryItemIds)) {
|
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
|
}
|
2022-03-23 18:41:38 +08:00
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salaryItemIds(salaryItemIds).build());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public List<SalaryItemPO> listBySalarySobId4SalaryItem(Long salarySobId) {
|
|
|
|
|
|
// 查询薪资项目副本
|
|
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobId(salarySobId);
|
|
|
|
|
|
if (CollectionUtils.isEmpty(salarySobItemPOS)) {
|
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
|
}
|
|
|
|
|
|
// 查询薪资项目
|
|
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
2022-03-28 11:38:33 +08:00
|
|
|
|
return getSalaryItemService(user).listByIds(salaryItemIds);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public SalarySobItemAggregateDTO getAggregateBySalarySobId(Long salarySobId) {
|
|
|
|
|
|
// 查询薪资账套
|
|
|
|
|
|
SalarySobPO salarySobPO = salarySobBiz.getById(salarySobId);
|
|
|
|
|
|
if (Objects.isNull(salarySobPO)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
|
|
|
|
|
}
|
|
|
|
|
|
// 查询薪资账套的员工信息字段
|
2022-03-23 20:54:08 +08:00
|
|
|
|
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
// 查询薪资账套的薪资项目分类
|
2022-08-24 10:31:42 +08:00
|
|
|
|
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
// 查询薪资账套的薪资项目副本
|
2022-12-02 17:35:14 +08:00
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS =listBySalarySobIdWithHideItem(salarySobId);
|
|
|
|
|
|
// 回算薪资项目
|
|
|
|
|
|
List<SalarySobBackItemPO> salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
// 薪资账套的薪资项目副本所用的公式id
|
|
|
|
|
|
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
|
2022-12-02 17:35:14 +08:00
|
|
|
|
// 添加薪资回算项目的公式id
|
|
|
|
|
|
formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems,SalarySobBackItemPO::getFormulaId));
|
2022-04-18 14:45:12 +08:00
|
|
|
|
// 查询公式详情
|
|
|
|
|
|
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
2022-12-02 17:35:14 +08:00
|
|
|
|
// 查询薪资账套的薪资项目副本+回算的薪资项目所关联的薪资项目
|
2022-03-23 18:41:38 +08:00
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
2022-12-02 17:35:14 +08:00
|
|
|
|
Set<Long> backCalcItemIds = SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId);
|
|
|
|
|
|
salaryItemIds.addAll(backCalcItemIds);
|
2022-03-28 11:38:33 +08:00
|
|
|
|
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 转换成聚合dto
|
|
|
|
|
|
SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS,
|
2022-12-02 17:35:14 +08:00
|
|
|
|
salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS, salarySobBackItems);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
return salarySobItemAggregateBO.convert2AggregateDTO();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-12-02 17:35:14 +08:00
|
|
|
|
public SalarySobItemAggregateDTO getAggregateWithItemHideBySalarySobId(Long salarySobId, boolean isBackCalc) {
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 查询薪资账套
|
|
|
|
|
|
SalarySobPO salarySobPO = salarySobBiz.getById(salarySobId);
|
|
|
|
|
|
if (Objects.isNull(salarySobPO)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
|
|
|
|
|
}
|
|
|
|
|
|
// 查询薪资账套的员工信息字段
|
|
|
|
|
|
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
|
|
|
|
|
|
// 查询薪资账套的薪资项目分类
|
|
|
|
|
|
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
|
|
|
|
|
|
|
2022-12-02 17:35:14 +08:00
|
|
|
|
if(isBackCalc){
|
|
|
|
|
|
// 回算分类
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 获取关闭显示的分类
|
|
|
|
|
|
List<Long> hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(1).build());
|
|
|
|
|
|
// 过滤关闭显示的薪资项目分类
|
|
|
|
|
|
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(group -> !(hideGroupIDs.contains(group.getId()))).collect(Collectors.toList());
|
|
|
|
|
|
// 获取薪资项目分类ID
|
|
|
|
|
|
List<Long> salarySobItemGroupIds = salarySobItemGroupPOS.stream().map(SalarySobItemGroupPO::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
// 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目)
|
|
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId,salarySobItemGroupIds);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取关闭显示的薪资项目
|
|
|
|
|
|
List<Long> hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build());
|
|
|
|
|
|
salarySobItemPOS = salarySobItemPOS.stream().filter(group -> !(hideItemIDs.contains(group.getSalaryItemId()))).collect(Collectors.toList());
|
|
|
|
|
|
|
2022-12-02 17:35:14 +08:00
|
|
|
|
// 回算薪资项目
|
|
|
|
|
|
List<SalarySobBackItemPO> salarySobBackItems = Collections.emptyList();
|
|
|
|
|
|
if(isBackCalc){
|
|
|
|
|
|
salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 薪资账套的薪资项目副本所用的公式id
|
|
|
|
|
|
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
|
2022-12-02 17:35:14 +08:00
|
|
|
|
formulaIds.addAll(salarySobBackItems.stream().map(SalarySobBackItemPO::getFormulaId).collect(Collectors.toList()));
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 查询公式详情
|
|
|
|
|
|
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
|
|
|
|
|
// 查询薪资账套的薪资项目副本所关联的薪资项目
|
|
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
2022-12-02 17:35:14 +08:00
|
|
|
|
Set<Long> backCalcItemIds = SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId);
|
|
|
|
|
|
salaryItemIds.addAll(backCalcItemIds);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds);
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
// 转换成聚合dto
|
|
|
|
|
|
SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS,
|
2022-12-02 17:35:14 +08:00
|
|
|
|
salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS,salarySobBackItems);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
return salarySobItemAggregateBO.convert2AggregateDTO();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void save(SalarySobItemSaveParam saveParam) {
|
2022-03-25 10:31:31 +08:00
|
|
|
|
|
|
|
|
|
|
Long salarySobId = saveParam.getSalarySobId();
|
|
|
|
|
|
|
2022-03-25 18:05:07 +08:00
|
|
|
|
// 校验
|
2022-04-18 14:45:12 +08:00
|
|
|
|
validSaveParam(saveParam);
|
2022-03-25 18:05:07 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//清除原数据
|
|
|
|
|
|
cleanOldData(salarySobId);
|
|
|
|
|
|
|
|
|
|
|
|
//保存
|
|
|
|
|
|
saveSobItem(saveParam);
|
|
|
|
|
|
|
|
|
|
|
|
//todo 记录日志
|
|
|
|
|
|
// LoggerContext<SalarySobPO> loggerContext = new LoggerContext<>();
|
|
|
|
|
|
// loggerContext.setTargetId("" + salarySobPO.getId());
|
|
|
|
|
|
// loggerContext.setTargetName(salarySobPO.getName());
|
|
|
|
|
|
// loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue());
|
|
|
|
|
|
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98613, "编辑薪资账套薪资项目"));
|
|
|
|
|
|
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98613, "编辑薪资账套薪资项目"));
|
|
|
|
|
|
// salarySobLoggerTemplate.write(loggerContext);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 校验
|
|
|
|
|
|
*/
|
2022-04-18 14:45:12 +08:00
|
|
|
|
private void validSaveParam(SalarySobItemSaveParam saveParam) {
|
|
|
|
|
|
|
|
|
|
|
|
ValidUtil.doValidator(saveParam);
|
|
|
|
|
|
|
2022-06-21 11:38:55 +08:00
|
|
|
|
//账套存在
|
2022-04-18 14:45:12 +08:00
|
|
|
|
Long salarySobId = saveParam.getSalarySobId();
|
2022-03-25 10:31:31 +08:00
|
|
|
|
SalarySobPO salarySobPO = salarySobBiz.getById(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
if (Objects.isNull(salarySobPO)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
|
|
|
|
|
}
|
2022-03-25 18:05:07 +08:00
|
|
|
|
|
2022-06-21 11:38:55 +08:00
|
|
|
|
//员工信息字段不可重复
|
|
|
|
|
|
List<SalarySobItemSaveParam.SalarySobEmpFieldParam> empFields = saveParam.getEmpFields();
|
|
|
|
|
|
if(CollectionUtils.isNotEmpty(empFields)){
|
|
|
|
|
|
int count = (int)SalaryEntityUtil.properties(empFields, SalarySobItemSaveParam.SalarySobEmpFieldParam::getFieldId).stream().distinct().count();
|
|
|
|
|
|
if(count < empFields.size()){
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "分类名称重复!"));
|
|
|
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "员工信息不能为空!"));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//分类名称唯一
|
2022-06-17 17:22:48 +08:00
|
|
|
|
List<SalarySobItemSaveParam.SalarySobItemGroupParam> itemGroups = saveParam.getItemGroups();
|
|
|
|
|
|
if(CollectionUtils.isNotEmpty(itemGroups)){
|
|
|
|
|
|
int count = (int)SalaryEntityUtil.properties(itemGroups, SalarySobItemSaveParam.SalarySobItemGroupParam::getName).stream().distinct().count();
|
|
|
|
|
|
if(count < itemGroups.size()){
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "分类名称重复!"));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-25 18:05:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
|
|
|
|
|
|
2022-03-25 18:05:07 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 清楚原相关数据
|
2022-04-27 18:48:41 +08:00
|
|
|
|
*
|
2022-03-25 18:05:07 +08:00
|
|
|
|
* @param salarySobId
|
|
|
|
|
|
*/
|
|
|
|
|
|
private void cleanOldData(Long salarySobId) {
|
2022-03-24 16:59:52 +08:00
|
|
|
|
// 删除薪资账套的员工信息字段
|
2022-03-25 10:31:31 +08:00
|
|
|
|
getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singleton(salarySobId));
|
2022-03-24 16:59:52 +08:00
|
|
|
|
// 删除薪资账套的薪资项目副本
|
2022-03-25 10:31:31 +08:00
|
|
|
|
deleteBySalarySobIds(Collections.singleton(salarySobId));
|
2022-03-24 16:59:52 +08:00
|
|
|
|
// 删除薪资账套的薪资项目分类
|
2022-03-25 10:31:31 +08:00
|
|
|
|
getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(salarySobId));
|
2022-08-24 10:31:42 +08:00
|
|
|
|
// 删除薪资项目是否显示
|
|
|
|
|
|
deleteItemShowBySalarySobIds(Collections.singleton(salarySobId));
|
|
|
|
|
|
|
2022-03-25 18:05:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 保存项目信息
|
2022-04-27 18:48:41 +08:00
|
|
|
|
*
|
2022-03-25 18:05:07 +08:00
|
|
|
|
* @param saveParam
|
|
|
|
|
|
*/
|
|
|
|
|
|
private void saveSobItem(SalarySobItemSaveParam saveParam) {
|
|
|
|
|
|
long employeeId = (long) user.getUID();
|
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
Long salarySobId = saveParam.getSalarySobId();
|
2022-03-23 18:41:38 +08:00
|
|
|
|
|
|
|
|
|
|
// 保存薪资账套的员工信息字段
|
2022-03-25 18:05:07 +08:00
|
|
|
|
Collection<SalarySobEmpFieldPO> needInsertSalarySobEmpFields = new ArrayList<>();
|
|
|
|
|
|
for (SalarySobItemSaveParam.SalarySobEmpFieldParam salarySobEmpFieldParam : saveParam.getEmpFields()) {
|
|
|
|
|
|
SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder()
|
|
|
|
|
|
.salarySobId(saveParam.getSalarySobId())
|
|
|
|
|
|
.fieldCode(salarySobEmpFieldParam.getFieldId())
|
|
|
|
|
|
.sortedIndex(salarySobEmpFieldParam.getSortedIndex())
|
2022-04-27 18:48:41 +08:00
|
|
|
|
.canDelete(salarySobEmpFieldParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)
|
2022-03-25 18:05:07 +08:00
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
|
.build();
|
|
|
|
|
|
needInsertSalarySobEmpFields.add(salarySobEmpFieldPO);
|
2022-03-24 16:59:52 +08:00
|
|
|
|
}
|
2022-03-25 18:05:07 +08:00
|
|
|
|
getSalarySobEmpFieldService(user).batchSave(needInsertSalarySobEmpFields);
|
2022-03-24 19:42:03 +08:00
|
|
|
|
|
2022-03-25 10:31:31 +08:00
|
|
|
|
|
2022-03-25 18:05:07 +08:00
|
|
|
|
//先保存项目分类获,取分类id
|
|
|
|
|
|
Collection<SalarySobItemPO> salarySobItems = new ArrayList<>();
|
2022-03-25 10:31:31 +08:00
|
|
|
|
int sortedIndex = 0;
|
|
|
|
|
|
for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : saveParam.getItemGroups()) {
|
2022-05-10 17:26:58 +08:00
|
|
|
|
Long salarySobItemGroupId = IdGenerator.generate();
|
2022-05-18 14:34:06 +08:00
|
|
|
|
SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder()
|
2022-05-10 17:26:58 +08:00
|
|
|
|
.id(salarySobItemGroupId)
|
2022-03-25 10:31:31 +08:00
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.name(itemGroupParam.getName())
|
|
|
|
|
|
.sortedIndex(sortedIndex++)
|
|
|
|
|
|
.description(StringUtils.EMPTY)
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
|
.build();
|
2022-03-25 18:05:07 +08:00
|
|
|
|
//保存分类
|
2022-03-25 10:31:31 +08:00
|
|
|
|
salarySobItemGroupBiz.insert(salarySobItemGroupPO);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 保存薪资项目分类 字段显隐
|
|
|
|
|
|
Long salarySobGroupItemShowId = IdGenerator.generate();
|
|
|
|
|
|
SalarySobItemHidePO salarySobGroupItemHidePO = SalarySobItemHidePO.builder()
|
|
|
|
|
|
.id(salarySobGroupItemShowId)
|
|
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.salaryItemId(salarySobItemGroupId)
|
|
|
|
|
|
.isGroup(1)
|
|
|
|
|
|
.itemHide(itemGroupParam.getItemHide())
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
|
.build();
|
|
|
|
|
|
if(itemGroupParam.getItemHide()==null){
|
2022-08-25 09:20:51 +08:00
|
|
|
|
salarySobGroupItemHidePO.setItemHide(Long.valueOf(0));
|
2022-08-24 10:31:42 +08:00
|
|
|
|
}
|
|
|
|
|
|
salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO);
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-05-10 17:26:58 +08:00
|
|
|
|
// //获取分类id
|
|
|
|
|
|
// List<SalarySobItemGroupPO> salarySobItemGroupPOS = salarySobItemGroupBiz.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).name(itemGroupParam.getName()).build());
|
|
|
|
|
|
// Long salarySobItemGroupId = salarySobItemGroupPOS.get(0).getId();
|
2022-03-25 10:31:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) {
|
|
|
|
|
|
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder()
|
|
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.salaryItemId(itemParam.getSalaryItemId())
|
|
|
|
|
|
.salarySobItemGroupId(salarySobItemGroupId)
|
|
|
|
|
|
.formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO))
|
|
|
|
|
|
.sortedIndex(itemParam.getSortedIndex())
|
|
|
|
|
|
.description(StringUtils.EMPTY)
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
2022-05-18 14:34:06 +08:00
|
|
|
|
.canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO))
|
2022-03-25 10:31:31 +08:00
|
|
|
|
.build();
|
|
|
|
|
|
salarySobItems.add(salarySobItemPO);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
|
|
|
|
|
// 保存薪资项目是否展示
|
|
|
|
|
|
Long salarySobItemShowId = IdGenerator.generate();
|
|
|
|
|
|
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
|
|
|
|
|
.id(salarySobItemShowId)
|
|
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.salaryItemId(itemParam.getSalaryItemId())
|
|
|
|
|
|
.isGroup(0)
|
|
|
|
|
|
.itemHide(itemParam.getItemHide())
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
|
.build();
|
|
|
|
|
|
salarySobItemMapper.InsertItemShow(salarySobItemHidePO);
|
|
|
|
|
|
|
2022-03-25 10:31:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
2022-03-25 10:31:31 +08:00
|
|
|
|
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : saveParam.getItems()) {
|
|
|
|
|
|
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder()
|
|
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.salaryItemId(itemParam.getSalaryItemId())
|
|
|
|
|
|
.salarySobItemGroupId(NumberUtils.LONG_ZERO)
|
|
|
|
|
|
.formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO))
|
|
|
|
|
|
.sortedIndex(itemParam.getSortedIndex())
|
|
|
|
|
|
.description(StringUtils.EMPTY)
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
2022-05-18 14:34:06 +08:00
|
|
|
|
.canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO))
|
2022-03-25 10:31:31 +08:00
|
|
|
|
.build();
|
|
|
|
|
|
salarySobItems.add(salarySobItemPO);
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
|
|
|
|
|
// 保存未分类薪资项目是否展示
|
|
|
|
|
|
Long salarySobItemShowId = IdGenerator.generate();
|
|
|
|
|
|
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
|
|
|
|
|
.id(salarySobItemShowId)
|
|
|
|
|
|
.salarySobId(salarySobId)
|
|
|
|
|
|
.salaryItemId(itemParam.getSalaryItemId())
|
|
|
|
|
|
.isGroup(0)
|
|
|
|
|
|
.itemHide(itemParam.getItemHide())
|
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
|
.createTime(now)
|
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
|
.build();
|
|
|
|
|
|
salarySobItemMapper.InsertItemShow(salarySobItemHidePO);
|
2022-03-25 10:31:31 +08:00
|
|
|
|
}
|
2022-03-24 19:42:03 +08:00
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
|
// 保存薪资账套的薪资项目副本
|
2022-03-25 18:05:07 +08:00
|
|
|
|
batchSave(salarySobItems);
|
2022-03-23 18:41:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void batchSave(Collection<SalarySobItemPO> salarySobItemPOS) {
|
2022-04-27 18:48:41 +08:00
|
|
|
|
if (CollectionUtils.isEmpty(salarySobItemPOS)) {
|
2022-04-14 20:46:17 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-03-23 18:41:38 +08:00
|
|
|
|
salarySobItemMapper.batchInsert(salarySobItemPOS);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
|
|
|
|
|
|
salarySobItemMapper.deleteBySalarySobIds(salarySobIds);
|
|
|
|
|
|
}
|
2022-08-24 10:31:42 +08:00
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void deleteItemShowBySalarySobIds(Collection<Long> salarySobIds) {
|
|
|
|
|
|
salarySobItemMapper.deleteItemShowBySalarySobId(salarySobIds);
|
|
|
|
|
|
}
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|