pang.jiabao
2024-07-06 d103ee6b414eb772b36bd05f6bebe9e844d1f723
基础配置修改
7个文件已修改
1722 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 157 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 115 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/ServerBootstrap.java 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 535 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 820 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -185,7 +185,7 @@
    </dependencies>
    <build>
        <finalName>jtwcs</finalName>
        <finalName>ghjtwcs</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
@@ -21,7 +20,6 @@
import com.zy.common.utils.CollectionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.RedisUtil;
import com.zy.common.utils.RgvUtils;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -881,6 +879,48 @@
            }
        }
    }
    /**
     * 堆垛机站出库到出库站
     */
    public synchronized void crnStnToOutStn1() {
        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
            // 遍历堆垛机出库站
            for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
                // 查询工作档
                WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo());
                if (wrkMast == null) {
                    continue;
                }
                // 判断工作档条件
                if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
                    continue;
                }
                // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
                    // 移动中
                    continue;
                }
                //  判断堆垛机状态等待确认
                if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
                        && crnProtocol.statusType == CrnStatusType.WAITING
                        && crnProtocol.forkPosType == CrnForkPosType.HOME) {
                    // 命令下发区 --------------------------------------------------------------------------
                    // 更新工作档状态为14
                    wrkMast.setWrkSts(13L);
                    wrkMast.setCrnEndTime(new Date());
                    if (wrkMastMapper.updateById(wrkMast) != 0) {
                        // 复位堆垛机
                        crnThread.setResetFlag(true);
                    } else {
                        log.error("更新工作档的工作状态为14失败!!! [工作号:{}]", wrkMast.getWrkNo());
                    }
                }
            }
        }
    }
    /**
     * 堆垛机站出库到出库站
@@ -1275,28 +1315,28 @@
                continue;
            }
            boolean flag = false;
            boolean flag = true;
            // 获取堆垛机入库站信息
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
            if (staProtocol == null) {
                continue;
            } else {
                staProtocol = staProtocol.clone();
            }
            // 查询站点详细信息
            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
            if (staDetl == null) {
                log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                flag = true;
            }
            if (!flag) {
                continue;
            }
//            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
//            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
//            if (staProtocol == null) {
//                continue;
//            } else {
//                staProtocol = staProtocol.clone();
//            }
//            // 查询站点详细信息
//            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
//            if (staDetl == null) {
//                log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
//                continue;
//            }
//            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
//                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
//                flag = true;
//            }
//            if (!flag) {
//                continue;
//            }
            // 获取库位信息
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
@@ -1530,6 +1570,11 @@
    public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol) {
        List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId());
        for (WrkMast wrkMast : wrkMasts) {
            // 判断堆垛机站点是否可用
            if (!crnEnabled(wrkMast)){
                continue;
            }
            if (wrkMast == null) {
                continue;
            }
@@ -1678,6 +1723,72 @@
    }
    /**
     * 确认出库码头是否可用
     * @param wrkMast 工作档
     * @return 是否可用
     */
    private boolean crnEnabled(WrkMast wrkMast) {
        String url = "127.0.0.1";
        String path = "/ghwcs/ca";
        // 获取请求头
        Map<String,Object> headers = new HashMap<>();
        headers.put("digi-type","sync ");
        headers.put("digi-protocol","raw");
        headers.put("digi-datakey"," XCommon.ImportData");
        // 构造请求体
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("staNo", wrkMast.getSourceStaNo());
        jsonObject.put("workNo", wrkMast.getWrkNo());
        String body = jsonObject.toJSONString();
        boolean success;
        String response;
        try {
            response = new HttpHandler.Builder()
                    .setUri(url)
                    .setPath(path)
                    .setHeaders(headers)
                    .setJson(body)
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
                JSONObject jsonObject1 = JSONObject.parseObject(response);
                if ((Integer) jsonObject1.get("code") == 200 && (Integer) jsonObject1.get("data") == 1){
                    success = true;
                }else {
                    success = false;
                }
            } else {
                log.error("请求接口失败!!!url:{};request:{};response:{}", url + path, body, response);
                throw new CoolException("下发出库任务给GWCS(从出库码头到出库口)失败");
            }
        } catch (Exception e) {
            success = false;
            log.error("确认出库码头是否可用异常,工作号:{},{}", wrkMast.getWrkNo(),e.getMessage());
        } finally {
//            try {
//                // 保存接口日志
//                apiLogService.save(
//                        "从出库码头到出库口",
//                        MesConstant.URL + MesConstant.PAKIN_URL,
//                        null,
//                        "127.0.0.1",
//                        jsonObject.toJSONString(),
//                        response,
//                        success
//                );
//            } catch (Exception e) {
//                log.error("接口日志保存异常", e);
//            }
        }
        return success;
    }
    /**
     * 查找工作状态为2(设备上走),且RGV入库接驳站符合的的入库工作档,提取出最多2笔
     * @param slave
     * @return
src/main/java/com/zy/core/MainProcess.java
@@ -5,11 +5,9 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
import java.util.ArrayList;
/**
 * WCS主流程
@@ -48,24 +46,25 @@
                    //初始化RGV地图
//                    mainService.initRgvMap();
                    //刷新RGV地图
                    mainService.refreshRgvMap();
//                    mainService.refreshRgvMap();
                    // 演示
//                    mainService.crnDemoOfLocMove1();
                    // 入出库模式切换函数
//                    mainService.ioConvert();
                    // 入库  ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档
                    mainService.generateStoreWrkFile(); // 组托
//                    mainService.generateStoreWrkFile(); // 组托
                    // 入库  ===>> 码垛位获取空板条码信息
                    mainService.generateStoreWrkFileFull2LouM(); // 组托
                    mainService.generateStoreWrkFile0(); // WMS入库
//                    mainService.generateStoreWrkFileFull2LouM(); // 组托
//                    mainService.generateStoreWrkFile0(); // WMS入库
                    // 拣料、并板、盘点再入库
                    mainService.stnToCrnStnPick();
//                    mainService.stnToCrnStnPick();
                    // 拣料、并板、盘点再入库拆盘区   1楼拆垛位置
                    mainService.stnToCrnStnPick2();
//                    mainService.stnToCrnStnPick2();
                    // 2楼212呼叫空板
                    mainService.stnToCrnStnPick3Auto(i);
//                    mainService.stnToCrnStnPick3Auto(i);
                    // 出库  ===>>  堆垛机出库站到出库站
                    mainService.crnStnToOutStn();
                    mainService.crnStnToOutStn1();
//                    mainService.crnStnToOutStn();
                    // 入出库  ===>>  堆垛机入出库作业下发
                    mainService.crnIoExecute();
                    // 入出库增强 ===>> 堆垛机命令下发后,异步修改工作档状态
@@ -74,42 +73,42 @@
                    mainService.storeFinished();
                    /////////////////////////////////////RGV调度/////////////////////////////////////
                    i++;
                    k++;
                    if (i<7) {
                        // RGV  ===>>  小车任务作业下发
                        try{
                            boolean rgvIoExecuteSign = mainService.rgvIoExecute(i);
                            if (rgvIoExecuteSign){
                                k = 0;
                            } else if (k>7){
                                k = 0;
                                mainService.rgvRunWrkMastEmptyStaAvoidance();//避让
                            }
                        }catch (Exception e){
                            log.error("RGV  ===>>  小车任务作业下发异常"+e);
                        }
                    }else {
                        i = 0;
                    }
                    //完成小车任务
                    mainService.rgvCompleteWrkMastSta();
                    /////////////////////////////////////RGV调度/////////////////////////////////////
                    // 异常信息记录
                    mainService.recErr();
                    // 入库  ===>> 空栈板初始化入库,叉车入库站放货  2楼
                    mainService.storeEmptyPlt();
                    // 入库  ===>> 空栈板初始化入库,1楼叠盘机空板入库
                    mainService.storeEmptyPlt3();
                    // 入库  ===>> 空栈板初始化入库,1楼叠盘机叠盘
                    mainService.storeEmptyPlt2();
                    // 拣料、并板、盘点再入库拆盘区   1楼拆垛位置  空板叠盘
                    mainService.storeEmptyPlt4();
                    // 出库  ===>> 工作档信息写入led显示器
                    mainService.ledExecute();
                    // 其他  ===>> LED显示器复位,显示默认信息
                    mainService.ledReset();
//                    i++;
//                    k++;
//                    if (i<7) {
//                        // RGV  ===>>  小车任务作业下发
//                        try{
//                            boolean rgvIoExecuteSign = mainService.rgvIoExecute(i);
//                            if (rgvIoExecuteSign){
//                                k = 0;
//                            } else if (k>7){
//                                k = 0;
//                                mainService.rgvRunWrkMastEmptyStaAvoidance();//避让
//                            }
//                        }catch (Exception e){
//                            log.error("RGV  ===>>  小车任务作业下发异常"+e);
//                        }
//                    }else {
//                        i = 0;
//                    }
//                    //完成小车任务
//                    mainService.rgvCompleteWrkMastSta();
//                    /////////////////////////////////////RGV调度/////////////////////////////////////
//
//                    // 异常信息记录
//                    mainService.recErr();
//                    // 入库  ===>> 空栈板初始化入库,叉车入库站放货  2楼
//                    mainService.storeEmptyPlt();
//                    // 入库  ===>> 空栈板初始化入库,1楼叠盘机空板入库
//                    mainService.storeEmptyPlt3();
//                    // 入库  ===>> 空栈板初始化入库,1楼叠盘机叠盘
//                    mainService.storeEmptyPlt2();
//                    // 拣料、并板、盘点再入库拆盘区   1楼拆垛位置  空板叠盘
//                    mainService.storeEmptyPlt4();
//                    // 出库  ===>> 工作档信息写入led显示器
//                    mainService.ledExecute();
//                    // 其他  ===>> LED显示器复位,显示默认信息
//                    mainService.ledReset();
//                    // 其他  ===>> 入出库模式切换
//                    i++;
@@ -124,18 +123,18 @@
//                    //拆盘机处空板扫码,驱动托盘向码垛位,不入库
//                    mainService.scanBarcodeEmptyBoard();
                    //码垛完成驱动托盘下一步扫码入库
                    mainService.stackingCompletionDriveTray();
                    //拆垛完成继续下一步  出库至月台出库口
                    mainService.stackingCompletionDriveTray2();
                    //贴标完成继续下一步
//                    mainService.stackingCompletionDriveTray3();
                    //拆垛完成继续下一步  运行途中自动避让空板
                    mainService.stackingCompletionDriveTray4();
                    //拆垛完成托盘继续下一步
                    mainService.stackingCompletionDriveTrayOk2();
                    //退货码垛完成托盘继续下一步
                    mainService.stackingCompletionDriveTrayOk3();
//                    //码垛完成驱动托盘下一步扫码入库
//                    mainService.stackingCompletionDriveTray();
//                    //拆垛完成继续下一步  出库至月台出库口
//                    mainService.stackingCompletionDriveTray2();
//                    //贴标完成继续下一步
////                    mainService.stackingCompletionDriveTray3();
//                    //拆垛完成继续下一步  运行途中自动避让空板
//                    mainService.stackingCompletionDriveTray4();
//                    //拆垛完成托盘继续下一步
//                    mainService.stackingCompletionDriveTrayOk2();
//                    //退货码垛完成托盘继续下一步
//                    mainService.stackingCompletionDriveTrayOk3();
                } catch (Exception e) {
                    e.printStackTrace();
src/main/java/com/zy/core/ServerBootstrap.java
@@ -4,11 +4,8 @@
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.model.RgvSlave;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.*;
import com.zy.core.thread.SiemensCrnThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@@ -61,25 +58,25 @@
            MessageQueue.init(SlaveType.Crn, crn);
        }
        // 初始化堆垛机mq
        for (Slave rgv : slaveProperties.getRgv()) {
            MessageQueue.init(SlaveType.Rgv, rgv);
        }
        // 初始化输送线mq
        for (Slave devp : slaveProperties.getDevp()) {
            MessageQueue.init(SlaveType.Devp, devp);
        }
        // 初始化条码扫描仪mq
        for (Slave barcode : slaveProperties.getBarcode()) {
            MessageQueue.init(SlaveType.Barcode, barcode);
        }
        // 初始化Led灯mq
        for (Slave led : slaveProperties.getLed()) {
            MessageQueue.init(SlaveType.Led, led);
        }
        // 初始化磅称mq
        for (Slave scale : slaveProperties.getScale()) {
            MessageQueue.init(SlaveType.Scale, scale);
        }
//        for (Slave rgv : slaveProperties.getRgv()) {
//            MessageQueue.init(SlaveType.Rgv, rgv);
//        }
//        // 初始化输送线mq
//        for (Slave devp : slaveProperties.getDevp()) {
//            MessageQueue.init(SlaveType.Devp, devp);
//        }
//        // 初始化条码扫描仪mq
//        for (Slave barcode : slaveProperties.getBarcode()) {
//            MessageQueue.init(SlaveType.Barcode, barcode);
//        }
//        // 初始化Led灯mq
//        for (Slave led : slaveProperties.getLed()) {
//            MessageQueue.init(SlaveType.Led, led);
//        }
//        // 初始化磅称mq
//        for (Slave scale : slaveProperties.getScale()) {
//            MessageQueue.init(SlaveType.Scale, scale);
//        }
//        // 初始化台车mq
//        for (Slave car : slaveProperties.getCar()) {
//            MessageQueue.init(SlaveType.Car, car);
@@ -97,34 +94,34 @@
            SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
        }
        // 初始化穿梭车线程
        log.info("初始化RGV线程...................................................");
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            RgvThread rgvThread = new RgvThread(rgv);
            new Thread((Runnable) rgvThread).start();
            SlaveConnection.put(SlaveType.Rgv, rgv.getId(), rgvThread);
        }
//        log.info("初始化RGV线程...................................................");
//        for (RgvSlave rgv : slaveProperties.getRgv()) {
//            RgvThread rgvThread = new RgvThread(rgv);
//            new Thread((Runnable) rgvThread).start();
//            SlaveConnection.put(SlaveType.Rgv, rgv.getId(), rgvThread);
//        }
        // 初始化输送线线程
        log.info("初始化输送线线程...................................................");
        for (DevpSlave devp : slaveProperties.getDevp()) {
            DevpThread devpThread = new SiemensDevpThread(devp);
            new Thread((Runnable) devpThread).start();
            SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread);
        }
//        log.info("初始化输送线线程...................................................");
//        for (DevpSlave devp : slaveProperties.getDevp()) {
//            DevpThread devpThread = new SiemensDevpThread(devp);
//            new Thread((Runnable) devpThread).start();
//            SlaveConnection.put(SlaveType.Devp, devp.getId(), devpThread);
//        }
        // 初始化条码扫描仪线程
        log.info("初始化条码扫描仪线程...................................................");
        for (Slave barcode : slaveProperties.getBarcode()) {
            BarcodeThread barcodeThread = new BarcodeThread(barcode);
//            new Thread(barcodeThread).start();
            SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread);
        }
//        log.info("初始化条码扫描仪线程...................................................");
//        for (Slave barcode : slaveProperties.getBarcode()) {
//            BarcodeThread barcodeThread = new BarcodeThread(barcode);
////            new Thread(barcodeThread).start();
//            SlaveConnection.put(SlaveType.Barcode, barcode.getId(), barcodeThread);
//        }
        // 初始化LED线程
        log.info("初始化LED线程...................................................");
        for (LedSlave led : slaveProperties.getLed()) {
            LedThread ledThread = new LedThread(led);
            new Thread(ledThread).start();
            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
        }
//        log.info("初始化LED线程...................................................");
//        for (LedSlave led : slaveProperties.getLed()) {
//            LedThread ledThread = new LedThread(led);
//            new Thread(ledThread).start();
//            SlaveConnection.put(SlaveType.Led, led.getId(), ledThread);
//        }
        // 初始化磅秤线程
//        log.info("初始化磅秤线程...................................................");
//        for (Slave scale : slaveProperties.getScale()) {
src/main/resources/application.yml
@@ -8,7 +8,8 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://192.168.18.4:49977;databasename=srjtasrs
#    url: jdbc:sqlserver://192.168.18.4:49977;databasename=srjtasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ghjtasrs
    username: sa
    password: sa@123
  mvc:
@@ -36,7 +37,7 @@
  enable: false
wms:
  url: 127.0.0.1:8080/jtwms
  url: 127.0.0.1:8080/ghjtwms
# 下位机配置
wcs-slave:
@@ -58,29 +59,29 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2061
      row: 3
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 201
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3001
      row: 3
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 100
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2062
      row: 2
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 200
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3002
      row: 2
      bay: 1
      lev: 2
@@ -96,29 +97,29 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 105
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2064
      row: 7
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 203
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3004
      row: 7
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 103
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2065
      row: 6
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 202
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3003
      row: 6
      bay: 1
      lev: 2
@@ -134,29 +135,29 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 108
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2067
      row: 11
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 205
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3005
      row: 11
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 106
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2068
      row: 10
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 204
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3006
      row: 10
      bay: 1
      lev: 2
@@ -172,29 +173,29 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 111
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2071
      row: 15
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 207
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3007
      row: 15
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 109
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2070
      row: 14
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 206
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3008
      row: 14
      bay: 1
      lev: 2
@@ -210,29 +211,29 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 114
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2074
      row: 19
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 209
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3010
      row: 19
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 112
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2073
      row: 18
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 208
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3009
      row: 18
      bay: 1
      lev: 2
@@ -248,254 +249,254 @@
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 117
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2077
      row: 23
      bay: 1
      lev: 1
    # 堆垛机入库站点
    crnInStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 211
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3011
      row: 23
      bay: 1
      lev: 2
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 115
#      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 2076
      row: 22
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[1]:
      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 210
#      devpPlcId: ${wcs-slave.devp[1].id}
      staNo: 3012
      row: 22
      bay: 1
      lev: 2
  # RGV穿梭车1
  rgv[0]:
    id: 1
    ip: 192.168.18.77
    port: 502
    rack: 0
    slot: 0
    #RGV入库源站点
    rgvInSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 100
    rgvInSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 101
    #RGV出库源站点
    rgvOutSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 110
    rgvOutSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 112
    #RGV目标站点
    rgvDestStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
    rgvDestStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 103
#  rgv[0]:
#    id: 1
#    ip: 192.168.18.77
#    port: 502
#    rack: 0
#    slot: 0
#    #RGV入库源站点
#    rgvInSStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 100
#    rgvInSStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 101
#    #RGV出库源站点
#    rgvOutSStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 110
#    rgvOutSStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 112
#    #RGV目标站点
#    rgvDestStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 102
#    rgvDestStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 103
  # RGV穿梭车2
  rgv[1]:
    id: 2
    ip: 192.168.18.79
    port: 502
    rack: 0
    slot: 0
    #RGV入库源站点
    rgvInSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 100
    rgvInSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 101
    #RGV出库源站点
    rgvOutSStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 110
    rgvOutSStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 112
    #RGV目标站点
    rgvDestStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 102
    rgvDestStn[1]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 103
#  rgv[1]:
#    id: 2
#    ip: 192.168.18.79
#    port: 502
#    rack: 0
#    slot: 0
#    #RGV入库源站点
#    rgvInSStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 100
#    rgvInSStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 101
#    #RGV出库源站点
#    rgvOutSStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 110
#    rgvOutSStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 112
#    #RGV目标站点
#    rgvDestStn[0]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 102
#    rgvDestStn[1]:
#      devpPlcId: ${wcs-slave.devp[0].id}
#      staNo: 103
  # 输送线
  devp[0]:
    id: 1
    ip: 192.168.18.71
    port: 102
    rack: 0
    slot: 0
    # WMS入库口1
    inWmsSta[0]:
      staNo: 145
    # 空板入库口1
    emptyInSta[0]:
      staNo: 122
    # 拆垛叠盘口1
    emptyInSta2[0]:
      staNo: 118
    # 拆垛叠盘口2
    emptyInSta2[1]:
      staNo: 119
    # 拆垛叠盘口3
    emptyInSta2[2]:
      staNo: 120
    # 拆垛叠盘口4
    emptyInSta2[3]:
      staNo: 121
    # 出库口1
    outSta[0]:
      staNo: 122
    # 拣料入库口1
    pickSta2[0]:
      staNo: 118
    # 拣料入库口1
    pickSta2[1]:
      staNo: 119
    # 拣料入库口1
    pickSta2[2]:
      staNo: 120
    # 拣料入库口1
    pickSta2[3]:
      staNo: 121
    # 拣料入库口1
    pickSta[0]:
      staNo: 122
    # Rgv出库口1
    outRgvSta[0]:
      staNo: 102
    # Rgv出库口1
    outRgvSta[1]:
      staNo: 105
    # Rgv出库口1
    outRgvSta[2]:
      staNo: 108
    # Rgv出库口1
    outRgvSta[3]:
      staNo: 111
    # Rgv出库口1
    outRgvSta[4]:
      staNo: 114
    # Rgv出库口1
    outRgvSta[5]:
      staNo: 117
    # Rgv入库口1
    inRgvSta[0]:
      staNo: 118
    # Rgv入库口1
    inRgvSta[1]:
      staNo: 119
    # Rgv入库口1
    inRgvSta[2]:
      staNo: 120
    # Rgv入库口1
    inRgvSta[3]:
      staNo: 121
    # Rgv入库口1
    inRgvSta[4]:
      staNo: 122
    # Rgv入库口1
    inRgvSta[5]:
      staNo: 123
#  devp[0]:
#    id: 1
#    ip: 192.168.18.71
#    port: 102
#    rack: 0
#    slot: 0
#    # WMS入库口1
#    inWmsSta[0]:
#      staNo: 145
#    # 空板入库口1
#    emptyInSta[0]:
#      staNo: 122
#    # 拆垛叠盘口1
#    emptyInSta2[0]:
#      staNo: 118
#    # 拆垛叠盘口2
#    emptyInSta2[1]:
#      staNo: 119
#    # 拆垛叠盘口3
#    emptyInSta2[2]:
#      staNo: 120
#    # 拆垛叠盘口4
#    emptyInSta2[3]:
#      staNo: 121
#    # 出库口1
#    outSta[0]:
#      staNo: 122
#    # 拣料入库口1
#    pickSta2[0]:
#      staNo: 118
#    # 拣料入库口1
#    pickSta2[1]:
#      staNo: 119
#    # 拣料入库口1
#    pickSta2[2]:
#      staNo: 120
#    # 拣料入库口1
#    pickSta2[3]:
#      staNo: 121
#    # 拣料入库口1
#    pickSta[0]:
#      staNo: 122
#    # Rgv出库口1
#    outRgvSta[0]:
#      staNo: 102
#    # Rgv出库口1
#    outRgvSta[1]:
#      staNo: 105
#    # Rgv出库口1
#    outRgvSta[2]:
#      staNo: 108
#    # Rgv出库口1
#    outRgvSta[3]:
#      staNo: 111
#    # Rgv出库口1
#    outRgvSta[4]:
#      staNo: 114
#    # Rgv出库口1
#    outRgvSta[5]:
#      staNo: 117
#    # Rgv入库口1
#    inRgvSta[0]:
#      staNo: 118
#    # Rgv入库口1
#    inRgvSta[1]:
#      staNo: 119
#    # Rgv入库口1
#    inRgvSta[2]:
#      staNo: 120
#    # Rgv入库口1
#    inRgvSta[3]:
#      staNo: 121
#    # Rgv入库口1
#    inRgvSta[4]:
#      staNo: 122
#    # Rgv入库口1
#    inRgvSta[5]:
#      staNo: 123
  # 输送线
  devp[1]:
    id: 2
    ip: 192.168.18.81
    port: 102
    rack: 0
    slot: 0
    # 入库口1
    inSta[0]:
      staNo: 217
      barcode: ${wcs-slave.barcode[0].id}
      led: ${wcs-slave.led[2].id}
    # 入库口1
    inSta[1]:
      staNo: 221
      barcode: ${wcs-slave.barcode[1].id}
      led: ${wcs-slave.led[1].id}
    # WMS入库口1
    inWmsSta[0]:
      staNo: 212
    # 空板入库口1
    emptyInSta[0]:
      staNo: 212
    # 出库口1
    outSta[0]:
      staNo: 212
    # 出库口1
    outSta[1]:
      staNo: 213
    # 拣料入库口1
    pickSta[0]:
      staNo: 212
    # 2楼码垛位置
    driveSta[0]:
      staNo: 215
      barcode: ${wcs-slave.barcode[3].id}
    # 2楼码垛位置
    driveSta[1]:
      staNo: 219
      barcode: ${wcs-slave.barcode[4].id}
#  devp[1]:
#    id: 2
#    ip: 192.168.18.81
#    port: 102
#    rack: 0
#    slot: 0
#    # 入库口1
#    inSta[0]:
#      staNo: 217
#      barcode: ${wcs-slave.barcode[0].id}
#      led: ${wcs-slave.led[2].id}
#    # 入库口1
#    inSta[1]:
#      staNo: 221
#      barcode: ${wcs-slave.barcode[1].id}
#      led: ${wcs-slave.led[1].id}
#    # WMS入库口1
#    inWmsSta[0]:
#      staNo: 212
#    # 空板入库口1
#    emptyInSta[0]:
#      staNo: 212
#    # 出库口1
#    outSta[0]:
#      staNo: 212
#    # 出库口1
#    outSta[1]:
#      staNo: 213
#    # 拣料入库口1
#    pickSta[0]:
#      staNo: 212
#    # 2楼码垛位置
#    driveSta[0]:
#      staNo: 215
#      barcode: ${wcs-slave.barcode[3].id}
#    # 2楼码垛位置
#    driveSta[1]:
#      staNo: 219
#      barcode: ${wcs-slave.barcode[4].id}
  # 条码扫描仪
  barcode[0]:
    id: 1
    ip: 10.10.10.52
    port: 51236
  # 条码扫描仪
  barcode[1]:
    id: 2
    ip: 10.10.10.52
    port: 51236
  # 条码扫描仪
  barcode[2]:
    id: 3
    ip: 10.10.10.52
    port: 51236
  # 条码扫描仪
  barcode[3]:
    id: 4
    ip: 10.10.10.52
    port: 51236
  # 条码扫描仪
  barcode[4]:
    id: 5
    ip: 10.10.10.52
    port: 51236
   # LED1
  led[0]:
    id: 1
    ip: 192.168.18.5
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 144
  # LED2
  led[1]:
    id: 2
    ip: 192.168.18.6
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 221
  # LED3
  led[2]:
    id: 3
    ip: 192.168.18.7
    port: 5005
    devpPlcId: ${wcs-slave.devp[1].id}
    staArr: 217
#  # 条码扫描仪
#  barcode[0]:
#    id: 1
#    ip: 10.10.10.52
#    port: 51236
#  # 条码扫描仪
#  barcode[1]:
#    id: 2
#    ip: 10.10.10.52
#    port: 51236
#  # 条码扫描仪
#  barcode[2]:
#    id: 3
#    ip: 10.10.10.52
#    port: 51236
#  # 条码扫描仪
#  barcode[3]:
#    id: 4
#    ip: 10.10.10.52
#    port: 51236
#  # 条码扫描仪
#  barcode[4]:
#    id: 5
#    ip: 10.10.10.52
#    port: 51236
#   # LED1
#  led[0]:
#    id: 1
#    ip: 192.168.18.5
#    port: 5005
#    devpPlcId: ${wcs-slave.devp[0].id}
#    staArr: 144
#  # LED2
#  led[1]:
#    id: 2
#    ip: 192.168.18.6
#    port: 5005
#    devpPlcId: ${wcs-slave.devp[1].id}
#    staArr: 221
#  # LED3
#  led[2]:
#    id: 3
#    ip: 192.168.18.7
#    port: 5005
#    devpPlcId: ${wcs-slave.devp[1].id}
#    staArr: 217
src/main/webapp/static/js/console.map.js
@@ -10,8 +10,8 @@
        "type": "rack",
        "id": "rack1",
        "top": 45,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -19,8 +19,8 @@
        "type": "rack",
        "id": "rack2",
        "top": 67,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -28,8 +28,8 @@
        "type": "rack",
        "id": "rack3",
        "top": 115,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -37,8 +37,8 @@
        "type": "rack",
        "id": "rack4",
        "top": 137,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -46,8 +46,8 @@
        "type": "rack",
        "id": "rack5",
        "top": 159,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -55,8 +55,8 @@
        "type": "rack",
        "id": "rack6",
        "top": 181,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -64,8 +64,8 @@
        "type": "rack",
        "id": "rack7",
        "top": 229,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -73,8 +73,8 @@
        "type": "rack",
        "id": "rack8",
        "top": 251,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -82,8 +82,8 @@
        "type": "rack",
        "id": "rack9",
        "top": 273,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -91,8 +91,8 @@
        "type": "rack",
        "id": "rack10",
        "top": 295,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -100,8 +100,8 @@
        "type": "rack",
        "id": "rack11",
        "top": 343,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -109,8 +109,8 @@
        "type": "rack",
        "id": "rack12",
        "top": 365,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -118,8 +118,8 @@
        "type": "rack",
        "id": "rack13",
        "top": 387,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -127,8 +127,8 @@
        "type": "rack",
        "id": "rack14",
        "top": 409,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -136,8 +136,8 @@
        "type": "rack",
        "id": "rack15",
        "top": 457,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -145,8 +145,8 @@
        "type": "rack",
        "id": "rack16",
        "top": 479,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -154,8 +154,8 @@
        "type": "rack",
        "id": "rack17",
        "top": 501,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -163,8 +163,8 @@
        "type": "rack",
        "id": "rack18",
        "top": 523,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -172,8 +172,8 @@
        "type": "rack",
        "id": "rack19",
        "top": 571,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -181,8 +181,8 @@
        "type": "rack",
        "id": "rack20",
        "top": 593,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -190,8 +190,8 @@
        "type": "rack",
        "id": "rack21",
        "top": 615,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -199,8 +199,8 @@
        "type": "rack",
        "id": "rack22",
        "top": 637,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -208,8 +208,8 @@
        "type": "rack",
        "id": "rack23",
        "top": 685,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -217,8 +217,8 @@
        "type": "rack",
        "id": "rack24",
        "top": 707,
        "left": 650,
        "width": 917,
        "left": 350,
        "width": 1220,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 29
@@ -244,7 +244,7 @@
        "id": "lb_desc100",
        "text": "<=出库<=",
        "top": 48,
        "left": 550,
        "left": 260,
        "width": 100,
        "height": 23
    }, {
@@ -252,31 +252,7 @@
        "id": "lb_desc103",
        "text": "=>入库=>",
        "top": 138,
        "left": 550,
        "width": 100,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc117",
        "text": "=>入库=>",
        "top": 707,
        "left": 550,
        "width": 100,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc103",
        "text": "<=出库<=",
        "top": 162,
        "left": 550,
        "width": 100,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc105",
        "text": "=>入库=>",
        "top": 252,
        "left": 550,
        "left": 260,
        "width": 100,
        "height": 23
    }],
@@ -285,7 +261,7 @@
        "id": "crn-1",
        "text": "1",
        "top": 96,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -293,15 +269,15 @@
        "id": "lb_track1",
        "text": "",
        "top": 106,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-2",
        "text": "2",
        "top": 210,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -309,15 +285,15 @@
        "id": "lb_track2",
        "text": "",
        "top": 220,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-3",
        "text": "3",
        "top": 324,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -325,15 +301,15 @@
        "id": "lb_track3",
        "text": "",
        "top": 334,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-4",
        "text": "4",
        "top": 438,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -341,15 +317,15 @@
        "id": "lb_track4",
        "text": "",
        "top": 448,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-5",
        "text": "5",
        "top": 552,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -357,15 +333,15 @@
        "id": "lb_track5",
        "text": "",
        "top": 562,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-6",
        "text": "6",
        "top": 666,
        "left": 739,
        "left": 350,
        "width": 93,
        "height": 22
    }, {
@@ -373,8 +349,8 @@
        "id": "lb_track6",
        "text": "",
        "top": 676,
        "left": 573,
        "width": 1042,
        "left": 350,
        "width": 1220,
        "height": 2
    }],
    "areas": [{
@@ -393,665 +369,7 @@
            "left": 22,
            "width": 1374,
            "height": 672,
            "stns": [{
                "type": "stn",
                "id": "site-100",
                "text": "100",
                "top": 69,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-101",
                "text": "101",
                "top": 69,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-102",
                "text": "102",
                "top": 117,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-103",
                "text": "103",
                "top": 183,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-104",
                "text": "104",
                "top": 183,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-105",
                "text": "105",
                "top": 231,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-106",
                "text": "106",
                "top": 297,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-107",
                "text": "107",
                "top": 297,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-108",
                "text": "108",
                "top": 345,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-109",
                "text": "109",
                "top": 411,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-110",
                "text": "110",
                "top": 411,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-111",
                "text": "111",
                "top": 459,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-112",
                "text": "112",
                "top": 525,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-113",
                "text": "113",
                "top": 525,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-114",
                "text": "114",
                "top": 573,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-1142",
                "text": "1142",
                "top": 600,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-115",
                "text": "115",
                "top": 639,
                "left": 601,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-116",
                "text": "116",
                "top": 639,
                "left": 550,
                "width": 49,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-117",
                "text": "117",
                "top": 687,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "track",
                "id": "lb_trCart21",
                "text": "",
                "top": 45,
                "left": 473,
                "width": 6,
                "height": 684
            }, {
                "type": "track",
                "id": "lb_trCart22",
                "text": "",
                "top": 45,
                "left": 527,
                "width": 6,
                "height": 684
            }, {
                "type": "stn",
                "id": "site-1",
                "text": "1",
                "top": 257,
                "left": 469,
                "width": 69,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-2",
                "text": "2",
                "top": 457,
                "left": 469,
                "width": 69,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-130",
                "text": "130",
                "top": 297,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-131",
                "text": "131",
                "top": 319,
                "left": 266,
                "width": 100,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-145",
                "text": "145",
                "top": 319,
                "left": 173,
                "width": 30,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-146",
                "text": "146",
                "top": 319,
                "left": 204,
                "width": 30,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-147",
                "text": "147",
                "top": 319,
                "left": 235,
                "width": 30,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-132",
                "text": "132",
                "top": 355,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-133",
                "text": "133",
                "top": 377,
                "left": 266,
                "width": 100,
                "height": 42
            }, {
                "type": "stn",
                "id": "site-134",
                "text": "134",
                "top": 421,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-135",
                "text": "135",
                "top": 443,
                "left": 266,
                "width": 100,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-136",
                "text": "136",
                "top": 479,
                "left": 266,
                "width": 100,
                "height": 39
            }, {
                "type": "stn",
                "id": "site-137",
                "text": "137",
                "top": 520,
                "left": 266,
                "width": 100,
                "height": 34
            }, {
                "type": "stn",
                "id": "site-138",
                "text": "138",
                "top": 556,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-139",
                "text": "139",
                "top": 578,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-140",
                "text": "140",
                "top": 600,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-141",
                "text": "141",
                "top": 622,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-142",
                "text": "142",
                "top": 644,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-143",
                "text": "143",
                "top": 666,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-144",
                "text": "144",
                "top": 688,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-118",
                "text": "118",
                "top": 297,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-119",
                "text": "119",
                "top": 355,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-120",
                "text": "120",
                "top": 421,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-121",
                "text": "121",
                "top": 479,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-122",
                "text": "122",
                "top": 183,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-123",
                "text": "123",
                "top": 556,
                "left": 368,
                "width": 100,
                "height": 20
            }]
        }, {
            "type": "floor",
            "id": "page_floor2",
            "text": "1F2c",
            "top": 4,
            "left": 22,
            "width": 1374,
            "height": 672,
            "stns": [{
                "type": "stn",
                "id": "site-130",
                "text": "130",
                "top": 297,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-153",
                "text": "153",
                "top": 402,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-152",
                "text": "152",
                "top": 424,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-151",
                "text": "151",
                "top": 446,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-150",
                "text": "150",
                "top": 468,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-149",
                "text": "149",
                "top": 490,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-148",
                "text": "148",
                "top": 512,
                "left": 266,
                "width": 100,
                "height": 20
            }]
        }, {
            "type": "floor",
            "id": "page_floor2",
            "text": "2F",
            "top": 4,
            "left": 22,
            "width": 1374,
            "height": 672,
            "stns": [{
                "type": "stn",
                "id": "site-200",
                "text": "200",
                "top": 69,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-201",
                "text": "201",
                "top": 117,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-202",
                "text": "202",
                "top": 183,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-203",
                "text": "203",
                "top": 231,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-204",
                "text": "204",
                "top": 297,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-205",
                "text": "205",
                "top": 345,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-206",
                "text": "206",
                "top": 411,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-207",
                "text": "207",
                "top": 459,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-208",
                "text": "208",
                "top": 525,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-209",
                "text": "209",
                "top": 573,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-210",
                "text": "210",
                "top": 639,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-211",
                "text": "211",
                "top": 687,
                "left": 550,
                "width": 100,
                "height": 20
            }, {
                "type": "track",
                "id": "lb_trCart21",
                "text": "",
                "top": 45,
                "left": 473,
                "width": 6,
                "height": 684
            }, {
                "type": "track",
                "id": "lb_trCart22",
                "text": "",
                "top": 45,
                "left": 527,
                "width": 6,
                "height": 684
            }, {
                "type": "stn",
                "id": "site-2000",
                "text": "2000",
                "top": 457,
                "left": 469,
                "width": 69,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-212",
                "text": "212",
                "top": 45,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-213",
                "text": "213",
                "top": 600,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-214",
                "text": "214",
                "top": 600,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-215",
                "text": "215",
                "top": 578,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-216",
                "text": "216",
                "top": 556,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-217",
                "text": "217",
                "top": 556,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-218",
                "text": "218",
                "top": 622,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-219",
                "text": "219",
                "top": 644,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-220",
                "text": "220",
                "top": 666,
                "left": 266,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-221",
                "text": "221",
                "top": 666,
                "left": 368,
                "width": 100,
                "height": 20
            }, {
                "type": "stn",
                "id": "site-222",
                "text": "222",
                "top": 688,
                "left": 266,
                "width": 100,
                "height": 20
            }]
            "stns": []
        }]
    }]
}
src/main/webapp/views/index.html
@@ -27,7 +27,7 @@
<!-- 主体内容 -->
<iframe id="content" src="console.html"></iframe>
<footer class="footer">
    Copyright © 2023 All Rights Reserved. <a href="https://www.zoneyung.com" target="_blank">徐工汉云</a>  保留所有权利
    Copyright © 2023 All Rights Reserved. <a href="https://www.zoneyung.com" target="_blank">冠鸿江铜</a>  保留所有权利
</footer>
</body>
<script>