From 5e84b114cba06681f96ca9e4ffe565ef7811898b Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 09 四月 2025 20:13:08 +0800
Subject: [PATCH] 接口解析的实体类确认

---
 src/main/java/com/gs/xiaomi/dto/Item.java               |   69 +++---
 src/main/java/com/gs/xiaomi/dto/BoxSum.java             |  144 +++++++------
 src/main/java/com/gs/xiaomi/service/SoapApiService.java |   30 ++
 src/main/java/com/gs/xiaomi/dto/BoxItem.java            |  123 ++++++------
 src/main/java/com/gs/xiaomi/dto/EtHeader.java           |  191 +++++++++++++++++-
 5 files changed, 370 insertions(+), 187 deletions(-)

diff --git a/src/main/java/com/gs/xiaomi/dto/BoxItem.java b/src/main/java/com/gs/xiaomi/dto/BoxItem.java
index c24f7fe..11ae017 100644
--- a/src/main/java/com/gs/xiaomi/dto/BoxItem.java
+++ b/src/main/java/com/gs/xiaomi/dto/BoxItem.java
@@ -11,96 +11,95 @@
 @Data
 public class BoxItem {
 
-    /* 鐗╂祦鍖呰淇℃伅 */
-    @XmlElement(name = "BOX_SEQ")
-    private String boxSeq;  // 绠卞崟搴忓彿
+    @XmlElement(name = "box_seq")
+    private String boxSeq;  // 绠卞崟娴佹按鍙�
 
-    @XmlElement(name = "BOX_NO")
-    private String boxNo;  // 绠卞彿
+    @XmlElement(name = "box_no")
+    private String boxNo;  // 鍖呰绠卞敮涓�鏍囪瘑
 
-    @XmlElement(name = "CARTONID")
-    private String cartonid;  // 灏忕背绠卞彿
+    @XmlElement(name = "cartonid")
+    private String cartonid;  // 灏忕背涓撶敤绠卞彿锛堝姞瀵嗘牸寮忥級
 
-    /* 閲囪喘涓庡崟鎹俊鎭� */
-    @XmlElement(name = "ZZASN")
-    private String zzasn;  // 閫佽揣鍗曞彿
+    /* 閲囪喘涓庡崟鎹俊鎭紙6涓牳蹇冨瓧娈碉級 */
+    @XmlElement(name = "zzasn")
+    private String zzasn;  // 鍏ㄧ悆缁熶竴閫佽揣鍗曞彿
 
+    @XmlElement(name = "matnr")
+    private String matnr;  // 鍥介檯鐗╂枡缂栫爜
 
-    @XmlElement(name = "MATNR")
-    private String matnr;  // 鐗╂枡缂栧彿
+    @XmlElement(name = "maktx")
+    private String maktx;  // 澶氳瑷�鐗╂枡鎻忚堪
 
-    @XmlElement(name = "MAKTX")
-    private String maktx;  // 鐗╂枡鎻忚堪
+    /* 瑙勬牸涓庢暟閲忎綋绯伙紙18涓閲忓瓧娈碉級 */
+    @XmlElement(name = "pc_qty")
+    private String pcQty;  // 瀹為檯鍙戣揣浠舵暟
 
-    /* 瑙勬牸涓庢暟閲� */
-    @XmlElement(name = "PC_QTY")
-    private String pcQty;  // 鍙戣揣鏁伴噺
+    @XmlElement(name = "lot_no")
+    private String lotNo;  // 鎵樼洏鍞竴缂栧彿
 
-    @XmlElement(name = "LOT_NO")
-    private String lotNo;  // 鎵樼洏鍙�
+    @XmlElement(name = "ntgew_p")
+    private String ntgewP;  // 鍗曚欢鍑�閲嶏紙鍏�/浠讹級
 
-    @XmlElement(name = "NTGEW_P")
-    private String ntgewP;  // 鍗曚欢鍑�閲�(G/PCS)
+    @XmlElement(name = "brgew_p")
+    private String brgewP;  // 鍗曠姣涢噸锛堝崈鍏�/绠憋級
 
-    @XmlElement(name = "BRGEW_P")
-    private String brgewP;  // 鍗曠姣涢噸(KG/绠�)
+    @XmlElement(name = "lot_size")
+    private String lotSize;  // 鎵樼洏瑁呰浇瑙勬牸
 
-    @XmlElement(name = "LOT_SIZE")
-    private String lotSize;  // 鎵樼洏灏哄(m)
+    @XmlElement(name = "box_size")
+    private String boxSize;  // 鏍囧噯鍖栫浣撳昂瀵�
 
-    @XmlElement(name = "BOX_SIZE")
-    private String boxSize;  // 鍗曠灏哄(cm)
+    @XmlElement(name = "total_vlume")
+    private String totalVlume;  // 鍚墭鐩樻�讳綋绉�
 
-    @XmlElement(name = "TOTAL_VLUME")
-    private String totalVlume;  // 鍚墭浣撶Н(m鲁)
+    @XmlElement(name = "box_qty")
+    private String boxQty;  // 鎬荤鏁�
 
-    @XmlElement(name = "BOX_QTY")
-    private String boxQty;  // 绠辨暟
+    @XmlElement(name = "ebeln")
+    private String ebeln;  // 閲囪喘璁㈠崟鍙�
 
-    @XmlElement(name = "EBELN")
-    private String ebeln;  // 閲囪喘鍑瘉鍙�
+    @XmlElement(name = "ebelp")
+    private String ebelp;  // 閲囪喘璁㈠崟琛屽彿
 
-    @XmlElement(name = "EBELP")
-    private String ebelp;  // 閲囪喘鍑瘉椤圭洰缂栧彿
+    @XmlElement(name = "box_spec")
+    private String boxSpec;  // 鍗曠瀹归噺锛堜欢/绠憋級
 
-    @XmlElement(name = "BOX_SPEC")
-    private String boxSpec;  // 鍗曠鍖呰(pcs/绠�)
+    @XmlElement(name = "ntgew")
+    private String ntgew;  // 鎬诲噣閲嶏紙鑷姩璁$畻鍊硷級
 
-    @XmlElement(name = "NTGEW")
-    private String ntgew;  // 鎬诲噣閲�=PC_QTY*NTGEW_P
+    @XmlElement(name = "brgew")
+    private String brgew;  // 鎬绘瘺閲嶏紙鍚寘瑁咃級
 
-    @XmlElement(name = "BRGEW")
-    private String brgew;  // 鎬绘瘺閲�
+    @XmlElement(name = "meins")
+    private String meins;  // 鍥介檯璁¢噺鍗曚綅
 
-    @XmlElement(name = "MEINS")
-    private String meins;  // 璁¢噺鍗曚綅
+    @XmlElement(name = "l_m")
+    private String lM;  // 鎵樼洏闀垮害锛堢背锛�
 
-    @XmlElement(name = "BRAND")
-    private String brand;  // 鍝佺墝
+    @XmlElement(name = "w_m")
+    private String wM;  // 鎵樼洏瀹藉害锛堢背锛�
 
-    @XmlElement(name = "PLACE")
-    private String place;  // 浜у湴
+    @XmlElement(name = "h_m")
+    private String hM;  // 鎵樼洏鍫嗛珮锛堢背锛�
 
-    @XmlElement(name = "IMCLR")
-    private String imclr;  // 杩涘彛鎶ュ叧鏍囪瘑
+    /* 鍟嗗搧涓庣洃绠′俊鎭紙7涓叧閿瓧娈碉級 */
+    @XmlElement(name = "brand")
+    private String brand;  // 鍝佺墝璁よ瘉鏍囪瘑
 
-    @XmlElement(name = "MODELNUMBER")
-    private String modelnumber;  // 鍨嬪彿
+    @XmlElement(name = "place")
+    private String place;  // 鍘熶骇鍦扮紪鐮�
 
-    @XmlElement(name = "MATNR_JG")
-    private String matnrJg;  // 鐩戠鏉′欢
+    @XmlElement(name = "imclr")
+    private String imclr;  // 娴峰叧鎶ュ叧鏍囪瘑
 
-    @XmlElement(name = "MATNR_JYJY")
-    private String matnrJyjy;  // 妫�楠屾鐤�
+    @XmlElement(name = "modelnumber")
+    private String modelnumber;  // 鍥介檯鍨嬪彿缂栫爜
 
-    @XmlElement(name = "L_M")
-    private String lM;  // 鎵樼洏闀�(m)
+    @XmlElement(name = "matnr_jg")
+    private String matnrJg;  // 娴峰叧鐩戠鏉′欢
 
-    @XmlElement(name = "W_M")
-    private String wM;  // 鎵樼洏瀹�(m)
-
-    @XmlElement(name = "H_M")
-    private String hM;  // 鎵樼洏楂�(m)
+    @XmlElement(name = "matnr_jyjy")
+    private String matnrJyjy;  // 妫�楠屾鐤唬鐮�
 
 
 }
