From 4ff5944d5de6bc8001204bb89e782c5345549af9 Mon Sep 17 00:00:00 2001 From: ldj_willow Date: Thu, 27 Oct 2022 10:32:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=A8=A1=E5=9D=97=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/nladmin-system/pom.xml | 48 ++- .../wms/ext/acs/rest/AcsToWmsController.java | 10 + .../wms/ext/acs/service/AcsToWmsService.java | 12 +- .../acs/service/impl/AcsToWmsServiceImpl.java | 216 ++++------- .../acs/service/impl/WmsToAcsServiceImpl.java | 2 +- .../main/java/org/nl/wms/log/LokiLogType.java | 4 +- .../mps/service/impl/BakingServiceImpl.java | 21 +- .../mps/service/impl/RawFoilServiceImpl.java | 10 +- .../nl/wms/sch/{manage => }/AcsTaskDto.java | 4 +- .../org/nl/wms/sch/{manage => }/AcsUtil.java | 6 +- .../main/java/org/nl/wms/sch/SchTaskDto.java | 201 ++++++++++ .../java/org/nl/wms/sch/TaskTypeEnum.java | 49 --- .../nl/wms/sch/manage/AbstractAcsTask.java | 106 +++-- .../org/nl/wms/sch/manage/AutoCreateTask.java | 120 ++++++ .../org/nl/wms/sch/manage/RegionTypeEnum.java | 43 --- .../org/nl/wms/sch/manage/TaskStatusEnum.java | 17 +- .../org/nl/wms/sch/rest/PointController.java | 38 +- .../org/nl/wms/sch/rest/RegionController.java | 29 +- .../org/nl/wms/sch/rest/TaskController.java | 49 +-- .../org/nl/wms/sch/{service/wql => }/sch.xls | Bin 173056 -> 178688 bytes .../org/nl/wms/sch/service/PointService.java | 13 +- .../org/nl/wms/sch/service/RegionService.java | 16 +- .../org/nl/wms/sch/service/TaskService.java | 58 +-- .../org/nl/wms/sch/service/dto/PointDto.java | 145 +++---- .../org/nl/wms/sch/service/dto/RegionDto.java | 65 +--- .../org/nl/wms/sch/service/dto/TaskDto.java | 90 +++-- .../nl/wms/sch/service/dto/TaskQueryDto.java | 16 +- .../sch/service/impl/PointServiceImpl.java | 130 +++++-- .../sch/service/impl/RegionServiceImpl.java | 66 +++- .../wms/sch/service/impl/TaskServiceImpl.java | 141 ++----- .../wms/sch/service/wql/QSCH_BASE_POINT.wql | 38 +- .../nl/wms/sch/service/wql/QSCH_TASK_01.wql | 24 +- .../nl/wms/sch/tasks/BookTwoConfirmTask.java | 50 ++- .../org/nl/wms/sch/tasks/CallEmpReelTask.java | 44 ++- .../org/nl/wms/sch/tasks/CutConveyorTask.java | 37 +- .../org/nl/wms/sch/tasks/CutTrussTask.java | 34 +- .../org/nl/wms/sch/tasks/InCoolIvtTask.java | 35 +- .../java/org/nl/wms/sch/tasks/InHotTask.java | 38 +- .../java/org/nl/wms/sch/tasks/InTask.java | 82 ++-- .../java/org/nl/wms/sch/tasks/OutHotTask.java | 35 +- .../impl/RawAssistIStorServiceImpl.java | 28 +- .../src/main/resources/logback-spring.xml | 91 +++-- .../src/views/wms/sch/point/index.vue | 361 +++++++++--------- .../src/views/wms/sch/point/point.js | 26 +- .../src/views/wms/sch/region/index.vue | 71 +--- .../src/views/wms/sch/region/region.js | 18 +- .../src/views/wms/sch/task/index.vue | 232 +++++------ 47 files changed, 1639 insertions(+), 1330 deletions(-) rename lms/nladmin-system/src/main/java/org/nl/wms/sch/{manage => }/AcsTaskDto.java (91%) rename lms/nladmin-system/src/main/java/org/nl/wms/sch/{manage => }/AcsUtil.java (93%) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java rename lms/nladmin-system/src/main/java/org/nl/wms/sch/{service/wql => }/sch.xls (65%) diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index 6b55ef17b..dd384c42a 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent 2.2.10.RELEASE - + 4.0.0 @@ -14,7 +14,7 @@ 核心模块 - UTF-8 + UTF-8 UTF-8 1.8 1.16 @@ -32,7 +32,13 @@ - + + org.reflections + reflections + 0.9.10 + + + cn.hutool hutool-all @@ -58,10 +64,10 @@ - - - - + + + + cn.dev33 @@ -296,10 +302,10 @@ - - org.springframework.boot - spring-boot-starter-websocket - + + org.springframework.boot + spring-boot-starter-websocket + @@ -325,16 +331,16 @@ - - ch.ethz.ganymed - ganymed-ssh2 - build210 - - - com.jcraft - jsch - 0.1.55 - + + ch.ethz.ganymed + ganymed-ssh2 + build210 + + + com.jcraft + jsch + 0.1.55 + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 734c23226..0fe289f57 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -2,6 +2,7 @@ package org.nl.wms.ext.acs.rest; +import cn.dev33.satoken.annotation.SaCheckPermission; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -45,7 +46,16 @@ public class AcsToWmsController { @PostMapping("/apply") @Log("申请任务") @ApiOperation("申请任务") + @SaCheckPermission("menu:list") public ResponseEntity apply(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK); } + + @PostMapping("/againApply") + @Log("二次申请任务") + @ApiOperation("二次申请任务") + @SaCheckPermission("menu:list") + public ResponseEntity againApply(@RequestBody String task_id) { + return new ResponseEntity<>(acsToWmsService.againApply(task_id), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index a82f446d2..17e953807 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -11,12 +11,21 @@ public interface AcsToWmsService { * ACS客户端--->WMS服务端 * ACS向WMS反馈任务状态 * - * @param string 条件 + * @param string ACS反馈的任务数组 * @return Map */ Map receiveTaskStatusAcs(String string); + + /** + * + * @param task_id: 任务标识 + * @return 二次申请的点位 + */ + String againApply(String task_id); + + /** * ACS客户端--->WMS服务端 * ACS向WMS反馈点位状态 @@ -41,4 +50,5 @@ public interface AcsToWmsService { * @return JSONObject */ JSONObject apply(JSONObject whereJson); + } 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 51016f1e8..6783bae44 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 @@ -1,24 +1,18 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.AcsToWmsService; -import org.nl.wms.pdm.service.DeviceService; -import org.nl.wms.pdm.service.dto.DeviceDto; +import org.nl.wms.log.LokiLog; +import org.nl.wms.log.LokiLogType; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,13 +28,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final TaskService taskService; /** - * task_uuid:任务标识 + * task_id:任务标识 * task_code:任务编码 * task_status:1:执行中,2:完成 ,3:acs取消 * * @param string 条件 * @returnzss */ + @LokiLog(type = LokiLogType.ACS_TO_LMS) @Override public Map receiveTaskStatusAcs(String string) { JSONArray array = JSONArray.parseArray(string); @@ -48,9 +43,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONArray errArr = new JSONArray(); for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); - String task_uuid = row.getString("task_id"); - TaskDto taskDto = taskService.findById(task_uuid); - String processing_class = taskDto.getHandle_class(); + String task_id = row.getString("task_id"); + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + // 任务处理类 + String processing_class = taskObj.getString("handle_class"); //1:执行中,2:完成 ,3:acs取消 String acs_task_status = row.getString("task_status"); String message = ""; @@ -82,7 +78,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.info("任务状态更新失败:{}", message); JSONObject json = new JSONObject(); - json.put("task_uuid", task_uuid); + json.put("task_id", task_id); json.put("message", message); errArr.add(json); @@ -92,10 +88,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.info("任务状态更新失败:{}", message); JSONObject json = new JSONObject(); - json.put("task_uuid", task_uuid); + json.put("task_id", task_id); json.put("message", message); errArr.add(json); - } } @@ -107,166 +102,87 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + @LokiLog(type = LokiLogType.ACS_TO_LMS) + @Override + public String againApply(String task_id) { + log.info("输入参数:" + task_id); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonTask)) throw new BadRequestException("任务已删除或已完成!"); + + String point_code = ""; + String message = ""; + try { + Class clz = Class.forName(jsonTask.getString("handle_class")); + Object obj = clz.newInstance(); + Method m = obj.getClass().getDeclaredMethod("againApply", String.class); + point_code = (String) m.invoke(obj, task_id); + } catch (Exception e) { + e.printStackTrace(); + message = e.getMessage(); + log.info("二次申请失败:{}", message); + } + log.info("输出参数:" + point_code); + return point_code; + } + + @LokiLog(type = LokiLogType.ACS_TO_LMS) @Override public Map receivePointStatusFromAcs(Map jsonObject) { return null; } + @LokiLog(type = LokiLogType.ACS_TO_LMS) @Override public Map orderFinish(String string) { JSONObject orderJson = JSONObject.parseObject(string); String ext_order_id = orderJson.getString("ext_order_id"); // JSONArray array = JSONArray.parseArray(string); String now = DateUtil.now(); - WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); + WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER"); JSONObject map = new JSONObject(); - map.put("produceorder_id", ext_order_id); + map.put("workorder_id", ext_order_id); map.put("order_status", "04"); map.put("update_optid", 1111111111); map.put("device_id", ""); map.put("update_optname", "acs"); map.put("update_time", now); map.put("realproduceend_date", now); - wo.update(map, "produceorder_id = '" + ext_order_id + "'"); + wo.update(map, "workorder_id = '" + ext_order_id + "'"); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); return result; } + @LokiLog(type = LokiLogType.ACS_TO_LMS) @Override - @Transactional - public JSONObject apply(JSONObject whereJson) { + @Transactional(rollbackFor = Exception.class) + public JSONObject apply(JSONObject whereJson) { + String type = whereJson.getString("type"); + String point_code = whereJson.getString("point_code"); + String vehicle_type = whereJson.getString("vehicle_type"); + String vehicle_code = whereJson.getString("vehicle_code"); + //载具数量 + String vehicle_num = whereJson.getString("vehicle_num"); + //物料数量 + String material_num = whereJson.getString("material_num"); + + if (ObjectUtil.isEmpty(type)) throw new BadRequestException("类型不能为空"); + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空"); + + /* + * 根据type判断是什么业务类型: + * 1.共挤线申请空盘 + * 2.共挤线满托入库 + * 3.油漆线申请空盘 + * 4.油漆线申请物料 + * 5.油漆线空盘入库 + * 6.一楼空盘入库 (有载具号) + * 7.油漆线->输送线(油漆线满料) + * 8.豪凯自动线下料入库 + */ + return null; } - - @Transactional - public void createEmp(JSONObject json) { - String vehicle_qty = json.getString("vehicle_qty"); - String task_id = json.getString("task_id"); - String io_type = json.getString("io_type"); - - WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 - - 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("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); - jsonEmp.put("io_type", io_type); - jsonEmp.put("bill_status", "20"); - jsonEmp.put("vehicle_qty", vehicle_qty); - jsonEmp.put("start_point_code", jsonTask.getString("start_point_code")); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); - jsonEmp.put("start_region_id", start_region_id); - jsonEmp.put("next_point_code", jsonTask.getString("next_point_code")); - Long next_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("next_point_code")).getRegion_id(); - jsonEmp.put("end_region_id", next_region_id); - jsonEmp.put("task_uuid", task_id); - jsonEmp.put("create_id", SecurityUtils.getCurrentUserId()); - jsonEmp.put("create_name", SecurityUtils.getCurrentNickName()); - jsonEmp.put("create_time", DateUtil.now()); - empTab.insert(jsonEmp); - } - - @Transactional - public JSONObject inCreateRegion(JSONObject json) { - String start_point_code = json.getString("start_point_code"); - String next_point_code = json.getString("next_point_code"); - String qty = json.getString("qty"); - Long task_id = json.getLongValue("task_id"); - String io_type = json.getString("io_type"); - - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); - WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - 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("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("_")); - - DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); - DeviceDto deviceDto = deviceBean.findByCode(device_code); - if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); - 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); - JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_id")); - - 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); - 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("create_mode", "02"); - jsonRegion.put("task_id", task_id); - jsonRegion.put("create_id", SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name", SecurityUtils.getCurrentNickName()); - jsonRegion.put("create_time", DateUtil.now()); - regionTab.insert(jsonRegion); - - JSONObject resuft = new JSONObject(); - resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); - resuft.put("material_id", jsonRegion.getString("material_id")); - resuft.put("create_mode", jsonRegion.getString("create_mode")); - return resuft; - } - - @Transactional - public JSONObject outCreateRegion(JSONObject json) { - String next_point_code = json.getString("next_point_code"); - String io_type = json.getString("io_type"); - - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); - WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - 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"); - // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 - String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); - - DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); - DeviceDto deviceDto = deviceBean.findByCode(device_code); - if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); - 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 - JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id", jsonMater.getString("base_unit_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("create_mode", "02"); - jsonRegion.put("create_id", SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name", SecurityUtils.getCurrentNickName()); - 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")); - return resuft; - } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 90ba30508..9c28278bb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.wms.ext.acs.service.WmsToAcsService; -import org.nl.wms.sch.manage.AcsUtil; +import org.nl.wms.sch.AcsUtil; import org.springframework.stereotype.Service; import java.util.Map; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java index 76e4693a8..466f2b1f3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java @@ -12,7 +12,9 @@ public enum LokiLogType { LMS_TO_CRM("LMS请求CRM"), CRM_TO_LMS("CRM请求LMS"), LMS_TO_SAP("LMS请求SAP"), - SAP_TO_LMS("SAP请求LMS"); + SAP_TO_LMS("SAP请求LMS"), + LMS_TO_ACS("LMS请求ACS"), + ACS_TO_LMS("ACS请求LMS"); private String desc; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java index cac26bea5..8cb752de4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -14,7 +14,6 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.pda.mps.service.BakingService; -import org.nl.wms.sch.manage.RegionTypeEnum; import org.nl.wms.sch.tasks.InCoolIvtTask; import org.nl.wms.sch.tasks.InHotTask; import org.nl.wms.sch.tasks.OutHotTask; @@ -101,13 +100,13 @@ public class BakingServiceImpl implements BakingService { this.createHotDtl(hotParam); // 4.下发任务 - JSONObject jsonObject = inHotTask.renotifyAcs(task_id); + /*JSONObject jsonObject = inHotTask.renotifyAcs(task_id); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); jsonTask.put("task_status", "05"); taskTab.update(jsonTask); - } + }*/ } else { /* * 冷却区入烘箱 @@ -122,7 +121,7 @@ public class BakingServiceImpl implements BakingService { String point_location = jsonCoolIvt.getString("point_location"); // 位置 String reging_id = ""; - switch (product_area) { + /*switch (product_area) { case "A": reging_id = RegionTypeEnum.A_HKZC.getId(); break; @@ -135,7 +134,7 @@ public class BakingServiceImpl implements BakingService { case "D": reging_id = RegionTypeEnum.D_HKZC.getId(); break; - } + }*/ JSONObject map = new JSONObject(); map.put("flag", "1"); map.put("reging_id", reging_id); @@ -197,7 +196,7 @@ public class BakingServiceImpl implements BakingService { this.createHotDtl(hotParam); // 5.下发任务 - JSONObject jsonObject = inHotTask.renotifyAcs(task_id); + /* JSONObject jsonObject = inHotTask.renotifyAcs(task_id); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); @@ -207,7 +206,7 @@ public class BakingServiceImpl implements BakingService { // 更新烘烤区主表状态为执行中 JSONObject jsonHotMst = hosReMstTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0); jsonHotMst.put("bill_status", "40"); - } + }*/ } } else if (StrUtil.equals(option, "2")) { // 出箱 @@ -218,7 +217,7 @@ public class BakingServiceImpl implements BakingService { // 1.查询暂存位有没有空位 String product_area = jsonHotIvt.getString("product_area"); String reging_id = ""; - switch (product_area) { + /* switch (product_area) { case "A": reging_id = RegionTypeEnum.A_HKZC.getId(); break; @@ -231,7 +230,7 @@ public class BakingServiceImpl implements BakingService { case "D": reging_id = RegionTypeEnum.D_HKZC.getId(); break; - } + }*/ JSONObject map = new JSONObject(); map.put("flag", "1"); map.put("reging_id", reging_id); @@ -275,7 +274,7 @@ public class BakingServiceImpl implements BakingService { this.createHotDtl(hotParam); // 5.下发任务 - JSONObject jsonObject = outHotTask.renotifyAcs(task_id); + JSONObject jsonObject = outHotTask.immediateNotifyAcs(); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); @@ -339,7 +338,7 @@ public class BakingServiceImpl implements BakingService { this.createHotDtl(hotParam); // 5.下发任务 - JSONObject jsonObject = inCoolIvtTask.renotifyAcs(task_id); + JSONObject jsonObject = inCoolIvtTask.immediateNotifyAcs(); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 0d96c8ffb..bd0a7a229 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -18,8 +18,6 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.pda.mps.service.RawFoilService; import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; -import org.nl.wms.sch.tasks.BookTwoConfirmTask; import org.nl.wms.sch.tasks.CallEmpReelTask; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -194,13 +192,13 @@ public class RawFoilServiceImpl implements RawFoilService { rawTab.update(jsonRaw); // 下发任务 - JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_id); + /* JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_id); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); jsonTask.put("task_status", "05"); taskTab.update(jsonTask); - } + }*/ JSONObject jo = new JSONObject(); jo.put("message", "操作成功!"); return jo; @@ -300,7 +298,7 @@ public class RawFoilServiceImpl implements RawFoilService { rawTab.update(jsonRaw); // 下发任务入库任务 - CallEmpReelTask callEmpReelTask = new CallEmpReelTask(); + /*CallEmpReelTask callEmpReelTask = new CallEmpReelTask(); JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_jo.getString("task_id")); if (StrUtil.equals(jsonObject.getString("status"), "200")) { // 成功返回 更新任务状态 @@ -313,7 +311,7 @@ public class RawFoilServiceImpl implements RawFoilService { jsonRegion.put("update_optname", currentUsername); jsonRegion.put("update_time", DateUtil.now()); regionTab.update(jsonRegion); - } + }*/ JSONObject jo = new JSONObject(); jo.put("message", "操作成功!"); return jo; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java similarity index 91% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java index cc7da0ade..fc324b5ea 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsTaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java @@ -1,8 +1,10 @@ -package org.nl.wms.sch.manage; +package org.nl.wms.sch; +import lombok.Builder; import lombok.Data; @Data +@Builder public class AcsTaskDto { //任务标识 private String task_id; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java similarity index 93% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index 8f78dce4b..c123e8a67 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AcsUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -1,5 +1,5 @@ -package org.nl.wms.sch.manage; +package org.nl.wms.sch; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class AcsUtil { public static JSONObject notifyAcs(String api, JSONArray list) { //判断是否连接ACS系统 - String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); + String isConnect = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("is_connect_acs").getValue(); JSONObject result = new JSONObject(); if (StrUtil.equals("0", isConnect)) { result.put("status", HttpStatus.OK.value()); @@ -25,7 +25,7 @@ public class AcsUtil { } //ACS地址:127.0.0.1:8010 - String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("ACS_URL").getValue(); + String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("acs_url").getValue(); String url = acsUrl + api; try { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java new file mode 100644 index 000000000..313d52df6 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java @@ -0,0 +1,201 @@ +package org.nl.wms.sch; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ldjun + * @description / + * @date 2022-10-22 + **/ +@Data +@Builder +public class SchTaskDto implements Serializable { + + /** 任务标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long task_id; + + /** + * 任务编码 + */ + private String task_code; + /** + * 任务名称 + */ + private String task_name; + + /** + * 任务类型 + */ + private String task_type; + + /** + * 任务状态 + */ + private String task_status; + + /** + * 点位1 + */ + private String point_code1; + + /** + * 点位2 + */ + private String point_code2; + + /** + * 点位3 + */ + private String point_code3; + + /** + * 点位4 + */ + private String point_code4; + + /** + * 物料详细信息,满料请求,取工单标识,组盘时候取组盘表 + */ + private Long material_info_id; + + /** + * 物料标识 + */ + private Long material_id; + + /** + * 载具类型 + */ + private String vehicle_type; + + /** + * 载具数量 + */ + private Integer vehicle_qty; + + /** + * 载具编码 + */ + private String vehicle_code; + + /** + * 优先级 + */ + private String priority; + + /** + * 处理类 + */ + private String handle_class; + + /** + * 任务组标识 + */ + private Long task_group_id; + + /** + * 任务顺序号 + */ + private Integer sort_seq; + //物料数量 + private String material_qty; + + /** + * 任务完成类型 + */ + private String finished_type; + + /** + * acs任务类型 + */ + private String acs_task_type; + + /** + * 业务表表名 + */ + private String table_name; + + /** + * 业务表表名主键字段 + */ + private String table_fk; + + /** + * 业务表表名主键值 + */ + private Long table_fk_id; + + /** + * 备注 + */ + private String remark; + + /** + * 车号 + */ + private String car_no; + + /** + * 是否自动下发 + */ + private String is_auto_issue; + + /** + * 生成任务的请求参数 + */ + private String request_param; + + /** + * 下发任务的请求参数 + */ + private String response_param; + + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 创建人 + */ + private Long create_id; + + /** + * 创建人 + */ + private String create_name; + /** + * 创建方式 + */ + private String create_mode; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private Long update_optid; + + /** + * 修改人 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java deleted file mode 100644 index bdada08d7..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/TaskTypeEnum.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.nl.wms.sch; - -/** - * 任务状态枚举 - */ -public enum TaskTypeEnum { - //生箔任务 - SB_QKFM("sb_qkfm", "生箔取空放满","生箔取空放满"), - SB_QK("sb_qk", "生箔取空","生箔取空"), - SB_FM("sb_qk", "生箔放满","生箔放满"), - - //分切上料任务 - FQ_SL_QMFK("fq_sl_qmfk", "分切取满放空","分切放满"), - FQ_SL_FM("fq_sl_fm", "分切放满","分切初始化"), - FQ_SL_QK("fq_sl_qk", "分切取满放空","分切放满"), - - //分切下料任务 - FQ_XL_CZ("FQ_XL_QK", "子卷出站","子卷出站4个点"), - - //烘箱 - //入烘箱:3个点 - //输送任务。 - HX_R_QMFMFM("hx_r_qmfmfm", "入烘箱","入烘箱3个点"), - HX_C_SS("hx_c_ss", "出烘箱输送线","出烘箱输送线"), - HX_C_AGV("hx_c_agv", "出烘箱AGV","出烘箱AGV"); - - - - - - private String code; - private String name; - private String description; - - public String getCode() { - return code; - } - - public String getName() { - return name; - } - - TaskTypeEnum(String code, String name,String description) { - this.code = code; - this.name = name; - this.description = description; - } - -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index 55edd3da7..d4c3d0190 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -1,25 +1,24 @@ package org.nl.wms.sch.manage; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.AcsUtil; -import java.util.ArrayList; import java.util.List; /** * Title: AbstractAcsTask.java Description:任务抽象类 *

- * Task状态:01生成 ,02:确定起点,03、确定终点,04、起点和终点都确认,05:下发,可以下发, 06、执行中 07、完成 - * 完成方式:01自动,02:wcs删除,03、wms删除,04、发给wcs失败自动删除 + * Task状态:1生成 ,2:确定起点,3、确定终点,4、起点和终点都确认,5:下发,可以下发, 6、执行中 7、完成 + * 完成方式:1自动,2:wcs删除,3、wms删除,4、发给wcs失败自动删除 * * @author ldjun * @created 2020年6月12日 下午5:53:28 */ public abstract class AbstractAcsTask { - - /** * @discription 在如果任务无法形成会一直定时刷新判断 * @author ldjun @@ -37,29 +36,11 @@ public abstract class AbstractAcsTask { * * @return */ - public List addTask() { - //任务基础表【sch_base_task】 - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONArray tasks = taskTab.query("handle_class = '" + this.getClass().getName() + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); - List arr = new ArrayList<>(); - for (int i = 0, j = tasks.size(); i < j; i++) { - JSONObject json = tasks.getJSONObject(i); - AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setTask_id(json.getString("task_id")); - taskDto.setTask_code(json.getString("task_code")); - taskDto.setTask_type("1"); - taskDto.setRoute_plan_code("normal"); - taskDto.setStart_device_code(json.getString("start_point_code")); - taskDto.setNext_device_code(json.getString("next_point_code")); - taskDto.setVehicle_code(json.getString("vehicle_code")); - arr.add(taskDto); - } - return arr; - } + public abstract List addTask(); /** * @param taskObj 代表一条任务对象 - * @param status 代表wcs任务完成状态: //1:执行中,2:完成 ,3:acs取消 + * @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成 * @return * @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息 * @author ldjun @@ -74,7 +55,9 @@ public abstract class AbstractAcsTask { * @created 2020年6月12日 下午6:01:30 */ - public abstract void findStartPoint(); + public void findStartPoint() { + + } /** * @return @@ -82,7 +65,11 @@ public abstract class AbstractAcsTask { * @author ldjun * @created 2020年6月12日 下午6:01:06 */ - public abstract void findNextPoint(); + public void findNextPoint() { + + } + + ; /** * @param form 创建任务需要的参数 @@ -97,35 +84,40 @@ public abstract class AbstractAcsTask { } - /** * @return WCS的任务集合 - * @discription 重新下发给wcs任务 + * @discription 下发给wcs任务 * @author ldjun * @created 2020年6月12日 下午5:52:28 */ - public JSONObject renotifyAcs(String task_id) { - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - JSONArray jsonArray = new JSONArray(); - JSONArray arr = taskTab.query("task_id = '" + task_id + "'").getResultJSONArray(0); - for (int i = 0, j = arr.size(); i < j; i++) { - JSONObject json = arr.getJSONObject(i); - AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setTask_id(json.getString("task_id")); - taskDto.setTask_code(json.getString("task_code")); - taskDto.setStart_device_code(json.getString("start_point_code")); - taskDto.setNext_device_code(json.getString("next_point_code")); - taskDto.setPriority("1"); - taskDto.setVehicle_code(json.getString("vehicle_code")); - taskDto.setTask_type("1"); - taskDto.setRoute_plan_code("normal"); + public JSONObject notifyAcs(String task_id) { + return AcsUtil.notifyAcs("api/wms/task", null); + } - jsonArray.add(JSONObject.parse(JSON.toJSONString(taskDto))); - - } + /** + * @return WCS的任务集合 + * @discription 再次下发给wcs任务 + * @author ldjun + * @created 2020年6月12日 下午5:52:28 + */ + public JSONObject notifyAcs(JSONArray jsonArray) { return AcsUtil.notifyAcs("api/wms/task", jsonArray); } + /** + * + */ + public JSONObject immediateNotifyAcs() { + List taskList = this.schedule(); + if (ObjectUtil.isNotEmpty(taskList)) { + + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); + return AcsUtil.notifyAcs("api/wms/task", arr); + } + return null; + + } + /** * @param task_id 任务标识 * @return @@ -136,20 +128,18 @@ public abstract class AbstractAcsTask { public abstract void forceFinish(String task_id); /** - * @param task_id - * @return - * @discription 任务搬回原起点。 - * @author ldjun - * @created 2020年6月22日 下午8:40:58 - */ - public abstract void pullBack(String task_id); - - /** - * 取消任务 + * 取消任务,货物搬回原点 * * @param task_id */ public abstract void cancel(String task_id); + /** + * @param task_id: 任务标识 + * @return 二次申请的点位 + */ + public String againApply(String task_id) { + return null; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java new file mode 100644 index 000000000..d3d4a4fba --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoCreateTask.java @@ -0,0 +1,120 @@ +package org.nl.wms.sch.manage; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.AcsUtil; +import org.reflections.Reflections; +import org.springframework.stereotype.Component; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +@Slf4j +@Component +public class AutoCreateTask { + // 下发acs的任务集合 + private List taskList = null; + private Set> subTypes = null; + + WQLObject taskTab = null; + + @SneakyThrows + public void run() { + if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) { + Reflections reflections = new Reflections("org.nl.wms.sch.tasks"); + subTypes = reflections.getSubTypesOf(AbstractAcsTask.class); + } + if (ObjectUtil.isNull(taskTab)) taskTab = WQLObject.getWQLObject("sch_base_task"); + taskList = new ArrayList<>(); + + this.doExecute(); + } + + + private void doExecute() { + subTypes.forEach(clz -> { + // 调用AbstractAcsTask类的每个子类的schedule()方法 + try { + Object obj = clz.newInstance(); + //Method m = obj.getClass().getDeclaredMethod("schedule"); + Method m = obj.getClass().getMethod("schedule"); + List tasks = (List) m.invoke(obj); + if (ObjectUtil.isNotEmpty(tasks)) { + taskList.addAll(tasks); + } + } catch (InvocationTargetException e) { + e.printStackTrace(); + log.info("定时器执行失败:{}", e.getTargetException().getMessage()); + } catch (Exception e) { + e.printStackTrace(); + log.info("定时器执行失败:{}", e.getMessage()); + } + + }); + if (ObjectUtil.isEmpty(taskList)) { + return; + } + + JSONArray arr = new JSONArray(); + taskList.forEach(item -> { + JSONObject param = JSONObject.parseObject(JSON.toJSONString(item)); + arr.add(param); + }); + String api = "api/wms/task"; + + log.info("下发acs任务的参数为:{}", arr.toString()); + JSONObject result = AcsUtil.notifyAcs(api, arr); + log.info("下发acs任务的返回结果为:{}", result.toString()); + + + String status = result.getString("status"); + String message = result.getString("message"); + //发送失败的任务JSON集合:task_id,message + JSONArray errArr = result.getJSONArray("errArr"); + + //任务下发以后,更新任务状态 + //成功 + if ("200".equals(status)) { + taskList.forEach(item -> { + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", item.getTask_id()); + taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode()); + taskObj.put("remark", "下发成功"); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); + }); + } else {//下发失败 + taskList.forEach(item -> { + JSONObject taskObj = new JSONObject(); + taskObj.put("task_id", item.getTask_id()); + taskObj.put("task_status", TaskStatusEnum.ISSUE.getCode()); + taskObj.put("remark", "下发失败:" + message); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); + }); + } + //处理下发错误的任务 + if (ObjectUtil.isNotEmpty(errArr)) { + //处理下发失败的任务 + for (int i = 0; i < errArr.size(); i++) { + JSONObject taskObj = errArr.getJSONObject(i); + taskObj.put("remark", "下发失败:"+taskObj.getString("message")); + taskObj.put("update_time", DateUtil.now()); + taskTab.update(taskObj); + } + } + + } + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java deleted file mode 100644 index 71afd33bf..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/RegionTypeEnum.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.nl.wms.sch.manage; - -/** - * 完成方式:00自动,01:手动 - */ -public enum RegionTypeEnum { - A_SB("01","A生箔区","1578627451293143040"), - B_SB("02","B生箔区",""), - C_SB("03","C生箔区",""), - D_SB("04","D生箔区",""), - A_FQ("05","A分切区","1578628922277498880"), - B_FQ("06","B分切区",""), - C_FQ("07","C分切区",""), - D_FQ("08","D分切区",""), - A_HKZC("09","A烘烤暂存区","1578657813205487616"), - B_HKZC("10","B烘烤暂存区",""), - C_HKZC("11","C烘烤暂存区",""), - D_HKZC("12","D烘烤暂存区",""); - - - private String name; - private String code; - private String id; - - private RegionTypeEnum(String code, String name, String id) { - this.code = code; - this.name = name; - this.id = id; - } - - public String getName() { - return name; - } - - public String getCode() { - return code; - } - - public String getId() { - return id; - } -} - diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java index a432fa1b4..8afd41e40 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/TaskStatusEnum.java @@ -1,16 +1,13 @@ package org.nl.wms.sch.manage; -/** - * Task状态:00生成 ,01:下发,02、执行中,03、完成 - */ public enum TaskStatusEnum { - CREATED("01", "生成"), - SURE_START("02", "确定起点"), - SURE_END("03", "确定终点"), - START_AND_POINT("04", "起点终点确认"), - ISSUE("05", "下发"), - EXECUTING("06", "执行中"), - FINISHED("07", "完成"); + CREATED("1", "生成"), + SURE_START("2", "确定起点"), + SURE_END("3", "确定终点"), + START_AND_POINT("4", "起点终点确认"), + ISSUE("5", "下发"), + EXECUTING("6", "执行中"), + FINISHED("7", "完成"); private String name; private String code; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java index e65458932..87afafc62 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java @@ -34,7 +34,7 @@ public class PointController { @GetMapping @Log("查询点位") @ApiOperation("查询点位") - //@PreAuthorize("@el.check('point:list')") + //@SaCheckPermission("point:list") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(pointService.queryAll(whereJson, page), HttpStatus.OK); } @@ -42,7 +42,7 @@ public class PointController { @PostMapping @Log("新增点位") @ApiOperation("新增点位") - //@PreAuthorize("@el.check('point:add')") + //@SaCheckPermission("point:add") public ResponseEntity create(@Validated @RequestBody PointDto dto) { pointService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); @@ -51,7 +51,7 @@ public class PointController { @PutMapping @Log("修改点位") @ApiOperation("修改点位") - //@PreAuthorize("@el.check('point:edit')") + //@SaCheckPermission("point:edit") public ResponseEntity update(@Validated @RequestBody PointDto dto) { pointService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -59,7 +59,7 @@ public class PointController { @Log("删除点位") @ApiOperation("删除点位") - //@PreAuthorize("@el.check('point:del')") + //@SaCheckPermission("point:del") @DeleteMapping public ResponseEntity delete(@RequestBody Long[] ids) { pointService.deleteAll(ids); @@ -68,7 +68,7 @@ public class PointController { @PutMapping("/changeActive") @Log("修改点位启用状态") @ApiOperation("修改点位启用状态") - //@PreAuthorize("@el.check('store:edit')") + //@SaCheckPermission("store:edit") public ResponseEntity update(@RequestBody JSONObject json) { pointService.changeActive(json); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -77,23 +77,15 @@ public class PointController { @PostMapping("/getPoint") @Log("查询点位下拉框") @ApiOperation("查询点位下拉框") - //@PreAuthorize("@el.check('materialtype:list')") + //@SaCheckPermission("materialtype:list") public ResponseEntity queryPoint(@RequestBody Map whereJson) { return new ResponseEntity<>(pointService.getPoint(whereJson), HttpStatus.OK); } - @PutMapping("/syncStruct") - @Log("仓位同步") - @ApiOperation("仓位同步") - //@PreAuthorize("@el.check('store:edit')") - public ResponseEntity syncStruct() { - pointService.syncStruct(); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } @GetMapping("/selectPoint") @Log("查询点位管理") @ApiOperation("查询点位管理") - //@PreAuthorize("@el.check('Point:list')") + //@SaCheckPermission("Point:list") public ResponseEntity selectPoint(@RequestParam Map whereJson, Pageable page){ return new ResponseEntity<>(pointService.selectPoint(whereJson,page),HttpStatus.OK); } @@ -103,4 +95,20 @@ public class PointController { public ResponseEntity getRegion(){ return new ResponseEntity<>(pointService.getRegion(),HttpStatus.OK); } + + @Log("启动与禁用") + @PostMapping("/changeUsed") + @ApiOperation("启动与禁用") + public ResponseEntity changeUsedOn(@RequestBody JSONObject jsonObject) { + pointService.changeUsed(jsonObject); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("锁定与解锁") + @PostMapping("/changeLock") + @ApiOperation("锁定与解锁") + public ResponseEntity changeLock(@RequestBody JSONObject jsonObject) { + pointService.changeLock(jsonObject); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java index 4a4d9aee6..fcbf39056 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/RegionController.java @@ -2,7 +2,6 @@ package org.nl.wms.sch.rest; -import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -34,7 +33,7 @@ public class RegionController { @GetMapping @Log("查询区域管理") @ApiOperation("查询区域管理") - //@PreAuthorize("@el.check('region:list')") + //@SaCheckPermission("region:list") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(regionService.queryAll(whereJson, page), HttpStatus.OK); } @@ -42,7 +41,7 @@ public class RegionController { @PostMapping @Log("新增区域管理") @ApiOperation("新增区域管理") - //@PreAuthorize("@el.check('region:add')") + //@SaCheckPermission("region:add") public ResponseEntity create(@Validated @RequestBody RegionDto dto) { regionService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); @@ -51,7 +50,7 @@ public class RegionController { @PutMapping @Log("修改区域管理") @ApiOperation("修改区域管理") - //@PreAuthorize("@el.check('region:edit')") + //@SaCheckPermission("region:edit") public ResponseEntity update(@Validated @RequestBody RegionDto dto) { regionService.update(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -59,21 +58,27 @@ public class RegionController { @Log("删除区域管理") @ApiOperation("删除区域管理") - //@PreAuthorize("@el.check('region:del')") + //@SaCheckPermission("region:del") @DeleteMapping public ResponseEntity delete(@RequestBody Long[] ids) { regionService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } - @PutMapping("/changeActive") - @Log("修改点位启用状态") - @ApiOperation("修改点位启用状态") - //@PreAuthorize("@el.check('store:edit')") - public ResponseEntity update(@RequestBody JSONObject json) { - regionService.changeActive(json); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); + @PostMapping("/getPointStatusSelectById") + @Log("获取点位状态下拉框") + @ApiOperation("获取点位状态下拉框") + //@SaCheckPermission("region:add") + public ResponseEntity getPointStatusSelectById(@RequestBody Long region_id) { + return new ResponseEntity<>(regionService.getPointStatusSelectById(region_id), HttpStatus.CREATED); } + @PostMapping("/getPointTypeSelectById") + @Log("获取点位类型下拉框") + @ApiOperation("获取点位类型下拉框") + //@SaCheckPermission("region:add") + public ResponseEntity getPointTypeSelectById(@RequestBody Long region_id) { + return new ResponseEntity<>(regionService.getPointTypeSelectById(region_id), HttpStatus.CREATED); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java index 82956bf44..4f9ecc846 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/rest/TaskController.java @@ -12,12 +12,9 @@ import org.nl.modules.logging.annotation.Log; import org.nl.wms.sch.manage.FinishTypeEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; -import org.nl.wms.sch.TaskTypeEnum; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Map; @@ -38,38 +35,11 @@ public class TaskController { @GetMapping @Log("查询任务") @ApiOperation("查询任务") - //@PreAuthorize("@el.check('task:list')") + //@SaCheckPermission("task:list") public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK); } - @PostMapping - @Log("新增任务") - @ApiOperation("新增任务") - //@PreAuthorize("@el.check('task:add')") - public ResponseEntity create(@Validated @RequestBody TaskDto dto) { - taskService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改任务") - @ApiOperation("修改任务") - //@PreAuthorize("@el.check('task:edit')") - public ResponseEntity update(@Validated @RequestBody TaskDto dto) { - taskService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除任务") - @ApiOperation("删除任务") - //@PreAuthorize("@el.check('task:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - taskService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - @GetMapping("/taskStatus") @Log("获取任务状态列表") @ApiOperation("获取任务状态列表") @@ -90,21 +60,6 @@ public class TaskController { return new ResponseEntity<>(arr, HttpStatus.OK); } - @GetMapping("/taskType") - @Log("获取任务类型列表") - @ApiOperation("获取任务类型列表") - public ResponseEntity getTaskType() { - TaskTypeEnum[] values = TaskTypeEnum.values(); - JSONArray arr = new JSONArray(); - for (TaskTypeEnum value : values) { - JSONObject json = new JSONObject(); - json.put("code", value.getCode()); - json.put("name", value.getName()); - arr.add(json); - } - return new ResponseEntity<>(arr, HttpStatus.OK); - } - @GetMapping("/finishType") @Log("获取任务类型列表") @ApiOperation("获取任务类型列表") @@ -123,7 +78,7 @@ public class TaskController { @PutMapping("/operation") @Log("任务操作") @ApiOperation("任务操作") - //@PreAuthorize("@el.check('task:edit')") + //@SaCheckPermission("task:edit") public ResponseEntity update(@RequestBody Map map) { taskService.operation(map); return new ResponseEntity<>(HttpStatus.NO_CONTENT); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/lms/nladmin-system/src/main/java/org/nl/wms/sch/sch.xls similarity index 65% rename from lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls rename to lms/nladmin-system/src/main/java/org/nl/wms/sch/sch.xls index 772587185da4237accd1c81b7cabf6754a4a91f2..9c348dbec08ce1177e43e36609f82d22f1dfffcf 100644 GIT binary patch delta 34423 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 SWDB;8|Hvt-&D6@76#oOZ8}T>* diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java index eb9280f74..d4eec704c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java @@ -73,7 +73,6 @@ public interface PointService { JSONArray getPoint(Map wherJson); - void syncStruct(); /** * * 获取点位 @@ -85,4 +84,16 @@ public interface PointService { * 获取区域 */ JSONArray getRegion(); + + /** + * 改变启用状态 + * @param jsonObject + */ + void changeUsed(JSONObject jsonObject); + + /** + * 改变锁定类型 + * @param jsonObject + */ + void changeLock(JSONObject jsonObject); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/RegionService.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/RegionService.java index 3c9de3014..7b730da23 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/RegionService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/RegionService.java @@ -1,7 +1,7 @@ package org.nl.wms.sch.service; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONArray; import org.nl.wms.sch.service.dto.RegionDto; import org.springframework.data.domain.Pageable; @@ -70,5 +70,17 @@ public interface RegionService { */ void deleteAll(Long[] ids); - void changeActive(JSONObject json); + /** + * 获取点位状态下拉框 + * @param region_id + * @return + */ + JSONArray getPointStatusSelectById(Long region_id); + + /** + * 获取点位类型下拉框 + * @param region_id + * @return + */ + JSONArray getPointTypeSelectById(Long region_id); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java index 941189529..222cbc787 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/TaskService.java @@ -1,10 +1,8 @@ package org.nl.wms.sch.service; -import org.nl.wms.sch.service.dto.TaskDto; import org.springframework.data.domain.Pageable; -import java.util.List; import java.util.Map; /** @@ -23,65 +21,11 @@ public interface TaskService { */ Map queryAll(Map whereJson, Pageable page); - /** - * 查询所有数据不分页 - * - * @param whereJson 条件参数 - * @return List - */ - List queryAll(Map whereJson); - - /** - * 根据ID查询 - * - * @param task_id - * @return Task - */ - TaskDto findById(String task_id); - - /** - * 根据ID查询 - * - * @param taskdtl_id ID - * @return Task - */ - TaskDto findByDtlId(String taskdtl_id); - - /** - * 根据编码查询 - * - * @param code code - * @return Task - */ - TaskDto findByCode(String code); - - - /** - * 创建 - * - * @param dto / - */ - void create(TaskDto dto); - - /** - * 编辑 - * - * @param dto / - */ - void update(TaskDto dto); - - - /** - * 多选删除 - * - * @param ids / - */ - void deleteAll(String[] ids); - /** * 任务操作 * * @param param */ void operation(Map param); + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java index 70e14417f..c9800a13e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java @@ -5,132 +5,111 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; /** - * @author ldjun * @description / - * @date 2021-12-07 + * @author 1 + * @date 2022-10-19 **/ @Data public class PointDto implements Serializable { /** 点位标识 */ - /** - * 防止精度丢失 - */ - @JsonSerialize(using = ToStringSerializer.class) + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) private Long point_id; - /** - * 点位编码 - */ + /** 点位编码 */ private String point_code; - /** - * 点位名称 - */ + /** 点位名称 */ private String point_name; - /** - * 所属区域 - */ + /** 所属区域 */ private Long region_id; - /** - * 点位类型 - */ + /** 区域编码 */ + private String region_code; + + /** 区域名称 */ + private String region_name; + + /** 点位类型 */ private String point_type; - /** - * 点位状态 - */ + /** 点位状态 */ private String point_status; - /** - * 锁定类型 - */ + /** 锁定类型 */ private String lock_type; - /** - * 载具编码 - */ - private String vehicle_code; + /** 设备编码 */ + private String device_code; - /** - * 载具数量 - */ - private Integer vehicle_qty; + /** MES设备编码 */ + private String mes_device_code; - /** - * 载具类型 - */ + /** 物料标识 */ + private Long material_id; + + /** 允许的载具类型 */ + private String can_vehicle_type; + + /** 载具类型 */ private String vehicle_type; - /** - * 是否专机 - */ - private String is_host; + /** 载具编码 */ + private String vehicle_code; - /** - * 来源标识 - */ - private Long source_id; + /** 载具数量 */ + private BigDecimal vehicle_qty; - /** - * 备注 - */ + /** 块 */ + private BigDecimal block_num; + + /** 排 */ + private BigDecimal row_num; + + /** 列 */ + private BigDecimal col_num; + + /** 层 */ + private BigDecimal layer_num; + + /** 点位组编码 */ + private String point_group_code; + + /** 是否建工单 */ + private String is_have_workder; + + /** 备注 */ private String remark; - /** - * 是否启用 - */ + /** 来源标识 */ + private Long source_id; + + /** 是否启用 */ private String is_used; - /** - * 是否删除 - */ + /** 是否删除 */ private String is_delete; - /** - * 创建人 - */ + /** 创建人 */ private Long create_id; - /** - * 创建人姓名 - */ + /** 创建人 */ private String create_name; - /** - * 创建时间 - */ + /** 创建时间 */ private String create_time; - /** - * 修改人 - */ + /** 修改人 */ private Long update_optid; - /** - * 修改人姓名 - */ + /** 修改人 */ private String update_optname; - /** - * 修改时间 - */ + /** 修改时间 */ private String update_time; - - /** - * 设备点位类型 - */ - private String device_point_type; - /** - * 生产区域 - */ - private String product_area; - /** - * 点位位置 - */ - private String point_location; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/RegionDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/RegionDto.java index 29aefe781..1c169fc0d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/RegionDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/RegionDto.java @@ -7,71 +7,48 @@ import lombok.Data; import java.io.Serializable; /** - * @author Liuxy - * @description / - * @date 2022-08-11 - **/ +* @description / +* @author Liuxy +* @date 2022-08-11 +**/ @Data public class RegionDto implements Serializable { /** 区域标识 */ - /** - * 防止精度丢失 - */ - @JsonSerialize(using = ToStringSerializer.class) + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) private Long region_id; - /** - * 区域编码 - */ + /** 区域编码 */ private String region_code; - /** - * 区域名称 - */ + /** 区域名称 */ private String region_name; - /** - * 备注 - */ + /** 点位类型备注 */ + private String point_type_explain; + + /** 点位状态备注 */ + private String point_status_explain; + + /** 备注 */ private String remark; - /** - * 是否启用 - */ - private String is_used; - - /** - * 创建人 - */ + /** 创建人 */ private Long create_id; - /** - * 创建人姓名 - */ + /** 创建人姓名 */ private String create_name; - /** - * 创建时间 - */ + /** 创建时间 */ private String create_time; - /** - * 修改人 - */ + /** 修改人 */ private Long update_optid; - /** - * 修改人姓名 - */ + /** 修改人姓名 */ private String update_optname; - /** - * 修改时间 - */ + /** 修改时间 */ private String update_time; - /** - * 生产区域 - */ - private String product_area; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java index de4d68b62..355e8a0da 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskDto.java @@ -5,44 +5,90 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; /** * @description / * @author ldjun - * @date 2021-12-23 + * @date 2022-10-19 **/ @Data public class TaskDto implements Serializable { + + /** 任务标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long task_id; + /** 任务编码 */ private String task_code; /** 任务类型 */ private String task_type; - /** 任务明细类型 */ - private String taskdtl_type; - - /** 指令状态 */ + /** 任务状态 */ private String task_status; - /** 起始点位 */ - private String start_point_code; + /** 点位1 */ + private String point_code1; - /** 下一点位 */ - private String next_point_code; + /** 点位2 */ + private String point_code2; + + /** 点位3 */ + private String point_code3; + + /** 点位4 */ + private String point_code4; + + /** 物料标识 */ + private Long material_id; + + /** 载具类型 */ + private String vehicle_type; + + /** 载具数量 */ + private BigDecimal vehicle_qty; /** 载具编码 */ private String vehicle_code; + /** 优先级 */ + private String priority; + /** 处理类 */ private String handle_class; + /** 任务组标识 */ + private Long task_group_id; + + /** 任务顺序号 */ + private BigDecimal sort_seq; + /** 任务完成类型 */ private String finished_type; + /** acs任务类型 */ + private String acs_task_type; + + /** 业务表表名 */ + private String table_name; + + /** 业务表表名主键字段 */ + private String table_fk; + + /** 业务表表名主键值 */ + private Long table_fk_id; + /** 备注 */ private String remark; + /** 备注1 */ + private String remark2; + + /** 备注2 */ + private String remark3; + /** 是否删除 */ private String is_delete; @@ -51,30 +97,4 @@ public class TaskDto implements Serializable { /** 修改时间 */ private String update_time; - - /** 任务明细标识 */ - /** 防止精度丢失 */ - @JsonSerialize(using= ToStringSerializer.class) - private Long taskdtl_id; - - /** 任务标识 */ - private Long task_id; - - /** 物料编码 */ - private String material_code; - - /** 车号 */ - private String car_no; - - /** 创建人 */ - private Long create_id; - - /** 创建人姓名 */ - private String create_name; - - /** 修改人 */ - private Long update_optid; - - /** 修改人姓名 */ - private String update_optname; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java index b274de8f9..24911c781 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/TaskQueryDto.java @@ -1,7 +1,5 @@ package org.nl.wms.sch.service.dto; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serializable; @@ -23,10 +21,6 @@ public class TaskQueryDto implements Serializable { */ private String task_type; - /** - * 任务明细类型 - */ - private String taskdtl_type; /** * 指令状态 @@ -36,12 +30,12 @@ public class TaskQueryDto implements Serializable { /** * 起始点位 */ - private String start_point_code; + private String point_code1; /** * 下一点位 */ - private String next_point_code; + private String point_code2; /** * 载具编码 @@ -69,12 +63,6 @@ public class TaskQueryDto implements Serializable { */ private String update_time; - /** 任务明细标识 */ - /** - * 防止精度丢失 - */ - @JsonSerialize(using = ToStringSerializer.class) - private Long taskdtl_id; /** * 任务标识 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index d91550eec..fe130b5a2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -12,12 +12,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; -import org.nl.wms.sch.manage.RegionTypeEnum; -import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.RegionService; +import org.nl.wms.sch.service.dto.PointDto; +import org.nl.wms.sch.service.dto.RegionDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +36,9 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class PointServiceImpl implements PointService { + + private final RegionService regionService; + @Override public Map queryAll(Map whereJson, Pageable page) { HashMap map = new HashMap(); @@ -47,6 +51,39 @@ public class PointServiceImpl implements PointService { map.put("point_type", whereJson.get("point_type")); map.put("name", whereJson.get("name")); JSONObject json = WQL.getWO("QSCH_BASE_POINT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "point_code asc"); + JSONArray content = json.getJSONArray("content"); + JSONArray res = new JSONArray(); + for (int i = 0; i < content.size(); i++) { + JSONObject object = content.getJSONObject(i); + Long region_id = object.getLong("region_id"); + String point_status = object.getString("point_status"); + String point_type = object.getString("point_type"); + RegionDto regionDto = regionService.findById(region_id); + String point_status_explain = regionDto.getPoint_status_explain(); + String point_type_explain = regionDto.getPoint_type_explain(); + // 获取点位状态名称 + if (!ObjectUtil.isEmpty(point_status)) { + JSONObject statusArr = new JSONObject(); + String[] split = point_status_explain.split(","); + for ( int j = 0; j < split.length; j++) { + String[] status = split[j].split("-"); + statusArr.put(status[0], status[1]); + } + object.put("point_status_name", statusArr.getString(point_status)); + } + // 获取点位类型 + if (!ObjectUtil.isEmpty(point_type)) { + JSONObject typeArr = new JSONObject(); + String[] split = point_type_explain.split(","); + for ( int j = 0; j < split.length; j++) { + String[] types = split[j].split("-"); + typeArr.put(types[0], types[1]); + } + object.put("point_status_name", typeArr.getString(point_type)); + } + res.add(object); + } + json.put("content", res); return json; } @@ -92,6 +129,9 @@ public class PointServiceImpl implements PointService { String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); + RegionDto regionDto = regionService.findById(dto.getRegion_id()); + dto.setRegion_code(regionDto.getRegion_code()); + dto.setRegion_name(regionDto.getRegion_name()); dto.setPoint_id(IdUtil.getSnowflake(1, 1).nextId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); @@ -100,10 +140,6 @@ public class PointServiceImpl implements PointService { dto.setUpdate_time(now); dto.setCreate_time(now); - Long region_id = dto.getRegion_id(); - JSONObject region_jo = WQLObject.getWQLObject("sch_base_region").query("region_id = '"+region_id+"'").uniqueResult(0); - dto.setProduct_area(region_jo.getString("product_area")); - WQLObject wo = WQLObject.getWQLObject("sch_base_point"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); wo.insert(json); @@ -117,6 +153,14 @@ public class PointServiceImpl implements PointService { throw new BadRequestException("被删除或无权限,操作失败!"); } + String pointStatus = dto.getPoint_status(); + if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals("1")) { + entity.setMaterial_id(null); + entity.setVehicle_type(null); + entity.setVehicle_code(null); + entity.setVehicle_qty(null); + } + Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); @@ -195,42 +239,10 @@ public class PointServiceImpl implements PointService { @Override public JSONArray getPoint(Map wherJson) { String area_type = (String) wherJson.get("area_type"); - JSONArray point_rows = WQLObject.getWQLObject("sch_base_point").query("region_id IN (" + area_type + ") AND is_used = '1' AND is_delete = '0' order by point_code").getResultJSONArray(0); + JSONArray point_rows = WQLObject.getWQLObject("sch_base_point").query("area_type IN (" + area_type + ") AND is_used = '1' AND is_delete = '0' order by point_code").getResultJSONArray(0); return point_rows; } - @Override - @Transactional(rollbackFor = Exception.class) - public void syncStruct() { - WQLObject.getWQLObject("sch_base_point").delete(" point_type = '01'"); - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - JSONObject map = new JSONObject(); - map.put("flag", "2"); - JSONArray arrStruct = WQL.getWO("QSCH_BASE_POINT").addParamMap(map).process().getResultJSONArray(0); - WQLObject wo = WQLObject.getWQLObject("sch_base_point"); - for (int i = 0; i < arrStruct.size(); i++) { - JSONObject json = arrStruct.getJSONObject(i); - JSONObject structMap = new JSONObject(); - structMap.put("point_id", IdUtil.getSnowflake(1,1).nextId()); - structMap.put("point_code", json.getString("struct_code")); - structMap.put("point_name", json.getString("struct_name")); - structMap.put("region_id", RegionTypeEnum.A_HKZC.getId()); - structMap.put("source_id", json.getString("struct_id")); - structMap.put("point_type", "01"); - structMap.put("is_host", "0"); - structMap.put("is_used", json.getString("is_used")); - structMap.put("create_id", currentUserId); - structMap.put("create_name", nickName); - structMap.put("create_time", now); - structMap.put("update_optid", currentUserId); - structMap.put("update_optname", nickName); - structMap.put("update_time", now); - wo.insert(structMap); - } - } - @Override public Map selectPoint(Map whereJson, Pageable page) { String search = MapUtil.getStr(whereJson, "search"); @@ -249,10 +261,46 @@ public class PointServiceImpl implements PointService { @Override public JSONArray getRegion() { - JSONArray resultJSONArray = WQLObject.getWQLObject("SCH_BASE_Region").query("is_used = '1'").getResultJSONArray(0); + JSONArray resultJSONArray = WQLObject.getWQLObject("SCH_BASE_Region").query().getResultJSONArray(0); return resultJSONArray; } + /** + * 改变启用状态 + * + * @param jsonObject + */ + @Override + public void changeUsed(JSONObject jsonObject) { + WQLObject wo = WQLObject.getWQLObject("sch_base_Point"); + JSONArray data = jsonObject.getJSONArray("data"); + String used = jsonObject.getString("used"); + for ( int i = 0; i < data.size(); i++ ) { + JSONObject object = data.getJSONObject(i); + if (used.equals("1")) object.put("is_used", 1); + else object.put("is_used", 0); + wo.update(object); + } + } + + /** + * 改变锁定类型 + * + * @param jsonObject + */ + @Override + public void changeLock(JSONObject jsonObject) { + WQLObject wo = WQLObject.getWQLObject("sch_base_Point"); + JSONArray data = jsonObject.getJSONArray("data"); + String lock = jsonObject.getString("lock_type"); + for ( int i = 0; i < data.size(); i++ ) { + JSONObject object = data.getJSONObject(i); + if (lock.equals("1")) object.put("lock_type", 1); + else object.put("lock_type", 2); + wo.update(object); + } + } + //根据重量返回最大的 级数 public String getLoadSeriesByqty(Double qty) { JSONArray dictArr = WQLObject.getWQLObject("sys_dict_detail").query("dict_id ='108'", "label").getResultJSONArray(0); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java index 8f96f5103..786f964ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/RegionServiceImpl.java @@ -6,7 +6,6 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -14,11 +13,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; -import org.nl.wms.sch.service.RegionService; -import org.nl.wms.sch.service.dto.RegionDto; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.sch.service.RegionService; +import org.nl.wms.sch.service.dto.RegionDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -70,7 +69,7 @@ public class RegionServiceImpl implements RegionService { @Override public RegionDto findByCode(String code) { WQLObject wo = WQLObject.getWQLObject("sch_base_region"); - JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + JSONObject json = wo.query("region_code ='" + code + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(json)) { return json.toJavaObject(RegionDto.class); } @@ -130,21 +129,54 @@ public class RegionServiceImpl implements RegionService { } } + /** + * 获取点位状态下拉框 + * + * @param region_id + * @return + */ @Override - public void changeActive(JSONObject json) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - - String is_used = "1"; - if (StrUtil.equals("1", json.getString("is_used"))) { - is_used = "0"; + public JSONArray getPointStatusSelectById(Long region_id) { + /** + * label,value + */ + JSONArray res = new JSONArray(); + String point_status_explain = findById(region_id).getPoint_status_explain(); + if (ObjectUtil.isEmpty(point_status_explain)) return res; + String[] explain = point_status_explain.split(","); + for (int i = 0; i < explain.length; i++) { + String[] status = explain[i].split("-"); + JSONObject point_status = new JSONObject(); + point_status.put("label", status[1]); + point_status.put("value", status[0]); + res.add(point_status); } - json.put("is_used", is_used); - json.put("update_optid", currentUserId); - json.put("update_optname", nickName); - json.put("update_time", now); - WQLObject.getWQLObject("sch_base_region").update(json); + return res; + } + + /** + * 获取点位类型下拉框 + * + * @param region_id + * @return + */ + @Override + public JSONArray getPointTypeSelectById(Long region_id) { + /** + * label,value + */ + JSONArray res = new JSONArray(); + String point_type_explain = findById(region_id).getPoint_type_explain(); + if (ObjectUtil.isEmpty(point_type_explain)) return res; + String[] explain = point_type_explain.split(","); + for (int i = 0; i < explain.length; i++) { + String[] types = explain[i].split("-"); + JSONObject point_type = new JSONObject(); + point_type.put("label", types[1]); + point_type.put("value", types[0]); + res.add(point_type); + } + return res; } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java index ca1ead55c..986265641 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java @@ -2,9 +2,7 @@ package org.nl.wms.sch.service.impl; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -13,20 +11,20 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.common.utils.SecurityUtils; -import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.basedata.master.service.ClassstandardService; +import org.nl.wms.basedata.master.service.dto.ClassstandardDto; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.RegionService; +import org.nl.wms.sch.service.TaskService; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -39,6 +37,10 @@ import java.util.Map; @Slf4j public class TaskServiceImpl implements TaskService { + private final ClassstandardService classstandardService; + private final RegionService regionService; + private final PointService pointService; + @Override public Map queryAll(Map form, Pageable page) { @@ -60,20 +62,18 @@ public class TaskServiceImpl implements TaskService { if (StrUtil.isNotEmpty(whereJson.getString("task_code"))) { map.put("task_code", "%" + whereJson.getString("task_code") + "%"); } - if (StrUtil.isNotEmpty(whereJson.getString("start_point_code"))) { - map.put("start_point_code", "%" + whereJson.getString("start_point_code") + "%"); + if (StrUtil.isNotEmpty(whereJson.getString("point_code1"))) { + map.put("point_code1", "%" + whereJson.getString("point_code1") + "%"); } - if (StrUtil.isNotEmpty(whereJson.getString("next_point_code"))) { - map.put("next_point_code", "%" + whereJson.getString("next_point_code") + "%"); + if (StrUtil.isNotEmpty(whereJson.getString("point_code2"))) { + map.put("point_code2", "%" + whereJson.getString("point_code2") + "%"); } if (StrUtil.isNotEmpty(whereJson.getString("vehicle_code"))) { map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%"); } if (StrUtil.isNotEmpty(whereJson.getString("task_type"))) { - map.put("task_type", whereJson.getString("task_type")); - } - if (StrUtil.isNotEmpty(whereJson.getString("taskdtl_type"))) { - map.put("taskdtl_type", whereJson.getString("taskdtl_type")); + ClassstandardDto task_type = classstandardService.findById(whereJson.getString("task_type")); + map.put("task_type", task_type.getClass_code()); } if (StrUtil.isNotEmpty(whereJson.getString("finishTypeList"))) { map.put("finishTypeList", whereJson.getString("finishTypeList")); @@ -85,99 +85,42 @@ public class TaskServiceImpl implements TaskService { map.put("end_time", whereJson.getString("end_time")); } JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.update_time desc"); - return json; - } + JSONArray content = json.getJSONArray("content"); + JSONArray res = new JSONArray(); - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONArray arr = wo.query().getResultJSONArray(0); - List list = arr.toJavaList(TaskDto.class); - return list; - } + //点位基础表【SCH_BASE_Point】 + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); + for (int i = 0; i < content.size(); i++) { + JSONObject taskObj = content.getJSONObject(i); + String point_code1 = taskObj.getString("point_code1"); + if (ObjectUtil.isNotEmpty(point_code1)) { + JSONObject point1 = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + taskObj.put("point1_region_name", point1.getString("region_name")); + } - @Override - public TaskDto findById(String task_id) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = wo.query("task_id = '" + task_id + "'").uniqueResult(0); - final TaskDto obj = json.toJavaObject(TaskDto.class); - return obj; - } - - @Override - public TaskDto findByDtlId(String task_id) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = wo.query("task_id = '" + task_id + "'").uniqueResult(0); - final TaskDto obj = json.toJavaObject(TaskDto.class); - return obj; - } - - @Override - public TaskDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = wo.query("task_code ='" + code + "'").uniqueResult(0); - final TaskDto obj = json.toJavaObject(TaskDto.class); - return obj; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(TaskDto dto) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String now = DateUtil.now(); - - - dto.setTaskdtl_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setTask_id(dto.getTaskdtl_id()); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(TaskDto dto) { - TaskDto entity = this.findById(dto.getTask_id() + ""); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - String now = DateUtil.now(); - dto.setUpdate_time(now); - dto.setUpdate_optid(currentUserId); - dto.setUpdate_optname(nickName); - - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - for (String taskdtl_id : ids) { - wo.delete("taskdtl_id = '" + taskdtl_id + "'"); + String point_code2 = taskObj.getString("point_code2"); + if (ObjectUtil.isNotEmpty(point_code2)) { + JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); + taskObj.put("point2_region_name", point2.getString("region_name")); + } + String point_code3 = taskObj.getString("point_code3"); + if (ObjectUtil.isNotEmpty(point_code3)) { + JSONObject point3 = pointTab.query("point_code = '" + point_code3 + "'").uniqueResult(0); + taskObj.put("point3_region_name", point3.getString("region_name")); + } + res.add(taskObj); } + json.put("content", res); + return json; } @Override public void operation(Map map) { String task_id = MapUtil.getStr(map, "task_id"); String method_name = MapUtil.getStr(map, "method_name"); - TaskDto dto = this.findByDtlId(task_id); + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); // 任务处理类 - String processing_class = dto.getHandle_class(); + String processing_class = taskObj.getString("handle_class"); String message = ""; // 根据任务类型获取对应的任务操作类 try { @@ -193,7 +136,7 @@ public class TaskServiceImpl implements TaskService { for (int i = 0; i < arr.size(); i++) { JSONObject json = arr.getJSONObject(i); JSONObject param = new JSONObject(); - param.put("taskdtl_id", json.getString("taskdtl_id")); + param.put("task_id", json.getString("task_id")); param.put("remark", json.getString("message")); wo.update(param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql index 28f63d944..b07979978 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_BASE_POINT.wql @@ -48,42 +48,12 @@ IF 输入.flag = "1" PAGEQUERY SELECT - point.point_id, - point.point_code, - point.point_name, - point.region_id, - region.region_name, - point.point_type, - point.point_status, - point.lock_type, - d1.label as point_type_name, - d4.label as point_status_name, - d3.label as lock_type_name, - point.vehicle_code, - point.source_id, - point.remark, - point.taskdtl_type, - point.taskdtl_id, - point.task_code, - point.inv_type, - point.inv_id, - point.inv_code, - point.is_used, - point.is_delete, - point.vehicle_qty, - point.create_name, - point.create_time, - point.update_optname, - point.update_time, - point.vehicle_type, - point.is_host, - point.device_point_type + point.*, + d3.label as lock_type_name FROM sch_base_point point LEFT JOIN SCH_BASE_Region region ON point.region_id = region.region_id - LEFT JOIN sys_dict_detail d1 ON point.point_type = d1.value and d1.name='sch_point_type' LEFT JOIN sys_dict_detail d3 ON point.lock_type = d3.value and d3.name='d_lock_type' - LEFT JOIN sys_dict_detail d4 ON point.point_status = d4.value and d4.name='sch_point_status' WHERE point.is_delete = '0' OPTION 输入.region_id <> "" @@ -117,9 +87,11 @@ IF 输入.flag = "2" QUERY SELECT - struct.* + struct.*,region.region_id FROM ST_IVT_StructAttr struct + left join + SCH_BASE_Region region on struct.region_id = region.region_id WHERE struct.is_delete = '0' ENDSELECT diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql index 5e3f8b0b1..729b8ca4d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql @@ -17,14 +17,13 @@ 输入.task_status TYPEAS s_string 输入.finished_type TYPEAS s_string 输入.task_type TYPEAS s_string - 输入.start_point_code TYPEAS s_string - 输入.next_point_code TYPEAS s_string + 输入.point_code1 TYPEAS s_string + 输入.point_code2 TYPEAS s_string 输入.task_code TYPEAS s_string 输入.vehicle_code TYPEAS s_string 输入.begin_time TYPEAS s_string 输入.end_time TYPEAS s_string 输入.unFinish TYPEAS s_string - 输入.taskdtl_type TYPEAS s_string [临时表] --这边列出来的临时表就会在运行期动态创建 @@ -50,18 +49,18 @@ IF 输入.flag = "1" PAGEQUERY - SELECT - task.* + SELECT + task.*, + md.class_name task_type_name, + dict.label task_status_name FROM sch_base_task task - + LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code + LEFT JOIN sys_dict_detail dict ON dict.`value` = task.task_status AND dict.`name` = 'task_status' WHERE task.is_delete = '0' OPTION 输入.task_type <> "" task.task_type = 输入.task_type - ENDOPTION - OPTION 输入.taskdtl_type <> "" - task.taskdtl_type = 输入.taskdtl_type ENDOPTION OPTION 输入.finished_type <> "" task.finished_type = 输入.finished_type @@ -84,11 +83,8 @@ OPTION 输入.task_code <> "" (task.task_code like 输入.task_code) ENDOPTION - OPTION 输入.start_point_code <> "" - (task.start_point_code like 输入.start_point_code) - ENDOPTION - OPTION 输入.next_point_code <> "" - (task.next_point_code like 输入.next_point_code) + OPTION 输入.point_code <> "" + (task.point_code1 like 输入.point_code1) ENDOPTION OPTION 输入.begin_time <> "" task.create_time >= 输入.begin_time diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/BookTwoConfirmTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/BookTwoConfirmTask.java index a7c843fcf..b98b1f5d3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/BookTwoConfirmTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/BookTwoConfirmTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -12,6 +13,7 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; @@ -19,6 +21,9 @@ import org.nl.wms.sch.service.dto.PointDto; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j @@ -26,6 +31,33 @@ public class BookTwoConfirmTask extends AbstractAcsTask { private final String THIS_CLASS = BookTwoConfirmTask.class.getName(); private final CutConveyorTask conveyorTask; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -126,6 +158,21 @@ public class BookTwoConfirmTask extends AbstractAcsTask { throw new BadRequestException("点位:"+point_code2+"存在未完成的任务!"); } + /*SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) + .task_code(CodeUtil.getNewCode("TASK_CODE")) + .task_type("") + .task_name("共挤线叫空载具") + .task_status(TaskStatusEnum.SURE_END.getCode()) + .point_code2(point_code2) + .acs_task_type("2") + .vehicle_code(form.getString("vehicle_code")) + .vehicle_qty(form.getIntValue("qty")) + .handle_class(THIS_CLASS) + .create_time(DateUtil.now()) + .build();*/ + + + JSONObject json = new JSONObject(); json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); @@ -152,10 +199,7 @@ public class BookTwoConfirmTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java index 1307979bf..7a0338c43 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java @@ -2,32 +2,26 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; -import org.nl.wms.basedata.master.service.StoragevehicleinfoService; -import org.nl.wms.basedata.master.service.dto.StoragevehicleinfoDto; -import org.nl.wms.pdm.service.DeviceService; -import org.nl.wms.pdm.service.dto.DeviceDto; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.List; @Service @RequiredArgsConstructor @@ -35,6 +29,33 @@ import java.util.HashMap; public class CallEmpReelTask extends AbstractAcsTask { private final String THIS_CLASS = CallEmpReelTask.class.getName(); + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -179,10 +200,7 @@ public class CallEmpReelTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java index 23b8b00a0..d63855e17 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -11,15 +12,15 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; @Service @RequiredArgsConstructor @@ -27,6 +28,33 @@ import java.util.HashMap; public class CutConveyorTask extends AbstractAcsTask { private final String THIS_CLASS = CutConveyorTask.class.getName(); + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -142,10 +170,7 @@ public class CutConveyorTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java index c51bfab39..f5dc74ac6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java @@ -12,11 +12,15 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j @@ -24,6 +28,33 @@ public class CutTrussTask extends AbstractAcsTask { private final String THIS_CLASS = CutTrussTask.class.getName(); private final CutConveyorTask conveyorTask; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -188,10 +219,7 @@ public class CutTrussTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java index 769033e97..df99cc080 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -12,6 +13,7 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; @@ -19,12 +21,42 @@ import org.nl.wms.sch.service.dto.PointDto; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j public class InCoolIvtTask extends AbstractAcsTask { private final String THIS_CLASS = InCoolIvtTask.class.getName(); + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -154,10 +186,7 @@ public class InCoolIvtTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index c700ff838..9b4d4ac6d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -11,20 +12,48 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.service.dto.PointDto; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j public class InHotTask extends AbstractAcsTask { private final String THIS_CLASS = InHotTask.class.getName(); + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -231,10 +260,7 @@ public class InHotTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java index 33e2bcafd..232b9e088 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java @@ -3,28 +3,59 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.sch.service.dto.TaskDto; -import org.nl.wms.st.inbill.service.RawAssistIStorService; import org.nl.wms.st.inbill.service.impl.InbillServiceImpl; import org.nl.wms.st.inbill.service.impl.RawAssistIStorServiceImpl; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** * Created by ZZ on 2021/12/22. */ public class InTask extends AbstractAcsTask { + private final String THIS_CLASS = InTask.class.getName(); + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { @@ -33,26 +64,26 @@ public class InTask extends AbstractAcsTask { String now = DateUtil.now(); HashMap map = new HashMap(); //1:执行中,2:完成 ,3:acs取消 - if(status.equals("1")){ - map.put("task_status","03"); + if (status.equals("1")) { + map.put("task_status", "03"); //更新入库单分配任务状态 HashMap dis_map = new HashMap(); - dis_map.put("work_status","02"); - dis_map.put("is_issued","1"); - WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map,"task_id = '"+taskObj.getString("task_id")+"'"); + dis_map.put("work_status", "02"); + dis_map.put("is_issued", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map, "task_id = '" + taskObj.getString("task_id") + "'"); } - if(status.equals("2")){ + if (status.equals("2")) { map.put("task_status", TaskStatusEnum.FINISHED.getCode()); //调用入库分配确认方法 - InbillServiceImpl inbillService = SpringContextHolder.getBean(InbillServiceImpl.class); + InbillServiceImpl inbillService = SpringContextHolder.getBean(InbillServiceImpl.class); JSONObject dis_form = new JSONObject(); - dis_form.put("task_id",taskObj.getString("task_id")); + dis_form.put("task_id", taskObj.getString("task_id")); inbillService.confirmDis(dis_form); } - map.put("update_optid",currentUserId); - map.put("update_optname",nickName); - map.put("update_time",now); - WQLObject.getWQLObject("SCH_BASE_Task").update(map,"task_id = '"+taskObj.getString("task_id")+"'"); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); } @Override @@ -69,7 +100,7 @@ public class InTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { - TaskService taskService = SpringContextHolder.getBean(TaskService.class); + TaskService taskService = SpringContextHolder.getBean(TaskService.class); String task_type = form.getString("task_type"); if (StrUtil.isBlank(task_type)) { throw new BadRequestException("业务类型不能为空"); @@ -118,7 +149,7 @@ public class InTask extends AbstractAcsTask { JSONObject json = new JSONObject(); - json.put("task_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); @@ -129,8 +160,8 @@ public class InTask extends AbstractAcsTask { json.put("create_id", currentUserId); json.put("create_name", currentUsername); json.put("create_time", DateUtil.now()); - json.put("priority","1" ); - json.put("acs_task_type","5" ); + json.put("priority", "1"); + json.put("acs_task_type", "5"); WQLObject.getWQLObject("SCH_BASE_Task").insert(json); return json.getString("task_id"); @@ -141,21 +172,16 @@ public class InTask extends AbstractAcsTask { public void forceFinish(String taskdtl_id) { //任务表 WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task"); - JSONObject task = wo_Task.query("task_status<>'99' and taskdtl_id='"+taskdtl_id+"'").uniqueResult(0); - if(task==null){ + JSONObject task = wo_Task.query("task_status<>'99' and taskdtl_id='" + taskdtl_id + "'").uniqueResult(0); + if (task == null) { throw new BadRequestException("查询不到操作的任务记录!"); } - Map whereJson = new HashMap(); - whereJson.put("task_code",task.getString("task_code")); - RawAssistIStorServiceImpl inbillService = SpringContextHolder.getBean(RawAssistIStorServiceImpl.class); + Map whereJson = new HashMap(); + whereJson.put("task_code", task.getString("task_code")); + RawAssistIStorServiceImpl inbillService = SpringContextHolder.getBean(RawAssistIStorServiceImpl.class); inbillService.confirmTask(whereJson); } - @Override - public void pullBack(String taskdtl_id) { - - } - @Override public void cancel(String taskdtl_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java index 97979ee1a..a22c67f86 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java @@ -3,6 +3,7 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -10,17 +11,48 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + @Service @RequiredArgsConstructor @Slf4j public class OutHotTask extends AbstractAcsTask { private final String THIS_CLASS = OutHotTask.class.getName(); + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + AcsTaskDto dto = AcsTaskDto.builder() + .task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .vehicle_code(json.getString("vehicle_code")) + .vehicle_type(json.getString("vehicle_type")) + .priority(json.getString("priority")) + .remark(json.getString("remark")) + .build(); + resultList.add(dto); + } + return resultList; + } + @Override @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { @@ -150,10 +182,7 @@ public class OutHotTask extends AbstractAcsTask { this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } - @Override - public void pullBack(String task_id) { - } @Override public void cancel(String task_id) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index e5afdc492..abff1988e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -784,14 +784,14 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { //判断指令状态,只能修改生成状态的任务 - String task_code = (String) whereJson.get("task_code"); + String task_code = (String) whereJson.get("task_code");/* TaskDto taskDto = taskService.findByCode(task_code); if (ObjectUtil.isEmpty(taskDto)) { throw new BadRequestException("请输入正确的任务号!"); } if (!taskDto.getTask_status().equals("01")) { throw new BadRequestException("只能修改任务状态为生成的任务!"); - } + }*/ //判断入库点是否修改 if (!whereJson.get("point_code").equals(whereJson.get("new_point_code"))) { @@ -878,14 +878,14 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { //判断指令状态,只能修改生成状态的任务 - String task_id = (String) whereJson.get("task_id"); + /* String task_id = (String) whereJson.get("task_id"); TaskDto taskDto = taskService.findByDtlId(task_id); if (ObjectUtil.isEmpty(taskDto)) { throw new BadRequestException("请输入正确的任务号!"); } if (!taskDto.getTask_status().equals("01")) { throw new BadRequestException("只能修改任务状态为生成的任务!"); - } + }*/ Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); @@ -898,7 +898,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { task_map.put("update_optname", nickName); task_map.put("update_time", now); //修改分配表起点,任务表起点 - task_wql.update(task_map, "task_id = '" + task_id + "'"); +/* task_wql.update(task_map, "task_id = '" + task_id + "'");*/ //解锁原货位点位 HashMap unlock_map = new HashMap(); @@ -970,11 +970,11 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { String taskdtl_id = (String) whereJson.get("taskdtl_id"); String task_id = (String) whereJson.get("task_id"); TaskDto taskDto = new TaskDto(); - if (StrUtil.isNotEmpty(taskdtl_id)) { + /* if (StrUtil.isNotEmpty(taskdtl_id)) { taskDto = taskService.findByDtlId(taskdtl_id); } else { taskDto = taskService.findById(task_id); - } + }*/ if (ObjectUtil.isEmpty(taskDto)) { throw new BadRequestException("请输入正确的任务号!"); } @@ -990,7 +990,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { HashMap map = new HashMap<>(); //更新任务指令为下发 JSONObject task_jo = new JSONObject(); - task_jo.put("taskdtl_id", taskDto.getTaskdtl_id()); + task_jo.put("taskdtl_id", ""); task_jo.put("task_id", taskDto.getTask_id()); task.updateTaskStatus(task_jo, "1"); } else { @@ -1003,18 +1003,18 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { @Transactional(rollbackFor = Exception.class) public void confirmTask(Map whereJson) { //判断指令状态,只能下发生成、执行中状态的任务 - String task_code = (String) whereJson.get("task_code"); + /* String task_code = (String) whereJson.get("task_code"); TaskDto taskDto = taskService.findByCode(task_code); if (ObjectUtil.isEmpty(taskDto)) { throw new BadRequestException("请输入正确的任务号!"); - } + }*/ /*if (!taskDto.getTask_status().equals("03")) { throw new BadRequestException("只能修改任务状态为执行中的任务!"); }*/ - JSONObject task_jo = JSONObject.parseObject(JSON.toJSONString(taskDto)); + /*JSONObject task_jo = JSONObject.parseObject(JSON.toJSONString(taskDto)); AbstractAcsTask task = new InTask(); - task.updateTaskStatus(task_jo, "2"); + task.updateTaskStatus(task_jo, "2");*/ } @Override @@ -1026,13 +1026,13 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { //判断指令状态,只能取消完成状态的任务 String task_code = (String) whereJson.get("task_code"); - TaskDto taskDto = taskService.findByCode(task_code); + /* TaskDto taskDto = taskService.findByCode(task_code); if (ObjectUtil.isEmpty(taskDto)) { throw new BadRequestException("请输入正确的任务号!"); } if (!taskDto.getTask_status().equals("99")) { throw new BadRequestException("只能取消任务状态为完成中的任务!"); - } + }*/ //判断主表是否为99,如果为99不允许取消 JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + whereJson.get("iostorinv_id") + "'").uniqueResult(0); diff --git a/lms/nladmin-system/src/main/resources/logback-spring.xml b/lms/nladmin-system/src/main/resources/logback-spring.xml index be0616438..dbc1dedb5 100644 --- a/lms/nladmin-system/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/src/main/resources/logback-spring.xml @@ -77,27 +77,44 @@ https://juejin.cn/post/6844903775631572999 - + - - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + @@ -105,27 +122,57 @@ https://juejin.cn/post/6844903775631572999 - + - + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/sch/point/index.vue b/lms/nladmin-ui/src/views/wms/sch/point/index.vue index a42d8cc15..4cde6c713 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -7,7 +7,7 @@ :inline="true" class="demo-form-inline" label-position="right" - label-width="80px" + label-width="90px" label-suffix=":" > @@ -19,6 +19,23 @@ @keyup.enter.native="crud.toQuery" /> + + + + + - - - - - - - - - - + + + + + + + + + + + + + - - + /> - - - + /> @@ -112,15 +133,52 @@ - 仓位同步 + 启用 + + + 禁用 + + + 锁定 + + + 解锁 @@ -135,6 +193,20 @@ + + + + + @@ -148,9 +220,10 @@ placeholder="点位状态" class="filter-item" style="width: 370px;" + clearable > @@ -171,16 +244,16 @@ /> - + @@ -189,51 +262,7 @@ - - - {{ item.label }} - - - - - - {{ item.label }} - - - - - - - - - - - - - + @@ -255,37 +284,24 @@ + - + + + - - - - - - - - - - - + + - +