#
zjj
2024-10-14 056cf9d0311e1345017ab4c52c5946144fb4ccb8
#
12个文件已修改
1340 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/enums/SiteStatusType.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/ServerBootstrap.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/CrnCommand.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 249 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 910 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -185,7 +185,7 @@
    </dependencies>
    <build>
        <finalName>ykwcs</finalName>
        <finalName>gtwcs</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -249,7 +249,7 @@
        command.setDestinationPosX(param.getRow());     // 目标库位排
        command.setDestinationPosY(param.getBay());     // 目标库位列
        command.setDestinationPosZ(param.getLev());     // 目标库位层
        boolean locSts = isLocSts(param.getRow().toString(), param.getBay().toString(), param.getLev().toString());
        short locSts = isLocSts(param.getRow(), param.getBay(), param.getLev());
        command.setTraySize(locSts);
        return crnControl(command)?R.ok():R.error();
    }
@@ -268,7 +268,7 @@
        command.setDestinationPosX(param.getRow());     // 目标库位排
        command.setDestinationPosY(param.getBay());     // 目标库位列
        command.setDestinationPosZ(param.getLev());     // 目标库位层
        boolean locSts = isLocSts(param.getSourceRow().toString(), param.getSourceBay().toString(), param.getSourceLev().toString());
        short locSts = isLocSts(param.getSourceRow(), param.getSourceBay(), param.getSourceLev());
        command.setTraySize(locSts);
        return crnControl(command)?R.ok():R.error();
    }
@@ -294,7 +294,12 @@
        if (sourceLoc.getLocType1() != loc.getLocType1()){
            return R.error("库位类型不一致");
        }
        command.setTraySize(loc.getLocType1() == 2);
        short locSts1 = isLocSts(param.getRow(), param.getBay(), param.getLev());
        short locSts2 = isLocSts(param.getSourceRow(), param.getSourceBay(), param.getSourceLev());
        if (locSts1 != locSts2){
            return R.error("库位不匹配");
        }
        command.setTraySize(locSts1);
//        VersionUtils.locMoveCheckLocType(sourceLoc, loc);
        return crnControl(command)?R.ok():R.error();
    }
@@ -512,16 +517,15 @@
        }
    }
    private boolean isLocSts(String row,String bay,String lev){
        String loc = String.format("%2d",row)+String.format("%3d",bay)+String.format("%2d",lev);
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", loc));
    private short isLocSts(Short row,Short bay,Short lev){
//        String loc = String.format("%2d",row)+String.format("%3d",bay)+String.format("%2d",lev);
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                .eq("row1", row).eq("bay1", bay).eq("lev1", lev));
        if (Cools.isEmpty(locMast)){
            return false;
            return 0;
        }
        if (locMast.getLocType1() == 2){
            return true;
        }
        return false;
        return locMast.getLocType1();
    }
