|
|
@@ -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
|