From a066792ffae61bb4e23385928e3a9e527cd99845 Mon Sep 17 00:00:00 2001 From: ldj_willow Date: Wed, 19 Oct 2022 20:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 1 + .../nl/wms/sch/manage/AbstractAcsTask.java | 2 + .../wms/sch/tasks/GjxCallEmpVehicleTask.java | 152 ++++++++++++------ .../org/nl/wms/sch/wql/ST_VEHICLE_OUT_01.wql | 6 +- .../src/main/java/org/nl/wms/wms.xls | Bin 229888 -> 229888 bytes .../src/main/resources/logback-spring.xml | 12 +- .../src/views/wms/sch/task/index.vue | 2 +- 7 files changed, 117 insertions(+), 58 deletions(-) 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 9ca2ee7..e61e3fd 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 @@ -177,6 +177,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject param = new JSONObject(); param.put("point_code2", point_code); + param.put("vehicle_type", vehicle_type); param.put("qty", vehicle_num); // 创建任务 GjxCallEmpVehicleTask taskBean = SpringContextHolder.getBean(GjxCallEmpVehicleTask.class); 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 5ea7d23..850babe 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 @@ -123,7 +123,9 @@ public abstract class AbstractAcsTask { taskDto.setStart_device_code(json.getString("point_code1")); taskDto.setNext_device_code(json.getString("point_code2")); taskDto.setPriority("1"); + taskDto.setVehicle_type(json.getString("vehicle_type")); taskDto.setVehicle_code(json.getString("vehicle_code")); + taskDto.setPriority(json.getString("priority")); taskDto.setTask_type("1"); taskDto.setRoute_plan_code("normal"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java index 403533b..14e5ce2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/GjxCallEmpVehicleTask.java @@ -2,10 +2,8 @@ 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; @@ -15,16 +13,11 @@ 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.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; - @Service @RequiredArgsConstructor @Slf4j @@ -64,25 +57,38 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - PointService point = SpringContextHolder.getBean(PointService.class); - // 校验起点是否存在 - PointDto point_code1 = point.findByCode(jsonTask.getString("point_code1")); - if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("未找到可用点位:" + point_code1); - // 校验终点是否存在 - PointDto point_code2 = point.findByCode(jsonTask.getString("point_code2")); - if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("未找到可用点位:" + point_code2); - - // 1.更新点位数量 2.解锁点位 - int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(point_code1)).getIntValue("vehicle_qty"); - BigDecimal vehicle_qty_point = NumberUtil.sub(String.valueOf(vehicle_qty), String.valueOf(1)); - - point_code1.setVehicle_qty(vehicle_qty_point); - if (StrUtil.equals(vehicle_qty_point.toString(), "0")) { - point_code1.setPoint_status("00"); - point_code1.setVehicle_type(""); + String end_point_code = jsonTask.getString("point_code2"); + String start_point_code = jsonTask.getString("point_code1"); + JSONObject endPoint = pointTab.query("point_code = '" + end_point_code + "'").uniqueResult(0); + //从空托盘缓存B区或养生A区搬运到叠盘架 + if (StrUtil.equals("DPJQB01", endPoint.getString("region_code"))) { + //解锁起点 + JSONObject startPoint = new JSONObject(); + startPoint.put("lock_type", "00"); + startPoint.put("point_status", "1"); + startPoint.put("update_time", DateUtil.now()); + pointTab.update(startPoint, "point_code = '" + start_point_code + "'"); + //更新终点点位状态 + endPoint.put("point_status","2"); + endPoint.put("lock_type","00"); + endPoint.put("vehicle_qty",jsonTask.getString("vehicle_qty")); + endPoint.put("vehicle_type",jsonTask.getString("vehicle_type")); + endPoint.put("update_time",DateUtil.now()); + pointTab.update(endPoint); + }else { + JSONObject startPoint = pointTab.query("point_code = '" + start_point_code + "'").uniqueResult(0); + Integer vehicle_qty = startPoint.getInteger("vehicle_qty"); + int after_qty=vehicle_qty-1; + startPoint.put("lock_type", "00"); + startPoint.put("vehicle_qty", after_qty); + if (after_qty>0){ + startPoint.put("point_status", "2"); + }else { + startPoint.put("point_status", "1"); + } + startPoint.put("update_time", DateUtil.now()); + pointTab.update(startPoint, "point_code = '" + start_point_code + "'"); } - point_code1.setLock_type("00"); - pointTab.update(JSONObject.parseObject(JSON.toJSONString(point_code1))); } } @@ -91,48 +97,90 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").getResultJSONArray(0); + JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0); for (int i = 0; i < taskArr.size(); i++) { // 创建任务 JSONObject jsonTask = taskArr.getJSONObject(i); - String vehicle_type = jsonTask.getString("vehicle_type"); - //判断叠盘位是否有任务 - JSONObject taskObj = taskTab.query("is_delete='0' and task_type='" + jsonTask.getString("gjxsqkp") + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(taskObj)) { - jsonTask.put("task_status", TaskStatusEnum.SURE_END.getCode()); - jsonTask.put("point_code1", ""); - } else {//叠盘架无执行中的AGV任务 + String vehicle_type = jsonTask.getString("vehicle_type"); - //判断叠盘架是否有载具 - JSONObject dpjPoint = pointTab.query("is_used ='1' and lock_type='00' and is_delete='0' and region_code='DPJQB01' and vehicle_qty >0 and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(dpjPoint)) { - jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - jsonTask.put("point_code1", dpjPoint.getString("point_code")); - //锁住点位 - dpjPoint.put("lock_type", "01"); - pointTab.update(dpjPoint); - } else {//去缓存位和养生A区找 - JSONObject whereParam = new JSONObject(); - whereParam.put("flag", "1"); - whereParam.put("vehicle_type", jsonTask.getString("vehicle_type")); - JSONObject outJsonObj = WQL.getWO("ST_VEHICLE_OUT_01").addParamMap(whereParam).process().uniqueResult(0); - jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); - jsonTask.put("point_code1", outJsonObj.getString("point_code")); - //锁住点位 - dpjPoint.put("lock_type", "01"); - pointTab.update(outJsonObj); - } + //判断叠盘位是否有另外任务 + JSONObject taskObj = taskTab.query("is_delete='0' and handle_class='" + this.THIS_CLASS + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "' and task_id <> " + jsonTask.getLong("task_id")).uniqueResult(0); + if (ObjectUtil.isNotEmpty(taskObj)) continue; + //判断叠盘架是否有载具 + JSONObject dpjPoint = pointTab.query("is_used ='1' and lock_type='00' and is_delete='0' and region_code='DPJQB01' and vehicle_qty >0 and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(dpjPoint)) { + jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + jsonTask.put("point_code1", dpjPoint.getString("point_code")); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + + //锁住点位 + dpjPoint.put("lock_type", "01"); + pointTab.update(dpjPoint); + } else { + //查找叠盘架编码 + JSONObject dpjPoint1 = pointTab.query("is_delete='0' and region_code='DPJQB01' and can_vehicle_type like '%" + vehicle_type + "%'").uniqueResult(0); + + //叠盘架无载具:1-判断是否有在执行中的堆叠任务,有则等堆叠任务完成以后再去,否则去去缓存位和养生A区找 + JSONObject ddTask = taskTab.query("is_delete='0' and point_code2 = '" + dpjPoint1.getString("point_code") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(ddTask)) continue; + + //去缓存位和养生A区找,生成到叠盘架的任务 + JSONObject whereParam = new JSONObject(); + whereParam.put("flag", "1"); + whereParam.put("vehicle_type", '%'+jsonTask.getString("vehicle_type")+"%"); + JSONObject outJsonObj = WQL.getWO("ST_VEHICLE_OUT_01").addParamMap(whereParam).process().uniqueResult(0); + + // 空托盘缓存货架或者养生A区------>叠盘架B区 + JSONObject param = new JSONObject(); + Long task_id = IdUtil.getSnowflake(1, 1).nextId(); + Long task_group_id = IdUtil.getSnowflake(1, 1).nextId(); + param.put("task_id", task_id); + param.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + param.put("vehicle_type", vehicle_type); + param.put("priority", 100); + param.put("handle_class", THIS_CLASS); + param.put("task_type", "kzj"); + param.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + param.put("task_group_id", task_group_id); + param.put("sort_seq", 1); + param.put("point_code1", outJsonObj.getString("point_code")); + param.put("point_code2", dpjPoint1.getString("point_code")); + param.put("create_name", SecurityUtils.getCurrentUsername()); + param.put("create_id", SecurityUtils.getCurrentUserId()); + param.put("create_time", DateUtil.now()); + taskTab.insert(param); + + //锁住起点 + outJsonObj.put("lock_type", "01"); + pointTab.update(outJsonObj); + this.renotifyAcs(String.valueOf(task_id)); + + + jsonTask.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + jsonTask.put("point_code1", outJsonObj.getString("point_code")); + jsonTask.put("sort_seq", 2); + jsonTask.put("task_group_id", task_group_id); + jsonTask.put("remark", "叠盘架无载具!"); + taskTab.update(jsonTask); + + //锁住点位 + dpjPoint1.put("lock_type", "01"); + pointTab.update(outJsonObj); } + } } + @Override @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + String end_point_code = form.getString("point_code2"); String vehicle_type = form.getString("vehicle_type"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/ST_VEHICLE_OUT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/ST_VEHICLE_OUT_01.wql index 7034b3a..d99a13b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/ST_VEHICLE_OUT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/wql/ST_VEHICLE_OUT_01.wql @@ -52,13 +52,13 @@ p.is_used = '1' AND p.is_delete = '0' AND p.lock_type = '00' - and region_code in ('DPJQB01','YSQA01') + and region_code in ('KTPHCQB01','YSQA01') OPTION 输入.vehicle_type <> "" - point.vehicle_type like 输入.vehicle_type + p.vehicle_type like 输入.vehicle_type ENDOPTION - order by out_empty_seq,point.vehicle_qty + order by out_empty_seq,p.vehicle_qty ENDSELECT ENDQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index 1246bac8f20ee8ae12742fbde861bb8391154bcc..1b973aad8897bdd8d627574775bc7e9e2ae99768 100644 GIT binary patch delta 17537 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 Uaqmclq)c2O_tsWTl2sZ1AFJauJOBUy diff --git a/lms/nladmin-system/src/main/resources/logback-spring.xml b/lms/nladmin-system/src/main/resources/logback-spring.xml index f8547a7..11bff15 100644 --- a/lms/nladmin-system/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/src/main/resources/logback-spring.xml @@ -77,17 +77,25 @@ https://juejin.cn/post/6844903775631572999 - + - + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/sch/task/index.vue b/lms/nladmin-ui/src/views/wms/sch/task/index.vue index 1ed03eb..977308c 100644 --- a/lms/nladmin-ui/src/views/wms/sch/task/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/task/index.vue @@ -124,7 +124,7 @@ - +