From 5627248e473253b3f10615d6be8b27bb7cc7c4f7 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期五, 10 四月 2026 14:49:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yagwly_fa_master' into yagwly_fa_master

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 76 insertions(+), 4 deletions(-)

diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
index a78df45..5854e4e 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.utils.DateUtils;
 import javax.annotation.Resource;
 
@@ -253,6 +254,69 @@
         executor.execute(() -> pushPayableToExternalSystem(tmsApBill, tmsPayableFeeList));
     }
 
+    @Override
+    public void cancelPushToExternalSystem(Integer id) {
+        TmsApBill tmsApBill = tmsApBillMapper.selectTmsApBillById(id);
+        if (tmsApBill == null) {
+            throw new RuntimeException("搴斾粯璐﹀崟涓嶅瓨鍦�");
+        }
+
+        // 寮傛鎺ㄩ�佷綔搴熻姹�
+        AsyncTaskExecutor executor = new SimpleAsyncTaskExecutor();
+        executor.execute(() -> pushCancelToExternalSystem(tmsApBill));
+    }
+
+    /**
+     * 鍚戝閮ㄧ郴缁熸帹閫佸簲浠樻暟鎹綔搴�
+     * @param tmsApBill 搴斾粯璐﹀崟
+     */
+    @Async
+    protected void pushCancelToExternalSystem(TmsApBill tmsApBill) {
+        java.util.Map<String, Object> requestBody = new java.util.HashMap<>();
+        try {
+          
+
+            // 鏋勫缓璇锋眰浣�
+            String apiUrl = url+"/cancelPayableBill";
+
+            // 鏋勫缓璇锋眰浣擄紝鍙渶瑕乻ourceSystemId
+            requestBody.put("sourceSystemId", tmsApBill.getSourceSystemId());
+
+            // 璁剧疆HTTP澶�
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            HttpEntity<String> entity = new HttpEntity<>(JSON.toJSONString(requestBody), headers);
+
+            // 鍙戦�丄PI璇锋眰
+            ResponseEntity<String> response = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, String.class);
+            logger.info("鎺ㄩ�佸簲浠樻暟鎹綔搴熷埌澶栭儴绯荤粺鎴愬姛锛屽搷搴�: {}", response.getBody());
+
+            // 鏇存柊鎺ㄩ�佺姸鎬佷负鎴愬姛
+            tmsApBill.setPushStatus(2);
+            tmsApBill.setStatus(3); // 璁剧疆璐﹀崟鐘舵�佷负浣滃簾
+            tmsApBill.setPushTime(DateUtils.getNowDate());
+            tmsApBillMapper.updateTmsApBill(tmsApBill);
+
+            // 閲嶇疆鍏宠仈鐨勫簲浠樿垂鐢ㄧ姸鎬佷负寰呯‘璁�
+            tmsPayableFeeMapper.update(new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<TmsPayableFee>()
+                    .set(TmsPayableFee::getStatus, 0)
+                    .set(TmsPayableFee::getBillPayableId, null)
+                    .set(TmsPayableFee::getBillPayableNo, null)
+                    .eq(TmsPayableFee::getBillPayableId, tmsApBill.getId())
+            );
+            logger.info("閲嶇疆搴斾粯璐圭敤鐘舵�佹垚鍔燂紝璐﹀崟ID: {}", tmsApBill.getId());
+        } catch (Exception e) {
+            logger.error("鎺ㄩ�佸簲浠樻暟鎹綔搴熷埌澶栭儴绯荤粺澶辫触锛岃处鍗旾D: {}, 渚涘簲鍟�: {}", 
+                tmsApBill.getId(), tmsApBill.getServiceProviderName(), e);
+            logger.debug("鎺ㄩ�佸け璐ョ殑璇锋眰鏁版嵁: {}", JSON.toJSONString(requestBody));
+
+            // 鏇存柊鎺ㄩ�佺姸鎬佷负澶辫触
+            tmsApBill.setPushStatus(3);
+            tmsApBill.setPushTime(DateUtils.getNowDate());
+            tmsApBillMapper.updateTmsApBill(tmsApBill);
+        }
+    }
+
     /**
      * 鏇存柊鎺ㄩ�佺姸鎬�
      *
@@ -288,10 +352,7 @@
     protected void pushPayableToExternalSystem(TmsApBill tmsApBill, List<TmsPayableFee> tmsPayableFeeList) {
         java.util.Map<String, Object> requestBody = new java.util.HashMap<>();
         try {
-            // 鏇存柊鎺ㄩ�佺姸鎬佷负鎺ㄩ�佷腑
-            tmsApBill.setPushStatus(1);
-            tmsApBill.setPushTime(DateUtils.getNowDate());
-            tmsApBillMapper.updateTmsApBill(tmsApBill);
+
 
             // 鏋勫缓璇锋眰浣�
             String apiUrl = url+"/addPayableBill";
@@ -391,6 +452,17 @@
             ResponseEntity<String> response = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, String.class);
             logger.info("鎺ㄩ�佸簲浠樻暟鎹埌澶栭儴绯荤粺鎴愬姛锛屽搷搴�: {}", response.getBody());
 
+            // 瑙f瀽鍝嶅簲锛岃幏鍙杝ourceSystemId
+            try {
+                JSONObject result = JSONObject.parseObject(response.getBody());
+                String sourceSystemId = result.getString("sourceSystemId");
+                if (sourceSystemId != null) {
+                    tmsApBill.setSourceSystemId(Integer.parseInt(sourceSystemId));
+                }
+            } catch (Exception e) {
+                logger.error("瑙f瀽澶栭儴绯荤粺鍝嶅簲澶辫触: {}", e.getMessage());
+            }
+
             // 鏇存柊鎺ㄩ�佺姸鎬佷负鎴愬姛
             tmsApBill.setPushStatus(2);
             tmsApBill.setPushTime(DateUtils.getNowDate());

--
Gitblit v1.8.0