From 9d7a43eaafa3054ce421b23150daa57298babb85 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 30 Aug 2022 15:30:35 +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 | 83 ++++++++++-------- .../org/nl/wms/ext/auto/AutoQueryTask.java | 64 +++++++------- .../org/nl/wms/ext/wql/AUTO_QUERYTASK.wql | 4 +- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 232448 -> 234496 bytes .../nl/wms/sch/tasks/PointToPointTask.java | 3 + .../nl/wms/sch/tasks/SendMaterialTask.java | 3 +- 6 files changed, 84 insertions(+), 73 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 910cd9a..1896d19 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -155,6 +155,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); // 区域出入库表 + WQLObject veQtyTab = WQLObject.getWQLObject("PDM_BI_vehicleQty"); // 托盘对应数量表 /* @@ -201,7 +202,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else if (StrUtil.equals(type, "2")) { // 2.共挤线满托入库: 调用物料入库处理类创建任务 - if (ObjectUtil.isEmpty(qty) || (StrUtil.equals(qty, "0"))) throw new BadRequestException("物料数量不能为空或者为0"); + if (ObjectUtil.isEmpty(qty) || (StrUtil.equals(qty, "0"))) + throw new BadRequestException("物料数量不能为空或者为0"); JSONObject param = new JSONObject(); param.put("start_point_code", point_code); @@ -328,12 +330,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else if (StrUtil.equals(type, "6")) { // 6.一楼空盘入库 (有载具号): 调用空托盘入库处理类创建任务 - if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("载具号不能为空"); + // 查询载具号对应的数量 + JSONObject jsonVeQty = veQtyTab.query("vehicle_code = '" + vehicle_code + "' and is_task = '0' order by create_time DESC").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeQty)) throw new BadRequestException("请先手持扫码"); JSONObject param = new JSONObject(); param.put("start_point_code", point_code); - param.put("qty", vehicle_num); + param.put("qty", jsonVeQty.getString("qty")); param.put("vehicle_code", vehicle_code); // 创建任务 SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); @@ -341,7 +345,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 插入空载具作业记录表 JSONObject jsonEmpParam = new JSONObject(); - jsonEmpParam.put("vehicle_qty", vehicle_num); + jsonEmpParam.put("vehicle_qty", jsonVeQty.getString("qty")); jsonEmpParam.put("task_id", task_id); jsonEmpParam.put("io_type", "0"); this.createEmp(jsonEmpParam); @@ -354,6 +358,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); jsonTask.put("task_status", "05"); taskTab.update(jsonTask); + // 更新载具对应数量表 + jsonVeQty.put("is_task", "1"); + veQtyTab.update(jsonVeQty); } else { throw new BadRequestException(jsonObject.getString("message")); } @@ -385,7 +392,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); JSONObject jsonEmp = new JSONObject(); - jsonEmp.put("record_uuid", IdUtil.getSnowflake(1,1).nextId()); + jsonEmp.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId()); jsonEmp.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); jsonEmp.put("io_type", io_type); jsonEmp.put("bill_status", "20"); @@ -417,10 +424,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); - jsonRegion.put("bill_code",CodeUtil.getNewCode("IN_STORE_CODE")); - jsonRegion.put("io_type",io_type); - jsonRegion.put("bill_status","20"); + jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonRegion.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); + jsonRegion.put("io_type", io_type); + jsonRegion.put("bill_status", "20"); // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 String device_code = start_point_code.substring(0, start_point_code.indexOf("_")); @@ -430,23 +437,23 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); - jsonRegion.put("material_id",jsonOrder.getString("material_id")); - jsonRegion.put("qty",qty); + jsonRegion.put("material_id", jsonOrder.getString("material_id")); + jsonRegion.put("qty", qty); JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); + jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id")); - jsonRegion.put("start_point_code",start_point_code); + jsonRegion.put("start_point_code", start_point_code); Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code).getRegion_id(); - jsonRegion.put("start_region_id",String.valueOf(start_region_id)); - jsonRegion.put("end_point_code",next_point_code); + jsonRegion.put("start_region_id", String.valueOf(start_region_id)); + jsonRegion.put("end_point_code", next_point_code); Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); - jsonRegion.put("end_region_id",String.valueOf(end_region_id)); + jsonRegion.put("end_region_id", String.valueOf(end_region_id)); - jsonRegion.put("create_mode","02"); - jsonRegion.put("task_id",task_id); - jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name",SecurityUtils.getNickName()); - jsonRegion.put("create_time",DateUtil.now()); + jsonRegion.put("create_mode", "02"); + jsonRegion.put("task_id", task_id); + jsonRegion.put("create_id", SecurityUtils.getCurrentUserId()); + jsonRegion.put("create_name", SecurityUtils.getNickName()); + jsonRegion.put("create_time", DateUtil.now()); regionTab.insert(jsonRegion); JSONObject resuft = new JSONObject(); @@ -466,10 +473,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); - jsonRegion.put("bill_code",CodeUtil.getNewCode("OUT_STORE_CODE")); - jsonRegion.put("io_type",io_type); - jsonRegion.put("bill_status","20"); + jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonRegion.put("bill_code", CodeUtil.getNewCode("OUT_STORE_CODE")); + jsonRegion.put("io_type", io_type); + jsonRegion.put("bill_status", "20"); // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); @@ -479,27 +486,27 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); - jsonRegion.put("material_id",jsonOrder.getString("material_id")); - jsonRegion.put("qty","100"); // 暂时先按照100 + jsonRegion.put("material_id", jsonOrder.getString("material_id")); + jsonRegion.put("qty", "100"); // 暂时先按照100 JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); + jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id")); - jsonRegion.put("end_point_code",next_point_code); + jsonRegion.put("end_point_code", next_point_code); Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); - jsonRegion.put("end_region_id",String.valueOf(end_region_id)); + jsonRegion.put("end_region_id", String.valueOf(end_region_id)); - jsonRegion.put("create_mode","02"); - jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name",SecurityUtils.getNickName()); - jsonRegion.put("create_time",DateUtil.now()); + jsonRegion.put("create_mode", "02"); + jsonRegion.put("create_id", SecurityUtils.getCurrentUserId()); + jsonRegion.put("create_name", SecurityUtils.getNickName()); + jsonRegion.put("create_time", DateUtil.now()); regionTab.insert(jsonRegion); // 需回显起始点位、起始区域、任务id JSONObject resuft = new JSONObject(); - resuft.put("iostorinv_id",jsonRegion.getString("iostorinv_id")); - resuft.put("vehicle_type",jsonOrder.getString("vehicle_type")); - resuft.put("create_mode",jsonRegion.getString("create_mode")); - resuft.put("material_id",jsonOrder.getString("material_id")); + resuft.put("iostorinv_id", jsonRegion.getString("iostorinv_id")); + resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); + resuft.put("create_mode", jsonRegion.getString("create_mode")); + resuft.put("material_id", jsonOrder.getString("material_id")); return resuft; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java index a7d036e..641963c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java @@ -35,7 +35,7 @@ public class AutoQueryTask { /* * 1.查找输送线有没有空位 输送线1对1关系 调用获取点位状态接口 * 2.判断有空位的输送线是否有任务:起点和终点都要判断 - * 输送线点位:SSX01A1 - SSX01A2 ,SSX01B1 - SSX01B2 + * 输送线点位:SSX01A1 - SSX01A2 ,SSX02A1 - SSX02A2 */ // 2.查找输送线空位,调用获取点位状态接口 JSONArray paramArr = new JSONArray(); @@ -49,11 +49,11 @@ public class AutoQueryTask { paramArr.add(pointA2); JSONObject pointB1 = new JSONObject(); - pointB1.put("device_code", "SSX01B1"); + pointB1.put("device_code", "SSX02A1"); paramArr.add(pointB1); JSONObject pointB2 = new JSONObject(); - pointB2.put("device_code", "SSX01B2"); + pointB2.put("device_code", "SSX02A2"); paramArr.add(pointB2); JSONObject result = wmsToAcsService.getPointStatus(paramArr); @@ -66,7 +66,7 @@ public class AutoQueryTask { for (int j = 0; j < dataArr.size(); j++) { JSONObject jsonObject = dataArr.getJSONObject(j); - String device_code = jsonObject.getString("barcode"); + String device_code = jsonObject.getString("device_code"); switch (device_code) { case "SSX01A1" : jsonPointAfter.put("SSX01A1",jsonObject.getString("move")); @@ -74,11 +74,11 @@ public class AutoQueryTask { case "SSX01A2" : jsonPointAfter.put("SSX01A2",jsonObject.getString("move")); break; - case "SSX01B1" : - jsonPointAfter.put("SSX01B1",jsonObject.getString("move")); + case "SSX02A1" : + jsonPointAfter.put("SSX02A1",jsonObject.getString("move")); break; - case "SSX01B2" : - jsonPointAfter.put("SSX01B2",jsonObject.getString("move")); + case "SSX02A2" : + jsonPointAfter.put("SSX02A2",jsonObject.getString("move")); break; } } @@ -97,40 +97,40 @@ public class AutoQueryTask { if (ObjectUtil.isEmpty(is_stara) && ObjectUtil.isEmpty(is_end)) { // 4.3.更新任务终点点位 - jsonTask.put("next_point_code", "SSX01A2"); + jsonTask.put("next_point_code", "SSX01A1"); taskTab.update(jsonTask); // 4.4.下发ACS JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { // 4.5.下发成功、更新任务状态 - jsonTask.put("task_status", "02"); + jsonTask.put("task_status", "05"); taskTab.update(jsonTask); } - } - // 5.1判断SSX01B1 、 SSX01B2是否是空位 无任务 - } else if (StrUtil.equals(jsonPointAfter.getString("SSX01B1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX01B2"), "0")) { - // 5.2如果都是空位 则判断是否有正在进行的任务 - map.put("flag", "2"); - map.put("start_point_code", "('SSX01B1','SSX01B2')"); - // 查找起点是否有任务 - JSONArray is_stara = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); - // 查询终点是否有任务 - map.put("flag", "3"); - map.put("end_point_code", "('SSX01B1','SSX01B2')"); - JSONArray is_end = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + // 5.1判断SSX02A1 、 SSX02A2是否是空位 无任务 + } else if (StrUtil.equals(jsonPointAfter.getString("SSX02A1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX02A2"), "0")) { + // 5.2如果都是空位 则判断是否有正在进行的任务 + map.put("flag", "2"); + map.put("start_point_code", "('SSX02A1','SSX02A2')"); + // 查找起点是否有任务 + JSONArray is_stara2 = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + // 查询终点是否有任务 + map.put("flag", "3"); + map.put("end_point_code", "('SSX02A1','SSX02A2')"); + JSONArray is_end2 = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); - if (ObjectUtil.isEmpty(is_stara) && ObjectUtil.isEmpty(is_end)) { - // 5.3.更新任务终点点位 - jsonTask.put("next_point_code", "SSX01B2"); - taskTab.update(jsonTask); - // 5.4.下发ACS - JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); - - if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { - // 4.5.下发成功、更新任务状态 - jsonTask.put("task_status", "02"); + if (ObjectUtil.isEmpty(is_stara2) && ObjectUtil.isEmpty(is_end2)) { + // 5.3.更新任务终点点位 + jsonTask.put("next_point_code", "SSX02A1"); taskTab.update(jsonTask); + // 5.4.下发ACS + JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); + + if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { + // 4.5.下发成功、更新任务状态 + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } } } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql index a381a99..511960f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql @@ -14,8 +14,8 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string - 输入.start_point_code TYPEAS s_string - 输入.end_point_code TYPEAS s_string + 输入.start_point_code TYPEAS f_string + 输入.end_point_code TYPEAS f_string [临时表] diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index f81b57f213b28de0f304067c92f76ea7812c3405..a6880b1a35d135e9e6778818cdfc47ee7c11fd44 100644 GIT binary patch delta 9327 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"RV)-G{N( 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 养生区A + * 2.豪凯线 --> 成品区 */ String next_point_code = ""; if (StrUtil.equals(jsonStartRegion.getString("region_code"),RegionTypeEnum.GJQY.getCode())) {