小车
This commit is contained in:
@@ -7,6 +7,7 @@ import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -46,8 +47,14 @@ public class AgvController extends BaseController {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/receiveAgvMoveJob")
|
||||
public AjaxResult receiveAgvMoveJob(@RequestBody Map<String, String> param) {
|
||||
public int receiveAgvMoveJob(@RequestBody Map<String, String> param) {
|
||||
return apiService.receiveAgvMoveJob(param);
|
||||
}
|
||||
|
||||
//@Scheduled(cron = "0/5 * * * * ?")
|
||||
public void sendAgvTask(){
|
||||
apiService.sendAgvTask();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,143 +14,187 @@ import java.util.UUID;
|
||||
@Data
|
||||
public class GenAgvSchedulingTaskRequest {
|
||||
/**
|
||||
* 请求编号
|
||||
* 同一个请求重复提交, 使用同一编号
|
||||
* 起始站点
|
||||
*/
|
||||
@NotNull
|
||||
private String reqCode = UUID.randomUUID().toString();
|
||||
private String FromStation;
|
||||
|
||||
/**
|
||||
* 请求时间
|
||||
* 格式: “yyyy-MM-dd HH:mm:ss”
|
||||
* 目的站点
|
||||
*/
|
||||
private String reqTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
private String ToStation;
|
||||
|
||||
/**
|
||||
* 客户端编号
|
||||
* 客户端编号,如PDA,HCWMS等
|
||||
* 任务类型(以实际的任务类型为准)
|
||||
*/
|
||||
private String clientCode;
|
||||
private String Type;
|
||||
|
||||
/**
|
||||
* 令牌号
|
||||
* 由调度系统颁发
|
||||
* 类名
|
||||
*/
|
||||
private String tokenCode;
|
||||
private String ClassName;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
* 内置任务类型:
|
||||
* 厂内货架搬运: F01
|
||||
* 厂内货架空满交换: F02
|
||||
* 辊筒搬运接驳:F03
|
||||
* 厂内货架出库AGV待命:F04
|
||||
* 旋转货架: F05
|
||||
* 厂内电梯任务: F06
|
||||
* 以下为叉车专用任务类型
|
||||
* 高位货架到工作台: F11
|
||||
* 工作台到高位货架: F12
|
||||
* 巷道到工作台: F13
|
||||
* 工作台到巷道: F14
|
||||
* 高位货架到工作台(接驳) : F15
|
||||
* 工作台到高位货架 (接驳) : F16
|
||||
* 巷道到工作台(接驳) : F17
|
||||
* 工作台到巷道(接驳) : F18
|
||||
* 叉车电梯主任务: F20
|
||||
* 任务引导ID
|
||||
*/
|
||||
@NotNull
|
||||
private String taskTyp;
|
||||
private String TaskGuideId;
|
||||
/**
|
||||
* 容器类型(叉车/CTU专用) 叉车项目必传
|
||||
* 订单 ID
|
||||
*/
|
||||
private String ctnrTyp;
|
||||
private String OrderId;
|
||||
|
||||
/**
|
||||
* 容器编号 (叉车/CTU专用)
|
||||
* 触发ID
|
||||
*/
|
||||
private String ctnrCode; //
|
||||
private String TriggerId;
|
||||
|
||||
/**
|
||||
* 容器数量(叉车堆叠专用),默认值1,仅记录堆叠的数量不记录堆叠的每个容器号
|
||||
* 扩展字段4
|
||||
*/
|
||||
private String ctnrNum;
|
||||
private String Extend4;
|
||||
|
||||
/**
|
||||
* 任务模式
|
||||
* 0-普通move 1-出库move 2-入库move 3-移库move
|
||||
* 扩展字段5
|
||||
*/
|
||||
private String taskMode;
|
||||
private String Extend5;
|
||||
|
||||
/**
|
||||
* 工作位
|
||||
* 与RCS-2000端配置的位置名称一致, 工作位名称为字母\数字\或组合
|
||||
* 扩展字段6
|
||||
*/
|
||||
private String wbCode;
|
||||
private String Extend6;
|
||||
|
||||
/**
|
||||
* 位置路径
|
||||
* AGV关键路径位置集合,与任务类型中模板配置的位置路径一一对应。待现场地图部署、配置完成后可获取
|
||||
* 扩展字段7
|
||||
*/
|
||||
private List<PositionCodeData> positionCodePath;
|
||||
private String Extend7;
|
||||
|
||||
/**
|
||||
* 货架编号
|
||||
* 不指定货架可以为空
|
||||
* 扩展字段8
|
||||
*/
|
||||
private String podCode;
|
||||
private String Extend8;
|
||||
|
||||
/**
|
||||
* 货架方向
|
||||
* “180”,”0”,”90”,”-90” 分别对应地图的”左”,”右”,”上”,”下”
|
||||
* 不指定方向可以为空
|
||||
* 如果终点不是工作台或工作台未配置操作方向则货架拣货方向podDir作为终点方向
|
||||
* 如果工作台配有操作方向,则系统会根据货架拣货方向podDir和工作台操作方向计算货架终点方向
|
||||
* 扩展字段9
|
||||
*/
|
||||
private String podDir;
|
||||
private String Extend9;
|
||||
|
||||
/**
|
||||
* 货架类型, 传空时表示随机找个货架
|
||||
* 找空货架传参方式如下:
|
||||
* -1: 代表不关心货架类型, 找到空货架即可.
|
||||
* -2: 代表从工作位获取关联货架类型, 如果未配置, 只找空货架.
|
||||
* 货架类型编号: 只找该货架类型的空货架
|
||||
* 任务附加信息
|
||||
*/
|
||||
private String podTyp;
|
||||
private TaskAdditionallInfo TaskAdditionallInfo;
|
||||
|
||||
/**
|
||||
* 物料批次
|
||||
* 物料批次或货架上的物料唯一编码,生成任务单时,货架与物料直接绑定时使用. (通过同时传podCode和materialLot来绑定或通过 wbCode 找到位置上的货架和materialLot来绑定)
|
||||
* 如果是区域/策略内查找货架,可以匹配对应物料批次的货架,支持以下值:
|
||||
* 0:区域/策略内查找空货架
|
||||
* 1:区域/策略内查找满货架
|
||||
* 其他值:查找指定物料批次对应的货架
|
||||
* 巷道任务通过该字段传入特征值
|
||||
* 任务附加信息类
|
||||
*/
|
||||
private String materialLot;
|
||||
/**
|
||||
* 优先级
|
||||
* 从(1~127)级,最大优先级最高。为空时,采用任务模板的优先级
|
||||
*/
|
||||
private String priority;
|
||||
/**
|
||||
* AGV编号
|
||||
* 填写表示指定某一编号的AGV执行该任务
|
||||
*/
|
||||
private String agvCode;
|
||||
/**
|
||||
* 任务单号
|
||||
* 选填, 不填系统自动生成
|
||||
*/
|
||||
private String taskCode;
|
||||
/**
|
||||
* 组编号
|
||||
* CTU场景下用于按组出库,同组任务优先拼车。 如业务需要任务组间或组内按顺序出库,则需调用料箱顺序出库(CTU)接口。
|
||||
* 潜伏式场景下,通过组号来管理顺序出库的顺序,组号小的优先出库。
|
||||
*/
|
||||
private String groupId;
|
||||
/**
|
||||
* 设备类型
|
||||
*/
|
||||
private String agvTyp;
|
||||
/**
|
||||
* 选择策略
|
||||
* 区域/策略中挑选货架以及根据物料批次挑选货架时的先进先出规则,支持以下4个值:
|
||||
* 1:按照货架到达储位的时间顺序,先进先出
|
||||
* 2:按照货架到达储位的时间顺序,先进后出
|
||||
* 9:按照货架绑定物料批次的时间顺序,先进先出
|
||||
* 10:按照货架绑定物料批次的时间顺序,先进后出
|
||||
*/
|
||||
private String positionSelStrategy;
|
||||
/**
|
||||
* 自定义数据
|
||||
*/
|
||||
private String data;
|
||||
|
||||
@Data
|
||||
public static class TaskAdditionallInfo {
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
private String TaskId;
|
||||
|
||||
/**
|
||||
* 库存ID
|
||||
*/
|
||||
private String StockId;
|
||||
|
||||
/**
|
||||
* 任务引导ID
|
||||
*/
|
||||
private String TaskGuideId;
|
||||
|
||||
/**
|
||||
* 触发ID
|
||||
*/
|
||||
private String TriggerId;
|
||||
|
||||
/**
|
||||
* 下一任务添加阶段
|
||||
*/
|
||||
private String NextTaskAddStage;
|
||||
|
||||
/**
|
||||
* 链ID
|
||||
*/
|
||||
private String ChainId;
|
||||
|
||||
/**
|
||||
* 链类型
|
||||
*/
|
||||
private Integer ChainType;
|
||||
|
||||
/**
|
||||
* 链排序
|
||||
*/
|
||||
private Integer ChainSort;
|
||||
|
||||
/**
|
||||
* 图号
|
||||
*/
|
||||
private String FigureNo;
|
||||
|
||||
/**
|
||||
* 尺寸
|
||||
*/
|
||||
private String Size;
|
||||
|
||||
/**
|
||||
* 箱号
|
||||
*/
|
||||
private String BoxNo;
|
||||
|
||||
/**
|
||||
* 物料
|
||||
*/
|
||||
private String Mater;
|
||||
|
||||
/**
|
||||
* 相关数量
|
||||
*/
|
||||
private Integer RelatedCount;
|
||||
|
||||
/**
|
||||
* 序列号
|
||||
*/
|
||||
private String SerialNo;
|
||||
|
||||
/**
|
||||
* 重量
|
||||
*/
|
||||
private String Weight;
|
||||
|
||||
/**
|
||||
* 站点号
|
||||
*/
|
||||
private String StationNo;
|
||||
|
||||
/**
|
||||
* 手动计数
|
||||
*/
|
||||
private String HandCount;
|
||||
|
||||
/**
|
||||
* 批次
|
||||
*/
|
||||
private String Batch;
|
||||
|
||||
/**
|
||||
* 前置相关任务ID
|
||||
*/
|
||||
private String PreviousRelatedTaskId;
|
||||
|
||||
/**
|
||||
* 下一相关任务ID
|
||||
*/
|
||||
private String NextRelatedTaskId;
|
||||
|
||||
/**
|
||||
* 级联任务开始
|
||||
*/
|
||||
private String CascadeTaskBeginning;
|
||||
|
||||
/**
|
||||
* 级联任务结束
|
||||
*/
|
||||
private String CascadeTaskEnding;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,11 +34,11 @@ public interface IApiService
|
||||
* @param code1 起点
|
||||
* @param code2 终点
|
||||
* @param wmsTrayCode 容器码 托盘料箱码/容器码
|
||||
* @param wmsTaskNo mydojob 任务
|
||||
* @param wmsTaskType 1-入库 2-出库 3-agv搬运
|
||||
* @param type mydojob 任务
|
||||
* @param jobId 1-入库 2-出库 3-agv搬运
|
||||
* @return
|
||||
*/
|
||||
public AgvQueue createAgvQueue(String code1,String code2,String wmsTrayCode,String taskCode,String wmsTaskType,String traySize,String wmsTaskNo);
|
||||
public int createAgvQueue(String code1,String code2,String wmsTrayCode,String taskCode,String type,String jobId);
|
||||
|
||||
/**
|
||||
* 取消AGV任务
|
||||
@@ -76,7 +76,9 @@ public interface IApiService
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
AjaxResult receiveAgvMoveJob(Map<String, String> param);
|
||||
int receiveAgvMoveJob(Map<String, String> param);
|
||||
|
||||
void sendAgvTask();
|
||||
|
||||
/**
|
||||
* 任务到达拣选口
|
||||
|
||||
@@ -68,6 +68,8 @@ public interface IRequestLogService
|
||||
*/
|
||||
public RequestLog getRequestLog(String url, String param, String endPoint);
|
||||
|
||||
public RequestLog getRequestLogAgv(String url, String endPoint, String param);
|
||||
|
||||
/**
|
||||
* 接收请求,并插入日志
|
||||
* @param url
|
||||
|
||||
@@ -62,17 +62,22 @@ public class ApiServiceImpl implements IApiService {
|
||||
*/
|
||||
@Override
|
||||
public GenAgvSchedulingTaskResponse genAgvSchedulingTask(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest) {
|
||||
RequestLog requestLog = requestLogService.getRequestLog(GEN_AGV_SCHEDULING_TASK, "生成AGV任务", JSONUtil.toJsonStr(genAgvSchedulingTaskRequest));
|
||||
RequestLog requestLog = requestLogService.getRequestLogAgv(CREATE_AGV_TASK_URL, "生成AGV任务", JSONUtil.toJsonStr(genAgvSchedulingTaskRequest));
|
||||
if ("1".equals(requestLog.getIsSuccessful())) {
|
||||
return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class);
|
||||
GenAgvSchedulingTaskRequest bean = BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskRequest.class);
|
||||
GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse();
|
||||
response.setCode(0);
|
||||
response.setMessage("请求成功");
|
||||
response.setReqCode(genAgvSchedulingTaskRequest.getOrderId());
|
||||
return response;
|
||||
} else {
|
||||
//todo 需要调试
|
||||
GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse();
|
||||
response.setCode(500);
|
||||
response.setMessage("请求失败");
|
||||
//todo 需要调试小车请求
|
||||
response.setCode(0);
|
||||
response.setMessage("模拟测试");
|
||||
// response.setCode(0);
|
||||
// response.setMessage("模拟测试");
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -111,18 +116,39 @@ public class ApiServiceImpl implements IApiService {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult receiveAgvMoveJob(Map<String, String> param) {
|
||||
public int receiveAgvMoveJob(Map<String, String> param) {
|
||||
String startPoint = param.get("startPoint");
|
||||
String endPoint = param.get("endPoint");
|
||||
String traySize = param.get("traySize");
|
||||
String wmsTaskNo = param.get("wmsTaskNo");
|
||||
String type = param.get("type");
|
||||
String jobId = param.get("jobId");
|
||||
|
||||
AgvQueue agvQueue = createAgvQueue(startPoint, endPoint, param.get("trayCode"), param.get("taskNo"), "1", traySize, wmsTaskNo);
|
||||
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue);
|
||||
if (genAgvSchedulingTaskResponse.getCode() == 0) {
|
||||
return AjaxResult.success();
|
||||
int i = createAgvQueue(startPoint, endPoint, param.get("trayCode"), param.get("taskNo"), type,jobId);
|
||||
|
||||
return i;
|
||||
// GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue);
|
||||
// if (genAgvSchedulingTaskResponse.getCode() == 0) {
|
||||
// return AjaxResult.success();
|
||||
// }
|
||||
// return AjaxResult.error(genAgvSchedulingTaskResponse.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendAgvTask() {
|
||||
AgvQueue agvQueue = agvQueueService.selectAgvQueueByStatus();
|
||||
if (agvQueue != null) {
|
||||
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue);
|
||||
|
||||
if (genAgvSchedulingTaskResponse.getCode() == 0) {
|
||||
agvQueue.setStatus("1");
|
||||
agvQueueService.updateAgvQueue(agvQueue);
|
||||
agvQueueService.insertHistory(agvQueue.getReqCode());
|
||||
|
||||
}else{
|
||||
agvQueue.setStatus("2");
|
||||
agvQueueService.updateAgvQueue(agvQueue);
|
||||
}
|
||||
}
|
||||
return AjaxResult.error(genAgvSchedulingTaskResponse.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@@ -242,12 +268,12 @@ public class ApiServiceImpl implements IApiService {
|
||||
* @param code1 起点
|
||||
* @param code2 终点
|
||||
* @param wmsTrayCode 容器码 托盘料箱码/容器码
|
||||
* @param wmsTaskNo mydojob 任务
|
||||
* @param wmsTaskType 1-入库 2-出库 3-agv搬运
|
||||
* @param type mydojob 任务
|
||||
* @param jobId 1-入库 2-出库 3-agv搬运
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public AgvQueue createAgvQueue(String code1, String code2, String wmsTrayCode, String taskCode, String wmsTaskType, String traySize, String wmsTaskNo) {
|
||||
public int createAgvQueue(String code1, String code2, String wmsTrayCode, String taskCode,String type,String jobId) {
|
||||
//生成ctu执行队列
|
||||
AgvQueue agvQueue = new AgvQueue();
|
||||
String reqCode = IdUtil.fastSimpleUUID();
|
||||
@@ -257,20 +283,21 @@ public class ApiServiceImpl implements IApiService {
|
||||
agvQueue.setAgvType("AGV");
|
||||
agvQueue.setPositionCode1(code1);
|
||||
agvQueue.setPositionCode2(code2);
|
||||
agvQueue.setTaskType("F01");
|
||||
agvQueue.setCtnrType(traySize);
|
||||
agvQueue.setTaskType(type);
|
||||
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.setWmsTaskNo(taskCode);
|
||||
agvQueue.setStatus("0");
|
||||
agvQueue.setTaskCode(taskCode);
|
||||
agvQueue.setWmsTaskType(wmsTaskType);
|
||||
agvQueueService.insertAgvQueue(agvQueue);
|
||||
return agvQueue;
|
||||
agvQueue.setTaskCode(jobId);
|
||||
agvQueue.setWmsTaskType("0");
|
||||
int i = agvQueueService.insertAgvQueue(agvQueue);
|
||||
return i;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -317,20 +344,15 @@ public class ApiServiceImpl implements IApiService {
|
||||
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.getTaskCode());
|
||||
genAgvSchedulingTaskRequest.setAgvTyp("AGV");
|
||||
genAgvSchedulingTaskRequest.setPositionSelStrategy("0");
|
||||
List<PositionCodeData> positionCodePath = new ArrayList<>();
|
||||
positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode1(), "0"));
|
||||
positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode2(), "0"));
|
||||
genAgvSchedulingTaskRequest.setPositionCodePath(positionCodePath);
|
||||
genAgvSchedulingTaskRequest.setFromStation(agvQueue.getPositionCode1());
|
||||
genAgvSchedulingTaskRequest.setToStation(agvQueue.getPositionCode2());
|
||||
genAgvSchedulingTaskRequest.setOrderId(agvQueue.getTaskCode());
|
||||
genAgvSchedulingTaskRequest.setType(agvQueue.getTaskType());
|
||||
genAgvSchedulingTaskRequest.setTaskGuideId("00000000-0000-0000-0000-000000000000");
|
||||
genAgvSchedulingTaskRequest.setTriggerId("00000000-0000-0000-0000-000000000000");
|
||||
GenAgvSchedulingTaskRequest.TaskAdditionallInfo taskAdditionallInfo = new GenAgvSchedulingTaskRequest.TaskAdditionallInfo();
|
||||
genAgvSchedulingTaskRequest.setTaskAdditionallInfo(taskAdditionallInfo);
|
||||
|
||||
return genAgvSchedulingTask(genAgvSchedulingTaskRequest);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import java.util.List;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.ruoyi.api.domain.InterfaceReceive;
|
||||
@@ -137,6 +139,7 @@ public class RequestLogServiceImpl implements IRequestLogService
|
||||
requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS)));
|
||||
requestLog.setIsSuccessful("1");
|
||||
}else {
|
||||
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
|
||||
requestLog.setResponseStatus("0");
|
||||
requestLog.setErrorDetails(bean.getMsg());
|
||||
requestLog.setIsSuccessful("0");
|
||||
@@ -152,6 +155,56 @@ public class RequestLogServiceImpl implements IRequestLogService
|
||||
return requestLog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestLog getRequestLogAgv(String url, String endPoint, String param) {
|
||||
RequestLog requestLog = new RequestLog();
|
||||
Date requestTime = new Date();
|
||||
requestLog.setRequestTime(DateUtil.format(requestTime, "yyyy-MM-dd HH:mm:ss"));
|
||||
requestLog.setSourceSystem("wms");
|
||||
requestLog.setTargetSystem("agv");
|
||||
requestLog.setEndpoint(endPoint);
|
||||
requestLog.setRequestMethod("post");
|
||||
requestLog.setRequestHeaders(null);
|
||||
requestLog.setRequestBody(param);
|
||||
requestLog.setRequestUrl(url);
|
||||
try {
|
||||
// 使用HttpRequest获取HTTP状态码
|
||||
HttpResponse response = HttpRequest.post(url)
|
||||
.body(param)
|
||||
.timeout(5000)
|
||||
.execute();
|
||||
|
||||
int httpStatusCode = response.getStatus();
|
||||
String resStr = response.body();
|
||||
|
||||
requestLog.setResponseBody(resStr);
|
||||
Date responseTime = new Date();
|
||||
|
||||
// 判断HTTP状态码是否成功(200-299都算成功)
|
||||
if (httpStatusCode == 200) {
|
||||
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
|
||||
requestLog.setResponseStatus(String.valueOf(httpStatusCode));
|
||||
requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS)));
|
||||
requestLog.setIsSuccessful("1");
|
||||
|
||||
|
||||
} else {
|
||||
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
|
||||
requestLog.setResponseStatus(String.valueOf(httpStatusCode));
|
||||
requestLog.setErrorDetails("HTTP请求失败,状态码: " + httpStatusCode);
|
||||
requestLog.setIsSuccessful("0");
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
requestLog.setErrorDetails(e.getMessage());
|
||||
requestLog.setIsSuccessful("0");
|
||||
requestLog.setResponseStatus("0");
|
||||
} finally {
|
||||
insertRequestLog(requestLog);
|
||||
}
|
||||
return requestLog;
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入请求日志
|
||||
*
|
||||
|
||||
@@ -5,6 +5,7 @@ public class Constant {
|
||||
|
||||
public static final String WMS_BASE_URL = "http://localhost:8080/api2wms/";
|
||||
public static final String RCS_BASE_URL = "http://127.0.0.1:8081/rcms-dps/rest/";
|
||||
public static final String AGV_BASE_URL = "http://127.0.0.1:9501/api/app/agvs-task";
|
||||
|
||||
|
||||
public static final String JOB_FINISH_URL = WMS_BASE_URL+"jobFinish";
|
||||
@@ -17,6 +18,7 @@ public class Constant {
|
||||
public static final String RE_ASSIGN_URL = WMS_BASE_URL+"reAssign";
|
||||
public static final String RE_MATERIAL_URL = WMS_BASE_URL+"reMaterial";
|
||||
public static final String REQUEST_ENTER_URL = WMS_BASE_URL+"requestEnterByTrayCodeAndEntranceId";
|
||||
public static final String CREATE_AGV_TASK_URL = AGV_BASE_URL+"agvs-task";
|
||||
|
||||
|
||||
public static final String WAREHOUSE_01 = "01";
|
||||
|
||||
@@ -66,5 +66,7 @@ public interface AgvQueueMapper
|
||||
*/
|
||||
AgvQueue selectAgvQueueByTaskCode(String taskCode);
|
||||
|
||||
AgvQueue selectAgvQueueByStatus();
|
||||
|
||||
void insertHistory(String reqCode);
|
||||
}
|
||||
|
||||
@@ -66,6 +66,8 @@ public interface IAgvQueueService
|
||||
*/
|
||||
AgvQueue selectAgvQueueByTaskCode(String taskCode);
|
||||
|
||||
AgvQueue selectAgvQueueByStatus();
|
||||
|
||||
/**
|
||||
* 插入agv完成历史
|
||||
* @param reqCode
|
||||
|
||||
@@ -96,6 +96,11 @@ public class AgvQueueServiceImpl implements IAgvQueueService
|
||||
return agvQueueMapper.selectAgvQueueByTaskCode(taskCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AgvQueue selectAgvQueueByStatus() {
|
||||
return agvQueueMapper.selectAgvQueueByStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertHistory(String reqCode) {
|
||||
agvQueueMapper.insertHistory(reqCode);
|
||||
|
||||
@@ -62,6 +62,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where task_code = #{taskCode}
|
||||
</select>
|
||||
|
||||
<select id="selectAgvQueueByStatus" resultMap="AgvQueueResult">
|
||||
select top(1)* from agv_queue
|
||||
where status=0
|
||||
</select>
|
||||
|
||||
<insert id="insertAgvQueue" parameterType="AgvQueue">
|
||||
insert into agv_queue
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
@@ -119,6 +119,7 @@ public class SecurityConfig
|
||||
.antMatchers("/agv/api/**").permitAll()
|
||||
.antMatchers("/device/api/**").permitAll()
|
||||
.antMatchers("/wcs2Wms/api/**").permitAll()
|
||||
.antMatchers("/agv/api/**").permitAll()
|
||||
.antMatchers("/test/**").permitAll()
|
||||
.antMatchers("/largeScreen/monitor/**").permitAll()
|
||||
// 除上面外的所有请求全部需要鉴权认证
|
||||
|
||||
Reference in New Issue
Block a user