diff --git a/src/main/java/com/gs/xiaomi/dto/BoxSum.java b/src/main/java/com/gs/xiaomi/dto/BoxSum.java
index 2c56142..532c6a2 100644
--- a/src/main/java/com/gs/xiaomi/dto/BoxSum.java
+++ b/src/main/java/com/gs/xiaomi/dto/BoxSum.java
@@ -11,89 +11,97 @@
 @Data
 public class BoxSum {
 
-    @XmlElement(name = "BOX_SEQ")
-    private String boxSeq;  // 绠卞崟搴忓垪鍙�
+    /* 鐗╂祦鍖呰鏍稿績鏍囪瘑锛�3椤癸級 */
+    @XmlElement(name = "box_seq")
+    private String boxSeq;  // 绠卞崟娴佹按鍙�
 
-    @XmlElement(name = "BOX_NO")
-    private String boxNo;  // 鐗╃悊绠卞彿
+    @XmlElement(name = "box_no")
+    private String boxNo;  // 鐗╃悊鍖呰鏍囪瘑
 
-    @XmlElement(name = "ZZASN")
-    private String zzasn;  // 閫佽揣鍗曞彿
+    @XmlElement(name = "cartonid")
+    private String cartonid;  // 灏忕背绠卞彿锛堜繚鐣欏師瀛楁锛�
 
-    @XmlElement(name = "MATNR")
-    private String matnr;  // SAP鐗╂枡缂栧彿
+    /* 鍗曟嵁涓庣墿鏂欎綋绯伙紙5椤癸級 */
+    @XmlElement(name = "zzasn")
+    private String zzasn;  // 鍏ㄧ悆缁熶竴閫佽揣鍗曞彿
 
-    @XmlElement(name = "MAKTX")
-    private String maktx;  // 鐗╂枡涓枃鎻忚堪
+    @XmlElement(name = "matnr")
+    private String matnr;  // SAP鏍囧噯鐗╂枡缂栫爜
 
-    @XmlElement(name = "PC_QTY")
-    private String pcQty;  // 瀹為檯鍙戣揣鏁伴噺
+    @XmlElement(name = "maktx")
+    private String maktx;  // 澶氳瑷�鐗╂枡鎻忚堪
 
-    @XmlElement(name = "LOT_NO")
-    private String lotNo;  // 鎵樼洏缂栧彿
+    /* 璁¢噺鍙傛暟浣撶郴锛�12椤癸級 */
+    @XmlElement(name = "pc_qty")
+    private String pcQty;  // 瀹為檯鍙戣揣浠舵暟
 
-    @XmlElement(name = "NTGEW_P")
-    private String ntgewP;  // 鍗曚欢鍑�閲嶏紙鍏紡锛氱墿鏂欏噣閲岹/PCS锛�
+    @XmlElement(name = "lot_no")
+    private String lotNo;  // 鐗╂祦鎵樼洏缂栧彿
 
-    @XmlElement(name = "BRGEW_P")
-    private String brgewP;  // 鍗曠姣涢噸锛圞G/绠憋級
+    @XmlElement(name = "ntgew_p")
+    private String ntgewP;  // 鍗曚欢鍑�閲嶏紙鍏�/浠讹級
 
-    @XmlElement(name = "LOT_SIZE")
-    private String lotSize;  // 鎵樼洏灏哄锛堢背鍒讹級
+    @XmlElement(name = "brgew_p")
+    private String brgewP;  // 鍗曠姣涢噸锛堝崈鍏�/绠憋級
 
-    @XmlElement(name = "BOX_SIZE")
-    private String boxSize;  // 鍗曠灏哄锛堝帢绫筹級
+    /* 瑙勬牸缁村害锛�6椤癸級 */
+    @XmlElement(name = "lot_size")
+    private String lotSize;  // 鎵樼洏瑁呰浇瑙勬牸
 
-    @XmlElement(name = "TOTAL_VLUME")
+    @XmlElement(name = "box_size")
+    private String boxSize;  // 鏍囧噯绠变綋灏哄
+
+    @XmlElement(name = "total_vlume")  // 娉ㄦ剰瀛楁鎷煎啓寤鸿淇涓簐olume
     private String totalVlume;  // 鍚墭鐩樻�讳綋绉�
 
-    @XmlElement(name = "BOX_QTY")
-    private String boxQty;  // 鎬荤鏁�
-
-    /* 閲囪喘鍑瘉淇℃伅鍧� */
-    @XmlElement(name = "EBELN")
-    private String ebeln;  // 閲囪喘鍑瘉鍙�
-
-    @XmlElement(name = "EBELP")
-    private String ebelp;  // 閲囪喘鍑瘉椤圭洰缂栧彿
-
-    @XmlElement(name = "BOX_SPEC")
-    private String boxSpec;  // 鍗曠瀹归噺瑙勬牸
-
-    @XmlElement(name = "NTGEW")
-    private String ntgew;  // 鎬诲噣閲嶏紙鍏紡锛歅C_QTY*NTGEW_P锛�
-
-    @XmlElement(name = "BRGEW")
-    private String brgew;  // 鎬绘瘺閲嶏紙鑷姩璁$畻鍊硷級
-
-    /* 鍩虹璁¢噺淇℃伅鍧� */
-    @XmlElement(name = "MEINS")
-    private String meins;  // 鍩烘湰璁¢噺鍗曚綅
-
-    @XmlElement(name = "BRAND")
-    private String brand;  // 鍒堕�犲晢鍝佺墝
-
-    @XmlElement(name = "PLACE")
-    private String place;  // 鍘熶骇鍦颁俊鎭�
-
-    @XmlElement(name = "IMCLR")
-    private String imclr;  // 灏忕背杩涘彛鎶ュ叧鏍囪瘑
-
-    @XmlElement(name = "MODELNUMBER")
-    private String modelnumber;  // 浜у搧鍨嬪彿
-
-    @XmlElement(name = "MATNR_JG")
-    private String matnrJg;  // 娴峰叧鐩戠鏉′欢
-
-    @XmlElement(name = "MATNR_JYJY")
-    private String matnrJyjy;  // 妫�楠屾鐤姹�
-
-    @XmlElement(name = "L_M")
+    @XmlElement(name = "l_m")
     private String lM;  // 鎵樼洏闀垮害锛堢背锛�
 
-    @XmlElement(name = "W_M")
+    @XmlElement(name = "w_m")
     private String wM;  // 鎵樼洏瀹藉害锛堢背锛�
 
-    @XmlElement(name = "H_M")
-    private String hM;  // 鎵樼洏楂樺害锛堢背锛�
+    @XmlElement(name = "h_m")
+    private String hM;  // 鎵樼洏鍫嗛珮锛堢背锛�
+
+    /* 閲囪喘鍑瘉淇℃伅锛�4椤癸級 */
+    @XmlElement(name = "ebeln")
+    private String ebeln;  // 閲囪喘璁㈠崟鍙�
+
+    @XmlElement(name = "ebelp")
+    private String ebelp;  // 閲囪喘璁㈠崟琛屽彿
+
+    @XmlElement(name = "box_spec")
+    private String boxSpec;  // 鍗曠瀹归噺瑙勬牸
+
+    @XmlElement(name = "box_qty")
+    private String boxQty;  // 鎬诲寘瑁呯鏁�
+
+    /* 閲嶉噺璁$畻浣撶郴锛�3椤癸級 */
+    @XmlElement(name = "ntgew")
+    private String ntgew;  // 鑷姩璁$畻鎬诲噣閲�
+
+    @XmlElement(name = "brgew")
+    private String brgew;  // 绯荤粺鏍哥畻鎬绘瘺閲�
+
+    @XmlElement(name = "meins")
+    private String meins;  // 鍥介檯璁¢噺鍗曚綅
+
+    /* 璐告槗鍚堣淇℃伅锛�7椤癸級 */
+    @XmlElement(name = "brand")
+    private String brand;  // 鍝佺墝璁よ瘉鏍囪瘑
+
+    @XmlElement(name = "place")
+    private String place;  // 鍘熶骇鍦扮紪鐮�
+
+    @XmlElement(name = "imclr")
+    private String imclr;  // 鎶ュ叧鏍囪瘑
+
+    @XmlElement(name = "modelnumber")
+    private String modelnumber;  // 鍥介檯鍨嬪彿缂栫爜
+
+    @XmlElement(name = "matnr_jg")
+    private String matnrJg;  // 娴峰叧鐩戠鏉′欢
+
+    @XmlElement(name = "matnr_jyjy")
+    private String matnrJyjy;  // 妫�楠屾鐤唬鐮�
 }
