Browse Source

项目启动, 根据 环境和楼层的 auto_start 初始化

master
修宁 6 months ago
parent
commit
eac56c4dcc
  1. 42
      servo/src/main/java/com/galaxis/rcs/RCSService.java
  2. 23
      servo/src/main/java/com/galaxis/rcs/RcsRootController.java
  3. 2
      servo/src/main/java/com/galaxis/rcs/common/entity/LccEnvInfo.java
  4. 11
      servo/src/main/java/com/galaxis/rcs/common/query/QLccEnvInfo.java
  5. 9
      servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java
  6. 8
      servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java
  7. 11
      servo/src/main/java/com/yvan/workbench/controller/EnvController.java
  8. 4
      servo/src/main/java/com/yvan/workbench/controller/LccController.java
  9. 8
      servo/src/main/java/com/yvan/workbench/controller/RcsController.java
  10. 3
      servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java
  11. 29
      servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java
  12. 2
      servo/src/main/resources/application-dev.yml
  13. 2
      servo/src/test/java/com/yvan/workbench/CodegenTest.java

42
servo/src/main/java/com/galaxis/rcs/RCS.java → servo/src/main/java/com/galaxis/rcs/RCSService.java

@ -17,18 +17,49 @@ import com.yvan.logisticsModel.LogisticsRuntime;
import com.yvan.logisticsModel.LogisticsRuntimeService; import com.yvan.logisticsModel.LogisticsRuntimeService;
import com.yvan.workbench.model.query.QLccModelFloor; import com.yvan.workbench.model.query.QLccModelFloor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.clever.core.Conv;
import org.clever.core.json.JsonWrapper; import org.clever.core.json.JsonWrapper;
import org.clever.data.jdbc.DaoFactory; import org.clever.data.jdbc.DaoFactory;
import org.clever.data.jdbc.QueryDSL; import org.clever.data.jdbc.QueryDSL;
import org.clever.data.jdbc.querydsl.utils.QueryDslUtils;
import java.util.Map;
import static com.galaxis.rcs.common.query.QLccEnvInfo.lccEnvInfo;
import static com.yvan.workbench.model.query.QLccModelFloor.lccModelFloor;
/** /**
* RCS 对外API调用类 * RCS 对外API调用类
*/ */
public class RCS { @Slf4j
static { public class RCSService {
public static void ok() {
} }
public static void ok() { public void init() {
QueryDSL queryDSL = DaoFactory.getQueryDSL();
var list = queryDSL.select(QueryDslUtils.linkedMap(
lccEnvInfo.envId,
lccEnvInfo.worldId,
lccEnvInfo.envPayload,
lccModelFloor.catalogCode
)).from(lccEnvInfo)
.innerJoin(lccModelFloor).on(
lccEnvInfo.worldId.eq(lccModelFloor.projectUuid)
)
.where(lccEnvInfo.autoStart.eq(true))
.where(lccModelFloor.autoStart.eq(true))
.fetch();
for (Map<String, Object> map : list) {
long envId = Conv.asLong(map.get("env_id"));
String projectUuid = Conv.asString(map.get("world_id"));
String catalogCode = Conv.asString(map.get("catalog_code"));
loadFloor(projectUuid, catalogCode, envId);
}
} }
/** /**
@ -83,12 +114,15 @@ public class RCS {
runtime = LogisticsRuntimeService.INSTANCE.findByEnvCode(envId); runtime = LogisticsRuntimeService.INSTANCE.findByEnvCode(envId);
runtime.projectUUID = projectUUID; runtime.projectUUID = projectUUID;
runtime.catalogCode = catalogCode; runtime.catalogCode = catalogCode;
log.info("loadFloor: projectUUID={}, catalogCode={}, envId={}", projectUUID, catalogCode, envId);
runtime.loadMap(jw); runtime.loadMap(jw);
EnvStartParam param = new EnvStartParam(); EnvStartParam param = new EnvStartParam();
param.setTimeRate(1); param.setTimeRate(1);
param.setVirtual(false); param.setVirtual(false);
runtime.start(param); runtime.start(param);
log.info("startDispatch: projectUUID={}, catalogCode={}, envId={}", projectUUID, catalogCode, envId);
} }
return true; return true;
} }
@ -174,7 +208,7 @@ public class RCS {
request.setDescription("从rack1的0/1/0, 取货到地堆54"); request.setDescription("从rack1的0/1/0, 取货到地堆54");
request.setCreateBy("runDemo"); request.setCreateBy("runDemo");
AddTaskResult result = RCS.addTask(envId, request); AddTaskResult result = RCSService.addTask(envId, request);
LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByEnvCode(envId); LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByEnvCode(envId);
RcsTaskBiz bizTask = logisticsRuntime.taskService.waitingTaskList.get(logisticsRuntime.taskService.waitingTaskList.size() - 1); RcsTaskBiz bizTask = logisticsRuntime.taskService.waitingTaskList.get(logisticsRuntime.taskService.waitingTaskList.size() - 1);

23
servo/src/main/java/com/galaxis/rcs/RcsRootController.java

@ -1,23 +0,0 @@
package com.galaxis.rcs;
import com.galaxis.rcs.communication.amrCommunication.MqttService;
import org.eclipse.paho.mqttv5.common.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RcsRootController {
@Autowired
private MqttService mqttService;
@GetMapping("/ok")
public String ok() throws MqttException {
mqttService.subscribe("/agv_robot/status");
mqttService.publish("status", "OK");
// mqttService.publish("rcs/root/ok", "OK");
return "OK";
}
}

2
servo/src/main/java/com/galaxis/rcs/common/entity/LccEnvInfo.java

@ -19,6 +19,8 @@ public class LccEnvInfo implements Serializable {
private Boolean isVirtual; private Boolean isVirtual;
/** 环境负载信息 */ /** 环境负载信息 */
private String envPayload; private String envPayload;
/** 是否自动启动 */
private Boolean autoStart;
/** 创建时间 */ /** 创建时间 */
private Date createAt; private Date createAt;
/** 创建人 */ /** 创建人 */

11
servo/src/main/java/com/galaxis/rcs/common/query/QLccEnvInfo.java

@ -26,6 +26,8 @@ public class QLccEnvInfo extends RelationalPathBase<LccEnvInfo> {
public final BooleanPath isVirtual = createBoolean("isVirtual"); public final BooleanPath isVirtual = createBoolean("isVirtual");
/** 环境负载信息 */ /** 环境负载信息 */
public final StringPath envPayload = createString("envPayload"); public final StringPath envPayload = createString("envPayload");
/** 是否自动启动 */
public final BooleanPath autoStart = createBoolean("autoStart");
/** 创建时间 */ /** 创建时间 */
public final DateTimePath<Date> createAt = createDateTime("createAt", Date.class); public final DateTimePath<Date> createAt = createDateTime("createAt", Date.class);
/** 创建人 */ /** 创建人 */
@ -66,9 +68,10 @@ public class QLccEnvInfo extends RelationalPathBase<LccEnvInfo> {
addMetadata(envName, ColumnMetadata.named("env_name").withIndex(3).ofType(Types.VARCHAR).withSize(50)); addMetadata(envName, ColumnMetadata.named("env_name").withIndex(3).ofType(Types.VARCHAR).withSize(50));
addMetadata(isVirtual, ColumnMetadata.named("is_virtual").withIndex(4).ofType(Types.BIT).withSize(3)); addMetadata(isVirtual, ColumnMetadata.named("is_virtual").withIndex(4).ofType(Types.BIT).withSize(3));
addMetadata(envPayload, ColumnMetadata.named("env_payload").withIndex(5).ofType(Types.VARCHAR).withSize(3000)); addMetadata(envPayload, ColumnMetadata.named("env_payload").withIndex(5).ofType(Types.VARCHAR).withSize(3000));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(6).ofType(Types.TIMESTAMP)); addMetadata(autoStart, ColumnMetadata.named("auto_start").withIndex(6).ofType(Types.BIT).withSize(3));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(7).ofType(Types.VARCHAR).withSize(50)); addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(7).ofType(Types.TIMESTAMP));
addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(8).ofType(Types.TIMESTAMP)); addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(8).ofType(Types.VARCHAR).withSize(50));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(9).ofType(Types.VARCHAR).withSize(50)); addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(9).ofType(Types.TIMESTAMP));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(10).ofType(Types.VARCHAR).withSize(50));
} }
} }

