From c7cde6c8ec424453c7155735e6a429c57e77141b Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 07 四月 2026 16:46:08 +0800
Subject: [PATCH] 新增配置

---
 service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

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 0db2612..a8f80f6 100644
--- a/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/PayableBillManagementController.java
@@ -22,9 +22,12 @@
 import com.ruoyi.cwgl.domain.InvoiceManage;
 import com.ruoyi.cwgl.domain.PayableBillManagement;
 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.IPayableBillManagementService;
 import com.ruoyi.cwgl.service.IPayableInvoiceBusinessService;
+import com.ruoyi.cwgl.service.ITmsAuditLogPushService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
@@ -46,6 +49,9 @@
 
     @Autowired
     private IPayableInvoiceBusinessService payableInvoiceBusinessService;
+
+    @Autowired
+    private ITmsAuditLogPushService tmsAuditLogPushService;
 
 
 
@@ -167,4 +173,110 @@
         
         return AjaxResult.success(invoicedAmount);
     }
+
+    /**
+     * 搴斾粯璐﹀崟瀹℃牳鎺ュ彛
+     * @param billAuditDto 瀹℃牳鏁版嵁浼犺緭瀵硅薄
+     * @return 瀹℃牳缁撴灉
+     */
+    @PreAuthorize("@ss.hasPermi('cwgl:payableBillManagement:audit')")
+    @Log(title = "搴斾粯璐﹀崟绠$悊", businessType = BusinessType.UPDATE)
+    @PutMapping("/audit")
+    public AjaxResult auditPayableBill(@RequestBody BillAuditDto billAuditDto) {
+        try {
+            // 1. 鏌ヨ搴斾粯璐﹀崟
+            PayableBillManagement bill = payableBillManagementService.selectPayableBillManagementById(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 = payableBillManagementService.updatePayableBillManagement(bill);
+            if (rows <= 0) {
+                return AjaxResult.error("鏇存柊搴斾粯璐﹀崟瀹℃牳鐘舵�佸け璐�");
+            }
+            
+            // 5. 璁板綍瀹℃牳鏃ュ織
+            savePayableAuditLog(billAuditDto, bill, beforeAuditStatus);
+            
+            // 6. 濡傛灉鏉ユ簮绯荤粺鏄疶MS锛屾帹閫佸鏍告棩蹇楀埌TMS
+            if (tmsAuditLogPushService.isPayableBillFromTms(bill.getSystemNo())) {
+                try {
+                    PayableAuditLog auditLog = createPayableAuditLog(billAuditDto, bill, beforeAuditStatus);
+                    tmsAuditLogPushService.pushPayableAuditLog(auditLog);
+                } catch (Exception e) {
+                    logger.error("鎺ㄩ�佸簲浠樿处鍗曞鏍告棩蹇楀埌TMS澶辫触锛岃处鍗旾D锛歿}", bill.getId(), e);
+                    // 鎺ㄩ�佸け璐ヤ笉褰卞搷涓绘祦绋嬶紝鍙褰曟棩蹇�
+                }
+            }
+            
+            return AjaxResult.success("搴斾粯璐﹀崟瀹℃牳鎴愬姛");
+            
+        } catch (Exception e) {
+            return AjaxResult.error("搴斾粯璐﹀崟瀹℃牳澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    /**
+     * 淇濆瓨搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    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() : "鏃�");
+    }
+
+    /**
+     * 鑾峰彇瀹℃牳鐘舵�佹枃鏈�
+     */
+    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 PayableAuditLog createPayableAuditLog(BillAuditDto billAuditDto, PayableBillManagement bill, Integer beforeAuditStatus) {
+        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());
+        return auditLog;
+    }
 }

--
Gitblit v1.8.0