From 5687b706d02e1d3bbaa6863d51b5803944b3af05 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期三, 10 一月 2024 09:02:49 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |  178 ++++++++++++++---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  230 ++++++++++-------------
 src/main/webapp/static/js/console.map.js                    |   12 
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |   33 +-
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   63 +++++
 src/main/resources/application.yml                          |   27 +
 6 files changed, 346 insertions(+), 197 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 4b31eb4..a4acf12 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -19,6 +19,7 @@
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
+import com.zy.common.utils.CollectionUtils;
 import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
@@ -152,6 +153,8 @@
                 // 閫�鍥�
                 if (back) {
 //                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+
                     if (!staProtocol.isLoading()){
                         continue;
                     }
@@ -170,12 +173,11 @@
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
                         && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
 
-//                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
+                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
 //                        staProtocol.setWorkNo((short)9999);
 //                        staProtocol.setStaNo((short)172);
 //                        devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -183,8 +185,8 @@
 //                        if (!result) {
 //                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
 //                        }
-//                        continue;
-//                    }
+                        continue;
+                    }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
@@ -199,7 +201,7 @@
 
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                             .eq("barcode", barcode)
-                            .eq("io_type", 103));
+                            .in("io_type", 107,103));
                     if (!Cools.isEmpty(checkPick)) {
                         continue;
                     }
@@ -236,8 +238,9 @@
 
 
                         } else {
-                            staProtocol.setWorkNo((short) 9998);
-                            staProtocol.setStaNo((short) 14);
+                            staProtocol.setWorkNo(wrkNo);
+                            wrkNo++;
+                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 
@@ -409,11 +412,21 @@
                 }
                 String barcode = barcodeThread.getBarcode();
 
-                if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
+                if (!Cools.isEmpty(barcode)) {
 //                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        staProtocol.setWorkNo((short) 9998);
-                        staProtocol.setStaNo((short) 14);
+                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+                        if (!staProtocol.isLoading()) {
+                            continue;
+                        }
+                        if (!staProtocol.isPakMk()) {
+                            continue;
+                        }
+                        if(staProtocol.getWorkNo() != 0) {
+                            continue;
+                        }
+                        staProtocol.setWorkNo(wrkNo);
+                        wrkNo++;
+                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         // led 寮傚父鏄剧ず
@@ -436,7 +449,7 @@
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
+//                        && (staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9997 || staProtocol.getWorkNo() == 9995)
                         && staProtocol.isPakMk()) {
 
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
@@ -462,8 +475,7 @@
                     // 鑾峰彇鐩爣绔�
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", wrkMast.getIoType() - 50)
-                            //閫熻吘鐗规湁鎹℃枡锛� 11绔欐槸鍑哄簱绔欙紝 鐒跺悗鎵嬪姩璧板埌15绔欒繘琛屽啀鍏ュ簱
-                            .eq("stn_no", 15) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
                             .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
                     StaDesc staDesc = staDescService.selectOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
@@ -1746,145 +1758,103 @@
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
     public synchronized void ledExecute() {
-//        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-//            // 鍛戒护闆嗗悎
-//            List<LedCommand> commands = new ArrayList<>();
-//            // 宸ヤ綔妗i泦鍚�
-//            List<WrkMast> wrkMasts = new ArrayList<>();
+            // 鍛戒护闆嗗悎
+            List<LedCommand> commands = new ArrayList<>();
+            // 宸ヤ綔妗i泦鍚�
+            List<WrkMast> wrkMasts = new ArrayList<>();
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
                 if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
-                    MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ""));
                     continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-                if (null == wrkMast) {
-                    MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ""));
-                    continue;
-                }
-                ArrayList<MatDto> matDtos = new ArrayList<>();
-                Wrapper<WrkDetl> detlWrapper = new EntityWrapper<WrkDetl>()
-                        .eq("wrk_no", wrkMast.getWrkNo());
+                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+                wrkMasts.add(wrkMast);
+                // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
                 ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-                ledCommand.setLocNo(wrkMast.getLocNo());
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setIoType(wrkMast.getIoType());
-                ledCommand.setTitle(wrkMast.getIoType$());
-
+                // 鍑哄簱妯″紡
                 switch (wrkMast.getIoType()) {
-                    case 10:
+                    case 101:
+                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                        break;
+                    case 103:
+                        ledCommand.setTitle("鎷f枡鍑哄簱");
+                        break;
+                    case 104:
+                        ledCommand.setTitle("骞舵澘鍑哄簱");
+                        break;
+                    case 107:
+                        ledCommand.setTitle("鐩樼偣鍑哄簱");
+                        break;
                     case 110:
+                        ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
                         break;
                     default:
-                        ledCommand.setBarcode(wrkMast.getBarcode());
-                        List<WrkDetl> wrkDetls = wrkDetlService.selectList(detlWrapper);
-                        for (WrkDetl wrkDetl : wrkDetls) {
-                            MatDto matDto = new MatDto();
-                            matDto.setMaknx(wrkDetl.getMaktx());
-                            matDto.setMatNo(wrkDetl.getMatnr());
-                            matDto.setCount(wrkDetl.getAnfme());
-                            matDtos.add(matDto);
-                        }
+                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
-
-
                 }
