2022-03-21 09:33:21 +08:00
|
|
|
package com.engine.salary.entity.salaryitem.bo;
|
|
|
|
|
|
|
|
|
|
import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
|
|
|
|
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
|
|
|
|
|
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
|
|
|
|
import com.engine.salary.enums.SalaryDataSourceEnum;
|
|
|
|
|
import com.engine.salary.enums.SalaryRoundingModeEnum;
|
|
|
|
|
import com.engine.salary.enums.SalarySystemTypeEnum;
|
|
|
|
|
import com.engine.salary.enums.SalaryValueTypeEnum;
|
|
|
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @description: 薪资项目
|
|
|
|
|
* @author: xiajun
|
|
|
|
|
* @modified By: xiajun
|
|
|
|
|
* @date: Created in 10/28/21 4:55 PM
|
|
|
|
|
* @version:v1.0
|
|
|
|
|
*/
|
|
|
|
|
public class SalaryItemBO {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建薪资项目的查询参数
|
|
|
|
|
*
|
|
|
|
|
* @param searchParam
|
|
|
|
|
* @param tenantKey
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
2022-03-17 15:14:35 +08:00
|
|
|
// public static Wrapper<SalaryItemPO> buildQueryWrapper(SalaryItemSearchParam searchParam, String tenantKey) {
|
|
|
|
|
// LambdaQueryWrapper<SalaryItemPO> wrapper = Wrappers.<SalaryItemPO>lambdaQuery();
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getTenantKey, tenantKey)
|
|
|
|
|
// .eq(SalaryItemPO::getDeleteType, 0)
|
|
|
|
|
// .like(!SalaryEntityUtil.isNullOrEmpty(searchParam.getName()), SalaryItemPO::getName, searchParam.getName())
|
|
|
|
|
// .like(!SalaryEntityUtil.isNullOrEmpty(searchParam.getDescription()), SalaryItemPO::getDescription, searchParam.getDescription())
|
|
|
|
|
// .notIn(SalaryEntityUtil.isNotNullOrEmpty(searchParam.getExcludeIds()), SalaryItemPO::getId, searchParam.getExcludeIds());
|
|
|
|
|
// if (searchParam.getCategory() != null) {
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getCategory, searchParam.getCategory().getValue());
|
|
|
|
|
// }
|
|
|
|
|
// if (searchParam.getItemType() != null) {
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getItemType, searchParam.getItemType().getValue());
|
|
|
|
|
// }
|
|
|
|
|
// if (searchParam.getValueType() != null) {
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getValueType, searchParam.getValueType().getValue());
|
|
|
|
|
// }
|
|
|
|
|
// if (searchParam.getUseInEmployeeSalary() != null) {
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getUseInEmployeeSalary, searchParam.getUseInEmployeeSalary().getValue());
|
|
|
|
|
// }
|
|
|
|
|
// if (searchParam.getUseDefault() != null) {
|
|
|
|
|
// wrapper.eq(SalaryItemPO::getUseDefault, searchParam.getUseDefault().getValue());
|
|
|
|
|
// }
|
|
|
|
|
// wrapper.orderByDesc(SalaryItemPO::getId);
|
|
|
|
|
// return wrapper;
|
|
|
|
|
// }
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 薪资项目po转换成薪资项目列表dto
|
|
|
|
|
*
|
|
|
|
|
* @param salaryItems 薪资项目po
|
|
|
|
|
* @param expressFormulas 公式详情
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
2022-03-17 15:14:35 +08:00
|
|
|
// public static List<SalaryItemListDTO> convert2ListDTO(Collection<SalaryItemPO> salaryItems, List<ExpressFormula> expressFormulas) {
|
|
|
|
|
// if (CollectionUtils.isEmpty(salaryItems)) {
|
|
|
|
|
// return Collections.emptyList();
|
|
|
|
|
// }
|
|
|
|
|
// Map<Long, String> formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula);
|
|
|
|
|
// return salaryItems.stream().map(salaryItemPO -> {
|
|
|
|
|
// SalaryItemCategoryEnum salaryItemCategoryEnum = SalaryItemCategoryEnum.parseByValue(salaryItemPO.getCategory());
|
|
|
|
|
// SalaryItemTypeEnum salaryItemTypeEnum = SalaryItemTypeEnum.parseByValue(salaryItemPO.getItemType());
|
|
|
|
|
// SalaryRoundingModeEnum salaryRoundingModeEnum = SalaryRoundingModeEnum.parseByValue(salaryItemPO.getRoundingMode());
|
|
|
|
|
// SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(salaryItemPO.getValueType());
|
|
|
|
|
// SalaryDataSourceEnum salaryDataSourceEnum = SalaryDataSourceEnum.parseByValue(salaryItemPO.getDatasource());
|
|
|
|
|
// SalaryItemListDTO dto = SalaryItemListDTO.builder()
|
|
|
|
|
// .id(salaryItemPO.getId())
|
|
|
|
|
// .name(salaryItemPO.getName())
|
|
|
|
|
// .category(Optional.ofNullable(salaryItemCategoryEnum)
|
|
|
|
|
// .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
|
|
|
|
|
// .orElse(StringUtils.EMPTY))
|
|
|
|
|
// .itemTypeKey(salaryItemTypeEnum)
|
|
|
|
|
// .itemType(Optional.ofNullable(salaryItemTypeEnum)
|
|
|
|
|
// .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
|
|
|
|
|
// .orElse(StringUtils.EMPTY))
|
|
|
|
|
// .useInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary())
|
|
|
|
|
// .useDefault(salaryItemPO.getUseDefault())
|
|
|
|
|
// .roundingMode(Optional.ofNullable(salaryRoundingModeEnum)
|
|
|
|
|
// .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
|
|
|
|
|
// .orElse(StringUtils.EMPTY))
|
|
|
|
|
// .pattern(salaryItemPO.getPattern())
|
|
|
|
|
// .valueType(Optional.ofNullable(salaryValueTypeEnum)
|
|
|
|
|
// .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
|
|
|
|
|
// .orElse(StringUtils.EMPTY))
|
|
|
|
|
// .datasource(Optional.ofNullable(salaryDataSourceEnum)
|
|
|
|
|
// .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel()))
|
|
|
|
|
// .orElse(StringUtils.EMPTY))
|
|
|
|
|
// .formulaId(salaryItemPO.getFormulaId())
|
|
|
|
|
// .formulaContent(formulaMap.getOrDefault(salaryItemPO.getFormulaId(), ""))
|
|
|
|
|
// .description(salaryItemPO.getDescription())
|
|
|
|
|
// .canEdit(Objects.equals(salaryItemPO.getCanEdit(), NumberUtils.INTEGER_ONE))
|
|
|
|
|
// .build();
|
|
|
|
|
// if (Objects.equals(salaryItemPO.getUseInEmployeeSalary(), 1)) {
|
|
|
|
|
// dto.setDatasource(SalaryI18nUtil.getI18nLabel(SalaryDataSourceEnum.SALARY_ARCHIVES.getLabelId(),
|
|
|
|
|
// SalaryDataSourceEnum.SALARY_ARCHIVES.getDefaultLabel()));
|
|
|
|
|
// }
|
|
|
|
|
// return dto;
|
|
|
|
|
// }
|
|
|
|
|
// ).collect(Collectors.toList());
|
|
|
|
|
// }
|
2022-03-21 09:33:21 +08:00
|
|
|
|
2022-03-17 15:14:35 +08:00
|
|
|
// /**
|
|
|
|
|
// * 转换成薪资项目详情dto
|
|
|
|
|
// *
|
|
|
|
|
// * @param salaryItemPO
|
|
|
|
|
// * @return
|
|
|
|
|
// */
|
|
|
|
|
// public static SalaryItemFormDTO convert2FormDTO(SalaryItemPO salaryItemPO) {
|
|
|
|
|
// return new SalaryItemFormDTO()
|
|
|
|
|
// .setId(salaryItemPO.getId())
|
|
|
|
|
// .setName(salaryItemPO.getName())
|
|
|
|
|
// .setSystemType(SalarySystemTypeEnum.parseByValue(salaryItemPO.getSystemType()))
|
|
|
|
|
// .setUseDefault(salaryItemPO.getUseDefault())
|
|
|
|
|
// .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary())
|
|
|
|
|
// .setCategory(SalaryItemCategoryEnum.parseByValue(salaryItemPO.getCategory()))
|
|
|
|
|
// .setItemType(SalaryItemTypeEnum.parseByValue(salaryItemPO.getItemType()))
|
|
|
|
|
// .setRoundingMode(SalaryRoundingModeEnum.parseByValue(salaryItemPO.getRoundingMode()))
|
|
|
|
|
// .setPattern(salaryItemPO.getPattern())
|
|
|
|
|
// .setValueType(SalaryValueTypeEnum.parseByValue(salaryItemPO.getValueType()))
|
|
|
|
|
// .setFormulaId(salaryItemPO.getFormulaId())
|
|
|
|
|
// .setDescription(salaryItemPO.getDescription())
|
|
|
|
|
// .setCanEdit(salaryItemPO.getCanEdit());
|
|
|
|
|
// }
|
2022-03-21 09:33:21 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存参数/更新参数 转换成薪资项目po
|
|
|
|
|
*
|
|
|
|
|
* @param saveParam 保存参数/更新参数
|
|
|
|
|
* @param employeeId 人员id
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static SalaryItemPO convert2SalaryItemPO(SalaryItemSaveParam saveParam, Long employeeId) {
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
// long id = IdGenerator.generate();
|
|
|
|
|
SalaryItemPO salaryItemPO = SalaryItemPO.builder()
|
|
|
|
|
// .id(id)
|
|
|
|
|
// .code(String.valueOf(id))
|
|
|
|
|
.name(saveParam.getName())
|
|
|
|
|
.systemType(SalarySystemTypeEnum.CUSTOM.getValue())
|
|
|
|
|
.sysSalaryItemId(NumberUtils.LONG_ZERO)
|
|
|
|
|
.category(saveParam.getCategory().getValue())
|
|
|
|
|
.itemType(saveParam.getItemType().getValue())
|
|
|
|
|
.useDefault(saveParam.getUseDefault())
|
|
|
|
|
.useInEmployeeSalary(saveParam.getUseInEmployeeSalary())
|
|
|
|
|
.roundingMode(Optional.ofNullable(saveParam.getRoundingMode()).map(SalaryRoundingModeEnum::getValue).orElse(SalaryRoundingModeEnum.ROUNDING.getValue()))
|
|
|
|
|
.pattern(Optional.ofNullable(saveParam.getPattern()).orElse(2))
|
|
|
|
|
.valueType(saveParam.getValueType().getValue())
|
|
|
|
|
.datasource(saveParam.getValueType() == SalaryValueTypeEnum.INPUT ? SalaryDataSourceEnum.INPUT_IMPORT.getValue() : SalaryDataSourceEnum.CUSTOM_FORMULA.getValue())
|
|
|
|
|
.formulaId(saveParam.getValueType() == SalaryValueTypeEnum.FORMULA ? Optional.ofNullable(saveParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO) : NumberUtils.LONG_ZERO)
|
|
|
|
|
.description(saveParam.getDescription())
|
|
|
|
|
.canEdit(NumberUtils.INTEGER_ONE)
|
|
|
|
|
.canDelete(NumberUtils.INTEGER_ONE)
|
|
|
|
|
.creator(employeeId)
|
|
|
|
|
.deleteType(NumberUtils.INTEGER_ZERO)
|
|
|
|
|
.createTime(now)
|
|
|
|
|
.updateTime(now)
|
|
|
|
|
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
|
|
|
|
.build();
|
|
|
|
|
// 开启了"薪资档案引用",取值方式固定为输入,数据来源固定为薪资档案
|
|
|
|
|
if (Objects.equals(saveParam.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) {
|
|
|
|
|
salaryItemPO.setValueType(SalaryValueTypeEnum.INPUT.getValue());
|
|
|
|
|
salaryItemPO.setDatasource(SalaryDataSourceEnum.SALARY_ARCHIVES.getValue());
|
|
|
|
|
salaryItemPO.setFormulaId(NumberUtils.LONG_ZERO);
|
|
|
|
|
}
|
|
|
|
|
return salaryItemPO;
|
|
|
|
|
}
|
|
|
|
|
}
|