From 7354b5dd039dc7053f3a17f1d3a695f0628cd8da Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 18 十月 2024 08:54:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java  |    8 
 src/main/webapp/static/js/console.js                    |    4 
 src/main/webapp/static/css/render.css                   |    2 
 src/main/webapp/static/js/console.map.js                |  297 ++++++++++++++++++++++++++
 src/main/java/com/zy/common/model/LocTypeDto.java       |   10 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  128 ++++++++---
 src/main/resources/application.yml                      |  179 +++++++++++++++
 7 files changed, 561 insertions(+), 67 deletions(-)

diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index 38fb7d2..407062d 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -31,14 +31,10 @@
     }
 
     public LocTypeDto(StaProtocol staProtocol) {
-//        if (staProtocol.isHigh() == staProtocol.isLow()) {
-//            throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
-//        }
-        if (staProtocol.getSiteId() == 106 || staProtocol.getSiteId() == 159){
-            this.locType1 = 2; // 楂樺簱浣�
-        }else {
-            this.locType1 = 1; // 浣庡簱浣�
+        if (staProtocol.locType.id.shortValue()!=1 && staProtocol.locType.id.shortValue()!=2 && staProtocol.locType.id.shortValue()!=3) {
+            throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
         }
+        this.locType1 = staProtocol.locType.id.shortValue();
     }
 
     /**
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index ede2985..15ce347 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -185,8 +185,8 @@
 
                 // 澶嶄綅淇″彿
                 if (!Cools.isEmpty(crnProtocol.getStatusType()) && crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
-                    News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙颁俊鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
-                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿");
+//                    News.error("---绗竴姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}, 杞借揣鍙颁俊鍙�:{}]==>> 鐘舵�佷负10锛岀瓑寰呯‘璁わ紒锛�",
+//                            slave.getId(),crnProtocol.getTaskNo(), crnProtocol.getLoaded()==1 ? "鏈夌墿" : "鏃犵墿");
                     if (resetFlag) {
                         if(crnProtocol.getTaskNo()==9999){
                             backHpFlag = false;
@@ -196,8 +196,8 @@
                         crnCommand.setAckFinish((short)1);
                         if (write(crnCommand)) {
                             resetFlag = false;
-                            News.error("---绗簩姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 澶嶄綅resetFlag鏍囪鎴愬姛{}锛侊紒",
-                                    slave.getId(), wrkNo, resetFlag);
+//                            News.error("---绗簩姝ャ�乕鍫嗗灈鏈哄彿锛歿}, 宸ヤ綔鍙凤細{}]==>> 澶嶄綅resetFlag鏍囪鎴愬姛{}锛侊紒",
+//                                    slave.getId(), wrkNo, resetFlag);
                         }
                     }
                 }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 9edf634..d29590c 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -53,10 +53,13 @@
     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(2000); add(2001); add(2002); add(2003); add(2004);add(2005); add(2006); add(2007);
 //        add(200);add(201);add(202);
     }};
     public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
-       add(1400);
+       add(1040);add(1041);add(1042);add(1043);add(1044);add(1045);add(1046);add(1047);
+       add(2010);add(2011);add(2012);add(2013);add(2014);add(2015);add(2016);add(2017);
+       add(3010);add(3011);add(3012);add(3013);add(3014);add(3015);add(3016);add(3017);
 
 //        add(200);add(201);add(202);
     }};
@@ -125,7 +128,7 @@
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
                         writeD((StaProtocol)task.getData(),1);
-                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+//                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
                         break;
                     default:
                         break;
@@ -307,55 +310,102 @@
     }
 
     private void writeD(StaProtocol staProtocol,Integer count)throws InterruptedException{
+
+        boolean reset = true;
         if (null == staProtocol) {
             return;
+        }
+        staProtocol = staProtocol.clone();
+        Integer oriWrkNo = staProtocol.getWorkNo();
+        short oriStaNo = staProtocol.getStaNo();
+        ArrayList<Integer> staNos = getStaNo();
+        int index = staNos.indexOf(staProtocol.getSiteId());
+
+
+        if(writeWrk(staProtocol,1)){
+
+            int whileCount = 0;
+            OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+            if (write3.IsSuccess){
+                News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+1+"]");
+                Thread.sleep(100);
+                do {
+                    OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
+                    short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
+                    if (mk == 2){
+                        OperateResult write5 = siemensS7Net.Write("DB100." + index*66, 0);    // 宸ヤ綔鍙�
+                        Thread.sleep(100);
+                        OperateResult write6 = siemensS7Net.Write("DB100." + (index*66+4), (short) 0);    // 鐩爣绔�
+                        Thread.sleep(100);
+                        OperateResult write4 = siemensS7Net.Write("DB100." + (index*66+6), (short) 0);
+                        reset = false;
+                        if (write4.IsSuccess && write5.IsSuccess && write6.IsSuccess){
+                            News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+                            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100."+(index*66), (short) 8);
+                            Integer wrkNo1 = siemensS7Net.getByteTransform().TransInt32(result1.Content, 0);
+                            short staNo1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 4);
+                            short mk1 = siemensS7Net.getByteTransform().TransInt16(result1.Content, 6);
+                            if (wrkNo1 != 0 || staNo1 !=0 || mk1 !=0){
+                                whileCount++;
+                                News.info("澶嶄綅澶辫触,杈撻�佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"0,0,0"+"]");
+                            }else {
+                                News.info("杈撻�佺嚎澶嶄綅瀹屾垚");
+                                break;
+                            }
+
+                        }
+                    }else if (reset && mk == 0 ){
+                        OperateResult write7 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
+                        News.info("鍥炶1澶辫触锛岃緭閫佺嚎鍛戒护涓嬪彂[id:"+slave.getId()+"] >>>>>"+"["+"1"+"]");
+                        Thread.sleep(100);
+                        whileCount++;
+                    }else {
+                        whileCount++;
+                    }
+                }while (whileCount <10);
+            }
+        }else {
+            log.error("杈撻�佸懡浠や笅鍙戝け璐�"+JSON.toJSONString(staProtocol));
+        }
+
+
+
+    }
+
+    private boolean writeWrk(StaProtocol staProtocol,Integer count)throws InterruptedException {
+
+        if (null == staProtocol) {
+            return false;
         }
         Integer oriWrkNo = staProtocol.getWorkNo();
         short oriStaNo = staProtocol.getStaNo();
 
         ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
-
-        OperateResult write1 = siemensS7Net.Write("DB100." + index*66, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-        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);
-            Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
-            short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
-            if (!oriWrkNo.equals(wrkNo)  || oriStaNo != staNo){
-                if (count >= 5){
-                    log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
-                    return;
-                }
-                count++;
-                writeD(staProtocol,count);
-            }
-            int whileCount = 0;
-            OperateResult write3 = siemensS7Net.Write("DB100." + (index*66+6), (short) 1);
-            if (write3.IsSuccess){
-                Thread.sleep(200);
-                do {
-                    OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100."+(index*66 +6), (short) 2);
-                    short mk = siemensS7Net.getByteTransform().TransInt16(result2.Content, 0);
-                    if (mk == 2){
-                        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));
-                            break;
-                        }
-                    }else {
-                        whileCount++;
+        do {
+            log.info("杈撻�侀�掑綊娆℃暟:" + count);
+            OperateResult write1 = siemensS7Net.Write("DB100." + index * 66, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+            Thread.sleep(100);
+            OperateResult write2 = siemensS7Net.Write("DB100." + (index * 66 + 4), staProtocol.getStaNo());    // 鐩爣绔�
+            if (write1.IsSuccess && write2.IsSuccess) {
+                News.info("杈撻�佺嚎鍛戒护涓嬪彂[id:" + slave.getId() + "] >>>>>" + "[" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo() + "]");
+                OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100." + (index * 66), (short) 6);
+                Integer wrkNo = siemensS7Net.getByteTransform().TransInt32(result.Content, 0);
+                short staNo = siemensS7Net.getByteTransform().TransInt16(result.Content, 4);
+                if (!oriWrkNo.equals(wrkNo) || oriStaNo != staNo) {
+                    if (count >= 5) {
+                        log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), count);
+                        return false;
                     }
-                }while (whileCount <5);
+                    count++;
+                }else {
+                    return true;
+                }
             }
-        }
+        }while (count <=5);
 
 
-
+        return true;
     }
 
     // 鏇存柊鍏ュ嚭搴撴ā寮�
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 95614e1..6f3a73b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -61,6 +61,14 @@
       row: 2
       bay: 47
       lev: 1
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[1]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 2003
+      row: 3
+      bay: 47
+      lev: 2
+
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
@@ -68,6 +76,52 @@
       row: 3
       bay: 47
       lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[1]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 2003
+      row: 3
+      bay: 47
+      lev: 2
+    crnInStn[2]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 1043
+      row: 3
+      bay: 1
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[2]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 1043
+      row: 3
+      bay: 1
+      lev: 1
+    crnInStn[3]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 2013
+      row: 3
+      bay: 1
+      lev: 2
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[3]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 2013
+      row: 3
+      bay: 1
+      lev: 2
+    crnInStn[4]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 3013
+      row: 3
+      bay: 1
+      lev: 3
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[4]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 3013
+      row: 3
+      bay: 1
+      lev: 3
   # 鍫嗗灈鏈�2
   crn[1]:
     id: 2
@@ -92,6 +146,62 @@
       row: 6
       bay: 47
       lev: 1
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[1]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 2004
+      row: 6
+      bay: 47
+      lev: 2
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[1]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 2004
+      row: 6
+      bay: 47
+      lev: 2
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[2]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 1044
+      row: 6
+      bay: 1
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[2]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 1044
+      row: 6
+      bay: 1
+      lev: 1
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[3]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 2014
+      row: 6
+      bay: 1
+      lev: 2
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[3]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 2014
+      row: 6
+      bay: 1
+      lev: 2
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[4]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 3014
+      row: 6
+      bay: 1
+      lev: 3
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[4]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 3014
+      row: 6
+      bay: 1
+      lev: 3
 
   # 杈撻�佺嚎1
   devp[0]:
@@ -105,6 +215,10 @@
       staNo: 1001
       backSta: 1000
       led: ${wcs-slave.led[1].id}
+    inSta[1]:
+      staNo: 2001
+      backSta: 2000
+      led: ${wcs-slave.led[1].id}
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
       staNo: 1001
@@ -114,6 +228,12 @@
     emptyInSta[1]:
       staNo: 1025
       backSta: 1000
+      led: ${wcs-slave.led[1].id}
+
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[2]:
+      staNo: 2001
+      backSta: 200
       led: ${wcs-slave.led[1].id}
     # 鍑哄簱鍙�1
     outSta[0]:
@@ -128,29 +248,68 @@
     slot: 0
     # 鍏ュ簱鍙�1
     inSta[0]:
-      staNo: 106
-      backSta: 105
+      staNo: 1041
+      backSta: 1040
+      led: ${wcs-slave.led[1].id}
+    # 鍏ュ簱鍙�1
+    inSta[1]:
+      staNo: 2011
+      backSta: 2010
+      led: ${wcs-slave.led[1].id}
+    # 鍏ュ簱鍙�1
+    inSta[2]:
+      staNo: 3011
+      backSta: 3010
       led: ${wcs-slave.led[1].id}
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
-      staNo: 106
-      backSta: 105
+      staNo: 1041
+      backSta: 1040
+      led: ${wcs-slave.led[1].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[1]:
+      staNo: 2011
+      backSta: 2010
+      led: ${wcs-slave.led[1].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[2]:
+      staNo: 3011
+      backSta: 3010
       led: ${wcs-slave.led[1].id}
     # 鎷f枡鍏ュ簱鍙�1
     pickSta[0]:
-      staNo: 159
+      staNo: 1041
       led: ${wcs-slave.led[5].id}
-      backSta: 160
+      backSta: 1040
+    # 鎷f枡鍏ュ簱鍙�1
+    pickSta[1]:
+      staNo: 2011
+      led: ${wcs-slave.led[5].id}
+      backSta: 2010
+    # 鎷f枡鍏ュ簱鍙�1
+    pickSta[2]:
+      staNo: 3011
+      led: ${wcs-slave.led[5].id}
+      backSta: 3010
     # 鍑哄簱鍙�1
     outSta[0]:
-      staNo: 100
+      staNo: 1040
       led: ${wcs-slave.led[0].id}
     outSta[1]:
-      staNo: 152
+      staNo: 1042
       led: ${wcs-slave.led[3].id}
     outSta[2]:
-      staNo: 156
-      led: ${wcs-slave.led[4].id}
+      staNo: 2010
+      led: ${wcs-slave.led[3].id}
+    outSta[3]:
+      staNo: 2012
+      led: ${wcs-slave.led[3].id}
+    outSta[4]:
+      staNo: 3010
+      led: ${wcs-slave.led[3].id}
+    outSta[5]:
+      staNo: 3012
+      led: ${wcs-slave.led[3].id}
 
    # LED1
   led[0]:
diff --git a/src/main/webapp/static/css/render.css b/src/main/webapp/static/css/render.css
index 9876401..fe20724 100644
--- a/src/main/webapp/static/css/render.css
+++ b/src/main/webapp/static/css/render.css
@@ -93,7 +93,7 @@
 .floorBtn {
     position: absolute;
     border-radius: 5px;
-    left: 1750px;
+    left: 10px;
     width: 90px;
     height: 40px;
     color: #ffffff;
diff --git a/src/main/webapp/static/js/console.js b/src/main/webapp/static/js/console.js
index e4b968c..570c792 100644
--- a/src/main/webapp/static/js/console.js
+++ b/src/main/webapp/static/js/console.js
@@ -129,9 +129,9 @@
         let floor = areas[i].text
         let barcodes = areas[i].barcode
         floorId = areas[i].id
-        var position = (i+1)*100
+        var position = (i+1)*100 +400
         floorBtn =
-            "<button class='floorBtn btn-16' onclick='changFloor("+i+")' style='top: "+position+"px;'>" + floor +"</button>"
+            "<button class='floorBtn btn-16' onclick='changFloor("+i+")' style='top: "+10+"px;left: "+position+"px;'>" + floor +"</button>"
         if (mapInfo.areas[0].floors.length == 1) {
             floorBtnss = ''
         } else {
diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js
index f199746..083ff4e 100644
--- a/src/main/webapp/static/js/console.map.js
+++ b/src/main/webapp/static/js/console.map.js
@@ -85,16 +85,16 @@
         "text": "#16",
         "top": 167,
         "left": 1810,
-        "width": 30,
-        "height": 23
+        "width": 0,
+        "height": 0
     }, {
         "type": "rackDescs",
         "id": "lb_desc2",
         "text": "#1",
         "top": 596,
         "left": 1810,
-        "width": 30,
-        "height": 23
+        "width": 0,
+        "height": 0
     }],
     "crns": [{
         "type": "track",
@@ -523,6 +523,295 @@
                     "height": 20
                 }
             ]
+        },{
+            "type": "floor",
+            "id": "page_floor2",
+            "text": "2F",
+            "top": 4,
+            "left": 22,
+            "width": 1819,
+            "height": 668,
+            "stns":[
+                {
+                    "type": "stn",
+                    "id": "site-2004",
+                    "text": "2004",
+                    "top": 300,
+                    "left": 1510,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2006",
+                    "text": "2006",
+                    "top": 300,
+                    "left": 1592,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2003",
+                    "text": "2003",
+                    "top": 239,
+                    "left": 1510,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2005",
+                    "text": "2005",
+                    "top": 239,
+                    "left": 1592,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "track",
+                    "id": "lb_track9",
+                    "text": "",
+                    "top": 180,
+                    "left": 1680,
+                    "width": 2,
+                    "height": 500
+                }
+                ,{
+                    "type": "track",
+                    "id": "lb_track10",
+                    "text": "",
+                    "top": 180,
+                    "left": 1720,
+                    "width": 2,
+                    "height": 500
+                }
+                ,{
+                    "type": "stn",
+                    "id": "site-2001",
+                    "text": "2001",
+                    "top": 239,
+                    "left": 1756,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2000",
+                    "text": "2000",
+                    "top": 239,
+                    "left": 1838,
+                    "width": 80,
+                    "height": 19
+                }
+                ,{
+                    "type": "stn",
+                    "id": "site-2007",
+                    "text": "2007",
+                    "top": 300,
+                    "left": 1674,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2002",
+                    "text": "2002",
+                    "top": 350,
+                    "left": 1756,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2015",
+                    "text": "2015",
+                    "top": 239,
+                    "left": 365,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-2013",
+                    "text": "2013",
+                    "top": 239,
+                    "left": 448,
+                    "width": 80,
+                    "height": 19
+                },  {
+                    "type": "stn",
+                    "id": "site-2016",
+                    "text": "2016",
+                    "top": 352,
+                    "left": 365,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-2014",
+                    "text": "2014",
+                    "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-2017",
+                    "text": "2017",
+                    "top": 352,
+                    "left": 282,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2010",
+                    "text": "2010",
+                    "top": 239,
+                    "left": 118,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-2011",
+                    "text": "2011",
+                    "top": 239,
+                    "left": 200,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-2012",
+                    "text": "2012",
+                    "top": 400,
+                    "left": 200,
+                    "width": 80,
+                    "height": 19
+                }
+            ],
+            "barcode":[
+                {
+                    "type": "barcode",
+                    "id": "barcode-1",
+                    "text": "",
+                    "top": 749,
+                    "left": 470,
+                    "width": 80,
+                    "height": 20
+                },
+
+            ]
+        },{
+            "type": "floor",
+            "id": "page_floor3",
+            "text": "3F",
+            "top": 4,
+            "left": 22,
+            "width": 1819,
+            "height": 668,
+            "stns":[
+               {
+                    "type": "stn",
+                    "id": "site-3015",
+                    "text": "3015",
+                    "top": 239,
+                    "left": 365,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-3013",
+                    "text": "3013",
+                    "top": 239,
+                    "left": 448,
+                    "width": 80,
+                    "height": 19
+                },  {
+                    "type": "stn",
+                    "id": "site-3016",
+                    "text": "3016",
+                    "top": 352,
+                    "left": 365,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-3014",
+                    "text": "3014",
+                    "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-3017",
+                    "text": "3017",
+                    "top": 352,
+                    "left": 282,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-3010",
+                    "text": "3010",
+                    "top": 239,
+                    "left": 118,
+                    "width": 80,
+                    "height": 19
+                }, {
+                    "type": "stn",
+                    "id": "site-3011",
+                    "text": "3011",
+                    "top": 239,
+                    "left": 200,
+                    "width": 80,
+                    "height": 19
+                },{
+                    "type": "stn",
+                    "id": "site-3012",
+                    "text": "3012",
+                    "top": 400,
+                    "left": 200,
+                    "width": 80,
+                    "height": 19
+                }
+            ],
+            "barcode":[
+                {
+                    "type": "barcode",
+                    "id": "barcode-1",
+                    "text": "",
+                    "top": 749,
+                    "left": 470,
+                    "width": 80,
+                    "height": 20
+                },
+
+            ]
         }]
     }]
 }
\ No newline at end of file

--
Gitblit v1.9.1