Browse Source

【越加红】【WMS对接】【出库、调拨对接】

wuyx 6 months ago
parent
commit
85cc7f6c60

+ 14 - 81
src/main/java/com/uas/eis/entity/vwms/entity/DeliveryOrder.java

@@ -9,97 +9,30 @@ import java.util.List;
 @Data
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class DeliveryOrder {
-    private String isRelease = "0";//释放状态  0=未释放,  1=已释放,  2=未控制, 默认:2(只传数字)
-    private String outBizCode; // 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
     private String deliveryOrderCode; // 出库单号(ERP分配)
-    private String warehouseCode; // 仓库代码
+    private String orderType; // 出库单类型 例如: XSDD=销售订单、DBCK=调拨出库、THCK=退货出库、QTCK=其他出库(只传英文编码)
+    private String warehouseCode; // 出库仓库编码(物理仓)
+    private String inWarehouseCode; // 调入仓库编码(物理仓) 条件必填,调拨出库业务类型该字段必填
     private String ownerCode; // 货主代码
+    private String inOwnerCode; // 目标货主编码 转库目标账套编码
     private String createTime; // 出库单创建时间 YYYY-MM-DD HH:MM:SS, 为空时WMS自动生成
-    private String orderType; // 出库单类型 例如: XSDD=销售订单、DBCK=调拨出库、THCK=退货出库、QTCK=其他出库(只传英文编码)
-    private String placedAt; // 下单时间 YYYY-MM-DD HH:MM:SS, 为空时WMS自动生成
-//    private String payTime; // 付款时间 YYYY-MM-DD HH:MM:SS
-//    private String datePlanned; // 预计到达时间 YYYY-MM-DD HH:MM:SS
-//    private String sourcePlatformCode; // 订单来源平台编码 TB=淘宝、TM=天猫、JD=京东、DD=当当、PP=拍拍、YX=易讯、EBAY=ebay、QQ=QQ网购、AMAZON=亚马逊、SN=苏宁、GM=国美、WPH=唯品会、JM=聚美、LF=乐蜂、MGJ=蘑菇街、JS=聚尚、PX=拍鞋、YT=银泰、YHD=1号店、VANCL=凡客、YL=邮乐、YG=优购、1688=阿里巴巴、POS=POS门店、MIA=蜜芽、GW=商家官网、CT=村淘、OTHER=其他(只传英文编码), 条件必填, 条件为B2C订单
-//    private String logisticsCode; // 物流公司编码 SF=顺丰、EMS=标准快递、EYB=经济快件、ZJS=宅急送、YTO=圆通、ZTO=中通、HTKY=百世汇通、UC=优速、STO=申通、TTKDEX=天天快递、QFKD=全峰、FAST=快捷、POSTB=邮政小包、GTO=国通、YUNDA=韵达、JD=京东配送、DD=当当宅配、AMAZON=亚马逊物流、OTHER=其他(只传英文编码), 条件必填, 条件为B2C订单
-//    private String expressCode; // 运单号
-//    private String printData; // 打印数据
-//    private String shopNick; // 店铺名称,条件必填,条件为B2C订单
-//    private String entryOrderCode; // 出库单对应的申请单号
-//    private String carryRoute; // 发货路线
-//    private String carrryCompany; // 承运商
-    private String customerCode; // 客户编码 标准发货通知单、VMI发货通知单取客户编码, 标准退货通知单取供应商编码, 分销调拨发货通知单取调出方编码、其他出库取公司编码
-    private String customer; // 客户名称 标准发货通知单、VMI发货通知单取客户名称, 标准退货通知单取供应商名称, 分销调拨发货通知单取调出方名称、其他出库取公司名称
-    private String documentMaker; // 制单人
-//    private String buyerMessage; // 买家留言
-//    private String sellerMessage; // 卖家留言
-//    private String invoiceFlag; // 发票标记 Y=需要发票, 默认为N,N=不需要发票
-//    private List<OutInvoice> invoices;//发票信息
-//    private SenderInfo senderInfo;//发货信息
-    private ReceiverInfo receiverInfo;//收货信息
-//    private String customJson; //自定义json
+    private String scheduleDate; // 要求出库时间
+    private String supplierCode; // 客户编码 标准发货通知单、VMI发货通知单取客户编码, 标准退货通知单取供应商编码, 分销调拨发货通知单取调出方编码、其他出库取公司编码
+    private String supplierName; // 客户名称 标准发货通知单、VMI发货通知单取客户名称, 标准退货通知单取供应商名称, 分销调拨发货通知单取调出方名称、其他出库取公司名称
     private String remark; //备注
-    private String userDefined1; //自定义1
-    private String userDefined2;
-    private String userDefined3;
-    private String userDefined4;
-//    private String sourceOrderCode; //交易平台订单号
-//    private List<File> files;
-
-  /*  @Data
-    public static class OutInvoice {
-        private String type;
-        private String header;
-        private Float amount;
-        private String content;
-        private String taxNumber;
-        private List<OutInvoiceItem> detail;
-    }
-
-    @Data
-    public static class OutInvoiceItem {
-        private String itemName;
-        private String unit;
-        private Float price;
-        private Float quantity;
-        private Float amount;
-    }*/
+    private String documenter; // 制单人
 
-    @Data
-    public static class SenderInfo {
-        private String name; // 姓名 条件必填, 条件为B2C订单
-        private String mobile; // 移动电话 条件必填, 条件为B2C订单
-        private String province; // 省份 条件必填, 条件为B2C订单
-        private String city; // 城市 条件必填, 条件为B2C订单
-        private String area; // 区域
-        private String town; // 村镇
-        private String detailAddress; // 详细地址 条件必填, 条件为B2C订单
-        private String company; // 公司名称
-        private String zipCode; // 邮编
-        private String countryCode; // 国家二字码
-    }
+    private ReceiverInfo receiverInfo;//收货信息
 
     @Data
     public static class ReceiverInfo {
-        private String name; // 姓名
-//        private String tel; // 固定电话
+        private String code; // 客户编号
+        private String company; // 客户名称
+        private String name; // 姓名 条件必填, 条件为B2C订单
         private String mobile; // 移动电话 条件必填, 条件为B2C订单
-//        private String province; // 省份 条件必填, 条件为B2C订单
-//        private String city; // 城市 条件必填, 条件为B2C订单
-//        private String area; // 区域
-//        private String town; // 村镇
-        private String detailAddress; // 详细地址
-//        private String email; // 电子邮箱
-//        private String company; // 公司名称
-//        private String zipCode; // 邮编
-//        private String countryCode; // 国家二字码
-//        private String oaid; // 收件人销售平台ID
+        private String detailAddress; // 收货地址 详细地址 条件必填, 条件为B2C订单
+        private String custForshort; // 客户简称
     }
 
- /*   @Data
-    public static class File {
-        private String name;
-        private String url;
-    }*/
-
 }
 

+ 10 - 5
src/main/java/com/uas/eis/entity/vwms/entity/OrderLineOut.java

@@ -4,11 +4,16 @@ import lombok.Data;
 
 @Data
 public class OrderLineOut extends OrderLine {
+
+    private String inLogicWarehouseCode;//目标逻辑仓 转库出库、调拨出库类型时转入的逻辑仓编号
+    private Double retailPrice; //零售价 -> 定价
+    private Double actualPrice; //实际成交价 -> 出货单价
     private String remark;
-    private String custItemCode;//客户商品编码
-    private String custItemName;//客户商品名称
-    private String custItemSkuProperty;//客户商品型号
+
+    private String custItemCode;//客户商品编码 客户料号 pd_custprodcode
+    private String custItemName;//客户商品名称 客户物料描述	pd_custproddetail
+    private String custItemSkuProperty;//客户商品型号 客户型号	pd_custprodspec
     private String custLotNumber;//客户批次
-    private String custPO;//客户PO
-    private String contractNo;//合同编号
+    private String custPO;//客户PO pd_pocode
+    private String contractNo;//合同编号 订单编号	pd_ordercode
 }

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

