diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index cc92ff0cf..078c1d015 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -190,16 +190,32 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService } // 校验cbs是否已经推送 + List checkIds = new ArrayList<>(); + if (CollectionUtils.isEmpty(ids)) { + SalarySendInfoQueryParam queryParam = new SalarySendInfoQueryParam(); + queryParam.setSalarySendId(salarySend.getId()); + queryParam.setSendStatuss(Arrays.asList(SalarySendStatusEnum.UNSEND.getValue(), SalarySendStatusEnum.WITHDRAW.getValue())); + List list = getSalarySendInfoMapper().list(queryParam); + if (CollectionUtils.isNotEmpty(list)) { + checkIds.addAll(list.stream().map(SalarySendInfoListDTO::getId).collect(Collectors.toList())); + } + } else { + checkIds.addAll(ids); + } List salaryCbsIdList = getSalaryCbsService(user).listBySalaryAcctRecordId(salarySend.getSalaryAccountingId()).stream().map(SalaryCbsPO::getId).collect(Collectors.toList()); List salaryCbsInfoList = getSalaryCbsInfoService(user).listByCbsIds(salaryCbsIdList); if (CollectionUtils.isEmpty(salaryCbsInfoList)) { throw new SalaryRunTimeException("cbs数据暂不存在"); } List pushedEmpIds = salaryCbsInfoList.stream() - .filter(salaryCbsInfoPO -> salaryCbsInfoPO.getPushStatus() != null && salaryCbsInfoPO.getPushStatus().equals(NumberUtils.INTEGER_ONE)) + .filter(salaryCbsInfoPO ->{ + return (salaryCbsInfoPO.getPushStatus() != null && salaryCbsInfoPO.getPushStatus().equals(NumberUtils.INTEGER_ONE)) + || (!NumberUtils.isCreatable(salaryCbsInfoPO.getPushValue())) + || (NumberUtils.isCreatable(salaryCbsInfoPO.getPushValue()) && new BigDecimal(salaryCbsInfoPO.getPushValue()).compareTo(new BigDecimal("0")) == 0); + }) .map(SalaryCbsInfoPO::getEmployeeId) .collect(Collectors.toList()); - List> partition = Lists.partition(ids, 500); + List> partition = Lists.partition(checkIds, 500); List sendInfoList = new ArrayList<>(); for (List idsPart : partition) { sendInfoList.addAll(getSalarySendInfoMapper().list(SalarySendInfoQueryParam.builder().ids(idsPart).build()));