src/main/java/com/gs/xky/config/ApiResponse.java
@@ -1,5 +1,6 @@ package com.gs.xky.config; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,6 +11,7 @@ @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class ApiResponse<T> { private int result; @@ -17,6 +19,8 @@ private String errorCode; private String errorMsg; private T data; private List<T> dataList; // Add this field to match the response } src/main/java/com/gs/xky/config/BodyParam.java
@@ -29,4 +29,8 @@ private int[] status; private int logisticsStatus; private String deliveryNo; private int returnVerifyFlag; } src/main/java/com/gs/xky/config/DataAcquisitionConfiguration.java
@@ -4,23 +4,20 @@ public class DataAcquisitionConfiguration { //æµè¯ç¯å¢ public static final String TEST_COMPANY_CODE = "55958795"; public static final String TEST_COMPANY_CODE = "55958795"; public static final String TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246"; public static final String TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246"; public static final String TEST_APP_SECRET = "01b17babe2a96d5ebd802e67709f33d1"; public static final String TEST_APP_SECRET = "01b17babe2a96d5ebd802e67709f33d1"; public static final String TEST_ERP_CODE = "Z106"; //æ£å¼ç¯å¢ public static final String COMPANY_CODE = "72505985"; public static final String COMPANY_CODE = "72505985"; public static final String APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31"; public static final String APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31"; public static final String APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1"; public static final String APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1"; public static final String ERP_CODE = "Z106"; } src/main/java/com/gs/xky/config/XkyCommonParam.java
@@ -1,5 +1,6 @@ package com.gs.xky.config; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -12,4 +13,28 @@ private ApiCommonParam commonParam; private BodyParam body; public static XkyCommonParam GetInit() { long currentTimeMillis = System.currentTimeMillis(); ApiCommonParam apiParam = new ApiCommonParam(); apiParam.setAppKey(DataAcquisitionConfiguration.TEST_APP_KEY);//åæºå®¢äºæä¾çappKey apiParam.setVersion("1.0");//æ¥å£çæ¬ apiParam.setOperateCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//æä½è æå±å ¬å¸ç¼ç apiParam.setOwnerCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//æ°æ®æå±å ¬å¸ç¼ç ,ééå¢å ¬å¸é»è®¤èµå¼ä¸ºæä½å ¬å¸ apiParam.setTimestamps(currentTimeMillis / 1000);//å½åæ¶é´å¯¹åºçæ¶é´æ³ï¼ç§æ°ï¼ String appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET;//æºå®¢äºæä¾çappSecret String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret); apiParam.setSign(sign); XkyCommonParam commonParam = new XkyCommonParam(); commonParam.setCommonParam(apiParam); return commonParam; } } src/main/java/com/gs/xky/dto/BarcodeDeliveryNo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.gs.xky.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class BarcodeDeliveryNo { private String productCode; //产åç¼ç private String smallBarcode; //å°å æ¡ç private String bigBarcode; //å¤§å æ¡ç private String outerBarcode; //å¤ç®±æ¡ç private String includeQty; //å½åå°å æ¡ç å å«çæ°é private String smallPackageLength; //å°å æ¡ç -é¿ private String smallPackageWidth; //å°å æ¡ç -宽 private String smallPackageHeight; //å°å æ¡ç -é« private String bigPackageLength; //å¤§å æ¡ç -é¿ private String bigPackageWidth; //å¤§å æ¡ç -宽 private String bigPackageHeight; //å¤§å æ¡ç -é« private String outerPackageLength; //å¤ç®±æ¡ç -é¿ private String outerPackageWidth; //å¤ç®±æ¡ç -宽 private String outerPackageHeight; //å¤ç®±æ¡ç -é« private String smallPackageSn; //å½åå°å æ¡ç çæµæ°´ç private String bigPackageSn; //å½åå¤§å æ¡ç çæµæ°´ç private String outPackageSn; //å½åå¤ç®±æ¡ç çæµæ°´ç private String dynamicData; //æ¡ç è§åä¸å¯¹åºç卿忮µçå¼, key对åºçåå¼ä¸ºdynamicDescList.fieldçå¼ï¼å¦æä¼ä¸è°æ´äºæ¡ç è§åï¼è¯·æ ¹æ®dynamicDescListè¿åçç»æï¼äºè§£åå¨ææ°æ®çå«ä¹ private String packLevel; //å è£ å±çº§ } src/main/java/com/gs/xky/dto/CustomsData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.gs.xky.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class CustomsData { private String dnXkNo; //éè´§éç¥åæ®å· private String dnInnerNo; //å é¨åæ®å· private String billLadingXkNo; //æ¥åå·ç private String customsTypeCode; //æ¥å ³ç±»åç¼ç private String customsTypeName; //æ¥å ³ç±»ååç§° private String destinationPortTypeCode; //ç®ç港ç¼ç private String destinationPortTypeName; //ç®ç港åç§° private String portLoadingTypeCode; //è£ è¿æ¸¯ç¼ç private String portLoadingTypeName; //è£ è¿æ¸¯åç§° private String originalCountryCode; //å产å½ç¼ç private String originalCountryName; //å产å½åç§° private String externalInvoiceXkNo; //å¤é¨å票å·ç private String externalInvoiceDate; //å¤é¨åç¥¨æ¥æ } src/main/java/com/gs/xky/dto/LineList.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,81 @@ package com.gs.xky.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class LineList { private String lineNo; //é¡¹æ¬¡å· private String poErpNo; //ERPéè´åå· private String purchaseType; //éè´åç±»å 1ï¼ä¸è¬éè´ï¼2ï¼å§å¤éè´ private String poLineNo; //éè´å项次 private String productCode; //产åç¼ç private String productName; //产ååç§° private String productScale; //产åè§æ ¼ private String deliveryUnitCode; //åºè´§åä½ç¼ç private String deliveryUnitName; //åºè´§åä½åç§° private String deliveryQty; //åºè´§æ°é private String deliveryValuationQty; //åºè´§è®¡ä»·æ°é private String price; //åºè´§äº§ååä»· private String taxPrice; //åºè´§äº§åå«ç¨åä»· private String schDynamicValue; //æç¨èªå®ä¹é¡¹çå¼ private String scheduleBatchNo; //æç¨æ¹æ¬¡å· private String scheduleOrderNo; //æç¨åå· private String scheduleDetailNo; //å¯¹åºæç¨ItemDetailç主é®å private String urgentFlag; //æ¯å¦æ¥æ 0:å¦ ; 1ï¼æ¯ private String srcBillType; //åå§åæ®ç±»å1ï¼è®¢åï¼2ï¼æç¨; 3:æéè´§ 4:æå¤å private String purchaseDesc; //éè´é¡¹æ¬¡çéè´è¯´æä¿¡æ¯ private String srcOrderLineRemark; //忮夿³¨ï¼srcBillType=1 对åºéè´è®¢åå身ç夿³¨; srcBillType=2 å¯¹åºæç¨é¡¹æ¬¡ç夿³¨ private String status; //ç¶æï¼1:å¾ ç¾æ¶ï¼2:ç¾æ¶ä¸ï¼3: 已宿ï¼ï¼ private String receiveStatus; //æ¶è´§ç¶æï¼0-æªæ¶è´§;1-é¨åæ¶è´§;2-å ¨é¨æ¶è´§ï¼ private String grossWeight; //æ´åæ¯é private String netWeight; //æ´ååé private String unitWeightCode; //ééåä½ç¼ç private String unitWeightName; //ééåä½åç§° private String packingQty; //å è£ æ° private String brandName; //åç private String otherExtend; //å ¶å®è¯´æ private String originalCountryCode; //å产å½ç¼ç private String originalCountryName; //å产å½åç§° private String remark; //éè´§éç¥åèº«å¤æ³¨ private String extendN01; //æ©å±å段1 private String extendN02; //æ©å±å段2 private String extendN03; //æ©å±å段3 private String extendN04; //æ©å±å段4 private String extendN05; //æ©å±å段5 private String extendN06; //æ©å±å段6 private String storeCode; //ä»åºç¼ç private String storeName; //ä»åºåç§° private String verifyQty; //鿣æ°é private String allowQty; //å 许æ¶è´§æ°é private String compromiseQty; //è®©æ¥æ¶è´§æ°é private String refusedQty; //ææ¶æ°é private String rtoErpNo; //éè´§åERPåå· private String rtoLineNo; //éè´§é¡¹æ¬¡å· private String prodLength; //é¿ private String prodWidth; //宽 private String prodHeight; //é« private String buyerName; //éè´å private String expectedDate; //订å交æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ private String answerDate; //æå®äº¤æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ private String currencyCode; //å¸å«ç¼ç private String currencyName; //å¸å«åç§° private String sendVerifyStatus; //éæ£ç¶æï¼0:æªéæ£ï¼1:é¨å鿣ï¼2:å ¨é¨éæ£ 3å æ£ï¼ private String resultFlag; //æ£éªç»ææ è¯ï¼0:å æ£ 1:å ¨é¨åæ ¼ï¼2:é¨ååæ ¼ï¼3:ææ¶ï¼ private String applyDeliveryQty; //ç³è¯·åºè´§æ°é private String applyDeliveryValuationQty; //ç³è¯·åºè´§è®¡ä»·æ°é private String batchNumber; //æ¹å· private String receiveQty; //æ¶è´§æ°é private String storageQty; //å ¥åºæ°é private String returnQty; //éè´§æ°é private String firstCheck; //ä¼å æ£éª 0 æ£å¸¸ï¼1 ä¼å ï¼2 ç´§æ¥ private String poLineNoShow; //å¹³å°å±ç¤ºéè´å项次 } src/main/java/com/gs/xky/dto/XkyDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ package com.gs.xky.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class XkyDetail { private String deliveryNo; //éè´§åå· private String innerVendorCode; //ä¾åºåç¼ç private String innerVendorName; //ä¾åºååç§° private String deliveryType; //éè´§ç±»å ï¼ 1 :æ®é(æ£å¸¸åºè´§) 2ï¼è¡¥è´§(å å ¥åºï¼åè¡¥åºè´§å) 3: å¤å 4:æ ·å 5:VMI private String deliveryDate; //éè´§æ¥æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ private String planArrivedDate; //é¢è®¡éè¾¾æ¥æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ private String contactPersion; //éè´§è系人 private String contactMobile; //é货人èç³»çµè¯ private String addressCode; //å 鍿¶è´§å°ç¹ç¼ç private String addressInfo; //æ¶è´§æç»å°å private String deliveryCarNo; //é货车çå· private String remark; //éè´§éç¥åèº«å¤æ³¨ private String status; //éè´§åç¶æ 1: å¾ ç¾æ¶ï¼ 2: ç¾æ¶ä¸ï¼ 3: å·²å®æï¼ 4: æ¤åï¼ 8: å·²ä½åºï¼çæ¬2.0æ°å¢ 5ï¼ç³è¯·ä¸ï¼ 7ï¼åæï¼ 9ï¼é¨ååæ 10: å·²å»ç» 11: ç³è¯·æ¤å private String directDeliveryFlag; //ç´è¿æ è¯ 1ï¼æ¯ï¼0å¦ private String logisticsStatus; //ç©æµç¶æ 0:æªååºï¼1:å·²åè´§ï¼2:å·²å°è´§ private String publishTime; //æå䏿¬¡å叿¶é´ private String updateTime; //æå䏿¬¡æ´æ°æ¶é´ private String profitCenterCode; //婿¶¦ä¸å¿(ææ¶è´§é¨é¨)ç¼ç private String grossWeight; //æ´åæ¯é private String netWeight; //æ´ååé private String unitWeightCode; //ééåä½ç¼ç private String unitWeightName; //ééåä½åç§° private String totalPackingQty; //æ»å è£ æ° private String totalPackageQuantity; //æå·¥å¡«åï¼æ»å æ° private String transportTypeCode; //è¿è¾æ¹å¼ç¼ç private String transportTypeName; //è¿è¾æ¹å¼åç§° private String packingWayCode; //å è£ æ¹å¼ç¼ç private String packingWayName; //å è£ æ¹å¼åç§° private String extendN01; //æ©å±å段1 private String extendN02; //æ©å±å段2 private String extendN03; //æ©å±å段3 private String platformExtendN04; //æ©å±å段4 private String platformExtendN05; //æ©å±å段5 private String platformExtendN06; //æ©å±å段6 private String platformExtendN07; //æ©å±å段7 private String platformExtendN08; //æ©å±å段8 private String cargoDeliveryTime; //è´§ç©éè¾¾æ¥æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ private String logisticsType; //ç©æµæ¹å¼æ°åå½¢å¼(1-ä¾åºåéè´§2-å¿«é3-éè´æ¹èªæ) private String logisticsTypeShow; //ç©æµæ¹å¼ä¸æå±ç¤º private String logisticsNumber; //ç©æµåå· private String firstCheck; //ä¼å æ£éª 0 æ£å¸¸ï¼1 ä¼å ï¼2 ç´§æ¥ // private List<CustomsData> customsData;//æ¥å ³èµæ private List<LineList> lineList;//éè´§å身å表 } src/main/java/com/gs/xky/entity/DeliveryNotice.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,189 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * éè´§éç¥å主表 * * @TableName DELIVERY_NOTICE */ @TableName(value = "DELIVERY_NOTICE") @Data @KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE) public class DeliveryNotice implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_XKY */ @TableId private Long id; /** * éè´§åå· */ private String deliveryNo; /** * ä¾åºåç¼ç */ private String innerVendorCode; /** * ä¾åºååç§° */ private String innerVendorName; /** * éè´§ç±»åï¼1-æ®é 2-补货 3-å¤å 4-æ ·å 5-VMI */ private String deliveryType; /** * éè´§æ¥æ(æ¶é´æ³) */ private String deliveryDate; /** * é¢è®¡éè¾¾æ¥æ(æ¶é´æ³) */ private String planArrivedDate; /** * éè´§è系人 */ private String contactPersion; /** * é货人èç³»çµè¯ */ private String contactMobile; /** * å 鍿¶è´§å°ç¹ç¼ç */ private String addressCode; /** * æ¶è´§æç»å°å */ private String addressInfo; /** * é货车çå· */ private String deliveryCarNo; /** * 夿³¨ */ private String remark; /** * ç¶æ:1-å¾ ç¾æ¶ 2-ç¾æ¶ä¸ 3-已宿 4-æ¤å 8-å·²ä½åº 5-ç³è¯·ä¸ 7-åæ 9-é¨ååæ 10-å·²å»ç» 11-ç³è¯·æ¤å */ private String status; /** * ç´è¿æ è¯:1-æ¯ 0-å¦ */ private String directDeliveryFlag; /** * ç©æµç¶æ:0-æªååº 1-å·²åè´§ 2-å·²å°è´§ */ private String logisticsStatus; /** * æå䏿¬¡å叿¶é´ */ private String publishTime; /** * æå䏿¬¡æ´æ°æ¶é´ */ private String updateTime; /** * 婿¶¦ä¸å¿ç¼ç */ private String profitCenterCode; /** * æ´åæ¯é */ private String grossWeight; /** * æ´ååé */ private String netWeight; /** * ééåä½ç¼ç */ private String unitWeightCode; /** * ééåä½åç§° */ private String unitWeightName; /** * æ»å è£ æ° */ private String totalPackingQty; /** * æå·¥å¡«åæ»å æ° */ private String totalPackageQuantity; /** * è¿è¾æ¹å¼ç¼ç */ private String transportTypeCode; /** * è¿è¾æ¹å¼åç§° */ private String transportTypeName; /** * å è£ æ¹å¼ç¼ç */ private String packingWayCode; /** * å è£ æ¹å¼åç§° */ private String packingWayName; /** * æ©å±å段1 */ private String extendN01; /** * æ©å±å段2 */ private String extendN02; /** * æ©å±å段3 */ private String extendN03; /** * æ©å±å段4 */ private String platformExtendN04; /** * æ©å±å段5 */ private String platformExtendN05; /** * æ©å±å段6 */ private String platformExtendN06; /** * æ©å±å段7 */ private String platformExtendN07; /** * æ©å±å段8 */ private String platformExtendN08; /** * è´§ç©éè¾¾æ¥æ(æ¶é´æ³) */ private Date cargoDeliveryTime; /** * ç©æµæ¹å¼:1-ä¾åºåéè´§ 2-å¿«é 3-éè´æ¹èªæ */ private String logisticsType; /** * ç©æµæ¹å¼ä¸æå±ç¤º */ private String logisticsTypeShow; /** * ç©æµåå· */ private String logisticsNumber; /** * ä¼å æ£éª:0-æ£å¸¸ 1-ä¼å 2-ç´§æ¥ */ private String firstCheck; } src/main/java/com/gs/xky/entity/DeliveryNoticeDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,298 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; /** * éè´§éç¥åæ®æç»è¡¨ * * @TableName DELIVERY_NOTICE_DETAIL */ @TableName(value = "DELIVERY_NOTICE_DETAIL") @Data @KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE) public class DeliveryNoticeDetail implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_XKY */ @TableId private Long id; private Long pid; /** * é¡¹æ¬¡å· */ private String lineNo; /** * ERPéè´åå· */ private String poErpNo; /** * éè´åç±»å 1ï¼ä¸è¬éè´ï¼2ï¼å§å¤éè´ */ private String purchaseType; /** * éè´å项次 */ private String poLineNo; /** * 产åç¼ç */ private String productCode; /** * 产ååç§° */ private String productName; /** * 产åè§æ ¼ */ private String productScale; /** * åºè´§åä½ç¼ç */ private String deliveryUnitCode; /** * åºè´§åä½åç§° */ private String deliveryUnitName; /** * åºè´§æ°é */ private String deliveryQty; /** * åºè´§è®¡ä»·æ°é */ private String deliveryValuationQty; /** * åºè´§äº§ååä»· */ private String price; /** * åºè´§äº§åå«ç¨åä»· */ private String taxPrice; /** * æç¨èªå®ä¹é¡¹çå¼ */ private String schDynamicValue; /** * æç¨æ¹æ¬¡å· */ private String scheduleBatchNo; /** * æç¨åå· */ private String scheduleOrderNo; /** * å¯¹åºæç¨ItemDetailç主é®å */ private String scheduleDetailNo; /** * æ¯å¦æ¥æ 0:å¦ ; 1ï¼æ¯ */ private String urgentFlag; /** * åå§åæ®ç±»å1ï¼è®¢åï¼2ï¼æç¨; 3:æéè´§ 4:æå¤å */ private String srcBillType; /** * éè´é¡¹æ¬¡çéè´è¯´æä¿¡æ¯ */ private String purchaseDesc; /** * 忮夿³¨ï¼srcBillType=1 对åºéè´è®¢åå身ç夿³¨; srcBillType=2 å¯¹åºæç¨é¡¹æ¬¡ç夿³¨ */ private String srcOrderLineRemark; /** * ç¶æï¼1:å¾ ç¾æ¶ï¼2:ç¾æ¶ä¸ï¼3: 已宿ï¼ï¼ */ private String status; /** * æ¶è´§ç¶æï¼0-æªæ¶è´§;1-é¨åæ¶è´§;2-å ¨é¨æ¶è´§ï¼ */ private String receiveStatus; /** * æ´åæ¯é */ private String grossWeight; /** * æ´ååé */ private String netWeight; /** * ééåä½ç¼ç */ private String unitWeightCode; /** * ééåä½åç§° */ private String unitWeightName; /** * å è£ æ° */ private String packingQty; /** * åç */ private String brandName; /** * å ¶å®è¯´æ */ private String otherExtend; /** * å产å½ç¼ç */ private String originalCountryCode; /** * å产å½åç§° */ private String originalCountryName; /** * éè´§éç¥åèº«å¤æ³¨ */ private String remark; /** * æ©å±å段1 */ private String extendN01; /** * æ©å±å段2 */ private String extendN02; /** * æ©å±å段3 */ private String extendN03; /** * æ©å±å段4 */ private String extendN04; /** * æ©å±å段5 */ private String extendN05; /** * æ©å±å段6 */ private String extendN06; /** * ä»åºç¼ç */ private String storeCode; /** * ä»åºåç§° */ private String storeName; /** * 鿣æ°é */ private String verifyQty; /** * å 许æ¶è´§æ°é */ private String allowQty; /** * è®©æ¥æ¶è´§æ°é */ private String compromiseQty; /** * ææ¶æ°é */ private String refusedQty; /** * éè´§åERPåå· */ private String rtoErpNo; /** * éè´§é¡¹æ¬¡å· */ private String rtoLineNo; /** * é¿ */ private String prodLength; /** * 宽 */ private String prodWidth; /** * é« */ private String prodHeight; /** * éè´å */ private String buyerName; /** * 订å交æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ */ private String expectedDate; /** * æå®äº¤æï¼ä»¥æ¶é´æ³å½¢å¼ï¼ */ private String answerDate; /** * å¸å«ç¼ç */ private String currencyCode; /** * å¸å«åç§° */ private String currencyName; /** * éæ£ç¶æï¼0:æªéæ£ï¼1:é¨å鿣ï¼2:å ¨é¨éæ£ 3å æ£ï¼ */ private String sendVerifyStatus; /** * æ£éªç»ææ è¯ï¼0:å æ£ 1:å ¨é¨åæ ¼ï¼2:é¨ååæ ¼ï¼3:ææ¶ï¼ */ private String resultFlag; /** * ç³è¯·åºè´§æ°é */ private String applyDeliveryQty; /** * ç³è¯·åºè´§è®¡ä»·æ°é */ private String applyDeliveryValuationQty; /** * æ¹å· */ private String batchNumber; /** * æ¶è´§æ°é */ private String receiveQty; /** * å ¥åºæ°é */ private String storageQty; /** * éè´§æ°é */ private String returnQty; /** * ä¼å æ£éª 0 æ£å¸¸ï¼1 ä¼å ï¼2 ç´§æ¥ */ private String firstCheck; /** * å¹³å°å±ç¤ºéè´å项次 */ private String poLineNoShow; /** * 夿³¨ */ private String remarks; /** * å建æ¶é´ */ private String createTime; /** * æ´æ°æ¶é´ */ private String updateTime; } src/main/java/com/gs/xky/entity/TblBarcodeInformation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,113 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * æ¡ç ä¿¡æ¯è¡¨ * * @TableName TBL_BARCODE_INFORMATION */ @TableName(value = "TBL_BARCODE_INFORMATION") @Data @KeySequence(value = "SEQ_XKY", dbType = DbType.ORACLE) public class TblBarcodeInformation implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_XKY */ @TableId private Long id; /** * éè´§åå· */ private String deliveryNo; /** * 产åç¼ç */ private String productCode; /** * å°å æ¡ç */ private String smallBarcode; /** * å¤§å æ¡ç */ private String bigBarcode; /** * å¤ç®±æ¡ç */ private String outerBarcode; /** * å½åå°å æ¡ç å å«çæ°é */ private String includeQty; /** * å°å æ¡ç -é¿ */ private String smallPackageLength; /** * å°å æ¡ç -宽 */ private String smallPackageWidth; /** * å°å æ¡ç -é« */ private String smallPackageHeight; /** * å¤§å æ¡ç -é¿ */ private String bigPackageLength; /** * å¤§å æ¡ç -宽 */ private String bigPackageWidth; /** * å¤§å æ¡ç -é« */ private String bigPackageHeight; /** * å¤ç®±æ¡ç -é¿ */ private String outerPackageLength; /** * å¤ç®±æ¡ç -宽 */ private String outerPackageWidth; /** * å¤ç®±æ¡ç -é« */ private String outerPackageHeight; /** * å½åå°å æ¡ç çæµæ°´ç */ private String smallPackageSn; /** * å½åå¤§å æ¡ç çæµæ°´ç */ private String bigPackageSn; /** * å½åå¤ç®±æ¡ç çæµæ°´ç */ private String outPackageSn; /** * æ¡ç è§åä¸å¯¹åºç卿忮µçå¼ */ private String dynamicData; /** * å è£ å±çº§ */ private String packLevel; /** * å建æ¶é´ */ private Date createTime; /** * æ´æ°æ¶é´ */ private Date updateTime; } src/main/java/com/gs/xky/mapper/DeliveryNoticeDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.DeliveryNoticeDetail; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE_DETAIL(éè´§éç¥åæ®æç»è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-02-11 22:30:01 * @Entity com.gs.xky.entity.DeliveryNoticeDetail */ public interface DeliveryNoticeDetailMapper extends BaseMapper<DeliveryNoticeDetail> { } src/main/java/com/gs/xky/mapper/DeliveryNoticeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.DeliveryNotice; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE(éè´§éç¥å主表)ãçæ°æ®åºæä½Mapper * @createDate 2025-02-11 20:55:22 * @Entity com.gs.xky.entity.DeliveryNotice */ public interface DeliveryNoticeMapper extends BaseMapper<DeliveryNotice> { long getNextVal(); } src/main/java/com/gs/xky/mapper/TblBarcodeInformationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.TblBarcodeInformation; /** * @author 28567 * @description é对表ãTBL_BARCODE_INFORMATION(æ¡ç ä¿¡æ¯è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-02-12 12:52:06 * @Entity com.gs.xky.entity.TblBarcodeInformation */ public interface TblBarcodeInformationMapper extends BaseMapper<TblBarcodeInformation> { } src/main/java/com/gs/xky/service/DeliveryNoticeDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.DeliveryNoticeDetail; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE_DETAIL(éè´§éç¥åæ®æç»è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-02-11 22:30:01 */ public interface DeliveryNoticeDetailService extends IService<DeliveryNoticeDetail> { } src/main/java/com/gs/xky/service/DeliveryNoticeService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.dto.XkyDetail; import com.gs.xky.entity.DeliveryNotice; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE(éè´§éç¥å主表)ãçæ°æ®åºæä½Service * @createDate 2025-02-11 20:55:22 */ public interface DeliveryNoticeService extends IService<DeliveryNotice> { boolean saveDeliveryNotice(XkyDetail xkyDetail); } src/main/java/com/gs/xky/service/Impl/DeliveryNoticeDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.DeliveryNoticeDetail; import com.gs.xky.mapper.DeliveryNoticeDetailMapper; import com.gs.xky.service.DeliveryNoticeDetailService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE_DETAIL(éè´§éç¥åæ®æç»è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-02-11 22:30:01 */ @Service public class DeliveryNoticeDetailServiceImpl extends ServiceImpl<DeliveryNoticeDetailMapper, DeliveryNoticeDetail> implements DeliveryNoticeDetailService { } src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,77 @@ package com.gs.xky.service.Impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.dto.LineList; import com.gs.xky.dto.XkyDetail; import com.gs.xky.entity.DeliveryNotice; import com.gs.xky.entity.DeliveryNoticeDetail; import com.gs.xky.mapper.DeliveryNoticeMapper; import com.gs.xky.service.DeliveryNoticeDetailService; import com.gs.xky.service.DeliveryNoticeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author 28567 * @description é对表ãDELIVERY_NOTICE(éè´§éç¥å主表)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-02-11 20:55:22 */ @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class DeliveryNoticeServiceImpl extends ServiceImpl<DeliveryNoticeMapper, DeliveryNotice> implements DeliveryNoticeService { private final DeliveryNoticeDetailService detailService; @Override public boolean saveDeliveryNotice(XkyDetail xkyDetail) { LambdaQueryWrapper<DeliveryNotice> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); long count = count(wrapper); if (count > 0) { LambdaUpdateWrapper<DeliveryNotice> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); remove(updateWrapper); } DeliveryNotice deliveryNotice = new DeliveryNotice(); BeanUtil.copyProperties(xkyDetail, deliveryNotice); long id = baseMapper.getNextVal(); deliveryNotice.setId(id); List<LineList> lineList = xkyDetail.getLineList(); if (CollUtil.isEmpty(lineList)) { return true; } List<DeliveryNoticeDetail> noticeDetails = new ArrayList<>(); for (LineList list : lineList) { DeliveryNoticeDetail detail = new DeliveryNoticeDetail(); BeanUtil.copyProperties(list, detail); detail.setPid(id); noticeDetails.add(detail); } return save(deliveryNotice) && detailService.saveBatch(noticeDetails); } } src/main/java/com/gs/xky/service/Impl/TblBarcodeInformationServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.gs.xky.service.Impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.dto.BarcodeDeliveryNo; import com.gs.xky.entity.TblBarcodeInformation; import com.gs.xky.mapper.TblBarcodeInformationMapper; import com.gs.xky.service.TblBarcodeInformationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author 28567 * @description é对表ãTBL_BARCODE_INFORMATION(æ¡ç ä¿¡æ¯è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-02-12 12:52:06 */ @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class TblBarcodeInformationServiceImpl extends ServiceImpl<TblBarcodeInformationMapper, TblBarcodeInformation> implements TblBarcodeInformationService { @Override public boolean SaveBarcodeInformation(List<BarcodeDeliveryNo> barcodeList, String deliveryNo) { if (CollUtil.isEmpty(barcodeList)) { return false; } List<TblBarcodeInformation> tbBarcodeInformationList = new ArrayList<TblBarcodeInformation>(); LambdaUpdateWrapper<TblBarcodeInformation> updateWrapper = new LambdaUpdateWrapper<>(); for (BarcodeDeliveryNo barcodeDeliveryNo : barcodeList) { updateWrapper.clear(); updateWrapper.eq(TblBarcodeInformation::getSmallBarcode, barcodeDeliveryNo.getSmallBarcode()); remove(updateWrapper); TblBarcodeInformation barcodeInformation = new TblBarcodeInformation(); BeanUtil.copyProperties(barcodeDeliveryNo, barcodeInformation); barcodeInformation.setDeliveryNo(deliveryNo); tbBarcodeInformationList.add(barcodeInformation); } return saveBatch(tbBarcodeInformationList); } } src/main/java/com/gs/xky/service/TblBarcodeInformationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.dto.BarcodeDeliveryNo; import com.gs.xky.entity.TblBarcodeInformation; import java.util.List; /** * @author 28567 * @description é对表ãTBL_BARCODE_INFORMATION(æ¡ç ä¿¡æ¯è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-02-12 12:52:06 */ public interface TblBarcodeInformationService extends IService<TblBarcodeInformation> { boolean SaveBarcodeInformation(List<BarcodeDeliveryNo> barcodeList, String deliveryNo); } src/main/java/com/gs/xky/service/XkyService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,110 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.gs.xky.config.ApiResponse; import com.gs.xky.config.BodyParam; import com.gs.xky.config.DataAcquisitionConfiguration; import com.gs.xky.config.XkyCommonParam; import com.gs.xky.dto.BarcodeDeliveryNo; import com.gs.xky.dto.XkyDetail; import com.gs.xky.dto.XkyEntity; import com.gs.xky.entity.DeliveryNotice; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class XkyService { private final ApiService apiService; private final DeliveryNoticeService deliveryNoticeService; private final TblBarcodeInformationService barcodeInformationService; public void GetSaveDetail() throws IOException { long currentTimeMillis = System.currentTimeMillis(); XkyCommonParam param = XkyCommonParam.GetInit(); // 计ç®äºåéåçæ¶é´æ³ long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 åé = 5 * 60 * 1000 æ¯«ç§ // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); bodyParam.setStartDate(startDate); bodyParam.setEndDate(currentTimeMillis); bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); bodyParam.setStatus(new int[]{1}); bodyParam.setLogisticsStatus(2); param.setBody(bodyParam); ApiResponse<XkyEntity> noList = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json"); // List<String> deliveryNoList = noList.getDataList().stream().map(XkyEntity::getDeliveryNo).collect(Collectors.toList()); List<XkyEntity> deliveryNoList = noList.getDataList(); LambdaUpdateWrapper<DeliveryNotice> deliveryNoticeWrapper = new LambdaUpdateWrapper<>(); deliveryNoList.forEach(deliveryNo -> { try { if ("4".equals(deliveryNo.getStatus()) || "8".equals(deliveryNo.getStatus())) { deliveryNoticeWrapper.clear(); deliveryNoticeWrapper.eq(DeliveryNotice::getDeliveryNo, deliveryNo.getDeliveryNo()); deliveryNoticeService.remove(deliveryNoticeWrapper); } XkyDetail detail = getDetail(deliveryNo.getDeliveryNo()); deliveryNoticeService.saveDeliveryNotice(detail); List<BarcodeDeliveryNo> barcodeDeliveryNos = GetBarcodeInformation(deliveryNo.getDeliveryNo()); barcodeInformationService.SaveBarcodeInformation(barcodeDeliveryNos, deliveryNo.getDeliveryNo()); } catch (IOException e) { throw new RuntimeException(e); } }); } private XkyDetail getDetail(String deliveryNo) throws IOException { XkyCommonParam param = XkyCommonParam.GetInit(); // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); bodyParam.setDeliveryNo(deliveryNo); param.setBody(bodyParam); ApiResponse<XkyDetail> noList = apiService.sendListRequest(param, XkyDetail.class, "https://openapi.xiekeyun.com/delivery/getDetail.json"); return noList.getData(); } private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException { XkyCommonParam param = XkyCommonParam.GetInit(); // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); bodyParam.setDeliveryNo(deliveryNo); param.setBody(bodyParam); ApiResponse<BarcodeDeliveryNo> noList = apiService.sendListRequest(param, BarcodeDeliveryNo.class, "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json"); return noList.getDataList(); } } src/main/resources/mapper/DeliveryNoticeDetailMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.DeliveryNoticeDetailMapper"> </mapper> src/main/resources/mapper/DeliveryNoticeMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.DeliveryNoticeMapper"> <select id="getNextVal" resultType="java.lang.Long"> SELECT SEQ_XKY.NEXTVAL FROM DUAL </select> </mapper> src/main/resources/mapper/TblBarcodeInformationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.TblBarcodeInformationMapper"> </mapper> src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,9 +1,6 @@ package com.gs.xky; import com.alibaba.fastjson.JSON; import com.gs.xky.config.*; import com.gs.xky.dto.XkyEntity; import com.gs.xky.service.ApiService; import com.gs.xky.service.XkyService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -15,45 +12,12 @@ @Autowired private ApiService apiService; private XkyService xkyService; @Test void contextLoads() throws IOException { long currentTimeMillis = System.currentTimeMillis(); ApiCommonParam apiParam = new ApiCommonParam(); apiParam.setAppKey(DataAcquisitionConfiguration.TEST_APP_KEY);//åæºå®¢äºæä¾çappKey apiParam.setVersion("1.0");//æ¥å£çæ¬ apiParam.setOperateCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//æä½è æå±å ¬å¸ç¼ç apiParam.setOwnerCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//æ°æ®æå±å ¬å¸ç¼ç ,ééå¢å ¬å¸é»è®¤èµå¼ä¸ºæä½å ¬å¸ apiParam.setTimestamps(currentTimeMillis / 1000);//å½åæ¶é´å¯¹åºçæ¶é´æ³ï¼ç§æ°ï¼ String appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET;//æºå®¢äºæä¾çappSecret String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret); apiParam.setSign(sign); // 计ç®äºåéåçæ¶é´æ³ long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 åé = 5 * 60 * 1000 æ¯«ç§ // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); bodyParam.setStartDate(startDate); bodyParam.setEndDate(currentTimeMillis); bodyParam.setErpCode("Z106"); bodyParam.setStatus(new int[]{1}); bodyParam.setLogisticsStatus(2); XkyCommonParam param = new XkyCommonParam(); param.setCommonParam(apiParam); param.setBody(bodyParam); ApiResponse<XkyEntity> xkyEntityApiResponse = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json"); System.out.println(JSON.toJSONString(xkyEntityApiResponse)); xkyService.GetSaveDetail(); } }