@@ -27,11 +27,14 @@ public class ProdInout {
     private String piInvoStatusCode;//审核状态:ENTERING、COMMITED、AUDITED
     private String piLxr;//收货人
     private String piLxdh;//收货电话
-    private String piShrsj;//收货手机
     private String piKhdz;//收货地址
 
     private String outBizCode;// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
 
 
+    private String toMasterCode;//目标账套
+    private String piDeliverytime;//要求交货日期
+    private String custShortName;//客户简称
+
 
 }

+ 8 - 14
src/main/java/com/uas/eis/entity/vwms/entity/Prodiodetail.java

@@ -12,25 +12,19 @@ public class Prodiodetail {
     private Float pdQty;
     private String pdWhcode;
     private String pdWhname;
-    private String pdInBatch;
     private String pdBrandName;
-    private String pdCustprodcode;
-    private String pdCustprodcode1;
+    private String pdCustProdCode;
+    private String pdCustProdDetail;
+    private String pdCustProdSpec;
     private String pdPocode;
     //BCCK 拨出、拨入单
     private String pdWhcodeTo;
-    private String pdWhnameTo;
-    //出账套
-    private String postMasterCode;
-    private String postMasterName;
-    //入账套
-    private String sourceMasterCode;
-    private String sourceMasterName;
-
-    //pd_prodcode1_user 新物料编号
-    private String pdProdcodeTo;
-    private String pdBrandNameTo;
+//    private String pdWhnameTo;
 
+    private Double pdSendPrice;
+    private Double standardPrice;
+    private String pdRemark;
+    private String pdOrderCode;
 
 
 }

+ 4 - 3
src/main/java/com/uas/eis/entity/vwms/req/INConfirm.java

@@ -168,13 +168,14 @@ public class INConfirm {
                 .append("wmsl.ORDERFINISHEDTIME = doc.ORDERFINISHEDTIME, ")
                 .append("wmsl.REMARK = doc.REMARK, ")
                 .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)");
