From de6afc2ec06724885de7cc0eb8b8cad61f8c0b3b Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 07 十二月 2023 08:32:41 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/Electrical/Positioning2.vue                                            |   29 +
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java             |   12 
 CanadaMes-ui/src/views/Electrical/Parameter2.vue                                              |   20 
 CanadaMes-ui/src/views/user/index.vue                                                         |   13 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java         |  336 +++++++---------
 springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java             |   28 +
 CanadaMes-ui/src/views/Electrical/Positioning1.vue                                            |    7 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java                  |    2 
 CanadaMes-ui/src/api/user.js                                                                  |    8 
 springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java |    1 
 CanadaMes-ui/src/views/Electrical/Action.vue                                                  |   16 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java             |    2 
 CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue                                      |   21 
 springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java          |    1 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java     |  109 +++--
 CanadaMes-ui/src/views/role/index.vue                                                         |   73 ++-
 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                                       |   16 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java                  |    4 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java                  |    6 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java                |    3 
 CanadaMes-ui/src/views/power/index.vue                                                        |    8 
 CanadaMes-ui/src/configuration/ServoManualone.json                                            |   15 
 springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java           |    2 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java              |   63 +--
 CanadaMes-ui/src/configuration/Action.json                                                    |   12 
 CanadaMes-ui/src/lang/locales/en-US.json                                                      |   19 
 CanadaMes-ui/src/views/Electrical/ManualJog.vue                                               |   15 
 CanadaMes-ui/src/views/Electrical/Parameter1.vue                                              |    7 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                          |  115 +++++
 springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java               |    3 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java      |  151 ++++--
 33 files changed, 693 insertions(+), 449 deletions(-)

diff --git a/CanadaMes-ui/src/api/user.js b/CanadaMes-ui/src/api/user.js
index 21a65ad..990b18a 100644
--- a/CanadaMes-ui/src/api/user.js
+++ b/CanadaMes-ui/src/api/user.js
@@ -14,6 +14,14 @@
 }
 
 
+export function currentUsername() {
+    return request({
+        url: '/api/user/currentUsername',
+        method: 'get',
+        
+    })
+ }
+
 export function resetPass(data) {
    return request({
        url: '/api/user/resetPass',
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 964f665..3d93c64 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -111,6 +111,8 @@
   "鏈夋晥": "Valid",
   "鏃犳晥": "Invalid",
   "璇疯緭鍏ュ悕绉�": "Please enter a name",
+  "璇疯緭鍏ヨ鑹�": "Please enter a role",
+  "璇疯緭鍏ユ潈闄愭弿杩�":"Please enter a permission description",
   "闀垮害鍦� 2 鍒� 15 涓瓧绗�": "Length between 2 and 15 characters",
   "璇疯緭鍏ョ姸鎬�": "Please enter the status",
   "娣诲姞瑙掕壊": "Add Role",
@@ -342,13 +344,14 @@
       "A02鍗婅嚜鍔�": "A02 Semi-Auto",
       "A02鍗婅嚜鍔ㄥ惎鍔�": "A02 Semi-Auto Start",
       "B01 鎵�鍦ㄦ牸瀛�": "B01 Current Grid",
-      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid"
+      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid",
+      "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨": "Abort/ResumeTasks"
     },
     "langParameter1": {
 
       "A01~A02杈撻��": "A01~A02 Conveying",
       "B01~B02杈撻��": "B01~B02 Conveying",
-      "D01~D02杈撻��": "D01~D02 Conveying",
+      "D01~D06杈撻��": "D01~D06 Conveying",
       "缈昏浆鐐瑰姩閫熷害": "Flip Jog Speed",
       "灏忚溅鐐瑰姩閫熷害": "Cart Jog Speed",
       "鏈�楂橀�熷害": "Max Speed",
@@ -469,7 +472,7 @@
                 "A02鎵嬪姩浣嶇疆": "A02 turn Target Angle(Manual)",
                 "A02瀹氫綅閫熷害": "A02 TURN POS Velocity manual",
                 "A02缈昏浆瀹炴椂浣嶇疆": "A02 turn Actual angle",
-                "A02缈昏浆鍚姩": "SERVE TURN",
+                "A02缈昏浆鍚姩": "A02 SERVE TURN",
                 "A02澶嶄綅": "Reset",
                 "鏈洖闆�": "NotZero",
                 "鍥為浂": "Zero"
@@ -505,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/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 11e6754..f2e3d13 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualJog.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -51,10 +51,11 @@
 
           <div class="button-row" style="display: flex; justify-content: flex-start;flex-wrap:wrap;">
             <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" style="margin: 10px;">
-              <el-button v-if="item.button" :name="item.button.name" :class="getStatusClass(item.button.value)"
-                class="action-button" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend();">{{
-                  item.button.name
-                }}</el-button>
+              <el-button v-if="item.button" :name="item.button.name"
+ :class="{ 'dow': false, 'op': item.button.value === 1 }" class="action-button"
+ @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend();">{{
+ item.button.name
+ }}</el-button>
             </div>
           </div>
         </el-card>
@@ -124,7 +125,7 @@
     },
     //鏍规嵁璇诲彇PLC鐨勫�硷紝鏍规嵁鍚嶇О鏀瑰彉棰滆壊1鎵撳紑锛�0鍏抽棴
     getStatusClass (zhuangtai) {
-console.log(zhuangtai);
+// console.log(zhuangtai);
       if (zhuangtai === 1) {
         return "op";
       }
@@ -171,6 +172,7 @@
 
           // console.log(parms);
 
+if(obj.params){
 
           for (let i = 0; i < jsonData2.length; i++) {
             let arr = jsonData2[i];
@@ -181,6 +183,7 @@
             }
 
           }
+        }
 
 
 
