From 076dd23c615e66b2c495bb123aadf041940f03b2 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 12 二月 2025 14:43:57 +0800
Subject: [PATCH] 协客云的三个接口初稿

---
 src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java                   |   19 
 src/main/java/com/gs/xky/mapper/TblBarcodeInformationMapper.java            |   18 
 src/main/java/com/gs/xky/dto/BarcodeDeliveryNo.java                         |   34 +
 src/main/resources/mapper/TblBarcodeInformationMapper.xml                   |    7 
 src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java        |   77 +++
 src/main/java/com/gs/xky/config/ApiResponse.java                            |    4 
 src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java           |   21 
 src/main/java/com/gs/xky/service/TblBarcodeInformationService.java          |   18 
 src/main/java/com/gs/xky/entity/DeliveryNoticeDetail.java                   |  298 +++++++++++++
 src/main/java/com/gs/xky/dto/LineList.java                                  |   81 +++
 src/main/java/com/gs/xky/service/Impl/DeliveryNoticeDetailServiceImpl.java  |   22 +
 src/main/resources/mapper/DeliveryNoticeDetailMapper.xml                    |    8 
 src/main/java/com/gs/xky/dto/XkyDetail.java                                 |   63 ++
 src/main/java/com/gs/xky/entity/DeliveryNotice.java                         |  189 ++++++++
 src/main/java/com/gs/xky/entity/TblBarcodeInformation.java                  |  113 +++++
 src/main/java/com/gs/xky/dto/CustomsData.java                               |   29 +
 src/main/java/com/gs/xky/config/XkyCommonParam.java                         |   25 +
 src/test/java/com/gs/xky/XkyApplicationTests.java                           |   44 -
 src/main/resources/mapper/DeliveryNoticeMapper.xml                          |   11 
 src/main/java/com/gs/xky/service/Impl/TblBarcodeInformationServiceImpl.java |   61 ++
 src/main/java/com/gs/xky/service/XkyService.java                            |  110 +++++
 src/main/java/com/gs/xky/service/DeliveryNoticeService.java                 |   17 
 src/main/java/com/gs/xky/config/BodyParam.java                              |    4 
 src/main/java/com/gs/xky/service/DeliveryNoticeDetailService.java           |   13 
 src/main/java/com/gs/xky/mapper/DeliveryNoticeDetailMapper.java             |   18 
 25 files changed, 1,252 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/gs/xky/config/ApiResponse.java b/src/main/java/com/gs/xky/config/ApiResponse.java
index 7cc1488..477f499 100644
--- a/src/main/java/com/gs/xky/config/ApiResponse.java
+++ b/src/main/java/com/gs/xky/config/ApiResponse.java
@@ -1,5 +1,6 @@
 package com.gs.xky.config;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -10,6 +11,7 @@
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class ApiResponse<T> {
 
     private int result;
@@ -17,6 +19,8 @@
     private String errorCode;
     private String errorMsg;
 
+    private T data;
+
     private List<T> dataList; // Add this field to match the response
 
 }
diff --git a/src/main/java/com/gs/xky/config/BodyParam.java b/src/main/java/com/gs/xky/config/BodyParam.java
index 4ee5127..faa9e15 100644
--- a/src/main/java/com/gs/xky/config/BodyParam.java
+++ b/src/main/java/com/gs/xky/config/BodyParam.java
@@ -29,4 +29,8 @@
     private int[] status;
 
     private int logisticsStatus;
+
+    private String deliveryNo;
+
+    private int returnVerifyFlag;
 }
diff --git a/src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java b/src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java
index e6a829f..b516a43 100644
--- a/src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java
+++ b/src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java
@@ -4,23 +4,20 @@
 public class DataAcquisitionConfiguration {
 
     //娴嬭瘯鐜
-    public static final String TEST_COMPANY_CODE =
-            "55958795";
+    public static final String TEST_COMPANY_CODE = "55958795";
 
-    public static final String TEST_APP_KEY =
-            "ab2d86b6dffabcc81dca6855c727c246";
+    public static final String TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246";
 
-    public static final String TEST_APP_SECRET =
-            "01b17babe2a96d5ebd802e67709f33d1";
+    public static final String TEST_APP_SECRET = "01b17babe2a96d5ebd802e67709f33d1";
 
+    public static final String TEST_ERP_CODE = "Z106";
 
     //姝e紡鐜
-    public static final String COMPANY_CODE =
-            "72505985";
+    public static final String COMPANY_CODE = "72505985";
 
-    public static final String APP_KEY =
-            "a2866f03bb7f76387bfb1a98001f0e31";
+    public static final String APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31";
 
-    public static final String APP_SECRET =
-            "f13bd1bcb130f0090ed92dc021e5f4e1";
+    public static final String APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1";
+
+    public static final String ERP_CODE = "Z106";
 }
diff --git a/src/main/java/com/gs/xky/config/XkyCommonParam.java b/src/main/java/com/gs/xky/config/XkyCommonParam.java
index fef8af5..3fea50e 100644
--- a/src/main/java/com/gs/xky/config/XkyCommonParam.java
+++ b/src/main/java/com/gs/xky/config/XkyCommonParam.java
@@ -1,5 +1,6 @@
 package com.gs.xky.config;
 
+import com.alibaba.fastjson.JSON;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -12,4 +13,28 @@
     private ApiCommonParam commonParam;
 
     private BodyParam body;
+
+
+    public static XkyCommonParam GetInit() {
+
+        long currentTimeMillis = System.currentTimeMillis();
+
+        ApiCommonParam apiParam = new ApiCommonParam();
+        apiParam.setAppKey(DataAcquisitionConfiguration.TEST_APP_KEY);//鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+        apiParam.setVersion("1.0");//鎺ュ彛鐗堟湰
+        apiParam.setOperateCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+        apiParam.setOwnerCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//鏁版嵁鎵�灞炲叕鍙哥紪鐮�,闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
+        apiParam.setTimestamps(currentTimeMillis / 1000);//褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
+
+        String appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET;//鎼哄浜戞彁渚涚殑appSecret
+
+        String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret);
+        apiParam.setSign(sign);
+
+        XkyCommonParam commonParam = new XkyCommonParam();
+        commonParam.setCommonParam(apiParam);
+
+        return commonParam;
+    }
+
 }
