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 */ // public static Wrapper buildQueryWrapper(SalaryItemSearchParam searchParam, String tenantKey) { // LambdaQueryWrapper wrapper = Wrappers.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; // } /** * 薪资项目po转换成薪资项目列表dto * * @param salaryItems 薪资项目po * @param expressFormulas 公式详情 * @return */ // public static List convert2ListDTO(Collection salaryItems, List expressFormulas) { // if (CollectionUtils.isEmpty(salaryItems)) { // return Collections.emptyList(); // } // Map 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()); // } // /** // * 转换成薪资项目详情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()); // } /** * 保存参数/更新参数 转换成薪资项目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; } }