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 1246bac..1b973aa 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls differ 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 @@ - +