| src/main/java/com/zy/asrs/entity/BasDevp.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/model/NavigateNode.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/utils/NavigateSolution.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/utils/NavigateUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/BasDevpMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/basDevp/basDevp.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/basDevp/basDevp.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/BasDevp.java
@@ -113,13 +113,6 @@ @TableField("run_block_reassign_loc_station_list") private String runBlockReassignLocStationList; /** * 顶升移栽站点数据 */ @ApiModelProperty(value= "顶升移栽站点数据") @TableField("lift_transfer_station_list") private String liftTransferStationList; public BasDevp() {} public BasDevp(Integer devpNo,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,String stationList,String barcodeStationList,String inStationList,String outStationList) { src/main/java/com/zy/common/model/NavigateNode.java
@@ -20,7 +20,9 @@ private int value; @ToString.Exclude private NavigateNode Father;//父节点 private List<String> directionList;//行走方向 private List<String> directionList;//允许行走方向 private Boolean isInflectionPoint;//是否为拐点 private String direction;//行走方向 private String nodeValue;//节点数据 private String nodeType;//节点类型 src/main/java/com/zy/common/utils/NavigateSolution.java
@@ -11,7 +11,6 @@ import com.zy.core.enums.MapNodeType; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiFunction; /** * A*算法实现类 src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -65,6 +65,20 @@ } } for (int i = 0; i < fitlerList.size(); i++) { NavigateNode currentNode = fitlerList.get(i); currentNode.setIsInflectionPoint(false); NavigateNode nextNode = (i + 1 < fitlerList.size()) ? fitlerList.get(i + 1) : null; NavigateNode prevNode = (i - 1 >= 0) ? fitlerList.get(i - 1) : null; HashMap<String, Object> result = searchInflectionPoint(currentNode, nextNode, prevNode); if (Boolean.parseBoolean(result.get("result").toString())) { currentNode.setIsInflectionPoint(true); currentNode.setDirection(result.get("direction").toString()); } } return fitlerList; } @@ -95,8 +109,22 @@ HashSet<NavigateNode> visited = new HashSet<>(); int maxSteps = rgvTrackMap.size() * rgvTrackMap.get(0).size() + 5; // 安全上限 int steps = 0; NavigateNode fatherNode = null;//当前循环上一节点,用于拐点计算 while (res_node != null && visited.add(res_node) && steps++ < maxSteps) { res_node.setIsInflectionPoint(false); //寻找拐点 HashMap<String, Object> result = searchInflectionPoint(res_node, fatherNode, res_node.getFather());//分别传入当前节点、父节点、下一节点 //判断当前节点是否为拐点 if (Boolean.parseBoolean(result.get("result").toString())) { //当前为拐点 res_node.setIsInflectionPoint(true); //拐点方向 res_node.setDirection(result.get("direction").toString()); } list.add(res_node); fatherNode = res_node;//把当前节点保存成一个父节点 res_node = res_node.getFather();//迭代操作 } if (steps >= maxSteps) { @@ -284,4 +312,56 @@ } return best; } //判断当前节点到下一个节点是否为拐点 public HashMap<String,Object> searchInflectionPoint(NavigateNode currentNode, NavigateNode fatherNode, NavigateNode nextNode) { HashMap<String, Object> map = new HashMap<>(); map.put("result", false);//是否为拐点,true:拐点,false:直线 // 第一个点或直线点 if (fatherNode == null || nextNode == null || nextNode.getX() == fatherNode.getX() || nextNode.getY() == fatherNode.getY()) { return map;//不是拐点直接返回 } //拐点方向 String direction = calcDirection(currentNode, fatherNode); map.put("result", true);//拐点 map.put("direction", direction);//拐点方向(从当前节点视角看的方向) return map; } /** * 计算方向 */ public String calcDirection(NavigateNode currentNode, NavigateNode fatherNode) { //拐点方向 String direction = ""; // 普通拐点 //计算拐点方向 if (fatherNode.getX() != currentNode.getX()) { //x轴数据有差异,判断x轴方向 //当前节点X - 父节点X if (currentNode.getX() - fatherNode.getX() > 0) { //大于0,方向top direction = "top"; }else { //小于0,方向bottom direction = "bottom"; } } if (fatherNode.getY() != currentNode.getY()) { //y轴数据有差异,判断y轴方向 //当前节点Y - 父节点Y if (currentNode.getY() - fatherNode.getY() > 0) { //大于0,方向left direction = "left"; }else { //小于0,方向right direction = "right"; } } return direction; } } src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java
@@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSONObject; import com.core.common.SpringUtils; import com.zy.asrs.entity.DeviceConfig; import com.zy.asrs.service.BasDevpService; import com.zy.common.model.NavigateNode; import com.zy.common.utils.NavigateUtils; import com.zy.common.utils.RedisUtil; import com.zy.core.News; import com.zy.core.enums.RedisKeyType; import com.zy.core.model.CommandResponse; import com.zy.core.model.StationObjModel; import com.zy.core.model.command.StationCommand; import com.zy.core.network.api.ZyStationConnectApi; import com.zy.core.network.entity.ZyStationStatusEntity; @@ -306,8 +308,9 @@ Integer nextStationId = null; Integer nextStationDeviceNo = null; NavigateNode nextNode = null; try { NavigateNode nextNode = navigateNodes.get(i + 1); nextNode = navigateNodes.get(i + 1); JSONObject nextValueObject = JSON.parseObject(nextNode.getNodeValue()); nextStationId = nextValueObject.getInteger("stationId"); nextStationDeviceNo = nextValueObject.getInteger("deviceNo"); @@ -352,6 +355,10 @@ continue; } lastStationId = currentStationId; if (nextNode.getIsInflectionPoint()) { sleep(4000); } } i++; src/main/resources/mapper/BasDevpMapper.xml
@@ -17,7 +17,6 @@ <result column="in_station_list" property="inStationList" /> <result column="out_station_list" property="outStationList" /> <result column="run_block_reassign_loc_station_list" property="runBlockReassignLocStationList" /> <result column="lift_transfer_station_list" property="liftTransferStationList" /> </resultMap> src/main/webapp/static/js/basDevp/basDevp.js
@@ -38,7 +38,6 @@ { field: "inStationList", align: "center", title: "入库站点数据" }, { field: "outStationList", align: "center", title: "出库站点数据" }, { field: "runBlockReassignLocStationList", align: "center", title: "运行堵塞重新分配库位站点数据" }, { field: "liftTransferStationList", align: "center", title: "顶升移栽站点数据" }, { fixed: "right", src/main/webapp/views/basDevp/basDevp.html
@@ -149,12 +149,6 @@ <input class="layui-input" name="runBlockReassignLocStationList" placeholder="请输入运行堵塞重新分配库位站点数据"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">顶升移栽站点数据: </label> <div class="layui-input-block"> <input class="layui-input" name="liftTransferStationList" placeholder="请输入顶升移栽站点数据"> </div> </div> </div> </div>