From c4b6b51afdd3374735ed5f358457987eaa6e476f Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 05 九月 2025 16:55:20 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 41 ++---
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 46 ++++-
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 2
src/main/java/com/zy/core/config/PointInitializer.java | 40 +++++
src/main/java/com/zy/common/utils/NavigatePositionConvert.java | 59 +++++--
/dev/null | 47 -----
src/main/java/com/zy/asrs/controller/ConsoleController.java | 16 -
src/main/java/com/zy/core/config/ShuttleConfigInitializer.java | 46 +++++
src/main/java/com/zy/core/enums/RedisKeyType.java | 5
src/main/java/com/zy/common/utils/NavigateMapData.java | 49 -----
src/main/java/com/zy/core/config/SystemConfigInitializer.java | 35 ++++
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 30 ---
src/main/java/com/zy/core/News.java | 12 +
13 files changed, 249 insertions(+), 179 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index 5b4a3d8..ea1ce40 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -87,10 +87,7 @@
return R.error();
}
- BasMap basMap = JSON.parseObject(data.toString(), BasMap.class);
- //瑙f瀽json鍦板浘鏁版嵁
- ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class);
-
+ List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE, NavigationMapType.PATH_LOCK), arrayList, lev, null, null);//杩囨护鍦板浘鏁版嵁
return R.ok().add(lists);
}
@@ -106,10 +103,7 @@
return R.error();
}
- BasMap basMap = JSON.parseObject(data.toString(), BasMap.class);
- //瑙f瀽json鍦板浘鏁版嵁
- ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class);
-
+ List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE), arrayList, lev, null, null);//杩囨护鍦板浘鏁版嵁
return R.ok().add(lists);
}
@@ -120,8 +114,10 @@
@GetMapping("/map/resetMap/auth")
@ManagerAuth
public R resetMapToRedis() {
- for (int i = 1; i <= 10; i++) {//鎬诲叡10灞傛ゼ
- redisUtil.del(RedisKeyType.MAP.key + i);
+ List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
+ for (BasMap basMap : basMaps) {
+ Integer lev = basMap.getLev();
+ redisUtil.del(RedisKeyType.MAP.key + lev);
}
return R.ok();
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index f2292f5..6524140 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -99,7 +99,7 @@
}
//灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
- redisUtil.set(RedisKeyType.MAP.key + lev, JSON.toJSONString(basMap));
+ redisUtil.set(RedisKeyType.MAP.key + lev, lists);
}
}
diff --git a/src/main/java/com/zy/asrs/task/RealtimeBasMapScheduler.java b/src/main/java/com/zy/asrs/task/RealtimeBasMapScheduler.java
deleted file mode 100644
index 55e0d3e..0000000
--- a/src/main/java/com/zy/asrs/task/RealtimeBasMapScheduler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.zy.asrs.task;
-
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.asrs.entity.BasMap;
-import com.zy.asrs.service.BasMapService;
-import com.zy.common.utils.RedisUtil;
-import com.zy.core.enums.RedisKeyType;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-
-@Component
-@Slf4j
-public class RealtimeBasMapScheduler {
-
- @Autowired
- private RedisUtil redisUtil;
- @Autowired
- private BasMapService basMapService;
-
- /**
- * 姣忓垎閽熶粠redis涓洿鏂板湴鍥炬暟鎹埌鏁版嵁搴撲腑
- */
- @Scheduled(cron = "1 * * * * ? ")
- private void execute(){
- List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
- for (BasMap basMap : basMaps) {
- Integer lev = basMap.getLev();
- Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
- if (data == null) {
- continue;
- }
-
- BasMap redisMap = JSON.parseObject(data.toString(), BasMap.class);
- basMap.setLastData(basMap.getData());
- basMap.setData(redisMap.getData());
- basMap.setUpdateTime(new Date());
- basMapService.updateById(basMap);//鏇存柊
- }
- }
-
-}
diff --git a/src/main/java/com/zy/common/utils/NavigateMapData.java b/src/main/java/com/zy/common/utils/NavigateMapData.java
index 1c7f453..9ad47cb 100644
--- a/src/main/java/com/zy/common/utils/NavigateMapData.java
+++ b/src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -51,52 +51,23 @@
@Autowired
private ObjectMapper objectMapper;
- public int[][] getData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
- try {
- BasMap basMap = basMapService.selectLatestMap(lev);
- String originData = basMap.getOriginData();
-
- //瑙f瀽json鍦板浘鏁版嵁
- ArrayList arrayList = JSON.parseObject(originData, ArrayList.class);
- List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
- int[][] map = new int[lists.size()][];
- int j = 0;
- for (List<MapNode> list : lists) {
- int[] tmp = new int[list.size()];
- int i = 0;
- for (MapNode mapNode : list) {
- //灏嗘暟鎹坊鍔犺繘浜岀淮鏁扮粍
- tmp[i++] = mapNode.getValue();
- }
- //鏁版嵁娣诲姞杩涗竴缁存暟缁�
- map[j++] = tmp;
- }
-
- return map;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
/**
* 灏濊瘯浠巖edis鑾峰彇鏁版嵁
*/
public int[][] getDataFromRedis(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
- Object o = redisUtil.get(RedisKeyType.MAP.key + lev);
- if (o == null) {
+ Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
+ if (data == null) {
return null;
}
- BasMap basMap = JSON.parseObject(o.toString(), BasMap.class);
- return this.getDataFormString(lev, basMap.getData(), mapTypes, whitePoints, shuttlePoints);
+ List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
+ return this.getDataFormString(lev, arrayList, mapTypes, whitePoints, shuttlePoints);
}
/**
* 浠嶭ist鏁版嵁涓幏鍙栧湴鍥�
*/
- public int[][] getDataFormString(Integer lev, String data, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
- ArrayList arrayList = JSON.parseObject(data, ArrayList.class);
+ public int[][] getDataFormString(Integer lev, List<List<MapNode>> arrayList, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
int[][] map = new int[lists.size()][];
int j = 0;
@@ -122,9 +93,7 @@
return null;
}
- BasMap basMap = JSON.parseObject(data.toString(), BasMap.class);
- //瑙f瀽json鍦板浘鏁版嵁
- ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class);
+ List<List<MapNode>> arrayList = (List<List<MapNode>>) data;
List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//杩囨护鍦板浘鏁版嵁
return lists;
} catch (Exception e) {
@@ -173,12 +142,8 @@
* @param whitePoints 鐧藉悕鍗曡妭鐐癸紝涓嶉渶瑕佽杩囨护
* @param shuttlePoints 绌挎杞﹁妭鐐癸紝闇�瑕佸姞杞借繘鍦板浘
*/
- public List<List<MapNode>> filterMap(List<NavigationMapType> mapTypes, List arrayList, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
- //閲嶅缓鏁版嵁鏍煎紡
- List<List<MapNode>> lists = rebuildData(arrayList);
-
+ public List<List<MapNode>> filterMap(List<NavigationMapType> mapTypes, List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
List<NavigationMapType> locMapType = new ArrayList<>();
- locMapType.add(NavigationMapType.NONE);
locMapType.add(NavigationMapType.DFX);
locMapType.add(NavigationMapType.NORMAL);
for (NavigationMapType mapType : mapTypes) {
diff --git a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java
index ac71260..b6a473c 100644
--- a/src/main/java/com/zy/common/utils/NavigatePositionConvert.java
+++ b/src/main/java/com/zy/common/utils/NavigatePositionConvert.java
@@ -6,6 +6,9 @@
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.NavigateNode;
+import com.zy.core.enums.RedisKeyType;
+
+import java.util.HashMap;
/**
* 搴撲綅缂栧彿鍜孉*绠楁硶鐨剎y杞磋浆鎹㈠伐鍏风被
@@ -14,29 +17,53 @@
public static String xyToPosition(int x, int y, int z) {
String locNo = Utils.getLocNo(x, y, z);
+ String code = null;
- //搴撲綅鍙疯浆灏忚溅浜岀淮鐮�
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_no", locNo)
- .eq("status", 1));
- if (locMast == null) {
- return null;
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ Object object = redisUtil.get(RedisKeyType.POINT_MAP.key);
+
+ if(object == null) {
+ //搴撲綅鍙疯浆灏忚溅浜岀淮鐮�
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", locNo)
+ .eq("status", 1));
+ if (locMast == null) {
+ return null;
+ }
+
+ code = locMast.getQrCodeValue();
+ }else {
+ HashMap<String, String> cache = (HashMap<String, String>) object;
+ code = cache.get(locNo);
}
- return locMast.getQrCodeValue();
+ return code;
}
//灏忚溅鏉″舰鐮佽浆璺緞绠楁硶鑺傜偣
public static NavigateNode codeToNode(String code) {
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("qr_code_value", code)
- .eq("status", 1));
- if (locMast == null) {
- return null;
+ NavigateNode node = null;
+
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
+
+ if (object == null) {
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("qr_code_value", code)
+ .eq("status", 1));
+ if (locMast == null) {
+ return null;
+ }
+ node = new NavigateNode(locMast.getRow1(), locMast.getBay1());
+ node.setZ(locMast.getLev1());
+ } else {
+ HashMap<String, String> cache = (HashMap<String, String>) object;
+ String locNo = cache.get(code);
+
+ node = new NavigateNode(Utils.getRow(locNo), Utils.getBay(locNo));
+ node.setZ(Utils.getLev(locNo));
}
- NavigateNode node = new NavigateNode(locMast.getRow1(), locMast.getBay1());
- node.setZ(locMast.getLev1());
return node;
}
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index a683e32..2f826fc 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -3,9 +3,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.service.DeviceConfigService;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.MapNode;
@@ -15,6 +13,7 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.MapNodeType;
+import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.ShuttleRunDirection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.command.ShuttleAssignCommand;
@@ -36,11 +35,7 @@
public class ShuttleOperaUtils {
@Autowired
- private BasShuttleService basShuttleService;
- @Autowired
private NavigateUtils navigateUtils;
- @Autowired
- private NavigateMapUtils navigateMapUtils;
@Autowired
private NavigateMapData navigateMapData;
@Autowired
@@ -49,6 +44,8 @@
private ShuttleDispatchUtils shuttleDispatchUtils;
@Autowired
private DeviceConfigService deviceConfigService;
+ @Autowired
+ private RedisUtil redisUtil;
public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread, "move");
@@ -65,7 +62,16 @@
}
Integer shuttleNo = shuttleProtocol.getShuttleNo();
//鑾峰彇灏忚溅绉诲姩閫熷害
- Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttleNo)).getRunSpeed()).orElse(1000);
+ Integer runSpeed = 1000;
+ Object speedObj = redisUtil.get(RedisKeyType.SHUTTLE_SPEED_MAP.key);
+ if (speedObj != null) {
+ HashMap<Integer, Integer> shuttleSpeedMap = (HashMap<Integer, Integer>) speedObj;
+ Integer speed = shuttleSpeedMap.get(shuttleNo);
+ if (speed != null) {
+ runSpeed = speed;
+ }
+ }
+
long calcStartTime = System.currentTimeMillis();
List<NavigateNode> nodeList = navigateUtils.calc(startLocNo, endLocNo, mapTypes, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startLocNo)), whites);
if (nodeList == null) {
@@ -102,43 +108,59 @@
List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
long endTime = System.currentTimeMillis();
News.info("[RCS Debug] getSection path time:{}", (endTime - startTime));
+
+ long startGetSectionCommandTime = System.currentTimeMillis();
//灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
for (int i = 0; i < data.size(); i++) {
+ long startGetStartAndEndPathTime = System.currentTimeMillis();
List<NavigateNode> nodes = data.get(i);
-
//寮�濮嬭矾寰�
NavigateNode startPath = nodes.get(0);
-
//鐩爣璺緞
NavigateNode endPath = nodes.get(nodes.size() - 1);
+ News.info("[RCS Debug] getStartAndEndPath idx:{} time:{}", i, (System.currentTimeMillis() - startGetStartAndEndPathTime));
+
+ long startAllDistanceTime = System.currentTimeMillis();
Integer allDistance = navigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
+ News.info("[RCS Debug] getAllDistance idx:{} time:{}", i, (System.currentTimeMillis() - startAllDistanceTime));
+
+ long startGetPosition = System.currentTimeMillis();
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ());
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
+ News.info("[RCS Debug] xyToPosition idx:{} time:{}", i, (System.currentTimeMillis() - startGetPosition));
+
+ long startGetMoveCommandTime = System.currentTimeMillis();
//鑾峰彇绉诲姩鍛戒护
ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes);
+ News.info("[RCS Debug] getMoveCommand idx:{} time:{}", i, (System.currentTimeMillis() - startGetMoveCommandTime));
if (i + 1 == data.size()) {
+ long startGetInOutLiftTime = System.currentTimeMillis();
if (moveType.equals("inLift")) {
command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, true);
}else if (moveType.equals("outLift")) {
command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, false);
}
+ News.info("[RCS Debug] getInOutLiftTime idx:{} time:{}", i, (System.currentTimeMillis() - startGetInOutLiftTime));
}
command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑
commands.add(command);
}
+ News.info("[RCS Debug] getSectionCommand path time:{}", (System.currentTimeMillis() - startGetSectionCommandTime));
assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist
assignCommand.setMapTypes(mapTypes);
//灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护
boolean shuttleMoveCommandsContinuously = false;
- Config shuttleMoveCommandsContinuouslyConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleMoveCommandsContinuously"));
- if (shuttleMoveCommandsContinuouslyConfig != null) {
- if (shuttleMoveCommandsContinuouslyConfig.getValue().equals("Y")) {
+ Object object = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
+ if (object != null) {
+ HashMap<String, String> systemConfigMap = (HashMap<String, String>) object;
+ String shuttleMoveCommandsContinuouslyConfig = systemConfigMap.get("shuttleMoveCommandsContinuously");
+ if (shuttleMoveCommandsContinuouslyConfig != null && shuttleMoveCommandsContinuouslyConfig.equals("Y")) {
shuttleMoveCommandsContinuously = true;
}
}
diff --git a/src/main/java/com/zy/core/News.java b/src/main/java/com/zy/core/News.java
index 0b650b5..b60de78 100644
--- a/src/main/java/com/zy/core/News.java
+++ b/src/main/java/com/zy/core/News.java
@@ -116,7 +116,11 @@
return;
}
}
+ log.info(format, arguments);
+ offer(NewsLevel.INFO, format, arguments);
+ return;
}
+
RedisUtil redisUtil = null;
try {
redisUtil = SpringUtils.getBean(RedisUtil.class);
@@ -147,7 +151,11 @@
return;
}
}
+ log.warn(format, arguments);
+ offer(NewsLevel.WARN, format, arguments);
+ return;
}
+
RedisUtil redisUtil = null;
try {
redisUtil = SpringUtils.getBean(RedisUtil.class);
@@ -178,7 +186,11 @@
return;
}
}
+ log.error(format, arguments);
+ offer(NewsLevel.ERROR, format, arguments);
+ return;
}
+
RedisUtil redisUtil = null;
try {
redisUtil = SpringUtils.getBean(RedisUtil.class);
diff --git a/src/main/java/com/zy/core/config/PointInitializer.java b/src/main/java/com/zy/core/config/PointInitializer.java
new file mode 100644
index 0000000..6b83334
--- /dev/null
+++ b/src/main/java/com/zy/core/config/PointInitializer.java
@@ -0,0 +1,40 @@
+package com.zy.core.config;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.LocMastService;
+import com.zy.common.utils.RedisUtil;
+import com.zy.core.enums.RedisKeyType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.List;
+
+@Component
+public class PointInitializer {
+
+ @Autowired
+ private RedisUtil redisUtil;
+ @Autowired
+ private LocMastService locMastService;
+
+ @PostConstruct
+ public void init() {
+ HashMap<String, String> pointMap = new HashMap<>();
+ HashMap<String, String> locMap = new HashMap<>();
+
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<>());
+ for (LocMast locMast : locMasts) {
+ String locNo = locMast.getLocNo();
+ String qrCodeValue = locMast.getQrCodeValue();
+ pointMap.put(locNo, qrCodeValue);
+ locMap.put(qrCodeValue, locNo);
+ }
+
+ redisUtil.set(RedisKeyType.POINT_MAP.key, pointMap);
+ redisUtil.set(RedisKeyType.LOC_MAP.key, locMap);
+ }
+
+}
diff --git a/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java b/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java
new file mode 100644
index 0000000..eb70124
--- /dev/null
+++ b/src/main/java/com/zy/core/config/ShuttleConfigInitializer.java
@@ -0,0 +1,46 @@
+package com.zy.core.config;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.BasShuttle;
+import com.zy.asrs.entity.DeviceConfig;
+import com.zy.asrs.service.BasShuttleService;
+import com.zy.asrs.service.DeviceConfigService;
+import com.zy.common.utils.RedisUtil;
+import com.zy.core.enums.RedisKeyType;
+import com.zy.core.enums.SlaveType;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
+
+@Component
+public class ShuttleConfigInitializer {
+
+ @Autowired
+ private DeviceConfigService deviceConfigService;
+ @Autowired
+ private BasShuttleService basShuttleService;
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @PostConstruct
+ public void shuttleSpeedInit() {
+ HashMap<Integer, Integer> shuttleSpeedMap = new HashMap<>();
+
+ List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
+ .eq("device_type", String.valueOf(SlaveType.Shuttle)));
+ for (DeviceConfig shuttle : shuttleList) {
+ //鑾峰彇灏忚溅绉诲姩閫熷害
+ Integer runSpeed = Optional.ofNullable(basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", shuttle.getDeviceNo())).getRunSpeed()).orElse(1000);
+ shuttleSpeedMap.put(shuttle.getDeviceNo(), runSpeed);
+ }
+
+ redisUtil.set(RedisKeyType.SHUTTLE_SPEED_MAP.key, shuttleSpeedMap);
+ }
+
+}
diff --git a/src/main/java/com/zy/core/config/SystemConfigInitializer.java b/src/main/java/com/zy/core/config/SystemConfigInitializer.java
new file mode 100644
index 0000000..0ee2318
--- /dev/null
+++ b/src/main/java/com/zy/core/config/SystemConfigInitializer.java
@@ -0,0 +1,35 @@
+package com.zy.core.config;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.common.utils.RedisUtil;
+import com.zy.core.enums.RedisKeyType;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.List;
+
+@Component
+public class SystemConfigInitializer {
+
+ @Autowired
+ private ConfigService configService;
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @PostConstruct
+ public void init() {
+ HashMap<String, String> systemConfigMap = new HashMap<>();
+
+ List<Config> configList = configService.selectList(new EntityWrapper<>());
+ for (Config config : configList) {
+ systemConfigMap.put(config.getName(), config.getValue());
+ }
+
+ redisUtil.set(RedisKeyType.SYSTEM_CONFIG_MAP.key, systemConfigMap);
+ }
+
+}
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 31f830a..8e541e0 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -53,6 +53,11 @@
FAKE_DEVICE_CONFIG("fakeDeviceConfig"),
LOG_LIMIT("log_limit_"),
+
+ POINT_MAP("point_map"),
+ LOC_MAP("loc_map"),
+ SHUTTLE_SPEED_MAP("shuttle_speed_map"),
+ SYSTEM_CONFIG_MAP("system_config_map"),
;
public String key;
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index 9918060..dc1c42a 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -381,32 +381,10 @@
@Override
public CommandResponse reset() {
- CommandResponse response = new CommandResponse(false);
- try {
- LiftCommand resetCommand = getResetCommand(9999);
-
- //鍙戝嚭璇锋眰
- String resultKey = requestCommand(resetCommand);
- //鏌ヨ璇锋眰缁撴灉
- JSONObject result = queryCommandStatus(resultKey);
- if (result == null) {
- return response;//璇锋眰澶辫触
- }
- if(!result.getString("result").equals("success")) {
- return response;//璇锋眰澶辫触
- }
-
- this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
- this.setSyncTaskNo(0);
- this.setProtocolStatus(LiftProtocolStatusType.IDLE);
- response.setMessage(JSON.toJSONString(result));
- response.setResult(true);
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- response.setMessage(e.getMessage());
- return response;
- }
+ CommandResponse response = new CommandResponse(true);
+ this.setSyncTaskNo(0);
+ this.setProtocolStatus(LiftProtocolStatusType.IDLE);
+ return response;
}
@Override
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index e167988..53fbe7f 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -5,7 +5,6 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
-import com.core.exception.CoolException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.entity.DeviceConfig;
@@ -983,6 +982,7 @@
request.setBody(body);
NavigateNode startNode = nodes.get(0);
+ List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
for (NavigateNode node : nodes) {
HashMap<String, Object> data = new HashMap<>();
String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
@@ -991,7 +991,6 @@
int yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
- List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
List<MapNode> mapNodes = mapData.get(node.getX());
MapNode mapNode = mapNodes.get(node.getY());
@@ -1005,18 +1004,15 @@
httpStandard.setRequest(request);
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("qr_code_value", distCodeNum));
- if (locMast == null) {
- throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�");
- }
+ Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
+ HashMap<String, String> locMap = (HashMap<String, String>) object;
+ String targetLocNo = locMap.get(distCodeNum);
ShuttleCommand command = new ShuttleCommand();
command.setShuttleNo(deviceConfig.getDeviceNo());
command.setBody(JSON.toJSONString(httpStandard));
command.setMode(ShuttleCommandModeType.MOVE.id);
- command.setTargetLocNo(locMast.getLocNo());
+ command.setTargetLocNo(targetLocNo);
command.setTaskNo(taskId);
return command;
}
@@ -1041,6 +1037,7 @@
request.setBody(body);
NavigateNode startNode = nodes.get(0);
+ List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
for (NavigateNode node : nodes) {
HashMap<String, Object> data = new HashMap<>();
String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
@@ -1049,7 +1046,6 @@
int yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
- List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
List<MapNode> mapNodes = mapData.get(node.getX());
MapNode mapNode = mapNodes.get(node.getY());
@@ -1063,18 +1059,15 @@
httpStandard.setRequest(request);
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("qr_code_value", distCodeNum));
- if (locMast == null) {
- throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�");
- }
+ Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
+ HashMap<String, String> locMap = (HashMap<String, String>) object;
+ String targetLocNo = locMap.get(distCodeNum);
ShuttleCommand command = new ShuttleCommand();
command.setShuttleNo(deviceConfig.getDeviceNo());
command.setBody(JSON.toJSONString(httpStandard));
command.setMode(ShuttleCommandModeType.MOVE.id);
- command.setTargetLocNo(locMast.getLocNo());
+ command.setTargetLocNo(targetLocNo);
command.setTaskNo(taskId);
return command;
}
@@ -1143,7 +1136,6 @@
//鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护
public ShuttleCommand getInitCommand(Integer taskNo, Integer code) {
- LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
@@ -1159,15 +1151,14 @@
map.put("z", lev);
String mapStr = JSON.toJSONString(map);
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("qr_code_value", mapStr));
- if (locMast == null) {
- throw new CoolException("鍦板潃鐮佷笉瀛樺湪");
- }
+
+ Object object = redisUtil.get(RedisKeyType.LOC_MAP.key);
+ HashMap<String, String> locMap = (HashMap<String, String>) object;
+ String targetLocNo = locMap.get(mapStr);
List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
- List<MapNode> mapNodes = mapData.get(locMast.getRow1());
- MapNode mapNode = mapNodes.get(locMast.getBay1());
+ List<MapNode> mapNodes = mapData.get(Utils.getRow(targetLocNo));
+ MapNode mapNode = mapNodes.get(Utils.getBay(targetLocNo));
HashMap<String, Object> location = new HashMap<>();
location.put("xp", row);
--
Gitblit v1.9.1