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