2022-03-21 09:33:21 +08:00
|
|
|
|
package com.engine.salary.wrapper;
|
|
|
|
|
|
|
|
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
|
|
|
|
|
import com.engine.core.impl.Service;
|
|
|
|
|
|
import com.engine.salary.component.WeaFormOption;
|
2022-04-15 13:54:47 +08:00
|
|
|
|
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
2023-02-16 14:53:03 +08:00
|
|
|
|
import com.engine.salary.entity.salaryformula.po.FormulaVar;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
|
|
|
|
|
|
import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO;
|
|
|
|
|
|
import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO;
|
|
|
|
|
|
import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO;
|
2022-03-21 09:33:21 +08:00
|
|
|
|
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
|
|
|
|
|
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
|
|
|
|
|
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO;
|
2023-02-16 10:44:13 +08:00
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
2023-01-31 14:31:46 +08:00
|
|
|
|
import com.engine.salary.enums.*;
|
2022-04-28 15:02:11 +08:00
|
|
|
|
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
2023-02-16 09:16:00 +08:00
|
|
|
|
import com.engine.salary.service.*;
|
|
|
|
|
|
import com.engine.salary.service.impl.*;
|
2022-03-21 09:33:21 +08:00
|
|
|
|
import com.engine.salary.util.SalaryEntityUtil;
|
|
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
2022-04-15 13:54:47 +08:00
|
|
|
|
import com.engine.salary.util.page.PageInfo;
|
2022-03-22 10:42:26 +08:00
|
|
|
|
import com.engine.salary.util.valid.RuntimeTypeEnum;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import com.engine.salary.util.valid.ValidUtil;
|
2023-02-17 10:54:18 +08:00
|
|
|
|
import lombok.Builder;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
|
import org.apache.commons.lang.math.NumberUtils;
|
2023-02-15 16:38:54 +08:00
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
2022-03-21 09:33:21 +08:00
|
|
|
|
import weaver.hrm.User;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
2023-02-16 10:44:13 +08:00
|
|
|
|
import java.util.stream.Collectors;
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 薪资项目
|
|
|
|
|
|
* <p>Copyright: Copyright (c) 2022</p>
|
|
|
|
|
|
* <p>Company: 泛微软件</p>
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author qiantao
|
|
|
|
|
|
* @version 1.0
|
|
|
|
|
|
**/
|
|
|
|
|
|
public class SalaryItemWrapper extends Service {
|
|
|
|
|
|
|
|
|
|
|
|
private SalaryItemService getSalaryItemService(User user) {
|
2023-02-16 09:16:00 +08:00
|
|
|
|
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
private SysSalaryItemService getSysSalaryItemService(User user) {
|
2023-02-16 09:16:00 +08:00
|
|
|
|
return ServiceUtil.getService(SysSalaryItemServiceImpl.class, user);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-04-15 13:54:47 +08:00
|
|
|
|
private SalaryFormulaService getSalaryFormulaService(User user) {
|
2023-02-16 09:16:00 +08:00
|
|
|
|
return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user);
|
2022-04-15 13:54:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
private SalarySobItemService getSalarySobItemService(User user) {
|
2023-02-16 09:16:00 +08:00
|
|
|
|
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private SalarySobBackItemService getSalarySobBackItemService(User user) {
|
|
|
|
|
|
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 薪资项目列表
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param searchParam 查询参数
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
2022-07-27 16:56:13 +08:00
|
|
|
|
public PageInfo<SalaryItemListDTO> listPage(SalaryItemSearchParam searchParam) {
|
2023-02-15 17:36:29 +08:00
|
|
|
|
|
|
|
|
|
|
//清除未被引用的公式
|
2023-02-16 10:44:13 +08:00
|
|
|
|
List<SysSalaryItemPO> sysItems = getSysSalaryItemService(user).listAll();
|
|
|
|
|
|
List<Long> sysItemFormulaIds = SalaryEntityUtil.properties(sysItems, SysSalaryItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
List<SalaryItemPO> items = getSalaryItemService(user).listAll();
|
|
|
|
|
|
List<Long> itemFormulaIds = SalaryEntityUtil.properties(items, SalaryItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
List<SalarySobItemPO> sobItems = getSalarySobItemService(user).list();
|
|
|
|
|
|
List<Long> sobItemFormulaIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
List<SalarySobBackItemPO> backItems = getSalarySobBackItemService(user).listAll();
|
|
|
|
|
|
List<Long> backItemFormulaIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> effectiveFormulaIds = new ArrayList<>();
|
|
|
|
|
|
effectiveFormulaIds.addAll(sysItemFormulaIds);
|
|
|
|
|
|
effectiveFormulaIds.addAll(itemFormulaIds);
|
|
|
|
|
|
effectiveFormulaIds.addAll(sobItemFormulaIds);
|
|
|
|
|
|
effectiveFormulaIds.addAll(backItemFormulaIds);
|
|
|
|
|
|
|
|
|
|
|
|
//删除无用公式
|
|
|
|
|
|
// getSalaryFormulaService(user).deleteNotIn(effectiveFormulaIds);
|
|
|
|
|
|
|
2023-02-16 14:53:03 +08:00
|
|
|
|
//账套里的项目,项目里的项目
|
|
|
|
|
|
List<Long> sobItemIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList());
|
|
|
|
|
|
List<Long> backItemIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getSalaryItemId, Collectors.toList());
|
|
|
|
|
|
List<Long> usingItemIds = new ArrayList<>();
|
|
|
|
|
|
usingItemIds.addAll(sobItemIds);
|
|
|
|
|
|
usingItemIds.addAll(backItemIds);
|
2023-02-16 10:44:13 +08:00
|
|
|
|
|
2023-02-16 14:53:03 +08:00
|
|
|
|
List<FormulaVar> formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(effectiveFormulaIds);
|
2023-02-17 10:54:18 +08:00
|
|
|
|
List<String> itemCode = formulaVars.stream().map(FormulaVar::getFieldId).map(v -> v.replaceAll("salaryItem_", "")).collect(Collectors.toList());
|
2023-02-15 17:36:29 +08:00
|
|
|
|
|
2023-01-31 14:31:46 +08:00
|
|
|
|
//!!! 从2023-01-23起,薪资项目这里不再查询薪资档案引用的项目 !!!
|
|
|
|
|
|
//薪资档案引用的项目转移到字段管理功能项
|
|
|
|
|
|
searchParam.setUseInEmployeeSalary(SalaryOnOffEnum.OFF.getValue());
|
2022-04-15 13:54:47 +08:00
|
|
|
|
|
|
|
|
|
|
// 1、查询薪资项目
|
|
|
|
|
|
PageInfo<SalaryItemPO> page = getSalaryItemService(user).listPageByParam(searchParam);
|
|
|
|
|
|
List<SalaryItemPO> salaryItemList = page.getList();
|
|
|
|
|
|
|
|
|
|
|
|
//最终返回的分页对象
|
|
|
|
|
|
PageInfo<SalaryItemListDTO> salaryItemListDTOPage = new PageInfo<>(SalaryItemListDTO.class);
|
|
|
|
|
|
salaryItemListDTOPage.setPageSize(page.getPageSize());
|
|
|
|
|
|
salaryItemListDTOPage.setPageNum(page.getPageNum());
|
|
|
|
|
|
salaryItemListDTOPage.setTotal(page.getTotal());
|
|
|
|
|
|
|
|
|
|
|
|
// 被薪资账套引用的薪资项目
|
|
|
|
|
|
List<SalarySobItemPO> salarySobItems = new ArrayList<>();
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(salaryItemList)) {
|
|
|
|
|
|
//2、填充公式内容
|
|
|
|
|
|
Set<Long> formulaIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getFormulaId);
|
|
|
|
|
|
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
2022-07-27 16:56:13 +08:00
|
|
|
|
// 查询系统薪资项目
|
|
|
|
|
|
Set<Long> sysSalaryItemIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getSysSalaryItemId);
|
|
|
|
|
|
List<SysSalaryItemPO> sysSalaryItemPOS = getSysSalaryItemService(user).listByIds(sysSalaryItemIds);
|
2022-04-15 13:54:47 +08:00
|
|
|
|
// 转换成薪资项目列表dto
|
2022-07-27 16:56:13 +08:00
|
|
|
|
List<SalaryItemListDTO> salaryItemListDTOS = SalaryItemBO.convert2ListDTO(salaryItemList, expressFormulas, sysSalaryItemPOS);
|
2023-02-16 14:53:03 +08:00
|
|
|
|
//系统项目不删除
|
2022-09-29 16:21:02 +08:00
|
|
|
|
salaryItemListDTOS.forEach(dto -> {
|
2023-02-17 10:54:18 +08:00
|
|
|
|
if (StringUtils.isNotBlank(dto.getSystemName()) || usingItemIds.contains(dto.getId()) || itemCode.contains(dto.getCode())) {
|
2022-09-29 16:21:02 +08:00
|
|
|
|
dto.setCanDelete(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2022-04-15 13:54:47 +08:00
|
|
|
|
salaryItemListDTOPage.setList(salaryItemListDTOS);
|
|
|
|
|
|
}
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
2022-04-15 13:54:47 +08:00
|
|
|
|
return salaryItemListDTOPage;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
2022-04-15 13:54:47 +08:00
|
|
|
|
}
|
2022-03-23 18:41:38 +08:00
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 可以删除的薪资项目列表
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param searchParam 查询人员
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
2022-04-15 13:54:47 +08:00
|
|
|
|
public PageInfo<SalaryItemListDTO> listPage4CanDelete(SalaryItemSearchParam searchParam) {
|
2022-03-21 20:09:10 +08:00
|
|
|
|
// 查询所有薪资账套中的薪资项目副本
|
|
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).list();
|
|
|
|
|
|
// 被引用的薪资项目id
|
|
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
|
|
|
|
|
// 排除被引用的薪资项目(被引用的薪资项目不可以删除)
|
|
|
|
|
|
searchParam.setExcludeIds(salaryItemIds);
|
|
|
|
|
|
// 转换成前端所需的数据格式
|
2022-07-27 16:56:13 +08:00
|
|
|
|
return listPage(searchParam);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 根据主键id获取薪资项目详情
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param ids 薪资项目的主键id
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
public List<SalaryItemListDTO> listByIds(Collection<Long> ids) {
|
|
|
|
|
|
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(ids);
|
|
|
|
|
|
if (CollectionUtils.isEmpty(salaryItemPOS)) {
|
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
|
}
|
|
|
|
|
|
// 查询公式详情
|
|
|
|
|
|
Set<Long> formulaIds = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId);
|
2022-04-16 13:51:53 +08:00
|
|
|
|
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
2022-07-27 16:56:13 +08:00
|
|
|
|
// 查询系统薪资项目
|
|
|
|
|
|
Set<Long> sysSalaryItemIds = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getSysSalaryItemId);
|
|
|
|
|
|
List<SysSalaryItemPO> sysSalaryItemPOS = getSysSalaryItemService(user).listByIds(sysSalaryItemIds);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
// 转换成薪资项目列表dto
|
2022-07-27 16:56:13 +08:00
|
|
|
|
return SalaryItemBO.convert2ListDTO(salaryItemPOS, expressFormulas, sysSalaryItemPOS);
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 薪资项目详情
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param id 主键id
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
public SalaryItemFormDTO getForm(Long id) {
|
|
|
|
|
|
SalaryItemFormDTO salaryItemFormDTO = new SalaryItemFormDTO();
|
|
|
|
|
|
// 默认可以编辑
|
|
|
|
|
|
salaryItemFormDTO.setCanEdit(NumberUtils.INTEGER_ONE);
|
|
|
|
|
|
if (!Objects.isNull(id)) {
|
|
|
|
|
|
// 查询薪资项目
|
|
|
|
|
|
SalaryItemPO salaryItemPO = getSalaryItemService(user).getById(id);
|
|
|
|
|
|
// 系统薪资项目
|
|
|
|
|
|
SysSalaryItemPO sysSalaryItemPO = getSysSalaryItemService(user).getById(id);
|
|
|
|
|
|
if (Objects.isNull(salaryItemPO) && Objects.isNull(sysSalaryItemPO)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除"));
|
|
|
|
|
|
}
|
2022-04-16 13:51:53 +08:00
|
|
|
|
ExpressFormula expressFormula;
|
2022-03-17 15:14:35 +08:00
|
|
|
|
// // 转换成薪资项目详情dto
|
2022-03-21 20:09:10 +08:00
|
|
|
|
if (Objects.isNull(salaryItemPO)) {
|
|
|
|
|
|
salaryItemFormDTO = SysSalaryItemBO.convert2FormDTO(sysSalaryItemPO);
|
2022-04-16 13:51:53 +08:00
|
|
|
|
expressFormula = getSalaryFormulaService(user).getExpressFormula(sysSalaryItemPO.getFormulaId());
|
2022-03-21 20:09:10 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
salaryItemFormDTO = SalaryItemBO.convert2FormDTO(salaryItemPO);
|
2022-04-16 13:51:53 +08:00
|
|
|
|
expressFormula = getSalaryFormulaService(user).getExpressFormula(salaryItemPO.getFormulaId());
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|
2022-04-16 13:51:53 +08:00
|
|
|
|
salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse(""));
|
2022-03-21 20:09:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
return salaryItemFormDTO;
|
|
|
|
|
|
}
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取薪资项目可选的类型(与属性有联动)
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
public Map<String, List<WeaFormOption>> listSalaryItemTypeOption() {
|
|
|
|
|
|
return SalaryEntityUtil.group2ListMap(Arrays.asList(SalaryItemTypeEnum.values()),
|
|
|
|
|
|
e -> e.getCategory().name(),
|
|
|
|
|
|
e -> new WeaFormOption(e.name(), SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 保存薪资项目
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param saveParam 保存参数
|
|
|
|
|
|
*/
|
|
|
|
|
|
public void save(SalaryItemSaveParam saveParam) {
|
2022-03-21 20:09:10 +08:00
|
|
|
|
ValidUtil.doValidator(saveParam);
|
2022-04-28 15:02:11 +08:00
|
|
|
|
validParam(saveParam);
|
|
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
|
getSalaryItemService(user).save(saveParam);
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-04-28 15:02:11 +08:00
|
|
|
|
private void validParam(SalaryItemSaveParam saveParam) {
|
|
|
|
|
|
if (SalarySystemTypeEnum.parseByValue(saveParam.getSystemType()) == null) {
|
|
|
|
|
|
throw new SalaryRunTimeException("系统内置的薪资项目异常");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (SalaryRoundingModeEnum.parseByValue(saveParam.getRoundingMode()) == null) {
|
|
|
|
|
|
throw new SalaryRunTimeException("舍入规则异常");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (SalaryValueTypeEnum.parseByValue(saveParam.getValueType()) == null) {
|
|
|
|
|
|
throw new SalaryRunTimeException("取值方式异常");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (SalaryDataTypeEnum.parseByValue(saveParam.getDataType()) == null) {
|
|
|
|
|
|
throw new SalaryRunTimeException("字段类型异常");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-21 09:33:21 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 编辑薪资项目
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param saveParam 更新参数
|
|
|
|
|
|
*/
|
|
|
|
|
|
public void update(SalaryItemSaveParam saveParam) {
|
2022-03-22 10:42:26 +08:00
|
|
|
|
ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE);
|
2022-04-28 15:02:11 +08:00
|
|
|
|
validParam(saveParam);
|
2022-03-21 20:09:10 +08:00
|
|
|
|
getSalaryItemService(user).update(saveParam);
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 删除薪资项目
|
|
|
|
|
|
*
|
2022-03-21 20:09:10 +08:00
|
|
|
|
* @param ids 主键id
|
2022-03-21 09:33:21 +08:00
|
|
|
|
*/
|
2022-03-21 20:09:10 +08:00
|
|
|
|
public void delete(Collection<Long> ids) {
|
2023-02-17 10:54:18 +08:00
|
|
|
|
|
|
|
|
|
|
//清除未被引用的公式
|
|
|
|
|
|
List<Long> effectiveFormulaIds = getEffectiveFormulaIds();
|
|
|
|
|
|
|
|
|
|
|
|
//删除无用公式
|
|
|
|
|
|
// getSalaryFormulaService(user).deleteNotIn(effectiveFormulaIds);
|
|
|
|
|
|
|
|
|
|
|
|
//账套里的项目,项目里的项目
|
|
|
|
|
|
List<Long> sobItemIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList());
|
|
|
|
|
|
List<Long> backItemIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getSalaryItemId, Collectors.toList());
|
|
|
|
|
|
List<Long> usingItemIds = new ArrayList<>();
|
|
|
|
|
|
usingItemIds.addAll(sobItemIds);
|
|
|
|
|
|
usingItemIds.addAll(backItemIds);
|
|
|
|
|
|
|
|
|
|
|
|
List<FormulaVar> formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(effectiveFormulaIds);
|
|
|
|
|
|
List<String> itemCode = formulaVars.stream().map(FormulaVar::getFieldId).map(v -> v.replaceAll("salaryItem_", "")).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
// 查询薪资项目
|
|
|
|
|
|
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(ids);
|
|
|
|
|
|
if (CollectionUtils.isEmpty(salaryItemPOS)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除"));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (CollectionUtils.containsAny(usingItemIds, ids)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "薪资账套正在使用该薪资项目,不允许删除"));
|
|
|
|
|
|
}
|
|
|
|
|
|
List<String> codes = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getCode, Collectors.toList());
|
|
|
|
|
|
if (CollectionUtils.containsAny(itemCode, codes)) {
|
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "公式正在使用该薪资项目,不允许删除"));
|
|
|
|
|
|
}
|
2022-03-21 20:09:10 +08:00
|
|
|
|
getSalaryItemService(user).deleteByIds(ids);
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|
2023-02-17 10:54:18 +08:00
|
|
|
|
|
|
|
|
|
|
private usingItemAndFormulaIds getUsingFormulaIds() {
|
|
|
|
|
|
|
|
|
|
|
|
//系统项目
|
|
|
|
|
|
List<SysSalaryItemPO> sysItems = getSysSalaryItemService(user).listAll();
|
|
|
|
|
|
List<Long> sysItemFormulaIds = SalaryEntityUtil.properties(sysItems, SysSalaryItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
//薪资项目
|
|
|
|
|
|
List<SalaryItemPO> items = getSalaryItemService(user).listAll();
|
|
|
|
|
|
List<Long> itemFormulaIds = SalaryEntityUtil.properties(items, SalaryItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
//账套项目
|
|
|
|
|
|
List<SalarySobItemPO> sobItems = getSalarySobItemService(user).list();
|
|
|
|
|
|
List<Long> sobItemFormulaIds = SalaryEntityUtil.properties(sobItems, SalarySobItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
//回算项目
|
|
|
|
|
|
List<SalarySobBackItemPO> backItems = getSalarySobBackItemService(user).listAll();
|
|
|
|
|
|
List<Long> backItemFormulaIds = SalaryEntityUtil.properties(backItems, SalarySobBackItemPO::getFormulaId, Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> usingFormulaIds = new ArrayList<>();
|
|
|
|
|
|
usingFormulaIds.addAll(sysItemFormulaIds);
|
|
|
|
|
|
usingFormulaIds.addAll(itemFormulaIds);
|
|
|
|
|
|
usingFormulaIds.addAll(sobItemFormulaIds);
|
|
|
|
|
|
usingFormulaIds.addAll(backItemFormulaIds);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return usingFormulaIds;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Builder
|
|
|
|
|
|
class UsingItemAndFormulaIds {
|
|
|
|
|
|
private List<Long> usingFormulaIds;
|
|
|
|
|
|
|
|
|
|
|
|
private List<Long> usingItemIds;
|
|
|
|
|
|
}
|
2022-03-21 09:33:21 +08:00
|
|
|
|
}
|