Browse Source

【越加红】【WMS对接】【入库创建、入库确认】

wuyx 7 months ago
parent
commit
e500bf46b6
25 changed files with 318 additions and 834 deletions
  1. 2 2
      src/main/java/com/uas/eis/config/VwmsConfig.java
  2. 1 7
      src/main/java/com/uas/eis/controller/ERPController.java
  3. 9 4
      src/main/java/com/uas/eis/controller/ERPWMSController.java
  4. 14 9
      src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java
  5. 1 8
      src/main/java/com/uas/eis/entity/vwms/entity/EntryOrder.java
  6. 3 24
      src/main/java/com/uas/eis/entity/vwms/entity/OrderLine.java
  7. 0 1
      src/main/java/com/uas/eis/entity/vwms/entity/OrderLineIn.java
  8. 1 36
      src/main/java/com/uas/eis/entity/vwms/entity/OrderLineMove.java
  9. 7 3
      src/main/java/com/uas/eis/entity/vwms/entity/OrderLineOut.java
  10. 3 1
      src/main/java/com/uas/eis/entity/vwms/entity/ProdInout.java
  11. 0 3
      src/main/java/com/uas/eis/entity/vwms/req/BaseReq.java
  12. 8 0
      src/main/java/com/uas/eis/entity/vwms/req/EntryOrderAndDetRequest.java
  13. 67 297
      src/main/java/com/uas/eis/entity/vwms/req/INConfirm.java
  14. 16 0
      src/main/java/com/uas/eis/entity/vwms/resp/IOResp.java
  15. 13 0
      src/main/java/com/uas/eis/sdk/entity/WMSApiResult.java
  16. 1 2
      src/main/java/com/uas/eis/service/DocCommonService.java
  17. 0 3
      src/main/java/com/uas/eis/service/ERPService.java
  18. 2 1
      src/main/java/com/uas/eis/service/ERPWMSService.java
  19. 82 198
      src/main/java/com/uas/eis/service/Impl/DocCommonServiceImpl.java
  20. 47 48
      src/main/java/com/uas/eis/service/Impl/ERPSWMServiceImpl.java
  21. 15 155
      src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java
  22. 0 17
      src/main/java/com/uas/eis/task/BatchZhanglingSyncTask.java
  23. 1 2
      src/main/java/com/uas/eis/utils/HttpUtil.java
  24. 1 1
      src/main/resources/vwms.properties
  25. 24 12
      src/test/java/com/uas/eis/UasEisApplicationTests.java

+ 2 - 2
src/main/java/com/uas/eis/config/VwmsConfig.java

@@ -21,6 +21,6 @@ public class VwmsConfig {
     @Value("${vwms.warehouse.code}")
     private String warehouseCode;
 
-    @Value("${ownerCode}")
-    private String ownerCode;
+//    @Value("${ownerCode}")
+//    private String ownerCode;
 }

+ 1 - 7
src/main/java/com/uas/eis/controller/ERPController.java

@@ -45,13 +45,7 @@ public class ERPController {
     @RequestMapping(value="/erp/cancelIO",method=RequestMethod.POST)
     @ResponseBody
     public Map<String, Object> cancelIO(String master, String id,String emCode,String caller,String op){
-        return erpService.cancelIO(master,id,emCode,caller,op);
-    }
-
-    @RequestMapping(value="/erp/sendStockData",method=RequestMethod.POST)
-    @ResponseBody
-    public Map<String, Object> sendStockData(String master, String emCode){
-        return erpService.sendStockData(master,emCode);
+        return null;
     }
 
 }

+ 9 - 4
src/main/java/com/uas/eis/controller/ERPWMSController.java

@@ -1,8 +1,11 @@
 package com.uas.eis.controller;
 
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import com.uas.eis.sdk.entity.WMSApiResult;
 import com.uas.eis.sdk.entity.WMSApiResultResp;
 import com.uas.eis.service.ERPWMSService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -25,11 +28,13 @@ public class ERPWMSController {
      * ● http://{openapiUrl}?method=openapi.entryorder.confirm&timestamp=2015-04-26%2000:00:07&format=xml&app_key={app_key}&v=2.0&sign=D06D88CB34B2EC0E5C9BAB396C9542B6&sign_method=md5&customerId={customerId}
      *
      */
-    @RequestMapping(value="/wms",method=RequestMethod.POST)
+    @RequestMapping(value="/wms",method=RequestMethod.POST, produces = MediaType.APPLICATION_XML_VALUE)
     @ResponseBody
-    public WMSApiResultResp IOConfirm(String method, HttpServletRequest request) throws IOException {
-        ;
-        return erpwmsService.IOConfirm(method, request);
+    public String IOConfirm(String method, HttpServletRequest request) throws IOException {
+        WMSApiResult res = erpwmsService.IOConfirm(method, request);
+        XmlMapper xmlMapper = new XmlMapper();
+        String xml = xmlMapper.writeValueAsString(res);
+        return xml;
     }
 
 

+ 14 - 9
src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java

@@ -59,6 +59,9 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         }
 //        logger.info("customerIdSet=="+customerIdSet);
 //        logger.info("appKeySet=="+appKeySet);
+        // 压缩字符串
+        body = body.replaceAll("[\\r\\n\\t]", "");
+//        body.replaceAll("\\s+", "");
         logger.info("body: " + body);
         if (StringUtils.isEmpty(customerIdIn)||!customerIdSet.equals(customerIdIn)) {
             apiResult.setFlag("failure");
@@ -87,12 +90,13 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             apiResult.setRequestId(requestId);
             throw new ApiSystemException(apiResult);
         }*/
-//        if (!verificationSign(method,timestamp,originSign,body)) {
-//            apiResult.setFlag("failure");
-//            apiResult.setCode(ErrorMessage.SIGNATURE_ILLEGAL.getCode());
-//            apiResult.setMessage(ErrorMessage.SIGNATURE_ILLEGAL.getMessage());
-//            throw new ApiSystemException(apiResult);
-//        }
+//        verificationSign(method,timestamp,originSign,body);
+        if (!verificationSign(method,timestamp,originSign,body)) {
+            apiResult.setFlag("failure");
+            apiResult.setCode(ErrorMessage.SIGNATURE_ILLEGAL.getCode());
+            apiResult.setMessage(ErrorMessage.SIGNATURE_ILLEGAL.getMessage());
+            throw new ApiSystemException(apiResult);
+        }
         // 将缓存体存入request属性中,供后续使用
         request.setAttribute("cachedRequestBody", body);
         logger.info("preHandle====End");
@@ -137,7 +141,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         Map<String, Object> params = new HashMap<String, Object>();
         params.put(APP_KEY,appKey);
         params.put(CUSTOMER_ID,customerId);
-        params.put("format","json");
+        params.put("format","xml");
         params.put(METHOD,method);
         params.put("sign_method","md5");
         params.put(TIMESTAMP_KEY,timestamp);
@@ -147,7 +151,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         System.out.println("生成的sign:"+sign);
         return sign.equals(originSign);
     }
-    //{secretkey}app_key{app_key}customerId{customerId}formatxmlmethod{openapi_name}sign_methodmd5timestamp2015-04-26 00:00:07v2.0{body}{secretkey}
+    //{secretkey}app_key{app_key}customerId{customerId}formatxmlmethod{openapi_name}sign_methodmd5timestamp{2015-04-26 00:00:07}v2.0{body}{secretkey}
     private String createSign(Map<String, Object> params,String body,String appSecret) throws UnsupportedEncodingException {
         Set<String> keysSet = params.keySet();
         Object[] keys = keysSet.toArray();
@@ -160,10 +164,11 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             if (null != value) {
                 valueString = String.valueOf(value);
             }
+            temp.append(key);
             temp.append(valueString);
         }
         temp.append(body).append(appSecret);
-        System.out.println("加密串:"+temp);
+//        System.out.println("加密串:"+temp);
 //        System.out.println(MD5Util.encrypt32Up(temp.toString()));
         return MD5Util.encrypt32Up(temp.toString());
     }

+ 1 - 8
src/main/java/com/uas/eis/entity/vwms/entity/EntryOrder.java

