package com.engine.salary.report.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.report.entity.dto.SalaryStatisticsDimensionFormDTO; import com.engine.salary.report.entity.dto.SalaryStatisticsDimensionListDTO; import com.engine.salary.report.entity.param.SalaryStatisticsDimensionQueryParam; import com.engine.salary.report.entity.param.SalaryStatisticsDimensionSaveParam; import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO; import com.engine.salary.report.enums.SalaryStatisticsDimensionTypeEnum; import com.engine.salary.report.service.SalaryStatisticsDimensionService; import com.engine.salary.report.service.impl.SalaryStatisticsDimensionServiceImpl; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.impl.SalaryItemServiceImpl; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Component; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; /** * @Description: 薪酬统计维度 * @Author: wangxiangzhong * @Date: 2022/12/15 13:46 */ @Component public class SalaryStatisticsDimensionWrapper extends Service { private SalaryStatisticsDimensionService salaryStatisticsDimensionService(User user) { return ServiceUtil.getService(SalaryStatisticsDimensionServiceImpl.class, user); } private SalaryItemService salaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } /** * 薪酬统计维度列表 * * @param queryParam * @return */ public PageInfo list(SalaryStatisticsDimensionQueryParam queryParam) { PageInfo page = salaryStatisticsDimensionService(user).listPage(queryParam); List list = page.getList(); List dtoList= new ArrayList<>(); if (CollectionUtils.isNotEmpty(list)) { dtoList = list.stream().map(m -> SalaryStatisticsDimensionListDTO.builder() .id(m.getId()) .dimName(m.getDimName()) .remark(m.getRemark()) .dimType(SalaryStatisticsDimensionTypeEnum.getDefaultLabelByValue(m.getDimType())) .isDefault(m.getIsDefault()) .build()).collect(Collectors.toList()); } return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), dtoList, SalaryStatisticsDimensionListDTO.class); } /** * 获取薪酬统计维度表单 * * @param id * @return */ public SalaryStatisticsDimensionFormDTO getFrom(Long id) { Map baseForm = new HashMap<>(); // 2.分组设置 String groupSetting = "[]"; if (id != null) { SalaryStatisticsDimensionPO po = this.salaryStatisticsDimensionService(user).getById(id); if (po == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161116, "薪酬统计维度不存在")); } groupSetting = po.getSetting(); Map result = JsonUtil.parseMap(po, Object.class); if (SalaryStatisticsDimensionTypeEnum.QUALITATIVE.getValue().equals(po.getDimType())) { result.put("statsDim", po.getDimCode()); } else { result.put("groupDim", po.getDimCode()); } baseForm.put("data", result); /** * 定量-组距式分组 * [{"id":"1","includeStart":true,"startValue: "10086", "indludeEnd": true, "endValue:"19999"},{"id":"2","includeStart":true,"startValue":"10086","indludeEnd":true,"endValue":"19999"}] * * 定量-单项式分组 * [{id:"3",value:"19999"},{id:"3",value:"19999"}] */ } else { SalaryStatisticsDimensionPO po = SalaryStatisticsDimensionPO.builder() .dimType(SalaryStatisticsDimensionTypeEnum.QUALITATIVE.getValue()) .build(); baseForm.put("data", JsonUtil.parseMap(po, Object.class)); } return SalaryStatisticsDimensionFormDTO.builder() .id(id) .baseForm(baseForm) .groupSetting(groupSetting) .build(); } /** * 保存薪酬统计维度 * * @param saveParam * @return */ public String save(SalaryStatisticsDimensionSaveParam saveParam) { return salaryStatisticsDimensionService(user).save(saveParam); } /** * 删除薪酬统计维度 * * @param ids * @return */ public Map delete(Collection ids) { return salaryStatisticsDimensionService(user).delete(ids); } /** * 薪酬统计维度下拉列表 * * @return */ public List> selectList() { List salaryStatisticsDimensions = salaryStatisticsDimensionService(user).listAll(); return salaryStatisticsDimensions.stream().map(m -> { Map map = new HashMap<>(2); map.put("id", String.valueOf(m.getId())); map.put("content", m.getDimName()); return map; }).collect(Collectors.toList()); } }