From 6e443006988187571cdb7d99ccb0d3bba1c1c048 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Fri, 25 Jul 2025 15:47:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80agv=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=20=20agv=E8=AF=B7=E6=B1=82=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/api/service/IApiService.java | 25 ++++- .../api/service/impl/ApiServiceImpl.java | 97 ++++++++++++++----- .../scheduleTask/ssj/bs/BsInSsjThread.java | 64 ++---------- .../scheduleTask/ssj/bs/BsOutSsjThread.java | 4 +- .../scheduleTask/ssj/js/JsInSsjThread.java | 73 ++------------ 5 files changed, 109 insertions(+), 154 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java index b31e5ab..dbf7244 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java @@ -11,6 +11,7 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse; import com.ruoyi.api.domain.wcs2wms.MydoJob; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.device.agv.domain.AgvQueue; import java.util.HashMap; import java.util.List; @@ -39,11 +40,22 @@ public interface IApiService public AjaxResult receiveOutMydoJob(MydoJob mydoJob); /** - * 取消AGV任务 - * - * @param cancelTaskRequest + * 生成agv队列 + * @param code1 起点 + * @param code2 终点 + * @param wmsTrayCode 容器码 托盘料箱码/容器码 + * @param wmsTaskNo mydojob 任务 + * @param wmsTaskType 1-入库 2-出库 3-agv搬运 * @return */ + public AgvQueue createAgvQueue(String code1,String code2,String wmsTrayCode,String wmsTaskNo,String wmsTaskType); + + /** + * 取消AGV任务 + * + * @param cancelTaskRequest + * @return + */ public CancelTaskResponse cancelTask(CancelTaskRequest cancelTaskRequest); /** @@ -91,4 +103,11 @@ public interface IApiService * @return */ public AjaxResult sendOutMydoJobStatus(Map param) ; + + /** + * 下发agv任务 + * @param agvQueue + * @return + */ + public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 5833502..48268e3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -16,6 +16,7 @@ import com.ruoyi.api.domain.agv.continueTask.ContinueTaskRequest; import com.ruoyi.api.domain.agv.continueTask.ContinueTaskResponse; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse; +import com.ruoyi.api.domain.agv.genAgvSchedulingTask.PositionCodeData; import com.ruoyi.api.domain.wcs2wms.MydoJob; import com.ruoyi.api.service.IApiService; import com.ruoyi.common.core.domain.AjaxResult; @@ -27,14 +28,12 @@ import com.ruoyi.schedule.plcRead.ssj.PlcRead; import com.ruoyi.schedule.plcRead.ssj.domain.SendData; import com.ruoyi.schedule.plcRead.util.Tools; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.ruoyi.common.Constant.*; @@ -73,15 +72,16 @@ public class ApiServiceImpl implements IApiService { /** * 下发agv编码 + * * @param genAgvSchedulingTaskRequest * @return */ @Override public GenAgvSchedulingTaskResponse genAgvSchedulingTask(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest) { RequestLog requestLog = requestLogService.getRequestLog(GEN_AGV_SCHEDULING_TASK, "生成AGV任务", JSONUtil.toJsonStr(genAgvSchedulingTaskRequest)); - if("1".equals(requestLog.getIsSuccessful())){ + if ("1".equals(requestLog.getIsSuccessful())) { return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); - }else { + } else { GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse(); response.setCode(500); response.setMessage("请求失败"); @@ -122,10 +122,9 @@ public class ApiServiceImpl implements IApiService { */ @Override public AjaxResult receiveAgvMoveJob(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest) { - //todo 生成agvQueue队列 - AgvQueue agvQueue = new AgvQueue(); - agvQueueService.insertAgvQueue(agvQueue); - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = genAgvSchedulingTask(genAgvSchedulingTaskRequest); + List positionCodePath = genAgvSchedulingTaskRequest.getPositionCodePath(); + AgvQueue agvQueue = createAgvQueue(positionCodePath.get(0).getPositionCode(), positionCodePath.get(1).getPositionCode(), "", "", "3"); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); if (genAgvSchedulingTaskResponse.getCode() == 0) { return AjaxResult.success(); } @@ -282,27 +281,48 @@ public class ApiServiceImpl implements IApiService { */ @Override public AjaxResult receiveOutMydoJob(MydoJob mydoJob) { + AgvQueue agvQueue = createAgvQueue(mydoJob.getCargoSpaceId(),mydoJob.getExitId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"2"); + if (agvQueue != null){ + return AjaxResult.success(agvQueue); + }else { + return AjaxResult.error("生成agv任务失败"); + } + } + + /** + * 生成agv队列 + * @param code1 起点 + * @param code2 终点 + * @param wmsTrayCode 容器码 托盘料箱码/容器码 + * @param wmsTaskNo mydojob 任务 + * @param wmsTaskType 1-入库 2-出库 3-agv搬运 + * @return + */ + @Override + public AgvQueue createAgvQueue(String code1,String code2,String wmsTrayCode,String wmsTaskNo,String wmsTaskType) { + //生成ctu执行队列 AgvQueue agvQueue = new AgvQueue(); String reqCode = IdUtil.fastSimpleUUID(); String taskCode = IdUtil.fastSimpleUUID(); agvQueue.setReqCode(reqCode); agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); agvQueue.setAgvType("CTU"); - agvQueue.setPositionCode1(mydoJob.getCargoSpaceId()); - agvQueue.setPositionCode2(mydoJob.getExitId()); - agvQueue.setTaskCode(taskCode); - agvQueue.setWmsTaskType("2"); - agvQueue.setWmsTraycode(mydoJob.getTrayCode()); - agvQueue.setWmsTaskNo(mydoJob.getTaskNo()); + agvQueue.setPositionCode1(code1); + agvQueue.setPositionCode2(code2); + agvQueue.setTaskType("F01"); + agvQueue.setCtnrType("0"); + agvQueue.setCtnrCode("0"); + agvQueue.setCtnrNum("0"); + agvQueue.setTaskMode("0"); + agvQueue.setPriority("10"); + agvQueue.setRequest("0"); + agvQueue.setWmsTraycode(wmsTrayCode); + agvQueue.setWmsTaskNo(wmsTaskNo); agvQueue.setStatus("0"); - int i = agvQueueService.insertAgvQueue(agvQueue); - if (i > 0) { - log.info("向AGV下任务成功"); - return AjaxResult.success("向AGV下任务成功"); - } else { - log.info("向AGV下任务失败"); - return AjaxResult.error("向AGV下任务失败"); - } + agvQueue.setTaskCode(taskCode); + agvQueue.setWmsTaskType(wmsTaskType); + agvQueueService.insertAgvQueue(agvQueue); + return agvQueue; } /** @@ -328,4 +348,33 @@ public class ApiServiceImpl implements IApiService { return BeanUtil.toBean(requestLog.getResponseBody(), ContinueTaskResponse.class); } + + + /** + * 请求海康生成agv任务,并修改wms任务状态 + * + * @param agvQueue + */ + @Override + public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { + //todo 请求ctu + GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); + genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); + genAgvSchedulingTaskRequest.setTaskMode("0"); + genAgvSchedulingTaskRequest.setPriority("10"); + genAgvSchedulingTaskRequest.setTaskTyp("F01"); + genAgvSchedulingTaskRequest.setCtnrCode("0"); + genAgvSchedulingTaskRequest.setCtnrNum("0"); + genAgvSchedulingTaskRequest.setTaskMode("0"); + genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getWmsTaskNo()); + genAgvSchedulingTaskRequest.setAgvTyp("CTU"); + genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); + genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); + List positionCodePath = new ArrayList<>(); + positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode1(), "0")); + positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode2(), "0")); + genAgvSchedulingTaskRequest.setPositionCodePath(positionCodePath); + return genAgvSchedulingTask(genAgvSchedulingTaskRequest); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java index e0e67b3..2501f37 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java @@ -123,9 +123,9 @@ public class BsInSsjThread implements Runnable { MydoJob mydoJob = apiService.requestEnter(mydoJobParam); if (ObjUtil.isNotNull(mydoJob)) { //生成agv队列 - AgvQueue agvQueue = createAgvQueue(lljCode, mydoJob); + AgvQueue agvQueue = apiService.createAgvQueue(lljCode, mydoJob.getCargoSpaceId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"1"); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = apiService.requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -169,9 +169,9 @@ public class BsInSsjThread implements Runnable { if (ObjUtil.isNotNull(mydoJob)) { //生成agv队列 - AgvQueue agvQueue = createAgvQueue(inSsjDevice.getDeviceCode(), mydoJob); + AgvQueue agvQueue = apiService.createAgvQueue(inSsjDevice.getName(), mydoJob.getCargoSpaceId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"1"); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue( agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = apiService.requestAgvQueue( agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -186,7 +186,7 @@ public class BsInSsjThread implements Runnable { AgvQueue agvQueue = agvQueues.get(0); if ("0".equals(agvQueue.getStatus())){ //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = apiService.requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -199,59 +199,7 @@ public class BsInSsjThread implements Runnable { } } - /** - * 生成入库AGV队列 - * - * @param positionCode1 - * @param mydoJob - * @return - */ - private AgvQueue createAgvQueue(String positionCode1, MydoJob mydoJob) { - //生成ctu执行队列 - AgvQueue agvQueue = new AgvQueue(); - String reqCode = IdUtil.fastSimpleUUID(); - String taskCode = IdUtil.fastSimpleUUID(); - agvQueue.setReqCode(reqCode); - agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); - agvQueue.setAgvType("CTU"); - agvQueue.setPositionCode1(positionCode1); - agvQueue.setPositionCode2(mydoJob.getCargoSpaceId()); - agvQueue.setTaskType("F01"); - agvQueue.setCtnrType("0"); - agvQueue.setCtnrCode("0"); - agvQueue.setCtnrNum("0"); - agvQueue.setTaskMode("0"); - agvQueue.setPriority("10"); - agvQueue.setRequest("0"); - agvQueue.setWmsTraycode(mydoJob.getTrayCode()); - agvQueue.setWmsTaskNo(mydoJob.getTaskNo()); - agvQueue.setStatus("0"); - agvQueue.setTaskCode(taskCode); - agvQueue.setWmsTaskType("1"); - agvQueueService.insertAgvQueue(agvQueue); - return agvQueue; - } - /** - * 请求海康生成agv任务,并修改wms任务状态 - * - * @param agvQueue - */ - private GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { - //todo 请求ctu - GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); - genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); - genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setPriority("10"); - genAgvSchedulingTaskRequest.setTaskTyp("F01"); - genAgvSchedulingTaskRequest.setCtnrCode("0"); - genAgvSchedulingTaskRequest.setCtnrNum("0"); - genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getWmsTaskNo()); - genAgvSchedulingTaskRequest.setAgvTyp("CTU"); - genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); - genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); - return apiService.genAgvSchedulingTask(genAgvSchedulingTaskRequest); - } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java index 37f8357..fae7c37 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java @@ -107,7 +107,7 @@ public class BsOutSsjThread implements Runnable { List agvQueueList = agvQueueService.selectAgvQueueList(agvQueue); if (CollUtil.isNotEmpty(agvQueueList)){ for (AgvQueue queue : agvQueueList) { - requestAgvQueue(queue); + apiService.requestAgvQueue(queue); } } } @@ -128,7 +128,7 @@ public class BsOutSsjThread implements Runnable { BasFluentFrame basFluentFrame = basFluentFrameService.selectBasFluentFrameOrderByAllotNum(queue.getPositionCode2()); queue.setPositionCode2(basFluentFrame.getLocationName()); agvQueueService.updateAgvQueue(queue); - requestAgvQueue(queue); + apiService.requestAgvQueue(queue); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java index a4abc03..2b2e6ff 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java @@ -1,24 +1,18 @@ package com.ruoyi.schedule.scheduleTask.ssj.js; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; -import com.ruoyi.common.utils.spring.SpringUtils; -import com.ruoyi.device.agv.domain.AgvQueue; -import com.ruoyi.device.agv.service.IAgvQueueService; -import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse; import com.ruoyi.api.domain.wcs2wms.MydoJob; import com.ruoyi.api.service.IApiService; +import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.device.agv.domain.AgvQueue; +import com.ruoyi.device.agv.service.IAgvQueueService; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.schedule.plcRead.ssj.PlcRead; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -105,9 +99,9 @@ public class JsInSsjThread implements Runnable { if (ObjUtil.isNotNull(mydoJob)) { //生成agv队列 - AgvQueue agvQueue = createAgvQueue(inSsjDevice.getDeviceCode(), mydoJob); + AgvQueue agvQueue = apiService.createAgvQueue(inSsjDevice.getName(), mydoJob.getCargoSpaceId(),mydoJob.getTrayCode(),mydoJob.getTaskNo(),"1"); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = apiService.requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -122,7 +116,7 @@ public class JsInSsjThread implements Runnable { AgvQueue agvQueue = agvQueues.get(0); if ("0".equals(agvQueue.getStatus())){ //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = apiService.requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -135,59 +129,4 @@ public class JsInSsjThread implements Runnable { } } - /** - * 生成入库AGV队列 - * - * @param positionCode1 - * @param mydoJob - * @return - */ - private AgvQueue createAgvQueue(String positionCode1, MydoJob mydoJob) { - //生成ctu执行队列 - //生成ctu执行队列 - AgvQueue agvQueue = new AgvQueue(); - String reqCode = IdUtil.fastSimpleUUID(); - String taskCode = IdUtil.fastSimpleUUID(); - agvQueue.setReqCode(reqCode); - agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); - agvQueue.setAgvType("CTU"); - agvQueue.setPositionCode1(positionCode1); - agvQueue.setPositionCode2(mydoJob.getCargoSpaceId()); - agvQueue.setTaskType("F01"); - agvQueue.setCtnrType("0"); - agvQueue.setCtnrCode("0"); - agvQueue.setCtnrNum("0"); - agvQueue.setTaskMode("0"); - agvQueue.setPriority("10"); - agvQueue.setRequest("0"); - agvQueue.setWmsTraycode(mydoJob.getTrayCode()); - agvQueue.setWmsTaskNo(mydoJob.getTaskNo()); - agvQueue.setStatus("0"); - agvQueue.setTaskCode(taskCode); - agvQueue.setWmsTaskType("1"); - agvQueueService.insertAgvQueue(agvQueue); - return agvQueue; - } - - /** - * 请求海康生成agv任务,并修改wms任务状态 - * - * @param agvQueue - */ - private GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { - //todo 请求ctu - GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); - genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); - genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setPriority("10"); - genAgvSchedulingTaskRequest.setTaskTyp("F01"); - genAgvSchedulingTaskRequest.setCtnrCode("0"); - genAgvSchedulingTaskRequest.setCtnrNum("0"); - genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getWmsTaskNo()); - genAgvSchedulingTaskRequest.setAgvTyp("CTU"); - genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); - genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); - return apiService.genAgvSchedulingTask(genAgvSchedulingTaskRequest); - } }