From ab0db76dc627a63699380dc65e2773c47d12f449 Mon Sep 17 00:00:00 2001
From: qlsxk <qlsxk@qq.com>
Date: 星期二, 14 十月 2025 15:22:59 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/console4.html |  216 +++++++++++++++++++++++++----------------------------
 1 files changed, 103 insertions(+), 113 deletions(-)

diff --git a/src/main/webapp/views/console4.html b/src/main/webapp/views/console4.html
index a02a8ac..dabc9ac 100644
--- a/src/main/webapp/views/console4.html
+++ b/src/main/webapp/views/console4.html
@@ -43,9 +43,6 @@
     <div class="floorBtnBox" v-for="(lev,idx) in floorList">
       <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changeFloor(lev)">{{lev}}F</el-button>
     </div>
-    <div style="margin-top: 10px;">
-      <el-button @click="resetMap()">閲嶇疆鍦板浘</el-button>
-    </div>
   </el-drawer>
 
   <el-drawer
@@ -60,6 +57,8 @@
         <div style="margin-top: 5px;">Y锛歿{drawerLocNoData.y}}</div>
         <div style="margin-top: 5px;">Z锛歿{drawerLocNoData.z}}</div>
         <div style="margin-top: 5px;">搴撲綅鍙凤細{{drawerLocNoData.locNo}}</div>
+        <div style="margin-top: 5px;">棰勮璺緞杞﹁締锛歿{drawerLocNoData.moveAdvancePath}}</div>
+        <div style="margin-top: 5px;">璺緞閿佸畾杞﹁締锛歿{drawerLocNoData.lockPathShuttleNo}}</div>
       </div>
     </div>
   </el-drawer>
@@ -127,9 +126,9 @@
   let pixiStageList = [];
   let pixiShuttleMap = new Map();
   let pixiShuttleMoveAdvancePathMap = new Map();
-  let pixiShuttleMoveAdvancePathList = [];
   let pixiShuttleLockPathMap = new Map();
   let pixiStaMap = new Map();
+  let lockPathInfoMap = new Map();
   let objectsContainer;
   let objectsContainer2;
   let objectsContainer3;
@@ -147,7 +146,7 @@
     data: {
       map: [],
       currentLev: 1,
-      floorList: [1, 2, 3], //褰撳墠椤圭洰妤煎眰
+      floorList: [], //褰撳墠椤圭洰妤煎眰
       currentLevShuttleList: [],//褰撳墠妤煎眰鍥涘悜绌挎杞﹂泦鍚�
       shuttleColorList: [],//鍥涘悜绌挎杞﹂鑹查泦鍚�
       drawer: false,
@@ -196,6 +195,7 @@
         ws.onclose = this.webSocketClose
 
         this.getMap(this.currentLev)
+        this.initLev()//鍒濆鍖栨ゼ灞備俊鎭�
         // this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
 
         this.consoleInterval = setInterval(() => {
@@ -203,6 +203,8 @@
           this.getShuttleStateInfo() //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
           this.getLiftStateInfo() //鑾峰彇鎻愬崌鏈轰俊鎭�
           this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
+          this.getMoveAdvancePath(this.currentLev)
+          this.getLockPath(this.currentLev)
         }, 1000)
 
       },
@@ -247,8 +249,8 @@
                 const shuttle = new PIXI.Sprite(resources.shuttle.texture);
                 shuttle.width = width
                 shuttle.height = height
-                shuttle.x = (item.wcsPoint.y - 0) * width;//鏇存柊鍧愭爣x
-                shuttle.y = (item.wcsPoint.x - 1) * height;//鏇存柊鍧愭爣y
+                shuttle.x = (item.point.y - 0) * width;//鏇存柊鍧愭爣x
+                shuttle.y = (item.point.x - 1) * height;//鏇存柊鍧愭爣y
                 shuttle.updateMoveStatus = true;//鍔ㄧ敾鎵ц瀹屾垚
                 shuttle.interactive = true; // 蹇呴』瑕佽缃墠鑳芥帴鏀朵簨浠�
                 shuttle.buttonMode = true; // 璁╁厜鏍囧湪hover鏃跺彉涓烘墜鍨嬫寚閽�
