自动化立体仓库 - WMS系统
zhangc
2025-01-07 ce43df438a4bbef5b9ffaed0a33a97db6e88fbf1
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);
        //解析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<>();