#
Junjie
昨天 98e6dd8f3597a36512699151a7f74b6cf733268f
#
17个文件已修改
286 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/ForkLiftUtils.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/LiftUtils.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateUtils.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/dispatcher/ForkLiftDispatchUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/dispatcher/LiftDispatchUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/LiftStation.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LiftThread.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/NyLiftThread.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/lift.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -22,8 +22,10 @@
import com.zy.core.enums.SlaveType;
import com.zy.core.enums.WrkIoType;
import com.zy.core.model.protocol.ForkLiftProtocol;
import com.zy.core.model.protocol.LiftProtocol;
import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.thread.ForkLiftThread;
import com.zy.core.thread.LiftThread;
import com.zy.core.thread.ShuttleThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -231,7 +233,7 @@
        return R.error("任务取消失败");
    }
    @PostMapping("/deviceStatus")
    @RequestMapping("/deviceStatus")
    @OpenApiLog(memo = "获取设备状态")
    public R getDeviceStatus() {
        HashMap<String, Object> map = new HashMap<>();
@@ -269,8 +271,26 @@
            forkLiftProtocols.add(forkLiftProtocol);
        }
        //获取提升机数据
        ArrayList<LiftProtocol> liftProtocols = new ArrayList<>();
        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.Lift)));
        for (DeviceConfig device : liftList) {
            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
            if (liftThread == null) {
                continue;
            }
            LiftProtocol liftProtocol = liftThread.getStatus();
            if (liftProtocol == null) {
                continue;
            }
            liftProtocols.add(liftProtocol);
        }
        map.put("shuttle", shuttleProtocols);
        map.put("forkLift", forkLiftProtocols);
        map.put("lift", liftProtocols);
        apiLogService.insert(new ApiLog(
                null
@@ -292,6 +312,43 @@
        return R.ok().add(map);
    }
    @RequestMapping("/liftDeviceOriginData")
    @OpenApiLog(memo = "获取提升机原始数据")
    public R getLiftDeviceOriginData() {
        HashMap<Integer, String> map = new HashMap<>();
        //获取提升机数据
        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.Lift)));
        for (DeviceConfig device : liftList) {
            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo());
            if (liftThread == null) {
                continue;
            }
            map.put(device.getDeviceNo(), liftThread.getRealtimeOriginData());
        }
        apiLogService.insert(new ApiLog(
                null
                , "获取提升机原始数据"
                , "/liftDeviceOriginData"
                , null
                , null
                , null
                , null
                , JSON.toJSONString(map)
                , null
                , null
                , 1
                , new Date()
                , null
                , null
        ));
        return R.ok().add(map);
    }
    @PostMapping("/getLocInformation")
    @OpenApiLog(memo = "获取指定库位信息")
    public R getLocInformation(@RequestBody GetLocInformationParam param) {
src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
@@ -304,12 +304,12 @@
            }
            if (liftSta.getHasCar()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
            if (liftSta.getHasTray()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点有托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点有托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
@@ -429,7 +429,7 @@
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//小车搬运中  101.生成出库任务 ==> 102.小车搬运中
            wrkMast.setSourceStaNo(liftSta.getStaNo());
            wrkMast.setSourceStaNo(liftSta.getSiteId());
            wrkMast.setModiTime(new Date());
            wrkMast.setSystemMsg("");//清空消息
            if (wrkMastService.updateById(wrkMast)) {
@@ -771,12 +771,12 @@
            }
            if (liftSta.getHasCar()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
            if (!liftSta.getHasTray()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点无托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点无托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
@@ -1571,8 +1571,8 @@
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//小车移动到提升机中  301.生成小车移库任务 ==> 302.小车移动至近点中
            wrkMast.setSourceStaNo(recentLiftStation.getStaNo());
            wrkMast.setStaNo(liftStaTarget.getStaNo());
            wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
            wrkMast.setStaNo(liftStaTarget.getSiteId());
            wrkMast.setModiTime(now);
            wrkMast.setSystemMsg("");//清空消息
            if (wrkMastService.updateById(wrkMast)) {
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -302,12 +302,12 @@
            }
            if (liftSta.getHasCar()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
            if (liftSta.getHasTray()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点有托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点有托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
@@ -427,7 +427,7 @@
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//小车搬运中  101.生成出库任务 ==> 102.小车搬运中
            wrkMast.setSourceStaNo(liftSta.getStaNo());
            wrkMast.setSourceStaNo(liftSta.getSiteId());
            wrkMast.setModiTime(new Date());
            wrkMast.setSystemMsg("");//清空消息
            if (wrkMastService.updateById(wrkMast)) {
@@ -775,12 +775,12 @@
            }
            if (liftSta.getHasCar()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点存在小车,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
            if (!liftSta.getHasTray()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点无托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}站点无托盘,禁止派发", wrkMast.getWrkNo(), liftSta.getSiteId());
                return false;
            }
@@ -1546,8 +1546,8 @@
            //小车已在近点位置无需前往
            if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) {
                wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//小车移动到提升机中  301.生成小车移库任务 ==> 303.小车移动至近点完成
                wrkMast.setSourceStaNo(recentLiftStation.getStaNo());
                wrkMast.setStaNo(targetLiftSta.getStaNo());
                wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
                wrkMast.setStaNo(targetLiftSta.getSiteId());
                wrkMast.setModiTime(now);
                wrkMast.setSystemMsg("");//清空消息
                wrkMastService.updateById(wrkMast);
@@ -1572,8 +1572,8 @@
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//小车移动到提升机中  301.生成小车移库任务 ==> 302.小车移动至近点中
            wrkMast.setSourceStaNo(recentLiftStation.getStaNo());
            wrkMast.setStaNo(targetLiftSta.getStaNo());
            wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
            wrkMast.setStaNo(targetLiftSta.getSiteId());
            wrkMast.setModiTime(now);
            wrkMast.setSystemMsg("");//清空消息
            if (wrkMastService.updateById(wrkMast)) {
src/main/java/com/zy/common/utils/ForkLiftUtils.java
@@ -33,7 +33,7 @@
        }
        for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) {
            list.add(forkLiftStaProtocol.getStaNo());
            list.add(forkLiftStaProtocol.getSiteId());
        }
        return list;
@@ -67,7 +67,7 @@
    }
    //获取提升机站点
    public static ForkLiftStaProtocol getLiftStaByStaNo(Integer staNo) {
    public static ForkLiftStaProtocol getLiftStaByStaNo(Integer siteId) {
        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
        List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.ForkLift)));
@@ -78,7 +78,7 @@
            }
            for (ForkLiftStaProtocol forkLiftStaProtocol : forkLiftThread.getForkLiftStaProtocols()) {
                if (forkLiftStaProtocol.getStaNo().equals(staNo)) {
                if (forkLiftStaProtocol.getSiteId().equals(siteId)) {
                    return forkLiftStaProtocol;
                }
            }
src/main/java/com/zy/common/utils/LiftUtils.java
@@ -35,7 +35,7 @@
        }
        for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
            list.add(liftStaProtocol.getStaNo());
            list.add(liftStaProtocol.getSiteId());
        }
        return list;
@@ -69,7 +69,7 @@
    }
    //获取提升机站点
    public static LiftStaProtocol getLiftStaByStaNo(Integer staNo) {
    public static LiftStaProtocol getLiftStaByStaNo(Integer siteId) {
        DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class);
        List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
                .eq("device_type", String.valueOf(SlaveType.Lift)));