-                ledCommand.setMatDtos(matDtos);
-                MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, ledCommand.toString()));
-
-//                wrkMasts.add(wrkMast);
-//                // 缁勮鍛戒护
-//                LedCommand ledCommand = new LedCommand();
-//                ledCommand.setWorkNo(wrkMast.getWrkNo());
-//                ledCommand.setIoType(wrkMast.getIoType());
-//                // 鍑哄簱妯″紡
-//                switch (wrkMast.getIoType()) {
-//                    case -1:
-//                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-//                        break;
-//                    case 10:
-//                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-//                        break;
-//                    case 10-1:
-//                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-//                        break;
-//                    case 103:
-//                        ledCommand.setTitle("鎷f枡鍑哄簱");
-//                        break;
-//                    case 104:
-//                        ledCommand.setTitle("骞舵澘鍑哄簱");
-//                        break;
-//                    case 107:
-//                        ledCommand.setTitle("鐩樼偣鍑哄簱");
-//                        break;
-//                    case 110:
-//                        ledCommand.setTitle("绌烘澘鍑哄簱");
-//                        ledCommand.setEmptyMk(true);
-//                        break;
-//                    default:
-//                        News.error(methodName + ":浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-//                        break;
-//                }
-//                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-//                ledCommand.setLocNo(wrkMast.getLocNo());
-//                ledCommand.setStaNo(wrkMast.getStaNo());
-////                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-//                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-//                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-//                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
-//                }
-//                commands.add(ledCommand);
-//            }
-//            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
-//            // 鑾峰彇LED绾跨▼
-//            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-//            // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
-////            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
-////                continue;
-////            }
-//            // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-//            if (!commands.isEmpty()) {
-//                String errMsg = "";
-//                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-//                    News.error(methodName + ":{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                    continue;
-//                } else {
-//                    ledThread.setLedMk(false);
-//                }
-//
-//
+                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                ledCommand.setStaNo(wrkMast.getStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
+                if (wrkMast.getIoType() != 110) {
+                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+                    wrkDetls.forEach(wrkDetl -> {
+                        if (wrkMast.getIoType() == 101) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+                        }
+                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(),  wrkDetl.getAnfme()));
+                        }
+                        if (wrkMast.getIoType() == 107) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+                        }
+                    });
+                }
+                commands.add(ledCommand);
             }
