package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.WeaFormOption; import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalaryItemTypeEnum; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobItemService; import com.engine.salary.service.SysSalaryItemService; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.github.pagehelper.PageInfo; import weaver.hrm.User; import java.util.*; /** * 薪资项目 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalaryItemWrapper extends Service { private SalaryItemService salaryItemService; private SalaryItemService getSalaryItemService(User user) { return (SalaryItemService)ServiceUtil.getService(SalaryItemServiceImpl.class, user); } // private SalaryFormulaService salaryFormulaService; private SalarySobItemService salarySobItemService; private SysSalaryItemService sysSalaryItemService; /** * 薪资项目列表 * * @param searchParam 查询参数 * @return */ public Map listPage(SalaryItemSearchParam searchParam) { // 查询薪资项目 PageInfo page = getSalaryItemService(user).listPageByParam(searchParam); Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("a",page); return objectObjectHashMap; // Page dtoPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount()); // // 被薪资账套引用的薪资项目 // List salarySobItems = Lists.newArrayListWithExpectedSize((int) page.getSize()); // if (CollectionUtils.isNotEmpty(page.getRecords())) { // // 查询公式 // Set formulaIds = SalaryEntityUtil.properties(page.getRecords(), SalaryItemPO::getFormulaId); // List expressFormulas = salaryFormulaService.listExpressFormula(formulaIds, tenantKey); // // 转换成薪资项目列表dto // dtoPage.setRecords(SalaryItemBO.convert2ListDTO(page.getRecords(), expressFormulas)); // // 查询被账套引用的薪资项目 // Set salaryItemIds = SalaryEntityUtil.properties(page.getRecords(), SalaryItemPO::getId); // salarySobItems = salarySobItemService.listBySalaryItemIds(salaryItemIds, tenantKey); // } // // 构建前端所需的数据格式 // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryItemListDTO.class, dtoPage); // // 被薪资账套引用的薪资项目不可删除 // if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(salarySobItems)) { // Set salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); // for (int i = 0; i < page.getRecords().size(); i++) { // SalaryItemPO salaryItemPO = page.getRecords().get(i); // if (salaryItemIds.contains(salaryItemPO.getId())) { // Permission permission = weaTable.getOperatesPermission().get(i).get(1); // permission.setVisible(false); // permission.setDisabled(true); // } // } // } // return weaTable; } // /** // * 可以删除的薪资项目列表 // * // * @param searchParam 查询人员 // * @param employeeId 人员id // * @param tenantKey 租户key // * @return // */ // public WeaTable listPage4CanDelete(SalaryItemSearchParam searchParam) { // // 查询所有薪资账套中的薪资项目副本 // List salarySobItemPOS = salarySobItemService.list(); // // 被引用的薪资项目id // Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); // // 排除被引用的薪资项目(被引用的薪资项目不可以删除) // searchParam.setExcludeIds(salaryItemIds); // // 转换成前端所需的数据格式 // WeaTable weaTable = listPage(searchParam); // weaTable.setTableType(WeaTableTypeEnum.CHECKBOX); // weaTable.setOperates(Collections.emptyList()); // weaTable.setPageUid("canDeleteSalaryItemList"); // return weaTable; // } // // /** // * 根据主键id获取薪资项目详情 // * // * @param ids 薪资项目的主键id // * @param tenantKey 租户key // * @return // */ // public List listByIds(Collection ids, String tenantKey) { // List salaryItemPOS = salaryItemService.listByIds(ids, tenantKey); // if (CollectionUtils.isEmpty(salaryItemPOS)) { // return Collections.emptyList(); // } // // 查询公式详情 // Set formulaIds = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId); // List expressFormulas = salaryFormulaService.listExpressFormula(formulaIds, tenantKey); // // 转换成薪资项目列表dto // return SalaryItemBO.convert2ListDTO(salaryItemPOS, expressFormulas); // } // // /** // * 薪资项目列表的高级搜索 // * // * @return // */ // public WeaSearchCondition getSearchCondition() { // WeaSearchCondition searchCondition = SalaryFormatUtil.getInstance() // .buildCondition(SalaryItemSearchConditionDTO.class, new SalaryItemSearchConditionDTO(), "salaryItemCondition"); // // "其他条件"不要 // searchCondition.getGroups().remove(1); // return searchCondition; // } // // /** // * 薪资项目详情 // * // * @param id 主键id // * @param employeeId 人员id // * @param tenantKey 租户key // * @return // */ // public WeaForm getForm(Long id, Long employeeId, String tenantKey) { // SalaryItemFormDTO salaryItemFormDTO = new SalaryItemFormDTO(); // // 默认可以编辑 // salaryItemFormDTO.setCanEdit(NumberUtils.INTEGER_ONE); // if (!Objects.isNull(id)) { // // 查询薪资项目 // SalaryItemPO salaryItemPO = salaryItemService.getById(id, tenantKey); // // 系统薪资项目 // SysSalaryItemPO sysSalaryItemPO = sysSalaryItemService.getById(id); // if (Objects.isNull(salaryItemPO) && Objects.isNull(sysSalaryItemPO)) { // throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 98299, "参数错误,薪资项目不存在或已被删除")); // } // // 公式详情 // ExpressFormula expressFormula; // // 转换成薪资项目详情dto // if (Objects.isNull(salaryItemPO)) { // salaryItemFormDTO = SysSalaryItemBO.convert2FormDTO(sysSalaryItemPO); // expressFormula = salaryFormulaService.getExpressFormula(sysSalaryItemPO.getFormulaId(), tenantKey); // } else { // salaryItemFormDTO = SalaryItemBO.convert2FormDTO(salaryItemPO); // expressFormula = salaryFormulaService.getExpressFormula(salaryItemPO.getFormulaId(), tenantKey); // } // salaryItemFormDTO.setFormulaContent(Optional.ofNullable(expressFormula).map(ExpressFormula::getFormula).orElse("")); // } // // 转换成前端所需的数据格式 // WeaForm weaForm = SalaryFormatUtil.getInstance().buildForm(SalaryItemFormDTO.class, salaryItemFormDTO); // if (Objects.nonNull(id)) { // for (Map.Entry entry : weaForm.getItems().entrySet()) { // // 取值方式是否可以编辑 // if (("valueType".equals(entry.getKey()) || "useInEmployeeSalary".equals(entry.getKey())) // && Objects.equals(salaryItemFormDTO.getCanEdit(), NumberUtils.INTEGER_ZERO)) { // entry.getValue().setReadOnly(true); // } // // 属性"、"类型"不允许编辑 // if ("category".equals(entry.getKey()) || "itemType".equals(entry.getKey())) { // entry.getValue().setReadOnly(true); // } // } // } // return weaForm; // } /** * 获取薪资项目可选的类型(与属性有联动) * * @return */ public Map> 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) { salaryItemService.save(saveParam); } /** * 编辑薪资项目 * * @param saveParam 更新参数 */ public void update(SalaryItemSaveParam saveParam) { salaryItemService.update(saveParam); } /** * 删除薪资项目 * * @param ids 主键id * @param tenantKey 租户key */ public void delete(Collection ids, String tenantKey) { salaryItemService.deleteByIds(ids); } }