package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; import com.engine.salary.service.SalaryFormulaService; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobItemGroupService; import com.engine.salary.service.SalarySobItemService; import com.engine.salary.service.impl.SalaryFormulaServiceImpl; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.service.impl.SalarySobItemGroupServiceImpl; import com.engine.salary.service.impl.SalarySobItemServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; import java.lang.reflect.Field; import java.util.*; /** * 薪资账套的薪资项目 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalarySobItemWrapper extends Service { private SalarySobItemService getSalarySobItemService(User user) { return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } private SalarySobItemGroupService getSalarySobItemGroupService(User user) { return (SalarySobItemGroupService) ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user); } private SalaryItemService getSalaryItemService(User user) { return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } /** * 薪资账套可选薪资项目列表 * * @param queryParam 列表查询条件 * @return */ public PageInfo listPage4SalaryItem(SalaryItemSearchParam queryParam) { // SalaryWeaTable table = new SalaryWeaTable(user, SalaryItemListDTO.class); // // String fields = " t.id" + // " , t.name" + // " , t.code" + // " , t.system_type" + // " , t.sys_salary_item_id" + // " , t.category" + // " , t.item_type as itemType" + // " , t.use_default as useDefault" + // " , t.use_in_employee_salary as useInEmployeeSalary" + // " , t.rounding_mode as roundingMode" + // " , t.pattern" + // " , t.value_type as valueType" + // " , t.datasource" + // " , t.formula_id" + // " , t.description" + // " , t.can_edit" + // " , t.can_delete"; // // String from = "from hrsa_salary_item t"; // // table.setBackfields(fields); // table.setSqlform(from); // table.setSqlwhere(SalaryItemSearchParam.makeSqlWhere(queryParam)); // table.setSqlorderby("t.id DESC"); // table.setSqlprimarykey("t.id"); // table.setSqlisdistinct("false"); // // WeaResultMsg result = new WeaResultMsg(false); // result.putAll(table.makeDataResult()); // result.success(); // return result.getResultMap(); // 分页查询薪资项目 PageInfo page = getSalaryItemService(user).listPageByParam(queryParam); List salaryItemList = page.getList(); //最终返回的分页对象 PageInfo dtoPage = new PageInfo<>(SalaryItemListDTO.class); dtoPage.setPageSize(page.getPageSize()); dtoPage.setPageNum(page.getPageNum()); dtoPage.setTotal(page.getTotal()); if (CollectionUtils.isNotEmpty(salaryItemList)) { // 查询公式 Set formulaIds = SalaryEntityUtil.properties(salaryItemList, SalaryItemPO::getFormulaId); List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); // 转换成薪资项目列表dto dtoPage.setList(SalaryItemBO.convert2ListDTO(salaryItemList, expressFormulas)); } return dtoPage; } /** * 获取薪资账套的薪资项目详情 * * @param salarySobItemGroupId 薪资账套的薪资项目的id * @return */ public SalarySobItemGroupPO getGroupForm(Long salarySobItemGroupId) { return getSalarySobItemGroupService(user).getById(salarySobItemGroupId); } /** * 获取薪资账套的薪资项目详情 * * @param salarySobId 薪资账套的id * @return */ public SalarySobItemAggregateDTO getForm(Long salarySobId) { return getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId); } /** * 保存 * * @param saveParam 保存参数 */ public void save(SalarySobItemSaveParam saveParam) { getSalarySobItemService(user).save(saveParam); } /** * 基础信息浏览按钮(下拉框) * @return */ public Collection> empFieldList() { Field[] declaredFields = DataCollectionEmployee.class.getDeclaredFields(); Map empFieldMap = Maps.newHashMapWithExpectedSize(declaredFields.length); List> list = new ArrayList(); for (Field declaredField : declaredFields) { Map item = new HashMap<>(); if (!declaredField.isAnnotationPresent(SalaryFormulaVar.class)) { continue; } SalaryFormulaVar annotation = declaredField.getAnnotation(SalaryFormulaVar.class); empFieldMap.put(declaredField.getName(), SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel())); item.put("name", SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel())); item.put("id", declaredField.getName()); list.add(item); } return list; } }