-//
-//            try {
-//                // 淇敼涓绘。led鏍囪
-//                for (WrkMast wrkMast : wrkMasts) {
-//                    wrkMast.setOveMk("Y");
-//                    wrkMast.setModiTime(new Date());
-//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-//                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
-//                    }
-//                }
-//
-//                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
-//                ledThread.setWorkNos(workNos);
-//
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//            }
+            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
+            // 鑾峰彇LED绾跨▼
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+            // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
+            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
+                continue;
+            }
+            // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
+            if (!commands.isEmpty()) {
 
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    continue;
+                }
+            }
+
+            try {
+                // 淇敼涓绘。led鏍囪
+                for (WrkMast wrkMast : wrkMasts) {
+                    wrkMast.setOveMk("Y");
+                    wrkMast.setModiTime(new Date());
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+                    }
+                }
+
+                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
+                ledThread.setWorkNos(workNos);
+
+            } catch (Exception e) {
+                e.printStackTrace();
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }
         }
     }
 
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a63b90b..af2dee1 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -187,6 +187,11 @@
      */
     public Float yDuration;
 
+    /**
+     * 鍫嗗灈鏈烘墍鍦ㄥ贩閬�
+     */
+    private Integer crnLane = 1;
+
     public void setMode(Short mode) {
         this.mode = mode;
         this.modeType = CrnModeType.get(mode);
@@ -251,32 +256,32 @@
         return basCrnp;
     }
 
-    public void setxSpeed(Short xSpeed) {
-        this.xSpeed = Float.valueOf(xSpeed);
+    public void setxSpeed(float xSpeed) {
+        this.xSpeed = xSpeed;
     }
 
-    public void setySpeed(Short ySpeed) {
-        this.ySpeed = Float.valueOf(ySpeed);
+    public void setySpeed(float ySpeed) {
+        this.ySpeed = ySpeed;
     }
 
-    public void setzSpeed(Short zSpeed) {
-        this.zSpeed = Float.valueOf(zSpeed);
+    public void setzSpeed(float zSpeed) {
+        this.zSpeed = zSpeed;
     }
 
-    public void setxDistance(Short xDistance) {
-        this.xDistance = Float.valueOf(xDistance);
+    public void setxDistance(float xDistance) {
+        this.xDistance = xDistance;
     }
 
-    public void setyDistance(Short yDistance) {
-        this.yDistance = Float.valueOf(yDistance);
+    public void setyDistance(float yDistance) {
+        this.yDistance = yDistance;
     }
 
-    public void setxDuration(Short xDuration) {
-        this.xDuration = Float.valueOf(xDuration);
+    public void setxDuration(float xDuration) {
+        this.xDuration = xDuration;
     }
 
-    public void setyDuration(Short yDuration) {
-        this.yDuration = Float.valueOf(yDuration);
+    public void setyDuration(float yDuration) {
+        this.yDuration = yDuration;
     }
 
 }
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 9e8acb1..2a6fd32 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -44,6 +44,8 @@
      */
     private boolean backHpFlag = false;
 
+    private boolean cmdFlag = true;
+
     public SiemensCrnThread(CrnSlave slave) {
         this.slave = slave;
     }
@@ -147,10 +149,10 @@
      * 璇诲彇鐘舵��
      */
     private void readStatus(){
-        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
+        short len = 56;
+        len = slave.getId() == 1 ? (short) 56 : (short) 58;
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 56);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short)56);
             if (result.IsSuccess) {
                 if (null == crnProtocol) {
                     crnProtocol = new CrnProtocol();
@@ -170,26 +172,24 @@
                 crnProtocol.setTemp2(siemensNet.getByteTransform().TransInt16(result.Content, 22));
                 crnProtocol.setTemp3(siemensNet.getByteTransform().TransInt16(result.Content, 24));
                 crnProtocol.setTemp4(siemensNet.getByteTransform().TransInt16(result.Content, 26));
-                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 28));
-                crnProtocol.setySpeed(siemensNet.getByteTransform().TransInt16(result.Content, 32));
-                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransInt16(result.Content, 36));
-                crnProtocol.setxDistance(siemensNet.getByteTransform().TransInt16(result.Content, 40));
-                crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
-                crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
-                crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+                crnProtocol.setxSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 28));
+                crnProtocol.setySpeed(siemensNet.getByteTransform().TransSingle(result.Content, 32));
+                crnProtocol.setzSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 36));
+                crnProtocol.setxDistance(siemensNet.getByteTransform().TransSingle(result.Content, 40));
+                crnProtocol.setyDistance(siemensNet.getByteTransform().TransSingle(result.Content, 44));
+                crnProtocol.setxDuration(siemensNet.getByteTransform().TransSingle(result.Content, 48));
+                crnProtocol.setyDuration(siemensNet.getByteTransform().TransSingle(result.Content, 52));
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
                 // 澶嶄綅淇″彿
                 if (crnProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
                     if (resetFlag) {
-                        if(crnProtocol.getTaskNo()==9999){
-                            backHpFlag = false;
-                        }
                         CrnCommand crnCommand = new CrnCommand();
                         crnCommand.setAckFinish((short)1);
                         if (write(crnCommand)) {
                             resetFlag = false;
+                            cmdFlag = true;
                         }
                     }
                 }
