weaver-hrm-salary/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceIm...

214 lines
8.8 KiB
Java
Raw Normal View History

2024-04-24 15:55:41 +08:00
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.bo.SalaryApprovalBO;
import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam;
import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper;
import com.engine.salary.service.*;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.db.IdGenerator;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.valid.ValidUtil;
import org.apache.commons.collections.CollectionUtils;
import weaver.hrm.User;
2024-04-25 15:30:25 +08:00
import java.util.Collection;
2024-04-26 11:24:47 +08:00
import java.util.Collections;
2024-04-24 15:55:41 +08:00
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Harryxzy
* @ClassName SalaryApprovalRuleServiceImpl
* @date 2024/04/23 17:35
* @description
*/
public class SalaryApprovalRuleServiceImpl extends Service implements SalaryApprovalRuleService {
private SalaryApprovalRuleMapper getSalaryApprovalRuleMapper() {
return MapperProxyFactory.getProxy(SalaryApprovalRuleMapper.class);
}
private SalaryAcctRecordMapper getSalaryAcctRecordMapper() {
return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
@Override
public List<SalaryApprovalRulePO> listAll() {
return getSalaryApprovalRuleMapper().listAll();
}
@Override
public SalaryApprovalRulePO getById(Long id) {
return getSalaryApprovalRuleMapper().getById(id);
}
@Override
public int insertIgnoreNull(SalaryApprovalRulePO po) {
return getSalaryApprovalRuleMapper().insertIgnoreNull(po);
}
@Override
public int update(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().update(salaryApprovalRule);
}
@Override
public int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().updateIgnoreNull(salaryApprovalRule);
}
@Override
public int delete(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().delete(salaryApprovalRule);
}
@Override
public SalaryApprovalRulePO getBySalarySobId(Long salarySobId) {
if(salarySobId == null) {
return null;
}
List<SalaryApprovalRulePO> salaryApprovalRulePOS = getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobId(salarySobId).build());
if (CollectionUtils.isNotEmpty(salaryApprovalRulePOS) && salaryApprovalRulePOS.size() == 1) {
return salaryApprovalRulePOS.get(0);
}
return null;
}
@Override
public void deleteBySalarySobId(Long salarySobId) {
if (salarySobId == null) {
return;
}
getSalaryApprovalRuleMapper().deleteBySalarySobId(salarySobId);
}
@Override
public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) {
// 查询薪资审批设置
SalaryApprovalRulePO approvalRulePO = getBySalarySobId(queryParam.getSalarySobId());
if (approvalRulePO == null) {
// 没有审批设置信息,创建默认设置信息
Date now = new Date();
approvalRulePO = SalaryApprovalRulePO.builder()
.id(IdGenerator.generate())
.salarySobId(queryParam.getSalarySobId())
.openApproval(0)
.createTime(now)
.updateTime(now)
.creator(Long.valueOf(user.getUID()))
.deleteType(0)
.build();
// 获取账套的薪资项目设置信息
SalarySobItemAggregateDTO aggregateBySalarySobId = getSalarySobItemService(user).getAggregateBySalarySobId(queryParam.getSalarySobId());
String setting = SalaryApprovalBO.sobItemAggregate2approvalGroupSetting(aggregateBySalarySobId);
approvalRulePO.setApprovalGroupSetting(setting);
insertIgnoreNull(approvalRulePO);
}
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList);
}
@Override
public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) {
SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryApprovalDTO.getSalarySobId());
if (salarySobPO == null) {
throw new RuntimeException("薪资账套不存在");
}
// 删除原来的
deleteBySalarySobId(salaryApprovalDTO.getSalarySobId());
// 保存最新的
Date now = new Date();
SalaryApprovalRulePO po = SalaryApprovalRulePO.builder()
.id(IdGenerator.generate())
.salarySobId(salaryApprovalDTO.getSalarySobId())
.openApproval(salaryApprovalDTO.getIsOpenApproval() ? 1 : 0)
.approvalGroupSetting(JsonUtil.toJsonString(salaryApprovalDTO.getApprovalItemGroup()))
2024-04-25 15:30:25 +08:00
.workflowUrl(salaryApprovalDTO.getApprovalWorkflowUrl())
2024-04-24 15:55:41 +08:00
.createTime(now)
.updateTime(now)
.creator(Long.valueOf(user.getUID()))
.deleteType(0)
.build();
insertIgnoreNull(po);
}
@Override
public List<SalaryItemPO> listSalaryApprovalItem(SalaryItemSearchParam queryParam) {
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(queryParam.getSalarySobId());
List<Long> salaryItemIds = salarySobItemPOS.stream()
.filter(po -> !queryParam.getExcludeIds().contains(po.getSalaryItemId()))
.map(SalarySobItemPO::getSalaryItemId)
.collect(Collectors.toList());
List<SalaryItemPO> salaryItemPOList = getSalaryItemService(user).listByIds(salaryItemIds);
return salaryItemPOList;
}
@Override
public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) {
SalaryAcctRecordPO acctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
if (acctRecordPO == null) {
throw new SalaryRunTimeException("薪资核算记录不存在或已被删除");
}
SalaryApprovalRulePO approvalRulePO = getBySalarySobId(acctRecordPO.getSalarySobId());
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList);
}
@Override
public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) {
ValidUtil.doValidator(saveParam);
// 获取核算记录信息
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(saveParam.getSalaryAcctRecordId());
if (salaryAcctRecordPO == null) {
throw new SalaryRunTimeException("薪资核素记录不存在或已被删除");
}
salaryAcctRecordPO.setApprovalId(saveParam.getRequestId());
getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO);
}
2024-04-25 15:30:25 +08:00
@Override
public void deleteBySalarySobIds(Collection<Long> ids) {
ids.stream().forEach(this::deleteBySalarySobId);
}
2024-04-26 11:24:47 +08:00
@Override
public List<SalaryApprovalRulePO> listBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isEmpty(salarySobIds)) {
return Collections.emptyList();
}
return getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobIds(salarySobIds).build());
}
2024-04-24 15:55:41 +08:00
}