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

212 lines
10 KiB
Java
Raw Normal View History

2022-03-17 15:14:35 +08:00
package com.engine.salary.service.impl;
2022-03-30 20:27:17 +08:00
import com.engine.common.util.ServiceUtil;
2022-03-17 15:14:35 +08:00
import com.engine.core.impl.Service;
import com.engine.salary.biz.SalaryItemBiz;
2022-03-21 09:33:21 +08:00
import com.engine.salary.biz.SysSalaryItemBiz;
import com.engine.salary.entity.salaryitem.bo.SalaryItemBO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
2022-03-17 15:14:35 +08:00
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
2022-03-21 09:33:21 +08:00
import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO;
2022-03-30 20:27:17 +08:00
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
2022-03-17 15:14:35 +08:00
import com.engine.salary.enums.SalarySystemTypeEnum;
2022-03-21 09:33:21 +08:00
import com.engine.salary.enums.SalaryValueTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
2022-03-17 15:14:35 +08:00
import com.engine.salary.service.SalaryItemService;
2022-03-30 20:27:17 +08:00
import com.engine.salary.service.SalarySobItemService;
2022-03-21 09:33:21 +08:00
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
2022-04-15 13:54:47 +08:00
import com.engine.salary.util.page.PageInfo;
2022-03-17 15:14:35 +08:00
import org.apache.commons.collections4.CollectionUtils;
2022-03-21 09:33:21 +08:00
import org.springframework.beans.BeanUtils;
2022-03-30 20:27:17 +08:00
import weaver.hrm.User;
2022-03-17 15:14:35 +08:00
2022-03-21 09:33:21 +08:00
import java.util.*;
2022-03-17 15:14:35 +08:00
/**
* 薪资项目
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryItemServiceImpl extends Service implements SalaryItemService {
2022-03-21 09:33:21 +08:00
private SalaryItemBiz salaryItemBiz = new SalaryItemBiz();
2022-03-30 20:27:17 +08:00
private SalarySobItemService getSalarySobItemService(User user) {
return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
2022-03-21 09:33:21 +08:00
private SysSalaryItemBiz sysSalaryItemBiz = new SysSalaryItemBiz();
2022-03-17 15:14:35 +08:00
// @Autowired
// private LoggerTemplate salaryItemLoggerTemplate;
@Override
public SalaryItemPO getById(Long id) {
2022-03-21 09:33:21 +08:00
return salaryItemBiz.getById(id);
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listAll() {
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listAll();
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listByIds(Collection<Long> ids) {
if (CollectionUtils.isEmpty(ids)) {
return Collections.emptyList();
}
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listSome(SalaryItemPO.builder().ids(ids).build());
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listBySysSalaryItemIds(Collection<Long> sysSalaryItemIds) {
if (CollectionUtils.isEmpty(sysSalaryItemIds)) {
return Collections.emptyList();
}
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listSome(SalaryItemPO.builder().sysSalaryItemIds(sysSalaryItemIds).build());
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listByName(String name) {
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listSome(SalaryItemPO.builder().name(name).build());
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listBySystemType(SalarySystemTypeEnum systemType) {
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listSome(SalaryItemPO.builder().systemType(systemType.getValue()).build());
2022-03-17 15:14:35 +08:00
}
@Override
public List<SalaryItemPO> listBySystemTypeAndUseDefault(SalarySystemTypeEnum systemType, Integer useDefault) {
2022-03-21 09:33:21 +08:00
return salaryItemBiz.listSome(SalaryItemPO.builder().systemType(systemType.getValue()).useDefault(useDefault).build());
}
@Override
public List<SalaryItemPO> listByParam(SalaryItemSearchParam searchParam) {
return salaryItemBiz.listByParam(searchParam);
}
@Override
public PageInfo<SalaryItemPO> listPageByParam(SalaryItemSearchParam searchParam) {
return salaryItemBiz.listPageByParam(searchParam);
2022-03-17 15:14:35 +08:00
}
// @Override
// public Page<SalaryItemPO> listPageByParam(SalaryItemSearchParam searchParam, String tenantKey) {
// // 分页参数
// Page<SalaryItemPO> page = SalaryPageUtil.buildPage(searchParam.getCurrent(), searchParam.getPageSize());
// // 构建查询参数
// Wrapper<SalaryItemPO> queryWrapper = SalaryItemBO.buildQueryWrapper(searchParam, tenantKey);
// // 返回查询结果
2022-03-21 09:33:21 +08:00
// return SalaryItemBiz.selectPage(page, queryWrapper);
2022-03-17 15:14:35 +08:00
// }
2022-03-21 09:33:21 +08:00
@Override
public void save(SalaryItemSaveParam saveParam) {
// 名称不能和已有的自定义薪资项目重名
List<SalaryItemPO> salaryItemPOS = listByName(saveParam.getName());
if (CollectionUtils.isNotEmpty(salaryItemPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98326, "薪资项目名称已存在,请重新命名"));
}
// 名称不能和已有的系统薪资项目重名
List<SysSalaryItemPO> sysSalaryItemPOS = sysSalaryItemBiz.listSome(SysSalaryItemPO.builder().name(saveParam.getName()).build());
if (CollectionUtils.isNotEmpty(sysSalaryItemPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98328, "自定义薪资项目的名称不能和系统薪资项目的名称重名"));
}
// 保存薪资项目
2022-03-24 16:59:52 +08:00
SalaryItemPO salaryItemPO = SalaryItemBO.convert2SalaryItemPO(saveParam, (long) user.getUID());
2022-03-21 09:33:21 +08:00
salaryItemBiz.insert(salaryItemPO);
// todo 记录日志
2022-03-17 15:14:35 +08:00
// LoggerContext<SalaryItemPO> loggerContext = new LoggerContext<>();
// loggerContext.setTargetId(String.valueOf(salaryItemPO.getId()));
// loggerContext.setTargetName(salaryItemPO.getName());
// loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98329, "新建薪资项目"));
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98329, "新建薪资项目") + ": " + salaryItemPO.getName());
// loggerContext.setNewValues(salaryItemPO);
// salaryItemLoggerTemplate.write(loggerContext);
2022-03-21 09:33:21 +08:00
}
@Override
public void batchSave(Collection<SalaryItemPO> salaryItemPOS) {
salaryItemBiz.batchSave(salaryItemPOS);
}
@Override
public void update(SalaryItemSaveParam saveParam) {
// 查询薪资项目,判断薪资项目是否存在
SalaryItemPO salaryItemPO = getById(saveParam.getId());
if (Objects.isNull(salaryItemPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除"));
}
// 名称不能和已有的自定义薪资项目重名
List<SalaryItemPO> salaryItemPOS = listByName(saveParam.getName());
boolean nameExist = salaryItemPOS.stream().anyMatch(e -> !Objects.equals(salaryItemPO.getId(), e.getId()));
if (nameExist) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98326, "薪资项目名称已存在,请重新命名"));
}
// 名称不能和已有的系统薪资项目重名
List<SysSalaryItemPO> sysSalaryItemPOS = sysSalaryItemBiz.listSome(SysSalaryItemPO.builder().name(saveParam.getName()).build());
boolean sysNameExist = sysSalaryItemPOS.stream().anyMatch(e -> !Objects.equals(salaryItemPO.getSysSalaryItemId(), e.getId()));
if (sysNameExist) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98328, "自定义薪资项目的名称不能和系统薪资项目的名称重名"));
}
// 更新薪资项目
SalaryItemPO newSalaryItemPO = new SalaryItemPO();
BeanUtils.copyProperties(salaryItemPO, newSalaryItemPO);
newSalaryItemPO.setName(saveParam.getName());
newSalaryItemPO.setUseDefault(saveParam.getUseDefault());
newSalaryItemPO.setUseInEmployeeSalary(saveParam.getUseInEmployeeSalary());
2022-03-22 21:01:38 +08:00
newSalaryItemPO.setRoundingMode(saveParam.getRoundingMode());
2022-03-21 09:33:21 +08:00
newSalaryItemPO.setPattern(saveParam.getPattern());
2022-03-22 21:01:38 +08:00
newSalaryItemPO.setValueType(saveParam.getValueType());
2022-05-07 15:20:39 +08:00
newSalaryItemPO.setDataType(saveParam.getDataType());
2022-03-22 21:01:38 +08:00
newSalaryItemPO.setFormulaId(Objects.equals(saveParam.getValueType(), SalaryValueTypeEnum.INPUT.getValue()) ? 0L : saveParam.getFormulaId());
2022-03-21 09:33:21 +08:00
newSalaryItemPO.setDescription(saveParam.getDescription());
newSalaryItemPO.setUpdateTime(new Date());
salaryItemBiz.updateById(newSalaryItemPO);
2022-03-24 16:59:52 +08:00
// 记录日志
2022-03-17 15:14:35 +08:00
// LoggerContext<SalaryItemPO> loggerContext = new LoggerContext<>();
// loggerContext.setTargetId(String.valueOf(newSalaryItemPO.getId()));
// loggerContext.setTargetName(newSalaryItemPO.getName());
// loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue());
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(93892, "编辑薪资项目"));
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(93892, "编辑薪资项目") + ": " + newSalaryItemPO.getName());
// loggerContext.setOldValues(salaryItemPO);
// loggerContext.setNewValues(newSalaryItemPO);
// salaryItemLoggerTemplate.write(loggerContext);
2022-03-21 09:33:21 +08:00
}
@Override
public void deleteByIds(Collection<Long> ids) {
// 查询薪资项目
List<SalaryItemPO> salaryItemPOS = listByIds(ids);
if (CollectionUtils.isEmpty(salaryItemPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98299, "参数错误,薪资项目不存在或已被删除"));
}
2022-03-30 20:27:17 +08:00
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalaryItemIds(ids);
if (CollectionUtils.isNotEmpty(salarySobItemPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98322, "薪资账套正在使用该薪资项目,不允许删除"));
}
2022-03-21 09:33:21 +08:00
// 删除薪资项目
ids = SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getId);
salaryItemBiz.deleteByIds(ids);
//todo 记录删除日志
2022-03-17 15:14:35 +08:00
// salaryItemPOS.forEach(salaryItemPO -> {
// LoggerContext<SalaryItemPO> loggerContext = new LoggerContext<>();
// loggerContext.setTargetId(String.valueOf(salaryItemPO.getId()));
// loggerContext.setTargetName(salaryItemPO.getName());
// loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue());
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98323, "删除薪资项目"));
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98323, "删除薪资项目") + ": " + salaryItemPO.getName());
// loggerContext.setOldValues(salaryItemPO);
// salaryItemLoggerTemplate.write(loggerContext);
// });
2022-03-21 09:33:21 +08:00
}
2022-03-17 15:14:35 +08:00
}