Browse Source

LccMqttManager /

EnvManager 脱离 viewport 也能运行
master
修宁 6 months ago
parent
commit
4c2a61f24d
  1. 4
      servo/src/main/java/com/galaxis/rcs/RCSService.java
  2. 2
      servo/src/main/java/com/galaxis/rcs/ptr/PtrMqttClient.java
  3. 2
      servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java
  4. 28
      servo/src/main/java/com/yvan/mqtt/LccMqttService.java
  5. 25
      servo/src/main/java/com/yvan/workbench/controller/EnvController.java
  6. 49
      servo/src/main/java/com/yvan/workbench/controller/LccController.java
  7. 2
      servo/src/main/java/com/yvan/workbench/service/LccAutoStartService.java

4
servo/src/main/java/com/galaxis/rcs/RCSService.java

@ -48,7 +48,7 @@ public class RCSService {
}
@SneakyThrows
public static void projectStart(String projectUuid, Long envId) {
public static void serverStart(String projectUuid, Long envId) {
LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUuid, envId);
if (runtime != null) {
@ -183,7 +183,7 @@ public class RCSService {
runtime.start();
}
public static void projectStop(String projectUuid, Long envId) {
public static void serverStop(String projectUuid, Long envId) {
LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUuid, envId);
if (runtime != null) {
LogisticsRuntimeService.INSTANCE.stopByProjectEnv(projectUuid, envId);

2
servo/src/main/java/com/galaxis/rcs/ptr/PtrMqttClient.java

@ -49,7 +49,7 @@ public class PtrMqttClient implements MqttCallback {
clientForSend.connect(options);
connectLatch.await();
BannerUtils.printConfig(log, "MQTT 开启监听成功", new String[]{
BannerUtils.printConfig(log, "PtrMqttClient MQTT 开启监听成功", new String[]{
"brokerUrl: " + brokerUrl,
"userName: " + username,
"clientId: " + clientId,

2
servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java

@ -243,7 +243,7 @@ public class LogisticsRuntime {
// 启动 MQTT 监听
this.amrMessageHandler.start(this.env.getEnvConfig().getMqtt(), this.serverId);
this.lccMqttService.start(this.env.getEnvConfig().getMqtt(), this.serverId);
this.lccMqttService.start(this.env.getEnvConfig().getMqtt(), this.serverId + "_lcc_send");
this.lccRedisService.start(this.env.getEnvConfig().getRedis(), this.serverId);
// 开启所有机器人的任务处理

28
servo/src/main/java/com/yvan/mqtt/LccMqttService.java

@ -5,6 +5,7 @@ import com.yvan.logisticsModel.LogisticsRuntime;
import lombok.Getter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.clever.core.BannerUtils;
import org.clever.core.mapper.JacksonMapper;
import org.eclipse.paho.mqttv5.client.*;
import org.eclipse.paho.mqttv5.client.persist.MemoryPersistence;
@ -54,11 +55,11 @@ public class LccMqttService implements MqttCallback {
connectionLock.lock();
try {
if (connected) {
log.warn("MQTT service is already started");
log.warn("LCC_MQTT service is already started");
return;
}
log.info("Starting MQTT service for project: {}, env: {}", this.runtime.projectUuid, this.runtime.envId);
log.info("Starting LCC_MQTT service for project: {}, env: {}", this.runtime.projectUuid, this.runtime.envId);
// 创建MQTT客户端
mqttClient = new MqttClient(mqttConfig.getBrokerUrl(), clientId, persistence);
@ -79,12 +80,12 @@ public class LccMqttService implements MqttCallback {
while (attempts < MAX_RETRIES && !connected) {
attempts++;
try {
log.info("Connecting to MQTT broker (attempt {}/{})", attempts, MAX_RETRIES);
log.info("Connecting to LCC_MQTT broker (attempt {}/{})", attempts, MAX_RETRIES);
mqttClient.connect(options);
connected = true;
log.info("MQTT connected successfully");
log.info("LCC_MQTT connected successfully");
} catch (MqttException e) {
log.error("MQTT connection failed (attempt " + attempts + "/{" + MAX_RETRIES + "})", e);
log.error("LCC_MQTT connection failed (attempt " + attempts + "/{" + MAX_RETRIES + "})", e);
// 重试前等待
if (attempts < MAX_RETRIES) {
@ -99,7 +100,7 @@ public class LccMqttService implements MqttCallback {
}
if (!connected) {
log.error("Failed to connect to MQTT broker after {} attempts", MAX_RETRIES);
log.error("Failed to connect to LCC_MQTT broker after {} attempts", MAX_RETRIES);
}
} finally {
connectionLock.unlock();
@ -116,9 +117,9 @@ public class LccMqttService implements MqttCallback {
try {
mqttClient.disconnect();
mqttClient.close();
log.info("MQTT disconnected");
log.info("LCC_MQTT disconnected");
} catch (MqttException e) {
log.error("Error disconnecting MQTT", e);
log.error("Error disconnecting LCC_MQTT", e);
}
}
connected = false;
@ -292,7 +293,7 @@ public class LccMqttService implements MqttCallback {
@Override
public void disconnected(MqttDisconnectResponse disconnectResponse) {
log.warn("MQTT disconnected: {}", disconnectResponse);
log.warn("LCC_MQTT disconnected: {}", disconnectResponse);
connectionLock.lock();
try {
connected = false;
@ -303,7 +304,7 @@ public class LccMqttService implements MqttCallback {
@Override
public void mqttErrorOccurred(MqttException exception) {
log.error("MQTT error occurred", exception);
log.error("LCC_MQTT error occurred", exception);
}
@Override
@ -329,7 +330,10 @@ public class LccMqttService implements MqttCallback {
@Override
public void connectComplete(boolean reconnect, String serverURI) {
log.info("MQTT connection complete: reconnect={}, serverURI={}", reconnect, serverURI);
BannerUtils.printConfig(log, "LCC_MQTT 开启监听成功", new String[]{
"brokerUrl: " + serverURI,
"userName: " + this.mqttConfig.getUsername(),
"clientId: " + clientId});
connectionLock.lock();
try {
connected = true;
@ -340,6 +344,6 @@ public class LccMqttService implements MqttCallback {
@Override
public void authPacketArrived(int i, MqttProperties mqttProperties) {
log.info("MQTT authPacketArrived({}, {})", i, mqttProperties);
log.info("LCC_MQTT authPacketArrived({}, {})", i, mqttProperties);
}
}

25
servo/src/main/java/com/yvan/workbench/controller/EnvController.java

@ -34,29 +34,4 @@ public class EnvController {
return R.success(list);
}
public static R<?> getAllExecutor(@RequestBody Map<String, Object> params) {
String catalogCode = Conv.asString(params.get("catalogCode"));
Long envId = Conv.asLong(params.get("envId"));
if (Strings.isNullOrEmpty(catalogCode)) {
return R.fail("catalogCode must not be null");
}
if (envId == null) {
return R.fail("envId must not be null");
}
var list = queryDSL.select(QueryDslUtils.linkedMap(
lccBasExecutor.executorId,
lccBasExecutor.virtualLocationAt,
lccBasExecutor.virtualExecutorPayload
))
.from(lccBasExecutor)
.where(lccBasExecutor.envId.eq(envId))
.where(lccBasExecutor.isActive.eq(true))
.where(lccBasExecutor.virtualFloorCode.eq(catalogCode))
.fetch();
return R.success(list);
}
}

49
servo/src/main/java/com/yvan/workbench/controller/LccController.java

@ -14,6 +14,7 @@ import org.clever.web.mvc.annotation.RequestBody;
import java.util.Map;
import static com.galaxis.rcs.common.query.QLccBasContainer.lccBasContainer;
import static com.galaxis.rcs.common.query.QLccBasExecutor.lccBasExecutor;
import static com.galaxis.rcs.common.query.QLccBasLocation.lccBasLocation;
import static com.galaxis.rcs.common.query.QLccInvLpn.lccInvLpn;
@ -28,7 +29,7 @@ public class LccController {
return R.success(mapService.getAllProjects());
}
public static R<?> projectStart(@RequestBody Map<String, Object> params) {
public static R<?> serverStart(@RequestBody Map<String, Object> params) {
String projectUuid = Conv.asString(params.get("projectUUID"));
Long envId = Conv.asLong(params.get("envId"));
@ -40,14 +41,14 @@ public class LccController {
}
// 启动 RCS 服务器
RCSService.projectStart(projectUuid, envId);
RCSService.serverStart(projectUuid, envId);
// 启动MFC服务器 / 启动WCS服务器 / 启动PES服务器 等等
return R.success("Project started successfully");
}
public static R<?> projectStop(@RequestBody Map<String, Object> params) {
public static R<?> serverStop(@RequestBody Map<String, Object> params) {
String projectUuid = Conv.asString(params.get("projectUUID"));
Long envId = Conv.asLong(params.get("envId"));
@ -59,25 +60,22 @@ public class LccController {
}
// 停止RCS服务器
RCSService.projectStop(projectUuid, envId);
RCSService.serverStop(projectUuid, envId);
// 停止MFC服务器 / 停止WCS服务器 / 停止PES服务器 等等
return R.success("Project stopped successfully");
}
public static R<?> getAllInv(@RequestBody Map<String, Object> params) {
public static R<?> loadInv(@RequestBody Map<String, Object> params) {
String catalogCode = Conv.asString(params.get("catalogCode"));
Long envId = Conv.asLong(params.get("envId"));
if (Strings.isNullOrEmpty(catalogCode)) {
return R.fail("catalogCode must not be null");
}
if (envId == null) {
return R.fail("envId must not be null");
}
var list = queryDSL.select(QueryDslUtils.linkedMap(
var selectAction = queryDSL.select(QueryDslUtils.linkedMap(
lccInvLpn.lpn,
lccBasContainer.containerType,
lccInvLpn.locCode,
@ -89,16 +87,41 @@ public class LccController {
.from(lccInvLpn)
.innerJoin(lccBasLocation).on(
lccInvLpn.locCode.eq(lccBasLocation.locCode).and(
lccBasLocation.envId.eq(lccBasLocation.envId)
lccInvLpn.envId.eq(lccBasLocation.envId)
)
)
.innerJoin(lccBasContainer).on(
lccInvLpn.lpn.eq(lccInvLpn.lpn).and(
lccBasContainer.envId.eq(lccInvLpn.envId)
lccInvLpn.envId.eq(lccInvLpn.envId)
)
)
.where(lccInvLpn.envId.eq(envId))
.where(lccBasLocation.catalogCode.eq(catalogCode))
.where(lccInvLpn.envId.eq(envId));
if (!Strings.isNullOrEmpty(catalogCode)) {
selectAction.where(lccBasLocation.catalogCode.eq(catalogCode));
}
var list = selectAction.fetch();
return R.success(list);
}
public static R<?> loadExecutor(@RequestBody Map<String, Object> params) {
Long envId = Conv.asLong(params.get("envId"));
if (envId == null) {
return R.fail("envId must not be null");
}
var list = queryDSL.select(QueryDslUtils.linkedMap(
lccBasExecutor.executorId,
lccBasExecutor.virtualFloorCode,
lccBasExecutor.virtualLocationAt,
lccBasExecutor.virtualExecutorPayload
))
.from(lccBasExecutor)
.where(lccBasExecutor.envId.eq(envId))
.where(lccBasExecutor.isActive.eq(true))
.fetch();
return R.success(list);

2
servo/src/main/java/com/yvan/workbench/service/LccAutoStartService.java

@ -27,7 +27,7 @@ public class LccAutoStartService implements SmartLifecycle {
continue; // 跳过无效的配置
}
RCSService.projectStart(projectUUID, envId);
RCSService.serverStart(projectUUID, envId);
}
}

Loading…
Cancel
Save