@@ -260,28 +262,12 @@
                 pixiShuttleMap.set(item.shuttleNo, shuttle);
               })
 
-              if (item.moveAdvancePath != null && item.moveAdvancePath.length > 0) {//瀛樺湪棰勮璺緞锛岃繘琛屾覆鏌�
-                this.addMoveAdvancePath(item.moveAdvancePath, item.shuttleNo);//娣诲姞棰勮璺緞
-              }
-
             })
           }else {
             //灏忚溅涓嶅瓨鍦ㄥ彉鍔紝娓叉煋灏忚溅浣嶇疆
             currentLevShuttle.forEach((item,index) => {
               this.updateShuttleXY(item)
             })
-
-            const resultPath = this.findShuttlePathDiffList(JSON.parse(JSON.stringify(this.currentLevShuttleList)), JSON.parse(JSON.stringify(currentLevShuttle)));
-            if (!resultPath) {
-              //棰勮璺緞瀛樺湪鍙樺姩锛屾覆鏌撹矾寰�
-              currentLevShuttle.forEach((item,index) => {
-                //鍒犻櫎棰勮璺緞
-                this.removeMoveAdvancePath(item.shuttleNo);
-                if (item.moveAdvancePath != null && item.moveAdvancePath.length > 0) {//瀛樺湪棰勮璺緞锛岃繘琛屾覆鏌�
-                  this.addMoveAdvancePath(item.moveAdvancePath, item.shuttleNo);//娣诲姞棰勮璺緞
-                }
-              })
-            }
           }
           that.currentLevShuttleList = currentLevShuttle;
         }
@@ -316,7 +302,6 @@
         //娓呯┖棰勮璺緞
         objectsContainer2.removeChildren();
         pixiShuttleMoveAdvancePathMap = new Map();
-        pixiShuttleMoveAdvancePathList = []
       },
       createMap(){
         //Create a Pixi Application
@@ -546,11 +531,32 @@
 
         this.map = map;
       },
