From 9e8a54035a7b13ef75558c6e44ae7a7cd55693c9 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 07 十二月 2023 08:39:56 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue                                  |   19 +
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java |  109 ++++--
 CanadaMes-ui/src/views/home/index.vue                                                     |  152 ++++++---
 CanadaMes-ui/src/configuration/ManualJog.json                                             |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java               |   21 +
 CanadaMes-ui/src/views/Electrical/ManualonePosition.vue                                   |   14 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java              |    7 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java              |    6 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java            |    3 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java     |  117 ++++++-
 CanadaMes-ui/src/configuration/ServoManualone.json                                        |   15 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java               |  122 +++---
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java               |    3 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java       |   34 +
 CanadaMes-ui/src/lang/locales/zh-CN.json                                                  |    1 
 /dev/null                                                                                 |   34 --
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java              |    2 
 CanadaMes-ui/src/configuration/Action.json                                                |   12 
 CanadaMes-ui/src/api/home.js                                                              |   17 +
 CanadaMes-ui/src/views/Electrical/Action.vue                                              |   16 
 CanadaMes-ui/src/lang/locales/en-US.json                                                  |   14 
 CanadaMes-ui/src/views/Electrical/ManualJog.vue                                           |    2 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                      |   76 ++++
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java  |  151 +++++---
 24 files changed, 644 insertions(+), 307 deletions(-)

diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 64fb220..beef5bd 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -1,5 +1,22 @@
 import request from "../utils/request";
 