@@ -4,7 +4,7 @@ import lombok.Data;
 
 @Data
 public class EntryOrder {
-    private String outBizCode; // 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
+//    private String outBizCode; // 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
     private String entryOrderCode; // 入库单号
     private String ownerCode; // 货主编码
     private String warehouseCode; // 仓库编码
@@ -12,12 +12,5 @@ public class EntryOrder {
     private String orderType; // 入库单类型
     private String supplierCode; // 供应商编码
     private String supplierName; // 供应商名称
-    private String documentMaker; // 制单人
     private String remark; // 备注
-
-    private String isRelease = "2";//释放状态  0=未释放,  1=已释放,  2=未控制, 默认:2(只传数字)
-//    private String userDefined1; // 自定义1
-//    private String userDefined2; // 自定义2
-//    private String userDefined3; // 自定义3
-//    private String userDefined4; // 自定义4
 }

+ 3 - 24
src/main/java/com/uas/eis/entity/vwms/entity/OrderLine.java

@@ -6,32 +6,11 @@ import lombok.Data;
 @Data
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class OrderLine {
-    private String lineNo; // 行号
+    private String outBizCode;
+    private String logicWarehouseCode; // 虚拟仓库编号
+    private String orderLineNo; // 行号
     private String ownerCode; // 货主编码
-//    private String itemId;
     private String itemCode; // 商品编码
     private String itemName; // 商品名称
     private Float planQty; // 应收商品数量
-    private String virtualWarehouse; // 虚拟仓库编号
-
-    private String userDefined1; // 入库批次
-    private String userDefined2;
-    private String userDefined3; // 品牌
-    private String userDefined4; // 账套
-   /* private String packUom;
-    private String actualPrice;
-    private String inventoryType;
-    private String productDate;
-    private String expireDate;
-    private String batchCode;
-
-    private String customJson;
-    private String customField1;
-    private String customField2;
-    private String customField3;
-    private String customField4;
-    private String customField5;
-    private String customField6;
-    private String customField7;
-    private String customField8;*/
 }

+ 0 - 1
src/main/java/com/uas/eis/entity/vwms/entity/OrderLineIn.java

@@ -4,5 +4,4 @@ import lombok.Data;
 
 @Data
 public class OrderLineIn extends OrderLine {
-    private String stockinDate; // 入库日期
 }

+ 1 - 36
src/main/java/com/uas/eis/entity/vwms/entity/OrderLineMove.java

@@ -4,40 +4,5 @@ import lombok.Data;
 
 @Data
 public class OrderLineMove extends OrderLine {
-    private String targetItemCode; // 目标货品代码(旧)
-    private String targetItemId;   // 目标仓储系统货品代码(旧)
-    private Source source;         // 源信息
-    private Target target;         // 目标信息
-    @Data
-    public static class Source {
-        private String warehouseCode;     // ERP仓库代码
-        private String ownerCode;         // ERP货主代码
-        private String inventoryType = "ZP"; // 原质量状态  ZP=正品,  CC=残次,  默认为ZP
-        private String virtualWarehouse;  // 原虚拟仓库
-        private String productDate;       // 原生产日期 YYYY-MM-DD
-        private String expireDate;        // 原失效日期 YYYY-MM-DD
-        private String batchCode;         // 原批次号
-        private String stockinDate;       // 原入库日期 YYYY-MM-DD
-        private String userDefined1;      // 原自定义批次1
-        private String userDefined2;      // 原自定义批次2
-        private String userDefined3;      // 原自定义批次3
-        private String userDefined4;      // 原自定义批次4
-    }
-
-    @Data
-    public static class Target {
-        private String warehouseCode;     // ERP仓库代码
-        private String ownerCode;         // ERP货主代码
-        private String inventoryType = "ZP"; // 目标质量状态 ZP=正品,  CC=残次,  默认为ZP
-        private String virtualWarehouse;  // 目标虚拟仓库
-        private String productDate;       // 目标生产日期 YYYY-MM-DD
-        private String expireDate;        // 目标过期日期 YYYY-MM-DD
-        private String batchCode;         // 目标批次号
-        private String stockinDate;       // 目标入库日期 YYYY-MM-DD
-        private String userDefined1;      // 目标自定义批次1
-        private String userDefined2;      // 目标自定义批次2
-        private String userDefined3;      // 目标自定义批次3
-        private String userDefined4;      // 目标自定义批次4
-    }
-
+    private String inLogicWarehouseCode; // 目标逻辑仓 转库出库、调拨出库类型时转入的逻辑仓编号
 }

+ 7 - 3
src/main/java/com/uas/eis/entity/vwms/entity/OrderLineOut.java

@@ -4,7 +4,11 @@ import lombok.Data;
 
 @Data
 public class OrderLineOut extends OrderLine {
-    private String customField1;
-    private String customField2;
-    private String customField3;
+    private String remark;
+    private String custItemCode;//客户商品编码
+    private String custItemName;//客户商品名称
+    private String custItemSkuProperty;//客户商品型号
+    private String custLotNumber;//客户批次
+    private String custPO;//客户PO
+    private String contractNo;//合同编号
 }

+ 3 - 1
src/main/java/com/uas/eis/entity/vwms/entity/ProdInout.java

@@ -19,7 +19,7 @@ public class ProdInout {
     private String piRemark;
     private List<Prodiodetail> details = new ArrayList<>();
 
-    private String currentMasterName;
+    private String currentMaster;
     private String piOrderType;
     private Integer piSendwmsflag;
     private String piWmsInType;
@@ -30,6 +30,8 @@ public class ProdInout {
     private String piShrsj;//收货手机
     private String piKhdz;//收货地址
 
+    private String outBizCode;// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
+
 
 
 }

+ 0 - 3
src/main/java/com/uas/eis/entity/vwms/req/BaseReq.java

@@ -1,12 +1,9 @@
 package com.uas.eis.entity.vwms.req;
 
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Data;
 
 @Data
-
 public class BaseReq<T> {
     T request;
 }

+ 8 - 0
src/main/java/com/uas/eis/entity/vwms/req/EntryOrderAndDetRequest.java

@@ -1,15 +1,23 @@
 package com.uas.eis.entity.vwms.req;
 
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.uas.eis.entity.vwms.entity.OrderLine;
 import com.uas.eis.entity.vwms.entity.OrderLineIn;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
+@JacksonXmlRootElement(localName = "request")
 public class EntryOrderAndDetRequest extends EntryOrderRequest {
+    @JacksonXmlProperty(localName = "orderLines")
     InOrderLines orderLines;
     @Data
     public static class InOrderLines{
+        @JacksonXmlElementWrapper(useWrapping = false)  // 去掉外层的包装
+        @JacksonXmlProperty(localName = "orderLine")
         List<OrderLineIn> orderLine;
     }
 }

+ 67 - 297
src/main/java/com/uas/eis/entity/vwms/req/INConfirm.java

@@ -1,5 +1,8 @@
 package com.uas.eis.entity.vwms.req;
 
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import com.uas.eis.utils.StringUtil;
 import lombok.Data;
 
@@ -9,14 +12,16 @@ import java.util.List;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 @Data
-@JsonIgnoreProperties(ignoreUnknown = true)
+@JacksonXmlRootElement(localName = "request")
+@JsonIgnoreProperties(ignoreUnknown = true)  // 忽略未知字段
 public class INConfirm {
+    @JacksonXmlProperty(localName = "entryOrder")
     private EntryOrder entryOrder;
+    @JacksonXmlProperty(localName = "orderLines")
     private OrderLines orderLines;
-    private OrderDetails orderDetails;
 
     @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
+    @JsonIgnoreProperties(ignoreUnknown = true)  // 忽略未知字段
     public static class EntryOrder {
         /**
          * 入库单号
@@ -38,83 +43,53 @@ public class INConfirm {
          * 入库单类型 例如: CGRK=采购入库、DBRK=调拨入库 、THRK=退货入库, QTRK=其他入库等(只传英文代码)
          */
         private String entryOrderType;
-        /**
-         * 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理。一单需要多次确认时条件必填
-         */
-        private String outBizCode;
         /**
          * 支持入库单多次收货 多次收货后确认时 0=入库单最终状态确认, 1=入库单中间状态确认, 每次入库传入的数量为增量, 特殊情况, 同一入库单, 如果先收到0, 后又收到1, 允许修改收货的数量
          */
         private Integer confirmType;
         /**
-         * 入库单状态 , PARTFULFILLED=部分收货完成, FULFILLED=收货完成(只传英文代码)
+         * 入库单状态, string (50) , 必填 (NEW-未开始处理, ACCEPT-仓库接单 ,PARTFULFILLED-部分收货完成, FULFILLED-收货完成, EXCEPTION-异常, CANCELED-取消, CLOSED-关闭, REJECT-拒单, CANCELEDFAIL-取消失败) , (只传英文编码)
          */
         private String status;
         /**
-         * 订单完成时间 YYYY-MM-DD HH:MM:SS
-         */
-        private String orderFinishedTime;
-        /**
-         * 收货人
-         */
-        private String receiver;
+         * 操作时间, string (19) , YYYY-MM-DD HH:MM:SS,(当status=FULFILLED, operateTime 为实收时间)
+		*/
+        private String operateTime;
         /**
          * 备注
          */
         private String remark;
+
         /**
-         * 用户自定义1
-         */
-        private String userDefined1;
-        /**
-         * 用户自定义2
-         */
-        private String userDefined2;
-        /**
-         * 用户自定义3
-         */
-        private String userDefined3;
-        /**
-         * 用户自定义4
-         */
-        private String userDefined4;
-        /**
-         * 文件信息
+         * 确认入库时间, string (19) ,YYYY-MM-DD HH:MM:SS
          */
-        private Files files;
-
-    }
+        private String orderConfirmTime;
+        private String orderCreateTime;
 
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Files {
-        private List<String> file;
     }
 
     @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
+    @JsonIgnoreProperties(ignoreUnknown = true)  // 忽略未知字段
     public static class OrderLines {
+        @JacksonXmlElementWrapper(useWrapping = false)  // 去掉外层的包装
+        @JacksonXmlProperty(localName = "orderLine")
         private List<OrderLine> orderLine;
 
         @Data
         @JsonIgnoreProperties(ignoreUnknown = true)
         public static class OrderLine {
+            /**
+             * 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理。一单需要多次确认时条件必填
+             */
+            private String outBizCode;
             /**
              * 行号
              */
-            private Integer lineNo;
+            private Integer orderLineNo;
             /**
              * 货品代码
              */
             private String itemCode;
-            /**
-             * 仓储系统商品ID
-             */
-            private String itemId;
-            /**
-             * 包装单位
-             */
-            private String packUom;
             /**
              * 应收货品数量
              */
@@ -123,165 +98,55 @@ public class INConfirm {
              * 实收数量
              */
             private Double actualQty;
-            /**
-             * 实收包装数量
-             */
-            private Double actualPackUomQty;
             /**
              * 虚拟仓库 条件必填, 条件为使用虚拟仓库
              */
-            private String virtualWarehouse;
-            private String documentMaker;
-            /**
-             * 拒收数量
-             */
-            private Double rejectQty;
-            /**
-             * 拒收原因
-             */
-            private String rejectReason;
-            /**
-             * 序列号,多个序列号用英文逗号隔开
-             */
-            private String serialno;
+            private String logicWarehouseCode;
+            /*@JacksonXmlProperty(localName = "batchs")
             private Batchs batchs;
-            /**
-             * 自定义批次1 入库批次
-             */
-            private String userDefined1;
-            /**
-             * 自定义批次2
-             */
-            private String userDefined2;
-            /**
-             * 自定义批次3 品牌
-             */
-            private String userDefined3;
-            /**
-             * 自定义批次4 账套
-             */
-            private String userDefined4;
-            /**
-             * 自定义字段1
-             */
-            private String customField1;
-            /**
-             * 自定义字段2
-             */
-            private String customField2;
-            /**
-             * 自定义字段3
-             */
-            private String customField3;
-            /**
-             * 自定义字段4
-             */
-            private String customField4;
-            /**
-             * 自定义字段5
-             */
-            private String customField5;
-            /**
-             * 自定义字段6
-             */
-            private String customField6;
-            /**
-             * 自定义字段7
-             */
-            private String customField7;
-            /**
-             * 自定义字段8
-             */
-            private String customField8;
 
             @Data
-            @JsonIgnoreProperties(ignoreUnknown = true)
             public static class Batchs {
+                @JacksonXmlElementWrapper(useWrapping = false)  // 去掉外层的包装
+                @JacksonXmlProperty(localName = "batch")
                 private List<Batch> batch;
 
                 @Data
-                @JsonIgnoreProperties(ignoreUnknown = true)
                 public static class Batch {
-                    /**
-                     * 实收数量
-                     */
-                    private Double actualQty;
-                    /**
-                     * 实收包装数量
-                     */
-                    private Double actualPackUomQty;
-                    /**
-                     * 质量状态 ZP=正品, CC=残次, 默认为ZP
-                     */
-                    private String inventoryType;
-                    /**
-                     * 虚拟仓库 条件必填, 条件为使用虚拟仓库
-                     */
-                    private String virtualWarehouse;
-                    /**
+                    *//**
+                     * 批次号
+                     *//*
+                    private String batchCode;
+                    *//**
                      * 生产日期 YYYY-MM-DD
-                     */
+                     *//*
                     private String productDate;
-                    /**
+                    *//**
                      * 失效日期 YYYY-MM-DD
-                     */
+                     *//*
                     private String expireDate;
-                    /**
-                     * 批次号
-                     */
-                    private String batchCode;
-                    /**
-                     * 入库日期 YYYY-MM-DD
-                     */
-                    private String stockinDate;
-                    /**
-                     * 自定义批次1 入库批次
-                     */
-                    private String userDefined1;
-                    /**
-                     * 自定义批次2
-                     */
-                    private String userDefined2;
-                    /**
-                     * 自定义批次3 品牌
-                     */
-                    private String userDefined3;
-                    /**
-                     * 自定义批次4 账套
-                     */
-                    private String userDefined4;
-                    /**
-                     * 容器号
-                     */
-                    private String lpn;
+                    *//**
+                     * 生产批号,string(50)
+                     *//*
+                    private String produceCode;
+                    *//**
+                     * 质量状态 ZP=正品, CC=残次, 默认为ZP
+                     *//*
+                    private String inventoryType;
+
+                    *//**
+                     * 实收数量, int,要求 batchs 节点下所有的实收数量之和等于
+                     * 					orderline 中的实收数量
+                     *//*
+                    private Double actualQty;
                 }
-            }
+            }*/
         }
     }
 
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class OrderDetails {
-        private List<Detail> detail;
-
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class Detail {
-            private String boxNo;
-            private String epc;
-        }
-    }
 
-    public String getMasterName() {
-        if (orderLines.getOrderLine() != null) {//账套名称
-            if (StringUtil.hasText(orderLines.getOrderLine().get(0).getUserDefined4())) {
-                return orderLines.getOrderLine().get(0).getUserDefined4();
-            } else {
-                return orderLines.getOrderLine().get(0).getBatchs().getBatch().get(0).getUserDefined4();
-            }
-        } else {
-            return null;
-        }
+    public String getMasterCode() {
+        return entryOrder.getOwnerCode();
     }
 
     public String getGenerateMainSql() {
@@ -289,41 +154,22 @@ public class INConfirm {
                 .append("SELECT ")
                 .append("@PIID").append(" PIID, ")
                 .append("'").append("@INOUTNO").append("' PIINOUTNO, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderCode(), "")).append("' ORDERCODE, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getOwnerCode(), "")).append("' OWNERCODE, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getWarehouseCode(), "")).append("' WAREHOUSECODE, ")
                 .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderId(), "")).append("' WMSORDERID, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderType(), "")).append("' WMSORDERTYPE, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getOutBizCode(), "")).append("' OUTBIZCODE, ")
                 .append(StringUtil.nvl(entryOrder.getConfirmType(), "0")).append(" CONFIRMTYPE, ")
                 .append("'").append(StringUtil.nvl(entryOrder.getStatus(), "")).append("' STATUS, ")
-                .append((StringUtil.hasText(entryOrder.getOrderFinishedTime()) ? "to_date('" + entryOrder.getOrderFinishedTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" ORDERFINISHEDTIME, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getReceiver(), "")).append("' RECEIVER, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getRemark(), "")).append("' REMARK, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getUserDefined1(), "")).append("' USERDEFINED1, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getUserDefined2(), "")).append("' USERDEFINED2, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getUserDefined3(), "")).append("' USERDEFINED3, ")
-                .append("'").append(StringUtil.nvl(entryOrder.getUserDefined4(), "")).append("' USERDEFINED4 ")
+                .append((StringUtil.hasText(entryOrder.getOperateTime()) ? "to_date('" + entryOrder.getOperateTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" OPERATETIME, ")
+                .append((StringUtil.hasText(entryOrder.getOrderConfirmTime()) ? "to_date('" + entryOrder.getOrderConfirmTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" ORDERFINISHEDTIME, ")
+                .append("'").append(StringUtil.nvl(entryOrder.getRemark(), "")).append("' REMARK ")
                 .append("FROM dual) doc ON (wmsl.PIID = doc.PIID AND wmsl.PIINOUTNO = doc.PIINOUTNO) ")
                 .append("WHEN MATCHED THEN UPDATE SET ")
-                .append("wmsl.ORDERCODE = doc.ORDERCODE, ")
-                .append("wmsl.OWNERCODE = doc.OWNERCODE, ")
-                .append("wmsl.WAREHOUSECODE = doc.WAREHOUSECODE, ")
                 .append("wmsl.WMSORDERID = doc.WMSORDERID, ")
-                .append("wmsl.WMSORDERTYPE = doc.WMSORDERTYPE, ")
-                .append("wmsl.OUTBIZCODE = doc.OUTBIZCODE, ")
                 .append("wmsl.CONFIRMTYPE = doc.CONFIRMTYPE, ")
                 .append("wmsl.STATUS = doc.STATUS, ")
                 .append("wmsl.ORDERFINISHEDTIME = doc.ORDERFINISHEDTIME, ")
-                .append("wmsl.RECEIVER = doc.RECEIVER, ")
                 .append("wmsl.REMARK = doc.REMARK, ")
-                .append("wmsl.USERDEFINED1 = doc.USERDEFINED1, ")
-                .append("wmsl.USERDEFINED2 = doc.USERDEFINED2, ")
-                .append("wmsl.USERDEFINED3 = doc.USERDEFINED3, ")
-                .append("wmsl.USERDEFINED4 = doc.USERDEFINED4, ")
-                .append("wmsl.UTIME = SYSDATE ")
-                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE, OUTBIZCODE, CONFIRMTYPE, STATUS, ORDERFINISHEDTIME, RECEIVER, REMARK, USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4) ")
-                .append("VALUES (SYSDATE,doc.PIID, doc.PIINOUTNO, doc.ORDERCODE, doc.OWNERCODE, doc.WAREHOUSECODE, doc.WMSORDERID, doc.WMSORDERTYPE, doc.OUTBIZCODE, doc.CONFIRMTYPE, doc.STATUS, doc.ORDERFINISHEDTIME, doc.RECEIVER, doc.REMARK, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
+                .append("wmsl.UTIME = SYSDATE ")//WAREHOUSECODE, WMSORDERTYPE, OUTBIZCODE,
+                .append("WHEN NOT MATCHED THEN INSERT (ITIME, UTIME,PIID, PIINOUTNO, OWNERCODE, WMSORDERID, CONFIRMTYPE, STATUS,OPERATETIME, ORDERFINISHEDTIME, REMARK) ")
+                .append("VALUES (SYSDATE,SYSDATE,doc.PIID, doc.PIINOUTNO,'@MASTERCODE', doc.WMSORDERID, doc.CONFIRMTYPE, doc.STATUS,doc.OPERATETIME, doc.ORDERFINISHEDTIME, doc.REMARK)");
         return sql.toString();
     }
 
@@ -331,10 +177,6 @@ public class INConfirm {
         List<String> sqls = new ArrayList<>();
         for (OrderLines.OrderLine line : orderLines.getOrderLine()) {
             sqls.add(getGenerateLinesSql(line));
-            for (int i = 0; i < line.getBatchs().getBatch().size(); i++) {
-                OrderLines.OrderLine.Batchs.Batch batch = line.getBatchs().getBatch().get(i);
-                sqls.add(getGenerateBatchsSql(line.getLineNo(), (i + 1), batch));
-            }
         }
         return sqls;
     }
@@ -344,93 +186,21 @@ public class INConfirm {
         sql.append("MERGE INTO ").append("@MASTERCODE").append(".prodiowms_Lines wmsl USING (")
                 .append("SELECT ")
                 .append("@PIID").append(" PIID, ")
-                .append(line.getLineNo()).append(" LINENO, ")
+                .append(line.getOrderLineNo()).append(" LINENO, ")
                 .append("'").append(line.getItemCode()).append("' ITEMCODE, ")
-                .append("'").append(line.getItemId()).append("' ITEMID, ")
-                .append("'").append(StringUtil.nvl(line.getPackUom(), "")).append("' PACKUOM, ")
                 .append("'").append(StringUtil.nvl(line.getPlanQty(), "")).append("' PLANQTY, ")
                 .append(StringUtil.nvl(line.getActualQty(), "0")).append(" ACTUALQTY, ")
-                .append(StringUtil.nvl(line.getActualPackUomQty(), "0")).append(" ACTUALPACKUOMQTY, ")
-                .append("'").append(StringUtil.nvl(line.getVirtualWarehouse(), "")).append("' virtualWarehouse, ")
-                .append(StringUtil.nvl(line.getRejectQty(), "0")).append(" REJECTQTY, ")
-                .append("'").append(StringUtil.nvl(line.getRejectReason(), "")).append("' REJECTREASON, ")
-                .append("'").append(StringUtil.nvl(line.getSerialno(), "")).append("' SERIALNO, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField1(), "")).append("' CUSTOMFIELD1, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField2(), "")).append("' CUSTOMFIELD2, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField3(), "")).append("' CUSTOMFIELD3, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField4(), "")).append("' CUSTOMFIELD4, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField5(), "")).append("' CUSTOMFIELD5, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField6(), "")).append("' CUSTOMFIELD6, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField7(), "")).append("' CUSTOMFIELD7, ")
-                .append("'").append(StringUtil.nvl(line.getCustomField8(), "")).append("' CUSTOMFIELD8, ")
-                .append("'").append(StringUtil.nvl(line.getUserDefined1(), "")).append("' USERDEFINED1, ")
-                .append("'").append(StringUtil.nvl(line.getUserDefined2(), "")).append("' USERDEFINED2, ")
-                .append("'").append(StringUtil.nvl(line.getUserDefined3(), "")).append("' USERDEFINED3, ")
-                .append("'").append(StringUtil.nvl(line.getUserDefined4(), "")).append("' USERDEFINED4 ")
-                .append("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO AND wmsl.ITEMCODE = doc.ITEMCODE) ")
+                .append("'").append(StringUtil.nvl(line.getLogicWarehouseCode(), "")).append("' LOGICWAREHOUSECODE, ")
+                .append("'").append(StringUtil.nvl(line.getOutBizCode(), "")).append("' OUTBIZCODE ")
+                .append("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO) ")
                 .append("WHEN MATCHED THEN UPDATE SET ")
+                .append("wmsl.OUTBIZCODE = doc.OUTBIZCODE, ")
                 .append("wmsl.ACTUALQTY = doc.ACTUALQTY, ")
-                .append("wmsl.ACTUALPACKUOMQTY = doc.ACTUALPACKUOMQTY, ")
-                .append("wmsl.virtualWarehouse = doc.virtualWarehouse, ")
-                .append("wmsl.REJECTQTY = doc.REJECTQTY, ")
-                .append("wmsl.REJECTREASON = doc.REJECTREASON, ")
-                .append("wmsl.SERIALNO = doc.SERIALNO, ")
-                .append("wmsl.CUSTOMFIELD1 = doc.CUSTOMFIELD1, ")
-                .append("wmsl.CUSTOMFIELD2 = doc.CUSTOMFIELD2, ")
-                .append("wmsl.CUSTOMFIELD3 = doc.CUSTOMFIELD3, ")
-                .append("wmsl.CUSTOMFIELD4 = doc.CUSTOMFIELD4, ")
-                .append("wmsl.CUSTOMFIELD5 = doc.CUSTOMFIELD5, ")
-                .append("wmsl.CUSTOMFIELD6 = doc.CUSTOMFIELD6, ")
-                .append("wmsl.CUSTOMFIELD7 = doc.CUSTOMFIELD7, ")
-                .append("wmsl.CUSTOMFIELD8 = doc.CUSTOMFIELD8, ")
-                .append("wmsl.USERDEFINED1 = doc.USERDEFINED1, ")
-                .append("wmsl.USERDEFINED2 = doc.USERDEFINED2, ")
-                .append("wmsl.USERDEFINED3 = doc.USERDEFINED3, ")
-                .append("wmsl.USERDEFINED4 = doc.USERDEFINED4, ")
+                .append("wmsl.LOGICWAREHOUSECODE = doc.LOGICWAREHOUSECODE, ")
                 .append("wmsl.UTIME = SYSDATE ")
-                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, ITEMID, PACKUOM, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY,virtualWarehouse, REJECTQTY, REJECTREASON, SERIALNO, ")
-                .append("CUSTOMFIELD1, CUSTOMFIELD2, CUSTOMFIELD3, CUSTOMFIELD4, CUSTOMFIELD5, CUSTOMFIELD6, CUSTOMFIELD7, CUSTOMFIELD8,USERDEFINED1,USERDEFINED2,USERDEFINED3,USERDEFINED4) ")
-                .append("VALUES (SYSDATE,doc.PIID, doc.LINENO, doc.ITEMCODE, doc.ITEMID, doc.PACKUOM, doc.PLANQTY, doc.ACTUALQTY,doc.virtualWarehouse, doc.ACTUALPACKUOMQTY, ")
-                .append("doc.REJECTQTY, doc.REJECTREASON, doc.SERIALNO, doc.CUSTOMFIELD1, doc.CUSTOMFIELD2, doc.CUSTOMFIELD3, doc.CUSTOMFIELD4, doc.CUSTOMFIELD5, ")
-                .append("doc.CUSTOMFIELD6, doc.CUSTOMFIELD7, doc.CUSTOMFIELD8, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
+                .append("WHEN NOT MATCHED THEN INSERT (ITIME,UTIME,PL_PIID,OUTBIZCODE,LOGICWAREHOUSECODE, LINENO, ITEMCODE, PLANQTY, ACTUALQTY) ")
+                .append("VALUES (SYSDATE,SYSDATE,doc.PIID,doc.OUTBIZCODE,doc.LOGICWAREHOUSECODE, doc.LINENO, doc.ITEMCODE, doc.PLANQTY, doc.ACTUALQTY)");
         return sql.toString();
     }
 
-    public String getGenerateBatchsSql(Integer lineNo, Integer detno, OrderLines.OrderLine.Batchs.Batch batch) {
-        StringBuilder sql = new StringBuilder();
-        sql.append("INSERT INTO ").append("@MASTERCODE")
-                .append(".prodiowms_batchs(ITIME,PB_PIID, PD_DETNO, LINENO, ACTUALQTY, ACTUALPACKUOMQTY, INVENTORYTYPE, VIRTUALWAREHOUSE, PRODUCTDATE, EXPIREDATE, BATCHCODE, STOCKINDATE, USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4, LPN) VALUES(");
-        // 添加字段值
-        sql.append("SYSDATE, ");
-        sql.append("@PIID").append(", ");
-        sql.append(detno).append(", "); // PD_DETNO
-        sql.append(lineNo).append(", "); // LINENO
-        sql.append(StringUtil.nvl(batch.getActualQty(), "0")).append(", ");
-        sql.append(StringUtil.nvl(batch.getActualPackUomQty(), "0")).append(", ");
-        sql.append("'").append(StringUtil.nvl(batch.getInventoryType(), "")).append("', ");
-        sql.append("'").append(StringUtil.nvl(batch.getVirtualWarehouse(), "")).append("', ");
-        if (StringUtil.hasText(batch.getProductDate())) {
-            sql.append("to_date('").append(batch.getProductDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
-        } else {
-            sql.append("null, ");
-        }
-        if (StringUtil.hasText(batch.getExpireDate())) {
-            sql.append("to_date('").append(batch.getExpireDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
-        } else {
-            sql.append("null, ");
-        }
-        sql.append("'").append(StringUtil.nvl(batch.getBatchCode(), "")).append("', ");
-        if (StringUtil.hasText(batch.getStockinDate())) {
-            sql.append("to_date('").append(batch.getStockinDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
-        } else {
-            sql.append("null, ");
-        }
-        sql.append("'").append(StringUtil.nvl(batch.getUserDefined1(), "")).append("', ");
-        sql.append("'").append(StringUtil.nvl(batch.getUserDefined2(), "")).append("', ");
-        sql.append("'").append(StringUtil.nvl(batch.getUserDefined3(), "")).append("', ");
-        sql.append("'").append(StringUtil.nvl(batch.getUserDefined4(), "")).append("', ");
-        sql.append("'").append(StringUtil.nvl(batch.getLpn(), "")).append("'");
-        sql.append(")");
-        return sql.toString();
-    }
 }

+ 16 - 0
src/main/java/com/uas/eis/entity/vwms/resp/IOResp.java

@@ -0,0 +1,16 @@
+package com.uas.eis.entity.vwms.resp;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JacksonXmlRootElement(localName = "response")
+public class IOResp {
+    private String code;
+    private String flag;
+    private String entryOrderId;
+    private String message;
+    private boolean success;
+}

+ 13 - 0
src/main/java/com/uas/eis/sdk/entity/WMSApiResult.java

@@ -1,9 +1,22 @@
 package com.uas.eis.sdk.entity;
 
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
 import lombok.Data;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
 @Data
+//@XmlRootElement(name = "response")
+@JacksonXmlRootElement(localName = "response")
+@XmlAccessorType(XmlAccessType.FIELD)
 public class WMSApiResult {
+    @JacksonXmlProperty(localName = "flag")
     private String flag = "success";
+    @JacksonXmlProperty(localName = "code")
     private String code = "201";
+    @JacksonXmlProperty(localName = "message")
     private String message = "success!";
 }

+ 1 - 2
src/main/java/com/uas/eis/service/DocCommonService.java

@@ -12,9 +12,8 @@ import java.util.Map;
  * @date 2025-03-04
  */
 public interface DocCommonService {
-    ProdInout getIO(String master,String id,boolean onlyMain);
+    ProdInout getIO(String master,String id);
     String sendOMoveToWms(ProdInout prodInOut, String masterName);
     String sendOutToWms(ProdInout prodInOut, String masterName);
     String sendInToWms(ProdInout prodInOut, String masterName);
-    String sendToWms(String json,String method);
 }

+ 0 - 3
src/main/java/com/uas/eis/service/ERPService.java

@@ -14,7 +14,4 @@ public interface ERPService {
 
     Map<String, Object> sendIO(String master, String id, String emCode, String caller);
 
-    Map<String, Object> cancelIO(String master, String id, String emCode, String caller,String op);
-
-    Map<String, Object> sendStockData(String master, String emCode);
 }

+ 2 - 1
src/main/java/com/uas/eis/service/ERPWMSService.java

@@ -1,5 +1,6 @@
 package com.uas.eis.service;
 
+import com.uas.eis.sdk.entity.WMSApiResult;
 import com.uas.eis.sdk.entity.WMSApiResultResp;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
@@ -9,5 +10,5 @@ import java.io.IOException;
  * @email wuyx@usoftchina.com
  */
 public interface ERPWMSService {
-    WMSApiResultResp IOConfirm(String method,HttpServletRequest request) throws IOException;
+    WMSApiResult IOConfirm(String method, HttpServletRequest request) throws IOException;
 }

+ 82 - 198
src/main/java/com/uas/eis/service/Impl/DocCommonServiceImpl.java

@@ -2,12 +2,15 @@ package com.uas.eis.service.Impl;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.uas.eis.config.VwmsConfig;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.SqlRowList;
 import com.uas.eis.entity.vwms.entity.*;
 import com.uas.eis.entity.vwms.req.*;
 import com.uas.eis.entity.vwms.resp.BaseVastResp;
+import com.uas.eis.entity.vwms.resp.IOResp;
+import com.uas.eis.entity.vwms.resp.ProdResp;
 import com.uas.eis.service.DocCommonService;
 import com.uas.eis.service.ERPService;
 import com.uas.eis.utils.CollectionUtil;
@@ -19,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -41,19 +45,27 @@ public class DocCommonServiceImpl implements DocCommonService {
     private ObjectMapper objectMapper;  // 注入Jackson的ObjectMapper
 
     @Override
-    public ProdInout getIO(String master,String id,boolean onlyMain){
+    public ProdInout getIO(String master,String id){
         // 查询主表信息
         ProdInout prodInOut = queryMainTable(master, id);
-        if (!onlyMain) {
-            // 构建明细查询SQL
-            String detSql = buildDetailSql(master, prodInOut);
-            // 查询明细数据
-            List<Prodiodetail> details = queryDetails(master, detSql);
-            prodInOut.setDetails(details);
-            // 更新WMS相关表
-            if (!prodInOut.getPiWmsstatus().equals("已确认")) {
-                updateWmsTables(master, prodInOut, detSql);
-            }
+        prodInOut.setOutBizCode(prodInOut.getPiOrderType()+"-"+System.currentTimeMillis());// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
+        // 构建明细查询SQL
+        String detSql = buildDetailSql(master, prodInOut);
+        // 查询明细数据
+        List<Prodiodetail> details = queryDetails(master, detSql);
+        prodInOut.setDetails(details);
+        // 更新WMS相关表
+        if (!prodInOut.getPiWmsstatus().equals("已确认")) {
+            updateWmsTables(master, prodInOut, detSql);
+        }
+        if("YUEJH_TEST".equals(master)){
+            prodInOut.setCurrentMaster("YUEJH");
+        }
+        if("YJH_T".equals(master)){
+            prodInOut.setCurrentMaster("AIFL");
+        }
+        if("YIT_T".equals(master)){
+            prodInOut.setCurrentMaster("YJH_HK");
         }
         return prodInOut;
     }
@@ -64,8 +76,8 @@ public class DocCommonServiceImpl implements DocCommonService {
                 .append("to_char(pi_recorddate,'yyyy-mm-dd hh24:mi:ss') piDate,pi_Cardcode piCardcode,pi_Title piTitle,")
                 .append("pi_Recordman piRecordman,to_char(pi_recorddate,'yyyy-mm-dd hh24:mi:ss') piRecorddate,pi_Remark piRemark,")
                 .append("abs(nvl(pi_sendwmsflag,0)) piSendwmsflag,nvl(pi_WmsInType,'in') piWmsInType,pi_wmsstatus piWmsstatus,")
-                .append("pi_invostatuscode piInvoStatusCode,pi_lxr_user piLxr,pi_lxdh_user piLxdh,pi_shrsj_user piShrsj,pi_khdz_user piKhdz,ma_function currentMasterName ")
-                .append("from ").append(master).append(".prodinout left join DATACENTER_P.MASTER on MA_USER = '").append(master).append("' where pi_id = ").append(id)
+                .append("pi_invostatuscode piInvoStatusCode,'"+master+"' currentMaster ")
+                .append("from ").append(master).append(".prodinout where pi_id = ").append(id)
                 .toString();
         List<ProdInout> prodInOuts = baseDao.getJdbcTemplate().query(sql,
                 new BeanPropertyRowMapper<>(ProdInout.class));
@@ -104,51 +116,13 @@ public class DocCommonServiceImpl implements DocCommonService {
                         "   ,pi_custwhcode_user,iwh.wh_description,pi_postmastercode,ma_function" +
                         " order by MIN(pd_pdno) ");
             }
-            //BCCK 拨出、拨入单 BCCKZF 库存转移-直发(拨出、拨入)
-            if("BCCK".equals(prodInOut.getPiOrderType())||"BCCKZF".equals(prodInOut.getPiOrderType())){
-                sqlBuilder.append("select pd_piid pdPiid,min(pd_id) pdId,min(pd_pdno) pdPdno,pd_prodcode pdProdcode,pr_detail pdProdname,pr_brand pdBrandName" +
-                        ",sum(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty" +
-                        ",pd_whcode pdWhcode,owh.wh_description pdWhname,pd_description pdInBatch" +
-                        ",pd_inwhcode pdWhcodeTo,iwh.wh_description pdWhnameTo" +
-                        ",'"+master+"' postMasterCode,'"+prodInOut.getCurrentMasterName()+"' postMasterName " +
-                        ",pd_prodcode pdProdcodeTo,pr_brand pdBrandNameTo" +
-                        " from "+master+".prodiodetail LEFT JOIN "+master+".product on pr_code = pd_prodcode left join  "+master+".productbrand on pb_name = pr_brand " +
-                        " left join "+master+".warehouse owh on owh.wh_Code = pd_whcode " +
-                        " left join "+master+".warehouse iwh on iwh.wh_Code = pd_inwhcode " +
-                        " where pd_piid = "+prodInOut.getPiId()+" and pb_sendwms = -1 " +
-                        " group by pd_piid,pd_prodcode,pr_detail,pr_brand,pd_whcode,owh.wh_description,pd_description" +
-                        "   ,pd_inwhcode,iwh.wh_description" +
-                        " order by MIN(pd_pdno) ");
-            }
-            //XHTZ 型号调整(其它出库单) XHTZZF 型号调整-直发(其它出库单)
-            if("XHTZ".equals(prodInOut.getPiOrderType())||"XHTZZF".equals(prodInOut.getPiOrderType())){
-                sqlBuilder.append("select pd_piid pdPiid,min(pd_id) pdId,min(pd_pdno) pdPdno,pd_prodcode pdProdcode,opr.pr_detail pdProdname,opr.pr_brand pdBrandName" +
-                        ",sum(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty" +
-                        ",pd_whcode pdWhcode,owh.wh_description pdWhname,pd_description pdInBatch" +
-                        ",pd_postwhcode pdWhcodeTo,iwh.wh_description pdWhnameTo" +
-                        ",'"+master+"' postMasterCode,'"+prodInOut.getCurrentMasterName()+"' postMasterName " +
-                        ",pd_prodcode1_user pdProdcodeTo,ipr.pr_brand pdBrandNameTo" +
-                        " from "+master+".prodiodetail " +
-                        " LEFT JOIN "+master+".product ipr on ipr.pr_code = pd_prodcode left join "+master+".productbrand ibr on ibr.pb_name = ipr.pr_brand " +
-                        " LEFT JOIN "+master+".product opr on opr.pr_code = pd_prodcode left join "+master+".productbrand obr on obr.pb_name = opr.pr_brand " +
-                        " left join "+master+".warehouse owh on owh.wh_Code = pd_whcode " +
-                        " left join "+master+".warehouse iwh on iwh.wh_Code = pd_postwhcode " +
-                        " where pd_piid = "+prodInOut.getPiId()+" and obr.pb_sendwms = -1 and ibr.pb_sendwms = -1 " +
-                        " group by pd_piid,pd_prodcode,opr.pr_detail,opr.pr_brand,pd_whcode,owh.wh_description,pd_description" +
-                        "   ,pd_postwhcode,iwh.wh_description,pd_prodcode1_user,ipr.pr_brand" +
-                        " order by MIN(pd_pdno) ");
-            }
         } else {
-            sqlBuilder.append("select pd_piid pdPiid,min(pd_id) pdId,min(pd_pdno) pdPdno,pd_prodcode pdProdcode,pr_detail pdProdname,pr_brand pdBrandName" +
-                    ",sum(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty" +
-                    ",pd_whcode pdWhcode,wh_description pdWhname,pd_description pdInBatch" +
-                    " from "+master+".prodiodetail LEFT JOIN "+master+".product on pr_code = pd_prodcode left join  "+master+".productbrand on pb_name = pr_brand " +
-                    " left join "+master+".warehouse on wh_Code = pd_whcode " +
-                    " where pd_piid = "+prodInOut.getPiId()+" and pb_sendwms = -1 " +
-                    " group by pd_piid,pd_prodcode,pr_detail,pr_brand,pd_whcode,wh_description,pd_description" +
-                    " order by MIN(pd_pdno) ");
+            sqlBuilder.append("select pd_piid pdPiid,(pd_id) pdId,(pd_pdno) pdPdno,pd_prodcode pdProdcode,pr_detail pdProdname,pr_brand pdBrandName" +
+                    "   ,(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty ,pd_whcode pdWhcode,wh_description pdWhname" +
+                    " from "+master+".prodiodetail LEFT JOIN "+master+".product on pr_code = pd_prodcode left join "+master+".warehouse on wh_Code = pd_whcode " +
+                    " where pd_piid = "+prodInOut.getPiId()+" and nvl(pr_sendwmsflag,0) = -1 " +
+                    " order by pd_pdno ");
         }
-
         return sqlBuilder.toString();
     }
 
@@ -164,17 +138,16 @@ public class DocCommonServiceImpl implements DocCommonService {
         String deleteDetailSql = "delete from " + master + ".prodiowms_lines where pl_piid = " + piId;
         baseDao.execute(deleteMainSql);
         baseDao.execute(deleteDetailSql);
-
         // 插入主表数据
         String sql = new StringBuilder()
-                .append("INSERT INTO ").append(master).append(".prodiowms(ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE)")
+                .append("INSERT INTO ").append(master).append(".prodiowms(ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE,OUTBIZCODE)")
                 .append(" select sysdate,pi_id,pi_inoutno,pi_inoutno,'")
-                .append(vwmsConfig.getOwnerCode()).append("','")
-                .append(vwmsConfig.getWarehouseCode()).append("',PI_WMSORDERCODE,PI_WMSORDERTYPE")
+                .append(prodInOut.getCurrentMaster()).append("','")
+                .append(vwmsConfig.getWarehouseCode()).append("',PI_WMSORDERCODE,PI_WMSORDERTYPE,'").append(prodInOut.getOutBizCode()).append("'")
                 .append(" from ").append(master).append(".prodinout where pi_id = ").append(prodInOut.getPiId())
                 .toString();
         baseDao.execute(sql);
-        // 插入明细数据
+        // 插入明细数据 PL_PIID, ITIME, UTIME, OUTBIZCODE, LOGICWAREHOUSECODE, INLOGICWAREHOUSECODE, LINENO, ITEMCODE, PLANQTY, ACTUALQTY
         if ("out".equals(prodInOut.getPiWmsInType())) {
             String insertDetailSql = new StringBuilder()
                     .append("INSERT INTO ").append(master).append(".prodiowms_Lines(ITIME,PL_PIID,LINENO, ITEMCODE, PLANQTY,virtualWarehouse, USERDEFINED1,userDefined3,USERDEFINED4,customField1,customField2,customField3)")
@@ -183,9 +156,6 @@ public class DocCommonServiceImpl implements DocCommonService {
                     .toString();
             baseDao.execute(insertDetailSql);
         } else if ("transfer".equals(prodInOut.getPiWmsInType())) {
-            //NBZK 内部转库(出货单) QTCK 其他出库(其它出库单) NBZKZF: 内部转库-直发(其它出库单、出货单、采购验退单)
-            //BCCK: 拨出、拨入单 BCCKZF: 库存转移-直发(拨出、拨入)
-            //XHTZ: 型号调整(其它出库单) XHTZZF: 型号调整-直发(其它出库单)
             String insertDetailSql = new StringBuilder()
                     .append("INSERT INTO ").append(master).append(".prodiowms_Lines(ITIME,PL_PIID,LINENO, ITEMCODE, PLANQTY,virtualWarehouse")
                     .append(" ,targetItemCode,s_virtualwarehouse,s_userdefined1,s_userdefined3,s_userdefined4,t_virtualwarehouse,t_userdefined1,t_userdefined3,t_userdefined4)")
@@ -196,9 +166,9 @@ public class DocCommonServiceImpl implements DocCommonService {
             baseDao.execute(insertDetailSql);
         } else {
             String insertDetailSql = new StringBuilder()
-                    .append("INSERT INTO ").append(master).append(".prodiowms_Lines(ITIME,PL_PIID,LINENO, ITEMCODE, PLANQTY,virtualWarehouse, USERDEFINED1,userDefined3,USERDEFINED4)")
-                    .append(" select sysdate,pdPiid,pdPdno,pdProdcode,pdQty,pdWhname,pdInBatch,pdBrandName,'")
-                    .append(master).append("' from (").append(detSql).append(")")
+                    .append("INSERT INTO ").append(master).append(".prodiowms_Lines(ITIME,PL_PIID,LOGICWAREHOUSECODE,LINENO, ITEMCODE, PLANQTY)")
+                    .append(" select sysdate,pdPiid,pdWhcode,pdPdno,pdProdcode,pdQty ")
+                    .append(" from (").append(detSql).append(")")
                     .toString();
             baseDao.execute(insertDetailSql);
         }
@@ -209,45 +179,19 @@ public class DocCommonServiceImpl implements DocCommonService {
         String orderType = prodInOut.getPiOrderType();
         for (Prodiodetail detail : prodInOut.getDetails()) {
             OrderLine orderLine;
-            if ("in".equals(prodInOut.getPiWmsInType())) {
-                orderLine = new OrderLineIn(); // 创建入库订单行对象
-                ((OrderLineIn) orderLine).setStockinDate(prodInOut.getPiDate()); // 设置入库日期
-            }else if ("out".equals(prodInOut.getPiWmsInType())) {
+            if ("out".equals(prodInOut.getPiWmsInType())) {
                 orderLine = new OrderLineOut(); // 创建普通订单行对象
-                ((OrderLineOut) orderLine).setCustomField1(detail.getPdCustprodcode());
-                ((OrderLineOut) orderLine).setCustomField2(detail.getPdCustprodcode1());
-                ((OrderLineOut) orderLine).setCustomField3(detail.getPdPocode());
-            }else {//move
+            }else {//transfer
                 orderLine = new OrderLineMove(); // 创建普通订单行对象
-                OrderLineMove.Source moveSource = new OrderLineMove.Source();
-                moveSource.setVirtualWarehouse(detail.getPdWhname());
-                moveSource.setUserDefined1(detail.getPdInBatch());
-                moveSource.setUserDefined3(detail.getPdBrandName());
-                moveSource.setUserDefined4(prodInOut.getCurrentMasterName());
-                ((OrderLineMove) orderLine).setSource(moveSource);
-                OrderLineMove.Target moveTarget = new OrderLineMove.Target();
-                moveTarget.setVirtualWarehouse(detail.getPdWhnameTo());
-                moveTarget.setUserDefined1(detail.getPdInBatch());
-                moveTarget.setUserDefined3(detail.getPdBrandName());
-                moveTarget.setUserDefined4(detail.getPostMasterName());
-                ((OrderLineMove) orderLine).setTarget(moveTarget);
-                //型号调整(其它出库单)	XHTZ 型号调整-直发(其它出库单)	XHTZZF
-                if("XHTZ".equals(orderType)||"XHTZZF".equals(orderType)){
-                    ((OrderLineMove) orderLine).setTargetItemCode(detail.getPdProdcodeTo());
-                }
             }
             // 设置通用属性
-            orderLine.setLineNo(String.valueOf(detail.getPdPdno()));// 行号
+            orderLine.setOutBizCode(prodInOut.getOutBizCode());
+            orderLine.setLogicWarehouseCode(detail.getPdWhcode());
+            orderLine.setOrderLineNo(String.valueOf(detail.getPdPdno()));// 行号
+            orderLine.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
             orderLine.setItemCode(detail.getPdProdcode());// 商品编码
             orderLine.setItemName(detail.getPdProdname());// 商品名称
             orderLine.setPlanQty(detail.getPdQty());// 数量
-            if (!"transfer".equals(prodInOut.getPiWmsInType())) {
-                orderLine.setOwnerCode(vwmsConfig.getOwnerCode());// 货主编码
-                orderLine.setVirtualWarehouse(detail.getPdWhname());// 虚拟仓库编号
-                orderLine.setUserDefined1(detail.getPdInBatch());// 入库批次
-                orderLine.setUserDefined3(detail.getPdBrandName());// 品牌
-                orderLine.setUserDefined4(masterName);//账套
-            }
             orderLineList.add(orderLine);
         }
         return orderLineList;
@@ -260,7 +204,7 @@ public class DocCommonServiceImpl implements DocCommonService {
         AdjustmentOrder adjustmentOrder = new AdjustmentOrder();
         adjustmentOrder.setAdjustmentOrderCode(prodInOut.getPiInoutno());// 转移单号(ERP单号)
         adjustmentOrder.setAdjustmentOrderType(prodInOut.getPiOrderType());// 转移单类型
-        adjustmentOrder.setOwnerCode(vwmsConfig.getOwnerCode());// 货主编码
+        adjustmentOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
         adjustmentOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
 //        adjustmentOrder.setCreateTime(prodInOut.getPiRecordDate());
         adjustmentOrder.setRemark(prodInOut.getPiRemark());
@@ -291,7 +235,7 @@ public class DocCommonServiceImpl implements DocCommonService {
         DeliveryOrder deliveryOrder = new DeliveryOrder();
         deliveryOrder.setOutBizCode(prodInOut.getPiOrderType()+"-"+System.currentTimeMillis());// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
         deliveryOrder.setDeliveryOrderCode(prodInOut.getPiInoutno());// 出库单号
-        deliveryOrder.setOwnerCode(vwmsConfig.getOwnerCode());// 货主编码
+        deliveryOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
         deliveryOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
         deliveryOrder.setPlacedAt(prodInOut.getPiDate());// 订单创建时间
         deliveryOrder.setOrderType(prodInOut.getPiOrderType());// 订单类型
@@ -356,15 +300,13 @@ public class DocCommonServiceImpl implements DocCommonService {
     @Override
     public String sendInToWms(ProdInout prodInOut,String masterName){
         EntryOrder entryOrder = new EntryOrder();
-        entryOrder.setOutBizCode(prodInOut.getPiOrderType()+"-"+System.currentTimeMillis());// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
         entryOrder.setEntryOrderCode(prodInOut.getPiInoutno());// 入库单号
-        entryOrder.setOwnerCode(vwmsConfig.getOwnerCode());// 货主编码
+        entryOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
         entryOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
-//        entryOrder.setOrderCreateTime(prodInOut.getPiRecordDate());// 订单创建时间
+        entryOrder.setOrderCreateTime(prodInOut.getPiRecordDate());// 订单创建时间
         entryOrder.setOrderType(prodInOut.getPiOrderType());// 订单类型
         entryOrder.setSupplierCode(prodInOut.getPiCardCode());// 供应商编码
         entryOrder.setSupplierName(prodInOut.getPiTitle());// 供应商名称
-        entryOrder.setDocumentMaker(prodInOut.getPiRecordman());// 制单人
         entryOrder.setRemark(prodInOut.getPiRemark());// 备注
         List<OrderLineIn> orderList = (List<OrderLineIn>) getOrderLines(prodInOut, masterName);
         EntryOrderAndDetRequest entryOrderAndDetRequest = new EntryOrderAndDetRequest();
@@ -373,117 +315,59 @@ public class DocCommonServiceImpl implements DocCommonService {
         entryOrderAndDetRequest.setEntryOrder(entryOrder);
         entryOrderAndDetRequest.setOrderLines(orderLineIns);
         //转换为JSON字符串
-        String json = null;
-        String method = null;
-        if(prodInOut.getPiSendwmsflag() == 0){
-            method = "openapi.entryorder.create";
-            BaseReq<EntryOrderAndDetRequest> req = new BaseReq();
-            req.setRequest(entryOrderAndDetRequest);
-            try {
-                json = objectMapper.writeValueAsString(req);
-            } catch (JsonProcessingException e) {
-                e.printStackTrace();
-                return "JSON转换失败";
-            }
-            //TODO 写入表:WMS_IO_RECORD_SEQ
-        }else {
-            method = "openapi.entryorder.batchupdate";
-            BaseReq<OrderVastRequest<EntryOrderAndDetRequest>> req = new BaseReq();
-            OrderVastRequest<EntryOrderAndDetRequest> vastReq = new OrderVastRequest();
-            OrderVastRequest.OrdersRequest<EntryOrderAndDetRequest> orders = new OrderVastRequest.OrdersRequest<EntryOrderAndDetRequest>();
-            orders.setOrder(Arrays.asList(entryOrderAndDetRequest));
-            vastReq.setOutBizCode(entryOrderAndDetRequest.getEntryOrder().getOutBizCode());
-            vastReq.setOrders(orders);
-            req.setRequest(vastReq);
-            try {
-                json = objectMapper.writeValueAsString(req);
-            } catch (JsonProcessingException e) {
-                e.printStackTrace();
-                return "JSON转换失败";
-            }
-        }
-        return doSendOrderToWms(json,method);
-    }
-
-    private String doSendOrderToWms(String json,String method){
-        String eMsg = null;
+        String xml = null;
+        String method = "entryorder.create";
         try {
-            logger.info("doSendInOrderToWms method:{} json: {}",method, json);
-            HttpUtil.Response response = HttpUtil.doPostToVWMS(method, json,vwmsConfig);
-            if(!String.valueOf(response.getStatusCode()).startsWith("2")){
-                eMsg = "("+response.getStatusCode()+")"+StringUtil.nvl(response.getResponseText(),"未知").replaceAll("'","''");
-            }else {
-                BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
-                BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
-                if(baseVastRespResponse!=null){
-                    if("success".equals(baseVastRespResponse.getFlag())){
-                        String orderId = "";
-                        if("openapi.entryorder.create".equals(method)){
-                            orderId = baseVastRespResponse.getEntryOrderId();
-                            eMsg = "OrderId:"+orderId;
-                        }
-                        if("openapi.stockout.create".equals(method)){
-                            orderId = baseVastRespResponse.getDeliveryOrderId();
-                            eMsg = "OrderId:"+orderId;
-                        }
-                        if("openapi.adjustmentorder.create".equals(method)){
-                            orderId = baseVastRespResponse.getAdjustmentOrderId();
-                            eMsg = "OrderId:"+orderId;
-                        }
-                        logger.info("doSendInOrderToWms-resp-s code: {} method {} OrderId {} message: {}", baseVastRespResponse.getCode(),method,orderId,baseVastRespResponse.getMessage());
-                    }else {
-                        eMsg = "(" + baseVastRespResponse.getCode() + ")";
-                        String errorMessage = baseVastRespResponse.getMessage();
-                        if (baseVastRespResponse.getOrders() != null &&
-                                !CollectionUtil.isEmpty(baseVastRespResponse.getOrders().getOrder())) {
-                            errorMessage = StringUtil.nvl(baseVastRespResponse.getOrders().getOrder().get(0).getMessage(),baseVastRespResponse.getMessage());
-                        }
-                        eMsg += StringUtil.nvl(errorMessage, "未知").replaceAll("'", "''");
-                    }
-                }else {
-                    eMsg = "RespJSON转换失败:"+response.getStatusCode()+":"+response.getResponseText();
-                }
-            }
+            XmlMapper xmlMapper = new XmlMapper();
+            xml = xmlMapper.writeValueAsString(entryOrderAndDetRequest);
         } catch (JsonProcessingException e) {
             e.printStackTrace();
-            eMsg = "JSON转换失败";
-        } catch (Exception e) {
-            e.printStackTrace();
-            eMsg = StringUtil.nvl(e.getMessage(),"无").replaceAll("'","''");
+            return "JSON转换失败";
         }
-        return eMsg;
+        //TODO 写入表:WMS_IO_RECORD_SEQ
+        return doSendOrderToWms(xml,method);
     }
 
-    @Override
-    public String sendToWms(String json,String method){
+    private String doSendOrderToWms(String xml,String method){
         String eMsg = null;
         try {
-            logger.info("sendToWms method:{} json: {}",method, json);
-            HttpUtil.Response response = HttpUtil.doPostToVWMS(method, json,vwmsConfig);
+            logger.info("doSendInOrderToWms method:{} XML: {}",method, xml);
+            HttpUtil.Response response= HttpUtil.postXmlToVWMS(method,xml, "UTF-8",vwmsConfig);
             if(!String.valueOf(response.getStatusCode()).startsWith("2")){
                 eMsg = "("+response.getStatusCode()+")"+StringUtil.nvl(response.getResponseText(),"未知").replaceAll("'","''");
             }else {
-                BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
-                BaseVastResp.Response baseVastRespResponse= baseVastResp.getResponse();
-                if(baseVastRespResponse!=null){
-                    if("success".equals(baseVastRespResponse.getFlag())){
-                        logger.info("sendToWms-resp-s code: {} method {} message: {}", baseVastRespResponse.getCode(),method,baseVastRespResponse.getMessage());
-                    }else {
-                        eMsg = "(" + baseVastRespResponse.getCode() + ")";
-                        String errorMessage = baseVastRespResponse.getMessage();
-                        if (baseVastRespResponse.getOrders() != null &&
-                                !CollectionUtil.isEmpty(baseVastRespResponse.getOrders().getOrder())) {
-                            errorMessage = StringUtil.nvl(baseVastRespResponse.getOrders().getOrder().get(0).getMessage(),baseVastRespResponse.getMessage());
+                logger.info("doSendInOrderToWms method:{} response: {}",response.getResponseText());
+                // 创建XmlMapper实例
+                XmlMapper xmlMapper = new XmlMapper();
+                IOResp ioResp = xmlMapper.readValue(response.getResponseText(), IOResp.class);
+                if(ioResp!=null){
+                    if("success".equals(ioResp.getFlag())){
+                        String orderId = "";
+                        if("entryorder.create".equals(method)){
+                            orderId = ioResp.getEntryOrderId();
+                            eMsg = "OrderId:"+orderId;
                         }
+//                        if("openapi.stockout.create".equals(method)){
+//                            orderId = baseVastRespResponse.getDeliveryOrderId();
+//                            eMsg = "OrderId:"+orderId;
+//                        }
+//                        if("openapi.adjustmentorder.create".equals(method)){
+//                            orderId = baseVastRespResponse.getAdjustmentOrderId();
+//                            eMsg = "OrderId:"+orderId;
+//                        }
+                        logger.info("doSendInOrderToWms-resp-s code: {} method {} OrderId {} message: {}", ioResp.getCode(),method,orderId,ioResp.getMessage());
+                    }else {
+                        eMsg = "(" + ioResp.getCode() + ")";
+                        String errorMessage = ioResp.getMessage();
                         eMsg += StringUtil.nvl(errorMessage, "未知").replaceAll("'", "''");
                     }
                 }else {
-                    eMsg = "RespJSON转换失败:"+response.getStatusCode()+":"+response.getResponseText();
+                    eMsg = "Resp XML转换失败:"+response.getStatusCode()+":"+response.getResponseText();
                 }
             }
-        } catch (JsonProcessingException e) {
+        } catch (IOException e) {
             e.printStackTrace();
-            eMsg = "JSON转换失败";
+            eMsg = "xmL转换失败";
         } catch (Exception e) {
             e.printStackTrace();
             eMsg = StringUtil.nvl(e.getMessage(),"无").replaceAll("'","''");

+ 47 - 48
src/main/java/com/uas/eis/service/Impl/ERPSWMServiceImpl.java

@@ -1,12 +1,14 @@
 package com.uas.eis.service.Impl;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.uas.eis.dao.BaseDao;
 import com.uas.eis.dao.SqlRowList;
 import com.uas.eis.entity.vwms.req.AdjustConfirm;
 import com.uas.eis.entity.vwms.req.BaseReq;
 import com.uas.eis.entity.vwms.req.INConfirm;
 import com.uas.eis.entity.vwms.req.OUTConfirm;
+import com.uas.eis.entity.vwms.resp.IOResp;
 import com.uas.eis.sdk.entity.WMSApiResult;
 import com.uas.eis.sdk.entity.WMSApiResultResp;
 import com.uas.eis.service.ERPService;
@@ -35,27 +37,26 @@ public class ERPSWMServiceImpl implements ERPWMSService {
     private ERPService erpService;
 
     @Override
-    public WMSApiResultResp IOConfirm(String method, HttpServletRequest request) throws IOException {
-        WMSApiResultResp resp = new WMSApiResultResp();
+    public WMSApiResult IOConfirm(String method, HttpServletRequest request) throws IOException {
+//        WMSApiResultResp resp = new WMSApiResultResp();
         WMSApiResult wmsApiResult = new WMSApiResult();
-        String masterName = "";
+        String masterCode = "";
         String orderCode = "";
         List<String> sqls = new ArrayList<>();
         // 从request属性中获取缓存的请求体
         String confirmBody = (String) request.getAttribute("cachedRequestBody");
-        // 使用Jackson将JSON字符串转换为BaseReq<IOConfirm>对象
-        ObjectMapper objectMapper = new ObjectMapper();
-        BaseReq req = null;
-        //入库确认 openapi.entryorder.confirm
-        if ("openapi.entryorder.confirm".equals(method)) {
-            req = objectMapper.readValue(confirmBody,
-                    objectMapper.getTypeFactory().constructParametricType(BaseReq.class, INConfirm.class));
-            INConfirm inConfirm = (INConfirm) req.getRequest();
+        XmlMapper xmlMapper = new XmlMapper();
+        INConfirm inConfirm = null;
+        //入库确认 entryOrder.feedback
+        if ("entryOrder.feedback".equals(method)) {
+//            req = objectMapper.readValue(confirmBody,
+//                    objectMapper.getTypeFactory().constructParametricType(BaseReq.class, INConfirm.class));
+            inConfirm = xmlMapper.readValue(confirmBody,INConfirm.class);
             INConfirm.EntryOrder entryOrder = inConfirm.getEntryOrder();
-            masterName = inConfirm.getMasterName();
+            masterCode = inConfirm.getMasterCode();
             orderCode = entryOrder.getEntryOrderCode();
         }
-        //出库确认 openapi.stockout.confirm
+       /* //出库确认 openapi.stockout.confirm
         if ("openapi.stockout.confirm".equals(method)) {
             req = objectMapper.readValue(confirmBody,
                     objectMapper.getTypeFactory().constructParametricType(BaseReq.class, OUTConfirm.class));
@@ -71,37 +72,39 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             AdjustConfirm.AdjustmentOrder order = adjustConfirm.getAdjustmentOrder();
             masterName = adjustConfirm.getMasterName();
             orderCode = order.getAdjustmentOrderCode();
-        }
+        }*/
         if (orderCode == null || orderCode.equals("")) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的单据");
-            resp.setResponse(wmsApiResult);
-            return resp;
+//            resp.setResponse(wmsApiResult);
+            return wmsApiResult;
         }
-        if (masterName == null || masterName.equals("")) {
+        if (masterCode == null || masterCode.equals("")) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的账套");
-            resp.setResponse(wmsApiResult);
-            return resp;
+//            resp.setResponse(wmsApiResult);
+            return wmsApiResult;
         }
-        String masterCode = baseDao.queryForObject("SELECT max(MA_USER) FROM DATACENTER_P.MASTER WHERE MA_ENABLE = 1 and MA_FUNCTION = ?", String.class, masterName);
-        if (masterCode == null) {
-            wmsApiResult.setFlag("failure");
-            wmsApiResult.setCode("400");
-            wmsApiResult.setMessage("没有找到对应的账套");
-            resp.setResponse(wmsApiResult);
-            return resp;
+        //测试阶段
+        if("YUEJH".equals(masterCode)){
+            masterCode ="YUEJH_TEST";
+        }
+        if("AIFL".equals(masterCode)){
+            masterCode ="YJH_T";
         }
-        logger.info("IOConfirm-Begin:method {} inoutno {}", method, orderCode);
-        SqlRowList piMsg = baseDao.queryForRowSet("select pi_id,pi_inoutno,pi_class,pi_wmsordertype,pi_postmastercode from " + masterCode + ".PRODINOUT WHERE PI_INOUTNO = '" + orderCode + "'");
+        if("YJH_HK".equals(masterCode)){
+            masterCode ="YIT_T";
+        }
+        logger.info("IOConfirm-Begin:masterCode {} method {} inoutno {}",masterCode, method, orderCode);
+        SqlRowList piMsg = baseDao.queryForRowSet("select pi_id,pi_inoutno,pi_class,pi_wmsordertype from " + masterCode + ".PRODINOUT WHERE PI_INOUTNO = '" + orderCode + "'");
         if (!piMsg.next()) {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
-            resp.setResponse(wmsApiResult);
-            return resp;
+//            resp.setResponse(wmsApiResult);
+            return wmsApiResult;
         }
         Long piId = piMsg.getGeneralLong("pi_id");
         String inoutno = piMsg.getGeneralString("pi_inoutno");
@@ -109,15 +112,14 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
-            resp.setResponse(wmsApiResult);
-            return resp;
+//            resp.setResponse(wmsApiResult);
+            return wmsApiResult;
         }
-        if ("openapi.entryorder.confirm".equals(method)) {
-            INConfirm inf = (INConfirm) req.getRequest();
-            sqls.add(inf.getGenerateMainSql());
-            sqls.addAll(inf.getGenerateLinesSql());
+        if ("entryOrder.feedback".equals(method)) {
+            sqls.add(inConfirm.getGenerateMainSql());
+            sqls.addAll(inConfirm.getGenerateLinesSql());
         }
-        if ("openapi.stockout.confirm".equals(method)) {
+       /* if ("openapi.stockout.confirm".equals(method)) {
             OUTConfirm outf = (OUTConfirm) req.getRequest();
             sqls.add(outf.getGenerateMainSql());
             sqls.addAll(outf.getGenerateLinesSql());
@@ -126,13 +128,14 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             AdjustConfirm adjustf = (AdjustConfirm) req.getRequest();
             sqls.add(adjustf.getGenerateMainSql());
             sqls.addAll(adjustf.getGenerateLinesSql());
-        }
+        }*/
         // 使用循环遍历并替换每个SQL语句中的占位符
         for (int i = 0; i < sqls.size(); i++) {
             sqls.set(i, sqls.get(i).replace("@MASTERCODE", masterCode));
             sqls.set(i, sqls.get(i).replace("@PIID", piId.toString()));
             sqls.set(i, sqls.get(i).replace("@INOUTNO", inoutno));
         }
+//        System.out.println("sqls:"+sqls.toString());
         baseDao.execute(sqls);
         //根据下载采集数据分配采集数并自动过账
         String res = baseDao.callProcedure(masterCode + ".DOCWMS_IO_CONFIRM", new Object[]{piId, null});
@@ -144,20 +147,16 @@ public class ERPSWMServiceImpl implements ERPWMSService {
                 wmsApiResult.setFlag("failure");
                 wmsApiResult.setCode("403");
                 wmsApiResult.setMessage(res);
-                resp.setResponse(wmsApiResult);
-                return resp;
+//                resp.setResponse(wmsApiResult);
+                return wmsApiResult;
             }
         }
         //内部交易对接:
-        //出货单 -> 采购验收单 国内->国内
+       /* //出货单 -> 采购验收单 国内->国内
         if ("openapi.adjustmentorder.confirm".equals(method) && StringUtil.hasText(piMsg.getGeneralString("pi_postmastercode"))) {
             String toSob = piMsg.getGeneralString("pi_postmastercode");
             if (masterCode.indexOf("HK")<0 && StringUtil.hasText(toSob) && toSob.indexOf("HK")<0
-//                    "NBZK".equals(piMsg.getGeneralString("pi_wmsordertype"))
-//                    ||"QTCK".equals(piMsg.getGeneralString("pi_wmsordertype"))
-//                    ||"QTCKZF".equals(piMsg.getGeneralString("pi_wmsordertype"))
             ) {
-
                 SqlRowList pito = baseDao.queryForRowSet("select pi_id,pi_inoutno,pi_class,ds_table,pi_wmsordertype,pi_sendwmsflag,pi_wmsstatus from " + toSob + ".prodinout left join documentsetup on ds_name = pi_class  " +
                         "where pi_sourcecode='" + piMsg.getGeneralString("pi_inoutno") + "' and pi_sourcetype = '" + piMsg.getGeneralString("pi_class") + "'");
                 if (pito.next()) {
@@ -186,9 +185,9 @@ public class ERPSWMServiceImpl implements ERPWMSService {
                     }
                 }
             }
-        }
+        }*/
         logger.info("IOConfirm-End:method {} inoutno {}", method, orderCode);
-        resp.setResponse(wmsApiResult);
-        return resp;
+//        resp.setResponse(wmsApiResult);
+        return wmsApiResult;
     }
 }

+ 15 - 155
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -100,6 +100,16 @@ public class ERPServiceImpl implements ERPService {
             retMap.put("message","没有需要同步的商品(品牌需设置对接MWS)。");
             return retMap;
         }
+        String ownerCode = master;//注意如果是资料中心 需要调用三次对接方法
+        if("YUEJH_TEST".equals(master)){
+            ownerCode = "YUEJH";
+        }
+        if("YJH_T".equals(master)){
+            ownerCode = "AIFL";
+        }
+        if("YIT_T".equals(master)){
+            ownerCode = "YJH_HK";
+        }
         for (Map<String, Object> map : list) {
             String prCode = map.get("pr_code").toString();
             // 创建ProductReq对象
@@ -118,7 +128,7 @@ public class ERPServiceImpl implements ERPService {
             BaseItemReq<ProductReq> prodBaseItemReq = new BaseItemReq();
             prodBaseItemReq.setActionType(actionType);
             prodBaseItemReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
-            prodBaseItemReq.setOwnerCode(vwmsConfig.getOwnerCode());
+            prodBaseItemReq.setOwnerCode(ownerCode);
 //            prodBaseItemReq.setOutBizCode("sendProd-"+System.currentTimeMillis());
             prodBaseItemReq.setItem(productReq);
             try {
@@ -189,14 +199,14 @@ public class ERPServiceImpl implements ERPService {
         retMap.put("success",true);
         logger.info("sendIO-Begin:master {}  id {}",master,id);
         // 执行查询
-        if(!baseDao.checkIf(master+".prodiodetail left join "+master+".product on pr_code = pd_prodcode left join "+master+".productbrand on pb_name = pr_brand "
-                ,"pd_piid = "+id+" and pb_sendwms = -1")){
+        if(!baseDao.checkIf(master+".prodiodetail left join "+master+".product on pr_code = pd_prodcode "
+                ,"pd_piid = "+id+" and nvl(pr_sendwmsflag,0) = -1")){
             logger.info("sendIO-End:master {} id {} res {}",master,id,"没有需要对接的明细。");
             retMap.put("success",false);
             retMap.put("message","没有需要对接的明细。");
             return retMap;
         }
-        ProdInout prodInOut = docCommonService.getIO(master,id,false);
+        ProdInout prodInOut = docCommonService.getIO(master,id);
         if(CollectionUtil.isEmpty(prodInOut.getDetails())){
             retMap.put("success",false);
             retMap.put("message","没有需要同步的明细。");
@@ -218,7 +228,7 @@ public class ERPServiceImpl implements ERPService {
             return retMap;
         }
         //构建请求主体
-        String masterName = prodInOut.getCurrentMasterName();
+        String masterName = prodInOut.getCurrentMaster();
         Long piId = prodInOut.getPiId();
         String errMsg = null;
         if("in".equals(prodInOut.getPiWmsInType())){
@@ -248,154 +258,4 @@ public class ERPServiceImpl implements ERPService {
         return retMap;
     }
 
-    @Override
-    public Map<String, Object> cancelIO(String master, String id, String emCode, String caller,String cancelReason) {
-        Map<String,Object> retMap = new HashMap<>();
-        String docOp = "取消";
-        retMap.put("success",true);
-        String eMsg = null;
-        logger.info("sendIO-cancel-Begin:master {}  id {} cancelReason {}",master,id,cancelReason);
-        // 执行查询
-        if(!baseDao.checkIf(master+".prodinout","pi_id = "+id+" and nvl(pi_sendwmsflag,0) = -1")){
-            logger.info("sendIO-cancel-End:master {} id {} res {}",master,id,"单据不存在或尚未同步到WMS。");
-            retMap.put("success",false);
-            retMap.put("message","单据不存在或尚未同步到WMS。");
-            return retMap;
-        }
-        ProdInout prodInOut = docCommonService.getIO(master,id,true);
-        if(prodInOut.getPiWmsstatus().equals("已确认")){
-            retMap.put("success",false);
-            retMap.put("message","单据已确认采集,不允许取消。");
-            return retMap;
-        }
-        Long piId = prodInOut.getPiId();
-        BaseReq<OrderVastRequest<OrderCancel>> req = new BaseReq();
-        OrderVastRequest<OrderCancel> cancelReq = new OrderVastRequest();
-        cancelReq.setOutBizCode("sendIO-cancel-"+prodInOut.getPiOrderType()+"-"+System.currentTimeMillis());// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
-        OrderVastRequest.OrdersRequest<OrderCancel> orders = getOrderCancelOrdersRequest(cancelReason, prodInOut);
-        cancelReq.setOrders(orders);
-        req.setRequest(cancelReq);
-        try {
-            //转换为JSON字符串
-            String json = objectMapper.writeValueAsString(req);
-            logger.info("sendIO-cancel-Request JSON: {}", json);
-            HttpUtil.Response response = HttpUtil.doPostToVWMS("openapi.order.batchcancel.v2", json,vwmsConfig);
-            if(!String.valueOf(response.getStatusCode()).startsWith("2")){
-                eMsg = "("+response.getStatusCode()+")"+StringUtil.nvl(response.getResponseText(),"无").replaceAll("'","''");
-            }else {
-                BaseVastResp baseVastResp = new ObjectMapper().readValue(response.getResponseText(), BaseVastResp.class);
-                BaseVastResp.Response baseVastRespResponse = baseVastResp.getResponse();
-                if(baseVastRespResponse!=null){
-                    if("success".equals(baseVastRespResponse.getFlag())){
-                        logger.info("sendIO-cancel-response-success code: {} message: {}", baseVastRespResponse.getCode(),baseVastRespResponse.getMessage());
-//                        baseDao.execute("update  "+master+".prodinout set pi_sendwmsstatus='取消成功' ,pi_sendwmserr=null,pi_sendwmsflag=0,PI_WMSORDERCODE=null where pi_id = "+piId);
-                        //TODO 删除表:WMS_IO_RECORD_SEQ
-                    }else {
-//                        logger.info("sendIO-cancel-response-failure {}", response.getResponseText());
-                        eMsg = "(" + baseVastRespResponse.getCode() + ")";
-                        String errorMessage = baseVastRespResponse.getMessage();
-                        if (baseVastRespResponse.getOrders() != null &&
-                                !CollectionUtil.isEmpty(baseVastRespResponse.getOrders().getOrder())) {
-                            errorMessage = StringUtil.nvl(baseVastRespResponse.getOrders().getOrder().get(0).getMessage(),baseVastRespResponse.getMessage());
-                        }
-                        eMsg += StringUtil.nvl(errorMessage, "未知").replaceAll("'", "''");
-                    }
-                }else {
-                    eMsg = "RespJSON转换失败:"+response.getStatusCode()+":"+response.getResponseText();
-                }
-            }
-        } catch (JsonProcessingException e) {
-            eMsg = "JSON转换失败";
-            e.printStackTrace();
-        } catch (Exception e) {
-            e.printStackTrace();
-            eMsg = StringUtil.nvl(e.getMessage(),"无").replaceAll("'","''");
-        }
-        if(eMsg!=null){
-            eMsg = eMsg.replaceAll("'","''");
-            logger.info("sendIO-cancel-End-failure master {} piid {} errorTip {}",master,piId,eMsg);
-//            baseDao.execute("update "+master+".prodinout set pi_sendwmsstatus='取消失败',pi_sendwmserr=UNISTR('"+eMsg+"') where pi_id = "+piId);
-            retMap.put("success",false);
-            retMap.put("message",eMsg);
-        }else {
-            logger.info("sendIO-cancel-End-success master {} piid {} ",master,piId);
-        }
-        return retMap;
-    }
-
-    @Override
-    public Map<String, Object> sendStockData(String master, String emCode) {
-        Map<String, Object> resMap = new HashMap<>();
-        resMap.put("success",true);
-        logger.info("sendStockData-Begin master {} emCode {} ",master,emCode);
-        List<StockData> stockDataList = baseDao.getJdbcTemplate().query("SELECT * FROM "+master+".SCM_KCZLB_WMS_VIEW ",
-                new BeanPropertyRowMapper<>(StockData.class));
-        String dataNo = "";
-        if(!CollectionUtil.isEmpty(stockDataList)){
-            // 每1000条分批处理
-            int batchSize = 1000;
-            int totalSize = stockDataList.size();
-            int batchCount = (totalSize + batchSize - 1) / batchSize;
-            for (int i = 0; i < batchCount; i++) {
-                int fromIndex = i * batchSize;
-                int toIndex = Math.min((i + 1) * batchSize, totalSize);
-                String outBizCode = "erpStockData-"+ DateUtil.currentDateString(Constant.YMD_HMS);
-                if(!StringUtil.hasText(dataNo)){
-                    dataNo = outBizCode;
-                }
-                // 获取当前批次数据
-                InventorySyncReq inventorySyncReq = new InventorySyncReq();
-                inventorySyncReq.setDataNo(dataNo);
-                inventorySyncReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
-                inventorySyncReq.setOwnerCode(vwmsConfig.getOwnerCode());
-                inventorySyncReq.setOutBizCode(outBizCode);
-                InventorySyncReq.StockDataItems items = new InventorySyncReq.StockDataItems();
-                items.setItem(stockDataList.subList(fromIndex, toIndex));
-                inventorySyncReq.setItems(items);
-                BaseReq<InventorySyncReq> req = new BaseReq();
-                req.setRequest(inventorySyncReq);
-                try {
-                    String json = objectMapper.writeValueAsString(req);
-                    // 处理当前批次数据
-                    String errTip = docCommonService.sendToWms(json, "openapi.inventory.foreign.synchronize");
-                    if (errTip!=null) {
-                        resMap.put("success", false);
-                        resMap.put("message", "【dataNo:"+dataNo+"】同步第" + (fromIndex) + "~"+toIndex+"行数据失败:" + errTip);
-                        break;
-                    }
-                } catch (JsonProcessingException e) {
-                    e.printStackTrace();
-                    resMap.put("success", false);
-                    resMap.put("message", "【dataNo:"+dataNo+"】同步第" + (fromIndex) + "~"+toIndex+"行数据失败:JSON转换失败" );
-                    break;
-                }
-            }
-            resMap.put("message", "【dataNo:"+dataNo+"】库存数据同步成功,共处理" + totalSize + "条数据");
-        }
-        if("JOB".equals(emCode)){
-            //记录日志
-            baseDao.execute("Insert into " + master + ".MESSAGELOG (ML_ID,ML_DATE,ML_MAN,ML_CONTENT,ML_RESULT,ML_SEARCH,CODE) " +
-                    "values (" + master + ".MESSAGELOG_seq.nextval,sysdate,'定时任务','同步库存至WMS(自动)','"
-                    +resMap.get("message")
-                    +"','InventoryToWms|emCode=" + emCode + "','" + emCode + "')");
-        }
-        logger.info("sendStockData-End-success master {} emCode {} dataNo {}",master,emCode,dataNo);
-        return resMap;
-    }
-
-
-
-    private OrderVastRequest.OrdersRequest<OrderCancel> getOrderCancelOrdersRequest(String cancelReason, ProdInout prodInOut) {
-        OrderVastRequest.OrdersRequest<OrderCancel> orders = new OrderVastRequest.OrdersRequest<OrderCancel>();
-        OrderCancel cancelOrder = new OrderCancel();
-        cancelOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
-        cancelOrder.setOwnerCode(vwmsConfig.getOwnerCode());// 货主编码
-        cancelOrder.setOrderCode(prodInOut.getPiInoutno());// 入库单号
-        cancelOrder.setCancelReason(cancelReason);
-        cancelOrder.setCancelType(prodInOut.getPiWmsInType());
-        orders.setOrder(Arrays.asList(cancelOrder));
-        return orders;
-    }
-
-
 }

+ 0 - 17
src/main/java/com/uas/eis/task/BatchZhanglingSyncTask.java

@@ -1,17 +0,0 @@
-package com.uas.eis.task;
-
-import com.uas.eis.service.ERPService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Component
-public class BatchZhanglingSyncTask {
-    @Autowired
-    private ERPService erpService;
-
-    @Scheduled(cron = "0 0 7 * * ?")
-    private void syncBatchZhangling(){
-        erpService.sendStockData("HUAXK","JOB");
-    }
-}

+ 1 - 2
src/main/java/com/uas/eis/utils/HttpUtil.java

@@ -1009,14 +1009,13 @@ public class HttpUtil {
 		//20201015001app_key20201015001customerIdBJMGformatxmlmethodsingleitem.synchronizepartner_idtop-sdk-java-20190305sign_methodmd5timestamp2020-12-14 18:54:36v2.0{body}20201015001
 		String signMsg= String.format("%sapp_key%scustomerId%sformatxmlmethod%ssign_methodmd5timestamp%sv2.0%s%s",
 				vwmsConfig.getAppKey(), vwmsConfig.getAppKey(), vwmsConfig.getCustomerId(),method,timestamp,xml,vwmsConfig.getAppKey());
-		System.out.println(signMsg.toString());
 		StringBuilder postUrl = new StringBuilder(vwmsConfig.getApiUrl());
 		postUrl.append("?app_key=").append(vwmsConfig.getAppKey()).append("&method=").append(method)
 				.append("&v=2.0").append("&sign=").append(MD5Util.encrypt32Up(signMsg))	// 对请求串进行签名
 				.append("&timestamp=").append(System.currentTimeMillis())
 				.append("&format=xml").append("&sign_method=md5")
 				.append("&customerId=").append(vwmsConfig.getCustomerId());
-		System.out.println(postUrl.toString());
+		System.out.println("postUrl:"+postUrl.toString());
 		URL url = new URL(postUrl.toString());
 		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 		try {

+ 1 - 1
src/main/resources/vwms.properties

@@ -2,7 +2,7 @@ api_url=http://vpn-nj.hr-network.cn:285/api/edi/qimen/service
 app_key=YJHUAS
 customerId=YJH
 vwms.warehouse.code=YJHCK
-ownerCode=YUEJH
+#ownerCode=YUEJH
 
 
 

+ 24 - 12
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -41,6 +41,28 @@ public class UasEisApplicationTests {
 	@Autowired
 	private VwmsConfig vwmsConfig;
 	@Test
+	public void testSendIn(){
+		// 设置测试数据
+		String master = "YUEJH_TEST";
+		String id = "50744152";
+		String emCode = "test";
+		String caller = "ProdInOut!PurcCheckin";
+		// 调用待测方法
+		Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+	@Test
+	public void testSendProd(){
+		// 设置测试数据
+		String master = "YUEJH_TEST";
+		String id = "100052522";
+		String emCode = "test";
+		String caller = "Product";
+		// 调用待测方法
+		Map<String, Object> result = erpService.sendProd(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+	@Test
 	public void testResp(){
 		String responseText="<?xml version=\"1.0\" encoding=\"utf-8\"?><response><flag>success</flag><code>201</code><message>openapi.items.synchronize successfully</message></response>";
 		System.out.println("responseText:"+responseText);
@@ -61,17 +83,7 @@ public class UasEisApplicationTests {
 		String sign = MD5Util.encrypt32Up(meg);
 		System.out.println("MD5加密结果: " + sign);
 	}
-	@Test
-	public void testSendProd(){
-		// 设置测试数据
-		String master = "YUEJH_TEST";
-		String id = "100052523";
-		String emCode = "test";
-		String caller = "Product";
-		// 调用待测方法
-		Map<String, Object> result = erpService.sendProd(master, id, emCode,caller);
-		System.out.println("result:"+result.toString());
-	}
+
 
 
 	@Test
@@ -82,7 +94,7 @@ public class UasEisApplicationTests {
 		BaseItemsReq<ProductReq> prodBaseItemsReq = new BaseItemsReq();
 		prodBaseItemsReq.setActionType("update");
 		prodBaseItemsReq.setWarehouseCode(vwmsConfig.getWarehouseCode());
-		prodBaseItemsReq.setOwnerCode(vwmsConfig.getOwnerCode());
+		prodBaseItemsReq.setOwnerCode("YUEJH");
 		prodBaseItemsReq.setOutBizCode("sendProd-"+System.currentTimeMillis());
 		// 创建BaseVastItem对象
 		BaseItemsReq.BaseItems prodBaseItems = new BaseItemsReq<ProductReq>().new BaseItems<ProductReq>();