@@ -80,7 +80,7 @@
            }
            for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
                if (liftStaProtocol.getStaNo().equals(staNo)) {
                if (liftStaProtocol.getSiteId().equals(siteId)) {
                    return liftStaProtocol;
                }
            }
@@ -95,7 +95,6 @@
        if (liftThread == null) {
            return null;
        }
        for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
            if (liftStaProtocol.getLev().equals(lev)) {
                return liftStaProtocol;
src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -261,7 +261,6 @@
            for (NavigateNode node : nodes) {
                if (node.getNodeValue() == MapNodeType.MAIN_PATH.id) {
                    continue;
                }
                targetNode = node;
                break;
@@ -272,6 +271,11 @@
            }
        }
        if (targetNode == null) {
            List<NavigateNode> list = partList.get(partList.size() - 1);
            targetNode = list.get(0);
        }
        String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
        return locNo;
    }
src/main/java/com/zy/core/dispatcher/ForkLiftDispatchUtils.java
@@ -105,7 +105,7 @@
        ForkLiftStaProtocol recentSta = null;//最近站点
        //搜索距离小车最近的站点
        for (ForkLiftStaProtocol forkLiftStaProtocol : list) {
            Integer staNo = forkLiftStaProtocol.getStaNo();//站点号
            Integer siteId = forkLiftStaProtocol.getSiteId();//站点号
            String locNo = forkLiftStaProtocol.getLocNo();//站点库位号
            //当前穿梭车线程到目标地点距离
src/main/java/com/zy/core/dispatcher/LiftDispatchUtils.java
@@ -88,7 +88,7 @@
        LiftStaProtocol recentSta = null;//最近站点
        //搜索距离小车最近的站点
        for (LiftStaProtocol liftStaProtocol : list) {
            Integer staNo = liftStaProtocol.getStaNo();//站点号
            Integer siteId = liftStaProtocol.getSiteId();//站点号
            String locNo = liftStaProtocol.getLocNo();//站点库位号
            //当前穿梭车线程到目标地点距离
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -223,6 +223,11 @@
            return false;
        }
        if (shuttleProtocol.getCurrentLocNo().equals(locNo)) {
            News.info("{}号小车,移动目标位置与小车当前位置一致无法移动", shuttleNo);
            return false;
        }
        //判断穿梭车是否存在未完成的小车移库任务
        WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(shuttleNo);
        if (hasMoveWorking != null) {//小车存在移库任务,等待执行完成后再生成新的任务
src/main/java/com/zy/core/model/LiftStation.java
@@ -9,7 +9,7 @@
    private Integer liftNo;
    // 提升机站点号
    private Integer staNo;
    private Integer siteId;
    // 排
    private Integer row;
src/main/java/com/zy/core/model/protocol/ForkLiftStaProtocol.java
@@ -13,7 +13,7 @@
    /**
     * 站点号
     */
    private Integer staNo;
    private Integer siteId;
    /**
     * 有托盘
@@ -30,6 +30,10 @@
     */
    private Short taskNo;
    /**
     * 目标站
     */
    private Integer staNo;
    /**
     * 层
src/main/java/com/zy/core/model/protocol/LiftStaProtocol.java
@@ -13,10 +13,10 @@
    /**
     * 站点号
     */
    private Integer staNo;
    private Integer siteId;
    /**
     * 模式
     * 模式 1:自动 0:手动
     */
    private Boolean model;
@@ -43,7 +43,17 @@
    /**
     * 任务号
     */
    private Short taskNo;
    private Integer taskNo;
    /**
     * 条码
     */
    private String barcode;
    /**
     * 目标位置
     */
    private Integer staNo;
    /**
     * 层
@@ -60,4 +70,18 @@
     */
    private Integer liftNo;
    public boolean getHasCar() {
        if (this.hasCar == null) {
            return false;
        }
        return this.hasCar;
    }
    public boolean getHasTray() {
        if (this.hasTray == null) {
            return false;
        }
        return this.hasTray;
    }
}
src/main/java/com/zy/core/thread/LiftThread.java
@@ -42,6 +42,8 @@
    String getCurrentLocNo();
    String getRealtimeOriginData();//获取实时原始数据
    //***************获取命令*****************
    LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put);//取放货指令
