weaver-hrm-salary/src/com/engine/salary/report/wrapper/SalaryStatisticsDimensionWr...

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());
}
}