diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 7382ac4b6..4a9208e7a 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -607,7 +607,8 @@ UPDATE hrsa_salary_archive - run_status='FIXED' + run_status='FIXED', + pay_end_date= null WHERE run_status = 'SUSPEND' and id IN diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 68a5209b1..a6b726221 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -1119,17 +1119,45 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); } - List oldList = listSome(SalaryArchivePO.builder() - .ids(ids) - .runStatus(SalaryArchiveStatusEnum.SUSPEND.getValue()) - .build()); - List unableList = oldList.stream().filter(f -> Objects.nonNull(f.getPayEndDate()) && !f.getPayEndDate().after(new Date())).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(unableList)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(115789, "最后发薪日必须晚于今天")); - } +// List oldList = listSome(SalaryArchivePO.builder() +// .ids(ids) +// .runStatus(SalaryArchiveStatusEnum.SUSPEND.getValue()) +// .build()); +// List unableList = oldList.stream().filter(f -> Objects.nonNull(f.getPayEndDate()) && !f.getPayEndDate().after(new Date())).collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(unableList)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(115789, "最后发薪日必须晚于今天")); +// } +// +// // 从待停薪到定薪 +// getSalaryArchiveMapper().deleteSuspendTodo(ids); +// return StringUtils.EMPTY; - // 从待停薪到定薪 - getSalaryArchiveMapper().deleteSuspendTodo(ids); + // 获取所有个税扣缴义务人 + Collection taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree(Long.valueOf(user.getUID())); + // 获取删除待停薪信息 + List list = getSalaryArchiveMapper().list(SalaryArchiveQueryParam.builder().ids(ids).build()); + if(list.size() != ids.size()){ + throw new SalaryRunTimeException("薪资档案不存在,删除失败!"); + } + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentList, TaxAgentManageRangeEmployeeDTO::getTaxAgentId); + // 判断删除待停薪代办的人是否在个税扣缴义务人的人员范围中 + for(SalaryArchiveListDTO dto : list){ + TaxAgentManageRangeEmployeeDTO taxAgentManageRangeEmployeeDTO = taxAgentMap.get(dto.getTaxAgentId()); + if(Objects.nonNull(taxAgentManageRangeEmployeeDTO)){ + boolean canDelete = taxAgentManageRangeEmployeeDTO.getEmployeeList().stream() + .map(TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee::getEmployeeId) + .anyMatch(id -> Objects.equals(id, dto.getEmployeeId())); + if(!canDelete){ + throw new SalaryRunTimeException("个税扣缴义务人不存在或不在权限范围内,删除失败!"); + } + }else{ + throw new SalaryRunTimeException("个税扣缴义务人不存在或不在权限范围内,删除失败!"); + } + } + // 删除最后发薪日期,设置状态为发薪 + if(CollectionUtils.isNotEmpty(list)){ + getSalaryArchiveMapper().deleteSuspendTodo(list.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList())); + } return StringUtils.EMPTY; }