From 849648e82e5dec96f9f30fcc9c9bd799268b1f4c Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期四, 09 四月 2026 10:40:44 +0800
Subject: [PATCH] 新增资金流水导入

---
 service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java |  169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 168 insertions(+), 1 deletions(-)

diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java b/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java
index c118e7f..be1d97b 100644
--- a/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java
@@ -1,7 +1,9 @@
 package com.ruoyi.cwgl.controller;
 
+import java.util.Date;
 import java.util.List;
 
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.cwgl.domain.ReceivableBillCustomerSummary;
 import com.ruoyi.cwgl.domain.vo.ReceivableBillAccountAnalysisVo;
 import com.ruoyi.cwgl.domain.vo.ReceivableBillAgingAnalysisVo;
@@ -25,10 +27,15 @@
 import java.util.Objects;
 import com.ruoyi.cwgl.domain.InvoiceManage;
 import com.ruoyi.cwgl.domain.ReceivableBillManagement;
+import com.ruoyi.cwgl.domain.ReceivableBillManagementLog;
 import com.ruoyi.cwgl.domain.ReceivableInvoiceBusiness;
+import com.ruoyi.cwgl.domain.dto.BillAuditDto;
+import com.ruoyi.cwgl.domain.dto.ReceivableAuditLog;
 import com.ruoyi.cwgl.service.IInvoiceManageService;
+import com.ruoyi.cwgl.service.IReceivableBillManagementLogService;
 import com.ruoyi.cwgl.service.IReceivableBillManagementService;
 import com.ruoyi.cwgl.service.IReceivableInvoiceBusinessService;
+import com.ruoyi.cwgl.service.ITmsAuditLogPushService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
@@ -50,6 +57,12 @@
 
     @Autowired
     private IReceivableInvoiceBusinessService receivableInvoiceBusinessService;
+
+    @Autowired
+    private ITmsAuditLogPushService tmsAuditLogPushService;
+
+    @Autowired
+    private IReceivableBillManagementLogService receivableBillManagementLogService;
 
 
 
@@ -196,6 +209,17 @@
         List<ReceivableBillCustomerSummary> list = receivableBillManagementService.selectReceivableBillCustomerSummaryList(receivableBillManagement);
         return getDataTable(list);
     }
