#
Junjie
2024-10-15 be88bef9c7071740ee803527c8e6ccd751680d74
#
3个文件已修改
32 ■■■■ 已修改文件
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapUtils.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/MapCommandService.java
@@ -4,6 +4,7 @@
import com.zy.asrs.wcs.core.entity.Motion;
import com.zy.asrs.wcs.core.model.MapNode;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.enums.MapNodeType;
import com.zy.asrs.wcs.core.model.enums.MotionCtgType;
import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
import com.zy.asrs.wcs.core.utils.*;
@@ -124,12 +125,16 @@
        for (NavigateNode node : nodes) {
            List<MapNode> listX = map.get(node.getX());
            MapNode mapNode = listX.get(node.getY());
            if (mapNode.getLockDeviceNo() != null && !mapNode.getLockDeviceNo().equals(shuttleProtocol.getShuttleNo())) {
                return false;//路径所属权不是当前设备
            }
            if (lock) {//检测是否锁定
                if (mapNode.getValue() != -999) {
                if (!mapNode.getValue().equals(MapNodeType.LOCK.id)) {
                    return false;//路径未锁定
                }
            }else {//检测是否未锁定
                if(mapNode.getValue() == -999) {
                if(mapNode.getValue().equals(MapNodeType.LOCK.id)) {
                    return false;//路径已锁定
                }
            }
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java
@@ -1,6 +1,5 @@
package com.zy.asrs.wcs.core.model;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import lombok.Data;
/**
@@ -38,6 +37,9 @@
    private Integer bay;
    //节点被锁定时所属设备号
    private Integer lockDeviceNo;
    //**************兼容牛眼新协议**************//
    private Integer xBase;//x基准
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateMapUtils.java
@@ -53,15 +53,28 @@
            List<List<MapNode>> listsHasShuttle = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, shuttlePoints);//获取带小车地图数据
            List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据
            //检测节点是否为当前设备
            for (NavigateNode node : nodes) {
                List<MapNode> listX = listsHasShuttle.get(node.getX());
                MapNode mapNode = listX.get(node.getY());
                if (mapNode.getLockDeviceNo() == null) {
                    continue;
                }
                if (!mapNode.getLockDeviceNo().equals(shuttleNo)) {
                    return false;//路径所属权不是当前设备
                }
            }
            //检测路径是否被锁定
            if (lock) {
                for (NavigateNode node : nodes) {
                    List<MapNode> listX = listsHasShuttle.get(node.getX());
                    MapNode mapNode = listX.get(node.getY());
                    if (mapNode.getValue() == MapNodeType.LOCK.id) {
                    if (mapNode.getValue().equals(MapNodeType.LOCK.id)) {
                        return false;//路径被锁定过,禁止再次锁定
                    }
                    if (mapNode.getValue() == MapNodeType.CAR.id) {
                    if (mapNode.getValue().equals(MapNodeType.CAR.id)) {
                        return false;//路径存在小车,禁止锁定
                    }
                }
@@ -79,11 +92,13 @@
                MapNode mapNode = listX.get(node.getY());
                if (lock) {
                    mapNode.setValue(MapNodeType.LOCK.id);//禁用库位
                    mapNode.setLockDeviceNo(shuttleNo);
                } else {
                    //获取原始节点数据
                    List<MapNode> rows = realMap.get(node.getX());
                    MapNode col = rows.get(node.getY());
                    mapNode.setValue(col.getValue());//恢复库位
                    mapNode.setLockDeviceNo(null);
                }
                listX.set(node.getY(), mapNode);