README.md
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,157 @@ # éè´è®¢å管çç³»ç» ## é¡¹ç®æ¦è¿° éè´è®¢å管çç³»ç»ç¨äºç®¡çä¼ä¸çéè´æµç¨ï¼å æ¬éè´è®¢åãéè´§éç¥ãæ¶è´§çåè½ãç³»ç»ä¸»è¦å®ç°äºERPç³»ç»ä¸SRMç³»ç»ä¹é´çéè´æ°æ®æ¯å¯¹åè½ï¼å¸®å©ä¼ä¸åæ¶åç°å¹¶å¤ç两个系ç»ä¹é´çæ°æ®å·®å¼ã ## ææ¯æ¶æ - Spring Bootæ¡æ¶ - MyBatis Plus ORMæ¡æ¶ - Oracleæ°æ®åº - åå端åç¦»æ¶æ ## 主è¦åè½æ¨¡å 1. éè´è®¢å管ç 2. éè´§éç¥ç®¡ç 3. æ¶è´§ç®¡ç 4. é货管ç 5. ä¾åºå管ç 6. ERPä¸SRMç³»ç»æ°æ®æ¯å¯¹ ## æ ¸å¿æ°æ®å®ä½ - **éè´è®¢åæç»(PurchaseOrderDetail)**: åå¨SRMç³»ç»éè´è®¢åæ°æ® - **ERPéè´è®¢åæ°æ®(MesRohInData)**: åå¨ERPç³»ç»éè´è®¢åæ°æ® - **éè´è®¢åæ¯å¯¹ç»æ(PurchaseOrderCompare)**: åå¨ä¸¤ç³»ç»æ°æ®æ¯å¯¹ç»æ ## æ ¸å¿åè½å®ç° ### æ°æ®åæ¥ä¸æ¯å¯¹æµç¨ 1. ä»SRMç³»ç»APIè·åéè´è®¢åæç»æ°æ® 2. æ ¹æ®åå·å项次æ¥è¯¢ERPç³»ç»ä¸å¯¹åºçéè´è®¢åæ°æ® 3. 计ç®ä¸¤ä¸ªç³»ç»ä¸çå¾ æ¶æ°éå·®å¼ 4. å°æ¯å¯¹ç»æä¿åå°æ°æ®åº ### ä½¿ç¨æ³¨æäºé¡¹ - APIè°ç¨é¢çä¸ä½äº2å°æ¶ - è¯·æ±æ¶é´èå´ä¸å¤§äº24å°æ¶ - æ°æ®ç±»å转æ¢é注æï¼ERPç³»ç»(Long)ä¸SRMç³»ç»(Integer) ## æ°æ®åºè¡¨ç»æ 项ç®ä¸å å«ä»¥ä¸ä¸»è¦æ°æ®è¡¨ï¼ 1. `PURCHASE_ORDER_DETAIL` - åå¨SRMç³»ç»éè´è®¢åæç»æ°æ® 2. `MES_ROH_IN_DATA` - åå¨ERPç³»ç»éè´è®¢åæ°æ® 3. `PURCHASE_ORDER_COMPARE` - åå¨ERPä¸SRMç³»ç»æ°æ®æ¯å¯¹ç»æ ### è¡¨ç»æè¯´æ #### éè´è®¢åæç»è¡¨(PURCHASE_ORDER_DETAIL)çOracleè¡¨ç»æ ```sql CREATE TABLE PURCHASE_ORDER_DETAIL ( ID NUMBER(19) PRIMARY KEY, PRODUCT_CODE VARCHAR2(50), PRODUCT_NAME VARCHAR2(100), PRODUCT_SCALE VARCHAR2(200), INNER_VENDOR_CODE VARCHAR2(50), INNER_VENDOR_NAME VARCHAR2(100), PROFIT_CENTER_CODE VARCHAR2(50), PROFIT_CENTER_NAME VARCHAR2(100), PURCHASE_TYPE NUMBER(2), PO_ERP_NO VARCHAR2(50), LINE_NO VARCHAR2(50), PO_LINE_NO_SHOW VARCHAR2(50), ERP_PURCHASE_DATE NUMBER(19), ORDER_STATUS VARCHAR2(2), PO_LINE_STATUS NUMBER(2), PURCHASE_UNIT_CODE VARCHAR2(20), PURCHASE_UNIT_NAME VARCHAR2(20), TOTAL_ANSWER_QTY NUMBER(10), TOTAL_DELIVERY_QTY NUMBER(10), TOTAL_RECEIVE_QTY NUMBER(10), TOTAL_RETURN_QTY NUMBER(10), PO_WAIT_DELIVERY_QTY NUMBER(10), SYS_WAIT_DELIVERY_QTY NUMBER(10), RETURN_WAIT_DELIVERY_QTY NUMBER(10), EXPECTED_DATE NUMBER(19), NOTICE_QTY NUMBER(10), NOTICE_UN_DELIVERY_QTY NUMBER(10), TOTAL_REPORT_FINISH_QTY NUMBER(10), ISSUED_SETS NUMBER(10), RECEIVE_STATUS NUMBER(2), VALID_FLAG NUMBER(1), EXTEND_N01 VARCHAR2(200), EXTEND_N02 VARCHAR2(200), EXTEND_N03 VARCHAR2(200), EXTEND_N04 VARCHAR2(200), EXTEND_N05 VARCHAR2(200), EXTEND_N06 VARCHAR2(200), EXTEND_N07 VARCHAR2(200), EXTEND_N08 VARCHAR2(200), EXTEND_N09 VARCHAR2(200), EXTEND_N10 VARCHAR2(200), EXTEND_N11 VARCHAR2(200), EXTEND_N12 VARCHAR2(200) ); ``` #### éè´è®¢åæ¯å¯¹è¡¨(PURCHASE_ORDER_COMPARE)çOracleè¡¨ç»æ ```sql CREATE TABLE PURCHASE_ORDER_COMPARE ( ID NUMBER(19) PRIMARY KEY, BILL_NO VARCHAR2(50), ORDER_LINE_ID VARCHAR2(50), LINE_NO VARCHAR2(50), ERP_PURCHASE_QTY NUMBER(10), ERP_RECEIVED_QTY NUMBER(10), ERP_WAIT_RECEIVE_QTY NUMBER(10), SRM_PURCHASE_QTY NUMBER(10), SRM_RECEIVED_QTY NUMBER(10), SRM_WAIT_RECEIVE_QTY NUMBER(10), DIFF_FLAG NUMBER(1), DIFF_QTY NUMBER(10), PRODUCT_CODE VARCHAR2(50), PRODUCT_NAME VARCHAR2(100), CREATE_TIME DATE, UPDATE_TIME DATE ); ``` ### åºå ç¨äºä¸»é®IDçæçåºåï¼ ```sql CREATE SEQUENCE SEQ_PURCHASE_ORDER_DETAIL START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; CREATE SEQUENCE SEQ_PURCHASE_ORDER_COMPARE START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; ``` ## 项ç®ç»´æ¤ å¦éä¿®æ¹ææ·»å åæ®µï¼è¯·å¨ç¸åºçå®ä½ç±»æä»¶ä¸è¿è¡ä¿®æ¹ï¼å¹¶ä¿æä¸æ°æ®åºè¡¨ç»æåæ¥ã ### æ°æ®åºç»´æ¤ å¦éä¿®æ¹æ°æ®åºè¡¨ç»æï¼è¯·æç §ä»¥ä¸æ¥éª¤ï¼ 1. ä¿®æ¹å®ä½ç±»æä»¶ä¸çåæ®µå®ä¹ 2. ä¿®æ¹å¯¹åºçSQLæä»¶ä¸çè¡¨ç»æå®ä¹ 3. æ§è¡SQLè¯å¥æ´æ°æ°æ®åºè¡¨ç»æ logs/xky_service.log
¶Ô±ÈÐÂÎļþ ÎļþÌ«´ó logs/xky_service.log.2025-05-21.0.gzBinary files differ
src/main/java/com/gs/xky/config/PurchaseParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.gs.xky.config; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @AllArgsConstructor @NoArgsConstructor @JsonInclude(JsonInclude.Include.NON_EMPTY) // è¿è¡ä¼æé¤æææå¼ä¸º null çåæ®µ public class PurchaseParam implements Serializable { private static final long serialVersionUID = 1L; //å¼å§æ¶é´å¯¹åºçæ¯«ç§æ¶é´æ³æ°å¼; private long startTime; //ç»ææ¶é´å¯¹åºçæ¯«ç§æ¶é´æ³æ°å¼; private long endTime; //å¯¹åºæ°æ®æä½å ¬å¸ä¸ï¼å工档æ¡éâERP叿·âçå¼ï¼ä¸»è¦åæ°æ®é´æä½¿ç¨ private String erpCode; //éè´ç±»åå®ä¹è¯´æ(1ä¸è¬éè´, 2å§å¤éè´,3å¤è§éè´,4è´¹ç¨éè´,5åºèµéè´,6å¢å¤ç´é,7å¢å¤éè´,8å¹³å°éè´,9VMIéè´,10æ ·åéè´,11æè®©è®¢å,12é货订åï¼13_代é订å); private int[] purchaseTypeList; //订åç¶æå®ä¹è¯´æï¼1å¾ ä¾åºåç交, 2交æå·®å¼å¾ 确认, 3éåå¾ ä¾åºåç交,4åæ´ç¡®è®¤ä¸,5订å已确认, 6å·²ç»æ¡, 7å·²å»ç», 8å·²çç½®,9é¢è®¢å,10æ¤åç交,11éè´æ¹æ¤å,12ä½åº,13ä¾åºåæ¹æç»,14å¾ åéï¼; private int[] orderStatusList; } src/main/java/com/gs/xky/config/XkyCommonParam.java
@@ -8,14 +8,14 @@ @Data @AllArgsConstructor @NoArgsConstructor public class XkyCommonParam { public class XkyCommonParam<T> { private ApiCommonParam commonParam; private BodyParam body; private T body; public static XkyCommonParam GetInit() { public static <T> XkyCommonParam<T> GetInit() { long currentTimeMillis = System.currentTimeMillis(); @@ -31,7 +31,7 @@ String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret); apiParam.setSign(sign); XkyCommonParam commonParam = new XkyCommonParam(); XkyCommonParam<T> commonParam = new XkyCommonParam<>(); commonParam.setCommonParam(apiParam); return commonParam; src/main/java/com/gs/xky/entity/MesRohIn.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,218 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * éè´è®¢å表 * * @TableName MES_ROH_IN */ @TableName(value = "MES_ROH_IN") @Data public class MesRohIn implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_BASEINFO_ID */ @TableId private Long id; /** * éè´åå· */ private String billNo; /** * åæ®ç¶æ */ private String documentStatus; /** * åæ®ç±»å */ private String documentType; /** * ä¸å¡ç±»å */ private String businessType; /** * éè´æ¥æ */ private Date purchaseDate; /** * ä¾åºå */ private String supplier; /** * åä¸å¡å ³éåæ®µ 0==æªå ³é 1==ä¸å¡å ³é */ private String closeStatus; /** * éè´ç»ç» */ private String purchaseOrg; /** * éè´é¨é¨ */ private String purchaseDept; /** * éè´ç» */ private String purchaseGroup; /** * æ°ééªæ¶ */ private String qtyAcceptance; /** * éè´å */ private String purchaser; /** * è´¨éè¦æ± */ private String qualityReq; /** * ç»ç®æ¹ */ private String settlementParty; /** * æ¶æ¬¾æ¹ */ private String paymentParty; /** * é®ç®± */ private String email; /** * è¿è¾æ¹å¼ */ private String transportMethod; /** * 夿³¨ */ private String remarks; /** * æ²»å ·ä¸¶æ¨¡å ·å å·¥åéè´ */ private String fixtureMoldProcurement; /** * ä½åºç¶æ */ private String cancellationStatus; /** * ä½åºäºº */ private String cancellationPerson; /** * ä½åºæ¥æ */ private Date cancellationDate; /** * å建人 */ private String createBy; /** * åå»ºæ¥æ */ private Date createDate; /** * æåä¿®æ¹æ¶é´ */ private Date lastupdateDate; /** * æåä¿®æ¹äºº */ private String lastupdateBy; /** * å®¡æ ¸äºº */ private String erpCheckBy; /** * å®¡æ ¸æ¶é´ */ private String erpCheckDate; /** * ERPçIDå· */ private String ebelnK3id; /** * å®¡æ ¸æ¥æ */ private Date checkDate; /** * å®¡æ ¸äºº */ private String checkBy; /** * å®¡æ ¸æ è¯ */ private Integer checkFalg; /** * èªå®ä¹å段1 */ private String remark1; /** * èªå®ä¹å段2 */ private String remark2; /** * èªå®ä¹å段3 */ private String remark3; /** * èªå®ä¹å段4 */ private String remark4; /** * èªå®ä¹å段5 */ private String remark5; /** * åæ´åå */ private String changereason; /** * é¢è®¡å°è¾¾æ¶é´ */ private Date arriveDate; /** * æ¶æç»ç» */ private String receiveOrg; /** * å®¡æ¹æè§ */ private String fWwcText; /** * æ¥æºç±»å«,0=æå·¥ 1=请è´å 3=éæ±æ¥å£è¡¨ 4=éè´åå 6=éè´è®¢å 7=éå®è®¢å */ private String srcDocType; /** * æ¥æºåæ® */ private String srcDoc; /** * è´¸æè·¯å¾ */ private String tradePathName; /** * å§å¤ç±»ååæ®µææªä½¿ç¨ï¼é»è®¤å¼-1 */ private String subType; /** * è¿å·¥è®¢å æ¯å¦å¾é项 0==ä¸å¾é 1==å¾éï¼é»è®¤ä¸å¾é */ private Integer isReDo; /** * 项ç®éè´è´è´£äºº */ private String privateDescSeg1; /** * åæ®çæ¬ */ private String version; } src/main/java/com/gs/xky/entity/MesRohInData.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,270 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * éè´è®¢åæç»è¡¨ * * @TableName MES_ROH_IN_DATA */ @TableName(value = "MES_ROH_IN_DATA") @Data public class MesRohInData implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_BASEINFO_ID */ @TableId private Long id; /** * éè´åå· */ private String billNo; /** * éå®è®¢åå· */ private String salesOrderId; /** * éè´è®¢åè¡å· */ private String orderLineId; /** * ç©æç¼ç */ private String itemId; /** * éè´åä½ */ private String purchaseUnit; /** * éè´æ°é */ private Long purchaseQty; /** * åºååä½ */ private String inventoryUnit; /** * 计价åä½ */ private String pricingUnit; /** * 计价æ°é */ private Long pricingQty; /** * äº¤è´§æ¥æ */ private Date deliveryDate; /** * ææ©äº¤è´§æ¥æ */ private Date earliestDeliveryDate; /** * ææäº¤è´§æ¥æ */ private Date latestDeliveryDate; /** * éæ±ç»ç» */ private String demandOrg; /** * æ¶æç»ç» */ private String receivingOrg; /** * ç»ç®ç»ç» */ private String settlementOrg; /** * æ¯å¦èµ å */ private String isGift; /** * 夿³¨ */ private String remarks; /** * ä¾åºåç©æç¼ç */ private String supplierItemCode; /** * ä¾åºåç©æåç§° */ private String supplierItemName; /** * å§å¤è®¢åç¼å· */ private String outsourcingOrderId; /** * æ¹å· */ private String batchNumber; /** * ä¸å¡å ³é A:æ£å¸¸ï¼B:ä¸å¡ç»æ¢ */ private String businessClose; /** * ä¸å¡å»ç» A:æ£å¸¸ï¼B:ä¸å¡ç»æ¢ */ private String businessFreeze; /** * å»ç»äºº */ private String freezer; /** * å»ç»æ¶é´ */ private Date freezeTime; /** * ä¸å¡ç»æ¢ */ private String businessTerminate; /** * ç»æ¢äºº */ private String terminator; /** * ç»æ¢æ¶é´ */ private Date terminateTime; /** * ç´¯è®¡æ¶ææ°é */ private Long totalReceivedQty; /** * å©ä½æ¶ææ°é */ private Long remainingReceivedQty; /** * ç´¯è®¡å ¥åºæ°é */ private Long totalStoredQty; /** * å©ä½å ¥åºæ°é */ private Long remainingStoredQty; /** * ç´¯è®¡éææ°é */ private Long totalReturnedQty; /** * æ¶æå¯éæ°é */ private Long returnableReceivedQty; /** * åºåå¯éæ°é */ private Long returnableStoredQty; /** * æºåç±»å */ private String sourceDocumentType; /** * æºååå· */ private String sourceDocumentId; /** * éæ±è·è¸ªå· */ private String demandTrackingId; /** * 计åè·è¸ªå· */ private String planTrackingId; /** * åæ´æ å¿ */ private String changeFlag; /** * éæ±æ¥æº */ private String demandSource; /** * 鿱忮ç¼å· */ private String demandDocumentId; /** * 鿱忮è¡å· */ private String demandDocumentLineId; /** * ERPçIDå· */ private String ebelnK3id; /** * èªå®ä¹å段1 */ private String remark1; /** * èªå®ä¹å段2 */ private String remark2; /** * èªå®ä¹å段3 */ private String remark3; /** * èªå®ä¹å段4 */ private String remark4; /** * èªå®ä¹å段5 */ private String remark5; /** * ERP头ID */ private String erpId; /** * éè´è®¢åè¡å· */ private String purchaseOrderLineNumber; /** * éæ±ç»ç» */ private String demand; /** * æ¶æç»ç» */ private String receiving; /** * ç»ç®ç»ç» */ private String settlement; /** * 已交货æ°é */ private Long cgb014; /** * éæ±é¨é¨ */ private String demandDept; /** * æ¶æé¨é¨ */ private String receivingDept; /** * é¢è®¡å°è´§æ¶é´ */ private Date arriveDate; /** * 项ç®ï¼ç åï¼ */ private String rdProject; /** * é¡¹ç® */ private String project; /** * 项ç®éè´äºº */ private String projectPurchaser; } src/main/java/com/gs/xky/entity/PurchaseOrderCompare.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,85 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * ERPä¸SRMéè´è®¢åæ°æ®æ¯å¯¹è¡¨ * * @TableName PURCHASE_ORDER_COMPARE */ @TableName(value = "PURCHASE_ORDER_COMPARE") @Data @KeySequence(value = "SEQ_PURCHASE_ORDER_COMPARE", dbType = DbType.ORACLE) public class PurchaseOrderCompare implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * 主é®ID */ @TableId private Long id; /** * ERPéè´åå· */ private String billNo; /** * ERPé¡¹æ¬¡å· */ private String orderLineId; /** * SRM项次å¯ä¸ID */ private String lineNo; /** * ERPéè´æ°é */ private Integer erpPurchaseQty; /** * ERP宿¶æ°é */ private Integer erpReceivedQty; /** * ERPå¾ æ¶æ°é */ private Integer erpWaitReceiveQty; /** * SRMéè´æ°é */ private Integer srmPurchaseQty; /** * SRM宿¶æ°é */ private Integer srmReceivedQty; /** * SRMå¾ æ¶æ°é */ private Integer srmWaitReceiveQty; /** * æ°é差弿 è¯ï¼0ï¼æ å·®å¼ï¼1ï¼æå·®å¼ï¼ */ private Integer diffFlag; /** * 差弿°éï¼SRMå¾ æ¶æ°é - ERPå¾ æ¶æ°éï¼ */ private Integer diffQty; /** * 产åç¼ç */ private String productCode; /** * 产ååç§° */ private String productName; /** * å建æ¶é´ */ private Date createTime; /** * æ´æ°æ¶é´ */ private Date updateTime; } src/main/java/com/gs/xky/entity/PurchaseOrderDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,192 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; /** * éè´è®¢åæç»è¡¨ * * @TableName PURCHASE_ORDER_DETAIL */ @TableName(value = "PURCHASE_ORDER_DETAIL") @Data @KeySequence(value = "SEQ_PURCHASE_ORDER_DETAIL", dbType = DbType.ORACLE) public class PurchaseOrderDetail implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * SEQ_PURCHASE_ORDER_DETAIL */ @TableId private Long id; /** * 产åç¼ç */ private String productCode; /** * 产ååç§° */ private String productName; /** * 产åè§æ ¼ */ private String productScale; /** * å é¨ä¾åºåç¼ç */ private String innerVendorCode; /** * å é¨ä¾åºååç§° */ private String innerVendorName; /** * 婿¶¦ä¸å¿ç¼ç */ private String profitCenterCode; /** * 婿¶¦ä¸å¿åç§° */ private String profitCenterName; /** * éè´ç±»å(1ä¸è¬éè´, 2å§å¤éè´,3å¤è§éè´,4è´¹ç¨éè´,5åºèµéè´,6å¢å¤ç´é,7å¢å¤éè´,8å¹³å°éè´,9VMIéè´,10æ ·åéè´,11æè®©è®¢å,12é货订å,13代é订å) */ private Integer purchaseType; /** * erpåå· */ private String poErpNo; /** * 项次å¯ä¸ID */ private String lineNo; /** * 页é¢å±ç¤ºé¡¹æ¬¡ */ private String poLineNoShow; /** * éè´æ¥æ */ private Long erpPurchaseDate; /** * 订åç¶æ(1å¾ ä¾åºåç交, 2交æå·®å¼å¾ 确认, 3éåå¾ ä¾åºåç交,4åæ´ç¡®è®¤ä¸,5订å已确认, 6å·²ç»æ¡, 7å·²å»ç», 8å·²çç½®,9é¢è®¢å,10æ¤åç交,11éè´æ¹æ¤å,12ä½åº,13ä¾åºåæ¹æç»,14å¾ åé) */ private String orderStatus; /** * è¡ç¶æ 0ï¼æ£å¸¸ï¼1ï¼ç»æ¡ï¼2ï¼çç½®ï¼3ï¼å»ç» */ private Integer poLineStatus; /** * éè´åä½ç¼ç */ private String purchaseUnitCode; /** * éè´åä½åç§° */ private String purchaseUnitName; /** * 订å确认æ°é */ private Integer totalAnswerQty; /** * å¹³å°åºè´§é */ private Integer totalDeliveryQty; /** * æ¶è´§æ°é */ private Integer totalReceiveQty; /** * éè´§æ°é */ private Integer totalReturnQty; /** * 订åå¾ äº¤æ°é */ private Integer poWaitDeliveryQty; /** * è¡¥åå¾ åºè´§é */ private Integer sysWaitDeliveryQty; /** * éè´§å¾ åºæ°é */ private Integer returnWaitDeliveryQty; /** * äº¤è´§æ¥æ */ private Long expectedDate; /** * éç¥äº¤è´§é */ private Integer noticeQty; /** * éç¥å¾ 交é */ private Integer noticeUnDeliveryQty; /** * å®å·¥æ°é */ private Integer totalReportFinishQty; /** * åæå¥æ° */ private Integer issuedSets; /** * æ¶è´§ç¶æ 0ï¼å¾ æ¶è´§ï¼1ï¼é¨åæ¶è´§ 2:æ¶è´§å®æ */ private Integer receiveStatus; /** * 失æå¦ 0ï¼æ æï¼1ï¼ææ */ private Integer validFlag; /** * æ©å±å段1 */ private String extendN01; /** * æ©å±å段2 */ private String extendN02; /** * æ©å±å段3 */ private String extendN03; /** * æ©å±å段4 */ private String extendN04; /** * æ©å±å段5 */ private String extendN05; /** * æ©å±å段6 */ private String extendN06; /** * æ©å±å段7 */ private String extendN07; /** * æ©å±å段8 */ private String extendN08; /** * æ©å±å段9 */ private String extendN09; /** * æ©å±å段10 */ private String extendN10; /** * æ©å±å段11 */ private String extendN11; /** * æ©å±å段12 */ private String extendN12; } src/main/java/com/gs/xky/mapper/MesRohInDataMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.MesRohInData; /** * @author 28567 * @description é对表ãMES_ROH_IN_DATA(éè´è®¢åæç»è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-05-26 15:39:07 * @Entity com.gs.xky.entity.MesRohInData */ public interface MesRohInDataMapper extends BaseMapper<MesRohInData> { } src/main/java/com/gs/xky/mapper/MesRohInMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.MesRohIn; /** * @author 28567 * @description é对表ãMES_ROH_IN(éè´è®¢å表)ãçæ°æ®åºæä½Mapper * @createDate 2025-05-26 15:39:01 * @Entity com.gs.xky.entity.MesRohIn */ public interface MesRohInMapper extends BaseMapper<MesRohIn> { } src/main/java/com/gs/xky/mapper/PurchaseOrderCompareMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.PurchaseOrderCompare; /** * @author 28567 * @description é对表ãPURCHASE_ORDER_COMPARE(ERPä¸SRMéè´è®¢åæ°æ®æ¯å¯¹è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-05-26 19:18:17 * @Entity generator.domain.PurchaseOrderCompare */ public interface PurchaseOrderCompareMapper extends BaseMapper<PurchaseOrderCompare> { } src/main/java/com/gs/xky/mapper/PurchaseOrderDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.PurchaseOrderDetail; /** * éè´è®¢åæç»è¡¨Mapperæ¥å£ */ public interface PurchaseOrderDetailMapper extends BaseMapper<PurchaseOrderDetail> { } src/main/java/com/gs/xky/service/ApiService.java
@@ -33,7 +33,7 @@ objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); } public <T> ApiResponse<T> sendListRequest(XkyCommonParam requestBody, Class<T> responseType, String url) throws IOException { public <T, B> ApiResponse<T> sendListRequest(XkyCommonParam<B> requestBody, Class<T> responseType, String url) throws IOException { // 设置请æ±ä½çåªä½ç±»å为 application/json MediaType mediaType = MediaType.parse("application/json"); src/main/java/com/gs/xky/service/Impl/MesRohInDataServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.MesRohInData; import com.gs.xky.mapper.MesRohInDataMapper; import com.gs.xky.service.MesRohInDataService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãMES_ROH_IN_DATA(éè´è®¢åæç»è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-05-26 15:39:07 */ @Service public class MesRohInDataServiceImpl extends ServiceImpl<MesRohInDataMapper, MesRohInData> implements MesRohInDataService { } src/main/java/com/gs/xky/service/Impl/MesRohInServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.MesRohIn; import com.gs.xky.mapper.MesRohInMapper; import com.gs.xky.service.MesRohInService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãMES_ROH_IN(éè´è®¢å表)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-05-26 15:39:01 */ @Service public class MesRohInServiceImpl extends ServiceImpl<MesRohInMapper, MesRohIn> implements MesRohInService { } src/main/java/com/gs/xky/service/Impl/PurchaseOrderCompareServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.PurchaseOrderCompare; import com.gs.xky.mapper.PurchaseOrderCompareMapper; import com.gs.xky.service.PurchaseOrderCompareService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãPURCHASE_ORDER_COMPARE(ERPä¸SRMéè´è®¢åæ°æ®æ¯å¯¹è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-05-26 19:18:17 */ @Service public class PurchaseOrderCompareServiceImpl extends ServiceImpl<PurchaseOrderCompareMapper, PurchaseOrderCompare> implements PurchaseOrderCompareService { } src/main/java/com/gs/xky/service/Impl/PurchaseOrderDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.PurchaseOrderDetail; import com.gs.xky.mapper.PurchaseOrderDetailMapper; import com.gs.xky.service.PurchaseOrderDetailService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãPURCHASE_ORDER_DETAIL(éè´è®¢åæç»è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-05-26 16:49:51 */ @Service public class PurchaseOrderDetailServiceImpl extends ServiceImpl<PurchaseOrderDetailMapper, PurchaseOrderDetail> implements PurchaseOrderDetailService { } src/main/java/com/gs/xky/service/MesRohInDataService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.MesRohInData; /** * @author 28567 * @description é对表ãMES_ROH_IN_DATA(éè´è®¢åæç»è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-05-26 15:39:07 */ public interface MesRohInDataService extends IService<MesRohInData> { } src/main/java/com/gs/xky/service/MesRohInService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.MesRohIn; /** * @author 28567 * @description é对表ãMES_ROH_IN(éè´è®¢å表)ãçæ°æ®åºæä½Service * @createDate 2025-05-26 15:39:01 */ public interface MesRohInService extends IService<MesRohIn> { } src/main/java/com/gs/xky/service/PurchaseOrderCompareService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.PurchaseOrderCompare; /** * @author 28567 * @description é对表ãPURCHASE_ORDER_COMPARE(ERPä¸SRMéè´è®¢åæ°æ®æ¯å¯¹è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-05-26 19:18:17 */ public interface PurchaseOrderCompareService extends IService<PurchaseOrderCompare> { } src/main/java/com/gs/xky/service/PurchaseOrderDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.PurchaseOrderDetail; /** * @author 28567 * @description é对表ãPURCHASE_ORDER_DETAIL(éè´è®¢åæç»è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-05-26 16:49:51 */ public interface PurchaseOrderDetailService extends IService<PurchaseOrderDetail> { } src/main/java/com/gs/xky/service/PurchaseService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,246 @@ package com.gs.xky.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gs.xky.config.ApiResponse; import com.gs.xky.config.DataAcquisitionConfiguration; import com.gs.xky.config.PurchaseParam; import com.gs.xky.config.XkyCommonParam; import com.gs.xky.entity.MesRohInData; import com.gs.xky.entity.PurchaseOrderCompare; import com.gs.xky.entity.PurchaseOrderDetail; import com.gs.xky.mapper.PurchaseOrderCompareMapper; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.Date; import java.util.List; @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class PurchaseService { private static final Logger log = LoggerFactory.getLogger(PurchaseService.class); private final ApiService apiService; private final MesRohInDataService mesRohInDataService; private final PurchaseOrderDetailService purchaseOrderDetailService; private final PurchaseOrderCompareMapper purchaseOrderCompareMapper; /** * 忥éè´è®¢åæç»æ°æ® * ä»ç¬¬ä¸æ¹æ¥å£è·åéè´è®¢åæç»æ°æ®å¹¶ä¿åå°æ¬å°æ°æ®åº * 注æï¼è¯¥æ¥å£æä»¥ä¸éå¶ï¼ * 1. 访é®é¢çä¸è½ä½äº2å°æ¶ * 2. 䏿¬¡è¯·æ±ä¸æ¶é´èå´ä¸è½å¤§äº24å°æ¶ * * @throws IOException æ¥å£è°ç¨å¼å¸¸ */ public void syncPurchaseOrderDetails() throws IOException { long currentTimeMillis = System.currentTimeMillis(); // éå¶è¯·æ±æ¶é´èå´ä¸º24å°æ¶ long startDate = currentTimeMillis - (24 * 60 * 60 * 1000L); XkyCommonParam<PurchaseParam> param = XkyCommonParam.GetInit(); PurchaseParam bodyParam = new PurchaseParam(); bodyParam.setStartTime(startDate); bodyParam.setEndTime(currentTimeMillis); bodyParam.setErpCode(DataAcquisitionConfiguration.TEST_ERP_CODE); // æ¥è¯¢ææç¶æç订å // bodyParam.setOrderStatusList(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}); bodyParam.setPurchaseTypeList(new int[]{1}); param.setBody(bodyParam); log.info("ãsyncPurchaseOrderDetailsãå¼å§åæ¥éè´è®¢åæ°æ®ï¼æ¶é´èå´ï¼{} è³ {}", startDate, currentTimeMillis); // è°ç¨éè´è®¢åæç»æ¥å£ ApiResponse<PurchaseOrderDetail> response = apiService.sendListRequest( param, PurchaseOrderDetail.class, "https://openapi.xiekeyun.com/purchase/report/list.json" ); List<PurchaseOrderDetail> orderDetails = response.getDataList(); if (CollUtil.isEmpty(orderDetails)) { log.info("ãsyncPurchaseOrderDetailsãè¿åå表为空ï¼è·³è¿å¤ç"); return; } log.info("ãsyncPurchaseOrderDetailsãè·åå°{}æ¡éè´è®¢åæ°æ®", orderDetails.size()); // å¤çéè´è®¢åæç»æ°æ® orderDetails.forEach(detail -> { try { // æ ¹æ®æææ å¿å订åç¶æå¤çä¸åçä¸å¡é»è¾ if (detail.getValidFlag() != null && detail.getValidFlag() == 0) { log.info("ãsyncPurchaseOrderDetailsãæ æè®¢åï¼è·³è¿å¤ç: {}", detail.getPoErpNo()); return; } // è·å项次åé¢çç¼å·é¨å String linePrefix = extractLinePrefix(detail.getLineNo()); log.info("ãsyncPurchaseOrderDetailsã项次åç¼: {}", linePrefix); // æ¥è¯¢ERPç³»ç»ä¸å¯¹åºçéè´è®¢åæ°æ® LambdaQueryWrapper<MesRohInData> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MesRohInData::getBillNo, detail.getPoErpNo()) .eq(MesRohInData::getOrderLineId, linePrefix); // è·åERPæ°æ® MesRohInData erpData = mesRohInDataService.getOne(wrapper, false); if (erpData == null) { log.info("ãsyncPurchaseOrderDetailsãæªæ¾å°å¯¹åºçERPæ°æ®ï¼è®¢åå·: {}, 项次: {}", detail.getPoErpNo(), linePrefix); // å建ä¸ä¸ªå å«"ææ æ°æ®"å¼çæ¯å¯¹è®°å½ savePurchaseOrderCompare(detail, null); } else { // è®°å½æ¯å¯¹ç»æ savePurchaseOrderCompare(detail, erpData); } // ä¿åSRMéè´è®¢åæç» savePurchaseOrderDetail(detail); } catch (Exception e) { log.error("ãsyncPurchaseOrderDetails å¤çå¼å¸¸ã订åå·: {}, 项次: {}, å¼å¸¸: {}", detail.getPoErpNo(), detail.getLineNo(), e.getMessage(), e); throw new RuntimeException(e); } }); } /** * ä»lineNo䏿ååç¼é¨å * ä¾å¦ï¼ä»"10-1"䏿ååº"10" * * @param lineNo 项次ç¼å·ï¼æ ¼å¼å¦"10-1" * @return 项次åç¼ï¼å¦"10" */ private String extractLinePrefix(String lineNo) { if (lineNo == null || lineNo.isEmpty()) { return ""; } // 使ç¨"-"åå²å符串 String[] parts = lineNo.split("-"); if (parts.length > 0) { return parts[0]; // è¿å第ä¸é¨å } // å¦ææ²¡æ"-"ï¼åè¿ååå符串 return lineNo; } /** * ä¿åERPä¸SRMéè´è®¢åæ°æ®æ¯å¯¹ç»æ * * @param detail SRMéè´è®¢åæç» * @param erpData ERPéè´è®¢åæ°æ®ï¼å¯è½ä¸ºnullï¼ */ private void savePurchaseOrderCompare(PurchaseOrderDetail detail, MesRohInData erpData) { String linePrefix = extractLinePrefix(detail.getLineNo()); // æ¥è¯¢æ¯å¦å·²å卿¯å¯¹è®°å½ LambdaQueryWrapper<PurchaseOrderCompare> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(PurchaseOrderCompare::getBillNo, detail.getPoErpNo()) .eq(PurchaseOrderCompare::getLineNo, detail.getLineNo()); PurchaseOrderCompare compareData = purchaseOrderCompareMapper.selectOne(wrapper); if (compareData == null) { // å建æ°çæ¯å¯¹è®°å½ compareData = new PurchaseOrderCompare(); compareData.setBillNo(detail.getPoErpNo()); compareData.setOrderLineId(linePrefix); compareData.setLineNo(detail.getLineNo()); compareData.setProductCode(detail.getProductCode()); compareData.setProductName(detail.getProductName()); compareData.setCreateTime(new Date()); } // 计ç®SRMå¾ æ¶æ°é Integer srmPurchaseQty = detail.getTotalAnswerQty(); Integer srmReceivedQty = detail.getTotalReceiveQty(); Integer srmWaitReceiveQty = srmPurchaseQty - srmReceivedQty; // 设置SRMæ°æ® compareData.setSrmPurchaseQty(srmPurchaseQty); compareData.setSrmReceivedQty(srmReceivedQty); compareData.setSrmWaitReceiveQty(srmWaitReceiveQty); // 设置ERPæ°æ®åå·®å¼ if (erpData == null) { // ERPç³»ç»ä¸æ²¡ææ°æ®ï¼è®¾ç½®ä¸º0 compareData.setErpPurchaseQty(0); compareData.setErpReceivedQty(0); compareData.setErpWaitReceiveQty(0); compareData.setDiffFlag(1); // æå·®å¼ compareData.setDiffQty(srmWaitReceiveQty); // 差弿°é为SRMå¾ æ¶æ°é } else { // 计ç®ERPå¾ æ¶æ°é Long erpPurchaseQty = erpData.getPurchaseQty(); Long erpReceivedQty = erpData.getTotalReceivedQty(); Long erpWaitReceiveQty = erpPurchaseQty - erpReceivedQty; // 计ç®å·®å¼ Long diffQty = srmWaitReceiveQty.longValue() - erpWaitReceiveQty; // Integer diffFlag = (diffQty > 0) ? 1 : 0; Integer diffFlag = srmWaitReceiveQty.longValue() != erpWaitReceiveQty ? 1 : 0; // 设置ERPæ°æ® compareData.setErpPurchaseQty(erpPurchaseQty.intValue()); compareData.setErpReceivedQty(erpReceivedQty.intValue()); compareData.setErpWaitReceiveQty(erpWaitReceiveQty.intValue()); compareData.setDiffFlag(diffFlag); compareData.setDiffQty(diffQty.intValue()); } compareData.setUpdateTime(new Date()); // ä¿åææ´æ°æ¯å¯¹è®°å½ boolean result; if (compareData.getId() == null) { result = purchaseOrderCompareMapper.insert(compareData) > 0; if (result) { log.info("ãsavePurchaseOrderCompareãæ°å¢æ°æ®æ¯å¯¹è®°å½: 订åå·:{}, 项次:{}, 差弿 è¯:{}, 差弿°é:{}", detail.getPoErpNo(), detail.getLineNo(), compareData.getDiffFlag(), compareData.getDiffQty()); } else { log.error("ãsavePurchaseOrderCompareãæ°å¢æ°æ®æ¯å¯¹è®°å½å¤±è´¥: 订åå·:{}, 项次:{}", detail.getPoErpNo(), detail.getLineNo()); } } else { result = purchaseOrderCompareMapper.updateById(compareData) > 0; if (result) { log.info("ãsavePurchaseOrderCompareãæ´æ°æ°æ®æ¯å¯¹è®°å½: 订åå·:{}, 项次:{}, 差弿 è¯:{}, 差弿°é:{}", detail.getPoErpNo(), detail.getLineNo(), compareData.getDiffFlag(), compareData.getDiffQty()); } else { log.error("ãsavePurchaseOrderCompareãæ´æ°æ°æ®æ¯å¯¹è®°å½å¤±è´¥: 订åå·:{}, 项次:{}", detail.getPoErpNo(), detail.getLineNo()); } } } /** * ä¿åææ´æ°éè´è®¢åæç» * * @param detail éè´è®¢åæç»æ°æ® */ private void savePurchaseOrderDetail(PurchaseOrderDetail detail) { log.info("ãsavePurchaseOrderDetailãä¿åéè´è®¢åæç»: {}, 项次: {}", detail.getPoErpNo(), detail.getLineNo()); // ä¿åéè´è®¢åæç» boolean result = purchaseOrderDetailService.save(detail); if (result) { log.info("ãsavePurchaseOrderDetailãä¿åéè´è®¢åæç»æå: {}, 项次: {}", detail.getPoErpNo(), detail.getLineNo()); } else { log.error("ãsavePurchaseOrderDetailãä¿åéè´è®¢åæç»å¤±è´¥: {}, 项次: {}", detail.getPoErpNo(), detail.getLineNo()); } } } src/main/java/com/gs/xky/service/XkyService.java
@@ -44,7 +44,7 @@ long currentTimeMillis = System.currentTimeMillis(); long startDate = currentTimeMillis - (20 * 60 * 1000); // è®¡ç® 20 åéåçæ¶é´æ³ XkyCommonParam param = XkyCommonParam.GetInit(); XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit(); BodyParam bodyParam = new BodyParam(); bodyParam.setStartDate(startDate); bodyParam.setEndDate(currentTimeMillis); @@ -133,7 +133,7 @@ } private XkyDetail getDetail(String deliveryNo) throws IOException { XkyCommonParam param = XkyCommonParam.GetInit(); XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit(); // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); @@ -150,7 +150,7 @@ } private List<BarcodeDeliveryNo> GetBarcodeInformation(String deliveryNo) throws IOException { XkyCommonParam param = XkyCommonParam.GetInit(); XkyCommonParam<BodyParam> param = XkyCommonParam.GetInit(); // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); src/main/java/com/gs/xky/task/PurchaseOrderSyncTask.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.gs.xky.task; import com.gs.xky.service.PurchaseService; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; /** * éè´è®¢å忥宿¶ä»»å¡ */ @Component @RequiredArgsConstructor public class PurchaseOrderSyncTask { private static final Logger log = LoggerFactory.getLogger(PurchaseOrderSyncTask.class); private final PurchaseService purchaseService; /** * 宿¶æ§è¡éè´è®¢ååæ¥ä»»å¡ * æ¯å¤©12ç¹æ´æ§è¡ä¸æ¬¡ * 设置为12ç¹05åæ§è¡ï¼é¿å ä¸å ¶ä»å®æ¶ä»»å¡å²çª */ @Scheduled(cron = "0 5 12 * * ?") public void syncPurchaseOrders() { log.info("ãsyncPurchaseOrdersãå¼å§æ§è¡éè´è®¢å忥任å¡"); try { purchaseService.syncPurchaseOrderDetails(); log.info("ãsyncPurchaseOrdersãéè´è®¢å忥任塿§è¡æå"); } catch (IOException e) { log.error("ãsyncPurchaseOrdersãéè´è®¢å忥任塿§è¡å¼å¸¸: {}", e.getMessage(), e); } } } src/main/resources/mapper/MesRohInDataMapper.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.MesRohInDataMapper"> </mapper> src/main/resources/mapper/MesRohInMapper.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.MesRohInMapper"> </mapper> src/main/resources/mapper/PurchaseOrderCompareMapper.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.PurchaseOrderCompareMapper"> </mapper> src/main/resources/mapper/PurchaseOrderDetailMapper.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.PurchaseOrderDetailMapper"> </mapper> src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,7 +1,10 @@ package com.gs.xky; import com.alibaba.fastjson.JSON; import com.gs.xky.config.*; 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.entity.MesInvItemArn; @@ -34,6 +37,8 @@ @Autowired private MesInvItemArnService invItemArnService; @Autowired private PurchaseService service; @Test void contextLoads() throws IOException { @@ -46,7 +51,7 @@ @Test public void getDeviceRealTimeData() throws IOException { xkyService.GetSaveDetail(); xkyService.GetSaveDetail(); } @Test @@ -132,7 +137,6 @@ System.out.println(jsonString); } @Test void cs2() throws IOException { // DingTalkParam dingTalkParam = new DingTalkParam(1); @@ -154,7 +158,7 @@ @Test void cs3() throws IOException { String str = "{\"state\":\"500\",\"msg\":\"{\\\"Result\\\":{\\\"ResponseStatus\\\":{\\\"ErrorCode\\\":500,\\\"IsSuccess\\\":false,\\\"Errors\\\":[{\\\"FieldName\\\":null,\\\"Message\\\":\\\"æç»ä¿¡æ¯ç¬¬1è¡çç产éç¥åå¼ä¸º:ã127147ãä¸åå¨ï¼\\\\r\\\\n\\\",\\\"DIndex\\\":0}],\\\"SuccessEntitys\\\":[],\\\"SuccessMessages\\\":[],\\\"MsgCode\\\":11},\\\"Id\\\":\\\"\\\",\\\"Number\\\":\\\"\\\",\\\"NeedReturnData\\\":[{}]}}\"}"; service.syncPurchaseOrderDetails(); } }