+                .append("WHEN NOT MATCHED THEN INSERT ( UTIME,PIID, PIINOUTNO, OWNERCODE, WMSORDERID, CONFIRMTYPE, STATUS,OPERATETIME, ORDERFINISHEDTIME, REMARK) ")
+                .append("VALUES (SYSDATE,doc.PIID, doc.PIINOUTNO,'@MASTERCODE', doc.WMSORDERID, doc.CONFIRMTYPE, doc.STATUS,doc.OPERATETIME, doc.ORDERFINISHEDTIME, doc.REMARK)");
         return sql.toString();
     }
 
     public List<String> getGenerateLinesSql() {
         List<String> sqls = new ArrayList<>();
+        sqls.add("UPDATE @MASTERCODE.prodiowms_Lines SET ACTUALQTY=0 WHERE PL_PIID = @PIID");
         for (OrderLines.OrderLine line : orderLines.getOrderLine()) {
             sqls.add(getGenerateLinesSql(line));
         }
@@ -195,7 +196,7 @@ public class INConfirm {
                 .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.ACTUALQTY = NVL(wmsl.ACTUALQTY,0) + doc.ACTUALQTY, ")
                 .append("wmsl.LOGICWAREHOUSECODE = doc.LOGICWAREHOUSECODE, ")
                 .append("wmsl.UTIME = SYSDATE ")
                 .append("WHEN NOT MATCHED THEN INSERT (ITIME,UTIME,PL_PIID,OUTBIZCODE,LOGICWAREHOUSECODE, LINENO, ITEMCODE, PLANQTY, ACTUALQTY) ")

+ 79 - 300
src/main/java/com/uas/eis/entity/vwms/req/OUTConfirm.java

@@ -1,6 +1,8 @@
 package com.uas.eis.entity.vwms.req;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
+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;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -9,255 +11,89 @@ import java.util.ArrayList;
 import java.util.List;
 
 @Data
-@JsonIgnoreProperties(ignoreUnknown = true)
+@JacksonXmlRootElement(localName = "request")
+@JsonIgnoreProperties(ignoreUnknown = true)  // 忽略未知字段
 public class OUTConfirm {
+    @JacksonXmlProperty(localName = "deliveryOrder")
     private DeliveryOrder deliveryOrder;
-    private Packages packages;
+    @JacksonXmlProperty(localName = "orderLines")
     private OrderLines orderLines;
-    private OrderDetails orderDetails;
 
     @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
+    @JsonIgnoreProperties(ignoreUnknown = true)  // 忽略未知字段
     public static class DeliveryOrder {
         /** 出库单号 长度:50 */
         private String deliveryOrderCode;
         /** 仓储系统出库单号 长度:50 条件必填 */
         private String deliveryOrderId;
-        /** 仓库代码 长度:50 */
-        private String warehouseCode;
+        private String warehouseCode; // 出库仓库编码(物理仓)
+        private String inWarehouseCode; // 调入仓库编码(物理仓) 条件必填,调拨出库业务类型该字段必填
         /** 货主代码 长度:50 */
         private String ownerCode;
-        /** 出库单类型 长度:50 例如: XSDD=销售订单, DBCK=调拨出库、CGTH=采购退货, QTCK=其他出库 */
+        private String ownerName;
+
+        private String inOwnerCode; // 目标货主编码 转库目标账套编码
+        /** 客户编码 长度:50 */
+        private String transceiverCode;
+        private String transceiverName;
+
+        /** 出库单类型 长度:50 例如: YPCK=样品出库、DHCK=大货出库、CGTH=退货出库、DBCK=调拨出库、QTCK=其他出库、LYCK=领用出库、JSCK=寄售出库 */
         private String orderType;
-        /** 出库单状态 长度:50 NEW-未开始处理, ACCEPT=仓库接单, PARTDELIVERED=部分发货完成, DELIVERED=发货完成, CANCELED=取消, CLOSED=关闭, CANCELEDFAIL=取消失败(只传英文编码) */
+        /** 出库单状态 长度:50  NEW-未开始处理, ACCEPT-仓库接单, PARTDELIVERED-部分发货完成, DELIVERED-发货完成,    EXCEPTION-异常, CANCELED-取消, CLOSED-关闭, REJECT-拒单, CANCELEDFAIL-取消失败,只传英文编码*/
         private String status;
-        /** 外部业务编码 长度:50 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理 */
-        private String outBizCode;
         /** 支持出库单多次发货 多次发货确认时 0=发货单最终状态确认: 1=发货单中间状态确认 */
-        private String confirmType;
-        /** 物流公司编码 长度:50 SF=顺丰、EMS=标准快递、EYB=经济快件、ZJS=宅急送、YTO=圆通、ZTO=中通、HTKY=百世汇通、UC=优速、STO=申通、TTKDEX=天天快递、QFKD=全峰、FAST=快捷、POSTB=邮政小包、GTO=国通、YUNDA=韵达、JD=京东配送、DD=当当宅配、AMAZON=亚马逊物流、OTHER=其他(只传英文编码) */
+        private Integer confirmType;
+
+        /** 物流公司编码 长度:50 SF=顺丰、EMS=标准快递、EYB=经济快件、ZJS=宅急送、YTO=圆通 、ZTO=中通 (ZTO) 、HTKY=百世汇通、BSKY=百世快运、UC=优速、STO=申通、TTKDEX=天天快递 、QFKD=全峰、FAST=快捷、POSTB=邮政小包 、GTO=国通、YUNDA=韵达、JD=京东配送、DD=当当宅配、AMAZON=亚马逊物流、DBWL=德邦物流、DBKD=德邦快递、DBKY=德邦快运、RRS=日日顺、OTHER=其他 ,(只传英文编码) 如果没有购买OMS系统请不要传OTHER,可以传其他自定义的 */
         private String logisticsCode;
+        /*物流公司名称(包括干线物流公司等)*/
+        private String logisticsName;
         /** 运单号 长度:50 */
         private String expressCode;
-        /** 制单人 长度:50 */
-        private String documentMaker;
-        /** 发货人 长度:50 */
-        private String shipper;
-        /** 收货人 长度:50 */
-        private String receiverName;
-        /** 订单发运时间 长度:19 YYYY-MM-DD HH:MM:SS */
-        private String deliveryTime;
-        /** 用户自定义1 长度:50 */
-        private String userDefined1;
-        /** 用户自定义2 长度:50 */
-        private String userDefined2;
-        /** 用户自定义3 长度:50 */
-        private String userDefined3;
-        /** 用户自定义4 长度:50 */
-        private String userDefined4;
-        /** 客户 长度:50 */
-        private String customer;
-        /** 序列号 长度:50 */
-        private String serialNos;
-        /** 序列号数量 长度:50 */
-        private String serialNoQty;
-        /** 订单来源平台代码 长度:50 */
-        private String sourcePlatformCode;
-        /** 备注 长度:100 */
-        private String remark;
-        /** 文件信息 */
-        private Files files;
-    }
-
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Files {
-        private List<File> file;
-
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class File {
-            /** 文件url,仅出库单关闭状态时回传,文件url有效时间24小时内*/
-            private String url;
-        }
-    }
-
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Packages {
-        @JsonProperty("package")
-//        private List<Pkg> pkg;
-        private Pkg pkg;
-
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class Pkg {
-            /** 物流公司编码 长度:50 SF=顺丰、EMS=标准快递、EYB=经济快件、ZJS=宅急送、YTO=圆通、ZTO=中通、HTKY=百世汇通、UC=优速、STO=申通、TTKDEX=天天快递、QFKD=全峰、FAST=快捷、POSTB=邮政小包、GTO=国通、YUNDA=韵达、JD=京东配送、DD=当当宅配、AMAZON=亚马逊物流、OTHER=其他(只传英文编码) */
-            private String logisticsCode;
-            /** 运单号 长度:50 */
-            private String expressCode;
-            /** 箱号 长度:50 */
-            private String packageCode;
-            /** 商品信息 */
-            private Items items;
-            /** 耗材信息 */
-            private ConsumableDetails consumableDetails;
-            /** 箱重量 类型:double(18,3) */
-            private Double weight;
-            /** 箱体积 类型:double(18,3) */
-            private Double volume;
-            /** 耗材体积 类型:double(18,3) */
-            private Double consumableVolume;
-            /** 耗材代码 长度:50 */
-            private String consumableCode;
-            /** 货品体积 double (18,3)*/
-            private String productVolume;
-            /** 货品重量 */
-            private String productWeight;
-            /** 箱自定义1 */
-            private String userDefined1;
-            /** 箱自定义2 */
-            private String userDefined2;
-            /** 箱自定义3 */
-            private String userDefined3;
-            /** 箱自定义4 */
-            private String userDefined4;
-        }
-    }
-
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Items {
-        private List<Item> item;
-
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class Item {
-            /** 货品代码  */
-            private String itemCode;
-            /** 箱内该货品的数量 */
-            private String quantity;
-        }
-    }
-
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class ConsumableDetails {
-        private List<ConsumableDetail> consumableDetail;
-
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class ConsumableDetail {
-            /** 耗材代码  */
-            private String consumableCode;
-            /** 箱内该耗材的数量 */
-            private String quantity;
-        }
+        /** 订单完成时间 长度:19 YYYY-MM-DD HH:MM:SS */
+        private String orderConfirmTime;
+        private String operateTime;//当前状态操作时间, string (19) , YYYY-MM-DD HH:MM:SS
+        /*当前状态操作员姓名, string (50)*/
+        private String operatorName;
     }
 
     @Data
     @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 {
+            /** 外部业务编码 长度:50 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理 */
+            private String outBizCode;
             /** 行号 */
-            private Integer lineNo;
+            private Integer orderLineNo;
             /** 货品代码 长度:50 */
             private String itemCode;
-            /** 包装单位 长度:50 */
-            private String packUom;
+            private String itemId;
+            private String itemName;
             /** 预期货品数量 类型:float */
             private Float planQty;
             /** 实发货品数量 类型:float */
             private Float actualQty;
-            /** 实发包装数量 类型:float */
-            private Float actualPackUomQty;
-            /** 质量状态 长度:50 ZP=正品, CC=残次, 默认为ZP */
-            private String inventoryType;
-            /** 序列号,多个序列号用英文逗号隔开 长度:500 */
-            private String serialNo;
-            /** 自定义字段1 长度:50 */
-            private String customField1;
-            /** 自定义字段2 长度:50 */
-            private String customField2;
-            /** 自定义字段3 长度:50 */
-            private String customField3;
-            /** 自定义字段4 长度:50 */
-            private String customField4;
-            /** 自定义字段5 长度:50 */
-            private String customField5;
-            /** 自定义字段6 长度:50 */
-            private String customField6;
-            /** 自定义字段7 长度:50 */
-            private String customField7;
-            /** 自定义字段8 长度:50 */
-            private String customField8;
-            /** 批次信息 */
-            private Batchs batchs;
-            @Data
-            @JsonIgnoreProperties(ignoreUnknown = true)
-            public static class Batchs {
-                private List<Batch> batch;
-
-                @Data
-                @JsonIgnoreProperties(ignoreUnknown = true)
-                public static class Batch {
-                    /** 实发货品数量 类型:float */
-                    private Float actualQty;
-                    /** 实收包装数量 类型:float */
-                    private Float actualPackUomQty;
-                    /** 库存类型 长度:50 ZP=正品, CC=残次, 默认ZP */
-                    private String inventoryType;
-                    /** 虚拟仓库 长度:50 条件必填, 条件为使用虚拟仓库 */
-                    private String virtualWarehouse;
-                    /** 生产日期 长度:10 YYYY-MM-DD */
-                    private String productDate;
-                    /** 失效日期 长度:10 YYYY-MM-DD */
-                    private String expireDate;
-                    /** 批次号 长度:50 */
-                    private String batchCode;
-                    /** 入库日期 长度:10 YYYY-MM-DD */
-                    private String stockinDate;
-                    /** 自定义批次1 长度:50 */
-                    private String userDefined1;
-                    /** 自定义批次2 长度:50 */
-                    private String userDefined2;
-                    /** 自定义批次3 长度:50 */
-                    private String userDefined3;
-                    /** 自定义批次4 长度:50 */
-                    private String userDefined4;
-                    /** 拣货容器号 长度:50 */
-                    private String lpn;
-                }
-            }
-        }
-    }
-
-
-
-    @Data
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class OrderDetails {
-        private List<Detail> detail;
 
-        @Data
-        @JsonIgnoreProperties(ignoreUnknown = true)
-        public static class Detail {
-            /** 容器号 */
-            private String boxNo;
-            /** epc码  RFID场景适用 */
-            private String epc;
+            private String ownerCode;
+            private String logicWarehouseCode;
+            private String inLogicWarehouseCode;
         }
     }
-    public String getMasterName() {
-        if (orderLines.getOrderLine() != null) {//账套名称
-            return orderLines.getOrderLine().get(0).getBatchs().getBatch().get(0).getUserDefined4();
+    public String getMasterCode() {
+        if(StringUtil.hasText(deliveryOrder.getOwnerCode())){
+            return deliveryOrder.getOwnerCode();
         } else {
-            return null;
+            if(orderLines != null && orderLines.getOrderLine() != null && orderLines.getOrderLine().size() > 0){
+                return orderLines.getOrderLine().get(0).getOwnerCode();
+            }
         }
+        return null;
     }
 
     public String getGenerateMainSql() {
@@ -267,50 +103,51 @@ public class OUTConfirm {
                 .append("'").append("@INOUTNO").append("' PIINOUTNO, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getDeliveryOrderCode(), "")).append("' ORDERCODE, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getOwnerCode(), "")).append("' OWNERCODE, ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getInOwnerCode(), "")).append("' inOwnerCode, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getWarehouseCode(), "")).append("' WAREHOUSECODE, ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getInWarehouseCode(), "")).append("' inWarehouseCode, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getDeliveryOrderId(), "")).append("' WMSORDERID, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getOrderType(), "")).append("' WMSORDERTYPE, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getOutBizCode(), "")).append("' OUTBIZCODE, ")
                 .append(StringUtil.nvl(deliveryOrder.getConfirmType(), "0")).append(" CONFIRMTYPE, ")
                 .append("'").append(StringUtil.nvl(deliveryOrder.getStatus(), "")).append("' STATUS, ")
-                .append((StringUtil.hasText(deliveryOrder.getDeliveryTime()) ? "to_date('" + deliveryOrder.getDeliveryTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" deliveryTime, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getShipper(), "")).append("' shipper, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getRemark(), "")).append("' REMARK, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getUserDefined1(), "")).append("' USERDEFINED1, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getUserDefined2(), "")).append("' USERDEFINED2, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getUserDefined3(), "")).append("' USERDEFINED3, ")
-                .append("'").append(StringUtil.nvl(deliveryOrder.getUserDefined4(), "")).append("' USERDEFINED4 ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getLogisticsCode(), "")).append("' logisticsCode, ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getLogisticsName(), "")).append("' logisticsName, ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getExpressCode(), "")).append("' expressCode, ")
+                .append((StringUtil.hasText(deliveryOrder.getOrderConfirmTime()) ? "to_date('" + deliveryOrder.getOrderConfirmTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" orderConfirmTime,  ")
+                .append((StringUtil.hasText(deliveryOrder.getOperateTime()) ? "to_date('" + deliveryOrder.getOperateTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" operateTime,  ")
+                .append("'").append(StringUtil.nvl(deliveryOrder.getOperatorName(), "")).append("' operatorName ")
                 .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.OWNERCODE = doc.OWNERCODE, ")
+//                .append("wmsl.inOwnerCode = doc.inOwnerCode, ")
+//                .append("wmsl.WAREHOUSECODE = doc.WAREHOUSECODE, ")
+//                .append("wmsl.inWarehouseCode = doc.inWarehouseCode, ")
+//                .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.deliveryTime = doc.deliveryTime, ")
-                .append("wmsl.shipper = doc.shipper, ")
-                .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.logisticsCode = doc.logisticsCode, ")
+                .append("wmsl.logisticsName = doc.logisticsName, ")
+                .append("wmsl.expressCode = doc.expressCode, ")
+                .append("wmsl.ORDERFINISHEDTIME = doc.orderConfirmTime, ")
+                .append("wmsl.operateTime = doc.operateTime, ")
+                .append("wmsl.operatorName = doc.operatorName, ")
                 .append("wmsl.UTIME = SYSDATE ")
-                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE, OUTBIZCODE, CONFIRMTYPE, STATUS, deliveryTime, shipper, 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.deliveryTime, doc.shipper, doc.REMARK, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
+                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE,TOOWNERCODE, WAREHOUSECODE,INWAREHOUSECODE, WMSORDERID, WMSORDERTYPE, OUTBIZCODE, CONFIRMTYPE, STATUS" +
+                        ", ORDERFINISHEDTIME, operatorName, OPERATETIME,logisticsCode,logisticsName,expressCode) ")
+                .append("VALUES (SYSDATE,doc.PIID, doc.PIINOUTNO, doc.ORDERCODE, doc.OWNERCODE,doc.inOwnerCode,doc.WAREHOUSECODE,doc.inWarehouseCode,doc.WMSORDERID,doc.OUTBIZCODE,doc.CONFIRMTYPE,doc.STATUS" +
+                        " ,doc.orderConfirmTime,doc.operatorName,doc.operateTime,doc.logisticsCode,doc.logisticsName,doc.expressCode" +
+                        ")");
         return sql.toString();
     }
 
     public List<String> getGenerateLinesSql() {
         List<String> sqls = new ArrayList<>();
+        sqls.add("UPDATE @MASTERCODE.prodiowms_Lines SET ACTUALQTY=0 WHERE PL_PIID = @PIID");
         for (OUTConfirm.OrderLines.OrderLine line : orderLines.getOrderLine()) {
             sqls.add(getGenerateLinesSql(line));
-            for (int i = 0; i < line.getBatchs().getBatch().size(); i++) {
-                OUTConfirm.OrderLines.OrderLine.Batchs.Batch batch = line.getBatchs().getBatch().get(i);
-                sqls.add(getGenerateBatchsSql(line,line.getLineNo(), (i + 1), batch));
-            }
         }
         return sqls;
     }
@@ -320,77 +157,19 @@ public class OUTConfirm {
         sql.append("MERGE INTO ").append("@MASTERCODE").append(".prodiowms_Lines wmsl USING (")
                 .append("SELECT ")
                 .append("@PIID").append(" PIID, ")
-                .append(line.getLineNo()).append(" LINENO, ")
+                .append("'").append(line.getOutBizCode()).append("' OUTBIZCODE, ")
+                .append(line.getOrderLineNo()).append(" LINENO, ")
                 .append("'").append(line.getItemCode()).append("' ITEMCODE, ")
                 .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.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("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO AND wmsl.ITEMCODE = doc.ITEMCODE) ")
+                .append("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO) ")
                 .append("WHEN MATCHED THEN UPDATE SET ")
-                .append("wmsl.ACTUALQTY = doc.ACTUALQTY, ")
-                .append("wmsl.ACTUALPACKUOMQTY = doc.ACTUALPACKUOMQTY, ")
-                .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.OUTBIZCODE = doc.OUTBIZCODE, ")
+                .append("wmsl.ACTUALQTY = NVL(msl.ACTUALQTY,0)+doc.ACTUALQTY, ")
                 .append("wmsl.UTIME = SYSDATE ")
-                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY, SERIALNO, ")
-                .append("CUSTOMFIELD1, CUSTOMFIELD2, CUSTOMFIELD3, CUSTOMFIELD4, CUSTOMFIELD5, CUSTOMFIELD6, CUSTOMFIELD7, CUSTOMFIELD8) ")
-                .append("VALUES (SYSDATE,doc.PIID, doc.LINENO, doc.ITEMCODE, doc.PLANQTY, doc.ACTUALQTY,doc.ACTUALPACKUOMQTY, ")
-                .append(" doc.SERIALNO, doc.CUSTOMFIELD1, doc.CUSTOMFIELD2, doc.CUSTOMFIELD3, doc.CUSTOMFIELD4, doc.CUSTOMFIELD5, ")
-                .append("doc.CUSTOMFIELD6, doc.CUSTOMFIELD7, doc.CUSTOMFIELD8)");
+                .append("WHEN NOT MATCHED THEN INSERT (PL_PIID,OUTBIZCODE,LINENO, ITEMCODE, PLANQTY,ACTUALQTY) ")
+                .append("VALUES (doc.PIID,doc.OUTBIZCODE, doc.LINENO, doc.ITEMCODE, doc.PLANQTY, doc.ACTUALQTY)");
         return sql.toString();
     }
 
-    public String getGenerateBatchsSql(OUTConfirm.OrderLines.OrderLine line,Integer lineNo, Integer detno, OUTConfirm.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(line.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();
-    }
 }

+ 7 - 2
src/main/java/com/uas/eis/entity/vwms/req/StockOutAndDetRequest.java

@@ -1,16 +1,21 @@
 package com.uas.eis.entity.vwms.req;
 
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+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.OrderLineOut;
 import lombok.Data;
 
 import java.util.List;
 @Data
-@JsonIgnoreProperties(ignoreUnknown = true)
+@JacksonXmlRootElement(localName = "request")
 public class StockOutAndDetRequest extends StockOutRequest{
+    @JacksonXmlProperty(localName = "orderLines")
     OutOrderLines orderLines;
     @Data
     public static class OutOrderLines{
+        @JacksonXmlElementWrapper(useWrapping = false)  // 去掉外层的包装
+        @JacksonXmlProperty(localName = "orderLine")
         List<OrderLineOut> orderLine;
     }
 

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

@@ -11,6 +11,7 @@ public class IOResp {
     private String code;
     private String flag;
     private String entryOrderId;
+    private String deliveryOrderId;
     private String message;
     private boolean success;
 }

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

@@ -13,7 +13,6 @@ import java.util.Map;
  */
 public interface DocCommonService {
     ProdInout getIO(String master,String id);
-    String sendOMoveToWms(ProdInout prodInOut, String masterName);
     String sendOutToWms(ProdInout prodInOut, String masterName);
     String sendInToWms(ProdInout prodInOut, String masterName);
 }

+ 113 - 143
src/main/java/com/uas/eis/service/Impl/DocCommonServiceImpl.java

@@ -67,16 +67,27 @@ public class DocCommonServiceImpl implements DocCommonService {
         if("YIT_T".equals(master)){
             prodInOut.setCurrentMaster("YJH_HK");
         }
+        if(StringUtil.hasText(prodInOut.getToMasterCode())){
+            if("YUEJH_TEST".equals(prodInOut.getToMasterCode())){
+                prodInOut.setToMasterCode("YUEJH");
+            }
+            if("YJH_T".equals(prodInOut.getToMasterCode())){
+                prodInOut.setToMasterCode("AIFL");
+            }
+            if("YIT_T".equals(prodInOut.getToMasterCode())){
+                prodInOut.setToMasterCode("YJH_HK");
+            }
+        }
         return prodInOut;
     }
 
     private ProdInout queryMainTable(String master, String id) {
         String sql = new StringBuilder()
                 .append("select pi_Wmsordertype piOrderType,pi_id piId,pi_inoutno piInoutno,pi_class piClass,pi_type piType,")
-                .append("to_char(pi_recorddate,'yyyy-mm-dd hh24:mi:ss') piDate,pi_Cardcode piCardcode,pi_Title piTitle,")
+                .append("to_char(pi_date,'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,'"+master+"' currentMaster ")
+                .append("pi_invostatuscode piInvoStatusCode,'"+master+"' currentMaster,pi_tomaster toMasterCode,pi_purposename piLxr,pi_expresscode piLxdh,pi_address piKhdz  ")
                 .append("from ").append(master).append(".prodinout where pi_id = ").append(id)
                 .toString();
         List<ProdInout> prodInOuts = baseDao.getJdbcTemplate().query(sql,
@@ -85,43 +96,44 @@ public class DocCommonServiceImpl implements DocCommonService {
     }
     private String buildDetailSql(String master, ProdInout prodInOut) {
         StringBuilder sqlBuilder = new StringBuilder();
-        if ("out".equals(prodInOut.getPiWmsInType())) {
-            sqlBuilder.append("select pd_piid pdPiid,min(pd_id) pdId,min(pd_pdno) pdPdno,pd_prodcode pdProdcode,")
-                    .append("pr_detail pdProdname,pr_brand pdBrandName,sum(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty,")
-                    .append("pd_whcode pdWhcode,wh_description pdWhname,pd_description pdInBatch,")
-                    .append("pd_custprodcode pdCustprodcode,pd_custprodcode1_user pdCustprodcode1, pd_pocode pdPocode ")
-                    .append("from ").append(master).append(".prodiodetail LEFT JOIN ").append(master).append(".product on pr_code = pd_prodcode ")
-                    .append("left join ").append(master).append(".productbrand on pb_name = pr_brand ")
-                    .append("left join ").append(master).append(".warehouse on wh_Code = pd_whcode ")
-                    .append("where pd_piid = ").append(prodInOut.getPiId()).append(" and pb_sendwms = -1 ")
-                    .append("group by pd_piid,pd_prodcode,pr_detail,pr_brand,pd_whcode,wh_description,pd_description,")
-                    .append("pd_custprodcode,pd_custprodcode1_user,pd_pocode order by MIN(pd_pdno)");
-        } else if ("transfer".equals(prodInOut.getPiWmsInType())) {
-            String orderType = prodInOut.getPiOrderType();
-            //NBZK 内部转库(出货单) QTCK 其他出库(其它出库单) NBZKZF: 内部转库-直发(其它出库单、出货单、采购验退单)
-            if("NBZK".equals(orderType)||"QTCK".equals(orderType)||"NBZKZF".equals(orderType)||"QTCKZF".equals(orderType)){
-                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" +
-                        ",pi_custwhcode_user pdWhcodeTo,iwh.wh_description pdWhnameTo" +
-                        ",pi_postmastercode postMasterCode,ma_function postMasterName " +
-                        ",pd_prodcode pdProdcodeTo,pr_brand pdBrandNameTo" +
-                        " from "+master+".prodiodetail left join "+master+".prodinout on pi_id = pd_piid " +
-                        " 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 = pi_custwhcode_user" +
-                        " left join DATACENTER_P.MASTER ON MA_USER = pi_postmastercode "+
-                        " 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" +
-                        "   ,pi_custwhcode_user,iwh.wh_description,pi_postmastercode,ma_function" +
-                        " order by MIN(pd_pdno) ");
-            }
-        } else {
+        if ("in".equals(prodInOut.getPiWmsInType())) {
             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 ");
+                    "   ,(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty ,pd_whcode pdWhcode,wh_description pdWhname ")
+                    .append(" from ").append(master).append(".prodiodetail ")
+                    .append(" left join ").append(master).append(".product on pr_code = pd_prodcode ")
+                    .append(" left join ").append(master).append(".warehouse on wh_Code = pd_whcode ")
+                    .append(" where pd_piid = "+prodInOut.getPiId()+" and nvl(pr_sendwmsflag,0) = -1 ")
+                    .append(" order by pd_pdno ");
+        } else {
+            if(prodInOut.getPiOrderType().equals("ZKCK")){//转库业务
+                sqlBuilder.append("select pd_piid pdPiid,(pd_id) pdId,(pd_pdno) pdPdno,pd_prodcode pdProdcode,")
+                        .append("pr_detail pdProdname,pr_brand pdBrandName,(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty,")
+                        .append("pd_whcode pdWhcode,wh_description pdWhname,tsd_inwhcode pdWhcodeTo,")
+                        .append("pd_custprodcode pdCustprodcode,pd_custproddetail pdCustProdDetail,pd_custprodspec pdCustProdSpec, pd_pocode pdPocode ,pd_ordercode pdOrderCode,pd_Remark pdRemark" +
+                                ",pd_sendprice pdSendPrice,nvl(sd_purcprice,0) standardPrice ")
+                        .append("from ").append(master).append(".prodiodetail ")
+                        .append(" left join ").append(master).append(".prodinout on pi_id = pd_piid ")
+                        .append(" left join ").append(master).append(".product on pr_code = pd_prodcode ")
+                        .append(" left join ").append(master).append(".warehouse on wh_Code = pd_whcode ")
+                        .append(" left join ").append(master).append(".saledetail on sd_Code = pd_ordercode and sd_Detno = pd_orderdetno ")
+                        .append(" left join ").append(master).append(".TRANSFERSTOCK ON PI_INOUTNO = TS_CODE ")
+                        .append(" left join ").append(master).append(".TRANSFERSTOCKDETAIL ON TS_ID=TSD_TSID AND PD_PDNO = TSD_DETNO ")
+                        .append("where pd_piid = ").append(prodInOut.getPiId()).append(" and nvl(pr_sendwmsflag,0) = -1")
+                        .append(" order by pd_pdno ");
+            }else {
+                sqlBuilder.append("select pd_piid pdPiid,(pd_id) pdId,(pd_pdno) pdPdno,pd_prodcode pdProdcode,")
+                        .append("pr_detail pdProdname,pr_brand pdBrandName,(nvl(pd_inqty,0)+nvl(pd_outqty,0)) pdQty,")
+                        .append("pd_whcode pdWhcode,wh_description pdWhname,(case when pi_class='出货单' and pi_type='库存转移' then pd_whcode when pi_class='拨出单' then pd_inwhcode else null end) pdWhcodeTo,")
+                        .append("pd_custprodcode pdCustprodcode,pd_custproddetail pdCustProdDetail,pd_custprodspec pdCustProdSpec, pd_pocode pdPocode ,pd_ordercode pdOrderCode,pd_Remark pdRemark" +
+                                ",pd_sendprice pdSendPrice,nvl(sd_purcprice,0) standardPrice ")
+                        .append("from ").append(master).append(".prodiodetail ")
+                        .append(" left join ").append(master).append(".prodinout on pi_id = pd_piid ")
+                        .append(" left join ").append(master).append(".product on pr_code = pd_prodcode ")
+                        .append(" left join ").append(master).append(".warehouse on wh_Code = pd_whcode ")
+                        .append(" left join ").append(master).append(".saledetail on sd_Code = pd_ordercode and sd_Detno = pd_orderdetno ")
+                        .append("where pd_piid = ").append(prodInOut.getPiId()).append(" and nvl(pr_sendwmsflag,0) = -1")
+                        .append(" order by pd_pdno ");
+            }
         }
         return sqlBuilder.toString();
     }
@@ -140,35 +152,28 @@ public class DocCommonServiceImpl implements DocCommonService {
         baseDao.execute(deleteDetailSql);
         // 插入主表数据
         String sql = new StringBuilder()
-                .append("INSERT INTO ").append(master).append(".prodiowms(ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE,OUTBIZCODE)")
+                .append("INSERT INTO ").append(master).append(".prodiowms(ITIME,PIID, PIINOUTNO, ORDERCODE, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE,OUTBIZCODE,TOOWNERCODE)")
                 .append(" select sysdate,pi_id,pi_inoutno,pi_inoutno,'")
                 .append(prodInOut.getCurrentMaster()).append("','")
-                .append(vwmsConfig.getWarehouseCode()).append("',PI_WMSORDERCODE,PI_WMSORDERTYPE,'").append(prodInOut.getOutBizCode()).append("'")
+                .append(vwmsConfig.getWarehouseCode()).append("',PI_WMSORDERCODE,PI_WMSORDERTYPE,'").append(prodInOut.getOutBizCode()).append("','"+StringUtil.nvl(prodInOut.getToMasterCode(),"")+"'")
                 .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)")
-                    .append(" select sysdate,pdPiid,pdPdno,pdProdcode,pdQty,pdWhname,pdInBatch,pdBrandName,'")
-                    .append(master).append("',pdCustprodcode,pdCustprodcode1,pdPocode from (").append(detSql).append(")")
-                    .toString();
-            baseDao.execute(insertDetailSql);
-        } else if ("transfer".equals(prodInOut.getPiWmsInType())) {
+        if ("in".equals(prodInOut.getPiWmsInType())) {
             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)")
-                    .append("select sysdate,pdPiid,pdPdno,pdProdcode,pdQty,pdWhname")
-                    .append("   ,pdProdcodeTo,pdWhname,pdInBatch,pdBrandName,'").append(master).append("',pdWhnameTo,pdInBatch,pdBrandNameTo,postMasterCode")
+                    .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);
-        } else {
+        }else{
             String insertDetailSql = new StringBuilder()
-                    .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(")")
+                    .append("INSERT INTO ").append(master).append(".prodiowms_Lines(ITIME,PL_PIID,LOGICWAREHOUSECODE,LINENO, ITEMCODE, PLANQTY" +
+                            ",custItemCode,custItemName,custItemSkuProperty,custLotNumber,custPO,contractNo,retailPrice,actualPrice)")
+                    .append(" select sysdate,pdPiid,pdWhcode,pdPdno,pdProdcode,pdQty" +
+                            ",PDCUSTPRODCODE,PDCUSTPRODDETAIL, PDCUSTPRODSPEC, PDPOCODE, PDORDERCODE, PDREMARK, PDSENDPRICE, STANDARDPRICE " +
+                            " from (").append(detSql).append(")")
                     .toString();
             baseDao.execute(insertDetailSql);
         }
@@ -179,10 +184,24 @@ public class DocCommonServiceImpl implements DocCommonService {
         String orderType = prodInOut.getPiOrderType();
         for (Prodiodetail detail : prodInOut.getDetails()) {
             OrderLine orderLine;
-            if ("out".equals(prodInOut.getPiWmsInType())) {
+            if (!"in".equals(prodInOut.getPiWmsInType())) {
                 orderLine = new OrderLineOut(); // 创建普通订单行对象
-            }else {//transfer
-                orderLine = new OrderLineMove(); // 创建普通订单行对象
+                ((OrderLineOut) orderLine).setRemark(detail.getPdRemark());
+                ((OrderLineOut) orderLine).setCustItemCode(detail.getPdCustProdCode());
+                ((OrderLineOut) orderLine).setCustItemName(detail.getPdCustProdDetail());
+                ((OrderLineOut) orderLine).setCustItemSkuProperty(detail.getPdCustProdSpec());
+//                ((OrderLineOut) orderLine).setCustLotNumber();
+                ((OrderLineOut) orderLine).setCustPO(detail.getPdPocode());
+                ((OrderLineOut) orderLine).setContractNo(detail.getPdOrderCode());
+                if("transfer".equals(prodInOut.getPiWmsInType())){
+                    ((OrderLineOut) orderLine).setInLogicWarehouseCode(detail.getPdWhcodeTo());
+                }
+                if("out".equals(prodInOut.getPiWmsInType())){
+                    ((OrderLineOut) orderLine).setRetailPrice(detail.getStandardPrice());
+                    ((OrderLineOut) orderLine).setActualPrice(detail.getPdSendPrice());
+                }
+            }else {
+                orderLine = new OrderLineIn();
             }
             // 设置通用属性
             orderLine.setOutBizCode(prodInOut.getOutBizCode());
@@ -197,67 +216,35 @@ public class DocCommonServiceImpl implements DocCommonService {
         return orderLineList;
     }
 
-    @Override
-    public String sendOMoveToWms(ProdInout prodInOut, String masterName) {
-        AdjustmentAndDetRequest adjustmentRequest = new AdjustmentAndDetRequest();
-        //写入主表
-        AdjustmentOrder adjustmentOrder = new AdjustmentOrder();
-        adjustmentOrder.setAdjustmentOrderCode(prodInOut.getPiInoutno());// 转移单号(ERP单号)
-        adjustmentOrder.setAdjustmentOrderType(prodInOut.getPiOrderType());// 转移单类型
-        adjustmentOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
-        adjustmentOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
-//        adjustmentOrder.setCreateTime(prodInOut.getPiRecordDate());
-        adjustmentOrder.setRemark(prodInOut.getPiRemark());
-        adjustmentRequest.setAdjustmentOrder(adjustmentOrder);
-        //写入明细表
-        List<OrderLineMove> orderLineMoves = (List<OrderLineMove>) getOrderLines(prodInOut, masterName);
-        AdjustmentAndDetRequest.OutOrderLines orderLines = new AdjustmentAndDetRequest.OutOrderLines();
-        orderLines.setOrderLine(orderLineMoves);
-        adjustmentRequest.setOrderLines(orderLines);
-        //转换为JSON字符串
-        String json = null;
-        String method = null;
-        BaseReq<AdjustmentRequest> req = new BaseReq();
-        req.setRequest(adjustmentRequest);
-        method = "openapi.adjustmentorder.create";
-        try {
-            json = objectMapper.writeValueAsString(req);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-            return "JSON转换失败";
-        }
-        return doSendOrderToWms(json,method);
-    }
-
     @Override
     public String sendOutToWms(ProdInout prodInOut, String masterName) {
         StockOutAndDetRequest stockOutAndDetRequest = new StockOutAndDetRequest();
         DeliveryOrder deliveryOrder = new DeliveryOrder();
-        deliveryOrder.setOutBizCode(prodInOut.getPiOrderType()+"-"+System.currentTimeMillis());// 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理
         deliveryOrder.setDeliveryOrderCode(prodInOut.getPiInoutno());// 出库单号
-        deliveryOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
-        deliveryOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
-        deliveryOrder.setPlacedAt(prodInOut.getPiDate());// 订单创建时间
         deliveryOrder.setOrderType(prodInOut.getPiOrderType());// 订单类型
-        deliveryOrder.setCustomerCode(prodInOut.getPiCardCode());// 客户编码
-        deliveryOrder.setCustomer(prodInOut.getPiTitle());// 客户名称
-        /*
-         * 提交对接创建-> 0=未释放
-         * 审核 -> 1=已释放
-         * prodInOut.getPiInvoStatusCode().equals("COMMITED") &&
-         *  */
-        if(prodInOut.getPiSendwmsflag()>0 || !prodInOut.getPiOrderType().equals("XSCK")){
-            deliveryOrder.setIsRelease("1");
-        }else {
-            deliveryOrder.setIsRelease("0");
+        deliveryOrder.setWarehouseCode(vwmsConfig.getWarehouseCode());// 仓库编码
+        deliveryOrder.setOwnerCode(prodInOut.getCurrentMaster());// 货主编码
+        deliveryOrder.setCreateTime(StringUtil.nvl(prodInOut.getPiRecordDate(),prodInOut.getPiDate()));
+        //调拨业务
+        if(prodInOut.getPiWmsInType().equals("transfer")){
+            deliveryOrder.setInWarehouseCode(vwmsConfig.getWarehouseCode());
+            if(prodInOut.getPiOrderType().equals("ZKCK")){//转库业务
+                deliveryOrder.setInOwnerCode(prodInOut.getToMasterCode());
+            }
         }
-        deliveryOrder.setDocumentMaker(prodInOut.getPiRecordman());// 制单人
-//        deliveryOrder.setCreateTime(prodInOut.getPiRecordDate());
+        deliveryOrder.setScheduleDate(prodInOut.getPiDeliverytime());
+        deliveryOrder.setSupplierCode(prodInOut.getPiCardCode());// 客户编码
+        deliveryOrder.setSupplierName(prodInOut.getPiTitle());// 客户名称
         deliveryOrder.setRemark(prodInOut.getPiRemark());// 备注
+        deliveryOrder.setDocumenter(prodInOut.getPiRecordman());// 制单人
+        //收货人信息
         DeliveryOrder.ReceiverInfo receiverInfo = new DeliveryOrder.ReceiverInfo();
+        receiverInfo.setCode(prodInOut.getPiCardCode());
+        receiverInfo.setCompany(prodInOut.getPiTitle());
         receiverInfo.setName(StringUtil.nvl(prodInOut.getPiLxr(),"无"));
-        receiverInfo.setMobile(StringUtil.nvl(prodInOut.getPiLxdh(),prodInOut.getPiShrsj()));
+        receiverInfo.setMobile(StringUtil.nvl(prodInOut.getPiLxdh(),prodInOut.getPiLxdh()));
         receiverInfo.setDetailAddress(StringUtil.nvl(prodInOut.getPiKhdz(),"无"));
+        receiverInfo.setCustForshort(prodInOut.getCustShortName());
         deliveryOrder.setReceiverInfo(receiverInfo);
         //写入明细表
         List<OrderLineOut> orderLineOuts = (List<OrderLineOut>) getOrderLines(prodInOut, masterName);
@@ -265,36 +252,17 @@ public class DocCommonServiceImpl implements DocCommonService {
         StockOutAndDetRequest.OutOrderLines orderLines = new StockOutAndDetRequest.OutOrderLines();
         orderLines.setOrderLine(orderLineOuts);
         stockOutAndDetRequest.setOrderLines(orderLines);
-        //转换为JSON字符串
-        String json = null;
-        String method = null;
-        if(prodInOut.getPiSendwmsflag() == 0){
-            BaseReq<StockOutAndDetRequest> req = new BaseReq();
-            req.setRequest(stockOutAndDetRequest);
-            method = "openapi.stockout.create";
-            try {
-                json = objectMapper.writeValueAsString(req);
-            } catch (JsonProcessingException e) {
-                e.printStackTrace();
-                return "JSON转换失败";
-            }
-        }else {
-            method = "openapi.stockout.batchupdate";
-            BaseReq<OrderVastRequest<StockOutAndDetRequest>> req = new BaseReq();
-            OrderVastRequest<StockOutAndDetRequest> vastReq = new OrderVastRequest();
-            OrderVastRequest.OrdersRequest<StockOutAndDetRequest> orders = new OrderVastRequest.OrdersRequest<StockOutAndDetRequest>();
-            orders.setOrder(Arrays.asList(stockOutAndDetRequest));
-            vastReq.setOutBizCode(stockOutAndDetRequest.getDeliveryOrder().getOutBizCode());
-            vastReq.setOrders(orders);
-            req.setRequest(vastReq);
-            try {
-                json = objectMapper.writeValueAsString(req);
-            } catch (JsonProcessingException e) {
-                e.printStackTrace();
-                return "JSON转换失败";
-            }
+        String xml = null;
+        String method = "stockout.create";
+        try {
+            XmlMapper xmlMapper = new XmlMapper();
+            xml = xmlMapper.writeValueAsString(stockOutAndDetRequest);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+            return "JSON转换失败";
         }
-        return doSendOrderToWms(json,method);
+        //TODO 写入表:WMS_IO_RECORD_SEQ
+        return doSendOrderToWms(xml,method);
     }
 
     @Override
@@ -332,7 +300,9 @@ public class DocCommonServiceImpl implements DocCommonService {
         String eMsg = null;
         try {
             logger.info("doSendInOrderToWms method:{} XML: {}",method, xml);
-            HttpUtil.Response response= HttpUtil.postXmlToVWMS(method,xml, "UTF-8",vwmsConfig);
+//            HttpUtil.Response response = new HttpUtil.Response();
+//            response.setStatusCode(404);
+            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 {
@@ -347,10 +317,10 @@ public class DocCommonServiceImpl implements DocCommonService {
                             orderId = ioResp.getEntryOrderId();
                             eMsg = "OrderId:"+orderId;
                         }
-//                        if("openapi.stockout.create".equals(method)){
-//                            orderId = baseVastRespResponse.getDeliveryOrderId();
-//                            eMsg = "OrderId:"+orderId;
-//                        }
+                        if("stockout.create".equals(method)){
+                            orderId = ioResp.getDeliveryOrderId();
+                            eMsg = "OrderId:"+orderId;
+                        }
 //                        if("openapi.adjustmentorder.create".equals(method)){
 //                            orderId = baseVastRespResponse.getAdjustmentOrderId();
 //                            eMsg = "OrderId:"+orderId;

+ 11 - 58
src/main/java/com/uas/eis/service/Impl/ERPSWMServiceImpl.java

@@ -47,6 +47,7 @@ public class ERPSWMServiceImpl implements ERPWMSService {
         String confirmBody = (String) request.getAttribute("cachedRequestBody");
         XmlMapper xmlMapper = new XmlMapper();
         INConfirm inConfirm = null;
+        OUTConfirm  outConfirm = null;
         //入库确认 entryOrder.feedback
         if ("entryOrder.feedback".equals(method)) {
 //            req = objectMapper.readValue(confirmBody,
@@ -56,16 +57,14 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             masterCode = inConfirm.getMasterCode();
             orderCode = entryOrder.getEntryOrderCode();
         }
-       /* //出库确认 openapi.stockout.confirm
-        if ("openapi.stockout.confirm".equals(method)) {
-            req = objectMapper.readValue(confirmBody,
-                    objectMapper.getTypeFactory().constructParametricType(BaseReq.class, OUTConfirm.class));
-            OUTConfirm outConfirm = (OUTConfirm) req.getRequest();
-            OUTConfirm.DeliveryOrder order = outConfirm.getDeliveryOrder();
-            masterName = outConfirm.getMasterName();
-            orderCode = order.getDeliveryOrderCode();
+        //出库确认 openapi.stockout.confirm
+        if ("stockout.confirm".equals(method)) {
+            outConfirm = xmlMapper.readValue(confirmBody,OUTConfirm.class);
+            OUTConfirm.DeliveryOrder deliveryOrder = outConfirm.getDeliveryOrder();
+            masterCode = inConfirm.getMasterCode();
+            orderCode = deliveryOrder.getDeliveryOrderCode();
         }
-        if ("openapi.adjustmentorder.confirm".equals(method)) {
+       /* if ("openapi.adjustmentorder.confirm".equals(method)) {
             req = objectMapper.readValue(confirmBody,
                     objectMapper.getTypeFactory().constructParametricType(BaseReq.class, AdjustConfirm.class));
             AdjustConfirm adjustConfirm = (AdjustConfirm) req.getRequest();
@@ -84,7 +83,6 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("400");
             wmsApiResult.setMessage("没有找到对应的账套");
-//            resp.setResponse(wmsApiResult);
             return wmsApiResult;
         }
         //测试阶段
@@ -103,7 +101,6 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
-//            resp.setResponse(wmsApiResult);
             return wmsApiResult;
         }
         Long piId = piMsg.getGeneralLong("pi_id");
@@ -112,23 +109,16 @@ public class ERPSWMServiceImpl implements ERPWMSService {
             wmsApiResult.setFlag("failure");
             wmsApiResult.setCode("404");
             wmsApiResult.setMessage("没有找到对应的单据");
-//            resp.setResponse(wmsApiResult);
             return wmsApiResult;
         }
         if ("entryOrder.feedback".equals(method)) {
             sqls.add(inConfirm.getGenerateMainSql());
             sqls.addAll(inConfirm.getGenerateLinesSql());
         }
-       /* if ("openapi.stockout.confirm".equals(method)) {
-            OUTConfirm outf = (OUTConfirm) req.getRequest();
-            sqls.add(outf.getGenerateMainSql());
-            sqls.addAll(outf.getGenerateLinesSql());
+        if ("stockout.confirm".equals(method)) {
+            sqls.add(outConfirm.getGenerateMainSql());
+            sqls.addAll(outConfirm.getGenerateLinesSql());
         }
-        if ("openapi.adjustmentorder.confirm".equals(method)) {
-            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));
@@ -147,47 +137,10 @@ public class ERPSWMServiceImpl implements ERPWMSService {
                 wmsApiResult.setFlag("failure");
                 wmsApiResult.setCode("403");
                 wmsApiResult.setMessage(res);
-//                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
-            ) {
-                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()) {
-                    if (pito.getGeneralInt("pi_sendwmsflag") == 0&& !"已确认".equals(pito.getGeneralString("pi_wmsstatus"))
-                            &&StringUtil.hasText(pito.getGeneralString("pi_wmsordertype"))
-                    ) {
-                        String idTo = pito.getGeneralString("pi_id");
-                        String codeTo = pito.getGeneralString("pi_inoutno");
-                        String toCaller = pito.getGeneralString("ds_table");
-                        //发起对接
-                        try {
-                            Map<String, Object> sendRes = erpService.sendIO(toSob, idTo, "WMS库存转移确认", toCaller);
-                            if (sendRes.get("success") != null && "true".equals(sendRes.get("success").toString())) {
-                                baseDao.execute("update " + toSob + ".prodinout set pi_wmsordercode='" + sendRes.get("OrderId") + "',pi_sendwmsstatus='同步成功' ,pi_sendwmserr=null,pi_sendwmsflag=-1 where pi_id = " + idTo);
-                                //记录日志
-                                baseDao.execute("Insert into " + toSob + ".MESSAGELOG (ML_ID,ML_DATE,ML_MAN,ML_CONTENT,ML_RESULT,ML_SEARCH,CODE) values (" + toSob + ".MESSAGELOG_seq.nextval,sysdate,'WMS库存转移确认','同步至WMS','同步成功','" + toCaller + "|pi_id=" + idTo + "','" + codeTo + "')");
-                            } else {
-                                String message = sendRes.get("message") == null ? "同步失败" : sendRes.get("message").toString().replaceAll("'", "''");
-                                baseDao.execute("update " + toSob + ".prodinout set pi_sendwmsstatus='同步失败',pi_sendwmserr=('" + message + "') where pi_id = " + idTo);
-                                //记录日志
-                                baseDao.execute("Insert into " + toSob + ".MESSAGELOG (ML_ID,ML_DATE,ML_MAN,ML_CONTENT,ML_RESULT,ML_SEARCH,CODE) values (" + toSob + ".MESSAGELOG_seq.nextval,sysdate,'WMS库存转移确认','同步至WMS','同步失败:" + message + "','" + toCaller + "|pi_id=" + idTo + "','" + codeTo + "')");
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    }
-                }
-            }
-        }*/
         logger.info("IOConfirm-End:method {} inoutno {}", method, orderCode);
-//        resp.setResponse(wmsApiResult);
         return wmsApiResult;
     }
 }

+ 1 - 4
src/main/java/com/uas/eis/service/Impl/ERPServiceImpl.java

@@ -215,12 +215,9 @@ public class ERPServiceImpl implements ERPService {
         if ("in".equals(prodInOut.getPiWmsInType())) {
             errMsg = docCommonService.sendInToWms(prodInOut, masterName);
         }
-        if ("out".equals(prodInOut.getPiWmsInType())) {
+        if ("out".equals(prodInOut.getPiWmsInType())||"transfer".equals(prodInOut.getPiWmsInType())) {
             errMsg = docCommonService.sendOutToWms(prodInOut, masterName);
         }
-        if ("transfer".equals(prodInOut.getPiWmsInType())) {
-            errMsg = docCommonService.sendOMoveToWms(prodInOut, masterName);
-        }
         if (errMsg != null) {
             if (errMsg.startsWith("OrderId:")) {
                 retMap.put("OrderId", errMsg.replaceAll("OrderId:", ""));

+ 45 - 6
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -32,22 +32,61 @@ import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 @SpringBootTest(classes = {UasEisApplication.class})
 public class UasEisApplicationTests {
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
-//	@Autowired
-//	private BaseDao baseDao;
+	@Autowired
+	private BaseDao baseDao;
 //	@Autowired
 //	private ObjectMapper objectMapper;  // 注入Jackson的ObjectMapper
 	@Autowired
 	private ERPService erpService;
 	@Autowired
 	private VwmsConfig vwmsConfig;
+	@Test
+	public void testSendZK(){
+		// 设置测试数据
+		String master = "YUEJH_TEST";
+		String id = "50744180";
+		String emCode = "TEST";
+		String caller="ProdInOut!Sale";
+		// 调用待测方法
+		Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+
+	@Test
+	public void testSendBC(){
+		// 设置测试数据
+		String master = "YUEJH_TEST";
+		String id = "50744179";
+		String emCode = "TEST";
+		String caller="ProdInOut!AppropriationOut";
+		// 调用待测方法
+		Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+
+	@Test
+	public void testSendSaleOut(){
+		// 设置测试数据
+		String master = "YUEJH_TEST";
+		String id = "50744178";//"50744173";
+		String emCode = "TEST";
+		String caller="ProdInOut!StockLoss";
+//				  = "ProdInOut!OtherOut"; //50744177
+//				= "ProdInOut!PurcCheckout";
+//				="ProdInOut!Sale";
+		// 调用待测方法
+		Map<String, Object> result = erpService.sendIO(master, id, emCode,caller);
+		System.out.println("result:"+result.toString());
+	}
+
 	@Test
 	public void testSendIn(){
 		// 设置测试数据
 		String master = "YUEJH_TEST";
-		String id = "50744156";
-		//"50744155"; "ProdInOut!OtherIn";
+		String id = "50744157";
 		String emCode = "test";
-		String caller ="ProdInOut!StockProfit";
+		String caller ="ProdInOut!OtherIn";
+		//50744156 "ProdInOut!StockProfit";
 				//="ProdInOut!SaleReturn";
 //		= "ProdInOut!PurcCheckin";
 		// 调用待测方法
@@ -58,9 +97,9 @@ public class UasEisApplicationTests {
 	public void testSendProd(){
 		// 设置测试数据
 		String master = "YUEJH_TEST";
-		String id = "100052522";
 		String emCode = "test";
 		String caller = "Product";
+		String id = baseDao.queryForObject("select pr_id from "+master+".product where pr_code = 'U00014727'",String.class);
 		// 调用待测方法
 		Map<String, Object> result = erpService.sendProd(master, id, emCode,caller);
 		System.out.println("result:"+result.toString());