档案批量发薪、停薪权限控制

This commit is contained in:
钱涛 2024-09-12 14:48:51 +08:00
parent 383562c9cf
commit 46f94ddd3d
1 changed files with 13 additions and 47 deletions

View File

@ -21,7 +21,6 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO;
import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO; import com.engine.salary.entity.taxagent.po.TaxAgentEmpChangePO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO;
@ -369,36 +368,12 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
@Override @Override
public List<SalaryArchiveListDTO> list(SalaryArchiveQueryParam queryParam) { public List<SalaryArchiveListDTO> list(SalaryArchiveQueryParam queryParam) {
long currentEmployeeId = user.getUID();
//排序配置 //排序配置
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
queryParam.setOrderRule(orderRule); queryParam.setOrderRule(orderRule);
Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId); List<SalaryArchiveListDTO> list = getSalaryArchiveList(queryParam);
if (needAuth) { return getAuthService(user).auth(list, queryParam.getFilterType(), SalaryArchiveListDTO.class);
Boolean adminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId);
//不是管理员看不到数据返回空
if (!adminEnable) {
return new ArrayList<>();
}
//获取管理的人员范围
List<TaxAgentEmployeeDTO> taxAgentEmployeeDTOS = getTaxAgentService(user).listTaxAgentAndEmployee(currentEmployeeId);
Set<Long> employeeId = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getEmployeeId);
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId);
Set<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId);
//获取所有薪资档案
List<SalaryArchiveListDTO> list = getSalaryArchiveList(queryParam);
List<SalaryArchiveListDTO> finalAllArchive = list.stream().filter(dto -> employeeId.contains(dto.getEmployeeId()) && taxAgentIds.contains(dto.getTaxAgentId())).collect(Collectors.toList());
return finalAllArchive;
} else {
return getSalaryArchiveList(queryParam);
}
} }
/** /**
@ -1053,7 +1028,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
List<SalaryArchivePO> list = getSalaryArchiveMapper().listAll(); List<SalaryArchivePO> list = getSalaryArchiveMapper().listAll();
list = getAuthService(user).auth(list,AuthFilterTypeEnum.QUERY_DATA,SalaryArchivePO.class); list = getAuthService(user).auth(list, AuthFilterTypeEnum.QUERY_DATA, SalaryArchivePO.class);
long pendingTotal = 0L; long pendingTotal = 0L;
long fixedTotal = 0L; long fixedTotal = 0L;
@ -1176,8 +1151,8 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
@Override @Override
public Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam) { public Map<String, Object> allGotoFixed(SalaryArchiveQueryParam queryParam) {
queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue())); queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue()));
List<Long> salaryArchiveIds = this.list(queryParam) queryParam.setFilterType(AuthFilterTypeEnum.ADMIN_DATA);
.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); List<Long> salaryArchiveIds = this.list(queryParam).stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList());
return this.gotoFixed(salaryArchiveIds); return this.gotoFixed(salaryArchiveIds);
} }
@ -1230,6 +1205,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
@Override @Override
public Map<String, Object> allGotoStop(SalaryArchiveQueryParam queryParam) { public Map<String, Object> allGotoStop(SalaryArchiveQueryParam queryParam) {
queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.SUSPEND.getValue())); queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.SUSPEND.getValue()));
queryParam.setFilterType(AuthFilterTypeEnum.ADMIN_DATA);
List<Long> salaryArchiveIds = this.list(queryParam) List<Long> salaryArchiveIds = this.list(queryParam)
.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); .stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList());
return this.gotoStop(salaryArchiveIds); return this.gotoStop(salaryArchiveIds);
@ -1300,24 +1276,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
} }
List<SalaryArchivePO> oldList = listSome( SalaryArchivePO param = SalaryArchivePO.builder()
SalaryArchivePO.builder() .ids(ids)
.ids(ids) .runStatusList(Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()))
.runStatusList(Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) .build();
.build()); List<SalaryArchivePO> oldList = listSome(param);
oldList = getAuthService(user).auth(oldList, AuthFilterTypeEnum.ADMIN_DATA, SalaryArchivePO.class);
ids = SalaryEntityUtil.properties(oldList, SalaryArchivePO::getId);
if (CollectionUtils.isEmpty(oldList)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "档案不存在!"));
}
List<TaxAgentEmployeeDTO> taxAgentManageRangeEmployees = getTaxAgentService(user).listAllTaxAgentAndEmployee();
List<SalaryArchivePO> oldPendingList = oldList.stream().filter(f -> f.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())).collect(Collectors.toList());
boolean isNotExist = oldPendingList.stream().anyMatch(te -> taxAgentManageRangeEmployees.stream().noneMatch(p -> p.getEmployeeId() != null && p.getEmployeeId().equals(te.getEmployeeId()) && p.getTaxAgentId().equals(te.getTaxAgentId())));
if (isNotExist) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(116196, "不在当前个税扣缴义人的人员范围中,不可取消停薪"));
}
// 从停薪到待定薪 // 从停薪到待定薪
getSalaryArchiveMapper().gotoPendingFromStop(ids); getSalaryArchiveMapper().gotoPendingFromStop(ids);
// 从停薪到定薪 // 从停薪到定薪