From f19948e7ee1d5048e9cd6af866447b56fae9f43e Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 14 Aug 2023 10:12:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20mes=E4=B8=8B=E5=8F=91=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/autotask/MaterialSynchronization.java | 6 ++ .../wms/ext/mes/rest/MesToWmsController.java | 8 +++ .../wms/ext/mes/service/MesToWmsService.java | 2 + .../mes/service/impl/MesToWmsServiceImpl.java | 65 ++++++++++++++++--- .../wms/ext/wql/QUERY_MES_FEEDBACK_RECORD.wql | 4 +- .../callMaterial/YqxCallMaterialTask.java | 23 ++++--- .../sendMaterial/CpSendMaterialTask.java | 2 +- .../sendMaterial/GjxSendMaterialTask.java | 12 +--- .../src/views/wms/pdm/workerorder/index.vue | 1 + 9 files changed, 91 insertions(+), 32 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/autotask/MaterialSynchronization.java diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/autotask/MaterialSynchronization.java b/lms/nladmin-system/src/main/java/org/nl/wms/autotask/MaterialSynchronization.java new file mode 100644 index 0000000..519dbe9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/autotask/MaterialSynchronization.java @@ -0,0 +1,6 @@ +package org.nl.wms.autotask;/** +* @Author: lyd +* @Description: +* @Date: 2023/8/2 +*/public class MaterialSynchronization { +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToWmsController.java index baecf88..e039b54 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToWmsController.java @@ -98,4 +98,12 @@ public class MesToWmsController { return new ResponseEntity<>(mesToWmsService.inboundReport(param), HttpStatus.OK); } + @PostMapping("/updateOrder") + @Log("修改工单") + @ApiOperation("修改工单") + @SaIgnore + public ResponseEntity updateOrder(@RequestBody JSONObject param) { + return new ResponseEntity<>(mesToWmsService.updateOrder(param), HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java index 53a6d67..fb1804a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java @@ -29,4 +29,6 @@ public interface MesToWmsService { JSONObject outboundReport(JSONObject param); JSONObject inboundReport(JSONObject param); + + JSONObject updateOrder(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java index e78b2e0..5222d49 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java @@ -35,6 +35,9 @@ public class MesToWmsServiceImpl implements MesToWmsService { public JSONObject issueWorkOrderForMes(JSONObject param) { MDC.put("log_file_type", "MES下发工单"); log.info("mes传来工单信息:" + param); + JSONObject result = new JSONObject(); + result.put("status", 200); + result.put("message", "操作成功"); WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder"); WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device"); WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase"); @@ -50,6 +53,26 @@ public class MesToWmsServiceImpl implements MesToWmsService { if (ObjectUtil.isEmpty(deviceCode)) { throw new BadRequestException("设备编码错误!"); } + // 找到当前工单的执行中的,不做处理 + JSONObject jsonObject = workOrderTab.query("workorder_code = '" + + param.getString("workorder_code") + "' AND order_status = '3' AND is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonObject)) { + return result; + } + // 查找被删除的工单 + JSONObject deleteOrder = workOrderTab.query("workorder_code = '" + param.getString("workorder_code") + "' " + + "AND is_delete = '1'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(deleteOrder)) { + deleteOrder.put("is_delete", "0"); + deleteOrder.put("order_status", "3"); + deleteOrder.put("create_id", "3"); + deleteOrder.put("create_name", "MES系统"); + workOrderTab.update(deleteOrder); + return result; + } + // 查找暂停/未生产/下发的工单 + JSONObject stopOrder = workOrderTab.query("workorder_code = '" + + param.getString("workorder_code") + "' AND order_status in ('4','1','2')").uniqueResult(0); param.put("plan_qty", param.getString("qty")); param.put("order_status", "3"); param.put("material_id", materialCode.getString("material_id")); @@ -121,22 +144,29 @@ public class MesToWmsServiceImpl implements MesToWmsService { workOrderCacheTab.insert(param); } } else { // 不是油漆线直接存入 + // 找正在生产的工单 JSONObject orderObjs = workOrderTab - .query("device_code = '" + deviceCode.getString("device_code") + "' AND order_status <> '5'") + .query("device_code = '" + deviceCode.getString("device_code") + "' AND order_status = '3'") .uniqueResult(0); if (ObjectUtil.isNotEmpty(orderObjs)) { - // 多个工单就完成 - orderObjs.put("order_status", "5"); + // 多个工单就暂停 + orderObjs.put("order_status", "4"); workOrderTab.update(orderObjs); } - param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr()); - param.put("device_id", deviceCode.getString("device_id")); - param.put("device_code", deviceCode.getString("device_code")); - workOrderTab.insert(param); + if (ObjectUtil.isEmpty(stopOrder)) { + param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr()); + param.put("device_id", deviceCode.getString("device_id")); + param.put("device_code", deviceCode.getString("device_code")); + workOrderTab.insert(param); + } else { // 上一个暂停工单 + // 否则就吧这个工单开启 + stopOrder.put("create_id", "3"); + stopOrder.put("create_name", "MES系统"); + stopOrder.put("order_status", "3"); + workOrderTab.update(stopOrder); + } + } - JSONObject result = new JSONObject(); - result.put("status", 200); - result.put("message", "操作成功"); MDC.remove("log_file_type"); return result; } @@ -353,4 +383,19 @@ public class MesToWmsServiceImpl implements MesToWmsService { MDC.remove("log_file_type"); return result; } + + @Override + public JSONObject updateOrder(JSONObject param) { + MDC.put("log_file_type", "MES修改工单载具类型"); + log.info("修改参数:{}", param); + WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder"); + JSONObject jsonObject = workOrderTab.query("workorder_code = '" + param.getString("workorder_code") + "'").uniqueResult(0); + jsonObject.put("vehicle_type", param.getString("vehicle_type")); + workOrderTab.update(jsonObject); + JSONObject result = new JSONObject(); + result.put("status", 200); + result.put("message", "操作成功"); + MDC.remove("log_file_type"); + return result; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/QUERY_MES_FEEDBACK_RECORD.wql b/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/QUERY_MES_FEEDBACK_RECORD.wql index 329b7da..91dd979 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/QUERY_MES_FEEDBACK_RECORD.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/wql/QUERY_MES_FEEDBACK_RECORD.wql @@ -40,7 +40,7 @@ # 3、业务主过程 # ########################################## IF 输入.flag = "1" - QUERY + PAGEQUERY SELECT * FROM @@ -54,5 +54,5 @@ is_success = 输入.is_success ENDOPTION ENDSELECT - ENDQUERY + ENDPAGEQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java index 1f1d739..47d9028 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java @@ -79,11 +79,11 @@ public class YqxCallMaterialTask extends AbstractAcsTask { if (StrUtil.equals(status, "2")) { //完成后 // 通知mes - feedback.put("fscanserialid001", taskObj.getString("task_code")); - feedback.put("flocationid979number", taskObj.getString("point_code1")); - feedback.put("flpn979", material_point.getString("vehicle_code")); - feedback.put("fstoragequantity979", material_point.getString("ivt_qty")); - wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02"); +// feedback.put("fscanserialid001", taskObj.getString("task_code")); +// feedback.put("flocationid979number", taskObj.getString("point_code1")); +// feedback.put("flpn979", material_point.getString("vehicle_code")); +// feedback.put("fstoragequantity979", material_point.getString("ivt_qty")); +// wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02"); // 物料点位解锁 并设置空位 material_point.put("lock_type", "1"); material_point.put("point_status", "1"); @@ -272,17 +272,22 @@ public class YqxCallMaterialTask extends AbstractAcsTask { } //判断当前点是否有未完成的任务 JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务"); + if (ObjectUtil.isNotEmpty(taskObj)) { + throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务"); + } String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); - if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); + if (ObjectUtil.isEmpty(workOrderObj)) { + throw new BadRequestException("该设备当前未生产或者已删除"); + } + if (ObjectUtil.isEmpty(material_code)) { + material_code = workOrderObj.getString("ext_id"); + } JSONObject object = materialTab.query("material_code = '" + material_code + "'").uniqueResult(0); String material_id = workOrderObj.getString("material_id"); if (ObjectUtil.isNotEmpty(object)) { material_id = object.getString("material_id"); } - - SchTaskDto dto = SchTaskDto.builder() .task_id(IdUtil.getLongId()) .task_code(task_code) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java index 3ca35fb..976d99d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java @@ -229,7 +229,7 @@ public class CpSendMaterialTask extends AbstractAcsTask { .task_id(IdUtil.getLongId()) .task_code(task_code) .task_type("task_type") - .task_name("豪凯线满料") + .task_name("成品") .material_qty(qty) .task_status(TaskStatusEnum.SURE_START.getCode()) .point_code1(point_code1) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java index df80b23..a5ac441 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java @@ -22,17 +22,12 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.utils.PointUpdateUtil; import org.nl.wms.util.IdUtil; -import org.nl.wms.util.RedissonUtils; import org.slf4j.MDC; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantLock; /** @@ -87,14 +82,11 @@ public class GjxSendMaterialTask extends AbstractAcsTask { } if (StrUtil.equals(status, "2")) { - //生产工单表【PDM_BD_WorkOrder】 - WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); //完成后入库 String point_code2 = taskObj.getString("point_code2"); JSONObject requestObj = task.getJSONObject("request_param"); JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); //工单标识 - JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workOrderId + "'").uniqueResult(0); JSONObject order = orderTab.query("workorder_id = '" + workOrderId + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(endPoint)) { @@ -112,8 +104,8 @@ public class GjxSendMaterialTask extends AbstractAcsTask { endPoint.put("instorage_time", DateUtil.now()); endPoint.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); endPoint.put("ivt_qty", requestObj.getString("qty")); - endPoint.put("standing_time", workorderObj.getString("standing_time")); - endPoint.put("container_id", workorderObj.getString("container_id")); + endPoint.put("standing_time", order.getString("standing_time")); + endPoint.put("container_id", order.getString("container_id")); endPoint.put("vehicle_code", taskObj.getString("vehicle_code")); endPoint.put("vehicle_type", taskObj.getString("vehicle_type")); endPoint.put("update_time", DateUtil.now()); diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index 6807111..e874aa1 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -307,6 +307,7 @@