From 10dbfe7190aa5d512baac84b5e405a09d0b6b65c Mon Sep 17 00:00:00 2001 From: loujf Date: Fri, 14 Oct 2022 12:40:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...agePalletSplitManipulatorDeviceDriver.java | 1 + .../wms/service/impl/AcsToWmsServiceImpl.java | 8 +- .../java/org/nl/wms/common/PressureUtil.java | 2 +- .../org/nl/wms/common/StructFindUtil.java | 32 ++++++-- .../org/nl/wms/common/wql/QSTRUCT_RULE.wql | 76 ++++++++++--------- .../org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql | 1 + .../nl/wms/sch/task/AutoOutStructTask.java | 48 +++++++----- 7 files changed, 99 insertions(+), 69 deletions(-) diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java index 05b705e..2a6d790 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/rljn_package_palletSplit_manipulator/RljnPackagePalletSplitManipulatorDeviceDriver.java @@ -1358,6 +1358,7 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe json.put("one_qty",one_qty); json.put("two_qty",two_qty); json.put("tool_coordinate",tool_coordinate); + json.put("material_code",material); HttpResponse result = acsToWmsService.applyTaskManipulatorToWms(json); if (ObjectUtil.isNotEmpty(result)) { diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 2185d62..ab370f9 100644 --- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -163,7 +163,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jo.put("device_code", parent_device_code); jo.putAll(json); - log.info("lnshApplyTaskToWms-----请求参数{}", jo.toString()); + log.info("applyIntoKiln-----请求参数{}", jo.toString()); HttpResponse result2 = null; try { //{"status":400,"timestamp":"2021-10-22 16:32:22","message":"业务类型不正确!"} @@ -177,7 +177,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { //网络不通 System.out.println(msg); } - log.info("lnshApplyTaskToWms-----输出参数{}", result2.body()); + log.info("applyIntoKiln-----输出参数{}", result2.body()); return result2; } finally { MDC.remove(log_file_type); @@ -323,7 +323,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsurl + methods_url; - log.info("getVehicleTokiln----请求参数{}", json.toString()); + log.info("inKiln----请求参数{}", json.toString()); HttpResponse result = null; try { result = HttpRequest.post(url) @@ -334,7 +334,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } catch (Exception e) { System.out.println(e.getMessage()); } - log.info("getVehicleTokiln----返回参数{}", result.body()); + log.info("inKiln----返回参数{}", result.body()); return result; } finally { diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PressureUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PressureUtil.java index da0e112..fb035b7 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PressureUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/PressureUtil.java @@ -15,7 +15,7 @@ public class PressureUtil { public static String record(JSONObject whereJson) { String device_code = (String) whereJson.get("device_code"); String reason = (String) whereJson.get("reason"); - int qty =Integer.valueOf((String)whereJson.get("qty")); + int qty =Integer.valueOf(whereJson.get("qty").toString()); String record_id = ""; //根据设备查询当前设备以及排产单号 JSONObject joo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "12").addParam("point_code", device_code).process().uniqueResult(0); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java index 3372f93..8f84584 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/StructFindUtil.java @@ -106,16 +106,32 @@ public class StructFindUtil { //获取空闲的输送线的上料位 public static JSONObject getConveyor(JSONObject jsonObject) { - //判断现在是否能去输送线 + /*//判断现在是否能去输送线 String material_id = jsonObject.getString("material_id"); WQLObject materialTable = WQLObject.getWQLObject("MD_ME_Material"); - JSONObject materialObj = materialTable.query("material_id ='" + material_id + "'").uniqueResult(0); - //获取可以用的输送线数组 - JSONObject result = WQL.getWO("QSTRUCT_RULE").addParam("flag", "6") - .addParam("material_type", materialObj.getString("material_type")) - .addParam("material_code", materialObj.getString("material_code")) - .process().uniqueResult(0); - return result; + JSONObject materialObj = materialTable.query("material_id ='" + material_id + "'").uniqueResult(0);*/ + + // 查询空闲输送线 + JSONArray arr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "13") + .process().getResultJSONArray(0); + + // 匹配叫料的类型和输送线的类型 + String materialType = jsonObject.getString("material_type"); + String materialCode = jsonObject.getString("material_code"); + for (Object o : arr) { + JSONObject line = (JSONObject) o; + String lineMaterialType = line.getString("material_type"); + String lineMaterialCode = line.getString("material_code"); + // 先匹配类型 + if (StrUtil.equals(materialType, lineMaterialType)) { + // 如果规定了特定类型 且 物料类型和特定类型不一致 下一轮循环 + if (StrUtil.isNotEmpty(lineMaterialCode) && !StrUtil.equals(materialCode, lineMaterialCode)) { + continue; + } + return line; + } + } + return null; } public static JSONObject getEmptyMto(JSONObject jsonObject) { diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql index 41efb88..bc8f909 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/wql/QSTRUCT_RULE.wql @@ -220,10 +220,7 @@ IF 输入.flag = "6" AND task.task_code IS NULL AND point.point_status = '00' OPTION 输入.material_type <> "" - point.material_type = 输入.material_type - ENDOPTION - OPTION point.material_code <> "0" - point.material_code = 输入.material_code + point.material_type = 输入.material_type ENDOPTION ENDSELECT ENDQUERY @@ -305,6 +302,12 @@ IF 输入.flag = "9" OPTION 输入.is_full <> "" ivt.is_full = 输入.is_full ENDOPTION + OPTION 输入.material_type <> "" + material.material_type = 输入.material_type + ENDOPTION + OPTION 输入.material_id <> "" + ivt.material_id = 输入.material_id + ENDOPTION order by ruledis.out_seq_no ENDSELECT ENDQUERY @@ -389,48 +392,47 @@ IF 输入.flag = "13" WHERE point.area_type = '07' AND device_point_type = '01' - AND point.MODE <> '0' + AND point.`mode` <> '0' AND point.point_status='00' AND ( point.vehicle_code = '' OR point.vehicle_code IS NULL ) AND task.task_code IS NULL + ORDER BY + material_code DESC ENDSELECT ENDQUERY ENDIF IF 输入.flag = "14" QUERY - SELECT DISTINCT - point.point_code AS struct_code, - point.point_id AS struct_id, - point.point_name AS struct_name, - point.vehicle_code, - ivt.canuse_qty, - ruledis.out_seq_no, - material.material_id, - material.material_code, - material.material_name, - material.material_spec - FROM - st_ivt_structivt ivt - LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id - LEFT JOIN st_rule_IOdisStruct ruledis ON ruledis.struct_uuid = ivt.struct_id - LEFT JOIN md_me_material material ON material.material_id = ivt.material_id - WHERE - ivt.canuse_qty > 0 - AND point.point_status = '02' - AND point.lock_type = '00' - AND point.is_used = '1' - and TIME_TO_SEC(timediff(now(),ivt.instorage_time)) >=ivt.stewing_time*60 - OPTION 输入.area_type <> "" - point.area_type = 输入.area_type - ENDOPTION - OPTION 输入.material_type <> "" - material.material_type = 输入.material_type - ENDOPTION - OPTION 输入.material_code <> "" - material.material_code = 输入.material_code - ENDOPTION - order by ruledis.out_seq_no + SELECT DISTINCT + point.point_code AS struct_code, + point.point_id AS struct_id, + point.point_name AS struct_name, + point.vehicle_code, + ivt.canuse_qty, + ruledis.out_seq_no, + material.material_id, + material.material_code, + material.material_name, + material.material_spec + FROM + st_ivt_structivt ivt + LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id + LEFT JOIN st_rule_IOdisStruct ruledis ON ruledis.struct_uuid = ivt.struct_id + LEFT JOIN md_me_material material ON material.material_id = ivt.material_id + WHERE + ivt.canuse_qty > 0 + AND point.point_status = '02' + AND point.lock_type = '00' + AND point.is_used = '1' + and TIME_TO_SEC(timediff(now(),ivt.instorage_time)) >=ivt.stewing_time*60 + OPTION 输入.area_type <> "" + point.area_type = 输入.area_type + ENDOPTION + OPTION 输入.material_type <> "" + material.material_type = 输入.material_type + ENDOPTION + order by ruledis.out_seq_no ENDSELECT ENDQUERY ENDIF \ No newline at end of file diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql index f4bf013..a151523 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql @@ -61,6 +61,7 @@ WHERE task.is_delete = '0' + and task.produceTask_status <> '05' OPTION 输入.search <> "" (task.producetask_code like 输入.search) ENDOPTION diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java index cb4e805..e99403f 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/task/AutoOutStructTask.java @@ -36,9 +36,11 @@ public class AutoOutStructTask { //1.首先更新所有输送线的点位状态 JSONArray pointarr = WQL.getWO("ACSTOMES_001").addParam("area_type", "07").addParam("flag", "4").process().getResultJSONArray(0); PointUpdateUtil.updatePoint(pointarr); - //2找一个空余的缓存线,对应的物料是否有库存 - JSONArray arr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "13").process().getResultJSONArray(0); - String material_id = ""; + + // 查询空余的入窑输送线 + JSONArray arr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "13") + .process().getResultJSONArray(0); + /*String material_id = ""; String vehicle_code = ""; String point_code = ""; for (int i = 0; i < arr.size(); i++) { @@ -50,7 +52,6 @@ public class AutoOutStructTask { } JSONObject outObj = WQL.getWO("QSTRUCT_RULE").addParam("flag", "14") .addParam("material_type", material_type) - .addParam("material_code", material_code) .process().uniqueResult(0); if (ObjectUtil.isNotEmpty(outObj)) { material_id = outObj.getString("material_id"); @@ -61,24 +62,33 @@ public class AutoOutStructTask { } if (StrUtil.isEmpty(material_id)) { return; - } - JSONObject param = new JSONObject(); - param.put("flag", "9"); - param.put("area_type", "01"); - param.put("if_full", "1"); - JSONObject structObj = WQL.getWO("QSTRUCT_RULE").addParamMap(param).process().uniqueResult(0); + }*/ + // 遍历输送线,给每一个输送线创建叫料任务 CallMaterialTask callMaterialTask = new CallMaterialTask(); - JSONObject taskObj = new JSONObject(); - taskObj.put("next_point_code", point_code); - taskObj.put("vehicle_code", structObj.get("vehicle_code")); - taskObj.put("material_id", structObj.get("material_id")); - taskObj.put("create_mode", "02"); - taskObj.put("is_full", "1"); - taskObj.put("workprocedure_id", WorkProcedureEnum.SZGX.getId()); - callMaterialTask.createTask(taskObj); - return; + for (Object o : arr) { + JSONObject line = (JSONObject) o; + JSONObject param = new JSONObject(); + param.put("flag", "9"); + param.put("area_type", "01"); + param.put("if_full", "1"); + param.put("material_type", line.getString("material_type")); + if (StrUtil.isNotEmpty(line.getString("material_code"))) { + param.put("material_code", line.getString("material_code")); + } + JSONObject structObj = WQL.getWO("QSTRUCT_RULE").addParamMap(param).process().uniqueResult(0); + if (ObjectUtil.isNotEmpty(structObj)) { + JSONObject taskObj = new JSONObject(); + taskObj.put("next_point_code", line.getString("point_code")); + taskObj.put("vehicle_code", structObj.get("vehicle_code")); + taskObj.put("material_id", structObj.get("material_id")); + taskObj.put("create_mode", "02"); + taskObj.put("is_full", "1"); + taskObj.put("workprocedure_id", WorkProcedureEnum.SZGX.getId()); + callMaterialTask.createTask(taskObj); + } + } } }