From 22a8875b365c568790f6115ceb6acf0f49bb8c47 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期四, 10 四月 2025 15:43:29 +0800
Subject: [PATCH] 测试写入数据库
---
src/main/java/com/gs/xiaomi/service/impl/DeliveryMainServiceImpl.java | 31 +
src/main/java/com/gs/xiaomi/service/DeliveryMainService.java | 14
src/main/resources/mapper/DeliveryDetailMapper.xml | 7
src/main/java/com/gs/xiaomi/XiaomiApplication.java | 4
src/main/resources/mapper/DeliveryMainMapper.xml | 11
src/main/java/com/gs/xiaomi/service/PackageDetailService.java | 13
src/main/java/com/gs/xiaomi/service/impl/DeliveryDetailServiceImpl.java | 26 +
src/main/java/com/gs/xiaomi/dto/EtHeader.java | 6
src/main/java/com/gs/xiaomi/mapper/DeliveryDetailMapper.java | 18
src/main/java/com/gs/xiaomi/service/DeliveryDetailService.java | 13
src/main/java/com/gs/xiaomi/entity/LogisticsPackage.java | 171 ++++++
src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java | 144 -----
src/main/java/com/gs/xiaomi/service/impl/PackageDetailServiceImpl.java | 26 +
src/main/resources/mapper/LogisticsPackageMapper.xml | 7
src/main/java/com/gs/xiaomi/service/LogisticsPackageService.java | 13
src/main/java/com/gs/xiaomi/entity/DeliveryMain.java | 308 ++++++++++++
src/main/java/com/gs/xiaomi/service/XM104Service.java | 167 ++++++
src/main/java/com/gs/xiaomi/entity/DeliveryDetail.java | 196 +++++++
src/main/java/com/gs/xiaomi/mapper/DeliveryMainMapper.java | 19
src/main/java/com/gs/xiaomi/service/impl/LogisticsPackageServiceImpl.java | 26 +
src/main/java/com/gs/xiaomi/entity/PackageDetail.java | 171 ++++++
src/main/java/com/gs/xiaomi/mapper/PackageDetailMapper.java | 18
src/main/java/com/gs/xiaomi/service/SoapApiService.java | 13
src/main/resources/mapper/PackageDetailMapper.xml | 7
src/main/java/com/gs/xiaomi/mapper/LogisticsPackageMapper.java | 18
src/main/resources/application.yml | 10
26 files changed, 1,304 insertions(+), 153 deletions(-)
diff --git a/src/main/java/com/gs/xiaomi/XiaomiApplication.java b/src/main/java/com/gs/xiaomi/XiaomiApplication.java
index 4043c9c..c5a8a8c 100644
--- a/src/main/java/com/gs/xiaomi/XiaomiApplication.java
+++ b/src/main/java/com/gs/xiaomi/XiaomiApplication.java
@@ -1,9 +1,13 @@
package com.gs.xiaomi;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
+@MapperScan(value = " com.gs.xiaomi.mapper")
+@EnableScheduling
public class XiaomiApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/gs/xiaomi/dto/EtHeader.java b/src/main/java/com/gs/xiaomi/dto/EtHeader.java
index 60dbaf1..74675c6 100644
--- a/src/main/java/com/gs/xiaomi/dto/EtHeader.java
+++ b/src/main/java/com/gs/xiaomi/dto/EtHeader.java
@@ -199,13 +199,13 @@
/* 闄勪欢淇℃伅鍧� */
@XmlElementWrapper(name = "items")
@XmlElement(name = "item")
- private List<Item> items;// 琛岄」鐩槑缁�
+ private List<Item> items;// 琛岄」鐩槑缁� 瀵瑰簲琛―ELIVERY_DETAIL
@XmlElementWrapper(name = "box_items")
@XmlElement(name = "boxItems")
- private List<BoxItem> boxItems; // 绠卞崟鏄庣粏
+ private List<BoxItem> boxItems; // 绠卞崟鏄庣粏 瀵瑰簲琛≒ACKAGE_DETAIL
@XmlElementWrapper(name = "box_sums")
@XmlElement(name = "boxSum")
- private List<BoxSum> boxSums; // 绠辨暟姹囨��
+ private List<BoxSum> boxSums; // 绠辨暟姹囨�� 瀵瑰簲琛↙OGISTICS_PACKAGE
}
diff --git a/src/main/java/com/gs/xiaomi/entity/DeliveryDetail.java b/src/main/java/com/gs/xiaomi/entity/DeliveryDetail.java
new file mode 100644
index 0000000..e98dd06
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/entity/DeliveryDetail.java
@@ -0,0 +1,196 @@
+package com.gs.xiaomi.entity;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @TableName DELIVERY_DETAIL
+ */
+@TableName(value = "DELIVERY_DETAIL")
+@Data
+@KeySequence(value = "SEQ_DELIVERY_DETAIL", dbType = DbType.ORACLE)
+public class DeliveryDetail {
+ /**
+ * SEQ_DELIVERY_DETAIL
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * DELIVERY_MAIN鐨刬d
+ */
+ private Long pid;
+
+ /**
+ * 閫佽揣鍗曞彿锛堜富涓氬姟鏍囪瘑锛�
+ */
+ private String zzasn;
+
+ /**
+ * 閫佽揣鍗曡鍙�
+ */
+ private String zzitemId;
+
+ /**
+ * 閲囪喘鍑瘉鍙凤紙PO鍗曞彿锛�
+ */
+ private String zzpoNo;
+
+ /**
+ * 閲囪喘璁㈠崟琛岄」鐩�
+ */
+ private String zzpoItemId;
+
+ /**
+ * 灏忕背閫�鎹㈣揣鍗曞彿
+ */
+ private String zzreqnr;
+
+ /**
+ * 閫�鎹㈣揣鐢宠鍗曡鍙�
+ */
+ private String zzreqln;
+
+ /**
+ * 灏忕背鍐呴儴鐗╂枡缂栫爜
+ */
+ private String zzproductId;
+
+ /**
+ * 宸ュ巶瀹為檯浣跨敤鏂欏彿
+ */
+ private String zzvproductId;
+
+ /**
+ * 搴撳瓨鍗曚綅缂栫爜
+ */
+ private String zzsku;
+
+ /**
+ * 鐗╂枡鎻忚堪锛堝锛氭墜鏈哄睆骞曠粍浠讹級
+ */
+ private String maktx;
+
+ /**
+ * 浜у搧鍨嬪彿锛堢ず渚嬶細Xiaomi 14 Ultra锛�
+ */
+ private String modelnumber;
+
+ /**
+ * 璁㈠崟闇�姹傛暟閲�
+ */
+ private String zzquantity;
+
+ /**
+ * 璁¢噺鍗曚綅锛堝锛氫釜/绠憋級
+ */
+ private String zzunit;
+
+ /**
+ * 鏈畬鎴愭暟閲忥紙寰呰ˉ璐ч噺锛�
+ */
+ private String zzopenQty;
+
+ /**
+ * 瀹為檯鏀惰揣鏁伴噺
+ */
+ private String actGrQty;
+
+ /**
+ * Shipment鎵规鏁伴噺
+ */
+ private String shipmentidNum;
+
+ /**
+ * 鍝佺墝鍚嶇О锛堝锛歑iaomi锛�
+ */
+ private String brand;
+
+ /**
+ * 鐢熶骇鍦帮紙绀轰緥锛氫腑鍥芥繁鍦筹級
+ */
+ private String place;
+
+ /**
+ * 鍝佺墝绫诲瀷锛堣嚜鏈�/ODM/OEM锛�
+ */
+ private String brandType;
+
+ /**
+ * 鐗╂祦鎵规鍞竴鏍囪瘑
+ */
+ private String zshipmentId;
+
+ /**
+ * 璇︾粏閰嶉�佸湴鍧�锛堢渷甯傚尯琛楅亾闂ㄧ墝鍙凤級
+ */
+ private String addressDetail;
+
+ /**
+ * 璋冨嚭椤圭洰鍙凤紙璋冩嫧鏉ユ簮鏍囪瘑锛�
+ */
+ private String bednr;
+
+ /**
+ * 璋冨嚭浠撶被鍨嬶紙鎴愬搧浠�/鍘熸枡浠擄級
+ */
+ private String wareTypeFrom;
+
+ /**
+ * 璋冨叆浠撶被鍨�
+ */
+ private String wareTypeTo;
+
+ /**
+ * 鐗╂帶璋冩嫧鍗曞彿
+ */
+ private String xmstoNo;
+
+ /**
+ * 璋冩嫧鍗曡椤�
+ */
+ private String xmstoItemNo;
+
+ /**
+ * 鏈�鍚庝慨鏀规椂闂达紙鏍煎紡锛歽yyyMMddHHmmss锛�
+ */
+ private String changedAt;
+
+ /**
+ * 鏁版嵁鍒涘缓鏃堕棿锛堟牸寮忥細yyyyMMddHHmmss锛�
+ */
+ private String createdAt;
+
+ /**
+ * 鍏宠仈椤圭洰鏈哄瀷锛堝鍊奸�楀彿鍒嗛殧锛�
+ */
+ private String appModels;
+
+ /**
+ * 澶栭儴绯荤粺鍑瘉鍙凤紙濡侲RP鍗曞彿锛�
+ */
+ private String extDocNo;
+
+ /**
+ * 澶栭儴鍑瘉琛岄」鐩�
+ */
+ private String extDocItem;
+
+ /**
+ * 娴峰叧HS缂栫爜锛堣繘鍑哄彛鎶ュ叧鐢級
+ */
+ private String batchId;
+
+ /**
+ * 浼樺厛閲囪喘鏍囪瘑锛堢揣鎬ュ鏂欐爣璁帮級
+ */
+ private String batchRow;
+
+ /**
+ * 涓插彿绠$悊鏍囪瘑锛圷/N锛屾帶鍒跺簭鍒楀彿閲囬泦锛�
+ */
+ private String isIdentification;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xiaomi/entity/DeliveryMain.java b/src/main/java/com/gs/xiaomi/entity/DeliveryMain.java
new file mode 100644
index 0000000..e09aabb
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/entity/DeliveryMain.java
@@ -0,0 +1,308 @@
+package com.gs.xiaomi.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @TableName DELIVERY_MAIN
+ */
+@TableName(value = "DELIVERY_MAIN")
+@Data
+public class DeliveryMain {
+ /**
+ * SEQ_DELIVERY_MAIN
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * 閫佽揣鍗曞彿
+ */
+ private String zzasn;
+
+ /**
+ * 鍗曟嵁绫诲瀷(鏅��/绱ф��)
+ */
+ private String zzasnType;
+
+ /**
+ * 鏀惰揣绫诲瀷(鏍囧噯/閫�璐�)
+ */
+ private String migoType;
+
+ /**
+ * 椤圭洰璋冩嫧缂栧彿
+ */
+ private String zrproject;
+
+ /**
+ * 閲囪喘缁勭粐缂栫爜
+ */
+ private String ekorg;
+
+ /**
+ * 閲囪喘缁勭粐鎻忚堪
+ */
+ private String ekotx;
+
+ /**
+ * 璋冨嚭搴撳瓨缁勭粐缂栫爜
+ */
+ private String stockOrgFrom;
+
+ /**
+ * 璋冨嚭搴撳瓨鎻忚堪
+ */
+ private String stockOrgFromDesc;
+
+ /**
+ * 璋冨叆搴撳瓨缁勭粐缂栫爜
+ */
+ private String stockOrgTo;
+
+ /**
+ * 璋冨叆搴撳瓨鎻忚堪
+ */
+ private String stockOrgToDesc;
+
+ /**
+ * 渚涘簲鍟嗙紪鐮�(绀轰緥鍊�:130479)
+ */
+ private String lifnr;
+
+ /**
+ * 渚涘簲鍟嗗叏绉�
+ */
+ private String vendorName;
+
+ /**
+ * 渚涘簲鍟嗙畝绉�
+ */
+ private String shortName;
+
+ /**
+ * HUB渚涘簲鍟嗙紪鐮�
+ */
+ private String hubLifnr;
+
+ /**
+ * 鎵胯繍鍟嗗悕绉�
+ */
+ private String zzcarrier;
+
+ /**
+ * 鎵胯繍鍗曞彿
+ */
+ private String zzcarrierNo;
+
+ /**
+ * 杩愯緭鍗曟嵁鍙�
+ */
+ private String roadTransportNo;
+
+ /**
+ * 杩愯緭杞﹀瀷
+ */
+ private String zztransModel;
+
+ /**
+ * 杞︾墝鍙�
+ */
+ private String zzlicenseNumb;
+
+ /**
+ * 閾呭皝鍙�
+ */
+ private String zzsealNo;
+
+ /**
+ * 鐗╂祦鍗曞彿
+ */
+ private String logisticsNo;
+
+ /**
+ * 鐗╂祦鍏徃缂栫爜
+ */
+ private String logisticsCompany;
+
+ /**
+ * 鐗╂祦鍏徃鍏ㄧО
+ */
+ private String logisticsCompanyName;
+
+ /**
+ * 鍙戣揣浜哄鍚�
+ */
+ private String zzshipName;
+
+ /**
+ * 鍙戣揣浜虹數璇�
+ */
+ private String zzshipPhon;
+
+ /**
+ * 鍙告満濮撳悕
+ */
+ private String zzdriverName;
+
+ /**
+ * 鍙告満鐢佃瘽
+ */
+ private String zzdriverPhon;
+
+ /**
+ * 鎵嬫満灏惧彿
+ */
+ private String last4PhoneNumber;
+
+ /**
+ * 鏀惰揣浜�
+ */
+ private String receiver;
+
+ /**
+ * 鏀惰揣鐢佃瘽
+ */
+ private String receivePhone;
+
+ /**
+ * 鏈�缁堟敹璐т汉
+ */
+ private String finalContact;
+
+ /**
+ * 鏈�缁堣仈绯荤數璇�
+ */
+ private String finalPhone;
+
+ /**
+ * 鍙戣揣鍦板潃
+ */
+ private String zzshipAddr;
+
+ /**
+ * 鏍囧噯鏀惰揣鍦板潃
+ */
+ private String zzreceiveAddr;
+
+ /**
+ * 瀹為檯鏀惰揣鍦板潃
+ */
+ private String receiveAddr;
+
+ /**
+ * 鏈�缁堥厤閫佸湴鍧�
+ */
+ private String finalAddr;
+
+ /**
+ * 鏈�缁堟敹璐у崟浣�
+ */
+ private String finalCompany;
+
+ /**
+ * 鍙戣揣鏃ユ湡(yyyyMMdd)
+ */
+ private String zzshipDate;
+
+ /**
+ * 棰勮鍒拌揣鏃ユ湡(yyyyMMdd)
+ */
+ private String zzarriveTime;
+
+ /**
+ * 棰勮鍒拌揣鏃堕棿(HHmm)
+ */
+ private String zzarriveTime1;
+
+ /**
+ * 棰勭害鏃ユ湡(yyyyMMdd)
+ */
+ private String reserveDate;
+
+ /**
+ * 棰勭害鏃堕棿娈�
+ */
+ private String reserveTime;
+
+ /**
+ * 浠撳簱鍞竴鏍囪瘑
+ */
+ private String zzwarehouseId;
+
+ /**
+ * 鏀惰揣浠撳簱ID
+ */
+ private String receiveWarehouseId;
+
+ /**
+ * 浠撳簱绠�绉�
+ */
+ private String receiveWarehouseShort;
+
+ /**
+ * 鍏徃浠g爜
+ */
+ private String bukrs;
+
+ /**
+ * 鍗曟嵁鐘舵��(鏂板缓/宸插彂璐�/宸插畬鎴�)
+ */
+ private String status;
+
+ /**
+ * 鏉$爜鐘舵��(宸蹭笂浼�/鏈笂浼�)
+ */
+ private String statusSn;
+
+ /**
+ * 浣滃簾鏍囪瘑(Y/N)
+ */
+ private String zzcanceled;
+
+ /**
+ * 浠锋牸瀹℃牳鐘舵��
+ */
+ private String priceStat;
+
+ /**
+ * 浠撳簱浣滀笟鎸囧绫诲瀷
+ */
+ private String purchaseMode;
+
+ /**
+ * 閲囪喘妯″紡(VMI/JIT)
+ */
+ private String purchaseMode2;
+
+ /**
+ * 浜ゆ枡妯″紡(鑷彁/閰嶉��)
+ */
+ private String businessModel;
+
+ /**
+ * 鍗曟嵁鎻忚堪
+ */
+ private String asnDesc;
+
+ /**
+ * 杩涘彛鎶ュ叧鏍囪瘑(Y/N)
+ */
+ private String imclr;
+
+ /**
+ * 澶栭儴宸ュ巶浠g爜
+ */
+ private String lifnrDg;
+
+ /**
+ * 鐢熶骇绫诲瀷(鑷埗/澶栬喘)
+ */
+ private String productType;
+
+ /**
+ * 椹鹃┒璇佸彿
+ */
+ private String zzdriverLicense;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xiaomi/entity/LogisticsPackage.java b/src/main/java/com/gs/xiaomi/entity/LogisticsPackage.java
new file mode 100644
index 0000000..d6e8217
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/entity/LogisticsPackage.java
@@ -0,0 +1,171 @@
+package com.gs.xiaomi.entity;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @TableName LOGISTICS_PACKAGE
+ */
+@TableName(value = "LOGISTICS_PACKAGE")
+@Data
+@KeySequence(value = "LOGISTICS_PACKAGE_SEQ", dbType = DbType.ORACLE)
+public class LogisticsPackage {
+ /**
+ * LOGISTICS_PACKAGE_SEQ
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * DELIVERY_MAIN鐨刬d
+ */
+ private Long pid;
+
+ /**
+ * 绠卞崟娴佹按鍙�
+ */
+ private String boxSeq;
+
+ /**
+ * 鐗╃悊鍖呰鏍囪瘑
+ */
+ private String boxNo;
+
+ /**
+ * 灏忕背涓撶敤鍔犲瘑绠卞彿锛圓ES-256鍔犲瘑瀛樺偍锛�
+ */
+ private String cartonid;
+
+ /**
+ * 鍏ㄧ悆缁熶竴閫佽揣鍗曞彿锛堝叧鑱旂墿娴佺郴缁燂級
+ */
+ private String zzasn;
+
+ /**
+ * SAP鏍囧噯鐗╂枡缂栫爜
+ */
+ private String matnr;
+
+ /**
+ * 澶氳瑷�鐗╂枡鎻忚堪
+ */
+ private String maktx;
+
+ /**
+ * 瀹為檯鍙戣揣浠舵暟锛堟渶灏忛攢鍞崟浣嶇粺璁★級
+ */
+ private String pcQty;
+
+ /**
+ * 鐗╂祦鎵樼洏缂栧彿
+ */
+ private String lotNo;
+
+ /**
+ * 鍗曚欢鍑�閲�
+ */
+ private String ntgewP;
+
+ /**
+ * 鍗曠姣涢噸
+ */
+ private String brgewP;
+
+ /**
+ * 鎵樼洏瑁呰浇瑙勬牸
+ */
+ private String lotSize;
+
+ /**
+ * 鏍囧噯绠变綋灏哄
+ */
+ private String boxSize;
+
+ /**
+ * 鍚墭鐩樻�讳綋绉�
+ */
+ private String totalVlume;
+
+ /**
+ * 鎵樼洏闀垮害
+ */
+ private String lM;
+
+ /**
+ * 鎵樼洏瀹藉害
+ */
+ private String wM;
+
+ /**
+ * 鎵樼洏鍫嗛珮锛堝畨鍏ㄩ檺楂橈紝闃插�惧�掓帶鍒讹級
+ */
+ private String hM;
+
+ /**
+ * 閲囪喘璁㈠崟鍙凤紙鍏宠仈SAP閲囪喘鍑瘉锛�
+ */
+ private String ebeln;
+
+ /**
+ * 閲囪喘璁㈠崟琛屽彿锛堢簿纭埌鐗╂枡灞傜骇锛�
+ */
+ private String ebelp;
+
+ /**
+ * 鍗曠瀹归噺瑙勬牸锛堥槻瓒呰鏍¢獙锛�
+ */
+ private String boxSpec;
+
+ /**
+ * 鎬诲寘瑁呯鏁帮紙涓庨噰璐鍗曞尮閰嶆牎楠岋級
+ */
+ private String boxQty;
+
+ /**
+ * 鎬诲噣閲嶏紙鍏紡锛歯tgew_p 脳 pc_qty锛�
+ */
+ private String ntgew;
+
+ /**
+ * 鎬绘瘺閲嶏紙鍏紡锛歜rgew_p 脳 box_qty锛�
+ */
+ private String brgew;
+
+ /**
+ * 鍥介檯璁¢噺鍗曚綅锛圲N/CEFACT鏍囧噯锛�
+ */
+ private String meins;
+
+ /**
+ * 鍝佺墝璁よ瘉鏍囪瘑锛堥渶娴峰叧澶囨锛�
+ */
+ private String brand;
+
+ /**
+ * 鍘熶骇鍦扮紪鐮侊紙鑱斿悎鍥経N/LOCODE鏍囧噯锛�
+ */
+ private String place;
+
+ /**
+ * 鎶ュ叧鏍囪瘑锛堟帶鍒舵姤鍏虫祦绋嬭Е鍙戯級
+ */
+ private String imclr;
+
+ /**
+ * 鍥介檯鍨嬪彿缂栫爜锛堝叏鐞冨競鍦哄敮涓�鏍囪瘑锛�
+ */
+ private String modelnumber;
+
+ /**
+ * 娴峰叧鐩戠鏉′欢锛堝3C/鑳芥晥鏍囪瘑锛�
+ */
+ private String matnrJg;
+
+ /**
+ * 妫�楠屾鐤唬鐮侊紙濡侳DA/CE璁よ瘉锛�
+ */
+ private String matnrJyjy;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xiaomi/entity/PackageDetail.java b/src/main/java/com/gs/xiaomi/entity/PackageDetail.java
new file mode 100644
index 0000000..b8b9ae7
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/entity/PackageDetail.java
@@ -0,0 +1,171 @@
+package com.gs.xiaomi.entity;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @TableName PACKAGE_DETAIL
+ */
+@TableName(value = "PACKAGE_DETAIL")
+@Data
+@KeySequence(value = "PACKAGE_DETAIL_SEQ", dbType = DbType.ORACLE)
+public class PackageDetail {
+ /**
+ * PACKAGE_DETAIL_SEQ
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * DELIVERY_MAIN鐨刬d
+ */
+ private Long pid;
+
+ /**
+ * 绠卞崟娴佹按鍙凤紙鎸夊勾鏈堟棩+搴忓垪鐢熸垚锛�
+ */
+ private String boxSeq;
+
+ /**
+ * 鍖呰绠卞敮涓�鏍囪瘑锛堣鍒欙細椤圭洰+鏃ユ湡+娴佹按锛�
+ */
+ private String boxNo;
+
+ /**
+ * 灏忕背涓撶敤鍔犲瘑绠卞彿锛圫HA-256绠楁硶鍔犲瘑锛�
+ */
+ private String cartonid;
+
+ /**
+ * 鍏ㄧ悆缁熶竴閫佽揣鍗曞彿锛堜富涓氬姟鏍囪瘑锛�
+ */
+ private String zzasn;
+
+ /**
+ * 鍥介檯鐗╂枡缂栫爜锛堝叏鐞冨敮涓�鎬т繚闅滐級
+ */
+ private String matnr;
+
+ /**
+ * 澶氳瑷�鐗╂枡鎻忚堪锛堟敮鎸佷腑/鑻�/瑗胯锛�
+ */
+ private String maktx;
+
+ /**
+ * 瀹為檯鍙戣揣浠舵暟锛堟寜鏈�灏忛攢鍞崟浣嶇粺璁★級
+ */
+ private String pcQty;
+
+ /**
+ * 鎵樼洏鍞竴缂栧彿锛堜笌鐗╂祦绯荤粺鑱斿姩锛�
+ */
+ private String lotNo;
+
+ /**
+ * 鍗曚欢鍑�閲嶏紙绮剧‘鍒板厠锛岀敤浜庢姤鍏筹級
+ */
+ private String ntgewP;
+
+ /**
+ * 鍗曠姣涢噸锛堝惈鍖呰鏉愭枡閲嶉噺锛�
+ */
+ private String brgewP;
+
+ /**
+ * 鎵樼洏瑁呰浇瑙勬牸锛堟渶澶ф壙杞界鏁帮級
+ */
+ private String lotSize;
+
+ /**
+ * 鏍囧噯鍖栫浣撳昂瀵革紙闀縳瀹絰楂橈級
+ */
+ private String boxSize;
+
+ /**
+ * 鍚墭鐩樻�讳綋绉紙鐢ㄤ簬杩愯緭鎴愭湰璁$畻锛�
+ */
+ private String totalVlume;
+
+ /**
+ * 鎬荤鏁帮紙涓庨噰璐鍗曟牎楠岋級
+ */
+ private String boxQty;
+
+ /**
+ * 閲囪喘璁㈠崟鍙凤紙鍏宠仈ERP绯荤粺锛�
+ */
+ private String ebeln;
+
+ /**
+ * 閲囪喘璁㈠崟琛屽彿锛堢簿纭埌鐗╂枡灞傜骇锛�
+ */
+ private String ebelp;
+
+ /**
+ * 鍗曠瀹归噺锛堜欢/绠憋紝闃茶秴瑁呮帶鍒讹級
+ */
+ private String boxSpec;
+
+ /**
+ * 鎬诲噣閲嶏紙鑷姩璁$畻锛氬崟浠跺噣閲嵜楁�讳欢鏁帮級
+ */
+ private String ntgew;
+
+ /**
+ * 鎬绘瘺閲嶏紙鍚墭鐩樺拰鍖呰鏉愭枡锛�
+ */
+ private String brgew;
+
+ /**
+ * 鍥介檯璁¢噺鍗曚綅锛圲N/CEFACT鏍囧噯锛�
+ */
+ private String meins;
+
+ /**
+ * 鎵樼洏闀垮害锛堢鍚圛SO 6780鏍囧噯锛�
+ */
+ private String lM;
+
+ /**
+ * 鎵樼洏瀹藉害锛堟娲叉爣鍑嗭細1.0m锛�
+ */
+ private String wM;
+
+ /**
+ * 鎵樼洏鍫嗛珮锛堝畨鍏ㄩ檺楂樻爣璇嗭級
+ */
+ private String hM;
+
+ /**
+ * 鍝佺墝璁よ瘉鏍囪瘑锛堥渶娴峰叧澶囨锛�
+ */
+ private String brand;
+
+ /**
+ * 鍘熶骇鍦扮紪鐮侊紙鑱斿悎鍥経N/LOCODE锛�
+ */
+ private String place;
+
+ /**
+ * 娴峰叧鎶ュ叧鏍囪瘑锛圷-闇�鎶ュ叧/N-鍏嶆姤鍏筹級
+ */
+ private String imclr;
+
+ /**
+ * 鍥介檯鍨嬪彿缂栫爜锛堝叏鐞冨競鍦哄敮涓�锛�
+ */
+ private String modelnumber;
+
+ /**
+ * 娴峰叧鐩戠鏉′欢锛堝3C/鑳芥晥鏍囪瘑锛�
+ */
+ private String matnrJg;
+
+ /**
+ * 妫�楠屾鐤唬鐮侊紙濡侳DA/CE璁よ瘉锛�
+ */
+ private String matnrJyjy;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xiaomi/mapper/DeliveryDetailMapper.java b/src/main/java/com/gs/xiaomi/mapper/DeliveryDetailMapper.java
new file mode 100644
index 0000000..28e1f07
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/mapper/DeliveryDetailMapper.java
@@ -0,0 +1,18 @@
+package com.gs.xiaomi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xiaomi.entity.DeliveryDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_DETAIL銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-04-10 14:16:44
+ * @Entity generator.domain.DeliveryDetail
+ */
+public interface DeliveryDetailMapper extends BaseMapper<DeliveryDetail> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/mapper/DeliveryMainMapper.java b/src/main/java/com/gs/xiaomi/mapper/DeliveryMainMapper.java
new file mode 100644
index 0000000..8079827
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/mapper/DeliveryMainMapper.java
@@ -0,0 +1,19 @@
+package com.gs.xiaomi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xiaomi.entity.DeliveryMain;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_MAIN銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-04-10 14:16:52
+ * @Entity generator.domain.DeliveryMain
+ */
+public interface DeliveryMainMapper extends BaseMapper<DeliveryMain> {
+
+ long getNextVal();
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/mapper/LogisticsPackageMapper.java b/src/main/java/com/gs/xiaomi/mapper/LogisticsPackageMapper.java
new file mode 100644
index 0000000..ede5ecd
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/mapper/LogisticsPackageMapper.java
@@ -0,0 +1,18 @@
+package com.gs.xiaomi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xiaomi.entity.LogisticsPackage;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怢OGISTICS_PACKAGE銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-04-10 14:17:13
+ * @Entity generator.domain.LogisticsPackage
+ */
+public interface LogisticsPackageMapper extends BaseMapper<LogisticsPackage> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/mapper/PackageDetailMapper.java b/src/main/java/com/gs/xiaomi/mapper/PackageDetailMapper.java
new file mode 100644
index 0000000..e506089
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/mapper/PackageDetailMapper.java
@@ -0,0 +1,18 @@
+package com.gs.xiaomi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.xiaomi.entity.PackageDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怭ACKAGE_DETAIL銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2025-04-10 14:17:48
+ * @Entity generator.domain.PackageDetail
+ */
+public interface PackageDetailMapper extends BaseMapper<PackageDetail> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/service/DeliveryDetailService.java b/src/main/java/com/gs/xiaomi/service/DeliveryDetailService.java
new file mode 100644
index 0000000..a9f8b42
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/DeliveryDetailService.java
@@ -0,0 +1,13 @@
+package com.gs.xiaomi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xiaomi.entity.DeliveryDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_DETAIL銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-04-10 14:16:44
+ */
+public interface DeliveryDetailService extends IService<DeliveryDetail> {
+
+}
diff --git a/src/main/java/com/gs/xiaomi/service/DeliveryMainService.java b/src/main/java/com/gs/xiaomi/service/DeliveryMainService.java
new file mode 100644
index 0000000..ca8c008
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/DeliveryMainService.java
@@ -0,0 +1,14 @@
+package com.gs.xiaomi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xiaomi.entity.DeliveryMain;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_MAIN銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-04-10 14:16:52
+ */
+public interface DeliveryMainService extends IService<DeliveryMain> {
+
+ long getId();
+}
diff --git a/src/main/java/com/gs/xiaomi/service/LogisticsPackageService.java b/src/main/java/com/gs/xiaomi/service/LogisticsPackageService.java
new file mode 100644
index 0000000..d33a147
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/LogisticsPackageService.java
@@ -0,0 +1,13 @@
+package com.gs.xiaomi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xiaomi.entity.LogisticsPackage;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怢OGISTICS_PACKAGE銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-04-10 14:17:13
+ */
+public interface LogisticsPackageService extends IService<LogisticsPackage> {
+
+}
diff --git a/src/main/java/com/gs/xiaomi/service/PackageDetailService.java b/src/main/java/com/gs/xiaomi/service/PackageDetailService.java
new file mode 100644
index 0000000..7f883fd
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/PackageDetailService.java
@@ -0,0 +1,13 @@
+package com.gs.xiaomi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.xiaomi.entity.PackageDetail;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怭ACKAGE_DETAIL銆戠殑鏁版嵁搴撴搷浣淪ervice
+ * @createDate 2025-04-10 14:17:48
+ */
+public interface PackageDetailService extends IService<PackageDetail> {
+
+}
diff --git a/src/main/java/com/gs/xiaomi/service/SoapApiService.java b/src/main/java/com/gs/xiaomi/service/SoapApiService.java
index 696917a..e563848 100644
--- a/src/main/java/com/gs/xiaomi/service/SoapApiService.java
+++ b/src/main/java/com/gs/xiaomi/service/SoapApiService.java
@@ -12,11 +12,19 @@
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
+import java.util.concurrent.TimeUnit;
@Service
public class SoapApiService {
- private static final OkHttpClient client = new OkHttpClient.Builder().build();
+
+ private final OkHttpClient client;
+
+ public SoapApiService() {
+ this.client = new OkHttpClient.Builder().connectTimeout(3000, TimeUnit.SECONDS) // Set connection timeout
+ .readTimeout(90, TimeUnit.SECONDS) // Set read timeout
+ .build();
+ }
public BizDocumentResult callAndParse(String url, ZfmWsApiRequest request) throws Exception {
String soapXml = SoapXmlBuilder.build(request);
@@ -53,13 +61,10 @@
Request request = new Request.Builder()
.url(url)
.method("POST", body)
-// .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
.addHeader("Content-Type", "application/xml")
.addHeader("Authorization", "Basic " + auth)
.addHeader("Accept", "*/*")
-// .addHeader("Host", "mipoq.p.mi.com")
.addHeader("Connection", "keep-alive")
-// .addHeader("Cookie", "saplb_*=(J2EE4281420)4281450; MYSAPSSO2=AjExMDAgABJwb3J0YWw6UkZDWkpYSUFPQlWIAAdkZWZhdWx0AQALUkZDWkpYSUFPQlUCAAMwMDADAANQT1EEAAwyMDI1MDQwOTAwMTcFAAQAAAAICgALUkZDWkpYSUFPQlX%2FAQUwggEBBgkqhkiG9w0BBwKggfMwgfACAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGB0DCBzQIBATAiMB0xDDAKBgNVBAMTA1BPUTENMAsGA1UECxMESjJFRQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjUwNDA5MDAxNzU2WjAjBgkqhkiG9w0BCQQxFgQUvvJ1HSnOLckboGYaMR9Wiaem6z4wCQYHKoZIzjgEAwQvMC0CFQDKLPrpUC19VM2gcslWaHAnh7dfxQIUNs2dTxwGcKdNU%2FdAQPs4f08yaw4%3D; JSESSIONID=_6bPldDq9mFJPXEd11bc-GvrWMAVlgFqVEEA_SAPF-GrpRbcuqxMK_gShBYGdmdp; JSESSIONMARKID=QPmRVwktCDxMazp0fUbEMC40LWvmuqOMUbIGpUQQA")
.build();
return client.newCall(request).execute();
diff --git a/src/main/java/com/gs/xiaomi/service/XM104Service.java b/src/main/java/com/gs/xiaomi/service/XM104Service.java
new file mode 100644
index 0000000..6c15296
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/XM104Service.java
@@ -0,0 +1,167 @@
+package com.gs.xiaomi.service;
+
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
+import com.gs.xiaomi.config.DataAcquisitionConfiguration;
+import com.gs.xiaomi.dto.*;
+import com.gs.xiaomi.entity.DeliveryDetail;
+import com.gs.xiaomi.entity.DeliveryMain;
+import com.gs.xiaomi.entity.LogisticsPackage;
+import com.gs.xiaomi.entity.PackageDetail;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class XM104Service {
+
+ private static final Logger log = LoggerFactory.getLogger(XM104Service.class);
+ private final SoapApiService soapApiService;
+
+ private final DeliveryMainService deliveryMainService;
+
+ private final PackageDetailService packageDetailService;
+
+ private final DeliveryDetailService deliveryDetailService;
+
+ private final LogisticsPackageService logisticsPackageService;
+
+ public void getDb() {
+
+ String format = DateUtil.format(new Date(), "yyyy-MM-dd");
+
+ ZfmWsApiRequest req = new ZfmWsApiRequest();
+ req.setIvCode(DataAcquisitionConfiguration.IV_CODEXM104);
+ req.setIvEvent("");
+ req.setIvFlag("");
+ BizDocument doc = new BizDocument();
+ doc.setBizDate(format);
+ doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
+ req.setIvInfo(doc);
+ req.setIvPass(DataAcquisitionConfiguration.getIvPass(DataAcquisitionConfiguration.IV_CODEXM104));
+ req.setIvUser(DataAcquisitionConfiguration.IV_USER);
+
+ try {
+ BizDocumentResult deliveryNo = getDeliveryNo(req);
+
+ if (CollUtil.isNotEmpty(deliveryNo.getEtHeaders())) {
+ log.info("銆怋izDocumentResult銆戣繑鍥炲垪琛ㄤ负绌猴紝璺宠繃澶勭悊");
+ log.info("鑾峰彇鎺ュ彛鍒楄〃杩斿洖: {}", deliveryNo.getEvMessage());
+ return;
+ }
+
+ //鑾峰彇鎵�鏈夌殑ASN鍙�
+ List<EtHeader> etHeaders = deliveryNo.getEtHeaders();
+
+ etHeaders.forEach(etHeader -> {
+
+ log.info("1.鑾峰彇鍒伴�佽揣鍗曞彿: {}", etHeader.getZzasn());
+
+ //鏍规嵁姣忚ASN鍙疯幏鍙栬缁嗙殑鏄庣粏
+ doc.setZzasn(etHeader.getZzasn());
+ req.setIvInfo(doc);
+
+ try {
+ BizDocumentResult result = getDeliveryNo(req);
+
+ if (result == null) {
+ log.info("銆怋izDocumentResult銆戣幏鍙栭�佽揣鍗曡鎯呬俊鎭负绌猴紝璺宠繃澶勭悊");
+ return;
+ }
+
+ log.info("2.鍐欏叆鏁版嵁搴�: {}", etHeader.getZzasn());
+
+ //鍐欏叆鍒版暟鎹簱涓�
+ setDeliveryMain(result);
+
+ } catch (Exception e) {
+ log.error("銆愬啓鍏ユ暟鎹簱寮傚父銆戦�佽揣鍗�: {}, 寮傚父: {}", etHeader.getZzasn(), e.getMessage(), e);
+ throw new RuntimeException(e);
+ }
+
+ });
+
+ } catch (Exception e) {
+ log.error("銆愯鍙栧垪琛ㄥ紓甯搞�戝弬鏁�: {} 寮傚父: {}", JSON.toJSONString(req), e.getMessage(), e);
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ private BizDocumentResult getDeliveryNo(ZfmWsApiRequest request) throws Exception {
+
+ BizDocumentResult bizDocumentResult = soapApiService.callAndParse(DataAcquisitionConfiguration.XM104_URL, request);
+
+ return bizDocumentResult;
+ }
+
+ private void setDeliveryMain(BizDocumentResult result) {
+ List<EtHeader> etHeaders = result.getEtHeaders();
+
+ etHeaders.forEach(etHeader -> {
+ DeliveryMain deliveryMain = new DeliveryMain();
+
+ BeanUtil.copyProperties(etHeader, deliveryMain);
+
+ long id = deliveryMainService.getId();
+ deliveryMain.setId(id);
+
+ deliveryMainService.save(deliveryMain);
+
+ List<Item> items = etHeader.getItems();
+ if (CollUtil.isNotEmpty(items)) {
+
+ List<DeliveryDetail> deliveryDetails = new ArrayList<>();
+ for (Item item : items) {
+ DeliveryDetail deliveryDetail = new DeliveryDetail();
+ BeanUtil.copyProperties(item, deliveryDetail);
+ deliveryDetail.setPid(deliveryMain.getId());
+ deliveryDetails.add(deliveryDetail);
+ }
+
+ deliveryDetailService.saveBatch(deliveryDetails);
+
+ }
+
+ List<BoxItem> boxItems = etHeader.getBoxItems();
+ if (CollUtil.isNotEmpty(boxItems)) {
+ List<PackageDetail> list = new ArrayList<>();
+ for (BoxItem boxItem : boxItems) {
+ PackageDetail packageDetail = new PackageDetail();
+ BeanUtil.copyProperties(boxItem, packageDetail);
+ packageDetail.setPid(deliveryMain.getId());
+ list.add(packageDetail);
+ }
+
+ packageDetailService.saveBatch(list);
+
+ }
+
+ List<BoxSum> boxSums = etHeader.getBoxSums();
+ if (CollUtil.isNotEmpty(boxSums)) {
+ List<LogisticsPackage> list = new ArrayList<>();
+ for (BoxSum boxSum : boxSums) {
+ LogisticsPackage logisticsPackage = new LogisticsPackage();
+ BeanUtil.copyProperties(boxSum, logisticsPackage);
+ logisticsPackage.setPid(deliveryMain.getId());
+ list.add(logisticsPackage);
+ }
+
+ logisticsPackageService.saveBatch(list);
+
+ }
+
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/xiaomi/service/impl/DeliveryDetailServiceImpl.java b/src/main/java/com/gs/xiaomi/service/impl/DeliveryDetailServiceImpl.java
new file mode 100644
index 0000000..15213d6
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/impl/DeliveryDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package com.gs.xiaomi.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xiaomi.entity.DeliveryDetail;
+import com.gs.xiaomi.mapper.DeliveryDetailMapper;
+import com.gs.xiaomi.service.DeliveryDetailService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_DETAIL銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-04-10 14:16:44
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class DeliveryDetailServiceImpl extends ServiceImpl<DeliveryDetailMapper, DeliveryDetail>
+ implements DeliveryDetailService {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/service/impl/DeliveryMainServiceImpl.java b/src/main/java/com/gs/xiaomi/service/impl/DeliveryMainServiceImpl.java
new file mode 100644
index 0000000..3011aff
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/impl/DeliveryMainServiceImpl.java
@@ -0,0 +1,31 @@
+package com.gs.xiaomi.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xiaomi.entity.DeliveryMain;
+import com.gs.xiaomi.mapper.DeliveryMainMapper;
+import com.gs.xiaomi.service.DeliveryMainService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怐ELIVERY_MAIN銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-04-10 14:16:52
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class DeliveryMainServiceImpl extends ServiceImpl<DeliveryMainMapper, DeliveryMain>
+ implements DeliveryMainService {
+
+
+ @Override
+ public long getId() {
+ return baseMapper.getNextVal();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/service/impl/LogisticsPackageServiceImpl.java b/src/main/java/com/gs/xiaomi/service/impl/LogisticsPackageServiceImpl.java
new file mode 100644
index 0000000..97597c1
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/impl/LogisticsPackageServiceImpl.java
@@ -0,0 +1,26 @@
+package com.gs.xiaomi.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xiaomi.entity.LogisticsPackage;
+import com.gs.xiaomi.mapper.LogisticsPackageMapper;
+import com.gs.xiaomi.service.LogisticsPackageService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怢OGISTICS_PACKAGE銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-04-10 14:17:13
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class LogisticsPackageServiceImpl extends ServiceImpl<LogisticsPackageMapper, LogisticsPackage>
+ implements LogisticsPackageService {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/xiaomi/service/impl/PackageDetailServiceImpl.java b/src/main/java/com/gs/xiaomi/service/impl/PackageDetailServiceImpl.java
new file mode 100644
index 0000000..511296f
--- /dev/null
+++ b/src/main/java/com/gs/xiaomi/service/impl/PackageDetailServiceImpl.java
@@ -0,0 +1,26 @@
+package com.gs.xiaomi.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.xiaomi.entity.PackageDetail;
+import com.gs.xiaomi.mapper.PackageDetailMapper;
+import com.gs.xiaomi.service.PackageDetailService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author 28567
+ * @description 閽堝琛ㄣ�怭ACKAGE_DETAIL銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-04-10 14:17:48
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class PackageDetailServiceImpl extends ServiceImpl<PackageDetailMapper, PackageDetail>
+ implements PackageDetailService {
+
+}
+
+
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 23d7f85..003b73f 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -6,8 +6,8 @@
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@122.226.249.238:5936/ORCL
- username: zmz_prd
- password: zmzprd
+ username: xb_prd
+ password: xbprd
druid:
initialSize: 5
minIdle: 5
@@ -37,15 +37,15 @@
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
jdbc-type-for-null: 'null'
- type-aliases-package: com.gs.xky.entity.*
+ type-aliases-package: com.gs.xiaomi.entity.*
mapper-locations: classpath:mapper/*.xml
logging:
level:
root: info
- com.gs.xky.service.XkyService: debug # 鎸囧畾 XkyService 璁板綍 debug 绾у埆鐨勬棩蹇�
+ com.gs.xiaomi.service.XM104Service: debug # 鎸囧畾 XkyService 璁板綍 debug 绾у埆鐨勬棩蹇�
file:
- name: logs/xky_service.log # 鎸囧畾鏃ュ織鏂囦欢璺緞
+ name: logs/xm104_service.log # 鎸囧畾鏃ュ織鏂囦欢璺緞
pattern:
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
diff --git a/src/main/resources/mapper/DeliveryDetailMapper.xml b/src/main/resources/mapper/DeliveryDetailMapper.xml
new file mode 100644
index 0000000..88b1fdc
--- /dev/null
+++ b/src/main/resources/mapper/DeliveryDetailMapper.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.xiaomi.mapper.DeliveryDetailMapper">
+
+</mapper>
diff --git a/src/main/resources/mapper/DeliveryMainMapper.xml b/src/main/resources/mapper/DeliveryMainMapper.xml
new file mode 100644
index 0000000..94554cf
--- /dev/null
+++ b/src/main/resources/mapper/DeliveryMainMapper.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.xiaomi.mapper.DeliveryMainMapper">
+
+ <select id="getNextVal" resultType="java.lang.Long">
+ SELECT SEQ_DELIVERY_MAIN.NEXTVAL
+ FROM DUAL
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/LogisticsPackageMapper.xml b/src/main/resources/mapper/LogisticsPackageMapper.xml
new file mode 100644
index 0000000..0c5a61c
--- /dev/null
+++ b/src/main/resources/mapper/LogisticsPackageMapper.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.xiaomi.mapper.LogisticsPackageMapper">
+
+</mapper>
diff --git a/src/main/resources/mapper/PackageDetailMapper.xml b/src/main/resources/mapper/PackageDetailMapper.xml
new file mode 100644
index 0000000..bbc38d5
--- /dev/null
+++ b/src/main/resources/mapper/PackageDetailMapper.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.xiaomi.mapper.PackageDetailMapper">
+
+</mapper>
diff --git a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
index 4b5ac5c..cc8dbe1 100644
--- a/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
+++ b/src/test/java/com/gs/xiaomi/XiaomiApplicationTests.java
@@ -1,156 +1,18 @@
package com.gs.xiaomi;
-import com.alibaba.fastjson.JSON;
-import com.gs.xiaomi.config.DataAcquisitionConfiguration;
-import com.gs.xiaomi.dto.BizDocument;
-import com.gs.xiaomi.dto.BizDocumentResult;
-import com.gs.xiaomi.dto.ZfmWsApiRequest;
-import com.gs.xiaomi.service.SoapApiService;
-import com.gs.xiaomi.util.SoapXmlBuilder;
-import okhttp3.*;
+import com.gs.xiaomi.service.XM104Service;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import java.io.IOException;
-import java.io.StringReader;
@SpringBootTest
class XiaomiApplicationTests {
@Autowired
- private SoapApiService service;
+ private XM104Service xm104Service;
@Test
void contextLoads() throws Exception {
- ZfmWsApiRequest req = new ZfmWsApiRequest();
- req.setIvCode(DataAcquisitionConfiguration.IV_CODEXM104);
- req.setIvEvent("");
- req.setIvFlag("");
- BizDocument doc = new BizDocument();
- doc.setBizDate("2025-04-01");
- doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
- req.setIvInfo(doc);
- req.setIvPass(DataAcquisitionConfiguration.getIvPass(DataAcquisitionConfiguration.IV_CODEXM104));
- req.setIvUser(DataAcquisitionConfiguration.IV_USER);
- String soapXml = SoapXmlBuilder.build(req);
- System.out.println(soapXml);
+ xm104Service.getDb();
}
-
- @Test
- void testService() throws Exception {
- ZfmWsApiRequest req = new ZfmWsApiRequest();
- req.setIvCode(DataAcquisitionConfiguration.IV_CODEXM104);
- req.setIvEvent("");
- req.setIvFlag("");
- BizDocument doc = new BizDocument();
- doc.setBizDate("2025-04-01");
- doc.setLifnr(DataAcquisitionConfiguration.LIFNR);
- req.setIvInfo(doc);
- req.setIvPass(DataAcquisitionConfiguration.getIvPass(DataAcquisitionConfiguration.IV_CODEXM104));
- req.setIvUser(DataAcquisitionConfiguration.IV_USER);
-
- BizDocumentResult bizDocumentResult = service.callAndParse(DataAcquisitionConfiguration.XM104_URL, req);
-
- System.out.println(JSON.toJSONString(bizDocumentResult));
- }
-
- @Test
- void sta() throws IOException, JAXBException {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("application/xml");
- RequestBody body = RequestBody.create(mediaType, "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\r\n <soapenv:Header/>\r\n <soapenv:Body>\r\n <urn:ZFM_WS_API>\r\n <IV_CODE>VDATA.XM104</IV_CODE>\r\n <IV_EVENT></IV_EVENT>\r\n <IV_FLAG></IV_FLAG>\r\n <IV_INFO><![CDATA[<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<document>\r\n <BIZ_DATE>2025-04-01</BIZ_DATE>\r\n <I_LIFNR>177301</I_LIFNR>\r\n</document>]]></IV_INFO>\r\n <IV_PASS>D25932DF5772D0A2DF9620A2A0AB121A</IV_PASS>\r\n <IV_USER>V177301</IV_USER>\r\n </urn:ZFM_WS_API>\r\n </soapenv:Body>\r\n</soapenv:Envelope>");
- Request request = new Request.Builder()
- .url("https://mipoq.p.mi.com/XISOAPAdapter/MessageServlet?p=ic/9e8a118fb0b7379aa11c2a5c2860982a&senderParty=&senderService=ZJ_XIAOBU_QAS&receiverParty=&receiverService=&interface=SI_ZFM_WS_API_OUT&interfaceNamespace=http://xiaomi.com/srm/b2b")
- .method("POST", body)
-// .addHeader("User-Agent", "Apifox/1.0.0 (https://apifox.com)")
- .addHeader("Content-Type", "application/xml")
- .addHeader("Authorization", "Basic UkZDWkpYSUFPQlU6cHBCOVIhSGU=")
- .addHeader("Accept", "*/*")
-// .addHeader("Host", "mipoq.p.mi.com")
- .addHeader("Connection", "keep-alive")
-// .addHeader("Cookie", "saplb_*=(J2EE4281420)4281450; MYSAPSSO2=AjExMDAgABJwb3J0YWw6UkZDWkpYSUFPQlWIAAdkZWZhdWx0AQALUkZDWkpYSUFPQlUCAAMwMDADAANQT1EEAAwyMDI1MDQwOTAwMTcFAAQAAAAICgALUkZDWkpYSUFPQlX%2FAQUwggEBBgkqhkiG9w0BBwKggfMwgfACAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHATGB0DCBzQIBATAiMB0xDDAKBgNVBAMTA1BPUTENMAsGA1UECxMESjJFRQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjUwNDA5MDAxNzU2WjAjBgkqhkiG9w0BCQQxFgQUvvJ1HSnOLckboGYaMR9Wiaem6z4wCQYHKoZIzjgEAwQvMC0CFQDKLPrpUC19VM2gcslWaHAnh7dfxQIUNs2dTxwGcKdNU%2FdAQPs4f08yaw4%3D; JSESSIONID=_6bPldDq9mFJPXEd11bc-GvrWMAVlgFqVEEA_SAPF-GrpRbcuqxMK_gShBYGdmdp; JSESSIONMARKID=nUs7PQMlYui9UqFCm4Z-ZRqUiI8YQ_hLJPJWpUQQA")
- .build();
- Response response = client.newCall(request).execute();
-
- if (response.isSuccessful() && response.body() != null) {
- String bodyStr = response.body().string();
-
- String evCode = extractEvCode(bodyStr);
- if (!"Y".equalsIgnoreCase(evCode)) {
- throw new RuntimeException("SOAP business failed, EV_CODE: " + evCode);
- }
-
- 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();
- //BizDocumentResult unmarshal = (BizDocumentResult) unmarshaller.unmarshal(new StringReader(decodedXml));
- System.out.println(JSON.toJSONString(innerXml));
- } else {
- throw new RuntimeException("SOAP request failed: " + response.code() + " - " + response.message());
- }
- }
-
-
- @Test
- void contextLoads2() throws Exception {
- String bodyStr = "<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>" +
- " <SOAP:Header/>" +
- " <SOAP:Body xmlns:urn='urn:sap-com:document:sap:rfc:functions'>" +
- " <n0:ZFM_WS_APIResponse xmlns:n0='urn:sap-com:document:sap:rfc:functions' xmlns:prx='urn:sap.com:proxy:FRD:/1SAI/TAS82FD47019F21003C052D:752'>" +
- " <EV_CODE>Y</EV_CODE>" +
- " <EV_EVENT/>" +
- " <EV_FLAG/>" +
- " <EV_RESULT><?xml version=\"1.0\" encoding=\"utf-8\"?><document><et_headers type=\"h\"><et_header idx=\"1\"><zzasn>9311031471</zzasn><zzasn_type>BL</zzasn_type><imclr></imclr><lifnr>0000177301</lifnr><vendor_name>娴欐睙灏忔鍑鸿鏈夐檺鍏徃</vendor_name><zzship_addr>娴嬭瘯</zzship_addr><zzship_name>11</zzship_name><zzship_phon>1111</zzship_phon><zzship_date>2025-04-01</zzship_date><zzwarehouse_id>0000017560</zzwarehouse_id><zzwarehouse>涓皬浠�-鍖椾含涓績浠�</zzwarehouse><zzreceive_addr>鍖椾含甯傚ぇ鍏村尯缁忔祹寮�鍙戝尯绉戝垱鍗佽鍗佷簲鍙�(浜﹀簞灏忕背浜т笟鍥�)T1妤�1灞�</zzreceive_addr><zzcarrier></zzcarrier><zzdriver_name></zzdriver_name><zzdriver_phon></zzdriver_phon><zzarrive_time>20250402</zzarrive_time><zzarrive_time1>00:00:00</zzarrive_time1><zzcarrier_no></zzcarrier_no><road_transport_no></road_transport_no><zztrans_model></zztrans_model><zzdriver_license></zzdriver_license><zzlicense_numb></zzlicense_numb><zzseal_no></zzseal_no><zzcanceled></zzcanceled><ship_email>11@163.com</ship_email><lifnr_dg></lifnr_dg><short_name></short_name><reserve_date></reserve_date><reserve_time></reserve_time><bukrs>1110</bukrs><asn_desc></asn_desc><price_stat></price_stat><final_contact></final_contact><final_phone></final_phone><final_addr></final_addr><final_company></final_company><status>S002</status><status_sn></status_sn><purchase_mode></purchase_mode><hub_lifnr></hub_lifnr><items type=\"h\"><item idx=\"1\"><zzasn>9311031471</zzasn><zzitem_id>0000000010</zzitem_id><zzpo_no>4500173648</zzpo_no><zzpo_item_id>0000000010</zzpo_item_id><zzreqnr></zzreqnr><zzreqln></zzreqln><zzproduct_id>950102000010</zzproduct_id><zzvproduct_id></zzvproduct_id><zzsku>BHR4008CN</zzsku><zzquantity>5.000</zzquantity><zzunit>ST</zzunit><brand></brand><place></place><brand_type></brand_type><is_identification></is_identification><zzopen_qty>5.000</zzopen_qty><changed_at>20250401071304</changed_at><created_at>20250401071304</created_at><app_models>11-AD</app_models><ext_doc_no>8897300</ext_doc_no><ext_doc_item>2884654</ext_doc_item><address_detail>鍖椾含甯傚ぇ鍏村尯缁忔祹寮�鍙戝尯绉戝垱鍗佽鍗佷簲鍙�(浜﹀簞灏忕背浜т笟鍥�)T1妤�1灞�</address_detail><batch_id></batch_id><batch_row></batch_row><xmsto_no></xmsto_no><xmsto_item_no></xmsto_item_no><modelnumber></modelnumber><shipment_id></shipment_id><shipmentid_num>0</shipmentid_num><maktx>绫冲鏅鸿兘渚у惛娌圭儫鏈�</maktx><bednr></bednr><ware_type_from></ware_type_from><ware_type_to></ware_type_to><act_gr_qty>0.000</act_gr_qty><pn_matnr_l></pn_matnr_l><pn_matnr_name></pn_matnr_name></item></items><box_items type=\"h\"></box_items><box_sums type=\"h\"></box_sums><purchase_mode2></purchase_mode2><receiver>鏉ㄤ腹涓�,鍛ㄦ櫒鍏�</receiver><receive_phone>18811578183,13002157815</receive_phone><receive_addr>鍖椾含甯傚ぇ鍏村尯缁忔祹寮�鍙戝尯绉戝垱鍗佽鍗佷簲鍙�(浜﹀簞灏忕背浜т笟鍥�)T1妤�1灞�</receive_addr><receive_warehouse_id>0000017560</receive_warehouse_id><receive_warehouse_short>涓皬浠�-鍖椾含涓績浠�</receive_warehouse_short><product_type>GM</product_type><ekorg>2120</ekorg><ekotx></ekotx><stock_org_from></stock_org_from><stock_org_from_desc></stock_org_from_desc><stock_org_to>MI_IOT</stock_org_to><stock_org_to_desc>鐢熸�侀摼搴撳瓨缁勭粐(IOT)</stock_org_to_desc><migo_type></migo_type><zrproject>A1</zrproject><logistics_no></logistics_no><logistics_company></logistics_company><last4_phone_number></last4_phone_number><logistics_company_name></logistics_company_name><business_model></business_model></et_header></et_headers><ev_message></ev_message><ev_msgty>S</ev_msgty></document></EV_RESULT>" +
- " </n0:ZFM_WS_APIResponse>" +
- " </SOAP:Body>" +
- "</SOAP:Envelope>";
-
- String evCode = extractEvCode(bodyStr);
- if (!"Y".equalsIgnoreCase(evCode)) {
- throw new RuntimeException("SOAP business failed, EV_CODE: " + evCode);
- }
-
- 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();
- BizDocumentResult unmarshal = (BizDocumentResult) unmarshaller.unmarshal(new StringReader(innerXml));
- System.out.println(JSON.toJSONString(unmarshal));
- }
-
- 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) {
- return xml.replace("<", "<")
- .replace(">", ">")
- .replace("<", "<")
- .replace(">", ">")
- .replace("&", "&");
- }
-
- 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