weaver-hrm-salary/src/com/engine/salary/service/impl/SettingServiceImpl.java

176 lines
7.3 KiB
Java
Raw Normal View History

2024-10-11 15:34:17 +08:00
package com.engine.salary.service.impl;
import cn.hutool.core.util.StrUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
2024-10-11 17:04:13 +08:00
import com.engine.salary.entity.setting.param.PageListSettingQueryParam;
2024-10-11 15:34:17 +08:00
import com.engine.salary.entity.setting.param.PageListSettingSaveParam;
2024-11-04 19:49:46 +08:00
import com.engine.salary.entity.setting.param.PageListTemplateQueryParam;
import com.engine.salary.entity.setting.param.PageListTemplateSaveParam;
2024-10-11 15:34:17 +08:00
import com.engine.salary.entity.setting.po.PageListSettingPO;
2024-11-04 19:49:46 +08:00
import com.engine.salary.enums.SalaryOnOffEnum;
import com.engine.salary.exception.SalaryRunTimeException;
2024-10-11 15:34:17 +08:00
import com.engine.salary.mapper.setting.PageListSettingMapper;
import com.engine.salary.service.SalaryItemService;
import com.engine.salary.service.SalarySobService;
import com.engine.salary.service.SettingService;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.db.IdGenerator;
import com.engine.salary.util.db.MapperProxyFactory;
2024-11-04 19:49:46 +08:00
import com.engine.salary.util.valid.ValidUtil;
2024-10-11 15:34:17 +08:00
import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
2024-11-04 19:49:46 +08:00
import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT;
2024-10-11 15:34:17 +08:00
/**
* 薪资核算
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SettingServiceImpl extends Service implements SettingService {
private PageListSettingMapper getPageListSettingMapper() {
return MapperProxyFactory.getProxy(PageListSettingMapper.class);
}
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
@Override
public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) {
Date now = new Date();
PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage());
if (pageListSettingPO != null) {
pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting()));
pageListSettingPO.setUpdateTime(now);
getPageListSettingMapper().updateIgnoreNull(pageListSettingPO);
} else {
pageListSettingPO = PageListSettingPO.builder()
.id(IdGenerator.generate())
2024-11-04 19:49:46 +08:00
.name("系统默认模板")
.template(SalaryOnOffEnum.OFF.getValue())
2024-10-11 15:34:17 +08:00
.page(pageListSettingSaveParam.getPage())
.setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting()))
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(DEFAULT_TENANT_KEY)
.build();
getPageListSettingMapper().insertIgnoreNull(pageListSettingPO);
}
}
@Override
2024-10-11 17:04:13 +08:00
public Map getPageListSetting(PageListSettingQueryParam param) {
String page = param.getPage();
2024-10-11 15:34:17 +08:00
Map result = new HashMap();
PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page);
2024-11-04 19:49:46 +08:00
if (SALARY_DETAILS_REPORT.getValue().equals(page)) {
2024-10-11 15:34:17 +08:00
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
salaryItemList = salaryItemList.stream()
2024-10-11 17:04:13 +08:00
.filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
}
return true;
})
.sorted((o1, o2) -> {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
2024-10-11 15:34:17 +08:00
}
})
.collect(Collectors.toList());
result.put("setting", salaryItemList);
if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) {
result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class));
} else {
List<Long> collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
result.put("checked", collect);
}
}
return result;
}
2024-11-04 19:49:46 +08:00
@Override
public List<PageListSettingPO> getPageListTemplates(PageListTemplateQueryParam param) {
ValidUtil.doValidator(param);
String page = param.getPage();
List<PageListSettingPO> settingPOS = new ArrayList<>();
//系统默认模板
PageListSettingPO settingPO = getPageListSettingMapper().getByPage(page);
if (settingPO != null) {
settingPOS.add(settingPO);
}
List<PageListSettingPO> pos = getPageListSettingMapper().getTemplatesByPage(page);
settingPOS.addAll(pos);
String name = param.getName();
if (StrUtil.isNotBlank(name)) {
settingPOS = settingPOS.stream().filter(po -> po.getName() != null && po.getName().contains(name)).collect(Collectors.toList());
}
return settingPOS;
}
@Override
public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) {
ValidUtil.doValidator(param);
Date now = new Date();
Long id = param.getId();
PageListSettingPO po;
if (id == null) {
po = PageListSettingPO.builder()
.id(IdGenerator.generate())
.template(SalaryOnOffEnum.ON.getValue())
.name(param.getName())
.page(param.getPage())
.setting(JsonUtil.toJsonString(param.getSetting()))
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(DEFAULT_TENANT_KEY)
.build();
getPageListSettingMapper().insertIgnoreNull(po);
} else {
po = getPageListSettingMapper().getById(id);
if (po == null) {
throw new SalaryRunTimeException("模板不存在!");
}
po.setName(param.getName());
po.setSetting(JsonUtil.toJsonString(param.getSetting()));
po.setUpdateTime(now);
getPageListSettingMapper().updateIgnoreNull(po);
}
return po;
}
2024-10-11 15:34:17 +08:00
}