|  |  |  | 
|---|
|  |  |  | message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '操作成功' })); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | console.log(values); | 
|---|
|  |  |  | props.onSubmit({ ...values }, confirmSettings); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Form.Item> | 
|---|
|  |  |  | <Form.Item | 
|---|
|  |  |  | name='conveyorHasGo' | 
|---|
|  |  |  | label={intl.formatMessage({ id: 'map.settings.conveyor.hasGo', defaultMessage: '小车可走' })} | 
|---|
|  |  |  | valuePropName="checked" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Checkbox | 
|---|
|  |  |  | style={{ | 
|---|
|  |  |  | width: '50%', | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </Form.Item> | 
|---|
|  |  |  | </> | 
|---|
|  |  |  | )} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | * -1 禁用 | 
|---|
|  |  |  | * 0 子轨道 | 
|---|
|  |  |  | * 3 母轨道 | 
|---|
|  |  |  | * 4 充电桩 | 
|---|
|  |  |  | * 4 输送站点 | 
|---|
|  |  |  | * 5 充电桩 | 
|---|
|  |  |  | * 6 小车可走输送站点 | 
|---|
|  |  |  | * 66 穿梭车坐标 | 
|---|
|  |  |  | * 67 提升机坐标 | 
|---|
|  |  |  | * -999 锁定节点 | 
|---|
| New file | 
|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wcs.core.model.enums; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public enum MapNodeType { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DISABLE(-1, "禁用"), | 
|---|
|  |  |  | NORMAL_PATH(0, "货位"), | 
|---|
|  |  |  | START_POINT(1, "起点"), | 
|---|
|  |  |  | TARGET_POINT(2, "终点"), | 
|---|
|  |  |  | MAIN_PATH(3, "母轨"), | 
|---|
|  |  |  | CONVEYOR(4, "输送站点"), | 
|---|
|  |  |  | CHARGE(5, "充电桩"), | 
|---|
|  |  |  | CONVEYOR_CAR_GO(6, "小车可走输送站点"), | 
|---|
|  |  |  | CAR(66, "小车"), | 
|---|
|  |  |  | LIFT(67, "提升机"), | 
|---|
|  |  |  | LOCK(-999, "锁定节点"), | 
|---|
|  |  |  | ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Integer id; | 
|---|
|  |  |  | public String desc; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MapNodeType(Integer id, String desc) { | 
|---|
|  |  |  | this.id = id; | 
|---|
|  |  |  | this.desc = desc; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static MapNodeType get(Short id) { | 
|---|
|  |  |  | if (null == id) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (MapNodeType type : MapNodeType.values()) { | 
|---|
|  |  |  | if (type.id.equals(id.intValue())) { | 
|---|
|  |  |  | return type; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static MapNodeType get(MapNodeType type) { | 
|---|
|  |  |  | if (null == type) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (MapNodeType type1 : MapNodeType.values()) { | 
|---|
|  |  |  | if (type1 == type) { | 
|---|
|  |  |  | return type1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | mapNode.setNo(object.getString("row") + "-" + object.getString("bay")); | 
|---|
|  |  |  | mapNode.setXBase(object.getInteger("refx")); | 
|---|
|  |  |  | mapNode.setYBase(object.getInteger("refy")); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(mapNode.getValue() == MapNodeType.CONVEYOR.id) { | 
|---|
|  |  |  | //输送线,判断小车是否可走 | 
|---|
|  |  |  | if (object.containsKey("conveyorHasGo")) { | 
|---|
|  |  |  | if(object.getBoolean("conveyorHasGo")) { | 
|---|
|  |  |  | //小车可走 | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.CONVEYOR_CAR_GO.id); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | nodes.add(mapNode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //存在空缺节点,自动补足 | 
|---|
|  |  |  | for (int i = defaultBay; i < node.getBay(); i++) { | 
|---|
|  |  |  | MapNode mapNode = new MapNode(); | 
|---|
|  |  |  | mapNode.setValue(-1); | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id); | 
|---|
|  |  |  | mapNode.setTop(1000); | 
|---|
|  |  |  | mapNode.setBottom(1000); | 
|---|
|  |  |  | mapNode.setLeft(1000); | 
|---|
|  |  |  | 
|---|
|  |  |  | ArrayList<ArrayList<MapNode>> lists = entry.getValue();//获取地图 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MapNode mapNode = new MapNode(); | 
|---|
|  |  |  | mapNode.setValue(-1); | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id); | 
|---|
|  |  |  | mapNode.setTop(1000); | 
|---|
|  |  |  | mapNode.setBottom(1000); | 
|---|
|  |  |  | mapNode.setLeft(1000); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.domain.dto.RedisMapDto; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.entity.Loc; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.MapNode; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.enums.MapNodeType; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.enums.NavigationMapType; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.service.LocService; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant; | 
|---|
|  |  |  | 
|---|
|  |  |  | //存在空缺节点,自动补足 | 
|---|
|  |  |  | for (int i = defaultBay; i < node.getBay(); i++) { | 
|---|
|  |  |  | MapNode mapNode = new MapNode(); | 
|---|
|  |  |  | mapNode.setValue(-1); | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id); | 
|---|
|  |  |  | mapNode.setTop(1000); | 
|---|
|  |  |  | mapNode.setBottom(1000); | 
|---|
|  |  |  | mapNode.setLeft(1000); | 
|---|
|  |  |  | 
|---|
|  |  |  | ArrayList<ArrayList<MapNode>> lists = entry.getValue();//获取地图 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MapNode mapNode = new MapNode(); | 
|---|
|  |  |  | mapNode.setValue(-1); | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id); | 
|---|
|  |  |  | mapNode.setTop(1000); | 
|---|
|  |  |  | mapNode.setBottom(1000); | 
|---|
|  |  |  | mapNode.setLeft(1000); | 
|---|
|  |  |  | 
|---|
|  |  |  | || loc.getLocSts$().equals("D") | 
|---|
|  |  |  | || loc.getLocSts$().equals("X") | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | mapNode.setValue(-1);//禁用节点 | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id);//禁用节点 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (mapType == NavigationMapType.NORMAL.id) { | 
|---|
|  |  |  | //过滤库位状态X | 
|---|
|  |  |  | if (loc.getLocSts$().equals("X")) { | 
|---|
|  |  |  | mapNode.setValue(-1);//禁用节点 | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.DISABLE.id);//禁用节点 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | int y = points[1]; | 
|---|
|  |  |  | List<MapNode> list = lists.get(x); | 
|---|
|  |  |  | MapNode mapNode = list.get(y); | 
|---|
|  |  |  | mapNode.setValue(66);//设置为车辆代码66 | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.CAR.id);//设置为车辆代码66 | 
|---|
|  |  |  | //更新list | 
|---|
|  |  |  | list.set(y, mapNode); | 
|---|
|  |  |  | lists.set(x, list); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.domain.dto.RedisMapDto; | 
|---|
|  |  |  | 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.NavigationMapType; | 
|---|
|  |  |  | import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  | for (NavigateNode node : nodes) { | 
|---|
|  |  |  | List<MapNode> listX = listsHasShuttle.get(node.getX()); | 
|---|
|  |  |  | MapNode mapNode = listX.get(node.getY()); | 
|---|
|  |  |  | if (mapNode.getValue() == -999) { | 
|---|
|  |  |  | if (mapNode.getValue() == MapNodeType.LOCK.id) { | 
|---|
|  |  |  | return false;//路径被锁定过,禁止再次锁定 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (mapNode.getValue() == 66) { | 
|---|
|  |  |  | if (mapNode.getValue() == MapNodeType.CAR.id) { | 
|---|
|  |  |  | return false;//路径存在小车,禁止锁定 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | List<MapNode> listX = lists.get(node.getX()); | 
|---|
|  |  |  | MapNode mapNode = listX.get(node.getY()); | 
|---|
|  |  |  | if (lock) { | 
|---|
|  |  |  | mapNode.setValue(-999);//禁用库位 | 
|---|
|  |  |  | mapNode.setValue(MapNodeType.LOCK.id);//禁用库位 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //获取原始节点数据 | 
|---|
|  |  |  | List<MapNode> rows = realMap.get(node.getX()); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.framework.common.SpringUtils; | 
|---|
|  |  |  | import com.zy.asrs.framework.exception.CoolException; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.NavigateNode; | 
|---|
|  |  |  | import com.zy.asrs.wcs.core.model.enums.MapNodeType; | 
|---|
|  |  |  | import com.zy.asrs.wcs.system.entity.Dict; | 
|---|
|  |  |  | import com.zy.asrs.wcs.system.service.DictService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public class NavigateSolution { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // -1 -> 墙壁, 0 -> 货位, 1 -> 起点  2 -> 终点  3-> 母轨  4->输送站点  5->充电桩  66->小车  67->提升机 | 
|---|
|  |  |  | // -1 -> 墙壁, 0 -> 货位, 1 -> 起点  2 -> 终点  3-> 母轨  4->输送站点  5->充电桩 6->小车可走输送站点  66->小车  67->提升机 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int[][] map = {{}}; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (mapDirection.equals("x")) {//母轨x方向 | 
|---|
|  |  |  | if (map[x][y] == 3) { | 
|---|
|  |  |  | if (map[x][y] == MapNodeType.MAIN_PATH.id) { | 
|---|
|  |  |  | //母轨才能进行上下移动 | 
|---|
|  |  |  | if (is_valid(x + 1, y)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (map[x][y] == 0 || map[x][y] == 3 || map[x][y] == 4 || map[x][y] == 5 || map[x][y] == 67) { | 
|---|
|  |  |  | //子轨和母轨、输送线、充电桩、提升机才能进行左右移动 | 
|---|
|  |  |  | if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { | 
|---|
|  |  |  | //子轨和母轨、小车可走输送线、充电桩、提升机才能进行左右移动 | 
|---|
|  |  |  | if (is_valid(x, y + 1)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | NavigateNode node = new NavigateNode(x, y + 1); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if (mapDirection.equals("y")) {//母轨y方向 | 
|---|
|  |  |  | if (map[x][y] == 3) { | 
|---|
|  |  |  | if (map[x][y] == MapNodeType.MAIN_PATH.id) { | 
|---|
|  |  |  | //母轨才能进行左右移动 | 
|---|
|  |  |  | if (is_valid(x, y + 1)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (map[x][y] == 0 || map[x][y] == 3 || map[x][y] == 4 || map[x][y] == 5 || map[x][y] == 67) { | 
|---|
|  |  |  | //子轨和母轨、输送线、充电桩、提升机才能进行上下移动 | 
|---|
|  |  |  | if (map[x][y] == MapNodeType.NORMAL_PATH.id || map[x][y] == MapNodeType.MAIN_PATH.id || map[x][y] == MapNodeType.CONVEYOR_CAR_GO.id || map[x][y] == MapNodeType.CHARGE.id || map[x][y] == MapNodeType.LIFT.id) { | 
|---|
|  |  |  | //子轨和母轨、小车可走输送线、充电桩、提升机才能进行上下移动 | 
|---|
|  |  |  | if (is_valid(x + 1, y)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | NavigateNode node = new NavigateNode(x + 1, y); | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.zy.asrs.framework.common.SpringUtils; | 
|---|
|  |  |  | 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.NavigationMapType; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | 
|---|
|  |  |  | int[][] map = solution.map; | 
|---|
|  |  |  | for (NavigateNode node : path) { | 
|---|
|  |  |  | int value = map[node.getX()][node.getY()]; | 
|---|
|  |  |  | if (value != 0 && value != 3 && value != 5) {//母轨道3、子轨道0、充电桩5 | 
|---|
|  |  |  | if (value != MapNodeType.NORMAL_PATH.id && value != MapNodeType.MAIN_PATH.id && value != MapNodeType.CHARGE.id && value != MapNodeType.CONVEYOR_CAR_GO.id) {//母轨道3、子轨道0、充电桩5、小车可走输送站 | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|