149 lines
5.6 KiB
Java
149 lines
5.6 KiB
Java
|
|
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<SalaryStatisticsDimensionListDTO> list(SalaryStatisticsDimensionQueryParam queryParam) {
|
||
|
|
PageInfo<SalaryStatisticsDimensionPO> page = salaryStatisticsDimensionService(user).listPage(queryParam);
|
||
|
|
List<SalaryStatisticsDimensionPO> list = page.getList();
|
||
|
|
List<SalaryStatisticsDimensionListDTO> 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<String, Object> 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<String, Object> delete(Collection<Long> ids) {
|
||
|
|
return salaryStatisticsDimensionService(user).delete(ids);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 薪酬统计维度下拉列表
|
||
|
|
*
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
public List<Map<String, Object>> selectList() {
|
||
|
|
List<SalaryStatisticsDimensionPO> salaryStatisticsDimensions = salaryStatisticsDimensionService(user).listAll();
|
||
|
|
return salaryStatisticsDimensions.stream().map(m -> {
|
||
|
|
Map<String, Object> map = new HashMap<>(2);
|
||
|
|
map.put("id", String.valueOf(m.getId()));
|
||
|
|
map.put("content", m.getDimName());
|
||
|
|
return map;
|
||
|
|
}).collect(Collectors.toList());
|
||
|
|
}
|
||
|
|
}
|