Browse Source

【华信科】【富勒WMS对接】【入库确认】

wuyx 9 months ago
parent
commit
0f7a358aac

+ 87 - 35
src/main/java/com/uas/eis/entity/vwms/req/IOConfirm.java

@@ -5,14 +5,16 @@ import lombok.Data;
 
 import java.util.ArrayList;
 import java.util.List;
-
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 @Data
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class IOConfirm {
     private EntryOrder entryOrder;
     private OrderLines orderLines;
     private OrderDetails orderDetails;
 
     @Data
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public static class EntryOrder {
         /** 入库单号 */
         private String entryOrderCode;
@@ -44,13 +46,22 @@ public class IOConfirm {
         private String userDefined3;
         /** 用户自定义4 */
         private String userDefined4;
-    }
+        /** 文件信息 */
+        private Files files;
 
+    }
+    @Data
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class Files {
+        private List<String> file;
+    }
     @Data
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public static class OrderLines {
         private List<OrderLine> orderLine;
 
         @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
         public static class OrderLine {
             /** 行号 */
             private Integer lineNo;
@@ -73,6 +84,14 @@ public class IOConfirm {
             /** 序列号,多个序列号用英文逗号隔开 */
             private String serialno;
             private Batchs batchs;
+            /** 自定义批次1 入库批次 */
+            private String userDefined1;
+            /** 自定义批次2 */
+            private String userDefined2;
+            /** 自定义批次3 品牌*/
+            private String userDefined3;
+            /** 自定义批次4 账套*/
+            private String userDefined4;
             /** 自定义字段1 */
             private String customField1;
             /** 自定义字段2 */
@@ -91,10 +110,12 @@ public class IOConfirm {
             private String customField8;
 
             @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
             public static class Batchs {
                 private List<Batch> batch;
 
                 @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
                 public static class Batch {
                     /** 实收数量 */
                     private Double actualQty;
@@ -128,18 +149,24 @@ public class IOConfirm {
     }
 
     @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){//userDefined4
-            return orderLines.getOrderLine().get(0).getBatchs().getBatch().get(0).getUserDefined4();
+        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;
         }
@@ -148,30 +175,45 @@ public String getGenerateMainSql(String masterCode,Long piid,String inoutno) {
     if (piid == null||inoutno==null){
         return null;
     }
-    StringBuilder sql = new StringBuilder("INSERT INTO ");
-    StringBuilder values = new StringBuilder(" VALUES (");
-
-    sql.append(masterCode).append(".prodiowms (");
-    sql.append("piid, "); values.append(piid).append(", ");
-    sql.append("piinoutno, "); values.append("'").append(inoutno).append("', ");
-    sql.append("entryOrderCode, "); values.append("'").append(StringUtil.nvl(entryOrder.getEntryOrderCode(),"")).append("', ");
-    sql.append("ownerCode, "); values.append("'").append(StringUtil.nvl(entryOrder.getOwnerCode(),"")).append("', ");
-    sql.append("warehouseCode, "); values.append("'").append(StringUtil.nvl(entryOrder.getWarehouseCode(),"")).append("', ");
-    sql.append("entryOrderId, "); values.append("'").append(StringUtil.nvl(entryOrder.getEntryOrderId(),"")).append("', ");
-    sql.append("entryOrderType, "); values.append("'").append(StringUtil.nvl(entryOrder.getEntryOrderType(),"")).append("', ");
-    sql.append("outBizCode, "); values.append("'").append(StringUtil.nvl(entryOrder.getOutBizCode(),"")).append("', ");
-    sql.append("confirmType, "); values.append(StringUtil.nvl(entryOrder.getConfirmType(),"0")).append(", ");
-    sql.append("status, "); values.append("'").append(StringUtil.nvl(entryOrder.getStatus(),"")).append("', ");
-    sql.append("orderFinishedTime, ");
-        values.append((StringUtil.hasText(entryOrder.getOrderFinishedTime())?"to_date('"+entryOrder.getOrderFinishedTime()+"','yyyy-mm-dd hh24:mi:ss'),":"")) ;
-    sql.append("receiver, "); values.append("'").append(StringUtil.nvl(entryOrder.getReceiver(),"")).append("', ");
-    sql.append("remark, "); values.append("'").append(StringUtil.nvl(entryOrder.getRemark(),"")).append("', ");
-    sql.append("userDefined1, "); values.append("'").append(StringUtil.nvl(entryOrder.getUserDefined1(),"")).append("', ");
-    sql.append("userDefined2, "); values.append("'").append(StringUtil.nvl(entryOrder.getUserDefined2(),"")).append("', ");
-    sql.append("userDefined3, "); values.append("'").append(StringUtil.nvl(entryOrder.getUserDefined3(),"")).append("', ");
-    sql.append("userDefined4 "); values.append("'").append(StringUtil.nvl(entryOrder.getUserDefined4(),"")).append("'");
-
-    sql.append(")").append(values).append(")");
+    StringBuilder sql = new StringBuilder("MERGE INTO ").append(masterCode).append(".prodiowms wmsl USING (")
+            .append("SELECT ")
+            .append(piid).append(" PIID, ")
+            .append("'").append(inoutno).append("' PIINOUTNO, ")
+            .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderCode(), "")).append("' ENTRYORDERCODE, ")
+            .append("'").append(StringUtil.nvl(entryOrder.getOwnerCode(), "")).append("' OWNERCODE, ")
+            .append("'").append(StringUtil.nvl(entryOrder.getWarehouseCode(), "")).append("' WAREHOUSECODE, ")
+            .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderId(), "")).append("' ENTRYORDERID, ")
+            .append("'").append(StringUtil.nvl(entryOrder.getEntryOrderType(), "")).append("' ENTRYORDERTYPE, ")
+            .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("FROM dual) doc ON (wmsl.PIID = doc.PIID AND wmsl.PIINOUTNO = doc.PIINOUTNO) ")
+            .append("WHEN MATCHED THEN UPDATE SET ")
+            .append("wmsl.ENTRYORDERCODE = doc.ENTRYORDERCODE, ")
+            .append("wmsl.OWNERCODE = doc.OWNERCODE, ")
+            .append("wmsl.WAREHOUSECODE = doc.WAREHOUSECODE, ")
+            .append("wmsl.ENTRYORDERID = doc.ENTRYORDERID, ")
+            .append("wmsl.ENTRYORDERTYPE = doc.ENTRYORDERTYPE, ")
+            .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, ENTRYORDERCODE, OWNERCODE, WAREHOUSECODE, ENTRYORDERID, ENTRYORDERTYPE, OUTBIZCODE, CONFIRMTYPE, STATUS, ORDERFINISHEDTIME, RECEIVER, REMARK, USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4) ")
+            .append("VALUES (SYSDATE,doc.PIID, doc.PIINOUTNO, doc.ENTRYORDERCODE, doc.OWNERCODE, doc.WAREHOUSECODE, doc.ENTRYORDERID, doc.ENTRYORDERTYPE, doc.OUTBIZCODE, doc.CONFIRMTYPE, doc.STATUS, doc.ORDERFINISHEDTIME, doc.RECEIVER, doc.REMARK, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
     return sql.toString();
 }
 
@@ -208,7 +250,11 @@ public List<String> getGenerateLinesSql(String masterCode,Long piId) {
                 .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.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("WHEN MATCHED THEN UPDATE SET ")
                 .append("wmsl.ACTUALQTY = doc.ACTUALQTY, ")
@@ -223,20 +269,26 @@ public List<String> getGenerateLinesSql(String masterCode,Long piId) {
                 .append("wmsl.CUSTOMFIELD5 = doc.CUSTOMFIELD5, ")
                 .append("wmsl.CUSTOMFIELD6 = doc.CUSTOMFIELD6, ")
                 .append("wmsl.CUSTOMFIELD7 = doc.CUSTOMFIELD7, ")
-                .append("wmsl.CUSTOMFIELD8 = doc.CUSTOMFIELD8 ")
-                .append("WHEN NOT MATCHED THEN INSERT (PL_PIID, LINENO, ITEMCODE, ITEMID, PACKUOM, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY, REJECTQTY, REJECTREASON, SERIALNO, ")
-                .append("CUSTOMFIELD1, CUSTOMFIELD2, CUSTOMFIELD3, CUSTOMFIELD4, CUSTOMFIELD5, CUSTOMFIELD6, CUSTOMFIELD7, CUSTOMFIELD8) ")
-                .append("VALUES (doc.PIID, doc.LINENO, doc.ITEMCODE, doc.ITEMID, doc.PACKUOM, doc.PLANQTY, doc.ACTUALQTY, doc.ACTUALPACKUOMQTY, ")
+                .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.UTIME = SYSDATE ")
+                .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, ITEMID, PACKUOM, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY, 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.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)");
+                .append("doc.CUSTOMFIELD6, doc.CUSTOMFIELD7, doc.CUSTOMFIELD8, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
         return sql.toString();
     }
 
     public String getGenerateBatchsSql(String masterCode,Long piid,Integer lineNo,Integer detno,OrderLines.OrderLine.Batchs.Batch batch) {
         StringBuilder sql = new StringBuilder();
         sql.append("INSERT INTO ").append(masterCode)
-        .append(".prodiowms_batchs(PB_PIID, PD_DETNO, LINENO, ACTUALQTY, ACTUALPACKUOMQTY, INVENTORYTYPE, VIRTUALWAREHOUSE, PRODUCTDATE, EXPIREDATE, BATCHCODE, STOCKINDATE, USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4, LPN) VALUES(");
+        .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

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

@@ -899,12 +899,17 @@ public class ERPServiceImpl implements ERPService {
             List<Prodiodetail> details = baseDao.getJdbcTemplate().query(detSql,
                     new BeanPropertyRowMapper<Prodiodetail>(Prodiodetail.class));
             prodInOut.setDetails(details);
-            //pi_wmsstatus
-            if(prodInOut.getPiWmsstatus().equals("已确认")){
+            //未确认前根据明细更新prodiowms
+            if(!prodInOut.getPiWmsstatus().equals("已确认")){
+                baseDao.execute("delete from "+master+".prodiowms where PIID = "+prodInOut.getPiId());
+                baseDao.execute("INSERT INTO "+master+".prodiowms(ITIME,PIID, PIINOUTNO, ENTRYORDERCODE, OWNERCODE, WAREHOUSECODE, ENTRYORDERID, ENTRYORDERTYPE" +
+                        ", USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4)" +
+                        "select sysdate,pi_id,pi_inoutno,pi_inoutno,'"+vwmsConfig.getOwnerCode()+"','"+vwmsConfig.getWarehouseCode()+"',PI_WMSORDERCODE,PI_WMSORDERTYPE" +
+                        " from "+master+".prodinout where pi_id = "+prodInOut.getPiId());
                 //写入 prodiowms_Lines
                 baseDao.execute("delete from "+master+".prodiowms_lines where pl_piid = "+prodInOut.getPiId());
-                baseDao.execute("INSERT INTO "+master+".prodiowms_Lines(PL_PIID,LINENO, ITEMCODE, PLANQTY)" +
-                        "select pdPiid,pdPdno,pdProdcode,pdQty from ("+detSql+") ");
+                baseDao.execute("INSERT INTO "+master+".prodiowms_Lines(ITIME,PL_PIID,LINENO, ITEMCODE, PLANQTY,ITIME)" +
+                        "select sysdate,pdPiid,pdPdno,pdProdcode,pdQty,SYSDATE from ("+detSql+") ");
             }
         }
         return prodInOut;