2022-11-25 10:53:23 +08:00
|
|
|
package com.engine.salary.service.impl;
|
2022-11-17 11:11:58 +08:00
|
|
|
|
2022-11-25 10:53:23 +08:00
|
|
|
import com.engine.common.util.ServiceUtil;
|
2022-11-17 11:11:58 +08:00
|
|
|
import com.engine.core.impl.Service;
|
2022-11-25 10:53:23 +08:00
|
|
|
import com.engine.hrm.service.RolesMembersService;
|
|
|
|
|
import com.engine.hrm.service.impl.RolesMembersServiceImpl;
|
|
|
|
|
import com.engine.salary.biz.SalarySendRangeObjBiz;
|
|
|
|
|
import com.engine.salary.entity.salaryBill.bo.SalarySendRangeBO;
|
|
|
|
|
import com.engine.salary.entity.salaryBill.dto.SalarySendInfoListDTO;
|
|
|
|
|
import com.engine.salary.entity.salaryBill.dto.SalarySendUserInfoDTO;
|
2022-11-17 11:11:58 +08:00
|
|
|
import com.engine.salary.entity.salaryBill.po.SalarySendRangeObj;
|
2022-11-25 10:53:23 +08:00
|
|
|
import com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum;
|
|
|
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
2022-11-17 11:11:58 +08:00
|
|
|
import com.engine.salary.service.SalarySendRangeObjService;
|
2022-11-25 10:53:23 +08:00
|
|
|
import com.engine.salary.service.SalarySendService;
|
2022-11-17 14:25:10 +08:00
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
2022-11-17 11:11:58 +08:00
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
2022-11-25 10:53:23 +08:00
|
|
|
import java.util.Set;
|
|
|
|
|
import java.util.stream.Collectors;
|
2022-11-17 11:11:58 +08:00
|
|
|
|
2022-11-17 14:25:10 +08:00
|
|
|
import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY;
|
|
|
|
|
|
2022-11-17 11:11:58 +08:00
|
|
|
public class SalarySendRangeObjServiceImpl extends Service implements SalarySendRangeObjService {
|
|
|
|
|
|
2022-11-25 10:53:23 +08:00
|
|
|
private SalarySendService getSalarySendService() {
|
|
|
|
|
return ServiceUtil.getService(SalarySendServiceImpl.class, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private RolesMembersService getRolesMembersService() {
|
|
|
|
|
return ServiceUtil.getService(RolesMembersServiceImpl.class, user);
|
2022-11-17 11:11:58 +08:00
|
|
|
}
|
|
|
|
|
|
2022-11-25 10:53:23 +08:00
|
|
|
private final SalarySendRangeObjBiz salarySendRangeObjBiz = new SalarySendRangeObjBiz();
|
|
|
|
|
|
2022-11-17 11:11:58 +08:00
|
|
|
@Override
|
2022-11-17 14:25:10 +08:00
|
|
|
public List<SalarySendRangeObj> listBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds) {
|
|
|
|
|
if (salarySendId == null || CollectionUtils.isEmpty(rangeIds)) {
|
2022-11-17 11:11:58 +08:00
|
|
|
return Collections.emptyList();
|
|
|
|
|
}
|
2022-11-25 10:53:23 +08:00
|
|
|
return salarySendRangeObjBiz.applyMapper(mapper ->
|
2022-11-17 14:25:10 +08:00
|
|
|
mapper.listBySalarySendIdAndRangeIds(salarySendId, rangeIds, DEFAULT_TENANT_KEY)
|
2022-11-17 11:11:58 +08:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-11-25 10:53:23 +08:00
|
|
|
public void deleteBySalarySendIds(Collection<Long> salarySendIds) {
|
|
|
|
|
salarySendRangeObjBiz.runMapper(mapper -> mapper.deleteBySalarySendIds(salarySendIds));
|
2022-11-17 11:11:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-11-25 10:53:23 +08:00
|
|
|
public void replaceAllByRangeIds(Long rangeIds, List<SalarySendRangeObj> rangeObjs) {
|
|
|
|
|
for (SalarySendRangeObj rangeObj : rangeObjs) {
|
|
|
|
|
SalarySendRangeTargetTypeEnum targetEnum = SalarySendRangeTargetTypeEnum.fromValue(rangeObj.getTargetType());
|
|
|
|
|
if (targetEnum == null) {
|
|
|
|
|
throw new SalaryRunTimeException("传入范围类型非法");
|
|
|
|
|
}
|
|
|
|
|
if (rangeObj.getTargetType().equals(SalarySendRangeTargetTypeEnum.ALL.getValue())) {
|
|
|
|
|
rangeObj.setTargetId(0L);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
salarySendRangeObjBiz.replaceAllByRangeId(rangeIds, rangeObjs);
|
2022-11-17 11:11:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-11-25 10:53:23 +08:00
|
|
|
public List<Long> getSendInfoIdsBySalarySendIdAndRangeIds(Long salarySendId, List<Long> rangeIds) {
|
|
|
|
|
// 获取范围
|
|
|
|
|
List<SalarySendRangeObj> rangeList =
|
|
|
|
|
salarySendRangeObjBiz.applyMapper(mapper -> mapper.listBySalarySendIdAndRangeIds(salarySendId, rangeIds, DEFAULT_TENANT_KEY));
|
2022-11-17 11:11:58 +08:00
|
|
|
|
2022-11-25 10:53:23 +08:00
|
|
|
// 初始化范围操作类
|
|
|
|
|
SalarySendRangeBO rangeBO = new SalarySendRangeBO();
|
|
|
|
|
for (SalarySendRangeObj rangeObj : rangeList) {
|
|
|
|
|
rangeBO.putNew(rangeObj);
|
|
|
|
|
}
|
|
|
|
|
// 获取当前发放单人员详情
|
|
|
|
|
List<SalarySendInfoListDTO> sendInfoList = getSalarySendService().salarySendInfoList(salarySendId);
|
|
|
|
|
// 获取全部人员id
|
|
|
|
|
List<Long> employeeIds = sendInfoList.stream().map(SalarySendInfoListDTO::getEmployeeId)
|
|
|
|
|
.distinct().collect(Collectors.toList());
|
|
|
|
|
// 查找人员的多维度关联id
|
|
|
|
|
List<SalarySendUserInfoDTO> userInfos =
|
|
|
|
|
salarySendRangeObjBiz.getSalarySendUserInfoDTOs(employeeIds);
|
|
|
|
|
// 筛选在范围中的人员id
|
|
|
|
|
Set<Long> empIds = userInfos.stream()
|
|
|
|
|
.filter(rangeBO::judgeInRange)
|
|
|
|
|
.map(SalarySendUserInfoDTO::getResourceId)
|
|
|
|
|
.distinct().collect(Collectors.toSet());
|
|
|
|
|
// 返回发放详情的id
|
|
|
|
|
return sendInfoList.stream().filter(s -> empIds.contains(s.getEmployeeId()))
|
|
|
|
|
.map(SalarySendInfoListDTO::getId)
|
|
|
|
|
.collect(Collectors.toList());
|
2022-11-17 11:11:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2022-11-25 10:53:23 +08:00
|
|
|
public void deleteBySalarySendRangeIds(List<Long> salarySendRangeIds) {
|
|
|
|
|
salarySendRangeObjBiz.runMapper(mapper -> mapper.deleteByRangeIds(salarySendRangeIds, DEFAULT_TENANT_KEY));
|
2022-11-17 11:11:58 +08:00
|
|
|
}
|
|
|
|
|
}
|