diff --git a/src/main/java/com/gs/xiaomi/dto/EtHeader.java b/src/main/java/com/gs/xiaomi/dto/EtHeader.java
index 1304240..60dbaf1 100644
--- a/src/main/java/com/gs/xiaomi/dto/EtHeader.java
+++ b/src/main/java/com/gs/xiaomi/dto/EtHeader.java
@@ -11,36 +11,201 @@
 @XmlAccessorType(XmlAccessType.FIELD)
 @Data
 public class EtHeader {
+    /* 鏍稿績鍗曟嵁淇℃伅鍧� */
     @XmlElement(name = "zzasn")
-    private String zzasn;
+    private String zzasn; // 閫佽揣鍗曞彿(涓婚敭)
 
     @XmlElement(name = "zzasn_type")
-    private String zzasnType;
+    private String zzasnType; // 鍗曟嵁绫诲瀷(鏅��/绱ф��)
 
+    @XmlElement(name = "migo_type")
+    private String migoType; // 鏀惰揣绫诲瀷(鏍囧噯/閫�璐�)
+
+    /* 閲囪喘涓庡簱瀛樼鐞嗗潡 */
+    @XmlElement(name = "zrproject")
+    private String zrproject; // 椤圭洰璋冩嫧缂栧彿
+
+    @XmlElement(name = "ekorg")
+    private String ekorg; // 閲囪喘缁勭粐缂栫爜
+
+    @XmlElement(name = "ekotx")
+    private String ekotx; // 閲囪喘缁勭粐鎻忚堪
+
+    @XmlElement(name = "stock_org_from")
+    private String stockOrgFrom; // 璋冨嚭搴撳瓨缁勭粐缂栫爜
+
+    @XmlElement(name = "stock_org_from_desc")
+    private String stockOrgFromDesc; // 璋冨嚭搴撳瓨鎻忚堪
+
+    @XmlElement(name = "stock_org_to")
+    private String stockOrgTo; // 璋冨叆搴撳瓨缁勭粐缂栫爜
+
+    @XmlElement(name = "stock_org_to_desc")
+    private String stockOrgToDesc; // 璋冨叆搴撳瓨鎻忚堪
+
+    /* 渚涘簲鍟嗕笌鍚堜綔浼欎即鍧� */
     @XmlElement(name = "lifnr")
-    private String lifnr;
+    private String lifnr; // 渚涘簲鍟嗙紪鐮�(绀轰緥鍊�:130479)
 
     @XmlElement(name = "vendor_name")
-    private String vendorName;
+    private String vendorName; // 渚涘簲鍟嗗叏绉�
 
-    @XmlElement(name = "zzship_addr")
-    private String zzshipAddr;
+    @XmlElement(name = "short_name")
+    private String shortName; // 渚涘簲鍟嗙畝绉�
 
+    @XmlElement(name = "hub_lifnr")
+    private String hubLifnr; // HUB渚涘簲鍟嗙紪鐮�
+
+    /* 鐗╂祦杩愯緭淇℃伅鍧� */
+    @XmlElement(name = "zzcarrier")
+    private String zzcarrier; // 鎵胯繍鍟嗗悕绉�
+
+    @XmlElement(name = "zzcarrier_no")
+    private String zzcarrierNo; // 鎵胯繍鍗曞彿
+
+    @XmlElement(name = "road_transport_no")
+    private String roadTransportNo; // 杩愯緭鍗曟嵁鍙�
+
+    @XmlElement(name = "zztrans_model")
+    private String zztransModel; // 杩愯緭杞﹀瀷
+
+    @XmlElement(name = "zzlicense_numb")
+    private String zzlicenseNumb; // 杞︾墝鍙�
+
+    @XmlElement(name = "zzseal_no")
+    private String zzsealNo; // 閾呭皝鍙�
+
+    @XmlElement(name = "logistics_no")
+    private String logisticsNo; // 鐗╂祦鍗曞彿
+
+    @XmlElement(name = "logistics_company")
+    private String logisticsCompany; // 鐗╂祦鍏徃缂栫爜
+
+    @XmlElement(name = "logistics_company_name")
+    private String logisticsCompanyName; // 鐗╂祦鍏徃鍏ㄧО
+
+    /* 鑱旂郴浜轰俊鎭潡 */
     @XmlElement(name = "zzship_name")
-    private String zzshipName;
+    private String zzshipName; // 鍙戣揣浜哄鍚�
 
+    @XmlElement(name = "zzship_phon")
+    private String zzshipPhon; // 鍙戣揣浜虹數璇�
+
+    @XmlElement(name = "zzdriver_name")
+    private String zzdriverName; // 鍙告満濮撳悕
+
+    @XmlElement(name = "zzdriver_phon")
+    private String zzdriverPhon; // 鍙告満鐢佃瘽
+
+    @XmlElement(name = "last4_phone_number")
+    private String last4PhoneNumber; // 鎵嬫満灏惧彿
+
+    @XmlElement(name = "receiver")
+    private String receiver; // 鏀惰揣浜�
+
+    @XmlElement(name = "receive_phone")
+    private String receivePhone; // 鏀惰揣鐢佃瘽
+
+    @XmlElement(name = "final_contact")
+    private String finalContact; // 鏈�缁堟敹璐т汉
+
+    @XmlElement(name = "final_phone")
+    private String finalPhone; // 鏈�缁堣仈绯荤數璇�
+
+    /* 鍦板潃淇℃伅鍧� */
+    @XmlElement(name = "zzship_addr")
+    private String zzshipAddr; // 鍙戣揣鍦板潃
+
+    @XmlElement(name = "zzreceive_addr")
+    private String zzreceiveAddr; // 鏍囧噯鏀惰揣鍦板潃
+
+    @XmlElement(name = "receive_addr")
+    private String receiveAddr; // 瀹為檯鏀惰揣鍦板潃
+
+    @XmlElement(name = "final_addr")
+    private String finalAddr; // 鏈�缁堥厤閫佸湴鍧�
+
+    @XmlElement(name = "final_company")
+    private String finalCompany; // 鏈�缁堟敹璐у崟浣�
+
+    /* 鏃堕棿鎺у埗鍧� */
     @XmlElement(name = "zzship_date")
-    private String zzshipDate;
+    private String zzshipDate; // 鍙戣揣鏃ユ湡(yyyyMMdd)
 
+    @XmlElement(name = "zzarrive_time")
+    private String zzarriveTime; // 棰勮鍒拌揣鏃ユ湡
+
+    @XmlElement(name = "zzarrive_time1")
+    private String zzarriveTime1; // 棰勮鍒拌揣鏃堕棿(HHmm)
+
+    @XmlElement(name = "reserve_date")
+    private String reserveDate; // 棰勭害鏃ユ湡
+
+    @XmlElement(name = "reserve_time")
+    private String reserveTime; // 棰勭害鏃堕棿娈�
+
+    /* 浠撳簱绠$悊鍧� */
+    @XmlElement(name = "zzwarehouse_id")
+    private String zzwarehouseId; // 浠撳簱鍞竴鏍囪瘑
+
+    @XmlElement(name = "receive_warehouse_id")
+    private String receiveWarehouseId; // 鏀惰揣浠撳簱ID
+
+    @XmlElement(name = "receive_warehouse_short")
+    private String receiveWarehouseShort; // 浠撳簱绠�绉�
+
+    @XmlElement(name = "bukrs")
+    private String bukrs; // 鍏徃浠g爜
+
+    /* 鐘舵�佹帶鍒跺潡 */
+    @XmlElement(name = "status")
+    private String status; // 鍗曟嵁鐘舵��(鏂板缓/宸插彂璐�/宸插畬鎴�)
+
+    @XmlElement(name = "status_sn")
+    private String statusSn; // 鏉$爜鐘舵��(宸蹭笂浼�/鏈笂浼�)
+
+    @XmlElement(name = "zzcanceled")
+    private String zzcanceled; // 浣滃簾鏍囪瘑
+
+    @XmlElement(name = "price_stat")
+    private String priceStat; // 浠锋牸瀹℃牳鐘舵��
+
+    /* 涓氬姟妯″紡鍧� */
+    @XmlElement(name = "purchase_mode")
+    private String purchaseMode; // 浠撳簱浣滀笟鎸囧绫诲瀷
+
+    @XmlElement(name = "purchase_mode2")
+    private String purchaseMode2; // 閲囪喘妯″紡(VMI/JIT)
+
+    @XmlElement(name = "business_model")
+    private String businessModel; // 浜ゆ枡妯″紡(鑷彁/閰嶉��)
+
+    /* 鎵╁睍淇℃伅鍧� */
+    @XmlElement(name = "asn_desc")
+    private String asnDesc; // 鍗曟嵁鎻忚堪
+
+    @XmlElement(name = "imclr")
+    private String imclr; // 杩涘彛鎶ュ叧鏍囪瘑
+
+    @XmlElement(name = "lifnr_dg")
+    private String lifnrDg; // 澶栭儴宸ュ巶浠g爜
+
+    @XmlElement(name = "product_type")
+    private String productType; // 鐢熶骇绫诲瀷(鑷埗/澶栬喘)
+
+    @XmlElement(name = "zzdriver_license")
+    private String zzdriverLicense; // 椹鹃┒璇佸彿
+
+    /* 闄勪欢淇℃伅鍧� */
     @XmlElementWrapper(name = "items")
     @XmlElement(name = "item")
-    private List<Item> items;
+    private List<Item> items;// 琛岄」鐩槑缁�
 
-    @XmlElementWrapper(name = "BOX_ITEMS")
+    @XmlElementWrapper(name = "box_items")
     @XmlElement(name = "boxItems")
-    private List<BoxItem> boxItems;
+    private List<BoxItem> boxItems; // 绠卞崟鏄庣粏
 
-    @XmlElementWrapper(name = "BOX_SUMS")
+    @XmlElementWrapper(name = "box_sums")
     @XmlElement(name = "boxSum")
-    private List<BoxSum> boxSums;
+    private List<BoxSum> boxSums; // 绠辨暟姹囨��
 }
