#
Junjie
昨天 ff3b5df7015b2f2c5e24d9973a7b443309d8e579
#
13个文件已修改
244 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BasMapController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocMastController.java 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasMap.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateMapData.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasMapMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basMap/basMap.js 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locMast/locMast.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/admin/basMap/basMap.html 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/admin/locMast/locMast.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BasMapController.java
@@ -42,6 +42,7 @@
        convert(param, wrapper);
        allLike(BasMap.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        wrapper.orderBy("lev");
        return R.ok(basMapService.selectPage(new Page<>(curr, limit), wrapper));
    }
src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -1,5 +1,6 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -11,11 +12,14 @@
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasMap;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasMapService;
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.web.BaseController;
import com.zy.core.enums.LocStsType;
@@ -35,6 +39,8 @@
    private NavigateMapData navigateMapData;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private BasMapService basMapService;
    @RequestMapping(value = "/locMast/{id}/auth")
    @ManagerAuth
@@ -139,39 +145,80 @@
    @PostMapping("/locMast/init")
    @ManagerAuth(memo = "初始化库位")
    @Transactional
    public R shuttleStateTable(){
        locMastService.delete(new EntityWrapper<>(new LocMast()));
    public R locMastInit(@RequestParam Integer lev) {
        BasMap basMap = basMapService.selectLatestMap(lev);
        locMastService.delete(new EntityWrapper<>(new LocMast())
                .eq("lev1", lev));
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//获取完整地图(包括入库出库)
        for (int row = 0; row < lists.size(); row++) {
            List<MapNode> nodeList = lists.get(row);
            for (int bay = 0; bay < nodeList.size(); bay++) {
                MapNode mapNode = nodeList.get(bay);
        for (int i = 1; i <= 4; i++) {//总共四层楼
            List<List<MapNode>> lists = navigateMapData.getJsonData(i, -1, null, null);//获取完整地图(包括入库出库)
            for (int row = 0; row < lists.size(); row++) {
                List<MapNode> nodeList = lists.get(row);
                for (int bay = 0; bay < nodeList.size(); bay++) {
                    MapNode mapNode = nodeList.get(bay);
                    if (mapNode.getValue() == MapNodeType.DISABLE.id) {
                        continue;
                    }
                    String locNo = Utils.getLocNo(row, bay, i);
                    LocMast locMast = new LocMast();
                    locMast.setLocNo(locNo);
                    locMast.setRow1(row);
                    locMast.setBay1(bay);
                    locMast.setLev1(i);
                    if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
                        locMast.setLocSts(LocStsType.O.toString());
                    }else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id){
                        locMast.setLocSts(LocStsType.W.toString());
                    }
                    locMastService.insert(locMast);
                if (mapNode.getValue() == MapNodeType.DISABLE.id) {
                    continue;
                }
                String locNo = Utils.getLocNo(row, bay, lev);
                LocMast locMast = new LocMast();
                locMast.setLocNo(locNo);
                locMast.setRow1(row);
                locMast.setBay1(bay);
                locMast.setLev1(lev);
                if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) {
                    locMast.setLocSts(LocStsType.O.toString());
                } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) {
                    locMast.setLocSts(LocStsType.W.toString());
                }
                locMastService.insert(locMast);
            }
        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false));
        Integer rowMax = locMast.getRow1();
        Integer baseRow = basMap.getBaseRow();
        Integer baseRowCode = basMap.getBaseRowCode();
        for (int i = baseRow; i <= rowMax; i++) {
            Integer baseBayCode = basMap.getBaseBayCode();
            if (basMap.getBaseBay() > 0) {
                for (int j = 1; j <= basMap.getBaseBay(); j++) {
                    String locNo = Utils.getLocNo(i, j, lev);
                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                            .eq("loc_no", locNo));
                    if (locMast1 != null) {
                        HashMap<String, Object> point = new HashMap<>();
                        point.put("y", baseRowCode);
                        point.put("x", baseBayCode);
                        point.put("z", lev);
                        locMast1.setQrCodeValue(JSON.toJSONString(point));
                        locMastService.updateById(locMast1);
                    }
                    baseBayCode += 1;
                }
            }else {
                int baseBay = basMap.getBaseBay() * -1;
                for (int j = baseBay; j > 0; j--) {
                    String locNo = Utils.getLocNo(i, j, lev);
                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                            .eq("loc_no", locNo));
                    if (locMast1 != null) {
                        HashMap<String, Object> point = new HashMap<>();
                        point.put("y", baseRowCode);
                        point.put("x", baseBayCode);
                        point.put("z", lev);
                        locMast1.setQrCodeValue(JSON.toJSONString(point));
                        locMastService.updateById(locMast1);
                    }
                    baseBayCode += 1;
                }
            }
            baseRowCode += 1;
        }
        return R.ok();
    }