@@ -242,7 +245,7 @@
 
 .action-button {
   margin-right: 10px;
-  background: #66b1ff;
+  background: #A0A0A0;
   color: #FFF;
 }
 
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
index a99e44e..a411b5e 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -338,7 +338,7 @@
           const handleMouseMove = throttle(function (event) {
             const inputBox = document.querySelectorAll('.el-card__body');
             const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+            if (obj.zuhe1 &&inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
               // 鎵ц鏇存柊閫昏緫
               for (let i = 0; i < 4; i++) {
                 jsonData2[i].forEach((item, index) => {
@@ -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 076b1cb..80affab 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -277,7 +277,7 @@
           const handleMouseMove = throttle(function (event) {
             const inputBox = document.querySelectorAll('.el-card__body');
             const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+            if (obj.zuhe1 && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
               // 鎵ц鏇存柊閫昏緫
               for (let i = 0; i < 2; i++) {
                 jsonData2[i].forEach((item, index) => {
@@ -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/Parameter1.vue b/CanadaMes-ui/src/views/Electrical/Parameter1.vue
index 27d8f9a..7401d83 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter1.vue
@@ -97,6 +97,7 @@
     updateButtonValue (dataGroup, itemIndex) {
       this.$set(dataGroup[itemIndex].button, 'value', 1); // 鐐瑰嚮鎸夐挳鍚庡皢鍊兼敼涓�1
     },
+    //鎻愪氦鏁版嵁鍒板悗绔�
     submitDataToBackend () {
       const inputData = this.jsonData.map(dataGroup => {
         return dataGroup.map(item => {
@@ -160,10 +161,11 @@
           const handleMouseMove = throttle(function (event) {
             const inputBox = document.querySelectorAll('.el-card__body');
             const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
-              const parms = obj.params;
+            const parms = obj.params;
               const fanzhuan = obj.fanzhuan;
               const xiaoche = obj.xiaoche;
+            if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+            
               // console.log(obj);
               // console.log('parms:', parms);
               // console.log('fanzhuan:', fanzhuan);
@@ -213,6 +215,7 @@
       }
 
     },
+    //璇█鏇挎崲
     replaceChineseWithEnglish() {
  
    
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter2.vue b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
index 695107d..6dde045 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -66,9 +66,10 @@
             <div class="item-row">
 
               
-              <span class="name" v-if="groupIndex === 13" style="width:250px;">{{ item.name }}</span>
+              <span class="name" v-if="groupIndex === 12" style="width:250px;">{{ item.name }}</span>
               <span class="name" v-else style="width:150px;">{{ item.name }}</span>
-              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"     style="width:400px;" class="input-box"></el-input>
+      
+              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"     style="width:300px;" class="input-box"></el-input>
              
              
             
@@ -212,11 +213,9 @@
   let obj = JSON.parse(msg.data);
  
   const jsonData2 = this.jsonData;
-  // console.log(jsonData2);
-      // 濡傛灉榧犳爣涓嶅湪杈撳叆妗嗗唴锛屾洿鏂拌緭鍏ユ鐨勫��
-      // this.submitDataToBackend()
+
       const parms = obj.params;
-      // const xiaoche = obj.params[3];
+
    
   //  console.log(obj);
 
@@ -226,8 +225,9 @@
   const inputBox = document.querySelectorAll('.action-button');
   const target = event.target;
 
-  if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+  if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
 //娓呴櫎id
+
       for (let i = 0; i < jsonData2.length; i++) {
   let arr = jsonData2[i];
   for (let j = 0; j < arr.length; j++) {
@@ -240,6 +240,7 @@
 
      
 }
+
 //ID
 const specialChars = /[^\w\s]/g; // 姝e垯琛ㄨ揪寮忓尮閰嶉潪瀛楁瘝銆佹暟瀛椼�佷笅鍒掔嚎鍜岀┖鏍肩殑瀛楃
 
@@ -402,6 +403,11 @@
   </script>
   
   <style scoped>
+  html,body{
+width:100%;
+height:85%;
+
+}
   .item-row {
   display: flex;
   align-items: center;
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning1.vue b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
index 68caa1e..0911f6f 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -99,6 +99,7 @@
     updateButtonValue (dataGroup, itemIndex) {
       this.$set(dataGroup[itemIndex].button, 'value', 1); // 鐐瑰嚮鎸夐挳鍚庡皢鍊兼敼涓�1
     },
+    //鎻愪氦鏁版嵁鍒板悗绔�
     submitDataToBackend () {
       const inputData = this.jsonData.map(dataGroup => {
         return dataGroup.map(item => {
@@ -161,10 +162,11 @@
           document.addEventListener('mouseover', function (event) {
             const inputBox = document.querySelectorAll('.el-card__body');
             const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+            const parms = obj.params;
+            if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
               // 濡傛灉榧犳爣涓嶅湪杈撳叆妗嗗唴锛屾洿鏂拌緭鍏ユ鐨勫��
               // this.submitDataToBackend()
-              const parms = obj.params;
+            
               // console.log(parms)
 
 
@@ -208,6 +210,7 @@
 
       }
     },
+    //璇█鏇挎崲
     replaceChineseWithEnglish() {
  
    
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning2.vue b/CanadaMes-ui/src/views/Electrical/Positioning2.vue
index 889be3b..0e6ca75 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning2.vue
@@ -44,7 +44,7 @@
       }}</router-link>
     </el-breadcrumb>
 
-    <el-row :gutter="18" class='card'>
+   <el-row :gutter="18" class='card'>
       <el-col :span="7" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
         <el-card class="json-block">
           <div class="button-row" style="display: flex; justify-content: space-between;">
@@ -81,11 +81,15 @@
       jsonData: data // 鍔犺浇鏁翠釜data.json鏂囦欢浣滀负jsonData
     }
   },
-  activated(){
+ activated(){
+    // 婵�娲荤粍浠舵椂璋冪敤
+    // 鍒濆鍖朩ebSocket
    
     this.initWebSocket ();
+   // 鑾峰彇褰撳墠璇█
    const language = this.$i18n.locale;
   console.log(language);
+  // 濡傛灉褰撳墠璇█鏄嫳璇紝鍒欏皢涓枃鏇挎崲涓鸿嫳鏂�
   if (language === 'en-US') {
     this.replaceChineseWithEnglish();
   }
@@ -95,14 +99,19 @@
     updateButtonValue (dataGroup, itemIndex) {
       this.$set(dataGroup[itemIndex].button, 'value', 1); // 鐐瑰嚮鎸夐挳鍚庡皢鍊兼敼涓�1
     },
-    submitDataToBackend () {
+    //鎻愪氦鏁版嵁鍒板悗绔�
+   submitDataToBackend () {
+      // 灏唈sonData杞崲涓烘暟缁�
       const inputData = this.jsonData.map(dataGroup => {
         return dataGroup.map(item => {
+          // 濡傛灉鏄暟瀛楃被鍨嬶紝鍒欒浆鎹负鏁存暟
           if (item.type === '0') {
             return { value: parseInt(item.value) };
+          // 濡傛灉鏄寜閽被鍨嬶紝鍒欒浆鎹负鏁存暟
           } else if (item.button) {
             return { value: parseInt(item.title.value) };
           }
+          // 鍚﹀垯杩斿洖null
           return null;
         });
       });
@@ -110,9 +119,11 @@
       // 灏唅nputData杞崲涓烘暣鏁版暟缁�
       const integerArray = inputData.map(dataGroup => {
         return dataGroup.map(item => {
+          // 濡傛灉item涓嶄负null锛屽垯杩斿洖item.value
           if (item !== null) {
             return item.value;
           }
+          // 鍚﹀垯杩斿洖null
           return null;
         });
       });
@@ -157,12 +168,14 @@
           document.addEventListener('mouseover', function (event) {
             const inputBox = document.querySelectorAll('.el-card__body');
             const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+            const parms = obj.params;
+            if ( parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
               // 濡傛灉榧犳爣涓嶅湪杈撳叆妗嗗唴锛屾洿鏂拌緭鍏ユ鐨勫��
               // this.submitDataToBackend()
-              const parms = obj.params;
+              
 
               // console.log(parms)
+
               let index = 0;
               for (let i = 0; i < jsonData2.length; i++) {
                 let arr = jsonData2[i];
@@ -198,6 +211,7 @@
 
       }
     },
+    //璇█鏇挎崲
     replaceChineseWithEnglish() {
  
    
@@ -223,9 +237,12 @@
 // console.log(this.jsonData)
 
 },
-    send () {
+   send () {
 
 
+      // 鍚戞湇鍔″櫒鍙戦�佹秷鎭�
+
+      // 鍚戞湇鍔″櫒鍙戦�佹秷鎭�
       socket?.send(JSON.stringify(this.messagepack));
     },
 
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 4512f87..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();
   }
@@ -121,6 +121,8 @@
   }
 },
 submitDataToBackend(currentButtonName) {
+
+//A01鍗婅嚜鍔ㄥ惎鍔ㄦ彁浜�
   if (currentButtonName === 'A01鍗婅嚜鍔ㄥ惎鍔�' ||currentButtonName === 'A01 Semi-Auto Start') {
     const data = [];
 
@@ -159,6 +161,7 @@
 socket?.send(jsonString);
 
   }
+  //A02鍗婅嚜鍔ㄥ惎鍔� 鎻愪氦
 
   if (currentButtonName === 'A02鍗婅嚜鍔ㄥ惎鍔�' ||currentButtonName === 'A02 Semi-Auto Start') {
     const data2 = [];
@@ -199,6 +202,8 @@
 
   }
 
+  //澶嶄綅鎻愪氦
+
   if (currentButtonName === '澶嶄綅' || currentButtonName === 'Reset') {
   const data2 = [];
   const resetButtonValues = this.jsonData.map(item => {
@@ -227,7 +232,7 @@
   // )
  
 }
-
+////鍥為浂鎻愪氦
 if (currentButtonName === '鍥為浂' || currentButtonName === 'Home') {
   const data3 = [];
   const resetButtonValues3 = this.jsonData.map(item => {
@@ -256,7 +261,7 @@
 }
 
 
-
+//A01鍗婅嚜鍔ㄦ彁浜�
 
   if (currentButtonName === 'A01鍗婅嚜鍔�' || currentButtonName === 'A01 Semi-Auto' ) {
     const elements = document.getElementsByClassName('special-class');
@@ -327,18 +332,26 @@
 
 
   if (currentButtonName === 'A02鍗婅嚜鍔�' || currentButtonName === 'A02 Semi-Auto' ) {
+    // 鑾峰彇鎵�鏈塩lass涓簊pecial-class2鐨勫厓绱�
     const elements = document.getElementsByClassName('special-class2');
   
     const data = [];
+    // 閬嶅巻鎵�鏈夊厓绱�
     for (let i = 0; i < elements.length; i++) {
+      // 濡傛灉鍏冪礌闅愯棌
       if (elements[i].style.display === 'none') {
+        // 鏄剧ず鍏冪礌
         elements[i].style.display = ''; // 鏄剧ず鍏冪礌
          this.zhi2=1;
+         // 閬嶅巻jsonData
          for (let i = 0; i < this.jsonData.length; i++) {
                 let arr = this.jsonData[i];
+                // 閬嶅巻arr
                 for (let j = 0; j < arr.length; j++) {
                   let obj2 = arr[j];
+                  // 濡傛灉button鐨刵ame涓篈02鍗婅嚜鍔ㄦ垨鑰匒02 Semi-Auto
                   if (obj2.button && (obj2.button.name === "A02鍗婅嚜鍔�" || obj2.button.name === "A02 Semi-Auto")) {
+                    // 璁剧疆button鐨剉alue涓�1
                     obj2.button.value = 1;
                     // console.log(obj2.button.value)
                   }
@@ -348,13 +361,18 @@
               }
 
       }else{
+        // 濡傛灉鍏冪礌鏄剧ず
         elements[i].style.display = 'none';
         this.zhi2=0;
+        // 閬嶅巻jsonData
         for (let i = 0; i < this.jsonData.length; i++) {
                 let arr = this.jsonData[i];
+                // 閬嶅巻arr
                 for (let j = 0; j < arr.length; j++) {
                   let obj2 = arr[j];
+                  // 濡傛灉button鐨刵ame涓篈02鍗婅嚜鍔ㄦ垨鑰匒02 Semi-Auto
                   if (obj2.button && (obj2.button.name === "A02鍗婅嚜鍔�" || obj2.button.name === "A02 Semi-Auto")) {
+                    // 璁剧疆button鐨剉alue涓�0
                     obj2.button.value = 0;
                     // console.log(obj2.button.value)
                   }
@@ -365,8 +383,10 @@
       } 
     }
 
+    // 灏唞hi2娣诲姞鍒癲ata鏁扮粍涓�
      data.push([this.zhi2]);
 
+    // 灏哾ata鏁扮粍娣诲姞鍒癹sonObject涓�
     data.unshift([],[],[],[],[],[],[]);
 
 
@@ -399,7 +419,6 @@
           socket.close();
           socket = null;
         }
-
         // 寮�鍚竴涓獁ebsocket鏈嶅姟
         socket = new WebSocket(socketUrl);
 
@@ -422,7 +441,33 @@
   const handleMouseMove = throttle(function(event) {
   const inputBox = document.querySelectorAll('.el-card__body');
   const target = event.target;
-  if (inputBox && Array.from(inputBox).every(box => !box.contains(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) => {
@@ -433,7 +478,7 @@
 }
 
 
-
+//鏁呴殰鏇存柊
 
 for (let i = 0; i < jsonData2.length; i++) {
   let arr = jsonData2[i];
@@ -448,7 +493,7 @@
      
 }
 
-
+// 澶嶄綅鏇存柊
 for (let i = 0; i < jsonData2.length; i++) {
   let arr = jsonData2[i];
   for (let j = 0; j < arr.length; j++) {
@@ -461,6 +506,14 @@
 
      
 }
+
+
+
+
+
+
+
+//鏈洖闆舵洿鏂�
 
 for (let i = 3; i < jsonData2.length; i++) {
   let arr2 = jsonData2[i];
@@ -479,6 +532,7 @@
      
 }
 // console.log(jsonData2)
+//杩涚墖id
 jsonData2.forEach((item) => {
   item.forEach((subItem) => {
     if (subItem.read === 9999) {
@@ -486,7 +540,7 @@
     }
   });
 });
-
+//鍙栫墖id
 jsonData2.forEach((item) => {
   item.forEach((subItem) => {
     if (subItem.read === 8888) {
@@ -494,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)
+    }
+
+    }
+   
+  }
+
+     
+}
+
 
 
 
@@ -527,6 +601,7 @@
      
       socket?.send(JSON.stringify(this.messagepack));
     },
+    //鏇挎崲璇█
     replaceChineseWithEnglish() {
  
    
@@ -558,7 +633,11 @@
 </script>
 
 <style scoped>
+html,body{
+width:100%;
+height:85%;
 
+}
 
 .item-row {
   display: flex;
@@ -589,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/power/index.vue b/CanadaMes-ui/src/views/power/index.vue
index eb274a9..013b980 100644
--- a/CanadaMes-ui/src/views/power/index.vue
+++ b/CanadaMes-ui/src/views/power/index.vue
@@ -183,15 +183,15 @@
       // 娣诲姞鏉冮檺鐨勯獙璇佽鍒�
       powerRules: {
         roleId: [
-          {required: true, message: '璇疯緭鍏ヨ鑹�', trigger: 'blur'}
+          {required: true, message: this.$t('璇疯緭鍏ヨ鑹�'), trigger: 'blur'}
         ],
         permissionId: [
-          {required: true, message: '璇疯緭鍏ユ潈闄愭弿杩�', trigger: 'blur'},
+          {required: true, message: this.$t('璇疯緭鍏ユ潈闄愭弿杩�'), trigger: 'blur'},
         ]
       },
       options: [
-        {label: '鐢熸晥', value: 1},
-        {label: '鏃犳晥', value: 0}
+        {label: this.$t('鐢熸晥'), value: 1},
+        {label: this.$t('鏃犳晥'), value: 0}
       ],
       roleList: [],
       permissionList: []
diff --git a/CanadaMes-ui/src/views/role/index.vue b/CanadaMes-ui/src/views/role/index.vue
index 22d50ae..ae70468 100644
--- a/CanadaMes-ui/src/views/role/index.vue
+++ b/CanadaMes-ui/src/views/role/index.vue
@@ -114,14 +114,14 @@
   <el-form label-width="130px">
     <el-form-item :label="$t('langPermissions')" prop="permissionList">
       <el-checkbox-group v-model="selectedPermissions">
-        <el-checkbox
-          v-for="(permission, index) in permissionList"
-          :key="index"
-          :label="permission.name"
-          :checked="permission.state === 1"
-          @change="updatePermissionState(permission.name, $event)"
-        >{{ permission.name }}</el-checkbox>
-      </el-checkbox-group>
+  <el-checkbox
+    v-for="(permission, index) in permissionList"
+    :key="index"
+    :label="permission.name"
+    @change="updatePermissionState(permission.name, $event)"
+  >{{ permission.name }}</el-checkbox>
+</el-checkbox-group>
+
     </el-form-item>
   </el-form>
   <span slot="footer" class="dialog-footer">
@@ -178,16 +178,16 @@
       // 娣诲姞瑙掕壊鐨勯獙璇佽鍒�
       addRoleRules: {
         name: [
-          {required: true, message:  '璇疯緭鍏ュ悕绉�', trigger: 'blur'},
-          {min: 2, max: 15, message: '闀垮害鍦� 2 鍒� 15 涓瓧绗�', trigger: 'blur'}
+          {required: true, message:  this.$t('璇疯緭鍏ュ悕绉�'), trigger: 'blur'},
+          {min: 2, max: 15, message: this.$t('闀垮害鍦� 2 鍒� 15 涓瓧绗�'), trigger: 'blur'}
         ],
         state: [
-          {required: true, message: '璇疯緭鍏ョ姸鎬�', trigger: 'blur'}
+          {required: true, message: this.$t('璇疯緭鍏ョ姸鎬�'), trigger: 'blur'}
         ]
       },
       options: [
-        {label: '鏈夋晥', value: 1},
-        {label: '鏃犳晥', value: 0}
+        {label: this.$t('鏈夋晥'), value: 1},
+        {label: this.$t('鏃犳晥'), value: 0}
       ]
     }
   },
@@ -251,22 +251,37 @@
     },
 
 
-    showPermissionDialog(role) {
-      this.selectedPermissions=[];
-      this.permissionList=[];
-    
-      getById2({ roleId: role.id }).then((res) => {
-        this.permissionList = res.data.permissionList;
-      
+   // 鍦� showPermissionDialog 鏂规硶涓紝鍙皢閫変腑鐨勬潈闄愬悕绉版坊鍔犲埌 selectedPermissions 鏁扮粍涓�
+showPermissionDialog(role) {
+  this.selectedPermissions = [];
+  this.permissionList = [];
+  
+  getById2({ roleId: role.id }).then((res) => {
+    this.permissionList = res.data.permissionList;
+    // 鍙湁鐘舵�佷负 1 鐨勬潈闄愬悕绉颁細琚坊鍔犲埌 selectedPermissions 鏁扮粍涓�
+    this.selectedPermissions = this.permissionList
+      .filter(permission => permission.state === 1)
+      .map(permission => permission.name);
+    this.permissionDialogVisible = true;
+  });
+},
 
-        this.selectedPermissions = this.permissionList.map(({ name, state }) => ({
-          name,
-          state: state === 1,
-        }));
-        console.log(this.selectedPermissions);
-        this.permissionDialogVisible = true;
-      });
-    },
+// 鍦� updatePermissionState 鏂规硶涓紝鏍规嵁澶嶉�夋鐨勫嬀閫夌姸鎬佹洿鏂� selectedPermissions 鏁扮粍
+// updatePermissionState(name, isChecked) {
+//   if (isChecked) {
+//     // 濡傛灉澶嶉�夋琚嬀閫夛紝灏嗘潈闄愬悕绉版坊鍔犲埌鏁扮粍涓�
+//     if (!this.selectedPermissions.includes(name)) {
+//       this.selectedPermissions.push(name);
+//     }
+//   } else {
+//     // 濡傛灉澶嶉�夋琚彇娑堝嬀閫夛紝灏嗘潈闄愬悕绉颁粠鏁扮粍涓Щ闄�
+//     const index = this.selectedPermissions.indexOf(name);
+//     if (index !== -1) {
+//       this.selectedPermissions.splice(index, 1);
+//     }
+//   }
+// },
+
 // 鍙栨秷缂栬緫鏉冮檺寮瑰嚭妗�
 cancelEditPermissions() {
   this.permissionDialogVisible = false;
@@ -277,6 +292,7 @@
     if (permission) {
       permission.state = isChecked ? 1 : 0;
     }
+    
   },
 
   
@@ -293,6 +309,7 @@
     // 鎴愬姛鏇存柊鏉冮檺鍚庢墽琛岀殑鎿嶄綔
     const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
         this.$message.success(鏇存柊鐘舵�佹垚鍔�);
+        this.permissionDialogVisible = false;
   });
 },
     // 灞曠ず娣诲姞瑙掕壊鐨勫璇濇
diff --git a/CanadaMes-ui/src/views/user/index.vue b/CanadaMes-ui/src/views/user/index.vue
index ba3de75..834c562 100644
--- a/CanadaMes-ui/src/views/user/index.vue
+++ b/CanadaMes-ui/src/views/user/index.vue
@@ -137,7 +137,7 @@
 
 
 <script>
-import { getById, removeById, saveOrUpdate, selectPage, resetPass } from "../../api/user";
+import { getById, removeById, saveOrUpdate, selectPage, resetPass,currentUsername } from "../../api/user";
 import { select } from "../../api/role";
 
 import LanguageMixin from '../../lang/LanguageMixin'
@@ -193,6 +193,8 @@
   },
   created () {
     this.getUserList();
+    this.getyonghu();
+ 
   },
   methods: {
     getUserList () {
@@ -239,6 +241,7 @@
         const successMessage = this.$t('updateSuccessMessage');
         this.$message.success(successMessage);
       });
+
     },
     resetPassword (info) {
   this.$confirm(this.$t('confirmResetPassword'), this.$t('resetPassword'), {
@@ -265,6 +268,14 @@
     this.roleList = res.data;
   });
 },
+
+getyonghu () {
+  currentUsername().then(res => {
+   console.log(res)
+  });
+
+ 
+},
 removeUserById (user) {
   // 寮规璇㈤棶鐢ㄦ埛鏄惁鍒犻櫎鍒嗙被
   this.$confirm(this.$t('confirmDeleteCategory'), this.$t('prompt'), {
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java b/springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java
new file mode 100644
index 0000000..9a0165c
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Configuration.java
@@ -0,0 +1,28 @@
+package com.example.springboot.component;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+// Configuration 绫荤敤浜庡姞杞介厤缃枃浠跺苟鎻愪緵璁块棶閰嶇疆椤圭殑鏂规硶銆�
+public class Configuration {
+    private Properties properties; // Properties 瀵硅薄锛岀敤浜庡瓨鍌ㄩ厤缃枃浠朵腑鐨勯敭鍊煎銆�
+
+    // 鏋勯�犲嚱鏁帮紝鏍规嵁浼犲叆鐨勬枃浠跺悕鍔犺浇閰嶇疆鏂囦欢銆�
+    public Configuration(String fileName) throws IOException {
+        // 浣跨敤绫诲姞杞藉櫒鑾峰彇璧勬簮鏂囦欢鐨勮緭鍏ユ祦銆�
+        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName);
+        // 濡傛灉杈撳叆娴佷负null锛岃〃绀烘湭鎵惧埌鏂囦欢锛屾姏鍑篎ileNotFoundException銆�
+        if (inputStream == null) {
+            throw new FileNotFoundException("Property file '" + fileName + "' not found in the classpath");
+        }
+        properties = new Properties(); // 瀹炰緥鍖朠roperties瀵硅薄銆�
+        properties.load(inputStream); // 浠庤緭鍏ユ祦鍔犺浇閰嶇疆椤广��
+    }
+
+    // 鏍规嵁閰嶇疆椤圭殑閿幏鍙栧叾瀵瑰簲鐨勫�笺��
+    public String getProperty(String key) {
+        return properties.getProperty(key);
+    }
+}
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 d40420e..89da29c 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
@@ -39,7 +39,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);
@@ -59,7 +72,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()); // 瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰繘鐗囦换鍔�
@@ -87,8 +100,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/PlcParameter1.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
index e2fa2b8..18ce165 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
@@ -85,7 +85,7 @@
       addresses.add("DB100.38");
       addresses.add("DB100.40");
       List<Short> arraylist = S7control.getinstance().readWords(addresses);
-
+//缈昏浆
     List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.8", 1);
     List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.12", 1);
       // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
index 81522f1..81ad490 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -117,13 +117,13 @@
       addressList0.add("DB101.10.2");
       addressList0.add("DB101.10.3");
 
-
+     // 鎵爜鏋�
       List<Boolean> data2 = S7control.getinstance().readBits(addressList0);
       List<String> addressList3 = new ArrayList<>();
       addressList3.add("DB103.256");
       addressList3.add("DB103.270");
       List<String> data3 = S7control.getinstance().readStrings(addressList3);
-
+// A01 A02 B01 B02
       List<String> addresses4 = new ArrayList<>();
       addresses4.add("DB103.52");
       addresses4.add("DB103.54");
@@ -143,10 +143,10 @@
 
 //      String[] values6 = { ".x1 ","x2 ","x3",";;x4","x5","x6","x7","x8","x9","x10","x11"};
 //      List<String> paramlist = new ArrayList<>(Arrays.asList(values6));
-//      Short[] values1 = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+//      Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
 //     List<Short> data = new ArrayList<>(Arrays.asList(values1));
-//      Boolean[] value4 = { true, true, true, true, true, true, true, true, true,
-//              true};
+//      Boolean[] value4 = { false, false, false, false, false, false, false, false, false,
+//              false};
 //     List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4));
 //      String[] values3 = { ".x11 ","x21 "};
 //      List<String> data3 = new ArrayList<>(Arrays.asList(values3));
@@ -217,7 +217,7 @@
           }
 
           // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
-//       S7control.getinstance().WriteBit(addressList, messageBooleans);
+    S7control.getinstance().WriteBit(addressList, messageBooleans);
           System.out.println("messageValues锛�" + messageBooleans);
           System.out.println("addressList锛�" + addressList);
           // 娓呯┖娑堟伅鍒楄〃
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 21ab755..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
@@ -11,40 +11,43 @@
 import java.util.List;
 
 public class PlcServoManualone extends Thread {
-  String name = "";
-  Integer count = 0;
 
-  public static String readFileToString(String filePath) throws IOException {
-    File file = new File(filePath);
-    return FileUtils.readFileToString(file, "UTF-8");
+
+
+  private Configuration config;
+
+  public PlcServoManualone() throws IOException {
+    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];
 
-//  public void insertDataToList(List<Short> list, String rangeAddress, int insertIndex) {
-//    if (list.size() >= insertIndex + 14) {
-//      List<Short> rangeData = new ArrayList<>();
-//      byte[] byteData = S7control.getinstance().ReadByte(rangeAddress, 14);
-//      if (byteData != null && byteData.length >= 13) {
-//        for (byte b : byteData) {
-//          rangeData.add((short) b);
-//        }
-//      } else {
-//        // 璇诲彇鏁版嵁澶辫触锛屾坊鍔犻粯璁ゅ��
-//        for (int i = 0; i < 14; i++) {
-//          rangeData.add((short) -1);
-//        }
-//      }
-//
-//      list.addAll(insertIndex, rangeData);
-//    }else{
-//      List<Short> rangeData = new ArrayList<>();
-//      rangeData.add((short) 0);
-//      list.addAll(insertIndex, rangeData);
-//    }
-//  }
+      // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+      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) {
     StringBuilder writedstrIdOut = new StringBuilder();
     byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
@@ -56,7 +59,7 @@
     }
     return writedstrIdOut;
   }
-
+//鍐欏叆id
   public void outmesid(String glassid,String address) {
     //System.out.println("outmesid:" + glassid);
     List<Byte> glassidlist = new ArrayList();
@@ -66,7 +69,7 @@
     }
     byte[] bytes = Bytes.toArray(glassidlist);
     System.out.println("outmesidbytes:" + bytes.length);
-    S7control.getinstance().WriteByte(address, bytes);// 娲惧彂鍑虹墖id
+    S7control.getinstance().WriteByte(address, bytes);
   }
 
   @Override
@@ -80,59 +83,69 @@
       }
 
 //A01缁勫悎涓湴鍧�琛ㄩ泦鍚�
-      List<String> addresses = new ArrayList<>();
-      addresses.add("DB103.32");
-      addresses.add("DB100.144");
-      addresses.add("DB100.184");
-      addresses.add("DB100.186");
-      addresses.add("DB100.180");
-      addresses.add("DB100.182");
+      List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(","));
+      //System.out.println(addresses);
 
       List<Short> arraylist = S7control.getinstance().readWords(addresses);
 
-//      String rangeAddress = "DB100.148-161";
-//      String rangeAddress = "DB100.148";
-//      int insertIndex = 2;
-//      insertDataToList(arraylist, rangeAddress, insertIndex);
-
 //A02缁勫悎涓湴鍧�琛ㄩ泦鍚�
-      List<String> addresses2 = new ArrayList<>();
-      addresses2.add("DB103.26");
-      addresses2.add("DB100.188");
-      addresses2.add("DB100.190");
-      addresses2.add("DB100.146");
-//      addresses2.add("DB100.162-175");
+      List<String> addresses2 = Arrays.asList(config.getProperty("A02.addresses").split(","));
       List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
-//      String rangeAddress2 = "DB100.148-161";
-//      String rangeAddress2 = "DB100.162";
-//      int insertIndex2 = 4;
-//      insertDataToList(arraylist2, rangeAddress2, insertIndex2);
-//      System.out.println(arraylist2);
 
       //A01缈昏浆鍦板潃
-      List<String> addresses3 = new ArrayList<>();
-      addresses3.add("DB103.42");
+      List<String> addresses3 = Arrays.asList(config.getProperty("A01.flipAddress"));
       List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
 
-
       //A02缈昏浆鍦板潃
-      List<String> addresses4 = new ArrayList<>();
-      addresses4.add("DB103.46");
+      List<String> addresses4 = Arrays.asList(config.getProperty("A02.flipAddress"));
+
       List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
      //B01缁勫悎涓湴鍧�
-      List<Short> arraylist5 = S7control.getinstance().ReadWord("DB103.27", 2);
+      String b01Address = config.getProperty("B01.address");
+      List<Short> arraylist5 = S7control.getinstance().ReadWord(b01Address, 2);
       //B02缁勫悎鍦板潃
-      List<Short> arraylist6 = S7control.getinstance().ReadWord("DB103.29", 2);
-
+      String b02Address = config.getProperty("B02.address");
+      List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
+//      System.out.println(b02Address);
      // 鎵�鏈夋晠闅滄寜閽湴鍧�
-      List<String> addresses7 = new ArrayList<>();
-      addresses7.add("DB104.1.4");
-      addresses7.add("DB104.1.5");
-      addresses7.add("DB104.1.2");
-      addresses7.add("DB104.1.3");
-      addresses7.add("DB104.1.6");
-      addresses7.add("DB104.1.7");
+      List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
       List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
+
+      //A01鍚姩鍦板潃
+      List<String> A01start = Arrays.asList(config.getProperty("A01start"));
+      //A02鍚姩鍦板潃
+      List<String> A02start = Arrays.asList(config.getProperty("A02start"));
+//A01鍗婅嚜鍔ㄥ湴鍧�
+      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").split(","));
+//      System.out.println(Reset);
+      // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
+      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()];
@@ -142,16 +155,8 @@
       }
 
 
-      // 鎵�鏈夊浣嶆寜閽湴鍧�
-      List<String> Reset = new ArrayList<>();
-      Reset.add("DB101.4.0");
-      Reset.add("DB101.4.3");
-      Reset.add("DB101.3.6");
-      Reset.add("DB101.4.1");
-      Reset.add("DB101.4.4");
-      Reset.add("DB101.4.6");
       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++) {
@@ -159,14 +164,8 @@
         rReset[i] = value ? (short) 1 : (short) 0;
       }
 
-      // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
-      List<String> addresses8 = new ArrayList<>();
-      addresses8.add("DB104.9.0");
-      addresses8.add("DB104.9.1");
-      addresses8.add("DB104.9.0");
-      addresses8.add("DB104.9.1");
-      addresses8.add("DB104.9.4");
-      addresses8.add("DB104.9.5");
+
+
       List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8);
       short[] params = new short[arraylist8.size()];
       for (int i = 0; i < arraylist8.size(); i++) {
@@ -174,10 +173,7 @@
         params[i] = value ? (short) 1 : (short) 0;
       }
 
-    // 杩涚墖id鍦板潃
-      StringBuilder queueid1 = queGlassid("DB100.148", 14);
-      // 瀛樼墖id鍦板潃
-      StringBuilder queueid2 = queGlassid("DB100.162", 14);
+
 
 
 
@@ -228,6 +224,8 @@
       jsonObject.append("jinpianid", queueid1);
       jsonObject.append("qupianid", queueid2);
       jsonObject.append("fuwei", rReset);
+      jsonObject.append("qidong", combinedBinaryShortArray);
+      jsonObject.append("resumeTasks", resumeTasks);
 
 
 
@@ -239,47 +237,6 @@
       WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ServoManualone");
       if (webSocketServer != null) {
         List<String> messages = webSocketServer.getMessages();
-        // A01缁勫悎鍦板潃
-        List<String> waddresses1 = new ArrayList<>();
-        waddresses1.add("DB103.32");
-        waddresses1.add("DB100.144");
-//        waddresses1.add("DB100.148-161");
-        waddresses1.add("DB100.184");
-        waddresses1.add("DB100.186");
-        waddresses1.add("DB100.180");
-        waddresses1.add("DB100.182");
-
-        // A02缁勫悎鍦板潃
-        List<String> waddresses2 = new ArrayList<>();
-        waddresses2.add("DB103.26");
-        waddresses2.add("DB100.188");
-        waddresses2.add("DB100.190");
-        waddresses2.add("DB100.146");
-//        waddresses2.add("DB100.162-175");
-
-
-        // 澶嶄綅鎸夐挳鍦板潃
-        List<String> waddresses3 = new ArrayList<>();
-        waddresses3.add("DB101.4.0");
-        waddresses3.add("DB101.4.3");
-        waddresses3.add("DB101.3.6");
-        waddresses3.add("DB101.4.1");
-        waddresses3.add("DB101.4.4");
-        waddresses3.add("DB101.4.6");
-
-      //鍥為浂鎸夐挳鍦板潃
-        List<String> waddresses4 = new ArrayList<>();
-        waddresses4.add("DB101.3.7");
-        waddresses4.add("DB101.4.2");
-        waddresses4.add("DB101.4.5");
-        waddresses4.add("DB101.4.7");
-
-
-String  waddresses5="DB100.148";
-String  waddresses6="DB100.162";
-
-
-
 
 
 
@@ -288,8 +245,6 @@
           String lastMessage = messages.get(messages.size() - 1);
 //        System.out.println("lastMessage锛�" + lastMessage);
           JSONArray messageArray = new JSONArray(lastMessage);
-
-
 
 
           // 鍐欏叆AO1缁勫悎
@@ -312,15 +267,20 @@
             }
             if (!sValue.isEmpty()) {
 
-
-
-          S7control.getinstance().WriteWord(waddresses1, sValue);
-              List<String> A01start = new ArrayList<>();
-              A01start.add("DB101.5.0");
-              Boolean[] a01values7 = { true};
-              List<Boolean> a01startval = new ArrayList<>(Arrays.asList(a01values7));
-              S7control.getinstance().WriteBit(A01start, a01startval);
-              System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
+          S7control.getinstance().WriteWord(addresses, sValue);
+              // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌�
+              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);
             }
           }
 
@@ -344,13 +304,20 @@
               }
             }
             if (!sValue2.isEmpty()) {
-            S7control.getinstance().WriteWord(waddresses2, sValue2);
-              List<String> A02start = new ArrayList<>();
-              A02start.add("DB101.5.1");
-              Boolean[] a02values7 = {true};
-              List<Boolean> a02startval = new ArrayList<>(Arrays.asList(a02values7));
-              S7control.getinstance().WriteBit(A02start, a02startval);
-              System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
+            S7control.getinstance().WriteWord(addresses2, sValue2);
+
+              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);
             }
           }
 
@@ -374,8 +341,8 @@
               }
             }
             if (!sValue3.isEmpty()) {
-              S7control.getinstance().WriteBit(waddresses3, sValue3);
-              System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses3);
+              S7control.getinstance().WriteBit(Reset, sValue3);
+              System.out.println("Values " + sValue3 + " written to PLC at address " + Reset);
             }
           }
 
@@ -404,7 +371,6 @@
           }
 
 
-
           //杩涚墖ID鍐欏叆
           if (messageArray.getJSONArray(4).size() > 0) {
 //            JSONArray jsonArray5 = messageArray.getJSONArray(4);
@@ -412,8 +378,8 @@
             if (!jsonArray5.isEmpty()) {
 //              String value = (String) jsonArray5.get(0);
               jsonArray5 = jsonArray5.replaceAll("[\\[\\]\"]", ""); // 鍘婚櫎鏂规嫭鍙峰拰鍙屽紩鍙�
-            outmesid( jsonArray5,waddresses5);
-              System.out.println("Values " + jsonArray5 + " written to PLC at address " + waddresses5);
+            outmesid( jsonArray5,inputGlassIdAddress);
+              System.out.println("Values " + jsonArray5 + " written to PLC at address " + inputGlassIdAddress);
             }
           }
          // 瀛樼墖ID鍐欏叆
@@ -422,8 +388,8 @@
 
             if (!jsonArray6.isEmpty()) {
               String value2 = (String) jsonArray6.get(0);
-             outmesid( value2,waddresses6);
-              System.out.println("Values " + value2 + " written to PLC at address " + waddresses6);
+             outmesid( value2,outputGlassIdAddress);
+              System.out.println("Values " + value2 + " written to PLC at address " + outputGlassIdAddress);
             }
           }
           if (messageArray.getJSONArray(6).size() > 0) {
@@ -445,17 +411,10 @@
             }
             if (!sValueb4.isEmpty()) {
 
-              List<String> A01Bstart = new ArrayList<>();
-              A01Bstart.add("DB101.11.0");
-//              Boolean[] a01values7 = {true};
-//              List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7));
               S7control.getinstance().WriteBit(A01Bstart, sValueb4);
               System.out.println("Values " + sValueb4 + " written to PLC at address " + A01Bstart);
             }
           }
-
-
-
 
 
           if (messageArray.getJSONArray(7).size() > 0) {
@@ -477,46 +436,35 @@
             }
             if (!sValueb5.isEmpty()) {
 
-              List<String> A02Bstart = new ArrayList<>();
-              A02Bstart.add("DB101.11.1");
-//              Boolean[] a01values7 = {true};
-//              List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7));
               S7control.getinstance().WriteBit(A02Bstart, sValueb5);
               System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
             }
           }
 
+          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);
+            }
+          }
 
-
-
-//          if (messageArray.getJSONArray(6).size() > 0) {
-//            JSONArray jsonArray6 = messageArray.getJSONArray(6);
-//
-//            if (!jsonArray6.isEmpty()) {
-//              String value2 = (String) jsonArray6.get(0);
-//              List<String> A01Bstart = new ArrayList<>();
-//              A01Bstart.add("DB101.11.0");
-//              Boolean[] a01values7 = {true};
-//              List<Boolean> a01Bstartval = new ArrayList<>(Arrays.asList(a01values7));
-//              S7control.getinstance().WriteBit(A01Bstart, a01Bstartval);
-//              System.out.println("Values " + value2 + " written to PLC at address " + waddresses6);
-//            }
-//          }
-
-//          if (messageArray.getJSONArray(7).size() > 0) {
-//            JSONArray jsonArray6 = messageArray.getJSONArray(7);
-//
-//            if (!jsonArray6.isEmpty()) {
-//              String value2 = (String) jsonArray6.get(0);
-//              List<String> A02Bstart = new ArrayList<>();
-//              A02Bstart.add("DB101.11.1");
-//              Boolean[] a02values7 = {true};
-//              List<Boolean> a02Bstartval = new ArrayList<>(Arrays.asList(a02values7));
-//              S7control.getinstance().WriteBit(A02Bstart, a02Bstartval);
-//              System.out.println("Values " + value2 + " written to PLC at address " + waddresses6);
-//            }
-//          }
 
           // 娓呯┖娑堟伅鍒楄〃
           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/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/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index 9f4abb6..f4b82b1 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -1,28 +1,10 @@
 package com.example.springboot.config;
 
-import org.springframework.beans.factory.annotation.Autowired;
+import com.example.springboot.component.*;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
-
-import com.example.springboot.component.PLCAutomaticParameterSetting;
-import com.example.springboot.component.PlcHold;
-import com.example.springboot.component.PlcParameter;
-import com.example.springboot.component.Plcaction;
-import com.example.springboot.component.Plchome;
-import com.example.springboot.component.Plcalarm;
-import com.example.springboot.component.Plcsign;
-import com.example.springboot.component.Plcstate;
-import com.example.springboot.component.PlcPositioning1;
-import com.example.springboot.component.PlcPositioning2;
-import com.example.springboot.component.PlcParameter2;
-import com.example.springboot.component.PlcParameter1;
-import com.example.springboot.component.PlcServoManualone;
-import com.example.springboot.component.PLCAutomaticParameterSetting;
-import com.example.springboot.component.PlcManualonePosition;
-import com.example.springboot.component.PlcManualonePosition2;
-import com.example.springboot.component.PLCManualJog;
 
 @Component
 @Order(1)
@@ -35,29 +17,28 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-    // new PlcHold().start();
+//    new PlcHold().start();
+//
     //
-    //
-    
-    new Plchome().start();
-    
-    //  new PlcParameter().start();
-    //  //
-    //  // new Plcalarm().start();
-    //  //
-    //  new Plcsign().start();
-    //  //
-    //  new Plcaction().start();
-    //  new Plcstate().start();
-    //  new PlcPositioning1().start();
-    //  new PlcPositioning2().start();
-    //  new PlcParameter2().start();
-    //  new PlcParameter1().start();
-    //  new PLCAutomaticParameterSetting().start();
+//    new Plchome().start();
+//    //
+     new PlcParameter().start();
+     //
+     new Plcalarm().start();
+     //
+     new Plcsign().start();
+     //
+     new Plcaction().start();
+     new Plcstate().start();
+     new PlcPositioning1().start();
+     new PlcPositioning2().start();
+    new PlcParameter2().start();
+     new PlcParameter1().start();
+     new PLCAutomaticParameterSetting().start();
 
-    //  new PlcManualonePosition().start();
-    //  new PlcManualonePosition2().start();
-    //  new PlcServoManualone().start();
-    //  new PLCManualJog().start();
+     new PlcManualonePosition().start();
+     new PlcManualonePosition2().start();
+     new PlcServoManualone().start();
+     new PLCManualJog().start();
   }
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
index 32044f9..626a185 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
@@ -94,6 +94,7 @@
 
 
     @GetMapping("/getByRoleId")
+
     public com.example.springboot.common.Result selectquanxian(@RequestParam("roleId") int roleId) {
         List<Map<String, Object>> resultSet = RolePermissionMapper.selectquanxian(roleId);
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
index b882792..517cc19 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/UserController.java
@@ -188,4 +188,6 @@
 
 
 
+
+
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
index a55723f..fca3450 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
@@ -21,7 +21,8 @@
     private Long permissionId;
     @ApiModelProperty("鐘舵��")
     private Integer state;
-
+    @ApiModelProperty("鍚嶅瓧")
+    private String name;
 
 
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
index 89db5eb..9cd9dbc 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/vo/RolePermissionVo.java
@@ -16,4 +16,5 @@
     private Integer state;
     private Date createTime;
     private Date updateTime;
+   private String name;
 }
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 75581e5..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
@@ -29,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};")
@@ -58,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 glassid=#{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 2f1045f..aceee1b 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
@@ -95,6 +95,7 @@
                     spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                     spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                     S7control.getinstance().WriteWord(adddresslist, datas);
+                    System.out.println("姹囨姤鏃朵换鍔" + datas);
                    
                 }else{
                  // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
@@ -103,6 +104,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);
                 }

--
Gitblit v1.8.0