diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index ec668e1b8..dbb34a140 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -47,6 +47,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.BeanUtils; +import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.hrm.User; @@ -862,6 +863,16 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct throw new SalaryRunTimeException("薪资核算记录不存在或已被删除!"); } SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); + + // 宁波精华二开 - 240814获取不需要发薪的人员 + RecordSet rs = new RecordSet(); + rs.execute("select xm from uf_lztz where sfsx = 1"); + List notAcctEmpIds = new ArrayList<>(); + while (rs.next()) { + int xm = rs.getInt("xm"); + notAcctEmpIds.add(Long.valueOf(xm)); + } + BaseBean baseBean = new BaseBean(); List resignationSobIds = Arrays.asList(baseBean.getPropValue("nbjhSalary", "dimissionSobIds").split(",")) .stream() @@ -886,6 +897,8 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()).stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); List needAddEmpIds = thisMonthResigEmpIds.stream().filter(empId -> !salaryAcctEmployeeIds.contains(empId) && salaryEmployees.contains(empId)).collect(Collectors.toList()); + // 过滤不需要算薪的人 + needAddEmpIds = needAddEmpIds.stream().filter(empId -> !notAcctEmpIds.contains(empId)).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(needAddEmpIds)) { List employeeList = getSalaryEmployeeService(user).listByIds(needAddEmpIds); Map empMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); @@ -945,6 +958,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct List needHandleEmpIds = salaryAcctEmployeePOS.stream().filter(acctEmp -> !archivedEmpIds.contains(acctEmp.getEmployeeId())) .map(SalaryAcctEmployeePO::getEmployeeId) .collect(Collectors.toList()); + + // 过滤不需要算薪的人 + needHandleEmpIds = needHandleEmpIds.stream().filter(empId -> !notAcctEmpIds.contains(empId)).collect(Collectors.toList()); // 获取这些人的薪资档案,判断起始发薪日期是否早于或等于上月 if (CollectionUtils.isNotEmpty(needHandleEmpIds)) { List needHandleArchiveIds = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().employeeIds(needHandleEmpIds).taxAgentId(salarySobPO.getTaxAgentId()).build()); @@ -998,6 +1014,18 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } } } + + // 删除本次核算记录中不需要算薪的人 + if (salaryAcctRecordPO.getStatus().equals(SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { + List salaryAcctEmployeePOList = listBySalaryAcctRecordId(salaryAcctRecordId); + List needDeleteAcctEmpIds = salaryAcctEmployeePOList.stream() + .filter(acctEmp -> notAcctEmpIds.contains(acctEmp.getEmployeeId())) + .map(SalaryAcctEmployeePO::getId) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(needDeleteAcctEmpIds)) { + deleteByIds(needDeleteAcctEmpIds); + } + } } @Override diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index aef2f9536..c0a01c50e 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -53,7 +53,7 @@ public class SalaryAcctEmployeeWrapper extends Service { * @return */ public PageInfo listPage(SalaryAcctEmployeeQueryParam queryParam) { - // 宁波精华二开 - 删除离职账套中包含的人员 + // 宁波精华二开 - 从正常核算记录中删除离职账套记录中包含的人员 getSalaryAcctEmployeeService(user).deleteResignationEmp(queryParam.getSalaryAcctRecordId()); // 宁波精华二开 - 0617离职账套人员确认二开 getSalaryAcctEmployeeService(user).handleNbjhSalaryAcctEmp(queryParam.getSalaryAcctRecordId());