src/main/java/com/zy/asrs/entity/BasMap.java
@@ -67,6 +67,34 @@
    @TableField("origin_data")
    private String originData;
    /**
     * 基准排
     */
    @ApiModelProperty(value= "基准排")
    @TableField("base_row")
    private Integer baseRow;
    /**
     * 基准排-code值
     */
    @ApiModelProperty(value= "基准排-code值")
    @TableField("base_row_code")
    private Integer baseRowCode;
    /**
     * 基准列
     */
    @ApiModelProperty(value= "基准列")
    @TableField("base_bay")
    private Integer baseBay;
    /**
     * 基准列-code值
     */
    @ApiModelProperty(value= "基准列-code值")
    @TableField("base_bay_code")
    private Integer baseBayCode;
    public BasMap() {}
    public BasMap(String data,Date createTime,Date updateTime,String lastData,Integer lev) {
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,7 +87,7 @@
                Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
                if (data == null) {//redis地图数据为空
                    //载入地图
                    List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//获取完整地图(包括入库出库)
                    List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//获取完整地图(包括入库出库)
                    //存入数据库
                    basMap.setData(JSON.toJSONString(lists));
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -100,7 +100,7 @@
    }
    //获取JSON格式数据
    public List<List<MapNode>> getJsonData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
    public List<List<MapNode>> getJsonData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        try {
            BasMap basMap = basMapService.selectLatestMap(lev);
            String originData = basMap.getOriginData();
@@ -274,7 +274,7 @@
    public List<List<MapNode>> loadWhite(List<List<MapNode>> lists, Integer lev, List<int[]> whitePoints) {
        //加载白名单节点
        if (whitePoints != null) {
            List<List<MapNode>> realMap = getJsonData(lev, -1, null, null);//获取完整地图
            List<List<MapNode>> realMap = getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//获取完整地图
            for (int[] points : whitePoints) {
                //获取原始节点数据
                int x = points[0];
src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -324,7 +324,7 @@
    //获取从x点到下一点的行走距离
    public Integer getXToNextDistance(NavigateNode xNode) {
        NavigateMapData mapData = SpringUtils.getBean(NavigateMapData.class);
        List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.NONE.id, null, null);
        List<List<MapNode>> lists = mapData.getJsonData(xNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);
        if (lists != null) {
            MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY());
            if (mapNode != null) {
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -331,7 +331,7 @@
        NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]);
        currentNode.setZ(lev);
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//获取完整地图
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//获取完整地图
        int[][] map = navigateMapData.parseJsonDataArr(lists);
        int nodeValue = map[pointArr[0]][pointArr[1]];
        currentNode.setNodeValue(nodeValue);
@@ -372,7 +372,7 @@
        currentNode.setZ(lev);
        innerNodes.add(currentNode);
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//获取完整地图
        List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//获取完整地图
        int[][] map = navigateMapData.parseJsonDataArr(lists);
        int nodeValue = map[pointArr[0]][pointArr[1]];
        currentNode.setNodeValue(nodeValue);
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -867,7 +867,7 @@
            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.NONE.id, null, null);
            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());
@@ -983,7 +983,7 @@
            throw new CoolException("地址码不存在");
        }
        List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.NONE.id, null, null);
        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());
src/main/resources/mapper/BasMapMapper.xml
@@ -11,6 +11,10 @@
        <result column="last_data" property="lastData" />
        <result column="lev" property="lev" />
        <result column="origin_data" property="originData" />
        <result column="base_row" property="baseRow" />
        <result column="base_row_code" property="baseRowCode" />
        <result column="base_bay" property="baseBay" />
        <result column="base_bay_code" property="baseBayCode" />
    </resultMap>
src/main/webapp/static/js/basMap/basMap.js
@@ -22,15 +22,19 @@
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: '#'}
            // ,{field: 'id', align: 'center',title: '#'}
            ,{field: 'lev', align: 'center',title: '层数'}
            ,{field: 'data', align: 'center',title: '实时数据'}
            ,{field: 'createTime$', align: 'center',title: '创建时间'}
            ,{field: 'updateTime$', align: 'center',title: '更新时间'}
            ,{field: 'lastData', align: 'center',title: '最近数据'}
            ,{field: 'lev', align: 'center',title: '层数'}
            ,{field: 'originData', align: 'center',title: '原始地图'}
            ,{field: 'baseRow', align: 'center',title: '基准排'}
            ,{field: 'baseRowCode', align: 'center',title: '基准排-code'}
            ,{field: 'baseBay', align: 'center',title: '基准列'}
            ,{field: 'baseBayCode', align: 'center',title: '基准列-code'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:240}
        ]],
        request: {
            pageName: 'curr',
@@ -137,9 +141,41 @@
            case "del":
                del([data.id]);
                break;
            case "initLocMast":
                initLocMast(data);
                break;
        }
    });
    function initLocMast(data) {
        layer.confirm('确定初始化库位数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/locMast/init",
                headers: {'token': localStorage.getItem('token')},
                data: {
                    lev: data.lev
                },
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
src/main/webapp/static/js/locMast/locMast.js
@@ -178,28 +178,6 @@
                    });
                });
                break;
            case "init":
                layer.prompt({title: '请输入口令,并重置库位', formType: 1,   shadeClose: true}, function(pass, idx){
                    http.get(baseUrl+"/locMast/init/pwd", {pwd: pass}, function (res) {
                        if (res.data) {
                            layer.open({
                                type: 1,
                                title: '初始化库位',
                                area: ["400px"],
                                maxmin: true,
                                shadeClose: true,
                                content: $("#resetLocDiv"),
                                success: function (layero, index) {
                                }
                            })
                        } else {
                            layer.msg("口令错误");
                        }
                        layer.close(idx);
                    })
                });
                break;
        }
    });
src/main/webapp/views/admin/basMap/basMap.html
@@ -56,6 +56,7 @@
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="initLocMast">初始化库位</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
@@ -84,6 +85,30 @@
                        <input class="layui-input" name="originData" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">基准排: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="baseRow" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">基准排-code: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="baseRowCode" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">基准列: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="baseBay" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">基准列-code: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="baseBayCode" placeholder="请输入">
                    </div>
                </div>
             </div>
        </div>
src/main/webapp/views/admin/locMast/locMast.html
@@ -64,7 +64,6 @@
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">初始化</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button>
    </div>
</script>