src/main/java/com/zy/asrs/domain/enums/SiteStatusType.java
@@ -1,6 +1,8 @@
package com.zy.asrs.domain.enums;
import com.zy.core.enums.DevpType.DevpStateType;
import com.zy.core.enums.DevpType.DevpWorkType;
import com.zy.core.model.protocol.StaProtocol;
/**
@@ -25,21 +27,21 @@
        if (staProtocol == null) {
            return null;
        }
//        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0) {
//            return SITE_AUTO_RUN_ID;
//        }
//        if (staProtocol.isAutoing() && staProtocol.isLoading()) {
//            return SITE_AUTO_RUN;
//        }
//        if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 0) {
//            return SITE_AUTO_ID;
//        }
//        if (staProtocol.isAutoing()) {
//            return SITE_AUTO;
//        }
//        if (!staProtocol.isAutoing()) {
//            return SITE_UNAUTO;
//        }
        if (staProtocol.stateType == DevpStateType.AUTO && staProtocol.workType == DevpWorkType.BUSY && staProtocol.getWorkNo() > 0) {
            return SITE_AUTO_RUN_ID;
        }
        if (staProtocol.stateType == DevpStateType.AUTO && staProtocol.workType == DevpWorkType.BUSY) {
            return SITE_AUTO_RUN;
        }
        if (staProtocol.stateType == DevpStateType.AUTO && staProtocol.getWorkNo() > 0) {
            return SITE_AUTO_ID;
        }
        if (staProtocol.stateType == DevpStateType.AUTO) {
            return SITE_AUTO;
        }
        if (staProtocol.stateType != DevpStateType.AUTO) {
            return SITE_UNAUTO;
        }
        return null;
    }
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -919,7 +919,7 @@
            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 目标库位排
            crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 目标库位列
            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 目标库位层
            crnCommand.setTraySize(locMast.getLocType1() == 2);
            crnCommand.setTraySize(locMast.getLocType1());
            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                News.error(""+mark+" - 1"+" - 16"+" - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
            } else {
@@ -1081,7 +1081,7 @@
                    crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 目标库位排
                    crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 目标库位列
                    crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 目标库位层
                    crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //库位类型
                    crnCommand.setTraySize(sourceSta.getLocType1());     //库位类型
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                        News.error(""+mark+" - 2"+" - 13"+" - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                    } else {
@@ -1280,7 +1280,7 @@
        crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 目标库位排
        crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 目标库位列
        crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 目标库位层
        crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //库位类型
        crnCommand.setTraySize(sourceSta.getLocType1());     //库位类型
        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
            News.error(""+mark+" - 3"+" - 4"+" - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
        } else {
@@ -1499,7 +1499,7 @@
                        && staProtocol.requestType == DevpRequestType.IN
                        && staProtocol.trayType == DevpTrayType.EMPTY
                        && staProtocol.isPakMk()
                        && (staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700)
                        && ((staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700) || staProtocol.getSiteId() == 1025)
                        ) {
                    News.warnNoLog(""+mark+" - 0"+" - 开始执行:空栈板初始化入库,叉车入库站放货");
@@ -1522,7 +1522,7 @@
                            // 更新站点信息 且 下发plc命令
                            staProtocol.setWorkNo(dto.getWorkNo());
                            staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            log.error("输送线下发6:"+dto.getWorkNo()+","+staProtocol.getSiteId());
src/main/java/com/zy/core/MainProcess.java
@@ -54,7 +54,7 @@
                    // 入库  ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档
                    mainService.generateStoreWrkFile(1); // 组托
//                    mainService.generateStoreWrkFile0(2); // WMS入库
                    Thread.sleep(500);
                    Thread.sleep(100);
                    // 出库  ===>>  堆垛机出库站到出库站
                    mainService.crnStnToOutStn(4);
src/main/java/com/zy/core/ServerBootstrap.java
@@ -49,7 +49,7 @@
        // 初始化下位机线程
        initThread();
        // 开始主流程进程
//        mainProcess.start();
        mainProcess.start();
        News.info("核心控制层已启动...............................................");
    }
@@ -86,12 +86,12 @@
    private void initThread(){
        // 初始化堆垛机线程
//        News.info("初始化堆垛机线程...................................................");
//        for (CrnSlave crn : slaveProperties.getCrn()) {
//            CrnThread crnThread = new SiemensCrnThread(crn);
//            new Thread((Runnable) crnThread).start();
//            SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
//        }
        News.info("初始化堆垛机线程...................................................");
        for (CrnSlave crn : slaveProperties.getCrn()) {
            CrnThread crnThread = new SiemensCrnThread(crn);
            new Thread((Runnable) crnThread).start();
            SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
        }
        // 初始化穿梭车线程
//        log.info("初始化RGV线程...................................................");
//        for (RgvSlave rgv : slaveProperties.getRgv()) {
src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -74,7 +74,7 @@
    // 任务确认 0:未确认 1:已确认
    private Short command = 0;
    private boolean traySize = false;
    private Short traySize = 0;
    public void setTaskMode(Short taskMode){
        this.taskMode = taskMode;
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -272,7 +272,7 @@
//        convertRow(command);
        command.setCrnNo(slave.getId());
//        short[] array = new short[10];
        short[] array = new short[10];
        short[] array = new short[11];
        array[0] = command.getAckFinish(); // 任务完成确认位
        array[1] = command.getTaskNo();  // 任务号
        array[2] = command.getTaskMode();  // 模式
@@ -283,12 +283,11 @@
        array[7] = command.getDestinationPosY(); // 目标位置列号
        array[8] = command.getDestinationPosZ(); // 目标位置层号
        array[9] = command.getCommand();
//        array[10] = 0;   //备用1
        array[10] = command.getTraySize();   //备用1
        boolean[] array2 = new boolean[1];
        array2[0] = command.isTraySize();
        OperateResult result = siemensNet.Write("DB100.0", array);
        OperateResult result2 = siemensNet.Write("DB100.22", array2);
        News.info("堆垛机命令下发[id:{}] >>>>> {}", slave.getId(), array);
        //堆垛机任务写入后,回读一次,看是否成功
@@ -297,11 +296,10 @@
        do {
            try{
                if(!result.IsSuccess || !result2.IsSuccess){
                if(!result.IsSuccess ){
                    News.error("写入堆垛机plc数据失败,重新下发任务  写入直接失败 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(command),writeCount1);
//                    MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
                    result = siemensNet.Write("DB100.0", array);
                    result2 = siemensNet.Write("DB100.22", array2);
                    Thread.sleep(100);
                    writeCount1++;
                    continue;
@@ -317,12 +315,12 @@
                    one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
                    one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
                    one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
                    one.setTraySize(siemensNet.getByteTransform().TransBool(resultRead.Content, 22));
                    one.setTraySize(siemensNet.getByteTransform().TransInt16(resultRead.Content, 20));
                    if (!command.getTaskNo().equals(one.getTaskNo()) || !command.getTaskMode().equals(one.getTaskMode())
                            || !command.getSourcePosX().equals(one.getSourcePosX()) || !command.getSourcePosY().equals(one.getSourcePosY())
                            || !command.getSourcePosZ().equals(one.getSourcePosZ()) || !command.getDestinationPosX().equals(one.getDestinationPosX())
                            || !command.getDestinationPosY().equals(one.getDestinationPosY()) || !command.getDestinationPosZ().equals(one.getDestinationPosZ())
                            || !command.isTraySize() == one.isTraySize()
                            || !command.getTraySize().equals(one.getTraySize())
                    ){
                        try{
                            News.error("堆垛机命令地址写入后回读失败==>不一致[id:{}] >>>>> 写入[{}],===>>回读[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
@@ -344,7 +342,6 @@
//                            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
                        News.error("写入堆垛机plc数据失败,重新下发任务  回读不一致 ===>> [id:{}],{},[写入次数:{}]", slave.getId(), JSON.toJSON(command),writeCount1);
                        result = siemensNet.Write("DB100.0", array);
                        result2 = siemensNet.Write("DB100.22", array2);
                        writeCount1++;
                        continue;
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -45,11 +45,19 @@
    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
    private short heartBeatVal = 1;
    private StaError1 staError1;
    public static boolean is = true;
//    public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
//
//    }};
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(140);add(141);
    add(1000);    add(1001);    add(1002);    add(1003);    add(1004);    add(1005);    add(1006);    add(1007);    add(1008);    add(1009);    add(1010);
    add(1011);    add(1012);    add(1013);    add(1014);    add(1015);    add(1016);    add(1017);    add(1018);    add(1019);    add(1020);    add(1021);
    add(1022);    add(1023);    add(1024);    add(1025);    add(1026);    add(1027);    add(1028);    add(1029);    add(1030);
//        add(200);add(201);add(202);
    }};
    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
       add(1400);
//        add(200);add(201);add(202);
    }};
@@ -91,6 +99,8 @@
        switch (slave.getId()) {
            case 1:
                return staNos1;
            case 2:
                return staNos2;
            default:
                throw new CoolException("服务器异常");
        }
@@ -135,31 +145,43 @@
    private void initSite() {
        count ++;
        ArrayList<Integer> staNos = getStaNo();
        if(count > 50) {
            // 站点编号
            for (Integer siteId : staNos) {
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setWorkNo(0);     // 工作号
                staProtocol.setStaNo((short) 0);   // 目标站
                staProtocol.setState((short) 0);  // 模式状态 0停机,=1手动,=2自动,=3故障
                staProtocol.setWorkIo((short) 0);
                staProtocol.setRequestIo((short) 0);
                staProtocol.setTrayIo((short) 0);
                staProtocol.setLocIo((short) 0);
                staProtocol.setBarcode("-");
                staProtocol.setWeightIo(0.0);
                staProtocol.setMode((short) 0);
        // 站点编号
        for (Integer siteId : staNos) {
            StaProtocol staProtocol = station.get(siteId);
            if (null == staProtocol) {
                staProtocol = new StaProtocol();
                staProtocol.setSiteId(siteId);
                station.put(siteId, staProtocol);
                if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
                    staProtocol.setPakMk(true);
                }
            }
            staProtocol.setWorkNo(0);     // 工作号
            staProtocol.setStaNo((short) 0);   // 目标站
            staProtocol.setState((short) 0);  // 模式状态 0停机,=1手动,=2自动,=3故障
            staProtocol.setWorkIo((short) 0);
            staProtocol.setRequestIo((short) 0);
            staProtocol.setTrayIo((short) 0);
            staProtocol.setLocIo((short) 0);
            staProtocol.setBarcode("-");
            staProtocol.setWeightIo(0.0);
            staProtocol.setMode((short) 0);
            if (!staProtocol.isPakMk() && staProtocol.workType == DevpWorkType.IDLE) {
                staProtocol.setPakMk(true);
            }
            count = 0;
        }
        count = 0;
    }
    public void initSta(){
        if (is){
            for (int i = 1000; i <= 1300; i++) {
                staNos1.add(i);
            }
            is = false;
        }
    }
@@ -295,7 +317,7 @@
        int index = staNos.indexOf(staProtocol.getSiteId());
        OperateResult write1 = siemensS7Net.Write("DB100." + index*66, staProtocol.getWorkNo());    // 工作号
        Thread.sleep(200);
        Thread.sleep(100);
        OperateResult write2 = siemensS7Net.Write("DB100." + (index*66+4), staProtocol.getStaNo());    // 目标站
        if(write1.IsSuccess && write2.IsSuccess){
            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100."+(index*66), (short) 6);
@@ -317,7 +339,9 @@
                    OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
                    short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
                    if (mk == 2){
                        OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), 0);
                        OperateResult write5 = siemensS7Net.Write("DB100." + index*66, 0);    // 工作号
                        OperateResult write6 = siemensS7Net.Write("DB100." + (index*66+4), (short) 0);    // 目标站
                        OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), (short) 0);
                        if (write4.IsSuccess){
                            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
                            News.info("SiemensDevp"+" - 5"+" - 输送线命令下发 [id:{}] >>>>> 命令下发: {}",  slave.getId(), JSON.toJSON(staProtocol));
src/main/resources/application.yml
@@ -8,7 +8,7 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://localhost:1433;databasename=gdykasrs
    url: jdbc:sqlserver://localhost:1433;databasename=jxgtasrs
    username: sa
    password: sa@123
  mvc:
@@ -34,20 +34,20 @@
  enable: false
wms:
  url: 127.0.0.1:9090/ykwms
  url: 127.0.0.1:8080/wms
# 下位机配置
wcs-slave:
  # 双深
  doubleDeep: true
  # 双深库位排号
  doubleLocs: 1,4,5,8,9,12,13,16
  doubleLocs: 1,4,5,8
  # 一个堆垛机负责的货架排数
  groupCount: 4
  # 堆垛机1
  crn[0]:
    id: 1
    ip: 10.10.10.10
    ip: 10.200.51.180
    port: 102
    rack: 0
    slot: 0
@@ -57,21 +57,21 @@
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 123
      row: 3
      bay: 1
      staNo: 1017
      row: 2
      bay: 47
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 118
      row: 2
      bay: 1
      staNo: 1029
      row: 3
      bay: 47
      lev: 1
  # 堆垛机2
  crn[1]:
    id: 2
    ip: 10.10.10.20
    ip: 10.200.51.189
    port: 102
    rack: 0
    slot: 0
@@ -81,201 +81,66 @@
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 131
      staNo: 1021
      row: 7
      bay: 1
      bay: 47
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 127
      staNo: 1030
      row: 6
      bay: 1
      lev: 1
  # 堆垛机3
  crn[2]:
    id: 3
    ip: 10.10.10.30
    port: 102
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
    offset: 2
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 135
      row: 10
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 139
      row: 11
      bay: 1
      lev: 1
  # 堆垛机4
  crn[3]:
    id: 4
    ip: 10.10.10.40
    port: 102
    rack: 0
    slot: 0
    # 偏移量,当堆垛机站点列号=1时,偏移量=2
    offset: 2
    demo: false
    # 堆垛机入库站点
    crnInStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 144
      row: 14
      bay: 1
      lev: 1
    # 堆垛机出库站点
    crnOutStn[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
      staNo: 148
      row: 15
      bay: 1
      bay: 47
      lev: 1
  # RGV穿梭车1
  rgv[0]:
    id: 1
    ip: 10.10.10.60
    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: 10.10.10.63
    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[2]:
    id: 3
    ip: 10.10.10.66
    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
  # 输送线1
  devp[0]:
    id: 1
    ip: 10.200.50.10
    ip: 10.200.51.47
    port: 102
    rack: 0
    slot: 0
    # 入库口1
    inSta[0]:
      staNo: 1001
      backSta: 1000
      led: ${wcs-slave.led[1].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 1001
      backSta: 1000
      led: ${wcs-slave.led[1].id}
    # 空板入库口1
    emptyInSta[1]:
      staNo: 1025
      backSta: 1000
      led: ${wcs-slave.led[1].id}
    # 出库口1
    outSta[0]:
      staNo: 124
      led: ${wcs-slave.led[0].id}
  devp[1]:
    id: 2
    ip: 10.200.51.10
    port: 102
    rack: 0
    slot: 0
    # 入库口1
    inSta[0]:
      staNo: 106
      barcode: ${wcs-slave.barcode[0].id}
      barcodeMat: ${wcs-slave.barcode[3].id}
      backSta: 105
      led: ${wcs-slave.led[1].id}
    # 空板入库口1
    emptyInSta[0]:
      staNo: 106
      barcode: ${wcs-slave.barcode[0].id}
      backSta: 105
      led: ${wcs-slave.led[1].id}
    # 拣料入库口1
    pickSta[0]:
      staNo: 159
      barcode: ${wcs-slave.barcode[2].id}
      led: ${wcs-slave.led[5].id}
      backSta: 160
    # 入库口1
    inSta[1]:
      staNo: 107
      barcode: ${wcs-slave.barcode[1].id}
      barcodeMat: ${wcs-slave.barcode[4].id}
      backSta: 108
      led: ${wcs-slave.led[2].id}
    # 空板入库口1
    emptyInSta[1]:
      staNo: 107
      barcode: ${wcs-slave.barcode[1].id}
      backSta: 108
      led: ${wcs-slave.led[2].id}
    inSta[2]:
      staNo: 159
      barcode: ${wcs-slave.barcode[2].id}
      barcodeMat: ${wcs-slave.barcode[5].id}
      backSta: 160
      led: ${wcs-slave.led[5].id}
#    # 拣料入库口1
#    pickSta[1]:
#      staNo: 107
#      barcode: ${wcs-slave.barcode[1].id}
#      led: ${wcs-slave.led[1].id}
#      backSta: 108
    # 出库口1
    outSta[0]:
      staNo: 100
@@ -287,36 +152,6 @@
      staNo: 156
      led: ${wcs-slave.led[4].id}
  # 条码扫描仪1
  barcode[0]:
    id: 1
    ip: 10.10.10.121
    port: 51236
  # 条码扫描仪2
  barcode[1]:
    id: 2
    ip: 10.10.10.122
    port: 51236
  # 条码扫描仪3
  barcode[2]:
    id: 3
    ip: 10.10.10.123
    port: 51236
  # 条码扫描仪1mat
  barcode[3]:
    id: 4
    ip: 10.10.10.121
    port: 51236
  # 条码扫描仪2mat
  barcode[4]:
    id: 5
    ip: 10.10.10.122
    port: 51236
  # 条码扫描仪3mat
  barcode[5]:
    id: 6
    ip: 10.10.10.123
    port: 51236
   # LED1
  led[0]:
    id: 1
src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
var baseUrl = "/ykwcs";
var baseUrl = "/gtwcs";
// 赋值
function setVal(el, val) {
src/main/webapp/static/js/console.map.js
@@ -1,5 +1,5 @@
mapInfo = {
    "mapName": "YKWCS",
    "mapName": "GTWCS",
    "rackCount": 4,
    "crnCount": 3,
    "stbCount": 13,
@@ -11,145 +11,73 @@
        "id": "rack16",
        "top": 167,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack15",
        "top": 188,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack14",
        "top": 236,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack13",
        "top": 257,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack12",
        "top": 280,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack11",
        "top": 301,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack10",
        "top": 349,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }, {
        "type": "rack",
        "id": "rack9",
        "top": 370,
        "left": 529,
        "width": 1280,
        "width": 1000,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack8",
        "top": 393,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack7",
        "top": 414,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack6",
        "top": 462,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack5",
        "top": 483,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack4",
        "top": 506,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack3",
        "top": 527,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack2",
        "top": 575,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
    }, {
        "type": "rack",
        "id": "rack1",
        "top": 596,
        "left": 529,
        "width": 1280,
        "height": 22,
        "minBayNo": 2,
        "maxBayNo": 56
        "minBayNo": 1,
        "maxBayNo": 47
    }],
    "rackDescs": [{
        "type": "rackDescs",
@@ -170,33 +98,17 @@
    }],
    "crns": [{
        "type": "track",
        "id": "lb_track4",
        "id": "lb_track1",
        "text": "",
        "top": 226,
        "left": 490,
        "width": 1300,
        "width": 1050,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-4",
        "text": "4",
        "id": "crn-1",
        "text": "1",
        "top": 213,
        "left": 490,
        "width": 93,
        "height": 22
    },{
        "type": "track",
        "id": "lb_track3",
        "text": "",
        "top": 338,
        "left": 490,
        "width": 1300,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-3",
        "text": "3",
        "top": 325,
        "left": 490,
        "width": 93,
        "height": 22
@@ -204,31 +116,15 @@
        "type": "track",
        "id": "lb_track2",
        "text": "",
        "top": 451,
        "top": 338,
        "left": 490,
        "width": 1300,
        "width": 1050,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-2",
        "text": "2",
        "top": 438,
        "left": 490,
        "width": 93,
        "height": 22
    },{
        "type": "track",
        "id": "lb_track1",
        "text": "",
        "top": 564,
        "left": 490,
        "width": 1300,
        "height": 2
    }, {
        "type": "crane",
        "id": "crn-1",
        "text": "1",
        "top": 553,
        "top": 325,
        "left": 490,
        "width": 93,
        "height": 22
@@ -244,530 +140,338 @@
        "floors": [{
            "type": "floor",
            "id": "page_floor1",
            "text": "1库",
            "text": "1F",
            "top": 4,
            "left": 22,
            "width": 1819,
            "height": 668,
            "stns": [{
                "type": "stn",
                "id": "site-148",
                "text": "148",
                "top": 190,
                "left": 468,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-147",
                "text": "147",
                "top": 190,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-146",
                "text": "146",
                "top": 190,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-149",
                "text": "149",
                "top": 190,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-150",
                "text": "150",
                "top": 169,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-151",
                "text": "151",
                "top": 148,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-153",
                "text": "153",
                "top": 148,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-152",
                "text": "152",
                "top": 148,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-154",
                "text": "154",
                "top": 127,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-155",
                "text": "155",
                "top": 106.5,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-157",
                "text": "157",
                "top": 106.5,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-156",
                "text": "156",
                "top": 106.5,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-158",
                "text": "158",
                "top": 85.5,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-159",
                "text": "159",
                "top": 64.5,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-160",
                "text": "160",
                "top": 64.5,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-161",
                "text": "161",
                "top": 64.5,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-145",
                "text": "145",
                "top": 211,
                "left": 344.5,
                "width": 60,
                "height": 26
            }, {
                "type": "stn",
                "id": "site-142",
                "text": "142",
                "id": "site-1045",
                "text": "1045",
                "top": 239,
                "left": 344.5,
                "width": 60,
                "left": 365,
                "width": 80,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-143",
                "text": "143",
                "id": "site-1043",
                "text": "1043",
                "top": 239,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-144",
                "text": "144",
                "top": 239,
                "left": 468,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-141",
                "text": "141",
                "top": 260,
                "left": 344.5,
                "width": 60,
                "height": 42
            }, {
                "type": "stn",
                "id": "site-139",
                "text": "139",
                "top": 304,
                "left": 406,
                "width": 120,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-138",
                "text": "138",
                "top": 304,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-134",
                "text": "134",
                "top": 352,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-135",
                "text": "135",
                "top": 352,
                "left": 406,
                "width": 120,
                "left": 448,
                "width": 80,
                "height": 19
            },  {
                "type": "stn",
                "id": "site-137",
                "text": "137",
                "top": 324.5,
                "left": 344.5,
                "width": 60,
                "height": 25.5
            }, {
                "type": "stn",
                "id": "site-133",
                "text": "133",
                "top": 373,
                "left": 344.5,
                "width": 60,
                "height": 42.5
            }, {
                "type": "stn",
                "id": "site-130",
                "text": "130",
                "top": 417,
                "left": 344.5,
                "width": 60,
                "id": "site-1046",
                "text": "1046",
                "top": 352,
                "left": 365,
                "width": 80,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-131",
                "text": "131",
                "top": 417,
                "left": 406,
                "width": 120,
                "id": "site-1044",
                "text": "1044",
                "top": 352,
                "left": 448,
                "width": 80,
                "height": 19
            },{
                    "type": "track",
                    "id": "lb_track6",
                    "text": "",
                    "top": 180,
                    "left": 350,
                    "width": 2,
                    "height": 500
            },{
                    "type": "track",
                    "id": "lb_track7",
                    "text": "",
                    "top": 180,
                    "left": 320,
                    "width": 2,
                    "height": 500
                }, {
                    "type": "stn",
                    "id": "site-1047",
                    "text": "1047",
                    "top": 352,
                    "left": 282,
                    "width": 80,
                    "height": 19
                },{
                "type": "stn",
                "id": "site-1040",
                "text": "1040",
                "top": 239,
                "left": 118,
                "width": 80,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-129",
                "text": "129",
                "top": 438,
                "left": 344.5,
                "width": 60,
                "height": 25
            }, {
                "type": "stn",
                "id": "site-126",
                "text": "126",
                "top": 464.5,
                "left": 344.5,
                "width": 60,
                "id": "site-1041",
                "text": "1041",
                "top": 239,
                "left": 200,
                "width": 80,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-127",
                "text": "127",
                "top": 464.5,
                "left": 406,
                "width": 120,
                "height": 19
            },  {
                "type": "stn",
                "id": "site-125",
                "text": "125",
                "top": 485,
                "left": 344.5,
                "width": 60,
                "height": 42.5
            }, {
                "type": "stn",
                "id": "site-124",
                "text": "124",
                "top": 529,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-121",
                "text": "121",
                "top": 529,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-122",
                "text": "122",
                "top": 529,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-123",
                "text": "123",
                "top": 529,
                "left": 468,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-120",
                "text": "120",
                "top": 550,
                "left": 344.5,
                "width": 60,
                "height": 25
            }, {
                "type": "stn",
                "id": "site-119",
                "text": "119",
                "top": 464.5,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-116",
                "text": "116",
                "top": 577,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-117",
                "text": "117",
                "top": 577,
                "left": 406,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-118",
                "text": "118",
                "top": 577,
                "left": 468,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-115",
                "text": "115",
                "top": 598,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-114",
                "text": "114",
                "top": 620,
                "left": 344.5,
                "width": 60,
                "height": 19
            }, {
                "type": "stn",
                "id": "site-113",
                "text": "113",
                "top": 620,
                "left": 283,
                "width": 60,
                "height": 19
            }, {
                "type": "track",
                "id": "lb_trCart21",
                "text": "",
                "top": 65,
                "left": 226,
                "width": 6,
                "height": 742
            }, {
                "type": "track",
                "id": "lb_trCart22",
                "text": "",
                "top": 65,
                "left": 270,
                "width": 6,
                "height": 742
            },{
                "type": "stn",
                "id": "site-3",
                "text": "3",
                "top": -20,
                "left": 220,
                "width": 60,
                "id": "site-1042",
                "text": "1042",
                "top": 400,
                "left": 200,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-2",
                "text": "2",
                "top": -20,
                "left": 220,
                "width": 60,
                "id": "site-1017",
                "text": "1017",
                "top": 189,
                "left": 1510,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-1",
                "text": "1",
                "top": -20,
                "left": 220,
                "width": 60,
                "id": "site-1016",
                "text": "1016",
                "top": 189,
                "left": 1592,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-202",
                "text": "202",
                "top": 642,
                "left": 283,
                "width": 184,
                "id": "site-1015",
                "text": "1015",
                "top": 189,
                "left": 1674,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-999",
                "text": "备用PGV、RGV维修区",
                "top": 642,
                "left": 283,
                "width": 184,
                "id": "site-1014",
                "text": "1014",
                "top": 209,
                "left": 1674,
                "width": 80,
                "height": 42
            },{
                "type": "stn",
                "id": "site-1013",
                "text": "1013",
                "top": 253,
                "left": 1674,
                "width": 80,
                "height": 45
            },{
                "type": "stn",
                "id": "site-1029",
                "text": "1029",
                "top": 239,
                "left": 1510,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-110",
                "text": "110",
                "top": 663,
                "left": 406,
                "width": 60,
                "id": "site-1018",
                "text": "1018",
                "top": 239,
                "left": 1592,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-111",
                "text": "111",
                "top": 663,
                "left": 344.5,
                "width": 60,
                "id": "site-1019",
                "text": "1019",
                "top": 259,
                "left": 1592,
                "width": 80,
                "height": 40
            },{
                "type": "stn",
                "id": "site-1030",
                "text": "1300",
                "top": 300,
                "left": 1510,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-112",
                "text": "112",
                "top": 663,
                "left": 283,
                "width": 60,
                "id": "site-1020",
                "text": "1200",
                "top": 300,
                "left": 1592,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-109",
                "text": "109",
                "top": 684,
                "left": 406,
                "width": 60,
                "id": "site-1012",
                "text": "1012",
                "top": 300,
                "left": 1674,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-108",
                "text": "108",
                "top": 705,
                "left": 406,
                "width": 60,
                "id": "site-1011",
                "text": "1011",
                "top": 320,
                "left": 1674,
                "width": 80,
                "height": 29
            },{
                "type": "stn",
                "id": "site-1023",
                "text": "1023",
                "top": 300,
                "left": 1756,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-107",
                "text": "107",
                "top": 705,
                "left": 283,
                "width": 122,
                "id": "site-1024",
                "text": "1024",
                "top": 300,
                "left": 1838,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-105",
                "text": "105",
                "top": 727,
                "left": 406,
                "width": 60,
                "id": "site-1026",
                "text": "1026",
                "top": 320,
                "left": 1838,
                "width": 80,
                "height": 29
            },{
                "type": "stn",
                "id": "site-1027",
                "text": "1027",
                "top": 350,
                "left": 1838,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-106",
                "text": "106",
                "top": 727,
                "left": 283,
                "width": 122,
                "id": "site-1028",
                "text": "1028",
                "top": 370,
                "left": 1838,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-104",
                "text": "104",
                "top": 749,
                "left": 406,
                "width": 60,
                "id": "site-1021",
                "text": "1021",
                "top": 350,
                "left": 1510,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-103",
                "text": "103",
                "top": 771,
                "left": 406,
                "width": 60,
                "id": "site-1022",
                "text": "1022",
                "top": 350,
                "left": 1592,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-102",
                "text": "102",
                "top": 771,
                "left": 344.5,
                "width": 60,
                "id": "site-1010",
                "text": "1010",
                "top": 350,
                "left": 1674,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-101",
                "text": "101",
                "top": 771,
                "left": 283,
                "width": 60,
                "id": "site-1009",
                "text": "1009",
                "top": 370,
                "left": 1674,
                "width": 80,
                "height": 19
            }, {
            },{
                "type": "stn",
                "id": "site-100",
                "text": "100",
                "top": 792,
                "left": 283,
                "width": 184,
                "id": "site-1008",
                "text": "1008",
                "top": 390,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1007",
                "text": "1007",
                "top": 410,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1006",
                "text": "1006",
                "top": 430,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1005",
                "text": "1005",
                "top": 450,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1002",
                "text": "1002",
                "top": 470,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1001",
                "text": "1001",
                "top": 470,
                "left": 1756,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1000",
                "text": "1000",
                "top": 470,
                "left": 1838,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1004",
                "text": "1004",
                "top": 490,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1003",
                "text": "1003",
                "top": 510,
                "left": 1674,
                "width": 80,
                "height": 19
            },{
                "type": "stn",
                "id": "site-1025",
                "text": "1025",
                "top": 350,
                "left": 1756,
                "width": 80,
                "height": 19
            }],
            "barcode":[