wujianwei
2025-08-15 5fe42ada08e210d6535289fcd3f913be7d3df189
service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableBillServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.cwgl.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -215,11 +216,11 @@
        Integer id = estimatedReceivableBill.getId();
        EstimatedReceivableBill oldData = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(id);
        //应结算金额
        Long totalAmount = oldData.getTotalAmount()==null?0L:oldData.getTotalAmount();
        BigDecimal totalAmount = oldData.getTotalAmount()==null?BigDecimal.ZERO:oldData.getTotalAmount();
        //已结算金额
        Long settledAmount = oldData.getSettledAmount()==null?0L:oldData.getSettledAmount();
        BigDecimal settledAmount = oldData.getSettledAmount()==null?BigDecimal.ZERO:oldData.getSettledAmount();
        //当前提交金额
        Long settlementAmount = estimatedReceivableBill.getSettlementAmount();
        BigDecimal settlementAmount = estimatedReceivableBill.getSettlementAmount();
        EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog();
        estimatedReceivableBill.setSettledAmount(settlementAmount);
@@ -227,10 +228,16 @@
        estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId());
        estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername());
        estimatedReceivableBillLog.setOperation("本次提交金额"+ settlementAmount);
        estimatedReceivableBillLog.setFileName(estimatedReceivableBill.getAttachment());
        logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog);
        settledAmount = settledAmount+settlementAmount;
        settledAmount = settledAmount.add(settlementAmount);
        List<String>dispatchNos =pendingSettlementBusinessMapper.selectPendingSettlementBusinessDispatchNos(estimatedReceivableBill.getId());
        if (settledAmount>totalAmount){
        // 检查当前提交金额+已结算金额是否超过应结算金额
        if (settlementAmount.add(settledAmount).compareTo(totalAmount) > 0) {
            // 超过应结算金额,抛出异常或处理错误
            throw new RuntimeException("当前提交金额加上已结算金额不能超过应结算金额");
        }
       if (settlementAmount.add(settledAmount).compareTo(totalAmount) == 0) {
            //已结算大于应计算金额为已结算
            estimatedReceivableBill.setStatus(2);
            estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,3);
@@ -252,8 +259,8 @@
        EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(billId);
        estimatedReceivableBill.setDispatchCount(estimatedReceivableBill.getDispatchCount()-1);
        //应结算金额修改
        Long totalAmount = estimatedReceivableBill.getTotalAmount();
        estimatedReceivableBill.setTotalAmount(totalAmount-pendingSettlementBusiness.getEstimatedTotalIncome());
        BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
        estimatedReceivableBill.setTotalAmount(totalAmount.subtract(pendingSettlementBusiness.getEstimatedTotalIncome()));
        EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog();
        estimatedReceivableBillLog.setCreateTime(new Date());
        estimatedReceivableBillLog.setBillId(billId);