From ab0db76dc627a63699380dc65e2773c47d12f449 Mon Sep 17 00:00:00 2001 From: qlsxk <qlsxk@qq.com> Date: 星期二, 14 十月 2025 15:22:59 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/ConsoleController.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 154 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java index 186f708..1c61d5e 100644 --- a/src/main/java/com/zy/asrs/controller/ConsoleController.java +++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java @@ -1,19 +1,31 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.param.SystemSwitchParam; import com.zy.asrs.entity.BasMap; +import com.zy.asrs.entity.DeviceConfig; +import com.zy.asrs.entity.LocMast; import com.zy.asrs.service.BasMapService; +import com.zy.asrs.service.DeviceConfigService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.utils.Utils; import com.zy.common.model.MapNode; +import com.zy.common.model.NavigateNode; import com.zy.common.model.enums.NavigationMapType; import com.zy.common.utils.NavigateMapData; import com.zy.common.utils.RedisUtil; +import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.RedisKeyType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.command.ShuttleRedisCommand; +import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.properties.SystemProperties; +import com.zy.core.thread.ShuttleThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -36,6 +48,10 @@ private RedisUtil redisUtil; @Autowired private NavigateMapData navigateMapData; + @Autowired + private LocMastService locMastService; + @Autowired + private DeviceConfigService deviceConfigService; @PostMapping("/system/running/status") @ManagerAuth(memo = "绯荤粺杩愯鐘舵��") @@ -87,11 +103,41 @@ 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); + } + /** + * 鑾峰彇搴撲綅鍦板浘鏁版嵁 + */ + @GetMapping("/locMap/{lev}/auth") + @ManagerAuth + public R getLocMap(@PathVariable Integer lev) { + Object data = redisUtil.get(RedisKeyType.MAP.key + lev); + if (data == null) { + return R.error(); + } + + List<List<MapNode>> arrayList = (List<List<MapNode>>) data; List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE), arrayList, lev, null, null);//杩囨护鍦板浘鏁版嵁 + + //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁 + List<LocMast> locMasts = locMastService.selectLocByLev(lev); + for (LocMast locMast : locMasts) { + Integer row = locMast.getRow1(); + Integer bay = locMast.getBay1(); + + List<MapNode> list = lists.get(row); + MapNode mapNode = list.get(bay); + + mapNode.setLocSts(locMast.getLocSts()); + mapNode.setLocNo(locMast.getLocNo()); + + //鏇存柊list + list.set(bay, mapNode); + lists.set(row, list); + } return R.ok().add(lists); } @@ -101,8 +147,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(); } @@ -117,4 +165,105 @@ return R.ok(); } + /** + * 鑾峰彇棰勮璺緞 + */ + @GetMapping("/getMoveAdvancePath/{lev}/auth") + @ManagerAuth + public R getMoveAdvancePath(@PathVariable Integer lev) { + HashMap<String, Object> pathMap = new HashMap<>(); + + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig deviceConfig : shuttleList) { + // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo()); + if (shuttleThread == null) { + continue; + } + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) { + continue; + } + + if (shuttleProtocol.getCurrentLocNo() == null) { + continue; + } + + if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != lev) { + continue; + } + + if (shuttleProtocol.getTaskNo() == 0) { + + } + + //瀛樺湪浠诲姟锛岃幏鍙栨寚浠� + Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); + if (object != null) { + ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class); + List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰� + + for (NavigateNode node : nodes) { + String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ()); + + List<Integer> shuttleNoList = new ArrayList<>(); + Object tmp = pathMap.get(locNo); + if(tmp != null) { + shuttleNoList = (List<Integer>) tmp; + } + + if (!shuttleNoList.contains(shuttleProtocol.getShuttleNo())) { + shuttleNoList.add(shuttleProtocol.getShuttleNo()); + } + + pathMap.put(locNo, shuttleNoList); + } + } + } + + List<HashMap<String, Object>> pathList = new ArrayList<>(); + for (Map.Entry<String, Object> entry : pathMap.entrySet()) { + String locNo = entry.getKey(); + Object shuttleNoList = entry.getValue(); + + HashMap<String, Object> map = new HashMap<>(); + map.put("locNo", locNo); + map.put("x", Utils.getRow(locNo)); + map.put("y", Utils.getBay(locNo)); + map.put("z", Utils.getLev(locNo)); + map.put("shuttleNoList", shuttleNoList); + pathList.add(map); + } + return R.ok().add(pathList); + } + + /** + * 鑾峰彇閿佸畾璺緞 + */ + @GetMapping("/getLockPath/{lev}/auth") + @ManagerAuth + public R getLockPath(@PathVariable Integer lev) { + HashMap<String, Object> lockMap = new HashMap<>(); + Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev); + if (o != null) { + lockMap = (HashMap<String, Object>) o; + } + + List<HashMap<String, Object>> lockList = new ArrayList<>(); + for (Map.Entry<String, Object> entry : lockMap.entrySet()) { + String locNo = entry.getKey(); + Object shuttleNo = entry.getValue(); + + HashMap<String, Object> map = new HashMap<>(); + map.put("locNo", locNo); + map.put("x", Utils.getRow(locNo)); + map.put("y", Utils.getBay(locNo)); + map.put("z", Utils.getLev(locNo)); + map.put("shuttleNo", shuttleNo); + lockList.add(map); + } + return R.ok().add(lockList); + } + } -- Gitblit v1.9.1