Browse Source

agv任务管理

master
han\hanst 4 months ago
parent
commit
029ed1da12
  1. 12
      src/main/java/com/gaotao/common/utils/AgvClientUtil.java
  2. 54
      src/main/java/com/gaotao/modules/api/consumer/WmsMessageConsumer.java

12
src/main/java/com/gaotao/common/utils/AgvClientUtil.java

@ -254,9 +254,7 @@ public class AgvClientUtil {
null, null,
"AGV查询在线小车接口" "AGV查询在线小车接口"
); );
ObjectMapper objectMapper = new ObjectMapper();
String jsonBody = objectMapper.writeValueAsString(request);
String ifsResponse = HttpUtils.doPost(url, jsonBody, null);
String ifsResponse = HttpUtils.doGet(url, null, null);
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(ifsResponse); JsonNode jsonNode = mapper.readTree(ifsResponse);
@ -349,10 +347,7 @@ public class AgvClientUtil {
null, null,
"AGV获取故障信息接口" "AGV获取故障信息接口"
); );
ObjectMapper objectMapper = new ObjectMapper();
String jsonBody = objectMapper.writeValueAsString(request);
String ifsResponse = HttpUtils.doPost(url, jsonBody, null);
String ifsResponse = HttpUtils.doGet(url, null, null);
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(ifsResponse); JsonNode jsonNode = mapper.readTree(ifsResponse);
@ -363,8 +358,7 @@ public class AgvClientUtil {
} }
// 返回数据部分 // 返回数据部分
JsonNode dataNode = jsonNode.get("data");
return dataNode != null ? dataNode : null;
return jsonNode.get("data");
} catch (Exception e) { } catch (Exception e) {
// 更新接口日志错误信息 // 更新接口日志错误信息

54
src/main/java/com/gaotao/modules/api/consumer/WmsMessageConsumer.java

@ -1,3 +1,4 @@
/*
package com.gaotao.modules.api.consumer; package com.gaotao.modules.api.consumer;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
@ -12,10 +13,12 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
*/
/** /**
* WMS消息消费者 * WMS消息消费者
* 使用定时任务从Redis队列中消费消息 * 使用定时任务从Redis队列中消费消息
*/
*//*
@Slf4j @Slf4j
@Component @Component
@ConditionalOnProperty(name = "wms.message.queue.enabled", havingValue = "true", matchIfMissing = false) @ConditionalOnProperty(name = "wms.message.queue.enabled", havingValue = "true", matchIfMissing = false)
@ -35,36 +38,44 @@ public class WmsMessageConsumer {
private static final String ROBOT_PICKING_QUEUE = "wms:queue:robot:picking"; private static final String ROBOT_PICKING_QUEUE = "wms:queue:robot:picking";
private static final String AGV_TASK_QUEUE = "wms:queue:agv:task"; private static final String AGV_TASK_QUEUE = "wms:queue:agv:task";
/**
*/
/**
* 消费入库完成消息 * 消费入库完成消息
*/
*//*
@Scheduled(fixedDelay = 1000) // 每秒检查一次 @Scheduled(fixedDelay = 1000) // 每秒检查一次
@Async @Async
public void consumeInboundFinishMessages() { public void consumeInboundFinishMessages() {
consumeMessages(INBOUND_FINISH_QUEUE, "INBOUND_FINISH"); consumeMessages(INBOUND_FINISH_QUEUE, "INBOUND_FINISH");
} }
/**
*/
/**
* 消费机械手拣货完成消息 * 消费机械手拣货完成消息
*/
*//*
@Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 1000)
@Async @Async
public void consumeRobotPickingMessages() { public void consumeRobotPickingMessages() {
consumeMessages(ROBOT_PICKING_QUEUE, "ROBOT_PICKING_FINISH"); consumeMessages(ROBOT_PICKING_QUEUE, "ROBOT_PICKING_FINISH");
} }
/**
*/
/**
* 消费AGV任务状态消息 * 消费AGV任务状态消息
*/
*//*
@Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 1000)
@Async @Async
public void consumeAGVTaskMessages() { public void consumeAGVTaskMessages() {
consumeMessages(AGV_TASK_QUEUE, "AGV_TASK_STATUS"); consumeMessages(AGV_TASK_QUEUE, "AGV_TASK_STATUS");
} }
/**
*/
/**
* 通用消息消费方法 * 通用消息消费方法
*/
*//*
private void consumeMessages(String queueName, String messageType) { private void consumeMessages(String queueName, String messageType) {
try { try {
// 检查队列长度 // 检查队列长度
@ -87,9 +98,11 @@ public class WmsMessageConsumer {
} }
} }
/**
*/
/**
* 处理单个消息 * 处理单个消息
*/
*//*
private void processMessage(WmsMessage message, String messageType) { private void processMessage(WmsMessage message, String messageType) {
try { try {
log.info("开始处理消息,ID: {}, 类型: {}", message.getMessageId(), messageType); log.info("开始处理消息,ID: {}, 类型: {}", message.getMessageId(), messageType);
@ -128,9 +141,11 @@ public class WmsMessageConsumer {
} }
} }
/**
*/
/**
* 处理消息失败的情况 * 处理消息失败的情况
*/
*//*
private void handleProcessFailure(WmsMessage message, String messageType) { private void handleProcessFailure(WmsMessage message, String messageType) {
try { try {
message.setRetryCount(message.getRetryCount() + 1); message.setRetryCount(message.getRetryCount() + 1);
@ -155,9 +170,11 @@ public class WmsMessageConsumer {
} }
} }
/**
*/
/**
* 根据消息类型获取队列名称 * 根据消息类型获取队列名称
*/
*//*
private String getQueueNameByMessageType(String messageType) { private String getQueueNameByMessageType(String messageType) {
switch (messageType) { switch (messageType) {
case "INBOUND_FINISH": case "INBOUND_FINISH":
@ -171,12 +188,15 @@ public class WmsMessageConsumer {
} }
} }
/**
*/
/**
* 发送失败告警 * 发送失败告警
*/
*//*
private void sendFailureAlert(WmsMessage message) { private void sendFailureAlert(WmsMessage message) {
// 可以集成邮件短信钉钉等告警方式 // 可以集成邮件短信钉钉等告警方式
log.error("【WMS消息处理失败告警】消息ID: {}, 类型: {}, 数据: {}", log.error("【WMS消息处理失败告警】消息ID: {}, 类型: {}, 数据: {}",
message.getMessageId(), message.getMessageType(), message.getData()); message.getMessageId(), message.getMessageType(), message.getData());
} }
} }
*/
Loading…
Cancel
Save