#
Junjie
9 天以前 4afa88987f466893800a83ba4767a8f59811473a
#
8个文件已修改
109 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/BasDevp.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/NavigateNode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateSolution.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateUtils.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/network/fake/ZyStationFakeConnect.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasDevpMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/basDevp/basDevp.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/basDevp/basDevp.html 6 ●●●●● 补丁 | 查看 | 原始文档 | 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>