From 89cd54f5065f18b9e08983cec812a3c44060742d Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 27 八月 2025 14:57:36 +0800
Subject: [PATCH] 新增前后端

---
 service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java |   78 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 73 insertions(+), 5 deletions(-)

diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
index 6fcc699..2940f2f 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/EstimatedReceivableServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.cwgl.service.impl;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -127,6 +128,15 @@
         estimatedReceivable.setCreateTime(nowDate);
         estimatedReceivable.setFeeSystemNo("YF"+datePart+ RandomUtils.random(5));
         estimatedReceivable.setFeeType(0);
+        PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
+        if (pendingSettlementBusiness == null){
+            throw new ServiceException("璋冨害鍗曚笉瀛樺湪");
+
+        }
+        Integer relatedBillStatus = pendingSettlementBusiness.getRelatedBillStatus();
+        if (relatedBillStatus.equals(2)||relatedBillStatus.equals(3)){
+            throw new ServiceException("褰撳墠璋冨害鍗曞凡缁撶畻鎴栭儴鍒嗙粨绠楁棤娉曟柊澧炴槑缁�");
+        }
         return estimatedReceivableMapper.insertEstimatedReceivable(estimatedReceivable);
     }
 
@@ -158,19 +168,19 @@
             throw new ServiceException("缁撶畻涓垨宸茬粨绠楁棤娉曚慨鏀�");
         }
         //鍘熸湰閲戦
-        Long oldAmount = estimatedReceivable1.getEstimatedAmount();
+        BigDecimal oldAmount = estimatedReceivable1.getEstimatedAmount();
         //鏂伴噾棰�
-        Long newAmount = estimatedReceivable.getEstimatedAmount();
+        BigDecimal newAmount = estimatedReceivable.getEstimatedAmount();
         if (!oldAmount.equals(newAmount)) {
 
               PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
               if (pendingSettlementBusiness!=null) {
-                  Long estimatedTotalIncome = pendingSettlementBusiness.getEstimatedTotalIncome();
-                  pendingSettlementBusiness.setEstimatedTotalIncome(estimatedTotalIncome-oldAmount+newAmount);
+                  BigDecimal estimatedTotalIncome = pendingSettlementBusiness.getEstimatedTotalIncome();
+                  pendingSettlementBusiness.setEstimatedTotalIncome(estimatedTotalIncome.subtract(oldAmount).add(newAmount));
                   pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
                   if (pendingSettlementBusiness.getBillId() != null) {
                       EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(pendingSettlementBusiness.getBillId());
-                            estimatedReceivableBill.setTotalAmount(estimatedReceivableBill.getTotalAmount() -oldAmount + newAmount);
+                            estimatedReceivableBill.setTotalAmount(estimatedReceivableBill.getTotalAmount().subtract( oldAmount).add( newAmount));
                             estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
                   }
               }
@@ -243,6 +253,24 @@
             throw new ServiceException("鏃犻渶閲嶅纭");
 
         }
+        PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
+        if (pendingSettlementBusiness == null){
+            throw new ServiceException("璋冨害鍗曚笉瀛樺湪");
+
+        }
+        Integer relatedBillStatus = pendingSettlementBusiness.getRelatedBillStatus();
+        if (relatedBillStatus.equals(2)||relatedBillStatus.equals(3)){
+            throw new ServiceException("褰撳墠璋冨害鍗曞凡缁撶畻鎴栭儴鍒嗙粨绠楁棤娉曠‘璁�");
+        }
+        if (pendingSettlementBusiness.getBillId()!=null){
+            EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(pendingSettlementBusiness.getBillId());
+            BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
+            estimatedReceivableBill.setTotalAmount(totalAmount.add(estimatedReceivable.getEstimatedAmount()));
+            estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+            pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getEstimatedTotalIncome().add(estimatedReceivable.getEstimatedAmount()));
+            pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+            estimatedReceivable.setRelatedBillStatus(1);
+        }
         String username = SecurityUtils.getUsername();
 
         logService.insertEstimatedReceivableLog("纭搴旀敹",id,username);
@@ -266,10 +294,29 @@
             throw new ServiceException("鏃犻渶閲嶅鍙栨秷");
 
         }
+        PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
+        if (pendingSettlementBusiness == null){
+            throw new ServiceException("璋冨害鍗曚笉瀛樺湪");
+
+        }
+        Integer relatedBillStatus = pendingSettlementBusiness.getRelatedBillStatus();
+        if (relatedBillStatus.equals(2)||relatedBillStatus.equals(3)){
+            throw new ServiceException("褰撳墠璋冨害鍗曞凡缁撶畻鎴栭儴鍒嗙粨绠楁棤娉曞彇娑�");
+        }
+        if (pendingSettlementBusiness.getBillId()!=null){
+            EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(pendingSettlementBusiness.getBillId());
+            BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
+            estimatedReceivableBill.setTotalAmount(totalAmount.subtract(estimatedReceivable.getEstimatedAmount()));
+            estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+            pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getConfirmedTotalIncome().subtract(estimatedReceivable.getEstimatedAmount()));
+            pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+            estimatedReceivable.setRelatedBillStatus(0);
+        }
         String username = SecurityUtils.getUsername();
 
         logService.insertEstimatedReceivableLog("鍙栨秷搴旀敹",id,username);
         estimatedReceivable.setIsConfirmed(0);
+
         return estimatedReceivableMapper.updateEstimatedReceivable(estimatedReceivable);
     }
 
@@ -283,6 +330,27 @@
             throw new ServiceException("鏃犻渶閲嶅浣滃簾");
 
         }
+        PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessByNo(estimatedReceivable.getDispatchNo());
+        if (pendingSettlementBusiness == null){
+            throw new ServiceException("璋冨害鍗曚笉瀛樺湪");
+
+        }
+        Integer relatedBillStatus = pendingSettlementBusiness.getRelatedBillStatus();
+        if (relatedBillStatus.equals(2)||relatedBillStatus.equals(3)){
+            throw new ServiceException("褰撳墠璋冨害鍗曞凡缁撶畻鎴栭儴鍒嗙粨绠楁棤娉曚綔搴�");
+        }
+        //纭鐘舵�佷笅浣滃簾鎵嶆墽琛�
+        if (estimatedReceivable.getIsConfirmed().equals(1)) {
+        if (pendingSettlementBusiness.getBillId()!=null){
+            EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(pendingSettlementBusiness.getBillId());
+            BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount();
+            estimatedReceivableBill.setTotalAmount(totalAmount.subtract(estimatedReceivable.getEstimatedAmount()));
+            estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
+            pendingSettlementBusiness.setEstimatedTotalIncome(pendingSettlementBusiness.getConfirmedTotalIncome().subtract(estimatedReceivable.getEstimatedAmount()));
+            pendingSettlementBusinessMapper.updatePendingSettlementBusiness(pendingSettlementBusiness);
+            estimatedReceivable.setRelatedBillStatus(0);
+        }
+        }
         String username = SecurityUtils.getUsername();
 
         logService.insertEstimatedReceivableLog("浣滃簾搴旀敹",id,username);

--
Gitblit v1.8.0