| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package com.uas.eis.entity.vwms.req;
- import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
- import com.uas.eis.utils.StringUtil;
- import lombok.Data;
- import java.util.ArrayList;
- import java.util.List;
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public class AdjustConfirm {
- private AdjustmentOrder adjustmentOrder;
- private OrderLines orderLines;
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class AdjustmentOrder {
- /** 转移单号(ERP单号) 长度:50 */
- private String adjustmentOrderCode;
- /** 仓储系统转移单号 长度:50 */
- private String adjustmentOrderId;
- /** 转移单类型 长度:50 例如: ZCTZ=转仓调整单, KCYK=库存移库 */
- private String adjustmentOrderType;
- /** 仓库代码 长度:50 */
- private String warehouseCode;
- /** 货主代码 长度:50 */
- private String ownerCode;
- /** 外部业务代码 长度:50 消息ID, 用于去重 */
- private String outBizCode;
- /** 订单完成时间 长度:19 YYYY-MM-DD HH:MM:SS */
- private String orderConfirmTime;
- /** 操作人 长度:20 */
- private String updateCode;
- /** 备注 长度:500 */
- private String remark;
- }
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class OrderLines {
- private List<OrderLine> orderLine;
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class OrderLine {
- /** 货品代码 长度:50 */
- private String itemCode;
- /** 仓储系统货品代码 长度:50 */
- private String itemId;
- /** 货品名称 长度:200 */
- private String itemName;
- /** 计划数量 */
- private Integer planQty;
- /** 实际数量 */
- private Integer actualQty;
- /** 行号 */
- private Integer lineNo;
- /** 序列号,多个序列号用英文逗号隔开 */
- private String serialNo;
- /** 原信息 */
- private Source source;
- /** 目标信息 */
- private Target target;
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class Source {
- /** 原质量状态 长度: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;
- }
- @Data
- @JsonIgnoreProperties(ignoreUnknown = true)
- public static class Target {
- /** 目标质量状态 长度: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;
- }
- }
- }
- public String getMasterName() {
- if (orderLines.getOrderLine() != null) {//账套名称
- return orderLines.getOrderLine().get(0).getSource().getUserDefined4();
- } 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(adjustmentOrder.getOwnerCode(), "")).append("' OWNERCODE, ")
- .append("'").append(StringUtil.nvl(adjustmentOrder.getWarehouseCode(), "")).append("' WAREHOUSECODE, ")
- .append("'").append(StringUtil.nvl(adjustmentOrder.getAdjustmentOrderCode(), "")).append("' WMSORDERID, ")
- .append("'").append(StringUtil.nvl(adjustmentOrder.getAdjustmentOrderType(), "")).append("' WMSORDERTYPE, ")
- .append("'").append(StringUtil.nvl(adjustmentOrder.getOutBizCode(), "")).append("' OUTBIZCODE, ")
- .append((StringUtil.hasText(adjustmentOrder.getOrderConfirmTime()) ? "to_date('" + adjustmentOrder.getOrderConfirmTime() + "','yyyy-mm-dd hh24:mi:ss')" : "null")).append(" deliveryTime ")
- .append("FROM dual) doc ON (wmsl.PIID = doc.PIID AND wmsl.PIINOUTNO = doc.PIINOUTNO) ")
- .append("WHEN MATCHED THEN UPDATE SET ")
- .append("wmsl.OWNERCODE = doc.OWNERCODE, ")
- .append("wmsl.WAREHOUSECODE = doc.WAREHOUSECODE, ")
- .append("wmsl.WMSORDERID = doc.WMSORDERID, ")
- .append("wmsl.WMSORDERTYPE = doc.WMSORDERTYPE, ")
- .append("wmsl.OUTBIZCODE = doc.OUTBIZCODE, ")
- .append("wmsl.deliveryTime = doc.deliveryTime, ")
- .append("wmsl.UTIME = SYSDATE ")
- .append("WHEN NOT MATCHED THEN INSERT (ITIME,PIID, PIINOUTNO, OWNERCODE, WAREHOUSECODE, WMSORDERID, WMSORDERTYPE, OUTBIZCODE, deliveryTime) ")
- .append("VALUES (SYSDATE,doc.PIID, doc.PIINOUTNO, doc.OWNERCODE, doc.WAREHOUSECODE, doc.WMSORDERID, doc.WMSORDERTYPE, doc.OUTBIZCODE, doc.deliveryTime)");
- return sql.toString();
- }
- public List<String> getGenerateLinesSql() {
- List<String> sqls = new ArrayList<>();
- for (AdjustConfirm.OrderLines.OrderLine line : orderLines.getOrderLine()) {
- sqls.add(getGenerateLinesSql(line));
- }
- return sqls;
- }
- public String getGenerateLinesSql(AdjustConfirm.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(StringUtil.nvl(line.getPlanQty(), "")).append("' PLANQTY, ")
- .append(StringUtil.nvl(line.getActualQty(), "0")).append(" ACTUALQTY, ")
- .append("'").append(StringUtil.nvl(line.getSerialNo(), "")).append("' SERIALNO, ")
- .append("'").append(StringUtil.nvl(line.getSource().getVirtualWarehouse(), "")).append("' S_VIRTUALWAREHOUSE, ")
- .append("'").append(StringUtil.nvl(line.getSource().getUserDefined1(), "")).append("' S_USERDEFINED1, ")
- .append("'").append(StringUtil.nvl(line.getSource().getUserDefined3(), "")).append("' S_USERDEFINED3, ")
- .append("'").append(StringUtil.nvl(line.getSource().getUserDefined4(), "")).append("' S_USERDEFINED4, ")
- .append("'").append(StringUtil.nvl(line.getTarget().getVirtualWarehouse(), "")).append("' T_VIRTUALWAREHOUSE, ")
- .append("'").append(StringUtil.nvl(line.getTarget().getUserDefined1(), "")).append("' T_USERDEFINED1, ")
- .append("'").append(StringUtil.nvl(line.getTarget().getUserDefined3(), "")).append("' T_USERDEFINED3, ")
- .append("'").append(StringUtil.nvl(line.getTarget().getUserDefined4(), "")).append("' T_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.SERIALNO = doc.SERIALNO, ")
- .append("wmsl.S_VIRTUALWAREHOUSE = doc.S_VIRTUALWAREHOUSE, ")
- .append("wmsl.S_USERDEFINED1 = doc.S_USERDEFINED1, ")
- .append("wmsl.S_USERDEFINED3 = doc.S_USERDEFINED3, ")
- .append("wmsl.S_USERDEFINED4 = doc.S_USERDEFINED4, ")
- .append("wmsl.T_VIRTUALWAREHOUSE = doc.T_VIRTUALWAREHOUSE, ")
- .append("wmsl.T_USERDEFINED1 = doc.T_USERDEFINED1, ")
- .append("wmsl.T_USERDEFINED3 = doc.T_USERDEFINED3, ")
- .append("wmsl.T_USERDEFINED4 = doc.T_USERDEFINED4, ")
- .append("wmsl.UTIME = SYSDATE ")
- .append("WHEN NOT MATCHED THEN INSERT (ITIME,PL_PIID, LINENO, ITEMCODE, PLANQTY, ACTUALQTY,SERIALNO ")
- .append(",S_VIRTUALWAREHOUSE,S_USERDEFINED1,S_USERDEFINED3,S_USERDEFINED4,T_VIRTUALWAREHOUSE,T_USERDEFINED1,T_USERDEFINED3,T_USERDEFINED4) ")
- .append("VALUES (SYSDATE,doc.PIID, doc.LINENO, doc.ITEMCODE, doc.PLANQTY, doc.ACTUALQTY,doc.SERIALNO")
- .append(" ")
- .append(",doc.S_VIRTUALWAREHOUSE,doc.S_USERDEFINED1,doc.S_USERDEFINED3,doc.S_USERDEFINED4,doc.T_VIRTUALWAREHOUSE,doc.T_USERDEFINED1,doc.T_USERDEFINED3,doc.T_USERDEFINED4)");
- return sql.toString();
- }
- }
|