From fd765fb823fb60fc942b09e17a5d13ad4aef2f96 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 08 四月 2026 15:11:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master

---
 service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableBillApiDto.java                  |    3 
 service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml               |   11 +
 api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java       |    2 
 service/src/main/java/com/ruoyi/cwgl/controller/ReceivableBillManagementController.java |   66 ++++++--
 service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableAuditLog.java                    |   60 +------
 service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableAuditLog.java                 |   59 +------
 service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagement.java               |    6 
 service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java    |   71 +++++++--
 service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagementLog.java            |    5 
 service/src/main/java/com/ruoyi/cwgl/service/impl/TmsAuditLogPushServiceImpl.java       |   72 ++++++++++
 service/src/main/resources/mapper/cwgl/PayableBillManagementMapper.xml                  |   14 +
 service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagement.java                  |    6 
 service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagementLog.java               |    5 
 service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableBillApiDto.java               |    3 
 14 files changed, 242 insertions(+), 141 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 7385daa..039aa7a 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
@@ -182,6 +182,7 @@
         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");
@@ -428,6 +429,7 @@
         // 璁剧疆鍏朵粬淇℃伅
         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");
diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java b/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java
index a8f80f6..69a406a 100644
--- a/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java
@@ -1,6 +1,9 @@
 package com.ruoyi.cwgl.controller;
 
+import java.util.Date;
 import java.util.List;
+
+import com.ruoyi.common.utils.StringUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -21,10 +24,12 @@
 import java.util.Objects;
 import com.ruoyi.cwgl.domain.InvoiceManage;
 import com.ruoyi.cwgl.domain.PayableBillManagement;
+import com.ruoyi.cwgl.domain.PayableBillManagementLog;
 import com.ruoyi.cwgl.domain.PayableInvoiceBusiness;
 import com.ruoyi.cwgl.domain.dto.BillAuditDto;
 import com.ruoyi.cwgl.domain.dto.PayableAuditLog;
 import com.ruoyi.cwgl.service.IInvoiceManageService;
+import com.ruoyi.cwgl.service.IPayableBillManagementLogService;
 import com.ruoyi.cwgl.service.IPayableBillManagementService;
 import com.ruoyi.cwgl.service.IPayableInvoiceBusinessService;
 import com.ruoyi.cwgl.service.ITmsAuditLogPushService;
@@ -52,6 +57,9 @@
 
     @Autowired
     private ITmsAuditLogPushService tmsAuditLogPushService;
+
+    @Autowired
+    private IPayableBillManagementLogService payableBillManagementLogService;
 
 
 
@@ -210,7 +218,7 @@
             // 6. 濡傛灉鏉ユ簮绯荤粺鏄疶MS锛屾帹閫佸鏍告棩蹇楀埌TMS
             if (tmsAuditLogPushService.isPayableBillFromTms(bill.getSystemNo())) {
                 try {
-                    PayableAuditLog auditLog = createPayableAuditLog(billAuditDto, bill, beforeAuditStatus);
+                    PayableAuditLog auditLog = createPayableAuditLog(billAuditDto, bill);
                     tmsAuditLogPushService.pushPayableAuditLog(auditLog);
                 } catch (Exception e) {
                     logger.error("鎺ㄩ�佸簲浠樿处鍗曞鏍告棩蹇楀埌TMS澶辫触锛岃处鍗旾D锛歿}", bill.getId(), e);
@@ -229,13 +237,30 @@
      * 淇濆瓨搴斾粯璐﹀崟瀹℃牳鏃ュ織
      */
     private void savePayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill, Integer beforeAuditStatus) {
-        // 杩欓噷闇�瑕佸疄鐜版棩蹇楄褰曢�昏緫
-        // 鍙互浣跨敤鍘熸湁鐨勬棩蹇楁湇鍔℃垨绯荤粺鏃ュ織
-        logger.info("搴斾粯璐﹀崟瀹℃牳鏃ュ織 - 璐﹀崟ID锛歿}锛岃处鍗曠紪鍙凤細{}锛屽鏍稿墠鐘舵�侊細{}锛屽鏍哥粨鏋滐細{}锛屽鏍告剰瑙侊細{}",
-            bill.getId(), bill.getSystemNo(), 
-            getAuditStatusText(beforeAuditStatus),
-            getAuditResultText(billAuditDto.getAuditResult()),
-            billAuditDto.getAuditComment() != null ? billAuditDto.getAuditComment() : "鏃�");
+        try {
+            PayableBillManagementLog log = new PayableBillManagementLog();
+            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);
+            
+            // 淇濆瓨鍒版暟鎹簱
+            payableBillManagementLogService.insertPayableBillManagementLog(log);
+            
+            logger.info("搴斾粯璐﹀崟瀹℃牳鏃ュ織淇濆瓨鎴愬姛 - 璐﹀崟ID锛歿}锛屾潵婧愮郴缁烮D锛歿}", bill.getId(), bill.getSourceSystemId());
+            
+        } catch (Exception e) {
+            logger.error("淇濆瓨搴斾粯璐﹀崟瀹℃牳鏃ュ織澶辫触锛岃处鍗旾D锛歿}", bill.getId(), e);
+            // 鏃ュ織淇濆瓨澶辫触涓嶅奖鍝嶄富娴佺▼锛屽彧璁板綍閿欒鏃ュ織
+        }
     }
 
     /**
@@ -264,19 +289,25 @@
     /**
      * 鍒涘缓搴斾粯璐﹀崟瀹℃牳鏃ュ織瀵硅薄
      */
