dubin
13 小时以前 df407d0f867f5063895be21fde14963b0ae4776e
电视机显示出库运行状态;空托盘入库
6个文件已修改
274 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MonitorController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/MatDto.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 153 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -1,5 +1,6 @@
package com.zy.asrs.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.common.R;
@@ -7,8 +8,10 @@
import com.zy.asrs.domain.dto.WorkChartAxis;
import com.zy.asrs.domain.vo.LocChartPie;
import com.zy.asrs.entity.BasCrnError;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.service.LocMastService;
import com.zy.common.model.annotations.RateLimit;
import com.zy.common.service.CommonService;
import com.zy.core.CrnThread;
@@ -45,6 +48,8 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private LocMastService locMastService;
    /**
     * 获取当前时间
@@ -212,6 +217,7 @@
        List<Map<String, Object>> pie = new ArrayList<>();
        LocChartPie locUseRate = reportQueryMapper.getLocUseRate();
        int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "D"));
        if(locUseRate!=null) {
            Map<String, Object> map = new HashMap<>();
            map.put("name", "在库");
@@ -229,8 +235,8 @@
            pie.add(map2);
            Map<String, Object> map3 = new HashMap<>();
            map3.put("name", "禁用");
            map3.put("value", locUseRate.getXqty());
            map3.put("name", "空板");
            map3.put("value", i);
            pie.add(map3);
        }
@@ -244,9 +250,9 @@
        return R.ok(
                Cools.add("pie", pie)
                .add("stockCunt", locUseRate.getFqty())
                .add("stockCunt", locUseRate.getFqty() - i)
                .add("emptyCount", locUseRate.getOqty())
                .add("noneCount", locUseRate.getXqty())
                .add("noneCount", i)
                .add("total", total)
                .add("used", used)
                .add("usedPr", usedPr)
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -171,11 +171,46 @@
                        News.error("" + mark + " - 4" + " - 工作档中已存在该站状态为( 3.开始执行入库任务 )的数据,工作号={}", wrkMast.getWrkNo());
                        // led 异常显示
                        if (ledThread != null) {
                            String errorMsg = "工作档已存在该条码号===>>" + barcode;
                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
//                        if (ledThread != null) {
//                            String errorMsg = "工作档已存在该条码号===>>" + barcode;
//                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
//                        }
                        LiftProtocol liftProtocol = devpThread.getLiftStatus();
                        if (liftProtocol == null) {
                            continue;
                        }
                        continue;
                        if (liftProtocol.getMode() != 1) {
                            continue;
                        }
                        if (liftProtocol.getDeviceStatus() != 0) {
                            continue;
                        }
                        if (liftProtocol.getWorkNo() > 0) {
                            continue;
                        }
                        Integer staNo = Utils.getStaNoByLocNo(wrkMast.getLocNo());
                        LiftCommand command = new LiftCommand();
                        command.setWorkNo(wrkMast.getWrkNo());
                        command.setSourceStaNo(inSta.getStaNo());
                        command.setTargetStaNo(staNo);
                        barcodeThread.setBarcode("");
                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, command));
                        if (result) {
                            News.info("WCS--->PLC下发任务成功:{}",command.toString());
                        }
                        if (!result) {
                            throw new CoolException("更新plc站点信息失败");
                        }
                        wrkMast.setWrkSts(3L);// 3.设备执行中
                        wrkMast.setCrnStrTime(new Date());
                        wrkMastService.updateById(wrkMast);
                        break;
                    }
                    LiftProtocol liftProtocol = devpThread.getLiftStatus();
@@ -458,6 +493,7 @@
        //检测出库站是否可出
        StaProtocol staProtocol = devpThread.getStation().get(100);
        StaProtocol staProtocol101 = devpThread.getStation().get(101);
        if (staProtocol == null) {
            return;
        }
@@ -467,6 +503,18 @@
        }
        if (staProtocol.isLoading()) {
            return;
        }
        if (staProtocol101 == null){
            return;
        }
        if (staProtocol101.isLoading()){
            return;
        }
        if (!staProtocol101.isAutoing()){
            return;
        }
@@ -821,7 +869,7 @@
                                    , wrkDetl.getKpCstmrName()
                                    , wrkDetl.getOrderNo()
                                    , wrkDetl.getBatch()
//                                , wrkDetl.getCstateid$()
                                    , locNo
                            ));
                        }
                    } else {
@@ -855,7 +903,7 @@
                                        , wrkDetlLog.getKpCstmrName()
                                        , wrkDetlLog.getOrderNo()
                                        , wrkDetlLog.getBatch()
//                                    , wrkDetlLog.getCstateid$()
                                        , locNo
                                ));
                            }
                        }
@@ -925,6 +973,16 @@
                // 获取叉车站点
                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                StaProtocol staProtocol1 = devpThread.getStation().get(122);
                WrkMast wrkMastOut = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 12).eq("sta_no",staNo));
                WrkMast wrkMastIn = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 3).eq("source_sta_no", staNo));
                if (!Cools.isEmpty(wrkMastOut)){
                    reset = false;
                    continue;
                }
                if (!Cools.isEmpty(wrkMastIn)){
                    reset = false;
                    continue;
                }
                if (staProtocol == null) {
                    continue;
                }
@@ -1036,7 +1094,8 @@
                            wrkDetl.getSupp(),
                            wrkDetl.getKpCstmrName(),
                            wrkDetl.getOrderNo(),
                            wrkDetl.getBatch()
                            wrkDetl.getBatch(),
                            locNo
                    ));
                }
            }
@@ -1090,4 +1149,23 @@
            }
        }
    }
    public void deviceRunning(int mark) {
        for (LedSlave led : slaveProperties.getLed()){
            // 命令集合
            List<LedCommand> commands = new ArrayList<>();
            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 12));
            if (Cools.isEmpty(wrkMast)){
                return;
            }
            // 获取LED线程
            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
            if (ledThread == null) {
                News.error("未找到LED线程:[id:{}]", led.getId());
                continue;
            }
            MessageQueue.offer(SlaveType.Led, led.getId(), new Task(5, "设备出库任务运行中"));
        }
    }
}
src/main/java/com/zy/common/model/MatDto.java
@@ -52,12 +52,13 @@
    //批号
    private String batch;
//    private String cstateid;
    // 库位编号
    private String locNo;
    public MatDto() {
    }
    public MatDto(String matNo, String maktx, Double anfme, Double weight, Double total, Double totalWeight, String specs, String sku, String barcode, String model, String supp, String kpCstmrName, String orderNo, String batch) {
    public MatDto(String matNo, String maktx, Double anfme, Double weight, Double total, Double totalWeight, String specs, String sku, String barcode, String model, String supp, String kpCstmrName, String orderNo, String batch, String locNo) {
        this.matnr = matNo;
        this.maktx = maktx;
        this.maknx = maktx;
@@ -73,6 +74,6 @@
        this.kpCstmrName = kpCstmrName;
        this.orderNo = orderNo;
        this.batch = batch;
//        this.cstateid = cstateid;
        this.locNo = locNo;
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -50,7 +50,7 @@
                    mainService.executeOutTask();
                    // 检测任务完成
                    mainService.deviceFinished();
//                    // 堆垛机异常信息记录
                    // 堆垛机异常信息记录
//                    mainService.recCrnErr(3);
                    // 出库  ===>> 工作档信息写入led显示器
                    mainService.ledExecute(4);
@@ -58,6 +58,8 @@
                    mainService.ledExecuteIn(6);
                    // 其他  ===>> LED显示器复位,显示默认信息
                    mainService.ledReset(5);
                    // 出库 ===>> 显示运行状态
                    mainService.deviceRunning(7);
                } catch (Exception e) {
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://127.0.0.1:52840;databasename=shhtgcasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=shhtgcasrs
    username: sa
    password: sa@123
  mvc:
@@ -89,7 +89,7 @@
  # LED1
  led[0]:
    id: 1
    ip: 172.168.61.201
    ip: 127.0.0.1
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 101
src/main/webapp/static/js/console.map.js
@@ -1,141 +1,32 @@
mapInfo =
    {"mapName":"YTFLWCS","rackCount":16,"crnCount":4,"stbCount":16,"hpPosition":0,"minBayNo":2,"floors":1,
        "racks":[
            // {"type":"rack","id":"rack23","top":558,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack26","top":631,"left":642,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack25","top":612,"left":642,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack24","top":577,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack19","top":469,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack22","top":539,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack21","top":519,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack20","top":488,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack4","top":122,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":61},
            // {"type":"rack","id":"rack5","top":141,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":61},
            // {"type":"rack","id":"rack111","top":49,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":61},
            // {"type":"rack","id":"rack15","top":376,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack18","top":449,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack17","top":430,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack16","top":396,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack11","top":287,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack14","top":357,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack13","top":337,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack12","top":307,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack7","top":193,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack10","top":268,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack9","top":249,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack8","top":212,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31},
            // {"type":"rack","id":"rack2","top":83,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":61},
            // {"type":"rack","id":"rack3","top":103,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":61},
            // {"type":"rack","id":"rack6","top":174,"left":641,"width":667,"height":18,"minBayNo":2,"maxBayNo":31}
            ],
        "crns":[
            // {"type":"track","id":"lb_track8","text":"","top":76,"left":1327,"width":1,"height":93},
            // {"type":"track","id":"lb_track7","text":"","top":75,"left":596,"width":733,"height":1},
            // {"type":"track","id":"lb_track1","text":"","top":604,"left":593,"width":733,"height":1},
            // {"type":"track","id":"lb_track2","text":"","top":513,"left":595,"width":733,"height":1},
            // {"type":"crane","id":"crn-5","text":"5","top":507,"left":731,"width":67,"height":13},
            // {"type":"crane","id":"crn-6","text":"6","top":597,"left":731,"width":67,"height":13},
            // {"type":"crane","id":"crn-1","text":"1","top":162,"left":730,"width":67,"height":13},
            // {"type":"track","id":"lb_track3","text":"","top":424,"left":593,"width":733,"height":1},
            // {"type":"crane","id":"crn-2","text":"2","top":234,"left":741,"width":67,"height":13},
            // {"type":"track","id":"lb_track4","text":"","top":333,"left":593,"width":733,"height":1},
            // {"type":"crane","id":"crn-3","text":"3","top":325,"left":730,"width":67,"height":13},
            // {"type":"track","id":"lb_track5","text":"","top":241,"left":595,"width":733,"height":1},
            // {"type":"track","id":"lb_track6","text":"","top":168,"left":596,"width":733,"height":1},
            // {"type":"crane","id":"crn-4","text":"4","top":417,"left":730,"width":67,"height":13}
        ],
        "areas":[{"type":"Control_floor","id":"tabControl_floor1","text":"楼层","top":41,"left":80,"width":1269,"height":781,
            "floors":[{"type":"floor","id":"page_floor1","text":"1F","top":4,"left":22,"width":1243,"height":773,
                "stns":[
                    // {"type":"stn","id":"site-1064","text":"1064","top":720,"left":769,"width":59,"height":20},
                    // {"type":"stn","id":"site-2003","text":"2003","top":456,"left":309,"width":37,"height":20},
                    // {"type":"stn","id":"site-2002","text":"2002","top":455,"left":221,"width":37,"height":20},
                    // {"type":"stn","id":"site-1004","text":"1004","top":334,"left":296,"width":37,"height":20},
                    // {"type":"stn","id":"site-1002","text":"1002","top":291,"left":296,"width":37,"height":20},
                    // {"type":"stn","id":"site-1006","text":"1006","top":312,"left":296,"width":37,"height":20},
                    // {"type":"stn","id":"site-1007","text":"1007","top":312,"left":258,"width":37,"height":20},
                    // {"type":"stn","id":"site-1003","text":"1003","top":312,"left":220,"width":37,"height":20},
                    // {"type":"stn","id":"site-1075","text":"1075","top":723,"left":406,"width":71,"height":20},
                    // {"type":"stn","id":"site-1076","text":"1076","top":701,"left":406,"width":71,"height":20},
                    // {"type":"stn","id":"site-1077","text":"1077","top":679,"left":406,"width":71,"height":20},
                    // {"type":"stn","id":"site-1078","text":"1078","top":657,"left":406,"width":71,"height":20},
                    // {"type":"stn","id":"site-1079","text":"1079","top":598,"left":406,"width":71,"height":57},
                    // {"type":"stn","id":"site-1047","text":"1047","top":578,"left":405,"width":93,"height":17},
                    // {"type":"stn","id":"site-1081","text":"1081","top":417,"left":405,"width":71,"height":158},
                    // {"type":"stn","id":"site-1034","text":"1034","top":398,"left":405,"width":95,"height":17},
                    // {"type":"stn","id":"site-1083","text":"1083","top":320,"left":405,"width":71,"height":75},
                    // {"type":"stn","id":"site-1084","text":"1084","top":198,"left":405,"width":71,"height":121},
                    // {"type":"stn","id":"site-1059","text":"1059","top":700,"left":480,"width":161,"height":20},
                    // {"type":"stn","id":"site-1018","text":"1018","top":178,"left":405,"width":95,"height":17},
                    // {"type":"stn","id":"site-1086","text":"1086","top":146,"left":406,"width":71,"height":30},
                    // {"type":"stn","id":"site-1087","text":"1087","top":125,"left":406,"width":71,"height":19},
                    // {"type":"stn","id":"site-1088","text":"1088","top":105,"left":406,"width":71,"height":19},
                    // {"type":"stn","id":"site-1074","text":"1074","top":678,"left":1141,"width":59,"height":20},
                    // {"type":"stn","id":"site-1073","text":"1073","top":657,"left":1141,"width":59,"height":20},
                    // {"type":"stn","id":"site-1071","text":"1071","top":678,"left":1017,"width":59,"height":20},
                    // {"type":"stn","id":"site-1072","text":"1072","top":657,"left":1079,"width":59,"height":20},
                    // {"type":"stn","id":"site-1070","text":"1070","top":657,"left":1017,"width":59,"height":20},
                    {"type":"stn","id":"site-100","text":"100","top":657,"left":1017,"width":59,"height":20},
                    {"type":"stn","id":"site-101","text":"101","top":657,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-103","text":"103","top":630,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-105","text":"105","top":603,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-107","text":"107","top":576,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-109","text":"109","top":549,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-111","text":"111","top":522,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-113","text":"113","top":495,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-115","text":"115","top":468,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-117","text":"117","top":441,"left":955,"width":59,"height":20},
                    {"type":"stn","id":"site-119","text":"119","top":414,"left":955,"width":59,"height":20},
                    // {"type":"stn","id":"site-1068","text":"1068","top":678,"left":893,"width":59,"height":20},
                    {"type":"stn","id":"site-122","text":"122","top":657,"left":893,"width":59,"height":20},
                    {"type":"stn","id":"site-102","text":"102","top":657,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-104","text":"104","top":630,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-106","text":"106","top":603,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-108","text":"108","top":576,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-110","text":"110","top":549,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-112","text":"112","top":522,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-114","text":"114","top":495,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-116","text":"116","top":468,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-118","text":"118","top":441,"left":831,"width":59,"height":20},
                    {"type":"stn","id":"site-120","text":"120","top":414,"left":831,"width":59,"height":20},
                    // {"type":"stn","id":"site-1065","text":"1065","top":700,"left":707,"width":59,"height":20},
                    // {"type":"stn","id":"site-1063","text":"1063","top":700,"left":769,"width":59,"height":20},
                    // {"type":"stn","id":"site-1062","text":"1062","top":678,"left":769,"width":59,"height":20},
                    // {"type":"stn","id":"site-1061","text":"1061","top":657,"left":769,"width":59,"height":20},
                    // {"type":"stn","id":"site-1058","text":"1058","top":721,"left":645,"width":59,"height":20},
                    // {"type":"stn","id":"site-1057","text":"1057","top":700,"left":645,"width":59,"height":20},
                    // {"type":"stn","id":"site-1056","text":"1056","top":678,"left":645,"width":59,"height":20},
                    // {"type":"stn","id":"site-1060","text":"1060","top":657,"left":707,"width":59,"height":20},
                    // {"type":"stn","id":"site-1055","text":"1055","top":657,"left":645,"width":59,"height":20},
                    // {"type":"stn","id":"site-1054","text":"1054","top":657,"left":574,"width":67,"height":20},
                    // {"type":"stn","id":"site-1053","text":"1053","top":657,"left":479,"width":91,"height":20},
                    // {"type":"stn","id":"site-1052","text":"1052","top":614,"left":573,"width":67,"height":17},
                    // {"type":"stn","id":"site-1051","text":"1051","top":597,"left":502,"width":67,"height":58},
                    // {"type":"stn","id":"site-1049","text":"1049","top":577,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1048","text":"1048","top":578,"left":501,"width":67,"height":17},
                    // {"type":"stn","id":"site-1045","text":"1045","top":523,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1044","text":"1044","top":506,"left":501,"width":67,"height":69},
                    // {"type":"stn","id":"site-1042","text":"1042","top":488,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1041","text":"1041","top":466,"left":501,"width":67,"height":39},
                    // {"type":"stn","id":"site-1039","text":"1039","top":433,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1038","text":"1038","top":418,"left":501,"width":67,"height":45},
                    // {"type":"stn","id":"site-1036","text":"1036","top":397,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1035","text":"1035","top":398,"left":501,"width":67,"height":17},
                    // {"type":"stn","id":"site-1032","text":"1032","top":342,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1031","text":"1031","top":322,"left":501,"width":67,"height":73},
                    // {"type":"stn","id":"site-1029","text":"1029","top":308,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1028","text":"1028","top":280,"left":501,"width":67,"height":40},
                    // {"type":"stn","id":"site-1026","text":"1026","top":250,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1025","text":"1025","top":248,"left":501,"width":67,"height":29},
                    // {"type":"stn","id":"site-1023","text":"1023","top":212,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1022","text":"1022","top":198,"left":501,"width":67,"height":48},
                    // {"type":"stn","id":"site-1020","text":"1020","top":177,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1019","text":"1019","top":178,"left":502,"width":67,"height":17},
                    // {"type":"stn","id":"site-1016","text":"1016","top":142,"left":571,"width":67,"height":17},
                    // {"type":"stn","id":"site-1015","text":"1015","top":129,"left":502,"width":67,"height":46},
                    // {"type":"stn","id":"site-1012","text":"1012","top":105,"left":502,"width":67,"height":23},
                    // {"type":"stn","id":"site-1008","text":"1008","top":82,"left":337,"width":67,"height":21},
                    // {"type":"stn","id":"site-1009","text":"1009","top":82,"left":406,"width":95,"height":21},
                    // {"type":"stn","id":"site-1010","text":"1010","top":82,"left":502,"width":67,"height":21},
                    // {"type":"stn","id":"site-1013","text":"1013","top":105,"left":571,"width":67,"height":17}
                    {"type":"stn","id":"site-100","text":"100","top":470,"left":840,"width":59,"height":20},
                    {"type":"stn","id":"site-101","text":"101","top":470,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-103","text":"103","top":440,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-105","text":"105","top":410,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-107","text":"107","top":380,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-109","text":"109","top":350,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-111","text":"111","top":320,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-113","text":"113","top":290,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-115","text":"115","top":260,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-117","text":"117","top":230,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-119","text":"119","top":200,"left":760,"width":59,"height":20},
                    {"type":"stn","id":"site-122","text":"122","top":470,"left":680,"width":59,"height":20},
                    {"type":"stn","id":"site-102","text":"102","top":470,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-104","text":"104","top":440,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-106","text":"106","top":410,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-108","text":"108","top":380,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-110","text":"110","top":350,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-112","text":"112","top":320,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-114","text":"114","top":290,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-116","text":"116","top":260,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-118","text":"118","top":230,"left":600,"width":59,"height":20},
                    {"type":"stn","id":"site-120","text":"120","top":200,"left":600,"width":59,"height":20},
                ]}]}]}