|
|
|
@ -9,11 +9,14 @@ 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.TaskTypeChangeData; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.clever.core.AppContextHolder; |
|
|
|
import org.clever.core.json.JsonWrapper; |
|
|
|
import org.clever.data.redis.Redis; |
|
|
|
import org.eclipse.paho.mqttv5.common.MqttMessage; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
@ -35,11 +38,20 @@ public class AmrMessageHandler { |
|
|
|
private static final TypeReference<AmrMessage<AmrOnlineMessage>> typeRef20150Message = new TypeReference<AmrMessage<AmrOnlineMessage>>() {}; |
|
|
|
private static final TypeReference<AmrMessage<AmrOfflineMessage>> typeRef20200Message = new TypeReference<AmrMessage<AmrOfflineMessage>>() {}; |
|
|
|
private static final TypeReference<AmrMessage<AmrExceptionMessage>> typeRef20250Message = new TypeReference<AmrMessage<AmrExceptionMessage>>() {}; |
|
|
|
|
|
|
|
private static final Redis redis = AppContextHolder.getBean("defaultRedis", Redis.class, true); |
|
|
|
|
|
|
|
private static final ConcurrentHashMap<Integer, AmrStatusAndInfo> agvStatusMap = new ConcurrentHashMap<>(); |
|
|
|
public static void handleAgvRobotStatusMessage(MqttMessage message) { |
|
|
|
byte[] messageData = message.getPayload(); |
|
|
|
String json = new String(messageData, StandardCharsets.UTF_8); |
|
|
|
JsonWrapper jw = new JsonWrapper(json); |
|
|
|
int id = jw.asInt("id"); |
|
|
|
int agvId = jw.asInt("content", "VehicleId"); |
|
|
|
if (!agvStatusMap.containsKey(agvId)) { |
|
|
|
agvStatusMap.put(agvId, new AmrStatusAndInfo(agvId + "")); |
|
|
|
} |
|
|
|
AmrStatusAndInfo agvStatusAndInfo = agvStatusMap.get(agvId); |
|
|
|
|
|
|
|
/* |
|
|
|
* 消息标识 |
|
|
|
@ -61,7 +73,7 @@ public class AmrMessageHandler { |
|
|
|
AmrMessage<?> amrMessage = null; |
|
|
|
switch (id) { |
|
|
|
case 20010: |
|
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20010Message); |
|
|
|
AmrMessage<AmrTaskCompletedMessage> taskCompletedMessage = JacksonGenericUtils.parse(json, typeRef20010Message); |
|
|
|
break; |
|
|
|
case 20011: { |
|
|
|
int EventId = jw.asInt("content", "EventId"); |
|
|
|
@ -97,16 +109,30 @@ public class AmrMessageHandler { |
|
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20050Message); |
|
|
|
break; |
|
|
|
case 20060: |
|
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20060Message); |
|
|
|
AmrMessage<AmrStatusMessage> statusMessage = JacksonGenericUtils.parse(json, typeRef20060Message); |
|
|
|
agvStatusAndInfo.agvSOC = statusMessage.content.CurBattery.SOC; |
|
|
|
agvStatusAndInfo.agvBatteryVoltage = statusMessage.content.CurBattery.Voltage; |
|
|
|
// agvStatusAndInfo.agvChargingStatus = statusMessage.content.CurBattery.ChargingStatus;
|
|
|
|
agvStatusAndInfo.agvChargingCurrent = statusMessage.content.CurBattery.ChargingCurrent; |
|
|
|
agvStatusAndInfo.agvDischargingCurrent = statusMessage.content.CurBattery.DischargingCurrent; |
|
|
|
agvStatusAndInfo.agvBatteryTemperature = statusMessage.content.CurBattery.Temperature; |
|
|
|
agvStatusAndInfo.x = statusMessage.content.X; |
|
|
|
agvStatusAndInfo.y = statusMessage.content.Y; |
|
|
|
agvStatusAndInfo.orientation = statusMessage.content.CurOrientation; |
|
|
|
if (statusMessage.content.VehicleId == 32) { |
|
|
|
log.info("Received message: " + json); |
|
|
|
} |
|
|
|
break; |
|
|
|
case 20100: |
|
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20100Message); |
|
|
|
AmrMessage<AmrHeartbeatMessage> heartbeatMessage = JacksonGenericUtils.parse(json, typeRef20100Message); |
|
|
|
|
|
|
|
// if (amrMessage.content instanceof AmrHeartbeatMessage) {
|
|
|
|
// AmrHeartbeatMessage msg = (AmrHeartbeatMessage) amrMessage.content;
|
|
|
|
// if (msg.VehicleId == 102) {
|
|
|
|
// log.info("Received message: " + json);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
break; |
|
|
|
case 20147: |
|
|
|
amrMessage = JacksonGenericUtils.parse(json, typeRef20147Message); |
|
|
|
@ -132,5 +158,4 @@ public class AmrMessageHandler { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|