shiyunteng
2026-05-26 5b1c84423d590c7240209fa9a68d33c0116457af
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -108,7 +108,7 @@
            }
            if (contractPaymentScheduleAddDTO.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
               schedule.setPaymentStatus(0);
            }else {
            } else {
               schedule.setPaymentStatus(3);
            }
            schedule.setContractId(contract.getId());
@@ -177,7 +177,7 @@
            schedule.setStageOrder(currentIndex);
            if (contractPaymentScheduleAddDTO.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
               schedule.setPaymentStatus(0);
            }else {
            } else {
               schedule.setPaymentStatus(3);
            }
            contractPaymentScheduleMapper.insert(schedule);
@@ -367,26 +367,32 @@
            }
         }
         if (ArrayUtil.isNotEmpty(outAmountList.toArray())) {
            BigDecimal currentSum = new BigDecimal("0");
            for (BigDecimal currentAmount : outAmountList
            ) {
               currentSum = currentSum.add(currentAmount);
               //新增当前合同 资金转入
               PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount",
                     "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount");
               inConfirm.setBusinessType("资金转入");
               inConfirm.setConfirmTime(new Date());
               inConfirm.setTransationAmount(currentSum.subtract(currentAmount));
               inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentSum));
               if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) {
                  inConfirm.setAdvanceAmount(inConfirm.getTotalAmount());
               } else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) {
                  inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1")));
               }
               paymentConfirmMapper.insert(inConfirm);
            BigDecimal currentInSum = outAmountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
            //新增当前合同 资金转入
            PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount",
                  "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount");
            inConfirm.setBusinessType("资金转入");
            inConfirm.setConfirmTime(new Date());
            inConfirm.setTransationAmount(currentInSum);
            inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentInSum));
            //更新当前阶段实际收款 和 收款状态
            schedule.setActualAmount(inConfirm.getTransationAmount());
            schedule.setPaymentStatus(2);
            if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0){
               inConfirm.setAdvanceAmount(inConfirm.getTotalAmount());
            }else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) {
               inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1")));
               schedule.setActualAmount(currentInSum);
               schedule.setPaymentStatus(1);
            }
            paymentConfirmMapper.insert(inConfirm);
            //更新当前阶段实际收款 和 收款状态
            contractPaymentScheduleMapper.updateById(schedule);
         }
      }else {
         paymentConfirmMapper.insert(paymentConfirm);
      }
   }
@@ -395,7 +401,7 @@
      List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
            .lt(ContractPaymentSchedule::getEffectiveEndDate, DateUtil.today())
            .ne(ContractPaymentSchedule::getPaymentStatus, "2")
            .ne(ContractPaymentSchedule::getPaymentStatus,3));
            .ne(ContractPaymentSchedule::getPaymentStatus, 3));
      if (ArrayUtil.isNotEmpty(scheduleList.toArray())) {
         scheduleList.stream().forEach(contractPaymentSchedule -> {
            Contract contract = baseMapper.selectById(contractPaymentSchedule.getContractId());