src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -45,10 +45,11 @@
    private DeviceConfig device;
    private LiftProtocol liftProtocol;
    private RedisUtil redisUtil;
    LiftPointModel liftPointModel;
    private LiftPointModel liftPointModel;
    private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
    private List<DeviceMsgModel> readResultList = new ArrayList<>();
    private List<DeviceMsgModel> resultList = new ArrayList<>();
    private String realtimeOriginData = "";
    public NyLiftThread(DeviceConfig device, LiftPointModel liftPointModel, List<LiftStation> stationList, RedisUtil redisUtil) {
        this.device = device;
@@ -57,7 +58,7 @@
        //初始化站点
        for (LiftStation station : stationList) {
            LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
            liftStaProtocol.setStaNo(station.getStaNo());//站点号
            liftStaProtocol.setSiteId(station.getSiteId());//站点号
            liftStaProtocol.setLev(station.getLev());//站点楼层
            String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
            liftStaProtocol.setLocNo(locNo);//站点库位号
@@ -200,19 +201,33 @@
            liftExtend.setOverHeight(data.getBoolean("overHeight"));
            liftExtend.setOverWeight(data.getBoolean("overWeight"));
            JSONArray trayList = data.getJSONArray("trayList");
            for (int i = 0; i < trayList.size(); i++) {
                int hasTray = (int) trayList.get(i);
                LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
                liftStaProtocol.setHasTray(hasTray == 1);
            //读取站点
            JSONArray stationList = data.getJSONArray("stationList");
            if (stationList != null) {
                for (int i = 0; i < stationList.size(); i++) {
                    JSONObject staObj = stationList.getJSONObject(i);
                    LiftStaProtocol liftStaProtocol = null;
                    for (LiftStaProtocol staProtocol : liftStaProtocols) {
                        if(staProtocol.getSiteId().equals(staObj.getInteger("siteId"))){
                            liftStaProtocol = staProtocol;
                            break;
                        }
            }
            JSONArray carList = data.getJSONArray("carList");
            for (int i = 0; i < carList.size(); i++) {
                int hasCar = (int) carList.get(i);
                LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
                liftStaProtocol.setHasCar(hasCar == 1);
                    if(liftStaProtocol == null){
                        continue;
            }
                    liftStaProtocol.setModel(staObj.getInteger("model") == 1);
                    liftStaProtocol.setBusy(staObj.getInteger("busy") == 1);
                    liftStaProtocol.setHasTray(staObj.getInteger("hasTray") == 1);
                    liftStaProtocol.setDeviceError(staObj.getInteger("deviceError") == 1);
                    liftStaProtocol.setTaskNo(staObj.getInteger("taskNo"));
                    liftStaProtocol.setBarcode(staObj.getString("barcode"));
                }
            }
            this.realtimeOriginData = JSON.toJSONString(data);
            if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
                //采集时间超过5s,保存一次数据记录
@@ -230,27 +245,7 @@
                liftProtocol.setDeviceDataLog(System.currentTimeMillis());
            }
            //将提升机状态保存至数据库
            BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
            BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
                    .eq("lift_no", device.getDeviceNo()));
            if (basLift == null) {
                basLift = new BasLift();
                //提升机号
                basLift.setLiftNo(liftProtocol.getLiftNo());
                basLift.setStatus(1);
                basLiftService.insert(basLift);
            }
            //任务号
            basLift.setWrkNo(liftProtocol.getTaskNo());
            //修改时间
            basLift.setUpdateTime(new Date());
            //设备状态
            basLift.setDeviceStatus(JSON.toJSONString(liftProtocol));
            if (basLiftService.updateById(basLift)) {
                OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
            }
        } catch (Exception e) {
            e.printStackTrace();
            OutputQueue.LIFT.offer(MessageFormat.format("【{0}】读取提升机状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
@@ -480,6 +475,11 @@
    }
    @Override
    public String getRealtimeOriginData() {
        return this.realtimeOriginData;
    }
    @Override
    public LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
        LiftCommand command = new LiftCommand();
        command.setLiftNo(device.getDeviceNo());
@@ -672,5 +672,8 @@
         */
        private Boolean overWeight;
        //提升机站点
        private List<LiftStaProtocol> liftStaProtocols;
    }
}
src/main/java/com/zy/core/thread/impl/ZyForkLiftThread.java
@@ -51,7 +51,7 @@
        //初始化站点
        for (LiftStation station : stationList) {
            ForkLiftStaProtocol forkLiftStaProtocol = new ForkLiftStaProtocol();
            forkLiftStaProtocol.setStaNo(station.getStaNo());//站点号
            forkLiftStaProtocol.setSiteId(station.getSiteId());//站点号
            forkLiftStaProtocol.setLev(station.getLev());//站点楼层
            String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
            forkLiftStaProtocol.setLocNo(locNo);//站点库位号
src/main/resources/application.yml
@@ -19,7 +19,7 @@
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
    database: 3
#    password: 123456
  task:
    scheduling:
@@ -54,57 +54,3 @@
  # 每个线程管控设备执行数量
  threadControlCount: 10
  liftType: lift
## 下位机配置
#wcs-slave:
#  # 四向穿梭车1
#  shuttle[0]:
#    id: 1
#    ip: 10.10.20.11
#    port: 8888
#    rack: 0
#    slot: 0
#    threadImpl: NyShuttleThread
#  # 四向穿梭车2
#  shuttle[1]:
#    id: 2
#    ip: 10.10.20.12
#    port: 8888
#    rack: 0
#    slot: 0
#    threadImpl: NyShuttleThread
#  # 货叉提升机主线程
#  forkLiftMaster[0]:
#    id: 99
#    ip: 10.10.20.20
#    port: 102
#    rack: 0
#    slot: 0
#    threadImpl: LfdZyForkLiftMasterThread
#  # 货叉提升机1
#  forkLift[0]:
#    id: 1
#    ip: 10.10.20.20
#    port: 102
#    rack: 0
#    slot: 0
#    threadImpl: LfdZyForkLiftSlaveThread
#    masterId: 99
#    staRow: 9
#    staBay: 6
#    sta[0]:
#      staNo: 1001
#      lev: 1
#      liftNo: ${wcs-slave.forkLift[0].id}
#    sta[1]:
#      staNo: 1002
#      lev: 2
#      liftNo: ${wcs-slave.forkLift[0].id}
#    sta[2]:
#      staNo: 1003
#      lev: 3
#      liftNo: ${wcs-slave.forkLift[0].id}
#    sta[3]:
#      staNo: 1004
#      lev: 4
#      liftNo: ${wcs-slave.forkLift[0].id}
src/main/webapp/views/lift.html
@@ -145,7 +145,7 @@
                                    <td class="py-3 px-4">{{ item.lev }}</td>
                                    <td class="py-3 px-4">
                                        <div v-for="(sta,id) in item.liftStaProtocols" :key="id">
                                            {{ sta.lev }}层,托盘:{{ sta.hasTray ? 'Y':'N' }},小车:{{ sta.hasCar ? 'Y':'N' }}
                                            {{ sta.siteId }}站,托盘:{{ sta.hasTray ? 'Y':'N' }},小车:{{ sta.hasCar ? 'Y':'N' }}
                                        </div>
                                    </td>
                                </tr>