|
|
@@ -5,7 +5,9 @@ import lombok.Data;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
|
+
|
|
|
@Data
|
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
|
public class INConfirm {
|
|
|
@@ -16,45 +18,79 @@ public class INConfirm {
|
|
|
@Data
|
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
|
public static class EntryOrder {
|
|
|
- /** 入库单号 */
|
|
|
+ /**
|
|
|
+ * 入库单号
|
|
|
+ */
|
|
|
private String entryOrderCode;
|
|
|
- /** 货主代码 */
|
|
|
+ /**
|
|
|
+ * 货主代码
|
|
|
+ */
|
|
|
private String ownerCode;
|
|
|
- /** 仓库代码 */
|
|
|
+ /**
|
|
|
+ * 仓库代码
|
|
|
+ */
|
|
|
private String warehouseCode;
|
|
|
- /** 仓储系统入库单ID */
|
|
|
+ /**
|
|
|
+ * 仓储系统入库单ID
|
|
|
+ */
|
|
|
private String entryOrderId;
|
|
|
- /** 入库单类型 例如: CGRK=采购入库、DBRK=调拨入库 、THRK=退货入库, QTRK=其他入库等(只传英文代码) */
|
|
|
+ /**
|
|
|
+ * 入库单类型 例如: CGRK=采购入库、DBRK=调拨入库 、THRK=退货入库, QTRK=其他入库等(只传英文代码)
|
|
|
+ */
|
|
|
private String entryOrderType;
|
|
|
- /** 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理。一单需要多次确认时条件必填 */
|
|
|
+ /**
|
|
|
+ * 外部业务代码 消息ID, 用于去重, 因为网络等原因导致重复传输, 请求不会被重复处理。一单需要多次确认时条件必填
|
|
|
+ */
|
|
|
private String outBizCode;
|
|
|
- /** 支持入库单多次收货 多次收货后确认时 0=入库单最终状态确认, 1=入库单中间状态确认, 每次入库传入的数量为增量, 特殊情况, 同一入库单, 如果先收到0, 后又收到1, 允许修改收货的数量 */
|
|
|
+ /**
|
|
|
+ * 支持入库单多次收货 多次收货后确认时 0=入库单最终状态确认, 1=入库单中间状态确认, 每次入库传入的数量为增量, 特殊情况, 同一入库单, 如果先收到0, 后又收到1, 允许修改收货的数量
|
|
|
+ */
|
|
|
private Integer confirmType;
|
|
|
- /** 入库单状态 , PARTFULFILLED=部分收货完成, FULFILLED=收货完成(只传英文代码) */
|
|
|
+ /**
|
|
|
+ * 入库单状态 , PARTFULFILLED=部分收货完成, FULFILLED=收货完成(只传英文代码)
|
|
|
+ */
|
|
|
private String status;
|
|
|
- /** 订单完成时间 YYYY-MM-DD HH:MM:SS */
|
|
|
+ /**
|
|
|
+ * 订单完成时间 YYYY-MM-DD HH:MM:SS
|
|
|
+ */
|
|
|
private String orderFinishedTime;
|
|
|
- /** 收货人 */
|
|
|
+ /**
|
|
|
+ * 收货人
|
|
|
+ */
|
|
|
private String receiver;
|
|
|
- /** 备注 */
|
|
|
+ /**
|
|
|
+ * 备注
|
|
|
+ */
|
|
|
private String remark;
|
|
|
- /** 用户自定义1 */
|
|
|
+ /**
|
|
|
+ * 用户自定义1
|
|
|
+ */
|
|
|
private String userDefined1;
|
|
|
- /** 用户自定义2 */
|
|
|
+ /**
|
|
|
+ * 用户自定义2
|
|
|
+ */
|
|
|
private String userDefined2;
|
|
|
- /** 用户自定义3 */
|
|
|
+ /**
|
|
|
+ * 用户自定义3
|
|
|
+ */
|
|
|
private String userDefined3;
|
|
|
- /** 用户自定义4 */
|
|
|
+ /**
|
|
|
+ * 用户自定义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 {
|
|
|
@@ -63,53 +99,99 @@ public class INConfirm {
|
|
|
@Data
|
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
|
public static class OrderLine {
|
|
|
- /** 行号 */
|
|
|
+ /**
|
|
|
+ * 行号
|
|
|
+ */
|
|
|
private Integer lineNo;
|
|
|
- /** 货品代码 */
|
|
|
+ /**
|
|
|
+ * 货品代码
|
|
|
+ */
|
|
|
private String itemCode;
|
|
|
- /** 仓储系统商品ID */
|
|
|
+ /**
|
|
|
+ * 仓储系统商品ID
|
|
|
+ */
|
|
|
private String itemId;
|
|
|
- /** 包装单位 */
|
|
|
+ /**
|
|
|
+ * 包装单位
|
|
|
+ */
|
|
|
private String packUom;
|
|
|
- /** 应收货品数量 */
|
|
|
+ /**
|
|
|
+ * 应收货品数量
|
|
|
+ */
|
|
|
private Double planQty;
|
|
|
- /** 实收数量 */
|
|
|
+ /**
|
|
|
+ * 实收数量
|
|
|
+ */
|
|
|
private Double actualQty;
|
|
|
- /** 实收包装数量 */
|
|
|
+ /**
|
|
|
+ * 实收包装数量
|
|
|
+ */
|
|
|
private Double actualPackUomQty;
|
|
|
- /** 虚拟仓库 条件必填, 条件为使用虚拟仓库 */
|
|
|
+ /**
|
|
|
+ * 虚拟仓库 条件必填, 条件为使用虚拟仓库
|
|
|
+ */
|
|
|
private String virtualWarehouse;
|
|
|
private String documentMaker;
|
|
|
- /** 拒收数量 */
|
|
|
+ /**
|
|
|
+ * 拒收数量
|
|
|
+ */
|
|
|
private Double rejectQty;
|
|
|
- /** 拒收原因 */
|
|
|
+ /**
|
|
|
+ * 拒收原因
|
|
|
+ */
|
|
|
private String rejectReason;
|
|
|
- /** 序列号,多个序列号用英文逗号隔开 */
|
|
|
+ /**
|
|
|
+ * 序列号,多个序列号用英文逗号隔开
|
|
|
+ */
|
|
|
private String serialno;
|
|
|
private Batchs batchs;
|
|
|
- /** 自定义批次1 入库批次 */
|
|
|
+ /**
|
|
|
+ * 自定义批次1 入库批次
|
|
|
+ */
|
|
|
private String userDefined1;
|
|
|
- /** 自定义批次2 */
|
|
|
+ /**
|
|
|
+ * 自定义批次2
|
|
|
+ */
|
|
|
private String userDefined2;
|
|
|
- /** 自定义批次3 品牌*/
|
|
|
+ /**
|
|
|
+ * 自定义批次3 品牌
|
|
|
+ */
|
|
|
private String userDefined3;
|
|
|
- /** 自定义批次4 账套*/
|
|
|
+ /**
|
|
|
+ * 自定义批次4 账套
|
|
|
+ */
|
|
|
private String userDefined4;
|
|
|
- /** 自定义字段1 */
|
|
|
+ /**
|
|
|
+ * 自定义字段1
|
|
|
+ */
|
|
|
private String customField1;
|
|
|
- /** 自定义字段2 */
|
|
|
+ /**
|
|
|
+ * 自定义字段2
|
|
|
+ */
|
|
|
private String customField2;
|
|
|
- /** 自定义字段3 */
|
|
|
+ /**
|
|
|
+ * 自定义字段3
|
|
|
+ */
|
|
|
private String customField3;
|
|
|
- /** 自定义字段4 */
|
|
|
+ /**
|
|
|
+ * 自定义字段4
|
|
|
+ */
|
|
|
private String customField4;
|
|
|
- /** 自定义字段5 */
|
|
|
+ /**
|
|
|
+ * 自定义字段5
|
|
|
+ */
|
|
|
private String customField5;
|
|
|
- /** 自定义字段6 */
|
|
|
+ /**
|
|
|
+ * 自定义字段6
|
|
|
+ */
|
|
|
private String customField6;
|
|
|
- /** 自定义字段7 */
|
|
|
+ /**
|
|
|
+ * 自定义字段7
|
|
|
+ */
|
|
|
private String customField7;
|
|
|
- /** 自定义字段8 */
|
|
|
+ /**
|
|
|
+ * 自定义字段8
|
|
|
+ */
|
|
|
private String customField8;
|
|
|
|
|
|
@Data
|
|
|
@@ -120,31 +202,57 @@ public class INConfirm {
|
|
|
@Data
|
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
|
public static class Batch {
|
|
|
- /** 实收数量 */
|
|
|
+ /**
|
|
|
+ * 实收数量
|
|
|
+ */
|
|
|
private Double actualQty;
|
|
|
- /** 实收包装数量 */
|
|
|
+ /**
|
|
|
+ * 实收包装数量
|
|
|
+ */
|
|
|
private Double actualPackUomQty;
|
|
|
- /** 质量状态 ZP=正品, CC=残次, 默认为ZP */
|
|
|
+ /**
|
|
|
+ * 质量状态 ZP=正品, CC=残次, 默认为ZP
|
|
|
+ */
|
|
|
private String inventoryType;
|
|
|
- /** 虚拟仓库 条件必填, 条件为使用虚拟仓库 */
|
|
|
+ /**
|
|
|
+ * 虚拟仓库 条件必填, 条件为使用虚拟仓库
|
|
|
+ */
|
|
|
private String virtualWarehouse;
|
|
|
- /** 生产日期 YYYY-MM-DD */
|
|
|
+ /**
|
|
|
+ * 生产日期 YYYY-MM-DD
|
|
|
+ */
|
|
|
private String productDate;
|
|
|
- /** 失效日期 YYYY-MM-DD */
|
|
|
+ /**
|
|
|
+ * 失效日期 YYYY-MM-DD
|
|
|
+ */
|
|
|
private String expireDate;
|
|
|
- /** 批次号 */
|
|
|
+ /**
|
|
|
+ * 批次号
|
|
|
+ */
|
|
|
private String batchCode;
|
|
|
- /** 入库日期 YYYY-MM-DD */
|
|
|
+ /**
|
|
|
+ * 入库日期 YYYY-MM-DD
|
|
|
+ */
|
|
|
private String stockinDate;
|
|
|
- /** 自定义批次1 入库批次 */
|
|
|
+ /**
|
|
|
+ * 自定义批次1 入库批次
|
|
|
+ */
|
|
|
private String userDefined1;
|
|
|
- /** 自定义批次2 */
|
|
|
+ /**
|
|
|
+ * 自定义批次2
|
|
|
+ */
|
|
|
private String userDefined2;
|
|
|
- /** 自定义批次3 品牌*/
|
|
|
+ /**
|
|
|
+ * 自定义批次3 品牌
|
|
|
+ */
|
|
|
private String userDefined3;
|
|
|
- /** 自定义批次4 账套*/
|
|
|
+ /**
|
|
|
+ * 自定义批次4 账套
|
|
|
+ */
|
|
|
private String userDefined4;
|
|
|
- /** 容器号 */
|
|
|
+ /**
|
|
|
+ * 容器号
|
|
|
+ */
|
|
|
private String lpn;
|
|
|
}
|
|
|
}
|
|
|
@@ -163,133 +271,135 @@ public class INConfirm {
|
|
|
private String epc;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
public String getMasterName() {
|
|
|
- if(orderLines.getOrderLine() !=null){//账套名称
|
|
|
- if(StringUtil.hasText(orderLines.getOrderLine().get(0).getUserDefined4())){
|
|
|
+ if (orderLines.getOrderLine() != null) {//账套名称
|
|
|
+ if (StringUtil.hasText(orderLines.getOrderLine().get(0).getUserDefined4())) {
|
|
|
return orderLines.getOrderLine().get(0).getUserDefined4();
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
return orderLines.getOrderLine().get(0).getBatchs().getBatch().get(0).getUserDefined4();
|
|
|
}
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
-public String getGenerateMainSql() {
|
|
|
- StringBuilder sql = new StringBuilder("MERGE INTO @MASTERCODE.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();
|
|
|
-}
|
|
|
|
|
|
-public List<String> getGenerateLinesSql() {
|
|
|
- List<String> sqls = new ArrayList<>();
|
|
|
- for (OrderLines.OrderLine line : orderLines.getOrderLine()) {
|
|
|
- sqls.add(getGenerateLinesSql(line));
|
|
|
- for (int i = 0; i < line.getBatchs().getBatch().size(); i++) {
|
|
|
- OrderLines.OrderLine.Batchs.Batch batch = line.getBatchs().getBatch().get(i);
|
|
|
- sqls.add(getGenerateBatchsSql(line.getLineNo(),(i+1),batch));
|
|
|
+ public String getGenerateMainSql() {
|
|
|
+ StringBuilder sql = new StringBuilder("MERGE INTO @MASTERCODE.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();
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<String> getGenerateLinesSql() {
|
|
|
+ List<String> sqls = new ArrayList<>();
|
|
|
+ for (OrderLines.OrderLine line : orderLines.getOrderLine()) {
|
|
|
+ sqls.add(getGenerateLinesSql(line));
|
|
|
+ for (int i = 0; i < line.getBatchs().getBatch().size(); i++) {
|
|
|
+ OrderLines.OrderLine.Batchs.Batch batch = line.getBatchs().getBatch().get(i);
|
|
|
+ sqls.add(getGenerateBatchsSql(line.getLineNo(), (i + 1), batch));
|
|
|
+ }
|
|
|
}
|
|
|
+ return sqls;
|
|
|
}
|
|
|
- return sqls;
|
|
|
-}
|
|
|
|
|
|
-public String getGenerateLinesSql(OrderLines.OrderLine line) {
|
|
|
- StringBuilder sql = new StringBuilder();
|
|
|
- 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.getItemCode()).append("' ITEMCODE, ")
|
|
|
- .append("'").append(line.getItemId()).append("' ITEMID, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getPackUom(),"")).append("' PACKUOM, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getPlanQty(),"")).append("' PLANQTY, ")
|
|
|
- .append(StringUtil.nvl(line.getActualQty(),"0")).append(" ACTUALQTY, ")
|
|
|
- .append(StringUtil.nvl(line.getActualPackUomQty(),"0")).append(" ACTUALPACKUOMQTY, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getVirtualWarehouse(),"")).append("' virtualWarehouse, ")
|
|
|
- .append(StringUtil.nvl(line.getRejectQty(),"0")).append(" REJECTQTY, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getRejectReason(),"")).append("' REJECTREASON, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getSerialno(),"")).append("' SERIALNO, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField1(),"")).append("' CUSTOMFIELD1, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField2(),"")).append("' CUSTOMFIELD2, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField3(),"")).append("' CUSTOMFIELD3, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField4(),"")).append("' CUSTOMFIELD4, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField5(),"")).append("' CUSTOMFIELD5, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField6(),"")).append("' CUSTOMFIELD6, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField7(),"")).append("' CUSTOMFIELD7, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getCustomField8(),"")).append("' CUSTOMFIELD8, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getUserDefined1(),"")).append("' USERDEFINED1, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getUserDefined2(),"")).append("' USERDEFINED2, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getUserDefined3(),"")).append("' USERDEFINED3, ")
|
|
|
- .append("'").append(StringUtil.nvl(line.getUserDefined4(),"")).append("' USERDEFINED4 ")
|
|
|
- .append("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO AND wmsl.ITEMCODE = doc.ITEMCODE) ")
|
|
|
- .append("WHEN MATCHED THEN UPDATE SET ")
|
|
|
- .append("wmsl.ACTUALQTY = doc.ACTUALQTY, ")
|
|
|
- .append("wmsl.ACTUALPACKUOMQTY = doc.ACTUALPACKUOMQTY, ")
|
|
|
- .append("wmsl.virtualWarehouse = doc.virtualWarehouse, ")
|
|
|
- .append("wmsl.REJECTQTY = doc.REJECTQTY, ")
|
|
|
- .append("wmsl.REJECTREASON = doc.REJECTREASON, ")
|
|
|
- .append("wmsl.SERIALNO = doc.SERIALNO, ")
|
|
|
- .append("wmsl.CUSTOMFIELD1 = doc.CUSTOMFIELD1, ")
|
|
|
- .append("wmsl.CUSTOMFIELD2 = doc.CUSTOMFIELD2, ")
|
|
|
- .append("wmsl.CUSTOMFIELD3 = doc.CUSTOMFIELD3, ")
|
|
|
- .append("wmsl.CUSTOMFIELD4 = doc.CUSTOMFIELD4, ")
|
|
|
- .append("wmsl.CUSTOMFIELD5 = doc.CUSTOMFIELD5, ")
|
|
|
- .append("wmsl.CUSTOMFIELD6 = doc.CUSTOMFIELD6, ")
|
|
|
- .append("wmsl.CUSTOMFIELD7 = doc.CUSTOMFIELD7, ")
|
|
|
- .append("wmsl.CUSTOMFIELD8 = doc.CUSTOMFIELD8, ")
|
|
|
- .append("wmsl.USERDEFINED1 = doc.USERDEFINED1, ")
|
|
|
- .append("wmsl.USERDEFINED2 = doc.USERDEFINED2, ")
|
|
|
- .append("wmsl.USERDEFINED3 = doc.USERDEFINED3, ")
|
|
|
- .append("wmsl.USERDEFINED4 = doc.USERDEFINED4, ")
|
|
|
- .append("wmsl.UTIME = SYSDATE ")
|
|
|
- .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, ITEMID, PACKUOM, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY,virtualWarehouse, REJECTQTY, REJECTREASON, SERIALNO, ")
|
|
|
- .append("CUSTOMFIELD1, CUSTOMFIELD2, CUSTOMFIELD3, CUSTOMFIELD4, CUSTOMFIELD5, CUSTOMFIELD6, CUSTOMFIELD7, CUSTOMFIELD8,USERDEFINED1,USERDEFINED2,USERDEFINED3,USERDEFINED4) ")
|
|
|
- .append("VALUES (SYSDATE,doc.PIID, doc.LINENO, doc.ITEMCODE, doc.ITEMID, doc.PACKUOM, doc.PLANQTY, doc.ACTUALQTY,doc.virtualWarehouse, doc.ACTUALPACKUOMQTY, ")
|
|
|
- .append("doc.REJECTQTY, doc.REJECTREASON, doc.SERIALNO, doc.CUSTOMFIELD1, doc.CUSTOMFIELD2, doc.CUSTOMFIELD3, doc.CUSTOMFIELD4, doc.CUSTOMFIELD5, ")
|
|
|
- .append("doc.CUSTOMFIELD6, doc.CUSTOMFIELD7, doc.CUSTOMFIELD8, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
|
|
|
- return sql.toString();
|
|
|
-}
|
|
|
+ public String getGenerateLinesSql(OrderLines.OrderLine line) {
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
+ 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.getItemCode()).append("' ITEMCODE, ")
|
|
|
+ .append("'").append(line.getItemId()).append("' ITEMID, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getPackUom(), "")).append("' PACKUOM, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getPlanQty(), "")).append("' PLANQTY, ")
|
|
|
+ .append(StringUtil.nvl(line.getActualQty(), "0")).append(" ACTUALQTY, ")
|
|
|
+ .append(StringUtil.nvl(line.getActualPackUomQty(), "0")).append(" ACTUALPACKUOMQTY, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getVirtualWarehouse(), "")).append("' virtualWarehouse, ")
|
|
|
+ .append(StringUtil.nvl(line.getRejectQty(), "0")).append(" REJECTQTY, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getRejectReason(), "")).append("' REJECTREASON, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getSerialno(), "")).append("' SERIALNO, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField1(), "")).append("' CUSTOMFIELD1, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField2(), "")).append("' CUSTOMFIELD2, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField3(), "")).append("' CUSTOMFIELD3, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField4(), "")).append("' CUSTOMFIELD4, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField5(), "")).append("' CUSTOMFIELD5, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField6(), "")).append("' CUSTOMFIELD6, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField7(), "")).append("' CUSTOMFIELD7, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getCustomField8(), "")).append("' CUSTOMFIELD8, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getUserDefined1(), "")).append("' USERDEFINED1, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getUserDefined2(), "")).append("' USERDEFINED2, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getUserDefined3(), "")).append("' USERDEFINED3, ")
|
|
|
+ .append("'").append(StringUtil.nvl(line.getUserDefined4(), "")).append("' USERDEFINED4 ")
|
|
|
+ .append("FROM dual) doc ON (wmsl.PL_PIID = doc.PIID AND wmsl.LINENO = doc.LINENO AND wmsl.ITEMCODE = doc.ITEMCODE) ")
|
|
|
+ .append("WHEN MATCHED THEN UPDATE SET ")
|
|
|
+ .append("wmsl.ACTUALQTY = doc.ACTUALQTY, ")
|
|
|
+ .append("wmsl.ACTUALPACKUOMQTY = doc.ACTUALPACKUOMQTY, ")
|
|
|
+ .append("wmsl.virtualWarehouse = doc.virtualWarehouse, ")
|
|
|
+ .append("wmsl.REJECTQTY = doc.REJECTQTY, ")
|
|
|
+ .append("wmsl.REJECTREASON = doc.REJECTREASON, ")
|
|
|
+ .append("wmsl.SERIALNO = doc.SERIALNO, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD1 = doc.CUSTOMFIELD1, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD2 = doc.CUSTOMFIELD2, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD3 = doc.CUSTOMFIELD3, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD4 = doc.CUSTOMFIELD4, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD5 = doc.CUSTOMFIELD5, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD6 = doc.CUSTOMFIELD6, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD7 = doc.CUSTOMFIELD7, ")
|
|
|
+ .append("wmsl.CUSTOMFIELD8 = doc.CUSTOMFIELD8, ")
|
|
|
+ .append("wmsl.USERDEFINED1 = doc.USERDEFINED1, ")
|
|
|
+ .append("wmsl.USERDEFINED2 = doc.USERDEFINED2, ")
|
|
|
+ .append("wmsl.USERDEFINED3 = doc.USERDEFINED3, ")
|
|
|
+ .append("wmsl.USERDEFINED4 = doc.USERDEFINED4, ")
|
|
|
+ .append("wmsl.UTIME = SYSDATE ")
|
|
|
+ .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, ITEMID, PACKUOM, PLANQTY, ACTUALQTY, ACTUALPACKUOMQTY,virtualWarehouse, REJECTQTY, REJECTREASON, SERIALNO, ")
|
|
|
+ .append("CUSTOMFIELD1, CUSTOMFIELD2, CUSTOMFIELD3, CUSTOMFIELD4, CUSTOMFIELD5, CUSTOMFIELD6, CUSTOMFIELD7, CUSTOMFIELD8,USERDEFINED1,USERDEFINED2,USERDEFINED3,USERDEFINED4) ")
|
|
|
+ .append("VALUES (SYSDATE,doc.PIID, doc.LINENO, doc.ITEMCODE, doc.ITEMID, doc.PACKUOM, doc.PLANQTY, doc.ACTUALQTY,doc.virtualWarehouse, doc.ACTUALPACKUOMQTY, ")
|
|
|
+ .append("doc.REJECTQTY, doc.REJECTREASON, doc.SERIALNO, doc.CUSTOMFIELD1, doc.CUSTOMFIELD2, doc.CUSTOMFIELD3, doc.CUSTOMFIELD4, doc.CUSTOMFIELD5, ")
|
|
|
+ .append("doc.CUSTOMFIELD6, doc.CUSTOMFIELD7, doc.CUSTOMFIELD8, doc.USERDEFINED1, doc.USERDEFINED2, doc.USERDEFINED3, doc.USERDEFINED4)");
|
|
|
+ return sql.toString();
|
|
|
+ }
|
|
|
|
|
|
-public String getGenerateBatchsSql(Integer lineNo,Integer detno,OrderLines.OrderLine.Batchs.Batch batch) {
|
|
|
+ public String getGenerateBatchsSql(Integer lineNo, Integer detno, OrderLines.OrderLine.Batchs.Batch batch) {
|
|
|
StringBuilder sql = new StringBuilder();
|
|
|
sql.append("INSERT INTO ").append("@MASTERCODE")
|
|
|
- .append(".prodiowms_batchs(ITIME,PB_PIID, PD_DETNO, LINENO, ACTUALQTY, ACTUALPACKUOMQTY, INVENTORYTYPE, VIRTUALWAREHOUSE, PRODUCTDATE, EXPIREDATE, BATCHCODE, STOCKINDATE, USERDEFINED1, USERDEFINED2, USERDEFINED3, USERDEFINED4, LPN) VALUES(");
|
|
|
+ .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(", ");
|
|
|
@@ -299,20 +409,20 @@ public String getGenerateBatchsSql(Integer lineNo,Integer detno,OrderLines.Order
|
|
|
sql.append(StringUtil.nvl(batch.getActualPackUomQty(), "0")).append(", ");
|
|
|
sql.append("'").append(StringUtil.nvl(batch.getInventoryType(), "")).append("', ");
|
|
|
sql.append("'").append(StringUtil.nvl(batch.getVirtualWarehouse(), "")).append("', ");
|
|
|
- if(StringUtil.hasText(batch.getProductDate())){
|
|
|
+ if (StringUtil.hasText(batch.getProductDate())) {
|
|
|
sql.append("to_date('").append(batch.getProductDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
sql.append("null, ");
|
|
|
}
|
|
|
- if(StringUtil.hasText(batch.getExpireDate())){
|
|
|
+ if (StringUtil.hasText(batch.getExpireDate())) {
|
|
|
sql.append("to_date('").append(batch.getExpireDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
sql.append("null, ");
|
|
|
}
|
|
|
sql.append("'").append(StringUtil.nvl(batch.getBatchCode(), "")).append("', ");
|
|
|
- if(StringUtil.hasText(batch.getStockinDate())){
|
|
|
+ if (StringUtil.hasText(batch.getStockinDate())) {
|
|
|
sql.append("to_date('").append(batch.getStockinDate()).append("','yyyy-mm-dd hh24:mi:ss'), ");
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
sql.append("null, ");
|
|
|
}
|
|
|
sql.append("'").append(StringUtil.nvl(batch.getUserDefined1(), "")).append("', ");
|