2026.3.18 晚
新增agv获取输送机接口
This commit is contained in:
@@ -1,14 +1,22 @@
|
|||||||
package com.ruoyi.api.controller;
|
package com.ruoyi.api.controller;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest;
|
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest;
|
||||||
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse;
|
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse;
|
||||||
|
import com.ruoyi.api.mapper.RequestLogMapper;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
|
import com.ruoyi.api.service.impl.RequestLogServiceImpl;
|
||||||
|
import com.ruoyi.common.annotation.RequestLog;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.device.ssj.domain.DeviceSsj;
|
||||||
|
import com.ruoyi.job.domain.MydoJob;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,13 +26,15 @@ import java.util.Map;
|
|||||||
@RequestMapping("/agv/api")
|
@RequestMapping("/agv/api")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class AgvController extends BaseController {
|
public class AgvController extends BaseController {
|
||||||
|
@Autowired
|
||||||
|
private RequestLogServiceImpl requestLogService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IApiService apiService;
|
private IApiService apiService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* agv执行状态返回接口
|
* agv执行状态返回接口
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -34,15 +44,14 @@ public class AgvController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* agv搬运作业
|
* agv搬运作业
|
||||||
* @param param{
|
*
|
||||||
* startPoint:起始点
|
* @param param{ startPoint:起始点
|
||||||
* endPoint:结束点
|
* endPoint:结束点
|
||||||
* containerCode:容器编号
|
* containerCode:容器编号
|
||||||
* taskNo:任务号
|
* taskNo:任务号
|
||||||
* }
|
* }
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/receiveAgvMoveJob")
|
@PostMapping("/receiveAgvMoveJob")
|
||||||
@@ -50,4 +59,26 @@ public class AgvController extends BaseController {
|
|||||||
return apiService.receiveAgvMoveJob(param);
|
return apiService.receiveAgvMoveJob(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// agv 获取请求获取输送机空闲信号
|
||||||
|
@PostMapping("/getDeviceMsg")
|
||||||
|
@RequestLog
|
||||||
|
public AjaxResult getDeviceMsg(@RequestBody Map<String, String> param) {
|
||||||
|
DeviceSsj ssj = apiService.getDeviceMsg(param.get("taskNo"));
|
||||||
|
com.ruoyi.api.domain.RequestLog requestLog = new com.ruoyi.api.domain.RequestLog();
|
||||||
|
requestLog.setRequestBody(JSONUtil.toJsonStr(param));
|
||||||
|
requestLog.setRequestMethod("getDeviceMsg");
|
||||||
|
requestLog.setIsSuccessful("1");
|
||||||
|
requestLog.setRequestTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||||
|
requestLog.setRequestUrl("http://192.168.188.236:8081/agv/api/getDeviceMsg");
|
||||||
|
requestLog.setRequestMethod("post");
|
||||||
|
requestLog.setSourceSystem("agv");
|
||||||
|
requestLog.setTargetSystem("wcs");
|
||||||
|
requestLog.setEndpoint("获取输送机信号");
|
||||||
|
requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success(ssj)));
|
||||||
|
requestLog.setResponseStatus("1");
|
||||||
|
requestLogService.insertRequestLog(requestLog);
|
||||||
|
return AjaxResult.success(ssj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRespons
|
|||||||
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
||||||
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.device.ssj.domain.DeviceSsj;
|
||||||
import com.ruoyi.job.domain.MydoJob;
|
import com.ruoyi.job.domain.MydoJob;
|
||||||
import com.ruoyi.queue.agv.domain.AgvQueue;
|
import com.ruoyi.queue.agv.domain.AgvQueue;
|
||||||
|
|
||||||
@@ -136,4 +137,8 @@ public interface IApiService
|
|||||||
AjaxResult allotSpace(JobParam jobParam);
|
AjaxResult allotSpace(JobParam jobParam);
|
||||||
|
|
||||||
AjaxResult JobFinish(Map<String, Object> param);
|
AjaxResult JobFinish(Map<String, Object> param);
|
||||||
|
|
||||||
|
DeviceSsj getDeviceMsg(String taskNo);
|
||||||
|
|
||||||
|
DeviceSsj getDeviceMsgSsj(String entranceId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
|||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.device.ssj.domain.DeviceSsj;
|
||||||
|
import com.ruoyi.device.ssj.service.IDeviceSsjService;
|
||||||
import com.ruoyi.job.domain.MydoJob;
|
import com.ruoyi.job.domain.MydoJob;
|
||||||
import com.ruoyi.job.service.IMydoJobService;
|
import com.ruoyi.job.service.IMydoJobService;
|
||||||
import com.ruoyi.queue.agv.domain.AgvQueue;
|
import com.ruoyi.queue.agv.domain.AgvQueue;
|
||||||
@@ -51,6 +53,8 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
private IAgvQueueService agvQueueService;
|
private IAgvQueueService agvQueueService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IMydoJobService mydoJobService;
|
private IMydoJobService mydoJobService;
|
||||||
|
@Autowired
|
||||||
|
private IDeviceSsjService deviceSsjService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -447,4 +451,21 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceSsj getDeviceMsg(String taskNo) {
|
||||||
|
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(taskNo));
|
||||||
|
DeviceSsj ssj = new DeviceSsj();
|
||||||
|
ssj.setDeviceCode(mydoJob.getEntranceId());
|
||||||
|
List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(ssj);
|
||||||
|
return deviceSsjs.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceSsj getDeviceMsgSsj(String entranceId) {
|
||||||
|
DeviceSsj ssj = new DeviceSsj();
|
||||||
|
ssj.setDeviceCode(entranceId);
|
||||||
|
List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(ssj);
|
||||||
|
return deviceSsjs.get(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.ruoyi.queue.srgv.mapper;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
|
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 四向小车任务队列Mapper接口
|
* 四向小车任务队列Mapper接口
|
||||||
|
|||||||
@@ -309,7 +309,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
minXDistance = currentXDistance;
|
minXDistance = currentXDistance;
|
||||||
bestSrgv = srgv;
|
bestSrgv = srgv;
|
||||||
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
} else if (currentYDistance == minYDistance) {
|
}
|
||||||
|
if (currentYDistance == minYDistance) {
|
||||||
// 情况2:Y轴距离相同,比较X轴距离
|
// 情况2:Y轴距离相同,比较X轴距离
|
||||||
if (currentXDistance < minXDistance) {
|
if (currentXDistance < minXDistance) {
|
||||||
minXDistance = currentXDistance;
|
minXDistance = currentXDistance;
|
||||||
@@ -569,7 +570,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
minXDistance = currentXDistance;
|
minXDistance = currentXDistance;
|
||||||
bestSrgv = srgv;
|
bestSrgv = srgv;
|
||||||
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
} else if (currentYDistance == minYDistance) {
|
}
|
||||||
|
if (currentYDistance == minYDistance) {
|
||||||
// 情况2:Y轴距离相同,比较X轴距离
|
// 情况2:Y轴距离相同,比较X轴距离
|
||||||
if (currentXDistance < minXDistance) {
|
if (currentXDistance < minXDistance) {
|
||||||
minXDistance = currentXDistance;
|
minXDistance = currentXDistance;
|
||||||
@@ -1465,7 +1467,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
case "2":
|
case "2":
|
||||||
MydoJob mydoJobOut = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo()));
|
MydoJob mydoJobOut = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo()));
|
||||||
if (mydoJobOut != null && (cargoPlaceSite.equals(currSite))) {
|
if (mydoJobOut != null && (cargoPlaceSite.equals(currSite))) {
|
||||||
log.info("1471 taskNo:[{}],currSite:[{}],cargoPlaceSite:[{}]",wcsSrgvQueue.getTaskNo(),currSite,cargoPlaceSite);
|
log.info("1471 taskNo:[{}],currSite:[{}],cargoPlaceSite:[{}]", wcsSrgvQueue.getTaskNo(), currSite, cargoPlaceSite);
|
||||||
JobCallBack jobCallBack = new JobCallBack();
|
JobCallBack jobCallBack = new JobCallBack();
|
||||||
jobCallBack.setType(wcsSrgvQueue.getDefault02());
|
jobCallBack.setType(wcsSrgvQueue.getDefault02());
|
||||||
jobCallBack.setMydojobId(mydoJobOut.getJobId());
|
jobCallBack.setMydojobId(mydoJobOut.getJobId());
|
||||||
@@ -1513,16 +1515,16 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
{
|
{
|
||||||
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
||||||
}
|
}
|
||||||
// 如果是空车且 任务是点到点并且目标点是“070301”
|
// 如果是空车且 任务是点到点并且目标点是“070301”
|
||||||
}else if ("1".equals(taskType)&&wcsSrgvQueue.getDefault02().equals("4")&&wcsSrgvQueue.getEndSite().equals("070301")){
|
} else if ("1".equals(taskType) && wcsSrgvQueue.getDefault02().equals("4") && wcsSrgvQueue.getEndSite().equals("070301")) {
|
||||||
String endSite = "";
|
String endSite = "";
|
||||||
String xfType = "";
|
String xfType = "";
|
||||||
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
||||||
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
||||||
// 取货点地图和放货点地图不为空
|
// 取货点地图和放货点地图不为空
|
||||||
if (wcsSrgvMapq != null && wcsSrgvMapf != null) {
|
if (wcsSrgvMapq != null && wcsSrgvMapf != null) {
|
||||||
//如果是同层,终点为取货点
|
//如果是同层,终点为取货点
|
||||||
endSite = cargoPickSite;
|
endSite = cargoPickSite;
|
||||||
// 更新目标点,修改执行队列
|
// 更新目标点,修改执行队列
|
||||||
wcsSrgvQueue.setEndSite(endSite);
|
wcsSrgvQueue.setEndSite(endSite);
|
||||||
wcsSrgvQueue.setDefault02("4");
|
wcsSrgvQueue.setDefault02("4");
|
||||||
|
|||||||
Reference in New Issue
Block a user