|
|
@ -10,9 +10,7 @@ import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskCompletedData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskModeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskModeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskStatusChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskStatusChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskTypeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskTypeChangeData; |
|
|
import com.galaxis.rcs.connector.cl2.sendEntity.RcsAckMessage; |
|
|
import com.galaxis.rcs.connector.cl2.sendEntity.*; |
|
|
import com.galaxis.rcs.connector.cl2.sendEntity.RcsTaskMessage; |
|
|
|
|
|
import com.galaxis.rcs.connector.cl2.sendEntity.BaseMessage; |
|
|
|
|
|
import com.yvan.logisticsModel.LogisticsRuntimeService; |
|
|
import com.yvan.logisticsModel.LogisticsRuntimeService; |
|
|
import com.yvan.logisticsModel.PtrAgvItem; |
|
|
import com.yvan.logisticsModel.PtrAgvItem; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -56,7 +54,7 @@ public class AmrMessageHandler { |
|
|
private static final int RCS_QUERY_STATUS = 10110; |
|
|
private static final int RCS_QUERY_STATUS = 10110; |
|
|
private static final int RCS_CANCEL_TASK = 10120; |
|
|
private static final int RCS_CANCEL_TASK = 10120; |
|
|
private static final int RCS_SET_LOCATION = 10200; |
|
|
private static final int RCS_SET_LOCATION = 10200; |
|
|
private static final int RCS_WAIT_READY = 19997; |
|
|
private static final int RCS_WAIT = 19997; |
|
|
|
|
|
|
|
|
// 接收消息id
|
|
|
// 接收消息id
|
|
|
/** |
|
|
/** |
|
|
@ -217,14 +215,7 @@ public class AmrMessageHandler { |
|
|
break; |
|
|
break; |
|
|
case AMR_HEARTBEAT: |
|
|
case AMR_HEARTBEAT: |
|
|
AmrMessage<AmrHeartbeatMessage> heartbeatMessage = JacksonUtils.parse(json, typeRef20100Message); |
|
|
AmrMessage<AmrHeartbeatMessage> heartbeatMessage = JacksonUtils.parse(json, typeRef20100Message); |
|
|
sendxt(heartbeatMessage.content.VehicleId + "", heartbeatMessage.content.SeqNo + ""); |
|
|
sendCmdHeartBeat(heartbeatMessage.content.VehicleId + ""); |
|
|
|
|
|
|
|
|
// if (amrMessage.content instanceof AmrHeartbeatMessage) {
|
|
|
|
|
|
// AmrHeartbeatMessage msg = (AmrHeartbeatMessage) amrMessage.content;
|
|
|
|
|
|
// if (msg.VehicleId == 102) {
|
|
|
|
|
|
// log.info("Received message: " + json);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
break; |
|
|
case AMR_BOOT: |
|
|
case AMR_BOOT: |
|
|
@ -263,7 +254,25 @@ public class AmrMessageHandler { |
|
|
var executorItem = runtime.executorItemMap.get("3"); |
|
|
var executorItem = runtime.executorItemMap.get("3"); |
|
|
return (PtrAgvItem) executorItem; |
|
|
return (PtrAgvItem) executorItem; |
|
|
} |
|
|
} |
|
|
public static void sendCmd10010(String vehicleId, RcsTaskMessage rcsTaskMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
|
|
|
private static final String REDIS_KEY = "amr:task:message:seqNo"; |
|
|
|
|
|
public static int getNewSeqNo() { |
|
|
|
|
|
long seqNo = redis.vIncrement(REDIS_KEY); |
|
|
|
|
|
if (seqNo > Integer.MAX_VALUE) { |
|
|
|
|
|
redis.kDelete(REDIS_KEY); |
|
|
|
|
|
seqNo = redis.vIncrement(REDIS_KEY).intValue(); |
|
|
|
|
|
} |
|
|
|
|
|
return (int) seqNo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送任务 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsTaskMessage 任务信息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdTask(String vehicleId, RcsTaskMessage rcsTaskMessage) throws JsonProcessingException, MqttException { |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
baseMessage.id = RCS_TASK; |
|
|
baseMessage.id = RCS_TASK; |
|
|
@ -273,11 +282,29 @@ public class AmrMessageHandler { |
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public static void sendxt(String vehicleId, String seqNo)throws JsonProcessingException, MqttException { |
|
|
/** |
|
|
|
|
|
* 发送SR消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsSRMessage SR消息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdSR(String vehicleId, RcsSRMessage rcsSRMessage) throws JsonProcessingException, MqttException { |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
mqttClient.publish("/wcs_server/" + vehicleId, ("{\"id\": 10110, \"content\": {\"SeqNo\": " + seqNo + "}}").getBytes(), 0, false); |
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_SR; |
|
|
|
|
|
baseMessage.content = rcsSRMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送应答消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param seqNo 被应答的消息序号 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
public static void sendCmdAck(String vehicleId, int seqNo) throws JsonProcessingException, MqttException { |
|
|
public static void sendCmdAck(String vehicleId, int seqNo) throws JsonProcessingException, MqttException { |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
@ -290,4 +317,154 @@ public class AmrMessageHandler { |
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送旋转货架消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsRotateRackMessage 旋转货架消息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdRotateRack(String vehicleId, RcsRotateRackMessage rcsRotateRackMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_ROTATE_RACK; |
|
|
|
|
|
baseMessage.content = rcsRotateRackMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10080: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送旋转车身消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsRotateBodyMessage 旋转车身消息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public void sendCmdRotateBody(String vehicleId, RcsRotateBodyMessage rcsRotateBodyMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_ROTATE_BODY; |
|
|
|
|
|
baseMessage.content = rcsRotateBodyMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10081: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 发送控制卷帘门消息 10082
|
|
|
|
|
|
public void sendCmdControlDoor(String vehicleId, RcsControlDoorMessage rcsControlDoorMessage) throws MqttException, JsonProcessingException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_CONTROL_DOOR; |
|
|
|
|
|
baseMessage.content = rcsControlDoorMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10082: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送配置信息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsConfigMessage 配置信息 |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
*/ |
|
|
|
|
|
public void sendCmdConfig(String vehicleId, RcsConfigMessage rcsConfigMessage) throws MqttException, JsonProcessingException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
AmrMessage<RcsConfigMessage> baseMessage = new AmrMessage<>(); |
|
|
|
|
|
baseMessage.id = RCS_CONFIG; |
|
|
|
|
|
baseMessage.content = rcsConfigMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10060: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送心跳 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdHeartBeat(String vehicleId)throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_HEARTBEAT; |
|
|
|
|
|
baseMessage.content = new RcsHeartBeatMessage(); |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10100: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送状态查询消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdQueryStatus(String vehicleId) throws MqttException, JsonProcessingException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_QUERY_STATUS; |
|
|
|
|
|
RcsQueryStatusMessage rcsQueryStatusMessage = new RcsQueryStatusMessage(); |
|
|
|
|
|
rcsQueryStatusMessage.SeqNo = getNewSeqNo(); |
|
|
|
|
|
baseMessage.content = rcsQueryStatusMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10110: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送取消任务消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param seqNo 待取消的任务序号 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdCancelTask(String vehicleId, int seqNo) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_CANCEL_TASK; |
|
|
|
|
|
baseMessage.content = new RcsCancelTaskMessage(seqNo); |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10120: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送设置小车坐标消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsSetLocationMessage 位置信息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdSetLocation(String vehicleId, RcsSetLocationMessage rcsSetLocationMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_SET_LOCATION; |
|
|
|
|
|
baseMessage.content = rcsSetLocationMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd10200: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送等待就绪消息 |
|
|
|
|
|
* @param vehicleId 设备id |
|
|
|
|
|
* @param rcsWaitMessage 等待消息 |
|
|
|
|
|
* @throws JsonProcessingException |
|
|
|
|
|
* @throws MqttException |
|
|
|
|
|
*/ |
|
|
|
|
|
public static void sendCmdWait(String vehicleId, RcsWaitMessage rcsWaitMessage) throws JsonProcessingException, MqttException { |
|
|
|
|
|
MqttClient mqttClient = MqttConfig.mqttClient; |
|
|
|
|
|
BaseMessage baseMessage = new BaseMessage(); |
|
|
|
|
|
baseMessage.id = RCS_WAIT; |
|
|
|
|
|
baseMessage.content = rcsWaitMessage; |
|
|
|
|
|
String json = JacksonUtils.toJson(baseMessage); |
|
|
|
|
|
log.info("sendCmd19997: {}", json); |
|
|
|
|
|
mqttClient.publish("/wcs_server/" + vehicleId, json.getBytes(StandardCharsets.UTF_8), 0, false); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|