From d14994e10797ce5bc0d29668d358f7c5274dcc5b Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 15 四月 2026 15:46:17 +0800
Subject: [PATCH] 新增调用外部接口api

---
 api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java |  172 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 136 insertions(+), 36 deletions(-)

diff --git a/api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java b/api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java
index 08e9fde..b0022f0 100644
--- a/api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java
+++ b/api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java
@@ -2,12 +2,8 @@
 
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.cwgl.domain.PayableBillManagement;
-import com.ruoyi.cwgl.domain.PayableFeeDetail;
-import com.ruoyi.cwgl.domain.PayableFeeManagement;
-import com.ruoyi.cwgl.domain.ReceivableBillManagement;
-import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
-import com.ruoyi.cwgl.domain.ReceivableFeeManagement;
+import com.ruoyi.cwgl.domain.*;
+import com.ruoyi.cwgl.domain.dto.BillAuditDto;
 import com.ruoyi.cwgl.domain.dto.PayableBillApiDto;
 import com.ruoyi.cwgl.domain.dto.ReceivableBillApiDto;
 import com.ruoyi.cwgl.service.IPayableBillManagementService;
@@ -82,9 +78,9 @@
             
             result.put("status", "0000");
             result.put("message", "搴旀敹璐﹀崟娣诲姞鎴愬姛");
-            result.put("billNo", billManagement.getSystemNo());
+            result.put("sourceSystemId", billManagement.getId().toString());
             
