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