| | |
| | | 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; |
| | | } |
| | | } |