diff --git a/src/main/java/com/gs/xky/dto/BarcodeDeliveryNo.java b/src/main/java/com/gs/xky/dto/BarcodeDeliveryNo.java
new file mode 100644
index 0000000..36b2649
--- /dev/null
+++ b/src/main/java/com/gs/xky/dto/BarcodeDeliveryNo.java
@@ -0,0 +1,34 @@
+package com.gs.xky.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class BarcodeDeliveryNo {
+
+    private String productCode;  //浜у搧缂栫爜
+    private String smallBarcode;  //灏忓寘鏉$爜
+    private String bigBarcode;  //澶у寘鏉$爜
+    private String outerBarcode;  //澶栫鏉$爜
+    private String includeQty;  //褰撳墠灏忓寘鏉$爜鍖呭惈鐨勬暟閲�
+    private String smallPackageLength;  //灏忓寘鏉$爜-闀�
+    private String smallPackageWidth;  //灏忓寘鏉$爜-瀹�
+    private String smallPackageHeight;  //灏忓寘鏉$爜-楂�
+    private String bigPackageLength;  //澶у寘鏉$爜-闀�
+    private String bigPackageWidth;  //澶у寘鏉$爜-瀹�
+    private String bigPackageHeight;  //澶у寘鏉$爜-楂�
+    private String outerPackageLength;  //澶栫鏉$爜-闀�
+    private String outerPackageWidth;  //澶栫鏉$爜-瀹�
+    private String outerPackageHeight;  //澶栫鏉$爜-楂�
+    private String smallPackageSn;  //褰撳墠灏忓寘鏉$爜鐨勬祦姘寸爜
+    private String bigPackageSn;  //褰撳墠澶у寘鏉$爜鐨勬祦姘寸爜
+    private String outPackageSn;  //褰撳墠澶栫鏉$爜鐨勬祦姘寸爜
+    private String dynamicData;  //鏉$爜瑙勫垯涓搴旂殑鍔ㄦ�佸瓧娈电殑鍊�, key瀵瑰簲鐨勫彇鍊间负dynamicDescList.field鐨勫�硷紱濡傛灉浼佷笟璋冩暣浜嗘潯鐮佽鍒欙紝璇锋牴鎹甦ynamicDescList杩斿洖鐨勭粨鏋滐紝浜嗚В鍚勫姩鎬佹暟鎹殑鍚箟
+    private String packLevel;  //鍖呰灞傜骇
+
+}
diff --git a/src/main/java/com/gs/xky/dto/CustomsData.java b/src/main/java/com/gs/xky/dto/CustomsData.java
new file mode 100644
index 0000000..b8b0e6d
--- /dev/null
+++ b/src/main/java/com/gs/xky/dto/CustomsData.java
@@ -0,0 +1,29 @@
+package com.gs.xky.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CustomsData {
+
+    private String dnXkNo; //閫佽揣閫氱煡鍗曟嵁鍙�
+    private String dnInnerNo; //鍐呴儴鍗曟嵁鍙�
+    private String billLadingXkNo; //鎶ュ崟鍙风爜
+    private String customsTypeCode; //鎶ュ叧绫诲瀷缂栫爜
+    private String customsTypeName; //鎶ュ叧绫诲瀷鍚嶇О
+    private String destinationPortTypeCode; //鐩殑娓紪鐮�
+    private String destinationPortTypeName; //鐩殑娓悕绉�
+    private String portLoadingTypeCode; //瑁呰繍娓紪鐮�
+    private String portLoadingTypeName; //瑁呰繍娓悕绉�
+    private String originalCountryCode; //鍘熶骇鍥界紪鐮�
+    private String originalCountryName; //鍘熶骇鍥藉悕绉�
+    private String externalInvoiceXkNo; //澶栭儴鍙戠エ鍙风爜
+    private String externalInvoiceDate; //澶栭儴鍙戠エ鏃ユ湡
+
+}
diff --git a/src/main/java/com/gs/xky/dto/LineList.java b/src/main/java/com/gs/xky/dto/LineList.java
new file mode 100644
index 0000000..d5735b4
--- /dev/null
+++ b/src/main/java/com/gs/xky/dto/LineList.java
@@ -0,0 +1,81 @@
+package com.gs.xky.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class LineList {
+
+    private String lineNo; //椤规鍙�
+    private String poErpNo; //ERP閲囪喘鍗曞彿
+    private String purchaseType; //閲囪喘鍗曠被鍨� 1锛氫竴鑸噰璐紱2锛氬澶栭噰璐�
+    private String poLineNo; //閲囪喘鍗曢」娆�
+    private String productCode; //浜у搧缂栫爜
+    private String productName; //浜у搧鍚嶇О
+    private String productScale; //浜у搧瑙勬牸
+    private String deliveryUnitCode; //鍑鸿揣鍗曚綅缂栫爜
+    private String deliveryUnitName; //鍑鸿揣鍗曚綅鍚嶇О
+    private String deliveryQty; //鍑鸿揣鏁伴噺
+    private String deliveryValuationQty; //鍑鸿揣璁′环鏁伴噺
+    private String price; //鍑鸿揣浜у搧鍗曚环
+    private String taxPrice; //鍑鸿揣浜у搧鍚◣鍗曚环
+    private String schDynamicValue; //鎺掔▼鑷畾涔夐」鐨勫��
+    private String scheduleBatchNo; //鎺掔▼鎵规鍙�
+    private String scheduleOrderNo; //鎺掔▼鍗曞彿
+    private String scheduleDetailNo; //瀵瑰簲鎺掔▼ItemDetail鐨勪富閿垪
+    private String urgentFlag; //鏄惁鎬ユ枡 0:鍚� ; 1锛氭槸
+    private String srcBillType; //鍘熷鍗曟嵁绫诲瀷1锛氳鍗曪紱2锛氭帓绋�; 3:鎸夐��璐� 4:鎸夊鍝�
+    private String purchaseDesc; //閲囪喘椤规鐨勯噰璐鏄庝俊鎭�
+    private String srcOrderLineRemark; //鍗曟嵁澶囨敞锛宻rcBillType=1 瀵瑰簲閲囪喘璁㈠崟鍗曡韩鐨勫娉�; srcBillType=2 瀵瑰簲鎺掔▼椤规鐨勫娉�
+    private String status; //鐘舵�侊紙1:寰呯鏀讹紱2:绛炬敹涓紱3: 宸插畬鎴愶紱锛�
+    private String receiveStatus; //鏀惰揣鐘舵�侊紙0-鏈敹璐�;1-閮ㄥ垎鏀惰揣;2-鍏ㄩ儴鏀惰揣锛�
+    private String grossWeight; //鏁村崟姣涢噸
+    private String netWeight; //鏁村崟鍑�閲�
+    private String unitWeightCode; //閲嶉噺鍗曚綅缂栫爜
+    private String unitWeightName; //閲嶉噺鍗曚綅鍚嶇О
+    private String packingQty; //鍖呰鏁�
+    private String brandName; //鍝佺墝
+    private String otherExtend; //鍏跺畠璇存槑
+    private String originalCountryCode; //鍘熶骇鍥界紪鐮�
+    private String originalCountryName; //鍘熶骇鍥藉悕绉�
+    private String remark; //閫佽揣閫氱煡鍗曡韩澶囨敞
+    private String extendN01; //鎵╁睍瀛楁1
+    private String extendN02; //鎵╁睍瀛楁2
+    private String extendN03; //鎵╁睍瀛楁3
+    private String extendN04; //鎵╁睍瀛楁4
+    private String extendN05; //鎵╁睍瀛楁5
+    private String extendN06; //鎵╁睍瀛楁6
+    private String storeCode; //浠撳簱缂栫爜
+    private String storeName; //浠撳簱鍚嶇О
+    private String verifyQty; //閫佹鏁伴噺
+    private String allowQty; //鍏佽鏀惰揣鏁伴噺
+    private String compromiseQty; //璁╂鏀惰揣鏁伴噺
+    private String refusedQty; //鎷掓敹鏁伴噺
+    private String rtoErpNo; //閫�璐у崟ERP鍗曞彿
+    private String rtoLineNo; //閫�璐ч」娆″彿
+    private String prodLength; //闀�
+    private String prodWidth; //瀹�
+    private String prodHeight; //楂�
+    private String buyerName; //閲囪喘鍛�
+    private String expectedDate; //璁㈠崟浜ゆ湡锛堜互鏃堕棿鎴冲舰寮忥級
+    private String answerDate; //鎺掑畾浜ゆ湡锛堜互鏃堕棿鎴冲舰寮忥級
+    private String currencyCode; //甯佸埆缂栫爜
+    private String currencyName; //甯佸埆鍚嶇О
+    private String sendVerifyStatus; //閫佹鐘舵�侊紙0:鏈�佹锛�1:閮ㄥ垎閫佹锛�2:鍏ㄩ儴閫佹 3鍏嶆锛�
+    private String resultFlag; //妫�楠岀粨鏋滄爣璇嗭紙0:鍏嶆 1:鍏ㄩ儴鍚堟牸锛�2:閮ㄥ垎鍚堟牸锛�3:鎷掓敹锛�
+    private String applyDeliveryQty; //鐢宠鍑鸿揣鏁伴噺
+    private String applyDeliveryValuationQty; //鐢宠鍑鸿揣璁′环鏁伴噺
+    private String batchNumber; //鎵瑰彿
+    private String receiveQty; //鏀惰揣鏁伴噺
+    private String storageQty; //鍏ュ簱鏁伴噺
+    private String returnQty; //閫�璐ф暟閲�
+    private String firstCheck; //浼樺厛妫�楠� 0 姝e父锛�1 浼樺厛锛�2 绱ф��
+    private String poLineNoShow; //骞冲彴灞曠ず閲囪喘鍗曢」娆�
+
+}
diff --git a/src/main/java/com/gs/xky/dto/XkyDetail.java b/src/main/java/com/gs/xky/dto/XkyDetail.java
new file mode 100644
index 0000000..7748342
--- /dev/null
+++ b/src/main/java/com/gs/xky/dto/XkyDetail.java
@@ -0,0 +1,63 @@
+package com.gs.xky.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class XkyDetail {
+
+    private String deliveryNo; //閫佽揣鍗曞彿
+    private String innerVendorCode; //渚涘簲鍟嗙紪鐮�
+    private String innerVendorName; //渚涘簲鍟嗗悕绉�
+    private String deliveryType; //閫佽揣绫诲瀷 锛� 1 :鏅��(姝e父鍑鸿揣) 2锛氳ˉ璐�(鍏堝叆搴擄紝鍚庤ˉ鍑鸿揣鍗�) 3: 澶囧搧 4:鏍峰搧 5:VMI
+    private String deliveryDate; //閫佽揣鏃ユ湡锛堜互鏃堕棿鎴冲舰寮忥級
+    private String planArrivedDate; //棰勮閫佽揪鏃ユ湡锛堜互鏃堕棿鎴冲舰寮忥級
+    private String contactPersion; //閫佽揣鑱旂郴浜�
+    private String contactMobile; //閫佽揣浜鸿仈绯荤數璇�
+    private String addressCode; //鍐呴儴鏀惰揣鍦扮偣缂栫爜
+    private String addressInfo; //鏀惰揣鏄庣粏鍦板潃
+    private String deliveryCarNo; //閫佽揣杞︾墝鍙�
+    private String remark; //閫佽揣閫氱煡鍗曡韩澶囨敞
+    private String status; //閫佽揣鍗曠姸鎬� 1: 寰呯鏀讹紱 2: 绛炬敹涓紱 3: 宸插畬鎴愶紱 4: 鎾ゅ洖锛� 8: 宸蹭綔搴燂紱鐗堟湰2.0鏂板 5锛氱敵璇蜂腑锛� 7锛氬悓鎰忥紝 9锛氶儴鍒嗗悓鎰� 10: 宸插喕缁� 11: 鐢宠鎾ゅ洖
+    private String directDeliveryFlag; //鐩磋繍鏍囪瘑 1锛氭槸锛�0鍚�
+    private String logisticsStatus; //鐗╂祦鐘舵�� 0:鏈彂鍑猴紱1:宸插彂璐э紱2:宸插埌璐�
+    private String publishTime; //鏈�鍚庝竴娆″彂甯冩椂闂�
+    private String updateTime; //鏈�鍚庝竴娆℃洿鏂版椂闂�
+    private String profitCenterCode; //鍒╂鼎涓績(鎴栨敹璐ч儴闂�)缂栫爜
+    private String grossWeight; //鏁村崟姣涢噸
+    private String netWeight; //鏁村崟鍑�閲�
+    private String unitWeightCode; //閲嶉噺鍗曚綅缂栫爜
+    private String unitWeightName; //閲嶉噺鍗曚綅鍚嶇О
+    private String totalPackingQty; //鎬诲寘瑁呮暟
+    private String totalPackageQuantity; //鎵嬪伐濉啓锛屾�诲寘鏁�
+    private String transportTypeCode; //杩愯緭鏂瑰紡缂栫爜
+    private String transportTypeName; //杩愯緭鏂瑰紡鍚嶇О
+    private String packingWayCode; //鍖呰鏂瑰紡缂栫爜
+    private String packingWayName; //鍖呰鏂瑰紡鍚嶇О
+    private String extendN01; //鎵╁睍瀛楁1
+    private String extendN02; //鎵╁睍瀛楁2
+    private String extendN03; //鎵╁睍瀛楁3
+    private String platformExtendN04; //鎵╁睍瀛楁4
+    private String platformExtendN05; //鎵╁睍瀛楁5
+    private String platformExtendN06; //鎵╁睍瀛楁6
+    private String platformExtendN07; //鎵╁睍瀛楁7
+    private String platformExtendN08; //鎵╁睍瀛楁8
+    private String cargoDeliveryTime; //璐х墿閫佽揪鏃ユ湡锛堜互鏃堕棿鎴冲舰寮忥級
+    private String logisticsType; //鐗╂祦鏂瑰紡鏁板瓧褰㈠紡(1-渚涘簲鍟嗛�佽揣2-蹇��3-閲囪喘鏂硅嚜鎻�)
+    private String logisticsTypeShow; //鐗╂祦鏂瑰紡涓枃灞曠ず
+    private String logisticsNumber; //鐗╂祦鍗曞彿
+    private String firstCheck; //浼樺厛妫�楠� 0 姝e父锛�1 浼樺厛锛�2 绱ф��
+
+    //    private List<CustomsData> customsData;//鎶ュ叧璧勬枡
+    private List<LineList> lineList;//閫佽揣鍗曡韩鍒楄〃
+
+}
diff --git a/src/main/java/com/gs/xky/entity/DeliveryNotice.java b/src/main/java/com/gs/xky/entity/DeliveryNotice.java
new file mode 100644
index 0000000..d6f10b0
--- /dev/null
+++ b/src/main/java/com/gs/xky/entity/DeliveryNotice.java
@@ -0,0 +1,189 @@
+package com.gs.xky.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 閫佽揣閫氱煡鍗曚富琛�
+ *
+ * @TableName DELIVERY_NOTICE
+ */
+@TableName(value = "DELIVERY_NOTICE")
+@Data
+@KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE)
+public class DeliveryNotice implements Serializable {
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+    /**
+     * SEQ_XKY
+     */
+    @TableId
+    private Long id;
+    /**
+     * 閫佽揣鍗曞彿
+     */
+    private String deliveryNo;
+    /**
+     * 渚涘簲鍟嗙紪鐮�
+     */
+    private String innerVendorCode;
+    /**
+     * 渚涘簲鍟嗗悕绉�
+     */
+    private String innerVendorName;
+    /**
+     * 閫佽揣绫诲瀷锛�1-鏅�� 2-琛ヨ揣 3-澶囧搧 4-鏍峰搧 5-VMI
+     */
+    private String deliveryType;
+    /**
+     * 閫佽揣鏃ユ湡(鏃堕棿鎴�)
+     */
+    private String deliveryDate;
+    /**
+     * 棰勮閫佽揪鏃ユ湡(鏃堕棿鎴�)
+     */
+    private String planArrivedDate;
+    /**
+     * 閫佽揣鑱旂郴浜�
+     */
+    private String contactPersion;
+    /**
+     * 閫佽揣浜鸿仈绯荤數璇�
+     */
+    private String contactMobile;
+    /**
+     * 鍐呴儴鏀惰揣鍦扮偣缂栫爜
+     */
+    private String addressCode;
+    /**
+     * 鏀惰揣鏄庣粏鍦板潃
+     */
+    private String addressInfo;
+    /**
+     * 閫佽揣杞︾墝鍙�
+     */
+    private String deliveryCarNo;
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+    /**
+     * 鐘舵��:1-寰呯鏀� 2-绛炬敹涓� 3-宸插畬鎴� 4-鎾ゅ洖 8-宸蹭綔搴� 5-鐢宠涓� 7-鍚屾剰 9-閮ㄥ垎鍚屾剰 10-宸插喕缁� 11-鐢宠鎾ゅ洖
+     */
+    private String status;
+    /**
+     * 鐩磋繍鏍囪瘑:1-鏄� 0-鍚�
+     */
+    private String directDeliveryFlag;
+    /**
+     * 鐗╂祦鐘舵��:0-鏈彂鍑� 1-宸插彂璐� 2-宸插埌璐�
+     */
+    private String logisticsStatus;
+    /**
+     * 鏈�鍚庝竴娆″彂甯冩椂闂�
+     */
+    private String publishTime;
+    /**
+     * 鏈�鍚庝竴娆℃洿鏂版椂闂�
+     */
+    private String updateTime;
+    /**
+     * 鍒╂鼎涓績缂栫爜
+     */
+    private String profitCenterCode;
+    /**
+     * 鏁村崟姣涢噸
+     */
+    private String grossWeight;
+    /**
+     * 鏁村崟鍑�閲�
+     */
+    private String netWeight;
+    /**
+     * 閲嶉噺鍗曚綅缂栫爜
+     */
+    private String unitWeightCode;
+    /**
+     * 閲嶉噺鍗曚綅鍚嶇О
+     */
+    private String unitWeightName;
+    /**
+     * 鎬诲寘瑁呮暟
+     */
+    private String totalPackingQty;
+    /**
+     * 鎵嬪伐濉啓鎬诲寘鏁�
+     */
+    private String totalPackageQuantity;
+    /**
+     * 杩愯緭鏂瑰紡缂栫爜
+     */
+    private String transportTypeCode;
+    /**
+     * 杩愯緭鏂瑰紡鍚嶇О
+     */
+    private String transportTypeName;
+    /**
+     * 鍖呰鏂瑰紡缂栫爜
+     */
+    private String packingWayCode;
+    /**
+     * 鍖呰鏂瑰紡鍚嶇О
+     */
+    private String packingWayName;
+    /**
+     * 鎵╁睍瀛楁1
+     */
+    private String extendN01;
+    /**
+     * 鎵╁睍瀛楁2
+     */
+    private String extendN02;
+    /**
+     * 鎵╁睍瀛楁3
+     */
+    private String extendN03;
+    /**
+     * 鎵╁睍瀛楁4
+     */
+    private String platformExtendN04;
+    /**
+     * 鎵╁睍瀛楁5
+     */
+    private String platformExtendN05;
+    /**
+     * 鎵╁睍瀛楁6
+     */
+    private String platformExtendN06;
+    /**
+     * 鎵╁睍瀛楁7
+     */
+    private String platformExtendN07;
+    /**
+     * 鎵╁睍瀛楁8
+     */
+    private String platformExtendN08;
+    /**
+     * 璐х墿閫佽揪鏃ユ湡(鏃堕棿鎴�)
+     */
+    private Date cargoDeliveryTime;
+    /**
+     * 鐗╂祦鏂瑰紡:1-渚涘簲鍟嗛�佽揣 2-蹇�� 3-閲囪喘鏂硅嚜鎻�
+     */
+    private String logisticsType;
+    /**
+     * 鐗╂祦鏂瑰紡涓枃灞曠ず
+     */
+    private String logisticsTypeShow;
+    /**
+     * 鐗╂祦鍗曞彿
+     */
+    private String logisticsNumber;
+    /**
+     * 浼樺厛妫�楠�:0-姝e父 1-浼樺厛 2-绱ф��
+     */
+    private String firstCheck;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xky/entity/DeliveryNoticeDetail.java b/src/main/java/com/gs/xky/entity/DeliveryNoticeDetail.java
new file mode 100644
index 0000000..880ae00
--- /dev/null
+++ b/src/main/java/com/gs/xky/entity/DeliveryNoticeDetail.java
@@ -0,0 +1,298 @@
+package com.gs.xky.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 閫佽揣閫氱煡鍗曟嵁鏄庣粏琛�
+ *
+ * @TableName DELIVERY_NOTICE_DETAIL
+ */
+@TableName(value = "DELIVERY_NOTICE_DETAIL")
+@Data
+@KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE)
+public class DeliveryNoticeDetail implements Serializable {
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+    /**
+     * SEQ_XKY
+     */
+    @TableId
+    private Long id;
+
+    private Long pid;
+    /**
+     * 椤规鍙�
+     */
+    private String lineNo;
+    /**
+     * ERP閲囪喘鍗曞彿
+     */
+    private String poErpNo;
+    /**
+     * 閲囪喘鍗曠被鍨� 1锛氫竴鑸噰璐紱2锛氬澶栭噰璐�
+     */
+    private String purchaseType;
+    /**
+     * 閲囪喘鍗曢」娆�
+     */
+    private String poLineNo;
+    /**
+     * 浜у搧缂栫爜
+     */
+    private String productCode;
+    /**
+     * 浜у搧鍚嶇О
+     */
+    private String productName;
+    /**
+     * 浜у搧瑙勬牸
+     */
+    private String productScale;
+    /**
+     * 鍑鸿揣鍗曚綅缂栫爜
+     */
+    private String deliveryUnitCode;
+    /**
+     * 鍑鸿揣鍗曚綅鍚嶇О
+     */
+    private String deliveryUnitName;
+    /**
+     * 鍑鸿揣鏁伴噺
+     */
+    private String deliveryQty;
+    /**
+     * 鍑鸿揣璁′环鏁伴噺
+     */
+    private String deliveryValuationQty;
+    /**
+     * 鍑鸿揣浜у搧鍗曚环
+     */
+    private String price;
+    /**
+     * 鍑鸿揣浜у搧鍚◣鍗曚环
+     */
+    private String taxPrice;
+    /**
+     * 鎺掔▼鑷畾涔夐」鐨勫��
+     */
+    private String schDynamicValue;
+    /**
+     * 鎺掔▼鎵规鍙�
+     */
+    private String scheduleBatchNo;
+    /**
+     * 鎺掔▼鍗曞彿
+     */
+    private String scheduleOrderNo;
+    /**
+     * 瀵瑰簲鎺掔▼ItemDetail鐨勪富閿垪
+     */
+    private String scheduleDetailNo;
+    /**
+     * 鏄惁鎬ユ枡 0:鍚� ; 1锛氭槸
+     */
+    private String urgentFlag;
+    /**
+     * 鍘熷鍗曟嵁绫诲瀷1锛氳鍗曪紱2锛氭帓绋�; 3:鎸夐��璐� 4:鎸夊鍝�
+     */
+    private String srcBillType;
+    /**
+     * 閲囪喘椤规鐨勯噰璐鏄庝俊鎭�
+     */
+    private String purchaseDesc;
+    /**
+     * 鍗曟嵁澶囨敞锛宻rcBillType=1 瀵瑰簲閲囪喘璁㈠崟鍗曡韩鐨勫娉�; srcBillType=2 瀵瑰簲鎺掔▼椤规鐨勫娉�
+     */
+    private String srcOrderLineRemark;
+    /**
+     * 鐘舵�侊紙1:寰呯鏀讹紱2:绛炬敹涓紱3: 宸插畬鎴愶紱锛�
+     */
+    private String status;
+    /**
+     * 鏀惰揣鐘舵�侊紙0-鏈敹璐�;1-閮ㄥ垎鏀惰揣;2-鍏ㄩ儴鏀惰揣锛�
+     */
+    private String receiveStatus;
+    /**
+     * 鏁村崟姣涢噸
+     */
+    private String grossWeight;
+    /**
+     * 鏁村崟鍑�閲�
+     */
+    private String netWeight;
+    /**
+     * 閲嶉噺鍗曚綅缂栫爜
+     */
+    private String unitWeightCode;
+    /**
+     * 閲嶉噺鍗曚綅鍚嶇О
+     */
+    private String unitWeightName;
+    /**
+     * 鍖呰鏁�
+     */
+    private String packingQty;
+    /**
+     * 鍝佺墝
+     */
+    private String brandName;
+    /**
+     * 鍏跺畠璇存槑
+     */
+    private String otherExtend;
+    /**
+     * 鍘熶骇鍥界紪鐮�
+     */
+    private String originalCountryCode;
+    /**
+     * 鍘熶骇鍥藉悕绉�
+     */
+    private String originalCountryName;
+    /**
+     * 閫佽揣閫氱煡鍗曡韩澶囨敞
+     */
+    private String remark;
+    /**
+     * 鎵╁睍瀛楁1
+     */
+    private String extendN01;
+    /**
+     * 鎵╁睍瀛楁2
+     */
+    private String extendN02;
+    /**
+     * 鎵╁睍瀛楁3
+     */
+    private String extendN03;
+    /**
+     * 鎵╁睍瀛楁4
+     */
+    private String extendN04;
+    /**
+     * 鎵╁睍瀛楁5
+     */
+    private String extendN05;
+    /**
+     * 鎵╁睍瀛楁6
+     */
+    private String extendN06;
+    /**
+     * 浠撳簱缂栫爜
+     */
+    private String storeCode;
+    /**
+     * 浠撳簱鍚嶇О
+     */
+    private String storeName;
+    /**
+     * 閫佹鏁伴噺
+     */
+    private String verifyQty;
+    /**
+     * 鍏佽鏀惰揣鏁伴噺
+     */
+    private String allowQty;
+    /**
+     * 璁╂鏀惰揣鏁伴噺
+     */
+    private String compromiseQty;
+    /**
+     * 鎷掓敹鏁伴噺
+     */
+    private String refusedQty;
+    /**
+     * 閫�璐у崟ERP鍗曞彿
+     */
+    private String rtoErpNo;
+    /**
+     * 閫�璐ч」娆″彿
+     */
+    private String rtoLineNo;
+    /**
+     * 闀�
+     */
+    private String prodLength;
+    /**
+     * 瀹�
+     */
+    private String prodWidth;
+    /**
+     * 楂�
+     */
+    private String prodHeight;
+    /**
+     * 閲囪喘鍛�
+     */
+    private String buyerName;
+    /**
+     * 璁㈠崟浜ゆ湡锛堜互鏃堕棿鎴冲舰寮忥級
+     */
+    private String expectedDate;
+    /**
+     * 鎺掑畾浜ゆ湡锛堜互鏃堕棿鎴冲舰寮忥級
+     */
+    private String answerDate;
+    /**
+     * 甯佸埆缂栫爜
+     */
+    private String currencyCode;
+    /**
+     * 甯佸埆鍚嶇О
+     */
+    private String currencyName;
+    /**
+     * 閫佹鐘舵�侊紙0:鏈�佹锛�1:閮ㄥ垎閫佹锛�2:鍏ㄩ儴閫佹 3鍏嶆锛�
+     */
+    private String sendVerifyStatus;
+    /**
+     * 妫�楠岀粨鏋滄爣璇嗭紙0:鍏嶆 1:鍏ㄩ儴鍚堟牸锛�2:閮ㄥ垎鍚堟牸锛�3:鎷掓敹锛�
+     */
+    private String resultFlag;
+    /**
+     * 鐢宠鍑鸿揣鏁伴噺
+     */
+    private String applyDeliveryQty;
+    /**
+     * 鐢宠鍑鸿揣璁′环鏁伴噺
+     */
+    private String applyDeliveryValuationQty;
+    /**
+     * 鎵瑰彿
+     */
+    private String batchNumber;
+    /**
+     * 鏀惰揣鏁伴噺
+     */
+    private String receiveQty;
+    /**
+     * 鍏ュ簱鏁伴噺
+     */
+    private String storageQty;
+    /**
+     * 閫�璐ф暟閲�
+     */
+    private String returnQty;
+    /**
+     * 浼樺厛妫�楠� 0 姝e父锛�1 浼樺厛锛�2 绱ф��
+     */
+    private String firstCheck;
+    /**
+     * 骞冲彴灞曠ず閲囪喘鍗曢」娆�
+     */
+    private String poLineNoShow;
+    /**
+     * 澶囨敞
+     */
+    private String remarks;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private String createTime;
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private String updateTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xky/entity/TblBarcodeInformation.java b/src/main/java/com/gs/xky/entity/TblBarcodeInformation.java
new file mode 100644
index 0000000..d7dd5c7
--- /dev/null
+++ b/src/main/java/com/gs/xky/entity/TblBarcodeInformation.java
@@ -0,0 +1,113 @@
+package com.gs.xky.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 鏉$爜淇℃伅琛�
+ *
+ * @TableName TBL_BARCODE_INFORMATION
+ */
+@TableName(value = "TBL_BARCODE_INFORMATION")
+@Data
+@KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE)
+public class TblBarcodeInformation implements Serializable {
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+    /**
+     * SEQ_XKY
+     */
+    @TableId
+    private Long id;
+    /**
+     * 閫佽揣鍗曞彿
+     */
+    private String deliveryNo;
+    /**
+     * 浜у搧缂栫爜
+     */
+    private String productCode;
+    /**
+     * 灏忓寘鏉$爜
+     */
+    private String smallBarcode;
+    /**
+     * 澶у寘鏉$爜
+     */
+    private String bigBarcode;
+    /**
+     * 澶栫鏉$爜
+     */
+    private String outerBarcode;
+    /**
+     * 褰撳墠灏忓寘鏉$爜鍖呭惈鐨勬暟閲�
+     */
+    private String includeQty;
+    /**
+     * 灏忓寘鏉$爜-闀�
+     */
+    private String smallPackageLength;
+    /**
+     * 灏忓寘鏉$爜-瀹�
+     */
+    private String smallPackageWidth;
+    /**
+     * 灏忓寘鏉$爜-楂�
+     */
+    private String smallPackageHeight;
+    /**
+     * 澶у寘鏉$爜-闀�
+     */
+    private String bigPackageLength;
+    /**
+     * 澶у寘鏉$爜-瀹�
+     */
+    private String bigPackageWidth;
+    /**
+     * 澶у寘鏉$爜-楂�
+     */
+    private String bigPackageHeight;
+    /**
+     * 澶栫鏉$爜-闀�
+     */
+    private String outerPackageLength;
+    /**
+     * 澶栫鏉$爜-瀹�
+     */
+    private String outerPackageWidth;
+    /**
+     * 澶栫鏉$爜-楂�
+     */
+    private String outerPackageHeight;
+    /**
+     * 褰撳墠灏忓寘鏉$爜鐨勬祦姘寸爜
+     */
+    private String smallPackageSn;
+    /**
+     * 褰撳墠澶у寘鏉$爜鐨勬祦姘寸爜
+     */
+    private String bigPackageSn;
+    /**
+     * 褰撳墠澶栫鏉$爜鐨勬祦姘寸爜
+     */
+    private String outPackageSn;
+    /**
+     * 鏉$爜瑙勫垯涓搴旂殑鍔ㄦ�佸瓧娈电殑鍊�
+     */
+    private String dynamicData;
+    /**
+     * 鍖呰灞傜骇
+     */
+    private String packLevel;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private Date updateTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xky/mapper/DeliveryNoticeDetailMapper.java b/src/main/java/com/gs/xky/mapper/DeliveryNoticeDetailMapper.java
new file mode 100644
index 0000000..c07110b
--- /dev/null
+++ b/src/main/java/com/gs/xky/mapper/DeliveryNoticeDetailMapper.java
@@ -0,0 +1,18 @@
+package com.gs.xky.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xky.entity.DeliveryNoticeDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE_DETAIL(閫佽揣閫氱煡鍗曟嵁鏄庣粏琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-02-11 22:30:01
+ * @Entity com.gs.xky.entity.DeliveryNoticeDetail
+ */
+public interface DeliveryNoticeDetailMapper extends BaseMapper<DeliveryNoticeDetail> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
new file mode 100644
index 0000000..792eeb7
--- /dev/null
+++ b/src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
@@ -0,0 +1,19 @@
+package com.gs.xky.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xky.entity.DeliveryNotice;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE(閫佽揣閫氱煡鍗曚富琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-02-11 20:55:22
+ * @Entity com.gs.xky.entity.DeliveryNotice
+ */
+public interface DeliveryNoticeMapper extends BaseMapper<DeliveryNotice> {
+
+    long getNextVal();
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/mapper/TblBarcodeInformationMapper.java b/src/main/java/com/gs/xky/mapper/TblBarcodeInformationMapper.java
new file mode 100644
index 0000000..4a310c4
--- /dev/null
+++ b/src/main/java/com/gs/xky/mapper/TblBarcodeInformationMapper.java
@@ -0,0 +1,18 @@
+package com.gs.xky.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xky.entity.TblBarcodeInformation;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怲BL_BARCODE_INFORMATION(鏉$爜淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-02-12 12:52:06
+ * @Entity com.gs.xky.entity.TblBarcodeInformation
+ */
+public interface TblBarcodeInformationMapper extends BaseMapper<TblBarcodeInformation> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/service/DeliveryNoticeDetailService.java b/src/main/java/com/gs/xky/service/DeliveryNoticeDetailService.java
new file mode 100644
index 0000000..3bc2830
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/DeliveryNoticeDetailService.java
@@ -0,0 +1,13 @@
+package com.gs.xky.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xky.entity.DeliveryNoticeDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE_DETAIL(閫佽揣閫氱煡鍗曟嵁鏄庣粏琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-02-11 22:30:01
+ */
+public interface DeliveryNoticeDetailService extends IService<DeliveryNoticeDetail> {
+
+}
diff --git a/src/main/java/com/gs/xky/service/DeliveryNoticeService.java b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
new file mode 100644
index 0000000..c6dc124
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/DeliveryNoticeService.java
@@ -0,0 +1,17 @@
+package com.gs.xky.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xky.dto.XkyDetail;
+import com.gs.xky.entity.DeliveryNotice;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE(閫佽揣閫氱煡鍗曚富琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-02-11 20:55:22
+ */
+public interface DeliveryNoticeService extends IService<DeliveryNotice> {
+
+    boolean saveDeliveryNotice(XkyDetail xkyDetail);
+
+
+}
diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeDetailServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeDetailServiceImpl.java
new file mode 100644
index 0000000..258a5df
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeDetailServiceImpl.java
@@ -0,0 +1,22 @@
+package com.gs.xky.service.Impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xky.entity.DeliveryNoticeDetail;
+import com.gs.xky.mapper.DeliveryNoticeDetailMapper;
+import com.gs.xky.service.DeliveryNoticeDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE_DETAIL(閫佽揣閫氱煡鍗曟嵁鏄庣粏琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-02-11 22:30:01
+ */
+@Service
+public class DeliveryNoticeDetailServiceImpl extends ServiceImpl<DeliveryNoticeDetailMapper, DeliveryNoticeDetail>
+        implements DeliveryNoticeDetailService {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
new file mode 100644
index 0000000..dbe82a4
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
@@ -0,0 +1,77 @@
+package com.gs.xky.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xky.dto.LineList;
+import com.gs.xky.dto.XkyDetail;
+import com.gs.xky.entity.DeliveryNotice;
+import com.gs.xky.entity.DeliveryNoticeDetail;
+import com.gs.xky.mapper.DeliveryNoticeMapper;
+import com.gs.xky.service.DeliveryNoticeDetailService;
+import com.gs.xky.service.DeliveryNoticeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_NOTICE(閫佽揣閫氱煡鍗曚富琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-02-11 20:55:22
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class DeliveryNoticeServiceImpl extends ServiceImpl<DeliveryNoticeMapper, DeliveryNotice>
+        implements DeliveryNoticeService {
+
+    private final DeliveryNoticeDetailService detailService;
+
+
+    @Override
+    public boolean saveDeliveryNotice(XkyDetail xkyDetail) {
+
+        LambdaQueryWrapper<DeliveryNotice> wrapper = new LambdaQueryWrapper<>();
+
+        wrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo());
+
+        long count = count(wrapper);
+
+        if (count > 0) {
+            LambdaUpdateWrapper<DeliveryNotice> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo());
+            remove(updateWrapper);
+        }
+
+        DeliveryNotice deliveryNotice = new DeliveryNotice();
+        BeanUtil.copyProperties(xkyDetail, deliveryNotice);
+
+        long id = baseMapper.getNextVal();
+        deliveryNotice.setId(id);
+
+        List<LineList> lineList = xkyDetail.getLineList();
+
+        if (CollUtil.isEmpty(lineList)) {
+            return true;
+        }
+
+        List<DeliveryNoticeDetail> noticeDetails = new ArrayList<>();
+        for (LineList list : lineList) {
+            DeliveryNoticeDetail detail = new DeliveryNoticeDetail();
+            BeanUtil.copyProperties(list, detail);
+            detail.setPid(id);
+            noticeDetails.add(detail);
+        }
+
+        return save(deliveryNotice) && detailService.saveBatch(noticeDetails);
+    }
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/service/Impl/TblBarcodeInformationServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/TblBarcodeInformationServiceImpl.java
new file mode 100644
index 0000000..717955d
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/Impl/TblBarcodeInformationServiceImpl.java
@@ -0,0 +1,61 @@
+package com.gs.xky.service.Impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xky.dto.BarcodeDeliveryNo;
+import com.gs.xky.entity.TblBarcodeInformation;
+import com.gs.xky.mapper.TblBarcodeInformationMapper;
+import com.gs.xky.service.TblBarcodeInformationService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怲BL_BARCODE_INFORMATION(鏉$爜淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-02-12 12:52:06
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class TblBarcodeInformationServiceImpl extends ServiceImpl<TblBarcodeInformationMapper, TblBarcodeInformation>
+        implements TblBarcodeInformationService {
+
+
+    @Override
+    public boolean SaveBarcodeInformation(List<BarcodeDeliveryNo> barcodeList, String deliveryNo) {
+
+        if (CollUtil.isEmpty(barcodeList)) {
+            return false;
+        }
+
+        List<TblBarcodeInformation> tbBarcodeInformationList = new ArrayList<TblBarcodeInformation>();
+
+        LambdaUpdateWrapper<TblBarcodeInformation> updateWrapper = new LambdaUpdateWrapper<>();
+
+        for (BarcodeDeliveryNo barcodeDeliveryNo : barcodeList) {
+
+            updateWrapper.clear();
+            updateWrapper.eq(TblBarcodeInformation::getSmallBarcode, barcodeDeliveryNo.getSmallBarcode());
+            remove(updateWrapper);
+
+            TblBarcodeInformation barcodeInformation = new TblBarcodeInformation();
+            BeanUtil.copyProperties(barcodeDeliveryNo, barcodeInformation);
+
+            barcodeInformation.setDeliveryNo(deliveryNo);
+
+            tbBarcodeInformationList.add(barcodeInformation);
+        }
+
+        return saveBatch(tbBarcodeInformationList);
+    }
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xky/service/TblBarcodeInformationService.java b/src/main/java/com/gs/xky/service/TblBarcodeInformationService.java
new file mode 100644
index 0000000..d8f38c4
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/TblBarcodeInformationService.java
@@ -0,0 +1,18 @@
+package com.gs.xky.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xky.dto.BarcodeDeliveryNo;
+import com.gs.xky.entity.TblBarcodeInformation;
+
+import java.util.List;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怲BL_BARCODE_INFORMATION(鏉$爜淇℃伅琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-02-12 12:52:06
+ */
+public interface TblBarcodeInformationService extends IService<TblBarcodeInformation> {
+
+    boolean SaveBarcodeInformation(List<BarcodeDeliveryNo> barcodeList, String deliveryNo);
+
+}
diff --git a/src/main/java/com/gs/xky/service/XkyService.java b/src/main/java/com/gs/xky/service/XkyService.java
new file mode 100644
index 0000000..7a26aea
--- /dev/null
+++ b/src/main/java/com/gs/xky/service/XkyService.java
@@ -0,0 +1,110 @@
+package com.gs.xky.service;
+
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gs.xky.config.ApiResponse;
+import com.gs.xky.config.BodyParam;
+import com.gs.xky.config.DataAcquisitionConfiguration;
+import com.gs.xky.config.XkyCommonParam;
+import com.gs.xky.dto.BarcodeDeliveryNo;
+import com.gs.xky.dto.XkyDetail;
+import com.gs.xky.dto.XkyEntity;
+import com.gs.xky.entity.DeliveryNotice;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.List;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class XkyService {
+
+    private final ApiService apiService;
+
+
+    private final DeliveryNoticeService deliveryNoticeService;
+
+    private final TblBarcodeInformationService barcodeInformationService;
+
+    public void GetSaveDetail() throws IOException {
+        long currentTimeMillis = System.currentTimeMillis();
+
+        XkyCommonParam param = XkyCommonParam.GetInit();
+
+        // 璁$畻浜斿垎閽熷墠鐨勬椂闂存埑
+        long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 鍒嗛挓 = 5 * 60 * 1000 姣
+
+        // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
+        BodyParam bodyParam = new BodyParam();
+        bodyParam.setStartDate(startDate);
+        bodyParam.setEndDate(currentTimeMillis);
+        bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE);
+        bodyParam.setStatus(new int[]{1});
+        bodyParam.setLogisticsStatus(2);
+
+        param.setBody(bodyParam);
+
+        ApiResponse<XkyEntity> noList = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json");
+
+//        List<String> deliveryNoList = noList.getDataList().stream().map(XkyEntity::getDeliveryNo).collect(Collectors.toList());
+
+        List<XkyEntity> deliveryNoList = noList.getDataList();
+
+        LambdaUpdateWrapper<DeliveryNotice> deliveryNoticeWrapper = new LambdaUpdateWrapper<>();
+
+        deliveryNoList.forEach(deliveryNo -> {
+            try {
+
+                if ("4".equals(deliveryNo.getStatus()) || "8".equals(deliveryNo.getStatus())) {
+                    deliveryNoticeWrapper.clear();
+                    deliveryNoticeWrapper.eq(DeliveryNotice::getDeliveryNo, deliveryNo.getDeliveryNo());
+                    deliveryNoticeService.remove(deliveryNoticeWrapper);
+                }
+
+                XkyDetail detail = getDetail(deliveryNo.getDeliveryNo());
+                deliveryNoticeService.saveDeliveryNotice(detail);
+                List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo());
+                barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo());
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
+    }
+
+    private XkyDetail getDetail(String deliveryNo) throws IOException {
+        XkyCommonParam param = XkyCommonParam.GetInit();
+
+        // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
+        BodyParam bodyParam = new BodyParam();
+
+        bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE);
+        bodyParam.setDeliveryNo(deliveryNo);
+
+
+        param.setBody(bodyParam);
+
+        ApiResponse<XkyDetail> noList = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json");
+
+        return noList.getData();
+    }
+
+    private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException {
+        XkyCommonParam param = XkyCommonParam.GetInit();
+
+        // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
+        BodyParam bodyParam = new BodyParam();
+
+        bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE);
+        bodyParam.setDeliveryNo(deliveryNo);
+
+        param.setBody(bodyParam);
+
+
+        ApiResponse<BarcodeDeliveryNo> noList = apiService.sendListRequest(param, BarcodeDeliveryNo.class, "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json");
+
+        return noList.getDataList();
+    }
+}
diff --git a/src/main/resources/mapper/DeliveryNoticeDetailMapper.xml b/src/main/resources/mapper/DeliveryNoticeDetailMapper.xml
new file mode 100644
index 0000000..05a237d
--- /dev/null
+++ b/src/main/resources/mapper/DeliveryNoticeDetailMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gs.xky.mapper.DeliveryNoticeDetailMapper">
+
+
+</mapper>
diff --git a/src/main/resources/mapper/DeliveryNoticeMapper.xml b/src/main/resources/mapper/DeliveryNoticeMapper.xml
new file mode 100644
index 0000000..a7d8ba7
--- /dev/null
+++ b/src/main/resources/mapper/DeliveryNoticeMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gs.xky.mapper.DeliveryNoticeMapper">
+
+    <select id="getNextVal" resultType="java.lang.Long">
+        SELECT SEQ_XKY.NEXTVAL
+        FROM DUAL
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/TblBarcodeInformationMapper.xml b/src/main/resources/mapper/TblBarcodeInformationMapper.xml
new file mode 100644
index 0000000..10b60b4
--- /dev/null
+++ b/src/main/resources/mapper/TblBarcodeInformationMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gs.xky.mapper.TblBarcodeInformationMapper">
+
+</mapper>
diff --git a/src/test/java/com/gs/xky/XkyApplicationTests.java b/src/test/java/com/gs/xky/XkyApplicationTests.java
index a127cb1..7344742 100644
--- a/src/test/java/com/gs/xky/XkyApplicationTests.java
+++ b/src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,9 +1,6 @@
 package com.gs.xky;
 
-import com.alibaba.fastjson.JSON;
-import com.gs.xky.config.*;
-import com.gs.xky.dto.XkyEntity;
-import com.gs.xky.service.ApiService;
+import com.gs.xky.service.XkyService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -15,45 +12,12 @@
 
 
     @Autowired
-    private ApiService apiService;
+    private XkyService xkyService;
 
     @Test
     void contextLoads() throws IOException {
 
-        long currentTimeMillis = System.currentTimeMillis();
-
-        ApiCommonParam apiParam = new ApiCommonParam();
-        apiParam.setAppKey(DataAcquisitionConfiguration.TEST_APP_KEY);//鍙戞惡瀹簯鎻愪緵鐨刟ppKey
-        apiParam.setVersion("1.0");//鎺ュ彛鐗堟湰
-        apiParam.setOperateCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
-        apiParam.setOwnerCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//鏁版嵁鎵�灞炲叕鍙哥紪鐮�,闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
-        apiParam.setTimestamps(currentTimeMillis / 1000);//褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
-
-        String appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET;//鎼哄浜戞彁渚涚殑appSecret
-
-        String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret);
-        apiParam.setSign(sign);
-
-
-        // 璁$畻浜斿垎閽熷墠鐨勬椂闂存埑
-        long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 鍒嗛挓 = 5 * 60 * 1000 姣
-
-        // 鍒涘缓 BodyParam 瀵硅薄骞惰祴鍊�
-        BodyParam bodyParam = new BodyParam();
-        bodyParam.setStartDate(startDate);
-        bodyParam.setEndDate(currentTimeMillis);
-        bodyParam.setErpCode("Z106");
-        bodyParam.setStatus(new int[]{1});
-        bodyParam.setLogisticsStatus(2);
-
-        XkyCommonParam param = new XkyCommonParam();
-        param.setCommonParam(apiParam);
-        param.setBody(bodyParam);
-
-
-        ApiResponse<XkyEntity> xkyEntityApiResponse = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json");
-
-        System.out.println(JSON.toJSONString(xkyEntityApiResponse));
+        xkyService.GetSaveDetail();
     }
 
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3