diff --git a/src/main/java/com/gs/xiaomi/dto/Item.java b/src/main/java/com/gs/xiaomi/dto/Item.java
index bc7977c..8f6dd2f 100644
--- a/src/main/java/com/gs/xiaomi/dto/Item.java
+++ b/src/main/java/com/gs/xiaomi/dto/Item.java
@@ -11,115 +11,114 @@
 @Data
 public class Item {
 
-    // 鍩虹鍗曟嵁淇℃伅
     /* 鍩虹鍗曟嵁鏍囪瘑 */
-    @XmlElement(name = "ZZASN")
+    @XmlElement(name = "zzasn")
     private String zzasn;  // 閫佽揣鍗曞彿
 
-    @XmlElement(name = "ZZITEM_ID")
+    @XmlElement(name = "zzitem_id")
     private String zzitemId;  // 閫佽揣鍗曡鍙�
 
-    @XmlElement(name = "ZZPO_NO")
+    @XmlElement(name = "zzpo_no")
     private String zzpoNo;  // 閲囪喘鍑瘉鍙�
 
-    @XmlElement(name = "ZZPO_ITEM_ID")
+    @XmlElement(name = "zzpo_item_id")
     private String zzpoItemId;  // PO琛岄」鐩�
 
     /* 閫�鎹㈣揣鍏宠仈淇℃伅 */
-    @XmlElement(name = "ZZREQNR")
+    @XmlElement(name = "zzreqnr")
     private String zzreqnr;  // 灏忕背閫�鎹㈣揣鍗曞彿
 
-    @XmlElement(name = "ZZREQLN")
+    @XmlElement(name = "zzreqln")
     private String zzreqln;  // 鐢宠鍗曡椤圭洰
 
     /* 鐗╂枡淇℃伅浣撶郴 */
-    @XmlElement(name = "ZZPRODUCT_ID")
+    @XmlElement(name = "zzproduct_id")
     private String zzproductId;  // 灏忕背鐗╂枡鍙�
 
-    @XmlElement(name = "ZZVPRODUCT_ID")
+    @XmlElement(name = "zzvproduct_id")
     private String zzvproductId;  // 宸ュ巶鏂欏彿
 
-    @XmlElement(name = "ZZSKU")
+    @XmlElement(name = "zzsku")
     private String zzsku;  // SKU
 
-    @XmlElement(name = "MAKTX")
+    @XmlElement(name = "maktx")
     private String maktx;  // 鐗╂枡鎻忚堪
 
-    @XmlElement(name = "MODELNUMBER")
+    @XmlElement(name = "modelnumber")
     private String modelnumber;  // 鍨嬪彿
 
     /* 璁¢噺涓庡簱瀛樻暟鎹� */
-    @XmlElement(name = "ZZQUANTITY")
+    @XmlElement(name = "zzquantity")
     private String zzquantity;  // 璁㈠崟鏁伴噺
 
-    @XmlElement(name = "ZZUNIT")
+    @XmlElement(name = "zzunit")
     private String zzunit;  // 璁¢噺鍗曚綅
 
-    @XmlElement(name = "ZZOPEN_QTY")
+    @XmlElement(name = "zzopen_qty")
     private String zzopenQty;  // 寮�鏀炬暟閲�
 
-    @XmlElement(name = "ACT_GR_QTY")
+    @XmlElement(name = "act_gr_qty")
     private String actGrQty;  // 瀹炴敹鏁伴噺
 
-    @XmlElement(name = "SHIPMENTID_NUM")
+    @XmlElement(name = "shipmentid_num")
     private String shipmentidNum;  // Shipment鏁伴噺
 
     /* 鍝佺墝涓庝骇鍦颁俊鎭� */
-    @XmlElement(name = "BRAND")
+    @XmlElement(name = "brand")
     private String brand;  // 鍝佺墝
 
-    @XmlElement(name = "PLACE")
+    @XmlElement(name = "place")
     private String place;  // 浜у湴
 
-    @XmlElement(name = "BRAND_TYPE")
+    @XmlElement(name = "brand_type")
     private String brandType;  // 鍝佺墝绫诲瀷
 
     /* 鐗╂祦杩借釜淇℃伅 */
-    @XmlElement(name = "ZSHIPMENT_ID")
+    @XmlElement(name = "zshipment_id")
     private String zshipmentId;  // Shipment ID
 
-    @XmlElement(name = "ADDRESS_DETAIL")
+    @XmlElement(name = "address_detail")
     private String addressDetail;  // 鍦板潃璇︽儏
 
     /* 璋冩嫧绠$悊瀛楁 */
-    @XmlElement(name = "BEDNR")
+    @XmlElement(name = "bednr")
     private String bednr;  // 璋冨嚭椤圭洰鍙�
 
-    @XmlElement(name = "WARE_TYPE_FROM")
+    @XmlElement(name = "ware_type_from")
     private String wareTypeFrom;  // 璋冨嚭浠撶被鍨�
 
-    @XmlElement(name = "WARE_TYPE_TO")
+    @XmlElement(name = "ware_type_to")
     private String wareTypeTo;  // 璋冨叆浠撶被鍨�
 
-    @XmlElement(name = "XMSTO_NO")
+    @XmlElement(name = "xmsto_no")
     private String xmstoNo;  // 鐗╂帶璋冩嫧鍗曞彿
 
-    @XmlElement(name = "XMSTO_ITEM_NO")
+    @XmlElement(name = "xmsto_item_no")
     private String xmstoItemNo;  // 璋冩嫧鍗曡椤�
 
     /* 绯荤粺鎺у埗瀛楁 */
-    @XmlElement(name = "CHANGED_AT")
+    @XmlElement(name = "changed_at")
     private String changedAt;  // 淇敼鏃堕棿
 
-    @XmlElement(name = "CREATED_AT")
+    @XmlElement(name = "created_at")
     private String createdAt;  // 鍒涘缓鏃堕棿
 
     /* 鎵╁睍涓氬姟瀛楁 */
-    @XmlElement(name = "APP_MODELS")
+    @XmlElement(name = "app_models")
     private String appModels;  // 椤圭洰鏈哄瀷
 
-    @XmlElement(name = "EXT_DOC_NO")
+    @XmlElement(name = "ext_doc_no")
     private String extDocNo;  // 澶栭儴鍑瘉鍙�
 
-    @XmlElement(name = "EXT_DOC_ITEM")
+    @XmlElement(name = "ext_doc_item")
     private String extDocItem;  // 澶栭儴鍑瘉琛岄」
 
-    @XmlElement(name = "BATCH_ID")
+    @XmlElement(name = "batch_id")
     private String batchId;  // HS缂栫爜
 
-    @XmlElement(name = "BATCH_ROW")
+    @XmlElement(name = "batch_row")
     private String batchRow;  // 浼樺厛閲囪喘椤�
 
-    @XmlElement(name = "IS_IDENTIFICATION")
+    @XmlElement(name = "is_identification")
     private String isIdentification;  // 涓插彿绠$悊鏍囪瘑
 }
