2022-03-21 20:09:10 +08:00
|
|
|
package com.engine.salary.service.impl;
|
|
|
|
|
|
2022-03-23 20:54:08 +08:00
|
|
|
import com.engine.common.util.ServiceUtil;
|
2022-03-21 20:09:10 +08:00
|
|
|
import com.engine.core.impl.Service;
|
2022-03-23 18:41:38 +08:00
|
|
|
import com.engine.salary.biz.SalarySobBiz;
|
2022-03-21 20:09:10 +08:00
|
|
|
import com.engine.salary.biz.SalarySobItemBiz;
|
2022-03-23 18:41:38 +08:00
|
|
|
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
|
|
|
|
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
|
|
|
|
|
import com.engine.salary.entity.salarysob.bo.SalarySobItemSaveBO;
|
|
|
|
|
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
|
|
|
|
import com.engine.salary.entity.salarysob.param.SalarySobItemSaveParam;
|
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
|
|
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
|
2022-03-21 20:09:10 +08:00
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
2022-03-23 18:41:38 +08:00
|
|
|
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
|
|
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
|
|
|
|
import com.engine.salary.service.*;
|
|
|
|
|
import com.engine.salary.util.SalaryEntityUtil;
|
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
|
|
|
|
import com.weaver.excel.formula.api.entity.ExpressFormula;
|
2022-03-21 20:09:10 +08:00
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
2022-03-23 20:54:08 +08:00
|
|
|
import weaver.hrm.User;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
import java.util.*;
|
2022-03-21 20:09:10 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 薪资账套的薪资项目副本
|
|
|
|
|
* <p>Copyright: Copyright (c) 2022</p>
|
|
|
|
|
* <p>Company: 泛微软件</p>
|
|
|
|
|
*
|
|
|
|
|
* @author qiantao
|
|
|
|
|
* @version 1.0
|
|
|
|
|
**/
|
|
|
|
|
public class SalarySobItemServiceImpl extends Service implements SalarySobItemService {
|
|
|
|
|
|
|
|
|
|
private SalarySobItemBiz salarySobItemMapper = new SalarySobItemBiz();
|
2022-03-23 18:41:38 +08:00
|
|
|
private SalarySobBiz salarySobBiz = new SalarySobBiz();
|
2022-03-23 20:54:08 +08:00
|
|
|
|
|
|
|
|
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
|
|
|
|
|
return (SalarySobEmpFieldService) ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SalarySobItemGroupService getSalarySobItemGroupService(User user) {
|
|
|
|
|
return (SalarySobItemGroupService) ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user);
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
private SalaryFormulaService salaryFormulaService;
|
|
|
|
|
private SalaryItemService salaryItemService;
|
2022-03-21 20:09:10 +08:00
|
|
|
// private LoggerTemplate salarySobLoggerTemplate;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SalarySobItemPO> list() {
|
|
|
|
|
return salarySobItemMapper.listAll();
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
@Override
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobId(Long salarySobId) {
|
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIds(Collection<Long> salarySobIds) {
|
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobIds(salarySobIds).build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SalarySobItemPO> listBySalarySobIdAndSalaryItemIdNotIn(Long salarySobId, Collection<Long> salaryItemIds) {
|
|
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).salaryItemIds(salaryItemIds).build());
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-21 20:09:10 +08:00
|
|
|
@Override
|
|
|
|
|
public List<SalarySobItemPO> listBySalaryItemIds(Collection<Long> salaryItemIds) {
|
|
|
|
|
if (CollectionUtils.isEmpty(salaryItemIds)) {
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
2022-03-23 18:41:38 +08:00
|
|
|
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salaryItemIds(salaryItemIds).build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SalaryItemPO> listBySalarySobId4SalaryItem(Long salarySobId) {
|
|
|
|
|
// 查询薪资项目副本
|
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobId(salarySobId);
|
|
|
|
|
if (CollectionUtils.isEmpty(salarySobItemPOS)) {
|
|
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
|
|
|
|
// 查询薪资项目
|
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
|
|
|
|
return salaryItemService.listByIds(salaryItemIds);
|
2022-03-21 20:09:10 +08:00
|
|
|
}
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
@Override
|
|
|
|
|
public SalarySobItemAggregateDTO getAggregateBySalarySobId(Long salarySobId) {
|
|
|
|
|
// 查询薪资账套
|
|
|
|
|
SalarySobPO salarySobPO = salarySobBiz.getById(salarySobId);
|
|
|
|
|
if (Objects.isNull(salarySobPO)) {
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
|
|
|
|
}
|
|
|
|
|
// 查询薪资账套的员工信息字段
|
2022-03-23 20:54:08 +08:00
|
|
|
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
// 查询薪资账套的薪资项目分类
|
2022-03-23 20:54:08 +08:00
|
|
|
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salarySobId);
|
2022-03-23 18:41:38 +08:00
|
|
|
// 查询薪资账套的薪资项目副本
|
|
|
|
|
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobId(salarySobId);
|
|
|
|
|
// 薪资账套的薪资项目副本所用的公式id
|
|
|
|
|
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
|
|
|
|
|
// 查询公式详情
|
|
|
|
|
List<ExpressFormula> expressFormulas = salaryFormulaService.listExpressFormula(formulaIds);
|
|
|
|
|
// 查询薪资账套的薪资项目副本所关联的薪资项目
|
|
|
|
|
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
|
|
|
|
List<SalaryItemPO> salaryItemPOS = salaryItemService.listByIds(salaryItemIds);
|
|
|
|
|
// 转换成聚合dto
|
|
|
|
|
SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS,
|
|
|
|
|
salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS);
|
|
|
|
|
return salarySobItemAggregateBO.convert2AggregateDTO();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void save(SalarySobItemSaveParam saveParam) {
|
|
|
|
|
// 查询薪资账套
|
|
|
|
|
SalarySobPO salarySobPO = salarySobBiz.getById(saveParam.getSalarySobId());
|
|
|
|
|
if (Objects.isNull(salarySobPO)) {
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
|
|
|
|
}
|
2022-03-23 20:54:08 +08:00
|
|
|
//todo
|
2022-03-24 16:59:52 +08:00
|
|
|
// 删除薪资账套的员工信息字段
|
|
|
|
|
getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId()));
|
|
|
|
|
// 删除薪资账套的薪资项目副本
|
|
|
|
|
deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId()));
|
|
|
|
|
// 删除薪资账套的薪资项目分类
|
|
|
|
|
getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId()));
|
2022-03-23 18:41:38 +08:00
|
|
|
|
|
|
|
|
// 处理保存参数
|
|
|
|
|
SalarySobItemSaveBO.Result result = SalarySobItemSaveBO.handle(saveParam,(long)user.getUID());
|
|
|
|
|
// 保存薪资账套的员工信息字段
|
2022-03-24 16:59:52 +08:00
|
|
|
if (CollectionUtils.isNotEmpty(result.getNeedInsertSalarySobEmpFields())) {
|
2022-03-24 19:42:03 +08:00
|
|
|
// getSalarySobEmpFieldService(user).batchSave(result.getNeedInsertSalarySobEmpFields());
|
2022-03-24 16:59:52 +08:00
|
|
|
}
|
2022-03-24 19:42:03 +08:00
|
|
|
|
2022-03-24 20:01:25 +08:00
|
|
|
//先保存项目分类获取分类id
|
|
|
|
|
List<SalarySobItemSaveParam.SalarySobItemGroupParam> itemGroups = saveParam.getItemGroups();
|
|
|
|
|
// CollectionUtils.emptyIfNull()
|
2022-03-24 19:42:03 +08:00
|
|
|
|
|
|
|
|
|
2022-03-23 18:41:38 +08:00
|
|
|
// 保存薪资账套的薪资项目副本
|
|
|
|
|
if (CollectionUtils.isNotEmpty(result.getNeedInsertSalarySobItems())) {
|
|
|
|
|
batchSave(result.getNeedInsertSalarySobItems());
|
|
|
|
|
}
|
|
|
|
|
// 保存薪资账套的薪资项目分类
|
|
|
|
|
if (CollectionUtils.isNotEmpty(result.getNeedInsertSalarySobItemGroups())) {
|
2022-03-23 20:54:08 +08:00
|
|
|
getSalarySobItemGroupService(user).batchSave(result.getNeedInsertSalarySobItemGroups());
|
2022-03-23 18:41:38 +08:00
|
|
|
}
|
|
|
|
|
//todo 记录日志
|
2022-03-21 20:09:10 +08:00
|
|
|
// LoggerContext<SalarySobPO> loggerContext = new LoggerContext<>();
|
|
|
|
|
// loggerContext.setTargetId("" + salarySobPO.getId());
|
|
|
|
|
// loggerContext.setTargetName(salarySobPO.getName());
|
|
|
|
|
// loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue());
|
|
|
|
|
// loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98613, "编辑薪资账套薪资项目"));
|
|
|
|
|
// loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98613, "编辑薪资账套薪资项目"));
|
|
|
|
|
// salarySobLoggerTemplate.write(loggerContext);
|
2022-03-23 18:41:38 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void batchSave(Collection<SalarySobItemPO> salarySobItemPOS) {
|
|
|
|
|
salarySobItemMapper.batchInsert(salarySobItemPOS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
|
|
|
|
|
salarySobItemMapper.deleteBySalarySobIds(salarySobIds);
|
|
|
|
|
}
|
2022-03-21 20:09:10 +08:00
|
|
|
}
|