From 7ec958c241902d29dbffe9f81376b71a8458148e Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期一, 13 一月 2025 16:07:21 +0800 Subject: [PATCH] 优化订单同步逻辑及库位查找 --- src/main/java/com/zy/asrs/controller/AgvMapController.java | 156 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 101 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvMapController.java b/src/main/java/com/zy/asrs/controller/AgvMapController.java index b1f74bf..f945e1b 100644 --- a/src/main/java/com/zy/asrs/controller/AgvMapController.java +++ b/src/main/java/com/zy/asrs/controller/AgvMapController.java @@ -2,6 +2,7 @@ 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.R; import com.zy.asrs.entity.AgvLocDetl; @@ -49,36 +50,72 @@ @GetMapping("/map/getData/{floor}/{lev}/auth") @ManagerAuth public String getMapData(@PathVariable("floor") Integer floor, @PathVariable("lev") Integer lev) { - BasMap basMap = agvBasMapService.selectLatestMap(1,floor); + + //to do +// floor = 2; + + BasMap basMap = agvBasMapService.selectLatestMap(lev, floor); //瑙f瀽json鍦板浘鏁版嵁 List<ArrayList> arrayLists = JSON.parseArray(basMap.getData(), ArrayList.class); //鑾峰彇褰撳墠妤煎眰搴撲綅鏁版嵁 - List<AgvLocMast> locMasts = agvLocMastService.selectLocByLevAndFloor(lev,floor); + List<AgvLocMast> locMasts = agvLocMastService.selectLocByLevAndFloor(lev, floor); + + List<AgvLocMast> distinctRow = new ArrayList<>(); + List<Integer> rowIntegers = new ArrayList<>(); + int min = 0; + int i =1; + if (lev == 1 && floor == 1) { + distinctRow = agvLocMastService.selectDistinctLocByLevAndFloorMapbay1(lev, floor); + for (AgvLocMast locMast : distinctRow) { + if (min > locMast.getMapBay1()) { + min = locMast.getMapBay1(); + } + if (locMast.getRightSide() == 1) { + rowIntegers.add(i); + } + i++; + + } + } else { + distinctRow = agvLocMastService.selectDistinctLocByLevAndFloorMaprow1(lev, floor); + for (AgvLocMast locMast : distinctRow) { + if (min > locMast.getMapRow1()) { + min = locMast.getMapRow1(); + } + if (locMast.getRightSide() == 1) { + rowIntegers.add(i); + } + i++; + + } + } + for (AgvLocMast locMast : locMasts) { - Integer row = locMast.getRow1(); - Integer bay = 34 - locMast.getBay1(); - - + Integer row = locMast.getMapRow1(); + if (row < 0) { + row = row - min + 1; + } else { + row = row - min; + } + Integer bay = locMast.getMapBay1(); + Integer rightSide = locMast.getRightSide(); int x = bay; int y = row; - ////1妤� - //if(floor == 1){ - // x = generateMap1Row(row); - // y = generateMap1Bay(bay); - //} - ////3妤� - //if(floor == 3){ - // y = generateMap3Row(row); - // x = generateMap3Bay(bay); - //} + if (floor == 3) { + y = generateMap3Row(rowIntegers, row); + } else if (floor == 1 && lev == 1) { + x = generateMap1Bay(rowIntegers, bay); + } else { + y = generateMap4Row(rowIntegers, row); + } ArrayList rowData = arrayLists.get(x); Object o = rowData.get(y); JSONObject jsonObject = JSON.parseObject(o.toString()); - jsonObject.put("value","0"); + jsonObject.put("value", "0"); jsonObject.put("locNo", locMast.getLocNo());//璁剧疆搴撲綅鍙� jsonObject.put("locSts", locMast.getLocSts());//搴撲綅鐘舵�� @@ -90,60 +127,69 @@ return JSONObject.toJSONString(arrayLists); } - private Integer generateMap1Row(int row){ - int x = 21-row; - if(row > 1){ - x --; + private Integer generateMap1Bay(List<Integer> rightSide,int bay) { + int y = bay; + for (int i = 0; i < rightSide.size(); i++) { + if (bay > rightSide.get(i)) { + y++; + } } - if(row > 3){ - x --; + + return y; + + } + + private Integer generateMap4Row(List<Integer> rightSide, int row) { + int x = row; + for (int i = 0; i < rightSide.size(); i++) { + if (row > rightSide.get(i)) { + x++; + } } - if(row > 5){ - x --; - } - if(row > 7){ - x --; - } - if(row > 9){ - x --; - } - if(row > 10){ - x --; - } - if(row > 12){ - x --; - } + return x; } - private Integer generateMap1Bay(int bay){ - int y = bay; - if(y > 28){ - y ++; + private Integer generateMap2Row(List<Integer> rightSide,int row) { + int x = row; + for (int i = 0; i < rightSide.size(); i++) { + if (row > rightSide.get(i)) { + x++; + } } - if(y > 57){ - y ++; + + return x; + + } + + private Integer generateMap2Bay(int bay) { + int y = bay; + if (y > 28) { + y++; + } + if (y > 57) { + y++; } return y; } - private Integer generateMap3Row(int row){ + private Integer generateMap3Row(List<Integer> rightSide,int row) { int x = row; - Integer[] rowAdd = {2,4,6,7,8,10,12,13,15,17,19,21,23,24,26,28,30,32}; - for(int i=0; i<rowAdd.length; i++){ - if(row >= rowAdd[i]){ - x ++; + for (int i = 0; i < rightSide.size(); i++) { + if (row > rightSide.get(i)) { + x++; } } + if (row > 8) x += 9; return x; } - private Integer generateMap3Bay(int bay){ - int y = 76-bay; - if(bay >= 18) y --; - if(bay >= 26) y --; - if(bay >= 50) y --; + private Integer generateMap3Bay(int bay) { + int y = 76 - bay; + if (bay >= 18) y--; + if (bay >= 26) y--; + if (bay >= 50) y--; return y; } @@ -155,7 +201,7 @@ @RequestParam("specs") String specs, @RequestParam("matnr") String matnr, @RequestParam("maktx") String maktx - ) { + ) { List<AgvLocDetl> locDetls = agvLocDetlService.searchByLike(orderNo, matnr, maktx, specs, locNo); ArrayList<AgvLocDetl> lists = new ArrayList<>(); -- Gitblit v1.9.1