9
servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java

@ -3,7 +3,7 @@ package com.galaxis.rcs.communication.amrCommunication;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.galaxis.rcs.RCS; import com.galaxis.rcs.RCSService;
import com.galaxis.rcs.communication.JacksonUtils; import com.galaxis.rcs.communication.JacksonUtils;
import com.galaxis.rcs.connector.cl2.receiveEntity.*; import com.galaxis.rcs.connector.cl2.receiveEntity.*;
import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskCompletedData; import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskCompletedData;
@ -21,14 +21,9 @@ import org.clever.data.redis.Redis;
import org.eclipse.paho.mqttv5.client.MqttClient; import org.eclipse.paho.mqttv5.client.MqttClient;
import org.eclipse.paho.mqttv5.common.MqttException; import org.eclipse.paho.mqttv5.common.MqttException;
import org.eclipse.paho.mqttv5.common.MqttMessage; import org.eclipse.paho.mqttv5.common.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j @Slf4j
@Service @Service
@ -196,7 +191,7 @@ public class AmrMessageHandler {
} }
static { static {
RCS.ok(); RCSService.ok();
} }
public static PtrAgvItem getPtrAgvItem(String vehicleId) { public static PtrAgvItem getPtrAgvItem(String vehicleId) {

8
servo/src/main/java/com/yvan/workbench/autoconfigure/AppAutoConfiguration.java

@ -1,6 +1,7 @@
package com.yvan.workbench.autoconfigure; package com.yvan.workbench.autoconfigure;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.galaxis.rcs.RCSService;
import io.javalin.config.JavalinConfig; import io.javalin.config.JavalinConfig;
import io.javalin.json.JavalinJackson; import io.javalin.json.JavalinJackson;
import io.javalin.json.JsonMapper; import io.javalin.json.JsonMapper;
@ -56,6 +57,13 @@ public class AppAutoConfiguration {
private final Environment environment; private final Environment environment;
@Bean @Bean
public RCSService rcsService() {
RCSService rcsService = new RCSService();
rcsService.init();
return rcsService;
}
@Bean
public AppBasicsConfig appBasicsConfig() { public AppBasicsConfig appBasicsConfig() {
AppBasicsConfig appBasicsConfig = AppBasicsConfig.create(environment); AppBasicsConfig appBasicsConfig = AppBasicsConfig.create(environment);
appBasicsConfig.init(); appBasicsConfig.init();

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

@ -1,13 +1,12 @@
package com.yvan.workbench.controller; package com.yvan.workbench.controller;
import com.galaxis.rcs.RCS; import com.galaxis.rcs.RCSService;
import com.yvan.workbench.model.entity.Model; import com.yvan.workbench.model.entity.Model;
import org.clever.core.Conv; import org.clever.core.Conv;
import org.clever.data.jdbc.DaoFactory; import org.clever.data.jdbc.DaoFactory;
import org.clever.data.jdbc.QueryDSL; import org.clever.data.jdbc.QueryDSL;
import org.clever.data.jdbc.querydsl.utils.QueryDslUtils; import org.clever.data.jdbc.querydsl.utils.QueryDslUtils;
import org.clever.web.mvc.annotation.RequestBody; import org.clever.web.mvc.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -28,19 +27,19 @@ public class EnvController {
} }
public static Model<?> runDemo() { public static Model<?> runDemo() {
RCS.runDemo(); RCSService.runDemo();
return Model.newSuccess(true); return Model.newSuccess(true);
} }
public static Model<?> runPath() { public static Model<?> runPath() {
return Model.newSuccess(RCS.runPath()); return Model.newSuccess(RCSService.runPath());
} }
public static Model<?> runPath2() { public static Model<?> runPath2() {
return Model.newSuccess(RCS.runPath2()); return Model.newSuccess(RCSService.runPath2());
} }
public static Model<?> getDemo() { public static Model<?> getDemo() {
return Model.newSuccess(RCS.getDemo()); return Model.newSuccess(RCSService.getDemo());
} }
} }

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

@ -1,6 +1,6 @@
package com.yvan.workbench.controller; package com.yvan.workbench.controller;
import com.galaxis.rcs.RCS; import com.galaxis.rcs.RCSService;
import com.yvan.workbench.model.entity.Model; import com.yvan.workbench.model.entity.Model;
import org.clever.core.Conv; import org.clever.core.Conv;
import org.clever.web.mvc.annotation.RequestBody; import org.clever.web.mvc.annotation.RequestBody;
@ -16,7 +16,7 @@ public class LccController {
String projectUUID = Conv.asString(params.get("projectUUID")); String projectUUID = Conv.asString(params.get("projectUUID"));
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"));
boolean result = RCS.loadFloor(projectUUID, catalogCode, envId); boolean result = RCSService.loadFloor(projectUUID, catalogCode, envId);
return Model.newSuccess(result); return Model.newSuccess(result);
} }

8
servo/src/main/java/com/yvan/workbench/controller/RcsController.java

@ -1,6 +1,6 @@
package com.yvan.workbench.controller; package com.yvan.workbench.controller;
import com.galaxis.rcs.RCS; import com.galaxis.rcs.RCSService;
import com.galaxis.rcs.common.entity.RcsTaskBiz; import com.galaxis.rcs.common.entity.RcsTaskBiz;
import com.galaxis.rcs.common.entity.StoreLocation; import com.galaxis.rcs.common.entity.StoreLocation;
import com.galaxis.rcs.common.enums.BizTaskStatus; import com.galaxis.rcs.common.enums.BizTaskStatus;
@ -62,7 +62,7 @@ public class RcsController {
return Model.newFail("targetWayPointId Must not be empty"); return Model.newFail("targetWayPointId Must not be empty");
} }
RCS.loadFloor(projectUUID, catalogCode, envId); RCSService.loadFloor(projectUUID, catalogCode, envId);
LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode); LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode);
StaticItem toItem = logisticsRuntime.getStaticItemById(targetWayPointId); StaticItem toItem = logisticsRuntime.getStaticItemById(targetWayPointId);
@ -135,7 +135,7 @@ public class RcsController {
return Model.newFail("agvId Must not be empty"); return Model.newFail("agvId Must not be empty");
} }
RCS.loadFloor(projectUUID, catalogCode, envId); RCSService.loadFloor(projectUUID, catalogCode, envId);
LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode); LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode);
@ -169,7 +169,7 @@ public class RcsController {
return Model.newFail("targetStoreLoc Must not be empty"); return Model.newFail("targetStoreLoc Must not be empty");
} }
RCS.loadFloor(projectUUID, catalogCode, envId); RCSService.loadFloor(projectUUID, catalogCode, envId);
LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode); LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByProjectFloor(projectUUID, catalogCode);
StaticItem sourceItem = logisticsRuntime.getStaticItemById(fromStoreLoc); StaticItem sourceItem = logisticsRuntime.getStaticItemById(fromStoreLoc);

