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. 16
      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.workbench.model.query.QLccModelFloor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.clever.core.Conv;
import org.clever.core.json.JsonWrapper;
import org.clever.data.jdbc.DaoFactory;
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调用类
*/
public class RCS {
static {
@Slf4j
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.projectUUID = projectUUID;
runtime.catalogCode = catalogCode;
log.info("loadFloor: projectUUID={}, catalogCode={}, envId={}", projectUUID, catalogCode, envId);
runtime.loadMap(jw);
EnvStartParam param = new EnvStartParam();
param.setTimeRate(1);
param.setVirtual(false);
runtime.start(param);
log.info("startDispatch: projectUUID={}, catalogCode={}, envId={}", projectUUID, catalogCode, envId);
}
return true;
}
@ -174,7 +208,7 @@ public class RCS {
request.setDescription("从rack1的0/1/0, 取货到地堆54");
request.setCreateBy("runDemo");
AddTaskResult result = RCS.addTask(envId, request);
AddTaskResult result = RCSService.addTask(envId, request);
LogisticsRuntime logisticsRuntime = LogisticsRuntimeService.INSTANCE.findByEnvCode(envId);
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 String envPayload;
/** 是否自动启动 */
private Boolean autoStart;
/** 创建时间 */
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 StringPath envPayload = createString("envPayload");
/** 是否自动启动 */
public final BooleanPath autoStart = createBoolean("autoStart");
/** 创建时间 */
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(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(createAt, ColumnMetadata.named("create_at").withIndex(6).ofType(Types.TIMESTAMP));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(7).ofType(Types.VARCHAR).withSize(50));
addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(8).ofType(Types.TIMESTAMP));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(9).ofType(Types.VARCHAR).withSize(50));
addMetadata(autoStart, ColumnMetadata.named("auto_start").withIndex(6).ofType(Types.BIT).withSize(3));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(7).ofType(Types.TIMESTAMP));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(8).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.type.TypeReference;
import com.galaxis.rcs.RCS;
import com.galaxis.rcs.RCSService;
import com.galaxis.rcs.communication.JacksonUtils;
import com.galaxis.rcs.connector.cl2.receiveEntity.*;
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.common.MqttException;
import org.eclipse.paho.mqttv5.common.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Service
@ -196,7 +191,7 @@ public class AmrMessageHandler {
}
static {
RCS.ok();
RCSService.ok();
}
public static PtrAgvItem getPtrAgvItem(String vehicleId) {

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

@ -1,6 +1,7 @@
package com.yvan.workbench.autoconfigure;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.galaxis.rcs.RCSService;
import io.javalin.config.JavalinConfig;
import io.javalin.json.JavalinJackson;
import io.javalin.json.JsonMapper;
@ -56,6 +57,13 @@ public class AppAutoConfiguration {
private final Environment environment;
@Bean
public RCSService rcsService() {
RCSService rcsService = new RCSService();
rcsService.init();
return rcsService;
}
@Bean
public AppBasicsConfig appBasicsConfig() {
AppBasicsConfig appBasicsConfig = AppBasicsConfig.create(environment);
appBasicsConfig.init();
@ -113,10 +121,10 @@ public class AppAutoConfiguration {
public MultipartConfigElement multipartConfigElement(AppBasicsConfig appBasicsConfig, WebConfig webConfig) {
HttpConfig.Multipart multipart = webConfig.getHttp().getMultipart();
return new MultipartConfigElement(
ResourcePathUtils.getAbsolutePath(appBasicsConfig.getRootPath(), multipart.getLocation()),
multipart.getMaxFileSize().toBytes(),
multipart.getMaxTotalRequestSize().toBytes(),
(int) multipart.getMaxInMemoryFileSize().toBytes()
ResourcePathUtils.getAbsolutePath(appBasicsConfig.getRootPath(), multipart.getLocation()),
multipart.getMaxFileSize().toBytes(),
multipart.getMaxTotalRequestSize().toBytes(),
(int) multipart.getMaxInMemoryFileSize().toBytes()
);
}

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

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

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

@ -1,6 +1,6 @@
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.StoreLocation;
import com.galaxis.rcs.common.enums.BizTaskStatus;
@ -62,7 +62,7 @@ public class RcsController {
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);
StaticItem toItem = logisticsRuntime.getStaticItemById(targetWayPointId);
@ -135,7 +135,7 @@ public class RcsController {
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);
@ -169,7 +169,7 @@ public class RcsController {
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);
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;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ -20,6 +19,8 @@ public class LccModelFloor implements Serializable {
private String catalogCode;
/** 楼层数据 */
private String items;
/** */
private Boolean autoStart;
/** 创建时间,默认为当前时间 */
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;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.NumberPath;
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 static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.*;
import com.querydsl.sql.*;
import java.sql.Types;
import com.yvan.workbench.model.entity.LccModelFloor;
import java.util.Date;
import static com.querydsl.core.types.PathMetadataFactory.forVariable;
/**
* (lcc_model_floor)
*/
@ -32,6 +26,8 @@ public class QLccModelFloor extends RelationalPathBase<LccModelFloor> {
public final StringPath catalogCode = createString("catalogCode");
/** 楼层数据 */
public final StringPath items = createString("items");
/** */
public final BooleanPath autoStart = createBoolean("autoStart");
/** 创建时间,默认为当前时间 */
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(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(items, ColumnMetadata.named("items").withIndex(5).ofType(Types.LONGVARCHAR).withSize(65535));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(6).ofType(Types.TIMESTAMP));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(7).ofType(Types.VARCHAR).withSize(255));
addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(8).ofType(Types.TIMESTAMP));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(9).ofType(Types.VARCHAR).withSize(255));
addMetadata(items, ColumnMetadata.named("items").withIndex(5).ofType(Types.LONGVARCHAR).withSize(16777215));
addMetadata(autoStart, ColumnMetadata.named("auto_start").withIndex(6).ofType(Types.BIT).withSize(3));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(7).ofType(Types.TIMESTAMP));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(8).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:
broker-url: 'tcp://180.100.199.56:7097'
client-id: 'yvan-rcs-dev'
client-id: 'luoyifan'
username: 'galaxis'
password: 'Admin1234_'
#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_device")
// .addTable("rcs_task_plan");
.addTable("rcs_task_plan");
.addTable("lcc_model_floor");
CodegenUtils.genCode(jdbc, config);
log.info("-->");
jdbc.close();

Loading…
Cancel
Save