-    private PayableAuditLog createPayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill, Integer beforeAuditStatus) {
+    private PayableAuditLog createPayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill) {
         PayableAuditLog auditLog = new PayableAuditLog();
-        auditLog.setBillId(bill.getId());
-        auditLog.setBillNo(bill.getSystemNo());
-        auditLog.setBillName(bill.getBillName());
-        auditLog.setSupplierName(bill.getSupplierName());
-        auditLog.setSourceSystem(tmsAuditLogPushService.getPayableBillSourceSystem(bill.getSystemNo()));
-        auditLog.setBeforeAuditStatus(beforeAuditStatus);
-        auditLog.setAuditResult(billAuditDto.getAuditResult());
-        auditLog.setAuditComment(billAuditDto.getAuditComment());
-        auditLog.setAuditUser(getUsername());
-        auditLog.setAuditTime(new java.util.Date());
-        auditLog.setTotalAmount(bill.getTotalAmount());
+        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;
     }
 }
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 fa00613..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,12 @@
 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;
@@ -56,6 +60,9 @@
 
     @Autowired
     private ITmsAuditLogPushService tmsAuditLogPushService;
+
+    @Autowired
+    private IReceivableBillManagementLogService receivableBillManagementLogService;
 
 
 
@@ -307,13 +314,30 @@
      * 淇濆瓨搴旀敹璐﹀崟瀹℃牳鏃ュ織
      */
     private void saveReceivableAuditLog(BillAuditDto billAuditDto, ReceivableBillManagement bill, Integer beforeAuditStatus) {
-        // 杩欓噷闇�瑕佸疄鐜版棩蹇楄褰曢�昏緫
-        // 鍙互浣跨敤鍘熸湁鐨勬棩蹇楁湇鍔℃垨绯荤粺鏃ュ織
-        logger.info("搴旀敹璐﹀崟瀹℃牳鏃ュ織 - 璐﹀崟ID锛歿}锛岃处鍗曠紪鍙凤細{}锛屽鏍稿墠鐘舵�侊細{}锛屽鏍哥粨鏋滐細{}锛屽鏍告剰瑙侊細{}",
-            bill.getId(), bill.getSystemNo(), 
-            getAuditStatusText(beforeAuditStatus),
-            getAuditResultText(billAuditDto.getAuditResult()),
-            billAuditDto.getAuditComment() != null ? billAuditDto.getAuditComment() : "鏃�");
+        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);
+            // 鏃ュ織淇濆瓨澶辫触涓嶅奖鍝嶄富娴佺▼锛屽彧璁板綍閿欒鏃ュ織
+        }
     }
 
     /**
@@ -344,17 +368,23 @@
      */
     private ReceivableAuditLog createReceivableAuditLog(BillAuditDto billAuditDto, ReceivableBillManagement bill, Integer beforeAuditStatus) {
         ReceivableAuditLog auditLog = new ReceivableAuditLog();
-        auditLog.setBillId(bill.getId());
-        auditLog.setBillNo(bill.getSystemNo());
-        auditLog.setBillName(bill.getBillName());
-        auditLog.setCustomerName(bill.getCustomerName());
-        auditLog.setSourceSystem(tmsAuditLogPushService.getReceivableBillSourceSystem(bill.getSystemNo()));
-        auditLog.setBeforeAuditStatus(beforeAuditStatus);
-        auditLog.setAuditResult(billAuditDto.getAuditResult());
-        auditLog.setAuditComment(billAuditDto.getAuditComment());
-        auditLog.setAuditUser(getUsername());
-        auditLog.setAuditTime(new java.util.Date());
-        auditLog.setTotalAmount(bill.getTotalAmount());
+        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;
     }
     
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagement.java b/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagement.java
index f266811..1a6dd63 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagement.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagement.java
@@ -190,6 +190,12 @@
         @TableField("audit_status")
     private Integer auditStatus;
 