+    /**
+     * 瀵煎嚭搴旀敹璐﹀崟绠$悊鍒楄〃
+     * @param receivableBillManagement 鏌ヨ鏉′欢瀵硅薄
+     */
+    @PreAuthorize("@ss.hasPermi('cwgl:receivableBillManagement:export')")
+    @GetMapping("/customerSummary/export")
+    public AjaxResult customerSummaryExport(ReceivableBillManagement receivableBillManagement,String exportKey)
+    {
+        receivableBillManagementService.customerSummaryExport(receivableBillManagement,exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
 
     /**
      * 鏌ヨ搴旀敹璐﹀崟璐﹂緞鍒嗘瀽鍒楄〃
@@ -208,7 +232,14 @@
         List<ReceivableBillAgingAnalysisVo> list = receivableBillManagementService.selectReceivableBillAgingAnalysisList(receivableBillManagement);
         return getDataTable(list);
     }
-    
+
+    @PreAuthorize("@ss.hasPermi('cwgl:receivableBillManagement:export')")
+    @GetMapping("/agingAnalysis/export")
+    public AjaxResult agingAnalysisExport(ReceivableBillManagement receivableBillManagement,String exportKey)
+    {
+        receivableBillManagementService.agingAnalysisExport(receivableBillManagement,exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
     /**
      * 鏌ヨ搴旀敹璐﹀崟璐︽鍒嗘瀽鍒楄〃
      */
@@ -220,5 +251,141 @@
         List<ReceivableBillAccountAnalysisVo> list = receivableBillManagementService.selectReceivableBillAccountAnalysisList(receivableBillManagement);
         return getDataTable(list);
     }
+    @PreAuthorize("@ss.hasPermi('cwgl:receivableBillManagement:export')")
+    @GetMapping("/accountAnalysis/export")
+    public AjaxResult accountAnalysisExport(ReceivableBillManagement receivableBillManagement,String exportKey)
+    {
+        receivableBillManagementService.accountAnalysisExport(receivableBillManagement,exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
+
+    /**
+     * 搴旀敹璐﹀崟瀹℃牳鎺ュ彛
+     * @param billAuditDto 瀹℃牳鏁版嵁浼犺緭瀵硅薄
+     * @return 瀹℃牳缁撴灉
+     */
+    @PreAuthorize("@ss.hasPermi('cwgl:receivableBillManagement:audit')")
+    @Log(title = "搴旀敹璐﹀崟绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/audit")
+    public AjaxResult auditReceivableBill(@RequestBody BillAuditDto billAuditDto) {
+        try {
+            // 1. 鏌ヨ搴旀敹璐﹀崟
+            ReceivableBillManagement bill = receivableBillManagementService.selectReceivableBillManagementById(billAuditDto.getBillId());
+            if (bill == null) {
+                return AjaxResult.error("搴旀敹璐﹀崟涓嶅瓨鍦紝ID锛�" + billAuditDto.getBillId());
+            }
+            
+            // 2. 璁板綍瀹℃牳鍓嶇姸鎬�
+            Integer beforeAuditStatus = bill.getAuditStatus();
+            
+            // 3. 鏇存柊瀹℃牳鐘舵��
+            bill.setAuditStatus(billAuditDto.getAuditResult());
+            bill.setUpdateTime(new java.util.Date());
+            bill.setUpdateBy(getUsername());
+            
+            // 4. 鏇存柊璐﹀崟
+            int rows = receivableBillManagementService.updateReceivableBillManagement(bill);
+            if (rows <= 0) {
+                return AjaxResult.error("鏇存柊搴旀敹璐﹀崟瀹℃牳鐘舵�佸け璐�");
+            }
+            
+            // 5. 璁板綍瀹℃牳鏃ュ織
+            saveReceivableAuditLog(billAuditDto, bill, beforeAuditStatus);
+            
+            // 6. 濡傛灉鏉ユ簮绯荤粺鏄疶MS锛屾帹閫佸鏍告棩蹇楀埌TMS
+            if (tmsAuditLogPushService.isReceivableBillFromTms(bill.getSystemNo())) {
+                try {
+                    ReceivableAuditLog auditLog = createReceivableAuditLog(billAuditDto, bill, beforeAuditStatus);
+                    tmsAuditLogPushService.pushReceivableAuditLog(auditLog);
+                } catch (Exception e) {
+                    logger.error("鎺ㄩ�佸簲鏀惰处鍗曞鏍告棩蹇楀埌TMS澶辫触锛岃处鍗旾D锛歿}", bill.getId(), e);
+                    // 鎺ㄩ�佸け璐ヤ笉褰卞搷涓绘祦绋嬶紝鍙褰曟棩蹇�
+                }
+            }
+            
+            return AjaxResult.success("搴旀敹璐﹀崟瀹℃牳鎴愬姛");
+            
+        } catch (Exception e) {
+            return AjaxResult.error("搴旀敹璐﹀崟瀹℃牳澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    /**
+     * 淇濆瓨搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    private void saveReceivableAuditLog(BillAuditDto billAuditDto, ReceivableBillManagement bill, Integer beforeAuditStatus) {
+        try {
+            ReceivableBillManagementLog log = new ReceivableBillManagementLog();
+            log.setBillId(bill.getId());
+            log.setSourceSystemId(bill.getSourceSystemId()); // 璁剧疆鏉ユ簮绯荤粺ID
+            log.setCreateBy(getUsername());
+            log.setCreateTime(new Date());
+            
+            // 鏋勫缓鎿嶄綔璇存槑
+            String operation = String.format("搴旀敹璐﹀崟瀹℃牳 - 璐﹀崟缂栧彿锛�%s锛屽鏍稿墠鐘舵�侊細%s锛屽鏍哥粨鏋滐細%s锛屽鏍告剰瑙侊細%s",
+                bill.getSystemNo(),
+                getAuditStatusText(beforeAuditStatus),
+                getAuditResultText(billAuditDto.getAuditResult()),
+                billAuditDto.getAuditComment() != null ? billAuditDto.getAuditComment() : "鏃�");
+            log.setOperation(operation);
+            
+            // 淇濆瓨鍒版暟鎹簱
+            receivableBillManagementLogService.insertReceivableBillManagementLog(log);
+            
+            logger.info("搴旀敹璐﹀崟瀹℃牳鏃ュ織淇濆瓨鎴愬姛 - 璐﹀崟ID锛歿}锛屾潵婧愮郴缁烮D锛歿}", bill.getId(), bill.getSourceSystemId());
+            
+        } catch (Exception e) {
+            logger.error("淇濆瓨搴旀敹璐﹀崟瀹℃牳鏃ュ織澶辫触锛岃处鍗旾D锛歿}", bill.getId(), e);
+            // 鏃ュ織淇濆瓨澶辫触涓嶅奖鍝嶄富娴佺▼锛屽彧璁板綍閿欒鏃ュ織
+        }
+    }
+
+    /**
+     * 鑾峰彇瀹℃牳鐘舵�佹枃鏈�
+     */
+    private String getAuditStatusText(Integer auditStatus) {
+        switch (auditStatus) {
+            case 0: return "寰呭鏍�";
+            case 1: return "瀹℃牳閫氳繃";
+            case 2: return "瀹℃牳椹冲洖";
+            default: return "鏈煡鐘舵��";
+        }
+    }
+
+    /**
+     * 鑾峰彇瀹℃牳缁撴灉鏂囨湰
+     */
+    private String getAuditResultText(Integer auditResult) {
+        switch (auditResult) {
+            case 1: return "閫氳繃";
+            case 2: return "椹冲洖";
+            default: return "鏈煡缁撴灉";
+        }
+    }
+
+    /**
+     * 鍒涘缓搴旀敹璐﹀崟瀹℃牳鏃ュ織瀵硅薄
+     */
+    private ReceivableAuditLog createReceivableAuditLog(BillAuditDto billAuditDto, ReceivableBillManagement bill, Integer beforeAuditStatus) {
+        ReceivableAuditLog auditLog = new ReceivableAuditLog();
+        auditLog.setHeadId(bill.getSourceSystemId());
+        auditLog.setCreateBy(getUsername());
+        auditLog.setCreateTime(new Date());
+
+        String opertion = "";
+        if (billAuditDto.getAuditResult() != null&& billAuditDto.getAuditResult().equals(1)) {
+            opertion = "瀹℃牳閫氳繃";
+            if (StringUtils.isNotEmpty(billAuditDto.getAuditComment())){
+                opertion +=  ",瀹℃牳鎰忚 :" + billAuditDto.getAuditComment();
+            }
+        }else {
+            opertion = "瀹℃牳椹冲洖";
+            if (StringUtils.isNotEmpty(billAuditDto.getAuditComment())){
+                opertion += ",瀹℃牳鎰忚:" + billAuditDto.getAuditComment();
+            }
+        }
+        auditLog.setOperation(opertion);
+        return auditLog;
+    }
     
 }

--
Gitblit v1.8.0