李白
昨天 e7e6d39b095b6a763e54ab34631171c3de32ec9e
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
@@ -121,37 +121,51 @@
      if (ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()==1){
         //最后阶段生效时间
         ContractPaymentSchedule endSchedule = afterSchedule.get(0);
         endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(),endSchedule.getAgreedDays()));
         endSchedule.setEffectiveEndDate(contract.getExpirationDate());
         contractPaymentScheduleMapper.updateById(endSchedule);
         //当前阶段生效时间
         schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(),schedule.getAgreedDays()));
         schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
         contractPaymentScheduleMapper.updateById(schedule);
         //最后阶段应收
         PaymentConfirm newConfim = new PaymentConfirm();
         newConfim.setBusinessType(endSchedule.getStageName()+"应收");
         newConfim.setBusGuestId(contract.getPartyAId());
         newConfim.setBusGuestName(contract.getPartyA());
         newConfim.setContractId(contract.getId());
         newConfim.setContractName(contract.getContractName());
         newConfim.setContractNo(contract.getContractNo());
         newConfim.setScheduleId(endSchedule.getId());
         newConfim.setScheduleName(schedule.getStageName());
         newConfim.setConfirmTime(addDTO.getProcessDate());
         newConfim.setTransationAmount(endSchedule.getPlannedAmount());
         newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
         PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
               .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
         BigDecimal lastNewTotal = new BigDecimal("0");
         if(ObjUtil.isNotNull(lastNewConfirm)){
            lastNewTotal = lastNewConfirm.getTotalAmount();
         if (StrUtil.equals(endSchedule.getStageName(),"质保金")) {
            endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(), endSchedule.getAgreedDays()));
            endSchedule.setEffectiveEndDate(contract.getExpirationDate());
            contractPaymentScheduleMapper.updateById(endSchedule);
            //当前阶段生效时间
            schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(), schedule.getAgreedDays()));
            schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
            contractPaymentScheduleMapper.updateById(schedule);
            //最后阶段应收
            PaymentConfirm newConfim = new PaymentConfirm();
            newConfim.setBusinessType(endSchedule.getStageName() + "应收");
            newConfim.setBusGuestId(contract.getPartyAId());
            newConfim.setBusGuestName(contract.getPartyA());
            newConfim.setContractId(contract.getId());
            newConfim.setContractName(contract.getContractName());
            newConfim.setContractNo(contract.getContractNo());
            newConfim.setScheduleId(endSchedule.getId());
            newConfim.setScheduleName(schedule.getStageName());
            newConfim.setConfirmTime(addDTO.getProcessDate());
            newConfim.setTransationAmount(endSchedule.getPlannedAmount());
            newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
            PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
                  .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
            BigDecimal lastNewTotal = new BigDecimal("0");
            if (ObjUtil.isNotNull(lastNewConfirm)) {
               lastNewTotal = lastNewConfirm.getTotalAmount();
            }
            newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
            paymentConfirmMapper.insert(newConfim);
         }
         newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
         paymentConfirmMapper.insert(newConfim);
      }else {
         //更新合同下个阶段
         contract.setNextScheduleName(endSchedule.getStageName());
         contractMapper.updateById(contract);
      }
      if(ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()>1){
         //更新合同下个阶段
         contract.setNextScheduleName(afterSchedule.get(0).getStageName());
         contractMapper.updateById(contract);
      }
      if(ArrayUtil.isEmpty(afterSchedule.toArray())){
         schedule.setEffectiveEndDate(contract.getExpirationDate());
         contractPaymentScheduleMapper.updateById(schedule);
         //更新合同下个阶段
         contract.setNextScheduleName("无");
         contractMapper.updateById(contract);
      }
      return R.ok();
   }