+    /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+    @Excel(name = "鏉ユ簮绯荤粺ID")
+
+        @TableField("source_system_id")
+    private Integer sourceSystemId;
+
 
     /** 澶囨敞 */
     @Excel(name = "澶囨敞")
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagementLog.java b/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagementLog.java
index 9cd5dfa..6a78c9a 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagementLog.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/PayableBillManagementLog.java
@@ -44,5 +44,10 @@
         @TableField("operation")
     private String operation;
 
+    /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+    @Excel(name = "鏉ユ簮绯荤粺ID")
+
+        @TableField("source_system_id")
+    private Integer sourceSystemId;
 
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagement.java b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagement.java
index edb0364..8c83d29 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagement.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagement.java
@@ -351,6 +351,12 @@
         @TableField("audit_status")
     private Integer auditStatus;
 
+    /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+    @Excel(name = "鏉ユ簮绯荤粺ID")
+
+        @TableField("source_system_id")
+    private Integer sourceSystemId;
+
 
     /** 澶囨敞 */
     @Excel(name = "澶囨敞")
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagementLog.java b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagementLog.java
index 3d2edc3..0691c63 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagementLog.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableBillManagementLog.java
@@ -44,5 +44,10 @@
         @TableField("operation")
     private String operation;
 
+    /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+    @Excel(name = "鏉ユ簮绯荤粺ID")
+
+        @TableField("source_system_id")
+    private Integer sourceSystemId;
 
 }
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableAuditLog.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableAuditLog.java
index 919cb1e..63b4831 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableAuditLog.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableAuditLog.java
@@ -1,5 +1,8 @@
 package com.ruoyi.cwgl.domain.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
 import lombok.Data;
 import java.util.Date;
 
@@ -9,58 +12,21 @@
 @Data
 public class PayableAuditLog {
 
-    /**
-     * 璐﹀崟ID
-     */
-    private Integer billId;
+    /** 搴斾粯璐﹀崟id */
 
-    /**
-     * 璐﹀崟缂栧彿
-     */
-    private String billNo;
+    @TableField("head_id")
+    private Integer headId;
 
-    /**
-     * 璐﹀崟鍚嶇О
-     */
-    private String billName;
 
-    /**
-     * 渚涘簲鍟嗗悕绉�
-     */
-    private String supplierName;
+    /** 鍒涘缓鑰� */
+    private String createBy;
 
-    /**
-     * 鏉ユ簮绯荤粺
-     */
-    private String sourceSystem;
 
-    /**
-     * 瀹℃牳鍓嶇姸鎬�
-     */
-    private Integer beforeAuditStatus;
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
 
-    /**
-     * 瀹℃牳缁撴灉
-     */
-    private Integer auditResult;
 
-    /**
-     * 瀹℃牳鎰忚
-     */
-    private String auditComment;
-
-    /**
-     * 瀹℃牳浜�
-     */
-    private String auditUser;
-
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    private Date auditTime;
-
-    /**
-     * 鎬婚噾棰�
-     */
-    private java.math.BigDecimal totalAmount;
+    /** 鎿嶄綔璇存槑 */
+    private String operation;
 }
\ No newline at end of file
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableBillApiDto.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableBillApiDto.java
index ba27c82..0ed490c 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableBillApiDto.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/PayableBillApiDto.java
@@ -112,6 +112,9 @@
 
         /** 澶囨敞 */
         private String remark;