diff --git a/src/main/java/com/gs/xiaomi/service/SoapApiService.java b/src/main/java/com/gs/xiaomi/service/SoapApiService.java
index 453254f..549ed35 100644
--- a/src/main/java/com/gs/xiaomi/service/SoapApiService.java
+++ b/src/main/java/com/gs/xiaomi/service/SoapApiService.java
@@ -23,10 +23,15 @@
         if (response.isSuccessful() && response.body() != null) {
             String bodyStr = response.body().string();
 
-            String innerXml = extractCdata(bodyStr);
-            if (innerXml == null) throw new RuntimeException("No CDATA <document> found in response");
+            String evCode = extractEvCode(bodyStr);
+            if (!"Y".equalsIgnoreCase(evCode)) {
+                throw new RuntimeException("SOAP business failed, EV_CODE: " + evCode);
+            }
 
-            String decodedXml = decodeXmlEntities(innerXml);
+            String decodedXml = decodeXmlEntities(bodyStr);
+
+            String innerXml = extractCdata(decodedXml);
+            if (innerXml == null) throw new RuntimeException("No CDATA <document> found in response");
 
             JAXBContext context = JAXBContext.newInstance(BizDocumentResult.class);
             Unmarshaller unmarshaller = context.createUnmarshaller();
@@ -45,7 +50,7 @@
                 .method("POST", body)
 //                .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
                 .addHeader("Content-Type", "application/xml")
-                .addHeader("Authorization", "Basic UkZDWkpYSUFPQlU6cHBCOVIhSGU=")
+                .addHeader("Authorization", "Basic ")
                 .addHeader("Accept", "*/*")
                 .addHeader("Host", "mipoq.p.mi.com")
                 .addHeader("Connection", "keep-alive")
@@ -55,11 +60,11 @@
         return client.newCall(request).execute();
     }
 
-    private String extractCdata(String xml) {
-        int cdataStart = xml.indexOf("<![CDATA[");
-        int cdataEnd = xml.indexOf("]]>", cdataStart);
-        if (cdataStart == -1 || cdataEnd == -1) return null;
-        return xml.substring(cdataStart + 9, cdataEnd).trim();
+    private String extractEvCode(String xml) {
+        int start = xml.indexOf("<EV_CODE>");
+        int end = xml.indexOf("</EV_CODE>", start);
+        if (start == -1 || end == -1) return null;
+        return xml.substring(start + 9, end).trim();
     }
 
     private String decodeXmlEntities(String xml) {
@@ -69,4 +74,11 @@
                 .replace("&gt;", ">")
                 .replace("&amp;", "&");
     }
+
+    private String extractCdata(String xml) {
+        int cdataStart = xml.indexOf("<EV_RESULT>");
+        int cdataEnd = xml.indexOf("</EV_RESULT>", cdataStart);
+        if (cdataStart == -1 || cdataEnd == -1) return null;
+        return xml.substring(cdataStart + 11, cdataEnd).trim();
+    }
 }

--
Gitblit v1.9.3