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 @SneakyThrows
public static void projectStart(String projectUuid, Long envId) { public static void serverStart(String projectUuid, Long envId) {
LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUuid, envId); LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUuid, envId);
if (runtime != null) { if (runtime != null) {
@ -183,7 +183,7 @@ public class RCSService {
runtime.start(); 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); LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUuid, envId);
if (runtime != null) { if (runtime != null) {
LogisticsRuntimeService.INSTANCE.stopByProjectEnv(projectUuid, envId); 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); clientForSend.connect(options);
connectLatch.await(); connectLatch.await();
BannerUtils.printConfig(log, "MQTT 开启监听成功", new String[]{ BannerUtils.printConfig(log, "PtrMqttClient MQTT 开启监听成功", new String[]{
"brokerUrl: " + brokerUrl, "brokerUrl: " + brokerUrl,
"userName: " + username, "userName: " + username,
"clientId: " + clientId, "clientId: " + clientId,

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

@ -243,7 +243,7 @@ public class LogisticsRuntime {
// 启动 MQTT 监听 // 启动 MQTT 监听
this.amrMessageHandler.start(this.env.getEnvConfig().getMqtt(), this.serverId); 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); 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.Getter;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.clever.core.BannerUtils;
import org.clever.core.mapper.JacksonMapper; import org.clever.core.mapper.JacksonMapper;
import org.eclipse.paho.mqttv5.client.*; import org.eclipse.paho.mqttv5.client.*;
import org.eclipse.paho.mqttv5.client.persist.MemoryPersistence; import org.eclipse.paho.mqttv5.client.persist.MemoryPersistence;
@ -54,11 +55,11 @@ public class LccMqttService implements MqttCallback {
connectionLock.lock(); connectionLock.lock();
try { try {
if (connected) { if (connected) {
log.warn("MQTT service is already started"); log.warn("LCC_MQTT service is already started");
return; 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客户端 // 创建MQTT客户端
mqttClient = new MqttClient(mqttConfig.getBrokerUrl(), clientId, persistence); mqttClient = new MqttClient(mqttConfig.getBrokerUrl(), clientId, persistence);
@ -79,12 +80,12 @@ public class LccMqttService implements MqttCallback {
while (attempts < MAX_RETRIES && !connected) { while (attempts < MAX_RETRIES && !connected) {
attempts++; attempts++;
try { 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); mqttClient.connect(options);
connected = true; connected = true;
log.info("MQTT connected successfully"); log.info("LCC_MQTT connected successfully");
} catch (MqttException e) { } 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) { if (attempts < MAX_RETRIES) {
@ -99,7 +100,7 @@ public class LccMqttService implements MqttCallback {
} }
if (!connected) { 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 { } finally {
connectionLock.unlock(); connectionLock.unlock();
@ -116,9 +117,9 @@ public class LccMqttService implements MqttCallback {
try { try {
mqttClient.disconnect(); mqttClient.disconnect();
mqttClient.close(); mqttClient.close();
log.info("MQTT disconnected"); log.info("LCC_MQTT disconnected");
} catch (MqttException e) { } catch (MqttException e) {
log.error("Error disconnecting MQTT", e); log.error("Error disconnecting LCC_MQTT", e);
} }
} }
connected = false; connected = false;
@ -292,7 +293,7 @@ public class LccMqttService implements MqttCallback {
@Override @Override
public void disconnected(MqttDisconnectResponse disconnectResponse) { public void disconnected(MqttDisconnectResponse disconnectResponse) {
log.warn("MQTT disconnected: {}", disconnectResponse); log.warn("LCC_MQTT disconnected: {}", disconnectResponse);
connectionLock.lock(); connectionLock.lock();
try { try {
connected = false; connected = false;
@ -303,7 +304,7 @@ public class LccMqttService implements MqttCallback {
@Override @Override
public void mqttErrorOccurred(MqttException exception) { public void mqttErrorOccurred(MqttException exception) {
log.error("MQTT error occurred", exception); log.error("LCC_MQTT error occurred", exception);
} }
@Override @Override
@ -329,7 +330,10 @@ public class LccMqttService implements MqttCallback {
@Override @Override
public void connectComplete(boolean reconnect, String serverURI) { 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(); connectionLock.lock();
try { try {
connected = true; connected = true;
@ -340,6 +344,6 @@ public class LccMqttService implements MqttCallback {
@Override @Override
public void authPacketArrived(int i, MqttProperties mqttProperties) { 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); 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 java.util.Map;
import static com.galaxis.rcs.common.query.QLccBasContainer.lccBasContainer; 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.QLccBasLocation.lccBasLocation;
import static com.galaxis.rcs.common.query.QLccInvLpn.lccInvLpn; import static com.galaxis.rcs.common.query.QLccInvLpn.lccInvLpn;
@ -28,7 +29,7 @@ public class LccController {
return R.success(mapService.getAllProjects()); 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")); String projectUuid = Conv.asString(params.get("projectUUID"));
Long envId = Conv.asLong(params.get("envId")); Long envId = Conv.asLong(params.get("envId"));
@ -40,14 +41,14 @@ public class LccController {
} }
// 启动 RCS 服务器 // 启动 RCS 服务器
RCSService.projectStart(projectUuid, envId); RCSService.serverStart(projectUuid, envId);
// 启动MFC服务器 / 启动WCS服务器 / 启动PES服务器 等等 // 启动MFC服务器 / 启动WCS服务器 / 启动PES服务器 等等
return R.success("Project started successfully"); 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")); String projectUuid = Conv.asString(params.get("projectUUID"));
Long envId = Conv.asLong(params.get("envId")); Long envId = Conv.asLong(params.get("envId"));
@ -59,25 +60,22 @@ public class LccController {
} }
// 停止RCS服务器 // 停止RCS服务器
RCSService.projectStop(projectUuid, envId); RCSService.serverStop(projectUuid, envId);
// 停止MFC服务器 / 停止WCS服务器 / 停止PES服务器 等等 // 停止MFC服务器 / 停止WCS服务器 / 停止PES服务器 等等
return R.success("Project stopped successfully"); 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")); String catalogCode = Conv.asString(params.get("catalogCode"));
Long envId = Conv.asLong(params.get("envId")); Long envId = Conv.asLong(params.get("envId"));
if (Strings.isNullOrEmpty(catalogCode)) {
return R.fail("catalogCode must not be null");
}
if (envId == null) { if (envId == null) {
return R.fail("envId must not be null"); return R.fail("envId must not be null");
} }
var list = queryDSL.select(QueryDslUtils.linkedMap( var selectAction = queryDSL.select(QueryDslUtils.linkedMap(
lccInvLpn.lpn, lccInvLpn.lpn,
lccBasContainer.containerType, lccBasContainer.containerType,
lccInvLpn.locCode, lccInvLpn.locCode,
@ -89,16 +87,41 @@ public class LccController {
.from(lccInvLpn) .from(lccInvLpn)
.innerJoin(lccBasLocation).on( .innerJoin(lccBasLocation).on(
lccInvLpn.locCode.eq(lccBasLocation.locCode).and( lccInvLpn.locCode.eq(lccBasLocation.locCode).and(
lccBasLocation.envId.eq(lccBasLocation.envId) lccInvLpn.envId.eq(lccBasLocation.envId)
) )
) )
.innerJoin(lccBasContainer).on( .innerJoin(lccBasContainer).on(
lccInvLpn.lpn.eq(lccInvLpn.lpn).and( lccInvLpn.lpn.eq(lccInvLpn.lpn).and(
lccBasContainer.envId.eq(lccInvLpn.envId) lccInvLpn.envId.eq(lccInvLpn.envId)
) )
) )
.where(lccInvLpn.envId.eq(envId)) .where(lccInvLpn.envId.eq(envId));
.where(lccBasLocation.catalogCode.eq(catalogCode))
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(); .fetch();
return R.success(list); 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; // 跳过无效的配置 continue; // 跳过无效的配置
} }
RCSService.projectStart(projectUUID, envId); RCSService.serverStart(projectUUID, envId);
} }
} }

Loading…
Cancel
Save