+
+        /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+        private Integer sourceSystemId;
     }
 
     /**
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableAuditLog.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableAuditLog.java
index 309a64a..e004d4f 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableAuditLog.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableAuditLog.java
@@ -1,5 +1,8 @@
 package com.ruoyi.cwgl.domain.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
 import lombok.Data;
 import java.util.Date;
 
@@ -9,58 +12,20 @@
 @Data
 public class ReceivableAuditLog {
 
-    /**
-     * 璐﹀崟ID
-     */
-    private Integer billId;
+    /** 搴旀敹璐﹀崟id */
 
-    /**
-     * 璐﹀崟缂栧彿
-     */
-    private String billNo;
+    private Integer headId;
 
-    /**
-     * 璐﹀崟鍚嶇О
-     */
-    private String billName;
 
-    /**
-     * 瀹㈡埛鍚嶇О
-     */
-    private String customerName;
+    /** 鍒涘缓鑰� */
+    private String createBy;
 
-    /**
-     * 鏉ユ簮绯荤粺
-     */
-    private String sourceSystem;
 
-    /**
-     * 瀹℃牳鍓嶇姸鎬�
-     */
-    private Integer beforeAuditStatus;
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
 
-    /**
-     * 瀹℃牳缁撴灉
-     */
-    private Integer auditResult;
 
-    /**
-     * 瀹℃牳鎰忚
-     */
-    private String auditComment;
-
-    /**
-     * 瀹℃牳浜�
-     */
-    private String auditUser;
-
-    /**
-     * 瀹℃牳鏃堕棿
-     */
-    private Date auditTime;
-
-    /**
-     * 鎬婚噾棰�
-     */
-    private java.math.BigDecimal totalAmount;
+    /** 鎿嶄綔璇存槑 */
+    private String operation;
 }
\ No newline at end of file
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableBillApiDto.java b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableBillApiDto.java
index 403a7e9..c3140b0 100644
--- a/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableBillApiDto.java
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/dto/ReceivableBillApiDto.java
@@ -136,6 +136,9 @@
 
         /** 澶囨敞 */
         private String remark;
