统一agv生成代码 agv请求代码

This commit is contained in:
liuhanqing
2025-07-25 15:47:03 +08:00
parent fd97256144
commit 6e44300698
5 changed files with 109 additions and 154 deletions

View File

@@ -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<String, Object> param) ;
/**
* 下发agv任务
* @param agvQueue
* @return
*/
public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue);
}

View File

@@ -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<PositionCodeData> 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<PositionCodeData> positionCodePath = new ArrayList<>();
positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode1(), "0"));
positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode2(), "0"));
genAgvSchedulingTaskRequest.setPositionCodePath(positionCodePath);
return genAgvSchedulingTask(genAgvSchedulingTaskRequest);
}
}

View File

@@ -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);
}
}

View File

@@ -107,7 +107,7 @@ public class BsOutSsjThread implements Runnable {
List<AgvQueue> 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);
}
}

View File

@@ -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);
}
}