+
+export function SelectPermissionByUserName(username) {
+    return request({
+        url: '/home/SelectPermissionByUserName?username='+username,
+        method: 'get',
+        data:""
+    })
+}
+
+export function currentUsername() {
+    return request({
+        url: '/api/user/currentUsername',
+        method: 'get',
+        
+    })
+ }
+
 /**
  *鐧诲綍
  * @param data
diff --git a/CanadaMes-ui/src/configuration/Action.json b/CanadaMes-ui/src/configuration/Action.json
index fb05bb6..0c25377 100644
--- a/CanadaMes-ui/src/configuration/Action.json
+++ b/CanadaMes-ui/src/configuration/Action.json
@@ -155,42 +155,42 @@
       "page": "1"
     },
     {
-      "name": "B01 YV TURN",
+      "name": "B01 Solenoid TURN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B01 YV UP DOWN",
+      "name": "B01 Solenoid UP DOWN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV TURN",
+      "name": "B02 Solenoid TURN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV UP DOWN",
+      "name": "B02 Solenoid UP DOWN",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B01 YV Gassing",
+      "name": "B01 Solenoid Gassing",
       "value": 1,
       "state": "1",
       "type": "1",
       "page": "1"
     },
     {
-      "name": "B02 YV Gassing",
+      "name": "B02 Solenoid Gassing",
       "value": 1,
       "state": "1",
       "type": "1",
diff --git a/CanadaMes-ui/src/configuration/ManualJog.json b/CanadaMes-ui/src/configuration/ManualJog.json
index d70708a..02678ba 100644
--- a/CanadaMes-ui/src/configuration/ManualJog.json
+++ b/CanadaMes-ui/src/configuration/ManualJog.json
@@ -12,7 +12,7 @@
     {
       "button": {
         "name": "D02杈撻��",
-        "value": 1,
+        "value": 0,
         "address": "DB10.0",
         "state": 0
       },
@@ -21,7 +21,7 @@
     {
       "button": {
         "name": "D03杈撻��",
-        "value": 1,
+        "value": 0,
         "address": "DB10.0",
         "state": 1
       },
diff --git a/CanadaMes-ui/src/configuration/ServoManualone.json b/CanadaMes-ui/src/configuration/ServoManualone.json
index 48bb45c..b557b5f 100644
--- a/CanadaMes-ui/src/configuration/ServoManualone.json
+++ b/CanadaMes-ui/src/configuration/ServoManualone.json
@@ -79,6 +79,7 @@
         "button": {
           "name": "A01鍗婅嚜鍔�",
           "value":0,
+          "type":66,
           "address":"DB10.0"
         }
       },
@@ -86,6 +87,7 @@
         "button": {
           "name": "A01鍗婅嚜鍔ㄥ惎鍔�",
           "value":0,
+          "type":66,
           "address":"DB10.0"
         }
       }
@@ -150,6 +152,7 @@
             "button": {
               "name": "A02鍗婅嚜鍔�",
               "value":0,
+              "type":66,
               "address":"DB10.0"
             }
           },
@@ -157,6 +160,7 @@
             "button": {
               "name": "A02鍗婅嚜鍔ㄥ惎鍔�",
               "value":0,
+              "type":66,
               "address":"DB10.0"
             }
           }
@@ -342,6 +346,17 @@
           }
           
     ]
+    , [
+      {
+          "button": {
+            "name": "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨",
+            "value":0,
+            "address":"DB10.0",
+            "type":"66"
+          }
+        }
+        
+  ]
      
     
   ]
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index e6c052b..3d93c64 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -321,6 +321,7 @@
   "Top":"Top",
   "Up":"Up",
   "Down":"Down",
+  "You do not have this permission":"You do not have this permission",
     "ServoManualone": {
       "A01 鎵�鍦ㄦ牸瀛�": "A01 Current Grid",
       "鏁伴噺": "Quantity",
@@ -343,7 +344,8 @@
       "A02鍗婅嚜鍔�": "A02 Semi-Auto",
       "A02鍗婅嚜鍔ㄥ惎鍔�": "A02 Semi-Auto Start",
       "B01 鎵�鍦ㄦ牸瀛�": "B01 Current Grid",
-      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid"
+      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid",
+      "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨": "Abort/ResumeTasks"
     },
     "langParameter1": {
 
@@ -506,11 +508,11 @@
                 "B01琛岃蛋鐐瑰姩": "B01 SERVE TRAVEL",
                 "B02琛岃蛋鐐瑰姩": "B02 SERVE TRAVEL",
                 "B02缈昏浆姘旂几": "B02 YV TURN",
-                "B02鍗囬檷姘旂几": "B02 YV UP DOWN",
-                "B02鐢电闃�": "B02 YV Gassing",
-                "B01缈昏浆姘旂几": "B01 YV TURN",
-                "B01鍗囬檷姘旂几": "B01 YV UP DOWN",
-                "B01鐢电闃�": "B01 YV Gassing",
+                "B02鍗囬檷姘旂几": "B02 Solenoid UP DOWN",
+                "B02鐢电闃�": "B02 Solenoid Gassing",
+                "B01缈昏浆姘旂几": "B01 Solenoid TURN",
+                "B01鍗囬檷姘旂几": "B01 Solenoid UP DOWN",
+                "B01鐢电闃�": "B01 Solenoid Gassing",
                 "A01杈撻�佸弽鍚�": "A01 VFD conveyor reverse",
                 "A02杈撻�佸弽鍚�": "A02 VFD conveyor reverse",
                 "A01娉ㄧ數娉�": "A01 oil pump",
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 05c7ab5..62696fd 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -313,6 +313,7 @@
   "Top":"缃《",
   "Up":"涓婄Щ",
   "Down":"涓嬬Щ",
+  "You do not have this permission":"You do not have this permission",
   "langparameter": {
     "conveyor Velocity(Auto FAST)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄦ參閫�",
diff --git a/CanadaMes-ui/src/views/Electrical/Action.vue b/CanadaMes-ui/src/views/Electrical/Action.vue
index e3d2757..a037906 100644
--- a/CanadaMes-ui/src/views/Electrical/Action.vue
+++ b/CanadaMes-ui/src/views/Electrical/Action.vue
@@ -71,10 +71,10 @@
           'A02 SERVE TRAVEL POS',
           'B01 SERVE TRAVEL POS',
           'B02 SERVE TRAVEL POS',
-          'B01 YV TURN',
-          'B01 YV UP DOWN',
-          'B02 YV TURN',
-          'B02 YV UP DOWN',
+          'B01 Solenoid TURN',
+          'B01 Solenoid UP DOWN',
+          'B02 Solenoid TURN',
+          'B02 Solenoid UP DOWN',
         ],
         xyData: [
           { name: 'D01 VFD conveyor', value: "0" },
@@ -99,10 +99,10 @@
           { name: 'A02 SERVE TRAVEL POS', value: "0" },
           { name: 'B01 SERVE TRAVEL POS', value: "0" },
           { name: 'B02 SERVE TRAVEL POS', value: "0" },
-          { name: 'B01 YV TURN', value: "0" },
-          { name: 'B01 YV UP DOWN', value: "0" },
-          { name: 'B02 YV TURN', value: "0" },
-          { name: 'B02 YV UP DOWN', value: "0" },
+          { name: 'B01 Solenoid TURN', value: "0" },
+          { name: 'B01 Solenoid UP DOWN', value: "0" },
+          { name: 'B02 Solenoid TURN', value: "0" },
+          { name: 'B02 Solenoid UP DOWN', value: "0" },
         ]
         ,
       },
diff --git a/CanadaMes-ui/src/views/Electrical/ManualJog.vue b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
index 9f88e38..f2e3d13 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualJog.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -125,7 +125,7 @@
     },
     //鏍规嵁璇诲彇PLC鐨勫�硷紝鏍规嵁鍚嶇О鏀瑰彉棰滆壊1鎵撳紑锛�0鍏抽棴
     getStatusClass (zhuangtai) {
-console.log(zhuangtai);
+// console.log(zhuangtai);
       if (zhuangtai === 1) {
         return "op";
       }
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
index 8548381..a411b5e 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -380,6 +380,18 @@
 
               }
 
+              for (let i = 0; i < jsonData2.length; i++) {
+                let arr4 = jsonData2[i];
+                for (let j = 0; j < arr4.length; j++) {
+                  let obj4 = arr4[j];
+                  if (obj4.button && (obj4.button.name.includes("鍚姩") || obj4.button.name.includes("Start"))) {
+                    obj4.button.value = obj.qidong[0][i];
+                    // console.log(obj2.button.value)
+                  }
+                }
+
+
+              }
               for (let i = 2; i < jsonData2.length; i++) {
                 let arr2 = jsonData2[i];
                 for (let j = 2; j < arr2.length; j++) {
@@ -387,7 +399,7 @@
                   if (obj3.button) {
                     if (obj3.button && (obj3.button.name === "鏈洖闆�" || obj3.button.name === "NotZero")) {
                       obj3.button.value = weihuiling[0][i];
-                       console.log(obj3.button.value)
+                      //  console.log(obj3.button.value)
                     }
 
                   }
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
index 22ac330..80affab 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -318,6 +318,9 @@
 
               }
 
+                
+
+
               for (let i = 0; i < jsonData2.length; i++) {
                 let arr2 = jsonData2[i];
                 for (let j = 0; j < arr2.length; j++) {
@@ -330,6 +333,20 @@
 
                   }
 
+                }
+
+
+              }
+
+              //鍚姩
+              for (let i = 0; i < jsonData2.length; i++) {
+                let arr4 = jsonData2[i];
+                for (let j = 0; j < arr4.length; j++) {
+                  let obj4 = arr4[j];
+                  if (obj4.button && (obj4.button.name.includes("鍚姩") || obj4.button.name.includes("Start"))) {
+                    obj4.button.value = obj.qidong[0][i];
+                    // console.log(obj2.button.value)
+                  }
                 }
 
 
@@ -389,7 +406,7 @@
       });
 
 
-      console.log(this.jsonData)
+      // console.log(this.jsonData)
 
     }
 
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 0eea377..88756d3 100644
--- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
+++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -56,8 +56,8 @@
       </el-row>
       <div class="button-row" style="display: flex; justify-content: space-between;">
         <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
-          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
-          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1 }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'huiling': item.button.name === '鍥為浂' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1,'qidong3': item.button.name === 'A01鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong4': item.button.name === 'A02鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong5': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
         </div>
       </div>
     </el-card>
@@ -92,7 +92,7 @@
    
     this.initWebSocket();
     const language = this.$i18n.locale;
-  console.log(language);
+  // console.log(language);
   if (language === 'en-US') {
     this.replaceChineseWithEnglish();
   }
@@ -419,7 +419,6 @@
           socket.close();
           socket = null;
         }
-
         // 寮�鍚竴涓獁ebsocket鏈嶅姟
         socket = new WebSocket(socketUrl);
 
@@ -443,6 +442,32 @@
   const inputBox = document.querySelectorAll('.el-card__body');
   const target = event.target;
   if (obj.zuhe1 && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+    
+    //鍚姩鎸夐挳
+
+    
+
+    
+ 
+ 
+    jsonData2[0][9].button.value = obj.qidong[0][0];  // 绗竴涓瓙鏁扮粍涓涓�涓� type=66 鐨� button
+jsonData2[0][10].button.value = obj.qidong[0][1]; // 绗竴涓瓙鏁扮粍涓浜屼釜 type=66 鐨� button
+jsonData2[1][7].button.value = obj.qidong[0][2];  // 绗簩涓瓙鏁扮粍涓涓�涓� type=66 鐨� button
+jsonData2[1][8].button.value = obj.qidong[0][3];
+
+
+
+// 杈撳嚭鏇存柊鍚庣殑 jsonData2
+
+
+
+
+
+
+
+    
+    
+    
     // 鎵ц鏇存柊閫昏緫
     for (let i = 0; i < 6; i++) {
   jsonData2[i].forEach((item, index) => {
@@ -481,6 +506,13 @@
 
      
 }
+
+
+
+
+
+
+
 //鏈洖闆舵洿鏂�
 
 for (let i = 3; i < jsonData2.length; i++) {
@@ -516,6 +548,26 @@
     }
   });
 });
+//鎬ュ仠
+
+
+for (let i = 0; i < jsonData2.length; i++) {
+  let arr2 = jsonData2[i];
+  for (let j = 0; j < arr2.length; j++) {
+    let obj3 = arr2[j];
+    if(obj3.button){
+      if (obj3.button && (obj3.button.name === "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨" || obj3.button.name === "Abort/ResumeTasks" )) {
+      obj3.button.value = obj.resumeTasks[0][i];
+     console.log(obj3.button.value)
+    }
+
+    }
+   
+  }
+
+     
+}
+
 
 
 
@@ -616,9 +668,23 @@
   background-color: green;
 }
 
-.qidong2 {
+.qidong3 {
+  background-color: green;
+}
+.qidong {
+  background-color: green;
+}
+
+.qidong4 {
   background-color: green;
 }
 
 
+.qidong5 {
+  background-color: green;
+}
+
+.huiling {
+  background-color: green;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 88190e1..68e98c2 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -199,9 +199,12 @@
     font-size: 25px;
 }
 
-@media screen and (min-width: 1900px) { 
-    .blocks{transform: scale(1.5,1.05);width: 1210px;}
-} 
+@media screen and (min-width: 1900px) {
+    .blocks {
+        transform: scale(1.5, 1.05);
+        width: 1210px;
+    }
+}
 
 .el-message-box__btns {
     padding: 0px 15px 0;
@@ -228,7 +231,8 @@
             </div>
             <div style="display:flex;justify-content: space-around;width: 9zz5%;margin: 0 auto;">
                 <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"></el-input>
-                <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Manually Infeed Glass') }}</el-button>
+                <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="ManuallyInfeedGlass">
+                    {{ $t('Manually Infeed Glass') }}</el-button>
                 <!-- <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="order"></el-input>
                 <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button> -->
             </div>
@@ -312,14 +316,19 @@
                         @click="showcageinfo(item['cage'])"></div>
                 </div>
                 <div class="blue gezi"
-                    :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight + 'px', width: 5 + 'px' }">
+                    :style="{ display: 'flex', position: 'absolute', float: 'left', top: 28 + 'px', left: 1050 + 'px', height: loadglassheight1 + 'px', width: 4 + 'px' }">
+                </div>
+                <div class="blue gezi"
+                    :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight2 + 'px', width: 4 + 'px' }">
                 </div>
                 <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
                 <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div>
                 <div class="blocks-img2"></div>
                 <div class="blocks-img3"></div>
-                <el-button class="orderbutton1" type="primary" @click="showform2()">{{ $t('OrderInfo') }}</el-button>
-                <el-button class="orderbutton2" type="primary" @click="showform6()">{{ $t('Outing Queue') }}</el-button>
+                <el-button class="orderbutton1" type="primary" @click="showform2()" :disabled="OrderInfo">{{ $t('OrderInfo')
+                }}</el-button>
+                <el-button class="orderbutton2" type="primary" @click="showform6()" :disabled="OutingQueue">
+                    {{ $t('Outing Queue') }}</el-button>
 
                 <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
                     <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist1" :key="item['date']"
@@ -639,17 +648,20 @@
                 <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column>
                 <el-table-column :width="280" :label="$t('Operate')">
                     <template slot-scope='scope'>
-                        <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)" style="font-size: 15px;"
+                        <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)"
+                            style="font-size: 15px;"
                             :disabled="(scope.$index == 0 || isAllowQueue == true || scope.row.state == 1)">
-                            {{$t('Top')}}
+                            {{ $t('Top') }}
                         </el-button>
-                        <el-button type="text" size="small" @click="getUpMove(scope.row, scope.$index)" style="font-size: 15px;"
+                        <el-button type="text" size="small" @click="getUpMove(scope.row, scope.$index)"
+                            style="font-size: 15px;"
                             :disabled="(scope.$index == 0 || isAllowQueue == true || scope.row.state == 1)">
-                            {{$t('Up')}}
+                            {{ $t('Up') }}
                         </el-button>
-                        <el-button type="text" size="small" @click="getDownMove(scope.row, scope.$index)" style="font-size: 15px;"
+                        <el-button type="text" size="small" @click="getDownMove(scope.row, scope.$index)"
+                            style="font-size: 15px;"
                             :disabled="(OutSlice.length - 1 == scope.$index || isAllowQueue == true || scope.row.state == 1)">
-                            {{$t('Down')}}
+                            {{ $t('Down') }}
                         </el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
                             @click="deleteproductionqueueglass(scope.row.barcode)">{{ $t('Delete') }}</el-button>
@@ -702,7 +714,7 @@
 import {
     home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
     SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo,
-    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates
+    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername
 } from "../../api/home";
 
 
@@ -761,7 +773,8 @@
             cageinfo: [],
             cage: 0,
             carlist: [],
-            loadglassheight: 0,
+            loadglassheight1: 0,
+            loadglassheight2: 0,
             password: 1,
             text: "",
             zhuangtai: "",
@@ -776,13 +789,16 @@
             currentPages: 1,  //榛樿鍒濆椤�
             pagesizes: 21,    //姣忛〉榛樿鏄剧ず鐨勬暟鎹�
             pageCounts: 0,
-
             OutSlice: [],
             AluminumFrame: [],
             framebarcode: "",
             isAllowQueue: true,
             FrameNoFlag: "",
-            isConfirm: true
+            isConfirm: true,
+            ManuallyInfeedGlass: true,
+            OutingQueue: true,
+            OrderInfo: true,
+            CageDetails: true
         };
     },
     created() {
@@ -835,32 +851,37 @@
                         this.OutSlice = obj.listoutslice[0];
                     }
                     //鑾峰彇涓婄墖浣嶇幓鐠冧俊鎭�
-                    this.loadglassheight = obj.loadglassheight;
+
                     if (obj.zhuangtai != null) {
                         this.zhuangtai = obj.zhuangtai[0];
                     }
                     //涓婄墖浣嶇幓鐠冧俊鎭�
                     if (obj.form2 != null && obj.form2 != "") {
                         this.form2 = obj.form2[0];
+                        this.loadglassheight2 = 70;
                     } else {
                         this.form2 = {};
                     }
-                    
+
                     //鏄惁闇�瑕佹墜鍔ㄧ‘璁や笂鐗�
                     this.isConfirm = obj.isConfirm[0];
                     //鎵爜浣嶇幓鐠冧俊鎭�
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) {
                         this.form3 = obj.form3[0];
+                        this.loadglassheight1 = 70;
                     } else {
                         this.form3 = {};
                     }
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
+                        this.loadglassheight1 = 70;
                         this.form5 = obj.form3[0];
                         this.showform3();
                         this.Sizerange(this.form5, 3);
-
+                        this.glassid1="";
                     } else {
-                        this.Sizerange(this.form5, 3);
+                        if(this.glassid1==""){
+                            this.DeleteBarcodeGlass();
+                        }
                     }
                     //鏁版嵁搴撹繛鎺ユ槸鍚︽甯�
                     if (obj.dbconnected == "false") {
@@ -888,6 +909,26 @@
             }
         },
         load() {
+            //鍔犺浇鐢ㄦ埛鏉冮檺
+            currentUsername().then(res => {
+                SelectPermissionByUserName(res.data).then(res => {
+                    res.data.permission.forEach(item => {
+                        if (item.permissionId == "32" && item.state == 1) {
+                            this.ManuallyInfeedGlass = false;
+                        }
+                        if (item.permissionId == "32" && item.state == 1) {
+                            this.OutingQueue = false;
+                        }
+                        if (item.permissionId == "33" && item.state == 1) {
+                            this.OrderInfo = false;
+                        }
+                        if (item.permissionId == "34" && item.state == 1) {
+                            this.CageDetails = false;
+                        }
+                    });
+                });
+
+            });
             //鍔犺浇绗煎瓙浣跨敤鎯呭喌鏁版嵁
             home().then(res => {
                 this.tableData = res.data.list;
@@ -1139,12 +1180,17 @@
         },
         //鏄剧ず鐞嗙墖绗艰鎯呬俊鎭�
         showcageinfo(cage) {
-            cage = this.cageglassid;
-            SelectCageInfo(cage).then(res => {
-                this.cageinfo = res.data.cageinfo;
-                this.currentPages = 1;
-                this.dialogFormVisible3 = true;
-            });
+            if (this.CageDetails == false) {
+                cage = this.cageglassid;
+                SelectCageInfo(cage).then(res => {
+                    this.cageinfo = res.data.cageinfo;
+                    this.currentPages = 1;
+                    this.dialogFormVisible3 = true;
+                });
+            } else {
+                this.$message.error(this.$t('You do not have this permission'));
+            }
+
         },
         //鍒犻櫎鐞嗙墖绗肩幓鐠�
         deleteglass(glassid, state) {
@@ -1379,7 +1425,7 @@
                     this.$message.success(this.$t('Operation successful'));
                 }
             });
-        }, 
+        },
         //缃《
         getTopMove(row, index) {
             let Sequence = [];
@@ -1548,32 +1594,34 @@
         },
         //鍒ゆ柇鐜荤拑鏄惁瓒呭嚭鑼冨洿
         Sizerange(Glass, position) {
-            if ((Glass.glassheight < 380 || Glass.glasswidth < 390 || Glass.glassheight > 1810 || Glass.glasswidth > 2760) || (Glass.glassheight < 390 || Glass.glasswidth < 380 || Glass.glassheight > 2760 || Glass.glasswidth > 1810)) {
-                this.$alert(this.$t('The glass size is not within the range'), this.$t('confirm'), {
-                    confirmButtonText: this.$t('Yes'),
-                    type: 'info',
-                    callback: (action) => {
-                        this.$message({
-                            type: 'info',
-                            message: `action: ${ action }`
-                        }).then(
-                            this.DeleteBarcodeGlass()
-                        );
+            if (this.ManuallyInfeedGlass == true) {
+                if ((Glass.glassheight < 380 || Glass.glasswidth < 390 || Glass.glassheight > 1810 || Glass.glasswidth > 2760) || (Glass.glassheight < 390 || Glass.glasswidth < 380 || Glass.glassheight > 2760 || Glass.glasswidth > 1810)) {
+                    this.$alert(this.$t('The glass size is not within the range'), this.$t('confirm'), {
+                        confirmButtonText: this.$t('Yes'),
+                        type: 'info',
+                        callback: (action) => {
+                            this.$message({
+                                type: 'info',
+                                message: `action: ${action}`
+                            }).then(
+                                this.DeleteBarcodeGlass()
+                            );
+                        }
+                    });
+                    if (position == 1 || position == 3) {
+                        this.disabled1 = true;
+                    } else {
+                        this.disabled = true;
                     }
-                });
-                if (position == 1 || position == 3) {
-                    this.disabled1 = true;
                 } else {
-                    this.disabled = true;
-                }
-            } else {
-                if (position == 1 || position == 3) {
-                    this.disabled1 = false;
-                } else {
-                    this.disabled = false;
-                }
-                if (position == 3&&this.isConfirmState==true) {
-                    this.InsertQueueGlass(1);
+                    if (position == 1 || position == 3) {
+                        this.disabled1 = false;
+                    } else {
+                        this.disabled = false;
+                    }
+                    if (position == 3 && this.isConfirmState == true) {
+                        this.InsertQueueGlass(1);
+                    }
                 }
             }
         },
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index 764e5d8..6ad1391 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -31,7 +31,20 @@
        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
       spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
       jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
-
+//      List<String> adddresslist = new ArrayList<>();
+//      adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
+//      adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
+//      adddresslist.add("DB105.4");// 杩涚墖鐜荤拑瀹�
+//      adddresslist.add("DB105.8");//杩涚墖绗煎唴宸叉湁鐜荤拑鏁�
+//      adddresslist.add("DB105.16");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
+//      List<Short> datas = new ArrayList<>();
+//      datas.add((short) 1000);//璧峰浣嶇疆
+//      datas.add((short) 5);//鐩爣浣嶇疆
+//      datas.add((short) 610);//杩涚墖鐜荤拑瀹�
+//      datas.add((short) 1); //鐜荤拑鏁�
+//      spianService.outmesid("123321","DB105.20");
+//      datas.add((short) 1);//浠诲姟鍚姩
+//      S7control.getinstance().WriteWord(adddresslist, datas);
       // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
       // try {
       // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
@@ -51,7 +64,7 @@
       StringBuilder B02glassid = spianService.queGlassid("DB103.212", 14);// B02鐨勭幓鐠僫d
       // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
       if (B01backs == true) {
-        // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬佷负1
+        // 褰揃01灏忚溅姹囨姤瀹屾垚鏃舵洿鏀圭幓鐠冪姸鎬�  涓�1
         spianMapper.UpdateCageOver(B01glassid.toString(), 1);// 鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
         spianMapper.Updatetask(1, 0);// 鏇存敼杩涚墖浠诲姟鐘舵�佷负1
         spianMapper.UpdatetaskOut(B01glassid.toString()); // 瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰繘鐗囦换鍔�
@@ -79,8 +92,8 @@
       StringBuilder queueid1 = spianService.queGlassid("DB106.26", 14);// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
       // 鑾峰彇DO2鏁版嵁
       StringBuilder queueid2 = spianService.queGlassid("DB103.58", 14);
-      System.out.println("D01|" + queueid1);
-      System.out.println("D02|" + queueid2);
+//      System.out.println("D01|" + queueid1);
+//      System.out.println("D02|" + queueid2);
 
       int questate = spianMapper.Selectquecount(queueid1.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
       // queueid1.toString().isEmpty()
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
index 0f643e0..b12538f 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -10,52 +10,41 @@
 import java.util.List;
 
 public class PlcManualonePosition extends Thread {
-  String name = "";
-  Integer count = 0;
+  private Configuration config;
 
-  public static String readFileToString(String filePath) throws IOException {
-    File file = new File(filePath);
-    return FileUtils.readFileToString(file, "UTF-8");
+  public PlcManualonePosition() throws IOException {
+    config = new Configuration("config.properties");
   }
 
-  public void readValue() {
-    String str = "";
-    BufferedReader bufferedReader = null;
-    FileInputStream fileInputStream;
-    try {
-      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
-      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
-      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
-      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
-      bufferedReader = new BufferedReader(inputStreamReader);
-      String line = null;
-      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
-      while ((line = bufferedReader.readLine()) != null) {
-        str += line;
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
       }
 
-      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
-      JSONObject jsonObject = new JSONObject(str);
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
 
-      // 鑾峰彇json涓殑鍊�
-      JSONArray address = jsonObject.getJSONArray("ManualonePosition");
-      for (int i = 0; i < address.size(); i++) {
-        JSONObject ress = (JSONObject) address.get(i);
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
 
-        this.name = ress.getStr("name");
-        this.count = ress.getInt("count");
-
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
       }
 
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-    } catch (UnsupportedEncodingException e) {
-      e.printStackTrace();
-    } catch (IOException e) {
-      e.printStackTrace();
+      return binaryShortArray;
     }
   }
+
+
+
 
   @Override
   public void run() {
@@ -112,6 +101,25 @@
       addresses10.add("DB104.9.4");
       addresses10.add("DB104.9.5");
       List<Boolean> arraylist10 = S7control.getinstance().readBits(addresses10);
+
+      //A01鍚姩鍦板潃
+      List<String> A01start = Arrays.asList(config.getProperty("mlp.A01start"));
+      //A02鍚姩鍦板潃
+      List<String> A02start = Arrays.asList(config.getProperty("mlp.A02start"));
+
+      List<String> B01start = Arrays.asList(config.getProperty("mlp.B01start"));
+
+      List<String> B02start = Arrays.asList(config.getProperty("mlp.B02start"));
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+      List<Boolean> B01readstart = S7control.getinstance().readBits(B01start);
+      List<Boolean> B02readstart = S7control.getinstance().readBits(B02start);
+
+      short[] combinedBinaryShortArray = PlcManualonePosition.PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart,  A02readstart,B01readstart, B02readstart
+      );
+
       // Short[] values1 = { 1, 2, 3 };
       // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
       // Short[] values2 = { 1, 2, 3 };
@@ -157,7 +165,7 @@
       jsonObject.append("shishi1", arraylist5);
       jsonObject.append("guzhang", params2);
       jsonObject.append("weihuiling", params3);
-      // jsonObject.append("weihuiling", arraylist8);
+      jsonObject.append("qidong", combinedBinaryShortArray);
 
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
       if (sendwServer != null) {
@@ -234,11 +242,20 @@
             }
             if (!sValue.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses1, sValue);
-              List<String> A01start = new ArrayList<>();
-              A01start.add("DB101.2.2");
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
+
+
+
               System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
             }
           }
@@ -264,11 +281,20 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses2, sValue2);
-              List<String> A02start = new ArrayList<>();
-              A02start.add("DB101.2.3");
-              Boolean[] a02values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a01startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
+
+
+
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
             }
           }
@@ -293,11 +319,17 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses3, sValue2);
-              List<String> B01start = new ArrayList<>();
-              B01start.add("DB101.2.4");
-              Boolean[]B01values7 = { true};
-              List<Boolean> B01startval = new ArrayList<>(Arrays.asList(B01values7));
-              S7control.getinstance().WriteBit(B01start, B01startval);
+              if (B01readstart != null && !B01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> b01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : B01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  b01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(B01start, b01startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses3);
             }
           }
@@ -322,11 +354,18 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses4, sValue2);
-              List<String> B02start = new ArrayList<>();
-              B02start.add("DB101.2.5");
-              Boolean[] B02values7 = { true};
-              List<Boolean> B02startval = new ArrayList<>(Arrays.asList(B02values7));
-              S7control.getinstance().WriteBit(B02start, B02startval);
+              if (B02readstart != null && !B02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> b02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : B02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  b02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(B02start, b02startval);
+                System.out.println("Values " + b02startval + " written to PLC at address " + B02start);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses4);
             }
           }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
index 61e8c6f..9fd9c89 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
@@ -10,52 +10,41 @@
 import java.util.List;
 
 public class PlcManualonePosition2 extends Thread {
-  String name = "";
-  Integer count = 0;
+  private Configuration config;
 
-  public static String readFileToString(String filePath) throws IOException {
-    File file = new File(filePath);
-    return FileUtils.readFileToString(file, "UTF-8");
+  public PlcManualonePosition2() throws IOException {
+    config = new Configuration("config.properties");
   }
 
-  public void readValue() {
-    String str = "";
-    BufferedReader bufferedReader = null;
-    FileInputStream fileInputStream;
-    try {
-      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
-      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
-      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
-      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
-      bufferedReader = new BufferedReader(inputStreamReader);
-      String line = null;
-      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
-      while ((line = bufferedReader.readLine()) != null) {
-        str += line;
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
       }
 
-      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
-      JSONObject jsonObject = new JSONObject(str);
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
 
-      // 鑾峰彇json涓殑鍊�
-      JSONArray address = jsonObject.getJSONArray("ServoManualone");
-      for (int i = 0; i < address.size(); i++) {
-        JSONObject ress = (JSONObject) address.get(i);
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
 
-        this.name = ress.getStr("name");
-        this.count = ress.getInt("count");
-
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
       }
 
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-    } catch (UnsupportedEncodingException e) {
-      e.printStackTrace();
-    } catch (IOException e) {
-      e.printStackTrace();
+      return binaryShortArray;
     }
   }
+
+
+
 
   @Override
   public void run() {
@@ -120,12 +109,30 @@
         params3[i] = value ? (short) 1 : (short) 0;
       }
 
+
+
+      //A01鍚姩鍦板潃
+      List<String> A01start = Arrays.asList(config.getProperty("mlp2.A01start"));
+      //A02鍚姩鍦板潃
+      List<String> A02start = Arrays.asList(config.getProperty("mlp2.A02start"));
+
+
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+
+
+      short[] combinedBinaryShortArray = PlcManualonePosition2.PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart,  A02readstart
+      );
+
       JSONObject jsonObject = new JSONObject();
 
       jsonObject.append("zuhe1", arraylist);
       jsonObject.append("zuhe2", arraylist2);
       jsonObject.append("guzhang", params2);
       jsonObject.append("weihuiling", params3);
+      jsonObject.append("qidong", combinedBinaryShortArray);
       // System.out.println(jsonObject);
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition2");
       if (sendwServer != null) {
@@ -186,11 +193,17 @@
             }
             if (!sValue.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses1, sValue);
-              List<String> A01start = new ArrayList<>();
-              A01start.add("DB101.2.0");
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
               System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
             }
           }
@@ -215,11 +228,17 @@
             }
             if (!sValue2.isEmpty()) {
               S7control.getinstance().WriteWord(waddresses2, sValue2);
-              List<String> A02start = new ArrayList<>();
-              A02start.add("DB101.2.1");
-              Boolean[] a02values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a01startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
             }
           }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
index 01b178d..4366a77 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -20,6 +20,32 @@
     config = new Configuration("config.properties");
   }
 
+  public static class PLCBooleanConverter {
+
+    public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+      // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+      int totalSize = 0;
+      for (List<Boolean> list : lists) {
+        totalSize += list.size();
+      }
+
+      // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+      short[] binaryShortArray = new short[totalSize];
+
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      int currentIndex = 0;
+
+      // 閬嶅巻鎵�鏈夌殑鍒楄〃
+      for (List<Boolean> list : lists) {
+        // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+        for (Boolean value : list) {
+          binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+        }
+      }
+
+      return binaryShortArray;
+    }
+  }
 
 //璇诲彇id
   public StringBuilder queGlassid(String address,int count) {
@@ -80,16 +106,11 @@
       //B02缁勫悎鍦板潃
       String b02Address = config.getProperty("B02.address");
       List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
-      System.out.println(b02Address);
+//      System.out.println(b02Address);
      // 鎵�鏈夋晠闅滄寜閽湴鍧�
       List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
       List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
-      // 杩涚墖id鍦板潃
-      String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
-      String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
-      StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
-      // 瀛樼墖id鍦板潃
-      StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
+
       //A01鍚姩鍦板潃
       List<String> A01start = Arrays.asList(config.getProperty("A01start"));
       //A02鍚姩鍦板潃
@@ -98,12 +119,33 @@
       List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart"));
       //A02鍗婅嚜鍔ㄥ湴鍧�
       List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart"));
+      //
+      List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks"));
       //鍥為浂鎸夐挳鍦板潃
       List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(","));
       // 鎵�鏈夊浣嶆寜閽湴鍧�
-      List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses"));
+      List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(","));
+//      System.out.println(Reset);
       // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
-      List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses"));
+      List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(","));
+      // 杩涚墖id鍦板潃
+      String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
+      String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
+      StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
+      // 瀛樼墖id鍦板潃
+      StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
+
+      List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+      List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+      List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart);
+      List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart);
+
+      List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
+
+      short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+              A01readstart, A01readBstart, A02readstart, A02readsBtart
+      );
+
 
 // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
       short[] params2 = new short[arraylist7.size()];
@@ -114,7 +156,7 @@
 
 
       List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
-
+    //  System.out.println(Reset1);
 // 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
       short[] rReset = new short[Reset1.size()];
       for (int i = 0; i < Reset1.size(); i++) {
@@ -182,6 +224,8 @@
       jsonObject.append("jinpianid", queueid1);
       jsonObject.append("qupianid", queueid2);
       jsonObject.append("fuwei", rReset);
+      jsonObject.append("qidong", combinedBinaryShortArray);
+      jsonObject.append("resumeTasks", resumeTasks);
 
 
 
@@ -224,9 +268,18 @@
             if (!sValue.isEmpty()) {
 
           S7control.getinstance().WriteWord(addresses, sValue);
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
+              // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌�
+              if (A01readstart != null && !A01readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a01startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A01readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a01startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A01start, a01startval);
+              }
               System.out.println("Values " + sValue + " written to PLC at address " + addresses);
             }
           }
@@ -253,9 +306,17 @@
             if (!sValue2.isEmpty()) {
             S7control.getinstance().WriteWord(addresses2, sValue2);
 
-              Boolean[] a02values7 = {true};
-              List<Boolean> a02startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a02startval);
+              if (A02readstart != null && !A02readstart.isEmpty()) {
+                // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+                List<Boolean> a02startval = new ArrayList<>();
+                // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+                for (Boolean bit : A02readstart) {
+                  // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+                  a02startval.add(!bit);
+                }
+                // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+                S7control.getinstance().WriteBit(A02start, a02startval);
+              }
               System.out.println("Values " + sValue2 + " written to PLC at address " + addresses2);
             }
           }
@@ -380,6 +441,30 @@
             }
           }
 
+          if (messageArray.getJSONArray(8).size() > 0) {
+            JSONArray jsonArray5 = messageArray.getJSONArray(8);
+            List<Boolean> sValueb5 = new ArrayList<>();
+            for (int i = 0; i < jsonArray5.size(); i++) {
+              Object value = jsonArray5.get(i);
+              if (value != null && !value.toString().equals("null")) {
+                try {
+                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                  boolean val = "1".equals(cleanedValue.trim());
+                  sValueb5.add(val);
+                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValueb5.isEmpty()) {
+
+              S7control.getinstance().WriteBit(abortresumeTasks, sValueb5);
+              System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
+            }
+          }
+
 
           // 娓呯┖娑堟伅鍒楄〃
           webSocketServer.clearMessages();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
index 54d6a6d..ecf88ea 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -28,7 +28,7 @@
     FileInputStream fileInputStream;
     try {
       // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
-      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Alarm.json");
+      fileInputStream = new FileInputStream("src/main/resources/Alarm.json");
       // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
       InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
       // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
@@ -121,7 +121,7 @@
         List<String> myCollection;
         myCollection = readValue();
         String[] array1 = myCollection.toArray(new String[myCollection.size()]);
-
+      //  System.out.println(array1.length);
         alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
         for (short i = 0; i < array1.length; i++) {
           // 鏌ヨ瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁�
@@ -130,7 +130,7 @@
           // System.out.println(result);
           if (shuzu1[i] == 1 && result == 0) {
             // 濉姞涓�鏉℃姤璀︿俊鎭�,鏈夊紑濮嬫椂闂�
-            // alarmMapper.Insertalarm(array1[i]);
+             alarmMapper.Insertalarm(array1[i]);
           } else if (shuzu1[i] == 0 && result > 0) {
             // 淇敼璇ユ潯鎶ヨ淇℃伅鐨勭粨鏉熸椂闂�
             alarmMapper.updatealarm(array1[i]);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index 28c2308..de38cb9 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -1,9 +1,6 @@
 package com.example.springboot.component;
 
 import cn.hutool.json.JSONObject;
-import cn.hutool.poi.excel.sax.handler.MapRowHandler;
-
-import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -19,6 +16,7 @@
 import com.example.springboot.service.North_Glass_Buffer1Service;
 import com.example.springboot.service.SpianService;
 
+
 public class Plchome extends Thread {
 
     @Autowired
@@ -27,13 +25,12 @@
     private SpianService spianService;
     private North_Glass_Buffer1Service north_Glass_Buffer1Service;
     private JdbcConnections dbserve;
-    // 鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
-    public static Boolean isAllowQueue = true;
-    // 閾濇id
+    //鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
+    public static Boolean isAllowQueue=true;
+    //閾濇id
     public static String FrameNo;
-    // 鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
-    public static Boolean isConfirm = false;
-
+    //鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
+    public static Boolean isConfirm=false;
     // public static Map b=new HashMap<>();
     // b.put()
     @Override
@@ -72,39 +69,37 @@
             List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
             jsonObject.append("alarmmg", alarmmg);
             // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
-            List<String> addressList = new ArrayList<String>();
-            if (addressList != null) {
-                addressList.add("DB106.12");
-                addressList.add("DB106.0");
-            }
-
-            List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
-            if (paramlist != null) {
-                jsonObject.append("params", paramlist);
-            }
-            // 鑾峰彇杩涚墖杞︾姸鎬�
-            List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
-                    1);// 鑾峰彇杩涚墖杞︾姸鎬�
-            boolean exist1 = datas1ListState.contains((short) 0);
-            jsonObject.append("zhuangtai", exist1);
-            // 鑾峰彇杩涚墖鐜荤拑淇℃伅
-            List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
-            if (inglassInfo != null) {
-                if (inglassInfo.size() > 0)
-                    jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
-            }
-            // 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
+            // List<String> addressList = new ArrayList<String>();
+            // addressList.add("DB106.12");
+            // addressList.add("DB106.0");
+            // List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
+            // if (paramlist != null) {
+            // jsonObject.append("params", paramlist);
+            // }
+            // // 鑾峰彇杩涚墖杞︾姸鎬�
+            // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
+            // 1);// 鑾峰彇杩涚墖杞︾姸鎬�
+            // boolean exist1 = datas1ListState.contains((short) 0);
+            // jsonObject.append("zhuangtai", exist1);
+            // //鑾峰彇杩涚墖鐜荤拑淇℃伅
+            // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
+            // if (inglassInfo != null) {
+            // if (inglassInfo.size() > 0)
+            // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+            // }
+            
+            // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
             String queid = spianMapper.Selectqueueid();
             int state = spianMapper.Selectqueuestate();
-            jsonObject.append("state", queid);
+            jsonObject.append("queid", queid);
             jsonObject.append("state", state);
             // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
             Queue form2 = homeMapper.GetQueueInfo(2);
             Queue form3 = homeMapper.GetQueueInfo(1);
-            if (form2.getglassId() != null && form2.getglassId() != "") {
+            if(form2.getglassId()!=null&&form2.getglassId()!=""){
                 jsonObject.append("form2", form2);
             }
-            if (form3.getglassId() != null && form3.getglassId() != "") {
+            if(form3.getglassId()!=null&&form3.getglassId()!=""){
                 jsonObject.append("form3", form3);
             }
             // 鑾峰彇鍑虹墖闃熷垪淇℃伅
@@ -113,48 +108,53 @@
                 out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
             }
             jsonObject.append("listoutslice", listoutslice);
-            // 鑾峰彇褰撳墠鍑虹墖闃熷垪鐘舵��
-            jsonObject.append("isAllowQueue", Plchome.isAllowQueue);
+            //鑾峰彇褰撳墠鍑虹墖闃熷垪鐘舵��
+            jsonObject.append("isAllowQueue",Plchome.isAllowQueue);
 
-            // 鑾峰彇閾濇idDB106.DBW64
+            //鑾峰彇閾濇idDB106.DBW64
             // String frameno=spianService.queGlassid("DB106.24",14).toString();
             // if(frameno!=Plchome.FrameNo){
-            // Plchome.FrameNo=frameno;
+            //     Plchome.FrameNo=frameno;
             // }
             // Plchome.FrameNo="123";
             // try {
-            // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+            //     north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
             // } catch (SQLException e) {
-            // // TODO Auto-generated catch block
-            // e.printStackTrace();
+            //     // TODO Auto-generated catch block
+            //     e.printStackTrace();
             // }
-            // 鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
+            //鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
             jsonObject.append("isConfirm", isConfirm);
 
-            // 閾濇绾夸氦浜�
+            //閾濇绾夸氦浜�
 
             // //閾濇id璇锋眰瀛�
             // List<Short> framerequest = S7control.getinstance().ReadWord("閾濇id璇锋眰瀛楀湴鍧�", 1);
             // if(framerequest!=null){
-            // //閾濇id
-            // String franmeno= spianService.queGlassid("閾濇id鍦板潃", 14).toString();
-            // String position;
-            // try {
-            // position=dbserve.SelectPositionByFrameBarcode(franmeno);
-            // } catch (SQLException e) {
-            // // TODO Auto-generated catch block
-            // position="0";
-            // e.printStackTrace();
+            //     //閾濇id
+            //     String franmeno= spianService.queGlassid("閾濇id鍦板潃", 14).toString();
+            //     String position;
+            //         try {
+            //             position=dbserve.SelectPositionByFrameBarcode(franmeno);
+            //         } catch (SQLException e) {
+            //             // TODO Auto-generated catch block
+            //             position="0";
+            //             e.printStackTrace();
+            //         }
+            //     Short send;
+            //     if(position=="0"){
+            //         send=0;
+            //     }else{
+            //         send=1;
+            //     }
+            //     S7control.getinstance().WriteWord("閾濇缈昏浆鍙戦�佸湴鍧�", (short)send);
             // }
-            // Short send;
-            // if(position=="0"){
-            // send=0;
-            // }else{
-            // send=1;
-            // }
-            // S7control.getinstance().WriteWord("閾濇缈昏浆鍙戦�佸湴鍧�", (short)send);
-            // }
+            
 
+            
+            
+
+            
             dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
             boolean dbconnected = false;
             try {
@@ -171,6 +171,8 @@
                 sendwServer.sendMessage(jsonObject.toString());
             }
 
+
+            
         }
     }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
index c62f94f..112ca78 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -79,7 +79,7 @@
 
         List<String> Intlist = new ArrayList<>();
         for (Short value : plclist) {
-          Intlist.add(value == 1 ? "鑷姩" : "鎵嬪姩");
+          Intlist.add(value == 1 ? "AUTO" : "Manual");
 
         }
         JSONObject jsonObject = new JSONObject();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 25d72ac..1f3445c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -5,27 +5,42 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 
 import com.example.springboot.mapper.HomeMapper;
 import com.example.springboot.mapper.SpianMapper;
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.security.util.JwtUtil;
+import com.example.springboot.security.util.SecurityUtil;
 import com.example.springboot.service.HomeService;
 import com.example.springboot.service.JdbcConnections;
 import com.example.springboot.service.North_Glass_Buffer1Service;
 import com.example.springboot.service.OutSliceServive;
+import com.example.springboot.service.PermissionService;
 import com.example.springboot.service.SpianService;
+
+import cn.hutool.core.util.StrUtil;
+
 import com.example.springboot.common.Result;
 import com.example.springboot.component.Plchome;
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.CarPosition;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.User;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Permission;
 import com.example.springboot.entity.Queue;
+import com.example.springboot.entity.RolePermission;
 
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 @RestController
 @RequestMapping("/home")
@@ -51,6 +66,15 @@
   @Autowired
   private JdbcConnections jdbcConnections;
 
+  // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鏉冮檺
+  @GetMapping("/SelectPermissionByUserName")
+  public Result SelectPermissionByUserName(String username) {
+    Map<String, Object> map = new HashMap<>();
+    List<RolePermission> permission = homeMapper.SelectPermissionByUserName(username);
+    map.put("permission", permission);
+    return Result.success(map);
+  }
+
   // 鏌ヨ鐞嗙墖绗间娇鐢ㄦ儏鍐�
   @GetMapping("/load")
   public Result selectAll() {
@@ -63,6 +87,7 @@
   // 鏌ヨ鐞嗙墖绗肩幓鐠冩儏鍐�
   @GetMapping("/loads")
   public Result selectRack() {
+
     List<StorageCage> storageCagelist1 = homeMapper.selectRack1();
     List<StorageCage> storageCagelist2 = homeMapper.selectRack2();
     List<StorageCage> storageCagelist3 = homeMapper.selectRack3();
@@ -167,9 +192,10 @@
       north_glass_buffer1 north_glass_buffer1 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(glassid, "", "");
       String flip = jdbcConnections.SelectFlipByFrameBarcode(north_glass_buffer1.getFrameBarcode());
       String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode());
-      int sequence=homeMapper.SelectMaxSquence();
+      int sequence = homeMapper.SelectMaxSquence();
       homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(),
-          north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),sequence,position);
+          north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),
+          sequence, position);
       map.put("message2", "200");
     } else {
       map.put("message2", "500");
@@ -285,7 +311,7 @@
   @PostMapping("/SelectAluminumFrameInfoById")
   public Result SelectAluminumFrameInfoById(String FrameBarcode) throws SQLException {
     String flip = jdbcConnections.SelectFlipByFrameBarcode(FrameBarcode);
-    List<north_glass_buffer1> listAluminumFrame=north_Glass_Buffer1Service.SelectAluminumFrameInfoById(FrameBarcode);
+    List<north_glass_buffer1> listAluminumFrame = north_Glass_Buffer1Service.SelectAluminumFrameInfoById(FrameBarcode);
     Map<String, Object> map = new HashMap<>();
     map.put("listAluminumFrame", listAluminumFrame);
     map.put("flip", flip);
@@ -332,7 +358,7 @@
     Plchome.isAllowQueue = isAllowQueue;
     if (isAllowQueue == true) {
       for (Out_slice out_slice2 : out_slice) {
-        homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(),out_slice2.getSequence());
+        homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(), out_slice2.getSequence());
       }
     }
     Map<String, Object> map = new HashMap<>();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index 1889fad..3dfec02 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -8,6 +8,7 @@
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.Out_slice;
 import com.example.springboot.entity.Queue;
+import com.example.springboot.entity.RolePermission;
 
 import java.util.List;
 
@@ -167,5 +168,7 @@
   @Select("select ifnull(max(sequence),0)+1 from out_slice ")
   Short SelectMaxSquence();
 
+  @Select("select rp.* from role_permission rp inner join role r on rp.role_id=r.id and r.name=#{token} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35)")
+  List<RolePermission> SelectPermissionByUserName(String token);
 
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 1d58dd7..ffb3918 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -2,11 +2,14 @@
 import org.apache.ibatis.annotations.*;
 
 
+import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.north_glass_buffer1;
 
 import java.util.List;
 
+import javax.print.DocFlavor.STRING;
 
 @Mapper
 
@@ -26,7 +29,7 @@
      @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and disabled=0 and width>=#{width} ORDER BY cell asc,tier asc LIMIT 1")
      StorageCage selectCage1(int  cage1,int cell,double width);
      //鍒ゆ柇绗煎瓙鍐呯幓鐠冩暟
-     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=1;")
+     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state!=0;")
      int selectsum(int cage,int cell);
      //瀹屾垚杩涚墖涓殑鐜荤拑鐘舵��
      @Update("update storage_cage set state=#{state} where glass_id=#{glassid};")
@@ -55,7 +58,7 @@
      StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
 
     //鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
-    @Update("update storage_cage as a set state=#{state},glass_id=null,order_id=null,glasswidth=0,a.glassheight=null,a.glasswidthmm=null,a.glassheightmm=null,a.listid=null,a.boxid=null where glass_id=#{glassid};")
+    @Update("update storage_cage as a set state=#{state},glass_id=null,order_id=null,glasswidth=0,a.glassheight=null,a.glasswidthmm=null,a.glassheightmm=null,a.listid=null,a.boxid=null where glass_id=#{glassid} and state=3;")
     void UpdataGlassCage(String glassid,int state);
      //鏀瑰彉鐜荤拑鐘舵�佷负鍑虹墖涓�
     @Update("update storage_cage as a set state=#{state} where glass_id=#{glassid};")        
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index e26b4ab..2a1c301 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -89,6 +89,7 @@
                     spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                     spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                     S7control.getinstance().WriteWord(adddresslist, datas);
+                    System.out.println("姹囨姤鏃朵换鍔" + datas);
                    
                 }else{
                  // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
@@ -97,6 +98,8 @@
                 spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                 spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                 S7control.getinstance().WriteWord(adddresslist, datas);
+                    System.out.println("姹囨姤鏃朵换鍔" + datas);
+
 
                 // S7control.getinstance().WriteByte("DB105.16",glassid);
                 }
diff --git a/springboot-vue3/src/main/resources/config.properties b/springboot-vue3/src/main/resources/config.properties
deleted file mode 100644
index 41ceb42..0000000
--- a/springboot-vue3/src/main/resources/config.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-#PlcServoManualone 鍦板潃 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# A01缁勫悎涓湴鍧�琛ㄩ泦鍚�
-A01.addresses=DB103.32,DB100.144,DB100.184,DB100.186,DB100.180,DB100.182
-# A02缁勫悎涓湴鍧�琛ㄩ泦鍚�
-A02.addresses=DB103.26,DB100.188,DB100.190,DB100.146
-# A01缈昏浆鍦板潃
-A01.flipAddress=DB103.42
-# A02缈昏浆鍦板潃
-A02.flipAddress=DB103.46
-# B01缁勫悎涓湴鍧�
-B01.address=DB103.27
-# B02缁勫悎鍦板潃
-B02.address=DB103.29
-# 鎵�鏈夋晠闅滄寜閽湴鍧�
-faultButtonAddresses=DB104.1.4,DB104.1.5,DB104.1.2,DB104.1.3,DB104.1.6,DB104.1.7
-# 澶嶄綅鎸夐挳鍦板潃
-resetButtonAddresses=DB101.4.0,DB101.4.3,DB101.3.6,DB101.4.1,DB101.4.4,DB101.4.6
-# 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
-notHomedButtonAddresses=DB104.9.0,DB104.9.1,DB104.9.0,DB104.9.1,DB104.9.4,DB104.9.5
-# 杩涚墖id鍦板潃
-inputGlassIdAddress=DB100.148
-# 瀛樼墖id鍦板潃
-outputGlassIdAddress=DB100.162
-#鍥為浂鎸夐挳鍦板潃
-HomedButtonAddresses=DB101.3.7,DB101.4.2,DB101.4.5,DB101.4.7
-#A02start
-A02start=DB101.5.1
-#A01start
-A01start=DB101.5.0
-#A02start
-A02Bstart=DB101.11.1
-#A01start
-A01Bstart=DB101.11.0
-#------------------------------------------------------------
\ No newline at end of file

--
Gitblit v1.8.0