-      rightEvent(x, y, e) {
-        this.drawerLocNo = true
-        let locNo = this.getLocNoByXYZ(x, y, this.currentLev);
-        this.drawerLocNoData =  {x:x, y: y, z: this.currentLev, locNo: locNo};
-      },
+        rightEvent(x, y, e) {
+            this.drawerLocNo = true
+            let locNo = this.getLocNoByXYZ(x, y, this.currentLev);
+            let tmpData = {
+                x: x,
+                y: y,
+                z: this.currentLev,
+                locNo: locNo
+            };
+
+            let moveAdvancePath = pixiShuttleMoveAdvancePathMap.get(locNo)
+            if (moveAdvancePath == null || moveAdvancePath == undefined) {
+                moveAdvancePath = "";
+            }else {
+                moveAdvancePath = JSON.stringify(moveAdvancePath.shuttleNos);
+            }
+            tmpData.moveAdvancePath = moveAdvancePath;
+
+            let lockPathShuttleNo = lockPathInfoMap.get(locNo)
+            if (lockPathShuttleNo == null || lockPathShuttleNo == undefined) {
+                lockPathShuttleNo = "";
+            }
+            tmpData.lockPathShuttleNo = lockPathShuttleNo;
+
+            this.drawerLocNoData = tmpData;
+        },
       findDiffList(arr1, arr2) {
         let diff = []
         arr1.forEach((item,index) => {
@@ -633,9 +639,36 @@
           this.setSiteInfo(JSON.parse(result.data))
         }else if (result.url == "/console/map/auth") {
           this.setMap(JSON.parse(result.data))
-        }else if (result.url == "/console/barcode/output/site") {
-          this.setCodeData(JSON.parse(result.data))
+        }else if (result.url == "/console/getMoveAdvancePath/auth") {
+            this.setMoveAdvancePath(JSON.parse(result.data))
+        }else if (result.url == "/console/getLockPath/auth") {
+            this.setLockPath(JSON.parse(result.data))
         }
+      },
+      getMoveAdvancePath(lev) {
+          this.sendWs(JSON.stringify({
+              "url": "/console/getMoveAdvancePath/auth",
+              "data": lev
+          }))
+      },
+      setMoveAdvancePath(res) {
+          let data = res.data;
+          this.addMoveAdvancePath(data)
+      },
+      getLockPath(lev) {
+        this.sendWs(JSON.stringify({
+            "url": "/console/getLockPath/auth",
+            "data": lev
+        }))
+      },
+      setLockPath(res) {
+          let data = res.data;
+          let tmpMap = new Map();
+          data.forEach((item) => {
+              let locNo = this.getLocNoByXYZ(item.x,item.y,item.z)
+              tmpMap.set(locNo, item.shuttleNo);
+          })
+          lockPathInfoMap = tmpMap;
       },
       webSocketClose(e) {
         console.log("close");
@@ -657,11 +690,11 @@
         if (shuttle.updateMoveStatus) {//鍔ㄧ敾鎵ц瀹屾垚鎵嶅彲缁х画鎵ц鍔ㄧ敾
           shuttle.updateMoveStatus = false;//鍔ㄧ敾鎵ц涓�
           // 璁$畻涓ょ偣涔嬮棿鐨勮窛绂�1
-          const distance = Math.sqrt(Math.pow((item.wcsPoint.x * width) - shuttle.x, 2) + Math.pow((item.wcsPoint.y * height) - shuttle.y, 2));
+          const distance = Math.sqrt(Math.pow((item.point.x * width) - shuttle.x, 2) + Math.pow((item.point.y * height) - shuttle.y, 2));
           gsap.killTweensOf(shuttle); // 鏉�姝绘墍鏈夐拡瀵�".class"鐨勫姩鐢�
           gsap.to(shuttle, {
-            x: (item.wcsPoint.y - 0) * width, // 鐩爣浣嶇疆
-            y: (item.wcsPoint.x - 1) * height, // 鐩爣浣嶇疆
+            x: (item.point.y - 0) * width, // 鐩爣浣嶇疆
+            y: (item.point.x - 1) * height, // 鐩爣浣嶇疆
             duration: 0.2, // 鍔ㄧ敾鎸佺画鏃堕棿锛堢锛�
             ease: "power1.inOut", // 缂撳姩绫诲瀷
             onComplete: () => {
@@ -797,21 +830,23 @@
         }
       },
       getLocNoByXYZ(x, y, z) {
-        let locNo = x + "-" + y + "-" + z;
-        return locNo;
+          let locNo = x + "-" + y + "-" + z;
+          return locNo;
       },
-      addMoveAdvancePath(moveAdvancePath, shuttleNo) {//娣诲姞棰勮璺緞
-        let that = this;
+      addMoveAdvancePath(moveAdvancePath) {//娣诲姞棰勮璺緞
+        //娓呯┖棰勮璺緞
+        objectsContainer2.removeChildren();
+        pixiShuttleMoveAdvancePathMap = new Map();
         moveAdvancePath.forEach((path, idx) => {
-          let locNo = that.getLocNoByXYZ(path.x, path.y, path.z);
-          if (!pixiShuttleMoveAdvancePathMap.has(locNo)) {
+            let locNo = this.getLocNoByXYZ(path.x, path.y, path.z);
+            let shuttleNos = path.shuttleNoList;
             let graphics = getGraphics(0x9966ff, width, height, path.y * width, (path.x - 1) * height);
-            let shuttleNos = [shuttleNo];
+
             // 鍒涘缓鏂囨湰瀵硅薄
             const style = new PIXI.TextStyle({
-              fontFamily: 'Arial',
-              fontSize: 10,
-              fill: '#000000',
+                fontFamily: 'Arial',
+                fontSize: 10,
+                fill: '#000000',
             });
             const text = new PIXI.Text(JSON.stringify(shuttleNos), style);
             text.anchor.set(0.5); // 璁剧疆鏂囨湰閿氱偣涓轰腑蹇冪偣
@@ -821,80 +856,35 @@
             graphics.textObj = text;
             objectsContainer2.addChild(graphics)
             pixiShuttleMoveAdvancePathMap.set(locNo, {
-              path: path,
-              sprite: graphics,
-              textObj: text,
-              shuttleNos: shuttleNos
+                path: path,
+                sprite: graphics,
+                textObj: text,
+                shuttleNos: shuttleNos
             })
-
-            if (pixiShuttleMoveAdvancePathList[shuttleNo] == null) {
-              let locNos = new Set()
-              locNos.add(locNo);
-              pixiShuttleMoveAdvancePathList[shuttleNo] = locNos;
-            }else {
-              pixiShuttleMoveAdvancePathList[shuttleNo].add(locNo);
-            }
-          }else {
-            let pathMap = pixiShuttleMoveAdvancePathMap.get(locNo)
-            let shuttleNos = pathMap.shuttleNos;
-            shuttleNos.push(shuttleNo);
-            pathMap.textObj.text = JSON.stringify(shuttleNos);
-            pixiShuttleMoveAdvancePathMap.set(locNo, pathMap);
-            if (pixiShuttleMoveAdvancePathList[shuttleNo] == null) {
-              let locNos = new Set()
-              locNos.add(locNo);
-              pixiShuttleMoveAdvancePathList[shuttleNo] = locNos;
-            }else {
-              pixiShuttleMoveAdvancePathList[shuttleNo].add(locNo);
-            }
-          }
         });
       },
-      removeMoveAdvancePath(shuttleNo) {//鍒犻櫎棰勮璺緞
-        let locNos = pixiShuttleMoveAdvancePathList[shuttleNo];
-        if (locNos != null) {
-          locNos.forEach((locNo,index) => {
-            let pathMap = pixiShuttleMoveAdvancePathMap.get(locNo);
-            if (pathMap != null) {
-              let shuttleNos = pathMap.shuttleNos;
-              let shuttleNosNew = [];
-              shuttleNos.forEach((shuttle, idx) => {
-                if (shuttle != shuttleNo) {
-                  shuttleNosNew.push(shuttle);
+      initLev(){
+            let that = this
+            $.ajax({
+                url: baseUrl + "/console/map/lev/list",
+                headers: {
+                    'token': localStorage.getItem('token')
+                },
+                data: {},
+                method: 'get',
+                success: function(res) {
+                    if (res.code === 200) {
+                        that.floorList = res.data;
+                    } else if (res.code === 403) {
+                        parent.location.href = baseUrl + "/login";
+                    } else {
+                        that.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
                 }
-              });
-
-              if (shuttleNosNew.length === 0) {
-                //棰勮璺緞娌℃湁灏忚溅锛岀洿鎺ュ垹闄よ矾寰�
-                objectsContainer2.removeChild(pathMap.sprite);
-                pixiShuttleMoveAdvancePathMap.delete(locNo)
-              }else {
-                //棰勮璺緞瀛樺湪鍏朵粬灏忚溅锛屾洿鏂版枃瀛椾俊鎭�
-                pathMap.textObj.text = JSON.stringify(shuttleNosNew);
-                pathMap.shuttleNos = shuttleNosNew;
-                pixiShuttleMoveAdvancePathMap.set(locNo, pathMap);
-              }
-            }
-          })
-        }
-      },
-      resetMap() {
-        //閲嶇疆鍦板浘
-        let that = this
-        $.ajax({
-          url:baseUrl+"/console/map/resetMap/" + this.currentLev,
-          headers:{
-            'token': localStorage.getItem('token')
-          },
-          data:{},
-          method:'get',
-          success:function (res) {
-            that.$message({
-              message: that.currentLev + '灞傚湴鍥鹃噸缃畬鎴�',
-              type: 'success'
             });
-          }
-        })
       },
     }
   })

--
Gitblit v1.9.1