+
+        /** 鏉ユ簮绯荤粺ID锛堢敤浜庡鏍告帹閫佹椂璇嗗埆鐩爣TMS绯荤粺锛� */
+        private Integer sourceSystemId;
     }
 
     /**
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/TmsAuditLogPushServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/TmsAuditLogPushServiceImpl.java
index cfb07d7..e6e8849 100644
--- a/service/src/main/java/com/ruoyi/cwgl/service/impl/TmsAuditLogPushServiceImpl.java
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/TmsAuditLogPushServiceImpl.java
@@ -41,7 +41,7 @@
             
             log.info("鎺ㄩ�佸簲浠樿处鍗曞鏍告棩蹇楀埌TMS: {}", jsonBody);
             
-            String response = HttpUtils.sendPost(url, jsonBody);
+            String response = sendJsonPost(url, jsonBody);
             log.info("TMS搴斾粯璐﹀崟瀹℃牳鏃ュ織鎺ㄩ�佸搷搴�: {}", response);
             
             return true;
@@ -59,7 +59,7 @@
             
             log.info("鎺ㄩ�佸簲鏀惰处鍗曞鏍告棩蹇楀埌TMS: {}", jsonBody);
             
-            String response = HttpUtils.sendPost(url, jsonBody);
+            String response = sendJsonPost(url, jsonBody);
             log.info("TMS搴旀敹璐﹀崟瀹℃牳鏃ュ織鎺ㄩ�佸搷搴�: {}", response);
             
             return true;
@@ -70,6 +70,74 @@
     }
 
     /**
+     * 鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰
+     * @param url 璇锋眰URL
+     * @param jsonBody JSON璇锋眰浣�
+     * @return 鍝嶅簲鍐呭
+     */
+    private String sendJsonPost(String url, String jsonBody) {
+        java.net.HttpURLConnection connection = null;
+        try {
+            java.net.URL realUrl = new java.net.URL(url);
+            connection = (java.net.HttpURLConnection) realUrl.openConnection();
+            
+            // 璁剧疆璇锋眰灞炴��
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+            connection.setRequestProperty("Accept", "application/json");
+            connection.setRequestProperty("User-Agent", "Mozilla/5.0");
+            
+            // 璁剧疆杩炴帴鍙傛暟
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            
+            // 璁剧疆瓒呮椂鏃堕棿
+            connection.setConnectTimeout(10000); // 10绉掕繛鎺ヨ秴鏃�
+            connection.setReadTimeout(30000);   // 30绉掕鍙栬秴鏃�
+            
+            // 鍙戦�佽姹備綋
+            try (java.io.OutputStream os = connection.getOutputStream()) {
+                os.write(jsonBody.getBytes(java.nio.charset.StandardCharsets.UTF_8));
+                os.flush();
+            }
+            
+            // 鑾峰彇鍝嶅簲
+            int responseCode = connection.getResponseCode();
+            if (responseCode == java.net.HttpURLConnection.HTTP_OK) {
+                try (java.io.BufferedReader in = new java.io.BufferedReader(
+                        new java.io.InputStreamReader(connection.getInputStream(), java.nio.charset.StandardCharsets.UTF_8))) {
+                    StringBuilder response = new StringBuilder();
+                    String line;
+                    while ((line = in.readLine()) != null) {
+                        response.append(line);
+                    }
+                    return response.toString();
+                }
+            } else {
+                // 澶勭悊閿欒鍝嶅簲
+                try (java.io.BufferedReader in = new java.io.BufferedReader(
+                        new java.io.InputStreamReader(connection.getErrorStream(), java.nio.charset.StandardCharsets.UTF_8))) {
+                    StringBuilder errorResponse = new StringBuilder();
+                    String line;
+                    while ((line = in.readLine()) != null) {
+                        errorResponse.append(line);
+                    }
+                    throw new RuntimeException("HTTP璇锋眰澶辫触锛岀姸鎬佺爜: " + responseCode + ", 鍝嶅簲: " + errorResponse.toString());
+                }
+            }
+            
+        } catch (Exception e) {
+            log.error("鍙戦�丣SON POST璇锋眰澶辫触锛孶RL: {}", url, e);
+            throw new RuntimeException("鍙戦�丣SON POST璇锋眰澶辫触: " + e.getMessage(), e);
+        } finally {
+            if (connection != null) {
+                connection.disconnect();
+            }
+        }
+    }
+
+    /**
      * 鍒ゆ柇搴斾粯璐﹀崟鏄惁鏉ヨ嚜TMS绯荤粺
      * @param billNo 璐﹀崟缂栧彿
      * @return 鏄惁鏉ヨ嚜TMS绯荤粺
diff --git a/service/src/main/resources/mapper/cwgl/PayableBillManagementMapper.xml b/service/src/main/resources/mapper/cwgl/PayableBillManagementMapper.xml
index 01c5650..0136e4b 100644
--- a/service/src/main/resources/mapper/cwgl/PayableBillManagementMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/PayableBillManagementMapper.xml
@@ -29,6 +29,7 @@
         <result property="billDueDate"    column="bill_due_date"    />
         <result property="status"    column="status"    />
         <result property="auditStatus"    column="audit_status"    />
+        <result property="sourceSystemId"    column="source_system_id"    />
         <result property="remark"    column="remark"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -38,7 +39,7 @@
     </resultMap>
 
     <sql id="selectPayableBillManagementVo">
-        select thisTab.id, thisTab.system_no, thisTab.bill_name, thisTab.supplier_name, thisTab.is_internal_settlement, thisTab.internal_settlement_unit, thisTab.document_count, thisTab.total_amount, thisTab.currency, thisTab.discount_amount, thisTab.paid_amount, thisTab.pending_amount, thisTab.exchange_rate, thisTab.cny_amount, thisTab.period_type, thisTab.business_start_date, thisTab.business_end_date, thisTab.billing_start_date, thisTab.billing_end_date, thisTab.bill_generate_date, thisTab.bill_send_date, thisTab.bill_due_date, thisTab.status, thisTab.audit_status, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from payable_bill_management AS thisTab
+        select thisTab.id, thisTab.system_no, thisTab.bill_name, thisTab.supplier_name, thisTab.is_internal_settlement, thisTab.internal_settlement_unit, thisTab.document_count, thisTab.total_amount, thisTab.currency, thisTab.discount_amount, thisTab.paid_amount, thisTab.pending_amount, thisTab.exchange_rate, thisTab.cny_amount, thisTab.period_type, thisTab.business_start_date, thisTab.business_end_date, thisTab.billing_start_date, thisTab.billing_end_date, thisTab.bill_generate_date, thisTab.bill_send_date, thisTab.bill_due_date, thisTab.status, thisTab.audit_status, thisTab.source_system_id, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from payable_bill_management AS thisTab
     </sql>
     <sql id="selectPayableBillManagementVoCount">
         select count(0) from payable_bill_management as thisTab
@@ -132,6 +133,7 @@
             <if test="billDueDate != null">bill_due_date,</if>
             <if test="status != null">status,</if>
             <if test="auditStatus != null">audit_status,</if>
+            <if test="sourceSystemId != null">source_system_id,</if>
             <if test="remark != null">remark,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
@@ -163,6 +165,7 @@
             <if test="billDueDate != null">#{billDueDate},</if>
             <if test="status != null">#{status},</if>
             <if test="auditStatus != null">#{auditStatus},</if>
+            <if test="sourceSystemId != null">#{sourceSystemId},</if>
             <if test="remark != null">#{remark},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -175,11 +178,11 @@
     <insert id="insertPayableBillManagementBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
         insert into payable_bill_management
         <trim prefix="(" suffix=") values" suffixOverrides=",">
-            id,system_no,bill_name,supplier_name,is_internal_settlement,internal_settlement_unit,document_count,total_amount,currency,discount_amount,paid_amount,pending_amount,exchange_rate,cny_amount,period_type,business_start_date,business_end_date,billing_start_date,billing_end_date,bill_generate_date,bill_send_date,bill_due_date,status,audit_status,remark,create_by,create_time,update_by,update_time,deleted,
+            id,system_no,bill_name,supplier_name,is_internal_settlement,internal_settlement_unit,document_count,total_amount,currency,discount_amount,paid_amount,pending_amount,exchange_rate,cny_amount,period_type,business_start_date,business_end_date,billing_start_date,billing_end_date,bill_generate_date,bill_send_date,bill_due_date,status,audit_status,source_system_id,remark,create_by,create_time,update_by,update_time,deleted,
         </trim>
         <foreach item="item" index="index" collection="list" separator=",">
-            <trim prefix="(" suffix=") " suffixOverrides=",">
-                #{item.id},#{item.systemNo},#{item.billName},#{item.supplierName},#{item.isInternalSettlement},#{item.internalSettlementUnit},#{item.documentCount},#{item.totalAmount},#{item.currency},#{item.discountAmount},#{item.paidAmount},#{item.pendingAmount},#{item.exchangeRate},#{item.cnyAmount},#{item.periodType},#{item.businessStartDate},#{item.businessEndDate},#{item.billingStartDate},#{item.billingEndDate},#{item.billGenerateDate},#{item.billSendDate},#{item.billDueDate},#{item.status},#{item.auditStatus},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                #{item.id},#{item.systemNo},#{item.billName},#{item.supplierName},#{item.isInternalSettlement},#{item.internalSettlementUnit},#{item.documentCount},#{item.totalAmount},#{item.currency},#{item.discountAmount},#{item.paidAmount},#{item.pendingAmount},#{item.exchangeRate},#{item.cnyAmount},#{item.periodType},#{item.businessStartDate},#{item.businessEndDate},#{item.billingStartDate},#{item.billingEndDate},#{item.billGenerateDate},#{item.billSendDate},#{item.billDueDate},#{item.status},#{item.auditStatus},#{item.sourceSystemId},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
             </trim>
         </foreach>
     </insert>
@@ -211,6 +214,7 @@
             <if test="billDueDate != null">bill_due_date = #{billDueDate},</if>
             <if test="status != null">status = #{status},</if>
             <if test="auditStatus != null">audit_status = #{auditStatus},</if>
+            <if test="sourceSystemId != null">source_system_id = #{sourceSystemId},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -247,6 +251,8 @@
                 <if test="item.billSendDate != null">bill_send_date = #{item.billSendDate},</if>
                 <if test="item.billDueDate != null">bill_due_date = #{item.billDueDate},</if>
                 <if test="item.status != null">status = #{item.status},</if>
+                <if test="item.auditStatus != null">audit_status = #{item.auditStatus},</if>
+                <if test="item.sourceSystemId != null">source_system_id = #{item.sourceSystemId},</if>
                 <if test="item.remark != null">remark = #{item.remark},</if>
                 <if test="item.createBy != null">create_by = #{item.createBy},</if>
                 <if test="item.createTime != null">create_time = #{item.createTime},</if>
diff --git a/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml b/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
index 0c8c08c..ce7eb8a 100644
--- a/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
+++ b/service/src/main/resources/mapper/cwgl/ReceivableBillManagementMapper.xml
@@ -41,6 +41,7 @@
         <result property="overdueInterest"    column="overdue_interest"    />
         <result property="status"    column="status"    />
         <result property="auditStatus"    column="audit_status"    />
+        <result property="sourceSystemId"    column="source_system_id"    />
         <result property="remark"    column="remark"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -83,7 +84,7 @@
     </resultMap>
 
     <sql id="selectReceivableBillManagementVo">
-        select thisTab.id, thisTab.system_no, thisTab.bill_name, thisTab.customer_name, thisTab.payee, thisTab.responsible_person, thisTab.responsible_leader, thisTab.settlement_method, thisTab.business_type, thisTab.promotion_requirement, thisTab.is_internal_settlement, thisTab.internal_settlement_unit, thisTab.document_count, thisTab.total_amount, thisTab.currency, thisTab.discount_amount, thisTab.received_amount, thisTab.pending_amount, thisTab.exchange_rate, thisTab.cny_amount, thisTab.period_type, thisTab.business_start_date, thisTab.business_end_date, thisTab.billing_start_date, thisTab.billing_end_date, thisTab.bill_generate_date, thisTab.bill_send_date, thisTab.bill_due_date, thisTab.due_in_30_days, thisTab.overdue_amount, thisTab.overdue_1_to_30_days, thisTab.overdue_31_to_60_days, thisTab.overdue_61_to_90_days, thisTab.overdue_91_to_180_days, thisTab.overdue_181_to_365_days, thisTab.overdue_over_1_year, thisTab.overdue_days, thisTab.settlement_category, thisTab.settlement_period, thisTab.nc_settlement_date, thisTab.nc_settlement_amount, thisTab.account_remark, thisTab.overdue_interest, thisTab.status, thisTab.audit_status, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from receivable_bill_management AS thisTab
+        select thisTab.id, thisTab.system_no, thisTab.bill_name, thisTab.customer_name, thisTab.payee, thisTab.responsible_person, thisTab.responsible_leader, thisTab.settlement_method, thisTab.business_type, thisTab.promotion_requirement, thisTab.is_internal_settlement, thisTab.internal_settlement_unit, thisTab.document_count, thisTab.total_amount, thisTab.currency, thisTab.discount_amount, thisTab.received_amount, thisTab.pending_amount, thisTab.exchange_rate, thisTab.cny_amount, thisTab.period_type, thisTab.business_start_date, thisTab.business_end_date, thisTab.billing_start_date, thisTab.billing_end_date, thisTab.bill_generate_date, thisTab.bill_send_date, thisTab.bill_due_date, thisTab.due_in_30_days, thisTab.overdue_amount, thisTab.overdue_1_to_30_days, thisTab.overdue_31_to_60_days, thisTab.overdue_61_to_90_days, thisTab.overdue_91_to_180_days, thisTab.overdue_181_to_365_days, thisTab.overdue_over_1_year, thisTab.overdue_days, thisTab.settlement_category, thisTab.settlement_period, thisTab.nc_settlement_date, thisTab.nc_settlement_amount, thisTab.account_remark, thisTab.overdue_interest, thisTab.status, thisTab.audit_status, thisTab.source_system_id, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from receivable_bill_management AS thisTab
     </sql>
     <sql id="selectReceivableBillManagementVoCount">
         select count(0) from receivable_bill_management as thisTab
@@ -201,6 +202,7 @@
             <if test="overdueInterest != null">overdue_interest,</if>
             <if test="status != null">status,</if>
             <if test="auditStatus != null">audit_status,</if>
+            <if test="sourceSystemId != null">source_system_id,</if>
             <if test="remark != null">remark,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
@@ -244,6 +246,7 @@
             <if test="overdueInterest != null">#{overdueInterest},</if>
             <if test="status != null">#{status},</if>
             <if test="auditStatus != null">#{auditStatus},</if>
+            <if test="sourceSystemId != null">#{sourceSystemId},</if>
             <if test="remark != null">#{remark},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -256,11 +259,11 @@
     <insert id="insertReceivableBillManagementBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
         insert into receivable_bill_management
         <trim prefix="(" suffix=") values" suffixOverrides=",">
-            system_no,bill_name,customer_name,payee,responsible_person,responsible_leader,settlement_method,business_type,promotion_requirement,is_internal_settlement,internal_settlement_unit,document_count,total_amount,currency,discount_amount,received_amount,pending_amount,exchange_rate,cny_amount,period_type,business_start_date,business_end_date,billing_start_date,billing_end_date,bill_generate_date,bill_send_date,bill_due_date,settlement_category,settlement_period,nc_settlement_date,nc_settlement_amount,account_remark,overdue_interest,status,audit_status,remark,create_by,create_time,update_by,update_time,deleted,
+            system_no,bill_name,customer_name,payee,responsible_person,responsible_leader,settlement_method,business_type,promotion_requirement,is_internal_settlement,internal_settlement_unit,document_count,total_amount,currency,discount_amount,received_amount,pending_amount,exchange_rate,cny_amount,period_type,business_start_date,business_end_date,billing_start_date,billing_end_date,bill_generate_date,bill_send_date,bill_due_date,settlement_category,settlement_period,nc_settlement_date,nc_settlement_amount,account_remark,overdue_interest,status,audit_status,source_system_id,remark,create_by,create_time,update_by,update_time,deleted,
         </trim>
         <foreach item="item" index="index" collection="list" separator=",">
             <trim prefix="(" suffix=") " suffixOverrides=",">
-                #{item.systemNo},#{item.billName},#{item.customerName},#{item.payee},#{item.responsiblePerson},#{item.responsibleLeader},#{item.settlementMethod},#{item.businessType},#{item.promotionRequirement},#{item.isInternalSettlement},#{item.internalSettlementUnit},#{item.documentCount},#{item.totalAmount},#{item.currency},#{item.discountAmount},#{item.receivedAmount},#{item.pendingAmount},#{item.exchangeRate},#{item.cnyAmount},#{item.periodType},#{item.businessStartDate},#{item.businessEndDate},#{item.billingStartDate},#{item.billingEndDate},#{item.billGenerateDate},#{item.billSendDate},#{item.billDueDate},#{item.settlementCategory},#{item.settlementPeriod},#{item.ncSettlementDate},#{item.ncSettlementAmount},#{item.accountRemark},#{item.overdueInterest},#{item.status},#{item.auditStatus},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
+                #{item.systemNo},#{item.billName},#{item.customerName},#{item.payee},#{item.responsiblePerson},#{item.responsibleLeader},#{item.settlementMethod},#{item.businessType},#{item.promotionRequirement},#{item.isInternalSettlement},#{item.internalSettlementUnit},#{item.documentCount},#{item.totalAmount},#{item.currency},#{item.discountAmount},#{item.receivedAmount},#{item.pendingAmount},#{item.exchangeRate},#{item.cnyAmount},#{item.periodType},#{item.businessStartDate},#{item.businessEndDate},#{item.billingStartDate},#{item.billingEndDate},#{item.billGenerateDate},#{item.billSendDate},#{item.billDueDate},#{item.settlementCategory},#{item.settlementPeriod},#{item.ncSettlementDate},#{item.ncSettlementAmount},#{item.accountRemark},#{item.overdueInterest},#{item.status},#{item.auditStatus},#{item.sourceSystemId},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
             </trim>
         </foreach>
     </insert>
@@ -304,6 +307,7 @@
             <if test="overdueInterest != null">overdue_interest = #{overdueInterest},</if>
             <if test="status != null">status = #{status},</if>
             <if test="auditStatus != null">audit_status = #{auditStatus},</if>
+            <if test="sourceSystemId != null">source_system_id = #{sourceSystemId},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -353,6 +357,7 @@
                 <if test="item.overdueInterest != null">overdue_interest = #{item.overdueInterest},</if>
                 <if test="item.status != null">status = #{item.status},</if>
                 <if test="item.auditStatus != null">audit_status = #{item.auditStatus},</if>
+                <if test="item.sourceSystemId != null">source_system_id = #{item.sourceSystemId},</if>
                 <if test="item.remark != null">remark = #{item.remark},</if>
                 <if test="item.createBy != null">create_by = #{item.createBy},</if>
                 <if test="item.createTime != null">create_time = #{item.createTime},</if>

--
Gitblit v1.8.0