@@ -201,19 +201,19 @@
                     basCrnp.setCrnNo(slave.getId());
                     basCrnp.setCrnSts((int)crnProtocol.getMode());
                     if (!basCrnpService.updateById(crnProtocol.toSqlModel(basCrnp))){
-                        News.error(methodName + ":鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                        News.error("鍫嗗灈鏈簆lc鏁版嵁搴撴洿鏂板け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
                     }
                 } catch (Exception ignore){}
 
             } else {
                 initCrn();
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-                News.error(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
         } catch (Exception e) {
             e.printStackTrace();
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧爢鍨涙満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error(methodName + ":璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error("璇诲彇鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initCrn();
         }
     }
@@ -231,34 +231,144 @@
      * 鍐欏叆鏁版嵁
      */
     private boolean write(CrnCommand command) throws InterruptedException {
-        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-
         if (null == command) {
             News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
+        // 鍚戝爢鍨涙満鍙戜换鍔″墠鐨勫爢鍨涙満鐘舵��
+        try{
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 24);
+            if (resultRead.IsSuccess) {
+                CrnCommand one = new CrnCommand();
+                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+                one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
+                one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+                one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+                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())
+                ){
+                    News.error("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                } else {
+                    News.info("涓嬪彂鍓嶏細[id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                }
+            }
+        }catch (Exception e){
+            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+        }
 //        convertRow(command);
         command.setCrnNo(slave.getId());
+//        short[] array = new short[10];
         short[] array = new short[10];
-        array[0] = command.getAckFinish();
-        array[1] = command.getTaskNo();
-        array[2] = command.getTaskMode();
-        array[3] = command.getSourcePosX();
-        array[4] = command.getSourcePosY();
-        array[5] = command.getSourcePosZ();
-        array[6] = command.getDestinationPosX();
-        array[7] = command.getDestinationPosY();
-        array[8] = command.getDestinationPosZ();
-//        array[9] = command.getSourceStaNo();
-//        array[10] = command.getDestinationStaNo();
+        array[0] = command.getAckFinish(); // 浠诲姟瀹屾垚纭浣�
+        array[1] = command.getTaskNo();  // 浠诲姟鍙�
+        array[2] = command.getTaskMode();  // 妯″紡
+        array[3] = command.getSourcePosX(); // 婧愪綅缃帓鍙�
+        array[4] = command.getSourcePosY(); // 婧愪綅缃垪鍙�
+        array[5] = command.getSourcePosZ(); // 婧愪綅缃眰鍙�
+        array[6] = command.getDestinationPosX();  // 鐩爣浣嶇疆鎺掑彿
+        array[7] = command.getDestinationPosY(); // 鐩爣浣嶇疆鍒楀彿
+        array[8] = command.getDestinationPosZ(); // 鐩爣浣嶇疆灞傚彿
         array[9] = command.getCommand();
+//        array[10] = command.getLocType1();   //鏂板璐х墿绫诲瀷涓嬪彂
         OperateResult result = siemensNet.Write("DB100.0", array);
+        News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), array);
+
+        if(!result.IsSuccess){
+            News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+            MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+            Thread.sleep(100);
+            readStatus();
+            return false;
+        }
+
+        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+        Thread.sleep(200);
+        try{
+            OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.0", (short) 18);
+            if (resultRead.IsSuccess) {
+                CrnCommand one = new CrnCommand();
+                one.setTaskNo(siemensNet.getByteTransform().TransInt16(resultRead.Content, 2));
+                one.setTaskMode(siemensNet.getByteTransform().TransInt16(resultRead.Content, 4));
+                one.setSourcePosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 6));
+                one.setSourcePosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 8));
+                one.setSourcePosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 10));
+                one.setDestinationPosX(siemensNet.getByteTransform().TransInt16(resultRead.Content, 12));
+                one.setDestinationPosY(siemensNet.getByteTransform().TransInt16(resultRead.Content, 14));
+                one.setDestinationPosZ(siemensNet.getByteTransform().TransInt16(resultRead.Content, 16));
+                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())
+                ){
+                    try{
+                        News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                    }catch (Exception e){
+                        try{
+                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>>鍙傛暟one鎶ラ敊 [id:{}],{}", slave.getId(), JSON.toJSON(command),JSON.toJSON(resultRead));
+                        }catch (Exception e1){
+                            News.error("鏃ュ織鎵撳嵃澶辫触锛�===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+                        }
+                    }
+                    News.error("鍫嗗灈鏈哄懡浠ゅ洖璇诲け璐ュ悗锛岄噸鏂版坊鍔犱换鍔″埌闃熷垪 ===>> [id:{}],{}", slave.getId(), JSON.toJSON(command));
+                    MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command));
+                    Thread.sleep(100);
+                    readStatus();
+                    return false;
+                } else {
+                    News.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇绘垚鍔焄id:{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), JSON.toJSON(command),JSON.toJSON(one));
+                }
+            }
+        }catch (Exception e){
+            News.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲嚭閿�");
+        }
+
 
         if (command.getAckFinish() == 0) {
-            short commandFinish = 1;
-            Thread.sleep(100L);
-            result = siemensNet.Write("DB100.18", commandFinish);
+            if (result.IsSuccess) {
+                Thread.sleep(300);
+                //浠诲姟涓嬪彂娆℃暟
+                int writeCount2 = 0;
+
+                do {
+                    writeCount2++;
+                    short commandFinish = (short) 1;
+                    result = siemensNet.Write("DB100.18", commandFinish);
+                    if(result.IsSuccess){
+                        //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+                        Thread.sleep(200);
+                        OperateResultExOne<byte[]> resultRead = siemensNet.Read("DB100.18", (short) 2);
+                        if (resultRead.IsSuccess) {
+                            commandFinish=siemensNet.getByteTransform().TransInt16(resultRead.Content, 0);
+                            if (commandFinish != 1){
+                                News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆鏁版嵁涓庡洖璇绘暟鎹笉涓�鑷达紒"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+                            }else{
+                                //浠诲姟鍛戒护鍐欏叆鎴愬姛
+                                News.info("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶鎴愬姛锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+                                break;
+                            }
+                        }else {
+                            News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍥炶澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+                        }
+                    } else {
+                        News.error("鍫嗗灈鏈轰换鍔$‘璁や綅"+commandFinish+"鍐欏叆澶辫触锛�"+"寰幆鎵ц娆℃暟:"+writeCount2+"娆�");
+                    }
+                }while (writeCount2<5);
+            }
         }
+
+//        if (command.getAckFinish() == 0) {
+//            short commandFinish = 1;
+//            Thread.sleep(200L);
+//            result = siemensNet.Write("DB100.18", commandFinish);
+//            log.info("鍫嗗灈鏈篶ommandFinish涓嬪彂[id:{}] >>>>> {}", slave.getId(), commandFinish);
+////            result = siemensNet.Write("DB100.22", commandFinish);
+//        }
 
         try {
             // 鏃ュ織璁板綍
@@ -286,12 +396,12 @@
         if (result != null && result.IsSuccess) {
             Thread.sleep(200);
             this.readStatus();
-            News.info(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
+            News.info("鍫嗗灈鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
             return true;
         } else {
             OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ爢鍨涙満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-            News.error(methodName + ":鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            News.error("鍐欏叆鍫嗗灈鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             return false;
         }
     }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 3ef813e..979e434 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -72,6 +72,17 @@
     public static final ArrayList<Integer> staNosErr3 = new ArrayList<Integer>() {{
         add(301); add(303); add(305);
     }};
+
+    public static final ArrayList<Integer> barcode1 = new ArrayList<Integer>() {{
+        add(0); add(1); add(2);
+    }};
+    public static final ArrayList<Integer> barcode2 = new ArrayList<Integer>() {{
+        add(3); add(4); add(5);
+    }};
+    public static final ArrayList<Integer> barcode3 = new ArrayList<Integer>() {{
+        add(6); add(7); add(8);
+    }};
+
     private ArrayList<Integer> getStaNo() {
         switch (slave.getId()) {
             case 1:
@@ -84,6 +95,19 @@
                 throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
         }
     }
+    private ArrayList<Integer> getBarcodeList() {
+        switch (slave.getId()) {
+            case 1:
+                return barcode1;
+            case 2:
+                return barcode2;
+            case 3:
+                return barcode3;
+            default:
+                throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
+        }
+    }
+
     private ArrayList<Integer> getStaNoErr() {
         switch (slave.getId()) {
             case 1:
@@ -219,6 +243,24 @@
                     staProtocol.setPakMk(true);
                 }
             }
+
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            try {
+                List<BasDevp> basDevps = new ArrayList<>();
+                for (Integer siteId : staNos) {
+                    StaProtocol staProtocol = station.get(siteId);
+                    basDevps.add(staProtocol.toSqlModel());
+                }
+
+                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+                News.error(methodName + ":鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
         }
         //澶栧舰妫�娴�
         ArrayList<Integer> staNoErrs = getStaNoErr();
@@ -241,17 +283,30 @@
 
         //鏉$爜鎵弿鍣�
 //        Thread.sleep(200);
-        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840",(short)(barcodeSize*10));
+//        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840",(short)(barcodeSize*8));
+//        if (result2.IsSuccess) {
+//            for (int i = 0; i < barcodeSize; i++) {
+//                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
+//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+//                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+//                    barcodeThread.setBarcode(barcode);
+//                }
+//            }
+//        }
+
+        ArrayList<Integer> barcodeList = getBarcodeList();
+        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840", (short) (barcodeList.size() * 8));
         if (result2.IsSuccess) {
-            for (int i = 0; i < barcodeSize; i++) {
+            for (int i = 0; i < barcodeList.size(); i++) {
+                Integer barcodeId = barcodeList.get(i);
                 String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId + 1);
                 if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                     barcodeThread.setBarcode(barcode);
                 }
             }
-
         }
+
         //RGV灏忚溅
 //        Thread.sleep(200);
         OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.160",(short)2);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ca616cb..5186676 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -248,14 +248,17 @@
     pickSta[0]:
       staNo: 101
       barcode: ${wcs-slave.barcode[0].id}
+      backSta: 100
     # 鎷f枡鍏ュ簱鍙�2
     pickSta[1]:
       staNo: 103
       barcode: ${wcs-slave.barcode[1].id}
+      backSta: 102
     # 鎷f枡鍏ュ簱鍙�3
     pickSta[2]:
       staNo: 105
       barcode: ${wcs-slave.barcode[2].id}
+      backSta: 104
   # 杈撻�佺嚎2妤�
   devp[1]:
     id: 2
@@ -303,14 +306,17 @@
     pickSta[0]:
       staNo: 201
       barcode: ${wcs-slave.barcode[3].id}
+      backSta: 200
     # 鎷f枡鍏ュ簱鍙�2
     pickSta[1]:
       staNo: 203
       barcode: ${wcs-slave.barcode[4].id}
+      backSta: 202
     # 鎷f枡鍏ュ簱鍙�3
     pickSta[2]:
       staNo: 205
       barcode: ${wcs-slave.barcode[5].id}
+      backSta: 204
   # 杈撻�佺嚎3妤�
   devp[2]:
     id: 3
@@ -358,14 +364,17 @@
     pickSta[0]:
       staNo: 301
       barcode: ${wcs-slave.barcode[6].id}
+      backSta: 300
     # 鎷f枡鍏ュ簱鍙�2
     pickSta[1]:
       staNo: 303
       barcode: ${wcs-slave.barcode[7].id}
+      backSta: 302
     # 鎷f枡鍏ュ簱鍙�3
     pickSta[2]:
       staNo: 305
       barcode: ${wcs-slave.barcode[8].id}
+      backSta: 304
   # 鏉$爜鎵弿浠�1
   barcode[0]:
     id: 1
@@ -417,60 +426,60 @@
     ip: 10.10.10.81
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 101
+    staArr: 100
   # LED2
   led[1]:
     id: 2
     ip: 10.10.10.202
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 103
+    staArr: 102
     # LED3
   led[2]:
     id: 1
     ip: 10.10.10.81
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
-    staArr: 105
+    staArr: 104
   # LED4
   led[3]:
     id: 2
     ip: 10.10.10.202
     port: 5005
     devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 201
+    staArr: 200
     # LED5
   led[4]:
     id: 1
     ip: 10.10.10.81
     port: 5005
     devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 203
+    staArr: 202
   # LED6
   led[5]:
     id: 2
     ip: 10.10.10.202
     port: 5005
     devpPlcId: ${wcs-slave.devp[1].id}
-    staArr: 205
+    staArr: 204
   # LED7
   led[6]:
     id: 1
     ip: 10.10.10.81
     port: 5005
     devpPlcId: ${wcs-slave.devp[2].id}
-    staArr: 301
+    staArr: 300
   # LED8
   led[7]:
     id: 2
     ip: 10.10.10.202
     port: 5005
     devpPlcId: ${wcs-slave.devp[2].id}
-    staArr: 303
+    staArr: 302
   # LED9
   led[8]:
     id: 1
     ip: 10.10.10.81
     port: 5005
     devpPlcId: ${wcs-slave.devp[2].id}
-    staArr: 305
+    staArr: 304
diff --git a/src/main/webapp/static/js/console.map.js b/src/main/webapp/static/js/console.map.js
index dea8820..c377ec1 100644
--- a/src/main/webapp/static/js/console.map.js
+++ b/src/main/webapp/static/js/console.map.js
@@ -64,7 +64,7 @@
     "rackDescs": [{
         "type": "rackDescs",
         "id": "lb_desc17",
-        "text": "#1",
+        "text": "#6",
         "top": 119,
         "left": 157,
         "width": 30,
@@ -72,7 +72,7 @@
     }, {
         "type": "rackDescs",
         "id": "lb_desc16",
-        "text": "#6",
+        "text": "#1",
         "top": 344,
         "left": 154,
         "width": 33,
@@ -96,8 +96,8 @@
         "height": 290
     }, {
         "type": "crane",
-        "id": "crn-3",
-        "text": "3",
+        "id": "crn-1",
+        "text": "1",
         "top": 316,
         "left": 466,
         "width": 93,
@@ -136,8 +136,8 @@
         "height": 2
     }, {
         "type": "crane",
-        "id": "crn-1",
-        "text": "1",
+        "id": "crn-3",
+        "text": "3",
         "top": 151,
         "left": 471,
         "width": 93,

--
Gitblit v1.9.1