-            logger.info("搴旀敹璐﹀崟娣诲姞鎴愬姛锛岃处鍗曠紪鍙凤細{}", billManagement.getSystemNo());
+            logger.info("搴旀敹璐﹀崟娣诲姞鎴愬姛锛屾潵婧愯处鍗昳d锛歿}", billManagement.getId());
             
         } catch (Exception e) {
             logger.error("搴旀敹璐﹀崟娣诲姞澶辫触锛�", e);
@@ -185,6 +181,8 @@
         billManagement.setSettlementCategory(billDto.getSettlementCategory());
         billManagement.setSettlementPeriod(billDto.getSettlementPeriod());
         billManagement.setStatus(billDto.getStatus() != null ? billDto.getStatus() : "draft");
+        billManagement.setAuditStatus(billDto.getAuditStatus() != null ? billDto.getAuditStatus() : 0);
+        billManagement.setSourceSystemId(billDto.getSourceSystemId());
         billManagement.setRemark(billDto.getRemark());
         billManagement.setCreateTime(DateUtils.getNowDate());
         billManagement.setCreateBy("api_system");
@@ -272,25 +270,35 @@
             // 浣跨敤Map瀛樺偍绯荤粺缂栧彿鍜孖D鐨勬槧灏勫叧绯�
             Map<String, Integer> systemNoToIdMap = new HashMap<>();
             
-
+            // 鎵归噺鎻掑叆鍚庯紝ID宸茬粡鑷姩璁剧疆鍒板璞$殑id灞炴�т腑
             for (ReceivableFeeManagement feeManagement : feeManagementList) {
-
-                    // 鍋囪鎻掑叆鍚庡彲浠ラ�氳繃鏌愮鏂瑰紡鑾峰彇ID锛岃繖閲岀畝鍖栧鐞�
-                    // 瀹為檯椤圭洰涓彲鑳介渶瑕佹牴鎹笟鍔¢�昏緫鑾峰彇ID
-                    systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
-
+                systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
             }
             
-            // 璁剧疆璐圭敤鏄庣粏鐨勫叧鑱擨D
+            // 閲嶆柊鏋勫缓璐圭敤鏄庣粏鍒楄〃锛屾纭缃叧鑱擨D
             List<ReceivableFeeDetail> finalFeeDetailList = new ArrayList<>();
-            for (int i = 0; i < feeManagementList.size(); i++) {
-                ReceivableFeeManagement feeManagement = feeManagementList.get(i);
+            int detailIndex = 0;
+            
+            for (ReceivableFeeManagement feeManagement : feeManagementList) {
                 Integer feeId = systemNoToIdMap.get(feeManagement.getSystemNo());
                 
-                if (feeId != null && i < feeDetailList.size()) {
-                    ReceivableFeeDetail feeDetail = feeDetailList.get(i);
-                    feeDetail.setReceivableFeeId(feeId);
-                    finalFeeDetailList.add(feeDetail);
+                if (feeId != null) {
+                    // 鑾峰彇璇ヨ垂鐢ㄧ鐞嗚褰曞搴旂殑璐圭敤鏄庣粏鏁伴噺
+                    int detailCount = 0;
+                    for (ReceivableBillApiDto.ReceivableFeeDto feeDto : fees) {
+                        if (feeDto.getDocumentNo().equals(feeManagement.getDocumentNo())) {
+                            detailCount = feeDto.getFeeDetails() != null ? feeDto.getFeeDetails().size() : 0;
+                            break;
+                        }
+                    }
+                    
+                    // 璁剧疆瀵瑰簲鏁伴噺鐨勮垂鐢ㄦ槑缁嗙殑鍏宠仈ID
+                    for (int i = 0; i < detailCount && detailIndex < feeDetailList.size(); i++) {
+                        ReceivableFeeDetail feeDetail = feeDetailList.get(detailIndex);
+                        feeDetail.setReceivableFeeId(feeId);
+                        finalFeeDetailList.add(feeDetail);
+                        detailIndex++;
+                    }
                 }
             }
             
@@ -326,9 +334,9 @@
             
             result.put("status", "0000");
             result.put("message", "搴斾粯璐﹀崟娣诲姞鎴愬姛");
-            result.put("billNo", billManagement.getSystemNo());
+            result.put("sourceSystemId", billManagement.getId().toString());
             
-            logger.info("搴斾粯璐﹀崟娣诲姞鎴愬姛锛岃处鍗曠紪鍙凤細{}", billManagement.getSystemNo());
+            logger.info("搴斾粯璐﹀崟娣诲姞鎴愬姛锛屾潵婧愯处鍗昳d锛歿}", billManagement.getId());
             
         } catch (Exception e) {
             logger.error("搴斾粯璐﹀崟娣诲姞澶辫触锛�", e);
@@ -420,6 +428,8 @@
         
         // 璁剧疆鍏朵粬淇℃伅
         billManagement.setStatus(billDto.getStatus() != null ? billDto.getStatus() : "draft");
+        billManagement.setAuditStatus(billDto.getAuditStatus() != null ? billDto.getAuditStatus() : 0);
+        billManagement.setSourceSystemId(billDto.getSourceSystemId());
         billManagement.setRemark(billDto.getRemark());
         billManagement.setCreateTime(DateUtils.getNowDate());
         billManagement.setCreateBy("api_system");
@@ -505,25 +515,35 @@
             // 浣跨敤Map瀛樺偍绯荤粺缂栧彿鍜孖D鐨勬槧灏勫叧绯�
             Map<String, Integer> systemNoToIdMap = new HashMap<>();
             
-            // 鎵归噺淇濆瓨璐圭敤绠$悊淇℃伅骞惰幏鍙朓D
+            // 鎵归噺鎻掑叆鍚庯紝ID宸茬粡鑷姩璁剧疆鍒板璞$殑id灞炴�т腑
             for (PayableFeeManagement feeManagement : feeManagementList) {
-
-                    // 鍋囪鎻掑叆鍚庡彲浠ラ�氳繃鏌愮鏂瑰紡鑾峰彇ID锛岃繖閲岀畝鍖栧鐞�
-                    // 瀹為檯椤圭洰涓彲鑳介渶瑕佹牴鎹笟鍔¢�昏緫鑾峰彇ID
-                    systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
-
+                systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
             }
             
-            // 璁剧疆璐圭敤鏄庣粏鐨勫叧鑱擨D
+            // 閲嶆柊鏋勫缓璐圭敤鏄庣粏鍒楄〃锛屾纭缃叧鑱擨D
             List<PayableFeeDetail> finalFeeDetailList = new ArrayList<>();
-            for (int i = 0; i < feeManagementList.size(); i++) {
-                PayableFeeManagement feeManagement = feeManagementList.get(i);
+            int detailIndex = 0;
+            
+            for (PayableFeeManagement feeManagement : feeManagementList) {
                 Integer feeId = systemNoToIdMap.get(feeManagement.getSystemNo());
                 
-                if (feeId != null && i < feeDetailList.size()) {
-                    PayableFeeDetail feeDetail = feeDetailList.get(i);
-                    feeDetail.setPayableFeeId(feeId);
-                    finalFeeDetailList.add(feeDetail);
+                if (feeId != null) {
+                    // 鑾峰彇璇ヨ垂鐢ㄧ鐞嗚褰曞搴旂殑璐圭敤鏄庣粏鏁伴噺
+                    int detailCount = 0;
+                    for (PayableBillApiDto.PayableFeeDto feeDto : fees) {
+                        if (feeDto.getDocumentNo().equals(feeManagement.getDocumentNo())) {
+                            detailCount = feeDto.getFeeDetails() != null ? feeDto.getFeeDetails().size() : 0;
+                            break;
+                        }
+                    }
+                    
+                    // 璁剧疆瀵瑰簲鏁伴噺鐨勮垂鐢ㄦ槑缁嗙殑鍏宠仈ID
+                    for (int i = 0; i < detailCount && detailIndex < feeDetailList.size(); i++) {
+                        PayableFeeDetail feeDetail = feeDetailList.get(detailIndex);
+                        feeDetail.setPayableFeeId(feeId);
+                        finalFeeDetailList.add(feeDetail);
+                        detailIndex++;
+                    }
                 }
             }
             
@@ -536,6 +556,86 @@
     }
 
     /**
+     * 搴旀敹璐﹀崟浣滃簾鎺ュ彛
+     * 鍏朵粬绯荤粺璋冪敤姝ゆ帴鍙d綔搴熷簲鏀惰处鍗�
+     * @param request 璇锋眰鏁版嵁
+     * @return 鎿嶄綔缁撴灉
+     */
+    @PostMapping("/cancelBill")
+    public Map<String, String> cancelReceivableBill(@RequestBody Map<String, Integer> request) {
+        logger.info("鎺ユ敹搴旀敹璐﹀崟浣滃簾璇锋眰锛歿}", request);
+
+        Map<String, String> result = new HashMap<>();
+        
+        try {
+            Integer sourceSystemId = request.get("sourceSystemId");
+            if (sourceSystemId == null) {
+                throw new IllegalArgumentException("sourceSystemId涓嶈兘涓虹┖");
+            }
+            
+            // 璋冪敤浣滃簾鏂规硶
+            int rows = receivableBillManagementService. voidReceivableBillManagement(sourceSystemId);
+            
+            if (rows > 0) {
+                result.put("status", "0000");
+                result.put("message", "搴旀敹璐﹀崟浣滃簾鎴愬姛");
+                logger.info("搴旀敹璐﹀崟浣滃簾鎴愬姛锛宻ourceSystemId锛歿}", sourceSystemId);
+            } else {
+                result.put("status", "9999");
+                result.put("message", "搴旀敹璐﹀崟浣滃簾澶辫触锛屾湭鎵惧埌瀵瑰簲璁板綍");
+                logger.warn("搴旀敹璐﹀崟浣滃簾澶辫触锛屾湭鎵惧埌瀵瑰簲璁板綍锛宻ourceSystemId锛歿}", sourceSystemId);
+            }
+            
+        } catch (Exception e) {
+            logger.error("搴旀敹璐﹀崟浣滃簾澶辫触锛�", e);
+            result.put("status", "9999");
+            result.put("message", "搴旀敹璐﹀崟浣滃簾澶辫触锛�" + e.getMessage());
+        }
+        
+        return result;
+    }
+
+    /**
+     * 搴斾粯璐﹀崟浣滃簾鎺ュ彛
+     * 鍏朵粬绯荤粺璋冪敤姝ゆ帴鍙d綔搴熷簲浠樿处鍗�
+     * @param request 璇锋眰鏁版嵁
+     * @return 鎿嶄綔缁撴灉
+     */
+    @PostMapping("/cancelPayableBill")
+    public Map<String, String> cancelPayableBill(@RequestBody Map<String, Integer> request) {
+        logger.info("鎺ユ敹搴斾粯璐﹀崟浣滃簾璇锋眰锛歿}", request);
+
+        Map<String, String> result = new HashMap<>();
+        
+        try {
+            Integer sourceSystemId = request.get("sourceSystemId");
+            if (sourceSystemId == null) {
+                throw new IllegalArgumentException("sourceSystemId涓嶈兘涓虹┖");
+            }
+            
+            // 璋冪敤浣滃簾鏂规硶
+            int rows = payableBillManagementService.voidPayableBillManagement(sourceSystemId);
+            
+            if (rows > 0) {
+                result.put("status", "0000");
+                result.put("message", "搴斾粯璐﹀崟浣滃簾鎴愬姛");
+                logger.info("搴斾粯璐﹀崟浣滃簾鎴愬姛锛宻ourceSystemId锛歿}", sourceSystemId);
+            } else {
+                result.put("status", "9999");
+                result.put("message", "搴斾粯璐﹀崟浣滃簾澶辫触锛屾湭鎵惧埌瀵瑰簲璁板綍");
+                logger.warn("搴斾粯璐﹀崟浣滃簾澶辫触锛屾湭鎵惧埌瀵瑰簲璁板綍锛宻ourceSystemId锛歿}", sourceSystemId);
+            }
+            
+        } catch (Exception e) {
+            logger.error("搴斾粯璐﹀崟浣滃簾澶辫触锛�", e);
+            result.put("status", "9999");
+            result.put("message", "搴斾粯璐﹀崟浣滃簾澶辫触锛�" + e.getMessage());
+        }
+        
+        return result;
+    }
+
+    /**
      * 鍋ュ悍妫�鏌ユ帴鍙�
      * @return 鍋ュ悍鐘舵��
      */

--
Gitblit v1.8.0