3
servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java

@ -1,7 +1,6 @@
package com.yvan.workbench.model.entity; package com.yvan.workbench.model.entity;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
@ -20,6 +19,8 @@ public class LccModelFloor implements Serializable {
private String catalogCode; private String catalogCode;
/** 楼层数据 */ /** 楼层数据 */
private String items; private String items;
/** */
private Boolean autoStart;
/** 创建时间,默认为当前时间 */ /** 创建时间,默认为当前时间 */
private Date createAt; private Date createAt;
/** 创建人 */ /** 创建人 */

29
servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java

@ -1,19 +1,13 @@
package com.yvan.workbench.model.query; package com.yvan.workbench.model.query;
import com.querydsl.core.types.Path; import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.PathMetadata; import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.dsl.DateTimePath; import com.querydsl.core.types.*;
import com.querydsl.core.types.dsl.NumberPath; import com.querydsl.sql.*;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.sql.ColumnMetadata;
import com.querydsl.sql.RelationalPathBase;
import com.yvan.workbench.model.entity.LccModelFloor;
import java.sql.Types; import java.sql.Types;
import com.yvan.workbench.model.entity.LccModelFloor;
import java.util.Date; import java.util.Date;
import static com.querydsl.core.types.PathMetadataFactory.forVariable;
/** /**
* (lcc_model_floor) * (lcc_model_floor)
*/ */
@ -32,6 +26,8 @@ public class QLccModelFloor extends RelationalPathBase<LccModelFloor> {
public final StringPath catalogCode = createString("catalogCode"); public final StringPath catalogCode = createString("catalogCode");
/** 楼层数据 */ /** 楼层数据 */
public final StringPath items = createString("items"); public final StringPath items = createString("items");
/** */
public final BooleanPath autoStart = createBoolean("autoStart");
/** 创建时间,默认为当前时间 */ /** 创建时间,默认为当前时间 */
public final DateTimePath<Date> createAt = createDateTime("createAt", Date.class); public final DateTimePath<Date> createAt = createDateTime("createAt", Date.class);
/** 创建人 */ /** 创建人 */
@ -71,10 +67,11 @@ public class QLccModelFloor extends RelationalPathBase<LccModelFloor> {
addMetadata(projectUuid, ColumnMetadata.named("project_uuid").withIndex(2).ofType(Types.VARCHAR).withSize(36)); addMetadata(projectUuid, ColumnMetadata.named("project_uuid").withIndex(2).ofType(Types.VARCHAR).withSize(36));
addMetadata(projectVersion, ColumnMetadata.named("project_version").withIndex(3).ofType(Types.BIGINT).withSize(19)); addMetadata(projectVersion, ColumnMetadata.named("project_version").withIndex(3).ofType(Types.BIGINT).withSize(19));
addMetadata(catalogCode, ColumnMetadata.named("catalogCode").withIndex(4).ofType(Types.VARCHAR).withSize(255)); addMetadata(catalogCode, ColumnMetadata.named("catalogCode").withIndex(4).ofType(Types.VARCHAR).withSize(255));
addMetadata(items, ColumnMetadata.named("items").withIndex(5).ofType(Types.LONGVARCHAR).withSize(65535)); addMetadata(items, ColumnMetadata.named("items").withIndex(5).ofType(Types.LONGVARCHAR).withSize(16777215));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(6).ofType(Types.TIMESTAMP)); addMetadata(autoStart, ColumnMetadata.named("auto_start").withIndex(6).ofType(Types.BIT).withSize(3));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(7).ofType(Types.VARCHAR).withSize(255)); addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(7).ofType(Types.TIMESTAMP));
addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(8).ofType(Types.TIMESTAMP)); addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(8).ofType(Types.VARCHAR).withSize(255));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(9).ofType(Types.VARCHAR).withSize(255)); addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(9).ofType(Types.TIMESTAMP));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(10).ofType(Types.VARCHAR).withSize(255));
} }
} }

2
servo/src/main/resources/application-dev.yml

@ -42,7 +42,7 @@ redis:
mqtt: mqtt:
broker-url: 'tcp://180.100.199.56:7097' broker-url: 'tcp://180.100.199.56:7097'
client-id: 'yvan-rcs-dev' client-id: 'luoyifan'
username: 'galaxis' username: 'galaxis'
password: 'Admin1234_' password: 'Admin1234_'
#mqtt: #mqtt:

2
servo/src/test/java/com/yvan/workbench/CodegenTest.java

@ -29,7 +29,7 @@ public class CodegenTest {
// .addTable("rcs_task_biz") // .addTable("rcs_task_biz")
// .addTable("rcs_task_device") // .addTable("rcs_task_device")
// .addTable("rcs_task_plan"); // .addTable("rcs_task_plan");
.addTable("rcs_task_plan"); .addTable("lcc_model_floor");
CodegenUtils.genCode(jdbc, config); CodegenUtils.genCode(jdbc, config);
log.info("-->"); log.info("-->");
jdbc.close(); jdbc.close();

Loading…
Cancel
Save