From 9a343ca146b3c1da6c061380228c8db0fbdbb8f2 Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 9 Jan 2023 17:06:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 60 +++++- .../org/nl/wms/sch/tasks/SendOutTask.java | 2 +- .../wms/st/inbill/wql/QST_ACSTOLMSTYPE4.wql | 182 ++++++++++++++++++ .../st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql | 103 +++++++++- 4 files changed, 339 insertions(+), 8 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_ACSTOLMSTYPE4.wql diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 700383863..29385a761 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -331,21 +331,71 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String sale_order_name = sub_jo.getString("sale_order_name"); //查询是否存在可用的空位 - JSONObject jo = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "19").addParam("sale_order_name", sale_order_name).process().uniqueResult(0); - if (ObjectUtil.isEmpty(jo)) { + String point_code = ""; + JSONArray joArr = new JSONArray(); + + // 查找此订单号所在的所有排 + JSONArray joRow = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "1").addParam("sale_order_name", sale_order_name).process().getResultJSONArray(0); + for (int j = 0; j < joRow.size(); j++) { + JSONObject json = joRow.getJSONObject(j); + String row_num = json.getString("row_num"); + + // 查找此排下的所有空位 + JSONArray joEmpPoint = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "2").addParam("row_num", row_num).process().getResultJSONArray(0); + + if (ObjectUtil.isNotEmpty(joEmpPoint)) { + for (int n = 0; n < joEmpPoint.size(); n++) { + joArr.add(joEmpPoint.getJSONObject(n)); + } + } + } + + if (ObjectUtil.isEmpty(joArr)) { //查询新的一排 - JSONObject point_jo = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "20").process().uniqueResult(0); + JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); if (ObjectUtil.isEmpty(point_jo)) { throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); } else { - jo = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0'").uniqueResult(0); + JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); + point_code = jsonNewRow.getString("point_code"); + } + } else { + // 校验此货位是否被堵住:1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排 + for (int i = 0; i < joArr.size(); i++) { + JSONObject json = joArr.getJSONObject(i); + // 判断是否被挡住 + JSONArray jsonArray = WQL.getWO("QST_ACSTOLMSTYPE4") + .addParam("flag", "4") + .addParam("point_code", json.getString("point_code")) + .process().getResultJSONArray(0); + + if (ObjectUtil.isNotEmpty(jsonArray)) { + // 堵住则判断下一个 + continue; + } else { + // 未堵住: 跳出循环 + point_code = json.getString("point_code"); + break; + } + + } + } + + if (ObjectUtil.isEmpty(point_code)) { + // 为空则新开一排 + JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0); + if (ObjectUtil.isEmpty(point_jo)) { + throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!"); + } else { + JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0); + point_code = jsonNewRow.getString("point_code"); } } //创建任务 JSONObject task_jo = new JSONObject(); task_jo.put("point_code1", device_code); - task_jo.put("point_code2", jo.getString("point_cde")); + task_jo.put("point_code2", point_code); task_jo.put("vehicle_code", vehicle_code); task_jo.put("task_type", "010506"); SendOutTask sendOutTask = new SendOutTask(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java index 0e8f66600..c9b2f8a9c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendOutTask.java @@ -92,7 +92,7 @@ public class SendOutTask extends AbstractAcsTask { // 更新暂存区点位状态 JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); - jsonPoint2.put("point_status", "02"); + jsonPoint2.put("point_status", "2"); jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code")); pointTab.update(jsonPoint2); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_ACSTOLMSTYPE4.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_ACSTOLMSTYPE4.wql new file mode 100644 index 000000000..e02ae64a6 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_ACSTOLMSTYPE4.wql @@ -0,0 +1,182 @@ +[交易说明] + 交易名: ACS请求WMS + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.sale_order_name TYPEAS s_string + 输入.point_code TYPEAS s_string + 输入.row_num TYPEAS s_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + max(po.row_num) AS row_num + FROM + sch_base_point po + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = po.vehicle_code + WHERE + po.point_type = '9' + AND sub.sale_order_name = 输入.sale_order_name + + GROUP BY po.row_num + + ORDER BY po.row_num ASC + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + po.point_code + FROM + sch_base_point po + WHERE + IFNULL( po.vehicle_code, '' ) = '' + AND + po.point_type = '9' + OPTION 输入.row_num <> "" + po.row_num = 输入.row_num + ENDOPTION + + AND NOT EXISTS ( + SELECT + * + FROM + sch_base_task + WHERE + ( point_code1 = po.point_code OR point_code2 = po.point_code ) + AND task_status < '07' + AND is_delete = '0' + ) + + ORDER BY po.out_order_seq + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + * + FROM + ( + SELECT + po.row_num + FROM + sch_base_point po + WHERE + po.is_delete = '0' + AND is_used = '1' + AND po.point_type = '9' + GROUP BY + po.row_num + ) a + WHERE + NOT EXISTS ( + SELECT + * + FROM + ( + SELECT + row_num + FROM + sch_base_point po2 + WHERE + IFNULL( po2.vehicle_code, '' ) <> '' + AND po2.point_type = '9' + GROUP BY + po2.row_num + ) b + WHERE + b.row_num = a.row_num + ) + + ORDER BY row_num ASC + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + point2.* + FROM + sch_base_point point1 + LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num + WHERE + IFNULL( point2.vehicle_code, '' ) <> '' + AND point1.out_order_seq < point2.out_order_seq + AND point2.point_type = '9' + + OPTION 输入.point_code <> "" + point1.point_code = 输入.point_code + ENDOPTION + + UNION + + SELECT + point2.* + FROM + sch_base_point point1 + LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num + WHERE + IFNULL( point2.vehicle_code, '' ) = '' + AND point1.out_order_seq < point2.out_order_seq + AND point2.point_type = '9' + + OPTION 输入.point_code <> "" + point1.point_code = 输入.point_code + ENDOPTION + + AND EXISTS ( + SELECT + * + FROM + sch_base_task + WHERE + ( point_code1 = point2.point_code OR point_code2 = point2.point_code ) + AND task_status < '07' + AND is_delete = '0' + ) + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql index cb43279ea..a5288db7d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql @@ -32,6 +32,8 @@ 输入.sale_order_name TYPEAS s_string 输入.material_code TYPEAS s_string 输入.sect_id TYPEAS s_string + 输入.point_code TYPEAS s_string + 输入.row_num TYPEAS s_string 输入.sql_str TYPEAS f_string 输入.in_stor_id TYPEAS f_string @@ -722,7 +724,7 @@ AND is_delete = '0' ) ORDER BY po2.out_order_seq - LIMIT 1 + ENDSELECT ENDIF @@ -762,6 +764,9 @@ WHERE b.row_num = a.row_num ) + + ORDER BY row_num ASC + ENDSELECT ENDQUERY ENDIF @@ -812,7 +817,101 @@ ENDQUERY ENDIF - + IF 输入.flag = "23" + QUERY + SELECT + point2.* + FROM + sch_base_point point1 + LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num + WHERE + IFNULL( point2.vehicle_code, '' ) <> '' + AND point1.out_order_seq < point2.out_order_seq + AND point2.point_type = '9' + + OPTION 输入.point_code <> "" + point1.point_code = 输入.point_code + ENDOPTION + + UNION + + SELECT + point2.* + FROM + sch_base_point point1 + LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num + WHERE + IFNULL( point2.vehicle_code, '' ) = '' + AND point1.out_order_seq < point2.out_order_seq + AND point2.point_type = '9' + + OPTION 输入.point_code <> "" + point1.point_code = 输入.point_code + ENDOPTION + + AND EXISTS ( + SELECT + * + FROM + sch_base_task + WHERE + ( point_code1 = point2.point_code OR point_code2 = point2.point_code ) + AND task_status < '07' + AND is_delete = '0' + ) + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "24" + SELECT + max(po.row_num) AS row_num + FROM + sch_base_point po + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = po.vehicle_code + WHERE + po.point_type = '9' + + OPTION 输入.sale_order_name <> "" + sub.sale_order_name = 输入.sale_order_name + ENDOPTION + + GROUP BY po.row_num + + ORDER BY po.row_num ASC + + ENDSELECT + ENDIF + + IF 输入.flag = "25" + SELECT + po.point_code + FROM + sch_base_point po + WHERE + IFNULL( po.vehicle_code, '' ) = '' + AND + po.point_type = '9' + OPTION 输入.row_num <> "" + po.row_num = 输入.row_num + ENDOPTION + + AND NOT EXISTS ( + SELECT + * + FROM + sch_base_task + WHERE + ( point_code1 = po.point_code OR point_code2 = po.point_code ) + AND task_status < '07' + AND is_delete = '0' + ) + + ORDER BY po.out_order_seq + + ENDSELECT + ENDIF