From 3078ed5432eb05d74dbd91bda2c7bfe6d2faa5f4 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期五, 27 三月 2026 10:50:26 +0800
Subject: [PATCH] 修改推送应收账单
---
tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 115 insertions(+), 2 deletions(-)
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java
index 936f0ca..dcdb4de 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsPayableFeeServiceImpl.java
@@ -19,11 +19,19 @@
import com.ruoyi.tms.domain.*;
import com.ruoyi.tms.mapper.*;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.client.RestTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.annotation.DataSource;
@@ -61,7 +69,10 @@
ISysConfigService sysConfigService;
@Autowired
ISystemDataNoService systemDataNoService;
-
+ @Autowired
+ private RestTemplate restTemplate;
+ @Value("${custom.cwxtApi.url}")
+ private String url;
/**
* 鏌ヨ搴斾粯璐圭敤
*
@@ -312,8 +323,110 @@
if (!rmb.isEmpty()){
tmsApBillItemMapper.insertTmsApBillItemBatch(rmb);
}
+
+ //todo 鍚戝閮ㄧ郴缁熸帹閫佹暟鎹�
+ pushPayableToExternalSystem(tmsApBill, tmsPayableFeeList);
+
return AjaxResult.success();
}
+
+ /**
+ * 鍚戝閮ㄧ郴缁熸帹閫佸簲浠樻暟鎹�
+ * @param tmsApBill 搴斾粯璐﹀崟
+ * @param tmsPayableFeeList 搴斾粯璐圭敤鍒楄〃
+ */
+ @Async
+ protected void pushPayableToExternalSystem(TmsApBill tmsApBill, List<TmsPayableFee> tmsPayableFeeList) {
+ java.util.Map<String, Object> requestBody = new java.util.HashMap<>();
+ try {
+ // 鏋勫缓璇锋眰浣�
+ String apiUrl = url+"/addPayableBill";
+
+ // 鏋勫缓bill閮ㄥ垎
+ java.util.Map<String, Object> billMap = new java.util.HashMap<>();
+ billMap.put("billName", tmsApBill.getBillName());
+ billMap.put("supplierName", tmsApBill.getServiceProviderName());
+ billMap.put("totalAmount", tmsApBill.getSettleAmount());
+ billMap.put("currency", "RMB");
+ billMap.put("status", "draft");
+ billMap.put("isInternalSettlement", "0");
+ billMap.put("internalSettlementUnit", tmsApBill.getServiceProviderName());
+ billMap.put("documentCount", tmsPayableFeeList.size());
+ billMap.put("discountAmount", 0.00);
+ billMap.put("paidAmount", 0.00);
+ billMap.put("pendingAmount", tmsApBill.getSettleAmount());
+ billMap.put("exchangeRate", tmsApBill.getSettleRate());
+ billMap.put("cnyAmount", tmsApBill.getSettleAmount());
+ billMap.put("periodType", "");
+ billMap.put("businessStartDate", "");
+ billMap.put("businessEndDate", "");
+ billMap.put("billingStartDate", "");
+ billMap.put("billingEndDate", "");
+ billMap.put("billGenerateDate", "");
+ billMap.put("billSendDate", "");
+ billMap.put("billDueDate", "");
+ billMap.put("remark", "");
+
+ // 鏋勫缓fees閮ㄥ垎
+ List<java.util.Map<String, Object>> feesList = new java.util.ArrayList<>();
+ for (int i = 0; i < tmsPayableFeeList.size(); i++) {
+ TmsPayableFee fee = tmsPayableFeeList.get(i);
+ java.util.Map<String, Object> feeMap = new java.util.HashMap<>();
+ feeMap.put("sourceSystem", "TMS");
+ feeMap.put("documentNo", fee.getDispatchNo() != null ? fee.getDispatchNo() : "");
+ feeMap.put("supplierName", tmsApBill.getServiceProviderName());
+ feeMap.put("payableAmount", fee.getPayableRmbSumAmount());
+ feeMap.put("serialNumber", String.format("%03d", i + 1));
+ feeMap.put("relatedBillNo", "");
+ feeMap.put("businessSector", "");
+ feeMap.put("documentType", "");
+ feeMap.put("isInternalSettlement", "0");
+ feeMap.put("internalSettlementUnit", "");
+ feeMap.put("projectName", fee.getProjectName() != null ? fee.getProjectName() : "");
+ feeMap.put("businessTime", fee.getDispatchConfirmTime());
+ feeMap.put("payableConfirmTime", fee.getDispatchConfirmTime());
+ feeMap.put("status", "confirmed");
+ feeMap.put("remark", "");
+
+ // 鏋勫缓feeDetails閮ㄥ垎
+ List<java.util.Map<String, Object>> feeDetailsList = new java.util.ArrayList<>();
+ java.util.Map<String, Object> feeDetailMap = new java.util.HashMap<>();
+ feeDetailMap.put("feeType", "杩愯緭璐�");
+ feeDetailMap.put("feeName", "骞茬嚎杩愯緭璐�");
+ feeDetailMap.put("unitPrice", 1200.00);
+ feeDetailMap.put("billingQuantity", 5.00);
+ feeDetailMap.put("billingAmount", fee.getPayableRmbSumAmount());
+ feeDetailMap.put("serialNumber", String.format("%03d-01", i + 1));
+ feeDetailMap.put("billingUnit", "杞︽");
+ feeDetailMap.put("actualAmount", fee.getPayableRmbSumAmount());
+ feeDetailMap.put("currency", "RMB");
+ feeDetailMap.put("feeRegTime", "");
+ feeDetailMap.put("remark", "");
+ feeDetailsList.add(feeDetailMap);
+
+ feeMap.put("feeDetails", feeDetailsList);
+ feesList.add(feeMap);
+ }
+
+ // 鏋勫缓瀹屾暣璇锋眰浣�
+ requestBody.put("bill", billMap);
+ requestBody.put("fees", feesList);
+
+ // 璁剧疆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());
+ } catch (Exception e) {
+ logger.error("鎺ㄩ�佸簲浠樻暟鎹埌澶栭儴绯荤粺澶辫触锛岃处鍗旾D: {}, 渚涘簲鍟�: {}",
+ tmsApBill.getId(), tmsApBill.getServiceProviderName(), e);
+ logger.debug("鎺ㄩ�佸け璐ョ殑璇锋眰鏁版嵁: {}", JSON.toJSONString(requestBody));
+ // 鎺ㄩ�佸け璐ヤ笉褰卞搷涓绘祦绋嬶紝璁板綍鏃ュ織鍗冲彲
+ }
+ }
/**
* 鍒犻櫎搴斾粯璐圭敤淇℃伅
--
Gitblit v1.8.0