From 3a59de819bb1fbefc3eb4a38fb4f76a11d19a1ae Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期五, 05 一月 2024 15:05:56 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/home/index.vue                                                        |  303 +++-
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java            |  183 ++
 springboot-vue3/src/main/java/com/example/springboot/component/S7control.java                |   32 
 CanadaMes-ui/src/views/Electrical/Parameter2.vue                                             |   74 
 springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java            |   76 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java                  |  254 +++-
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java                  |   43 
 CanadaMes-ui/src/configuration/AutomaticParameterSetting.json                                |   52 
 CanadaMes-ui/src/layout/index.vue                                                            |  348 ++++-
 Alarm.json                                                                                   |  507 ++++++++
 CanadaMes-ui/src/views/Electrical/Positioning1.vue                                           |   32 
 CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue                              |  178 +-
 springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml            |   62 
 CanadaMes-ui/src/api/home.js                                                                 |   21 
 springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java                   |   54 
 CanadaMes-ui/src/main.js                                                                     |    8 
 CanadaMes-ui/src/configuration/parameter2.json                                               |  120 +
 CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue                                     |   48 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java    |    2 
 springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java         |   61 
 CanadaMes-ui/src/configuration/Positioning1.json                                             |   64 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java                  |    9 
 CanadaMes-ui/src/views/Electrical/ManualonePosition.vue                                      |   75 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java                 |   20 
 springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java                 |    2 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java               |   14 
 CanadaMes-ui/src/configuration/ServoManualone.json                                           |   16 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java          |   88 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                                     |   21 
 springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java         |   58 
 /dev/null                                                                                    |   50 
 CanadaMes-ui/build.bat                                                                       |    5 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java             |   24 
 springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java           |   70 +
 springboot-vue3/src/main/resources/sql/canadames.sql                                         |  431 +++++-
 CanadaMes-ui/src/lang/locales/en-US.json                                                     |   21 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                         |  103 +
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java     |    1 
 CanadaMes-ui/src/configuration/Manualoneposition.json                                        |    5 
 springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java |   64 
 40 files changed, 2,702 insertions(+), 897 deletions(-)

diff --git a/Alarm.json b/Alarm.json
new file mode 100644
index 0000000..89bf615
--- /dev/null
+++ b/Alarm.json
@@ -0,0 +1,507 @@
+{
+  "content": [
+    {
+      "name": "D01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 Scan glass exceeding limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "emergency stop alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "More glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "less glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "1# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "2# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "3# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "4# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    }
+  ],
+  "address": [
+    {
+      "name": "DB104.0.0",
+      "count": 71
+    }
+  ]
+}
\ No newline at end of file
diff --git a/CanadaMes-ui/build.bat b/CanadaMes-ui/build.bat
new file mode 100644
index 0000000..51c651b
--- /dev/null
+++ b/CanadaMes-ui/build.bat
@@ -0,0 +1,5 @@
+@echo off
+echo Starting frontend development server...
+cd /d %~dp0  // 鍒囨崲鍒板綋鍓嶆壒澶勭悊鑴氭湰鎵�鍦ㄧ殑鐩綍
+cd ..\CanadaMes-ui  // 鍋囪CanadaMes-ui鍦ㄤ笌鎵瑰鐞嗚剼鏈浉鍚岀殑鐩綍涓�
+npm run build
\ No newline at end of file
diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 1d4772c..6560bec 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -198,17 +198,25 @@
     })
 }
 
-export function AddOutSliceS(data) {
+export function AddOutSliceS(FrameNo) {
     return request({
-        url: '/home/AddOutSliceS',
+        url: '/home/AddOutSliceS?FrameNo='+FrameNo,
         method: 'post',
-        data
+        data:""
     })
 }
 
 export function isAllowQueues(isAllowQueue,data) {
     return request({
         url: '/home/isAllowQueues?isAllowQueue=' + isAllowQueue,
+        method: 'post',
+        data
+    })
+}
+
+export function isAllowReorderings(isAllowReordering,data) {
+    return request({
+        url: '/home/isAllowReorderings?isAllowReordering=' + isAllowReordering,
         method: 'post',
         data
     })
@@ -230,3 +238,10 @@
     })
 }
 
+export function FrameStateUpdate(frameno,framestate) {
+    return request({
+        url: '/home/FrameStateUpdate?frameno=' + frameno+'&framestate='+framestate,
+        method: 'post',
+        data:""
+    })
+}
diff --git a/CanadaMes-ui/src/configuration/AutomaticParameterSetting.json b/CanadaMes-ui/src/configuration/AutomaticParameterSetting.json
index 57ad2f0..9f9377d 100644
--- a/CanadaMes-ui/src/configuration/AutomaticParameterSetting.json
+++ b/CanadaMes-ui/src/configuration/AutomaticParameterSetting.json
@@ -10,7 +10,7 @@
       "unit": "掳",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A01琛岃蛋浣庨�熻搴�",
@@ -21,7 +21,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A01杈撻�佹帴鐗囪搴�",
@@ -32,7 +32,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A01绗煎瓙瑙掑害",
@@ -43,7 +43,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     }
   ],
   [
@@ -57,7 +57,7 @@
       "count": 3,
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A02琛岃蛋浣庨�熻搴�",
@@ -68,7 +68,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A02杈撻�佹帴鐗囪搴�",
@@ -79,7 +79,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     },
     {
       "name": "A02绗煎瓙瑙掑害",
@@ -90,7 +90,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     }
   ],
   [
@@ -104,7 +104,7 @@
       "count": 3,
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 3000
     }
   ],
   [
@@ -117,7 +117,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 2000
     }
   ],
   [
@@ -130,7 +130,7 @@
       "type": "0",
       "value": "",
       "min": 0,
-      "max": 100
+      "max": 99
     }
   ],
   [
@@ -149,7 +149,7 @@
     "count":3,
     "value":0,
     "min": 0,
-    "max": 1000
+    "max": 60
   },
   {
     "name": "楂橀�熺嚎閫熷害",
@@ -159,7 +159,7 @@
     "unit": "m/min",
     "value":0,
     "min": 0,
-    "max": 100
+    "max": 60
   },
   {
     "name": "浣庨�熺嚎閫熷害",
@@ -169,7 +169,7 @@
     "unit": "m/min",
     "value":0,
     "min": 0,
-    "max": 100
+    "max": 60
   },
   {
     "name": "鎵嬪姩閫熷害",
@@ -179,7 +179,7 @@
     "unit": "m/min",
     "value":0,
     "min": 0,
-    "max": 100
+    "max": 60
   }
   
  
@@ -201,7 +201,7 @@
   "count":3,
   "value":0,
   "min": 0,
-  "max": 100
+  "max": 60
 },
 {
   "name": "楂橀�熺嚎閫熷害",
@@ -211,7 +211,7 @@
   "type": "0",
   "value":0,
   "min": 0,
-  "max": 100
+  "max": 60
 },
 {
   "name": "浣庨�熺嚎閫熷害",
@@ -221,7 +221,7 @@
   "type": "0",
   "value":0,
   "min": 0,
-  "max": 100
+  "max": 60
 },
 {
   "name": "鎵嬪姩閫熷害",
@@ -231,7 +231,7 @@
   "type": "0",
   "value":0,
   "min": 0,
-  "max": 100
+  "max": 60
 }
 
 
@@ -251,7 +251,7 @@
 "count":3,
 "value":0,
 "min": 0,
-"max": 100
+"max": 60
 },
 {
 "name": "楂橀�熺嚎閫熷害",
@@ -261,7 +261,7 @@
 "unit": "m/min",
 "value":0,
 "min": 0,
-"max": 100
+"max": 60
 },
 {
 "name": "浣庨�熺嚎閫熷害",
@@ -271,7 +271,7 @@
 "unit": "m/min",
 "value":0,
 "min": 0,
-"max": 100
+"max": 60
 },
 {
 "name": "鎵嬪姩閫熷害",
@@ -281,7 +281,7 @@
 "unit": "m/min",
 "value":0,
 "min": 0,
-"max": 100
+"max": 60
 }
 
 
@@ -293,12 +293,12 @@
 "read": 33,
 "sending": 0,
 "type": "0",
-"unit": "mm/S",
+"unit": "掳/S",
 
 "count":3,
 "value":0,
 "min": 0,
-"max": 100
+"max": 99
 }
 
 
@@ -314,7 +314,7 @@
 "type": "0",
 "value":0,
 "min": 0,
-"max": 100
+"max": 2000
 }
 
 
diff --git a/CanadaMes-ui/src/configuration/Manualoneposition.json b/CanadaMes-ui/src/configuration/Manualoneposition.json
index e3c8f32..b16d0ea 100644
--- a/CanadaMes-ui/src/configuration/Manualoneposition.json
+++ b/CanadaMes-ui/src/configuration/Manualoneposition.json
@@ -190,9 +190,8 @@
       "type": "0",
       "address": "DB100.0",
       "count": 3,
-      "state": 1,
-      "min":106,
-      "max":210
+      "state": 1
+     
     },
     {
       "name": "B02瀹氫綅閫熷害",
diff --git a/CanadaMes-ui/src/configuration/Positioning1.json b/CanadaMes-ui/src/configuration/Positioning1.json
index 06a684d..c25bda5 100644
--- a/CanadaMes-ui/src/configuration/Positioning1.json
+++ b/CanadaMes-ui/src/configuration/Positioning1.json
@@ -7,7 +7,7 @@
     "unit": "mm",
     "value":"0",
     "min": 0,
-     "max": 100
+     "max": 75
     
   }],
     [{
@@ -18,7 +18,7 @@
       "unit": "mm",
       "value":"0",
       "min":0,
-      "max":100
+      "max":22000
       
     }],
     [{
@@ -52,7 +52,7 @@
         "address":"DB100.48",
         "count":10,
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "22#鏍煎湴鍧�",
@@ -62,7 +62,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "43#鏍煎湴鍧�",
@@ -72,7 +72,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "64#鏍煎湴鍧�",
@@ -82,7 +82,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "85#鏍煎湴鍧�",
@@ -92,7 +92,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "106#鏍煎湴鍧�",
@@ -102,7 +102,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "127#鏍煎湴鍧�",
@@ -112,7 +112,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "148#鏍煎湴鍧�",
@@ -122,7 +122,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "169#鏍煎湴鍧�",
@@ -132,7 +132,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "190#鏍煎湴鍧�",
@@ -142,7 +142,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       }
      
       
@@ -167,7 +167,7 @@
         "address":"DB100.68",
         "count":10,
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "22#鏍煎湴鍧�",
@@ -177,7 +177,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "43#鏍煎湴鍧�",
@@ -187,7 +187,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "64#鏍煎湴鍧�",
@@ -197,7 +197,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "85#鏍煎湴鍧�",
@@ -207,7 +207,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "106#鏍煎湴鍧�",
@@ -217,7 +217,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "127#鏍煎湴鍧�",
@@ -227,7 +227,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "148#鏍煎湴鍧�",
@@ -237,7 +237,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "169#鏍煎湴鍧�",
@@ -247,7 +247,7 @@
         "type": "0" ,
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       },
       {
         "name": "190#鏍煎湴鍧�",
@@ -257,7 +257,7 @@
         "unit": "mm",
         "value":"0",
         "min":0,
-        "max":100
+        "max":22000
       }
      
       
@@ -280,7 +280,7 @@
       "count":3,
       "value":"0",
       "min":0,
-      "max":100
+      "max":9999
     },
     {
       "name": "22#鏍煎湴鍧�",
@@ -290,7 +290,7 @@
       "type": "0",
       "value":"0",
       "min":0,
-      "max":100
+      "max":9999
     },
     {
       "name": "43#鏍煎湴鍧�",
@@ -300,7 +300,7 @@
       "type": "0",
       "value":"0",
       "min":0,
-      "max":100
+      "max":9999
     },
     {
       "name": "64#鏍煎湴鍧�",
@@ -310,7 +310,7 @@
       "type": "0",
       "value":"0",
       "min":0,
-      "max":100
+      "max":9999
     },
     {
       "name": "85#鏍煎湴鍧�",
@@ -320,7 +320,7 @@
       "type": "0",
       "value":"0",
       "min":0,
-      "max":100
+      "max":9999
     }
    
     
@@ -342,7 +342,7 @@
           "type": "0",
           "value":"0",
           "min":0,
-          "max":100
+          "max":9999
         },
         {
           "name": "127#鏍煎湴鍧�",
@@ -352,7 +352,7 @@
           "type": "0",
           "value":"0",
           "min":0,
-          "max":100
+          "max":9999
         },
         {
           "name": "148#鏍煎湴鍧�",
@@ -362,7 +362,7 @@
           "type": "0",
           "value":"0",
           "min":0,
-          "max":100
+          "max":9999
         },
         {
           "name": "169#鏍煎湴鍧�",
@@ -372,7 +372,7 @@
           "type": "0",
           "value":"0",
           "min":0,
-          "max":100
+      "max":9999
         },
         {
           "name": "190#鏍煎湴鍧�",
@@ -382,7 +382,7 @@
           "type": "0",
           "value":"0",
           "min":0,
-          "max":100
+          "max":9999
         }
        
    
diff --git a/CanadaMes-ui/src/configuration/ServoManualone.json b/CanadaMes-ui/src/configuration/ServoManualone.json
index 91cd5b1..76998d9 100644
--- a/CanadaMes-ui/src/configuration/ServoManualone.json
+++ b/CanadaMes-ui/src/configuration/ServoManualone.json
@@ -17,7 +17,7 @@
         "read": 33,
         "sending": 0,
         "type": "0",
-        "value":0,
+        "value":1,
         "min":0,
         "max":100
      
@@ -51,8 +51,8 @@
         "read": 11,
         "sending": 0,
         "type": "0",
-        "value":0,
-        "min":0,
+        "value":1,
+        "min":1,
         "max":100
       },
       {
@@ -60,8 +60,8 @@
         "read": 22,
         "sending": 0,
         "type": "0",
-        "value":0,
-        "min":0,
+        "value":1,
+        "min":1,
         "max":100
       },
       {
@@ -123,7 +123,7 @@
             "read": 11,
             "sending": 0,
             "type": "0",
-            "value":0,
+            "value":1,
             "min":0,
             "max":100
           },
@@ -132,7 +132,7 @@
             "read": 22,
             "sending": 0,
             "type": "0",
-            "value":0,
+            "value":1,
             "min":0,
             "max":100
           },
@@ -141,7 +141,7 @@
             "read": 33,
             "sending": 0,
             "type": "0",
-            "value":0,
+            "value":1,
             "min":0,
             "max":100
          
diff --git a/CanadaMes-ui/src/configuration/parameter2.json b/CanadaMes-ui/src/configuration/parameter2.json
index fcc0f7a..b181b8c 100644
--- a/CanadaMes-ui/src/configuration/parameter2.json
+++ b/CanadaMes-ui/src/configuration/parameter2.json
@@ -3,7 +3,8 @@
     {
       "button": {
         "name": "D01鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -11,7 +12,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -21,14 +23,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "D02鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -36,7 +40,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -46,14 +51,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "D03鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -61,7 +68,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -71,14 +79,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "D04鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -86,7 +96,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -96,14 +107,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "D05鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -111,7 +124,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -121,14 +135,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "D06鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -136,7 +152,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -146,14 +163,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "A01鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -161,7 +180,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -171,14 +191,16 @@
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "ID2",
       "read": 33,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
     
   ],
@@ -187,7 +209,8 @@
     {
       "button": {
         "name": "A02鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -195,7 +218,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "3"
@@ -205,14 +229,16 @@
       "read": "ID28",
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "B01鎵嬪姩鐘舵��",
-        "value": 0
+        "value": 0, 
+"value2": 0
       
       },
       "type": "4"
@@ -220,7 +246,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0
+        "value": 0, 
+"value2": 0
         
       },
       "type": "3"
@@ -230,14 +257,16 @@
       "read": "ID29",
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
     {
       "button": {
         "name": "B02鎵嬪姩鐘舵��",
-        "value": 0,
+        "value": 0, 
+"value2": 0,
         "address": "DB10.0"
       },
       "type": "4"
@@ -245,7 +274,8 @@
     {
       "button": {
         "name": "娓呴櫎ID",
-        "value": 0
+        "value": 0, 
+"value2": 0
     
       },
       "type": "3"
@@ -255,7 +285,8 @@
       "read": "ID210",
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
@@ -264,14 +295,16 @@
       "read": 0,
       "sending": 0,
       
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "ID1",
       "read": 66,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
@@ -280,14 +313,16 @@
       "read": 0,
       "sending": 0,
       
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "ID2",
       "read": 666,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ],
   [
@@ -296,28 +331,32 @@
       "read": 333,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "A02鎵�鍦ㄦ牸瀛�",
       "read": 333,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "B01鎵�鍦ㄦ牸瀛�",
       "read": 333,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     },
     {
       "name": "B02鎵�鍦ㄦ牸瀛�",
       "read": 333,
       "sending": 0,
       "type": "0",
-      "value": 0
+      "value": 0, 
+"value2": 0
     }
   ]
   ,
@@ -351,7 +390,8 @@
           "read": 666,
           "sending": 0,
           "type": "0",
-          "value": 0
+          "value": 0, 
+"value2": 0
         }
       
       
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index 1024bca..422dbf4 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -39,6 +39,9 @@
   "exit": "exit",
   "changePassword": "changePassword",
   "resetPassword": "resetPassword",
+  "Old password":"Old password",
+  "New password":"New password",
+  "Confirm password":"Confirm password",
   "home": "Home",
   "role": "role",
   "langRoleManagement": "Role Management",
@@ -283,7 +286,7 @@
   "DataBase Connection failed":"DataBase Connection failed",
   "Distribute parameters":"Distribute parameters",
   "The glass size is not within the range":"The glass size is not within the range",
-  "Increase":"Increase",
+  "Add":"Add",
   "Enable":"Enable",
   "Disable":"Disable",
   "Usage":"Usage",
@@ -308,7 +311,7 @@
   "Frame No":"Frame No",
   "Glass information corresponding to aluminum frame":"Glass information corresponding to aluminum frame",
   "In the cage":"In the cage",
-  "Flip":"Flip",
+  "Flipped":"Flipped",
   "In the queue":"In the queue",
   "Normal":"Normal",
   "Entering":"Entering",
@@ -326,6 +329,7 @@
   "You do not have this permission":"You do not have this permission",
   "This glass is already in the Queue":"This glass is already in the Queue",
   "Complete":"Complete",
+  "Allow":"Allow",
   "Not Allow":"Not Allow",
   "Completed":"Completed",
   "Waiting":"Waiting",
@@ -333,6 +337,13 @@
   "Glass State":"Glass State",
   "Absent":"Absent",
   "Approximately resettable time":"Approximately resettable time",
+  "EXTERIQR OUT AND BYPASS TO THE LEFT":"EXTERIQR OUT AND BYPASS TO THE LEFT",
+  "EXTERIQR OUT AND BYPASS TO THE RIGHT":"EXTERIQR OUT AND BYPASS TO THE RIGHT",
+  "Complete Task":"Complete Task",
+  "Outed":"Outed",
+  "Queue State":"Queue State",
+  "Sorting State":"Sorting State",
+  "Confirm State":"Confirm State",
     "ServoManualone": {
       "A01 鎵�鍦ㄦ牸瀛�": "A01 Current Grid",
       "鏁伴噺": "Quantity",
@@ -367,9 +378,9 @@
           "D01鎵嬪姩鐘舵��": "D01 Manual Status",
           "娓呴櫎ID": "Clear ID",
           "ID": "ID",
-          "A02ID": "ID",
-          "B01ID": "ID",
-          "B02ID": "ID",
+          "A02ID": "A02ID",
+          "B01ID": "B01ID",
+          "B02ID": "B02ID",
           "D02鎵嬪姩鐘舵��": "D02 Manual Status",
           "D03鎵嬪姩鐘舵��": "D03 Manual Status",
           "D04鎵嬪姩鐘舵��": "D04 Manual Status",
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 20bf4fb..baa4a6d 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -273,7 +273,7 @@
   "DataBase Connection failed": "鏁版嵁搴撹繛鎺ュけ璐�",
   "Distribute parameters": "涓嬪彂鍙傛暟",
   "The glass size is not within the range": "鐜荤拑灏哄涓嶅湪鑼冨洿鍐�",
-  "Increase": "娣诲姞",
+  "Add": "娣诲姞",
   "Enable": "鍚敤",
   "Disable": "绂佺敤",
   "Usage": "浣跨敤鐜�",
@@ -298,7 +298,7 @@
   "Frame No":"閾濇id",
   "Glass information corresponding to aluminum frame":"閾濇瀵瑰簲鐨勭幓鐠冧俊鎭�",
   "In the cage":"鍦ㄧ鍐�",
-  "Flip":"缈昏浆",
+  "Flipped":"缈昏浆",
   "In the queue":"鍦ㄩ槦鍒�",
   "Enter the Frame No":"璇疯緭鍏ラ摑妗唅d",
   "Manually Infeed Glass":"鎵嬪姩杩涚墖",
@@ -319,12 +319,20 @@
   "This glass is already in the Queue":"姝ょ幓鐠冨凡鍦ㄥ嚭鐗囬槦鍒椾腑",
   "Complete":"瀹屾垚",
   "Not Allow":"涓嶅厑璁�",
+  "Allow":"鍏佽",
   "Completed":"宸插畬鎴�",
   "Waiting":"绛夊緟涓�",
   "Deleted":"宸插垹闄�",
   "Glass State":"鐜荤拑鐘舵��",
   "Absent":"涓嶅瓨鍦�",
   "Approximately resettable time":"鍙浣嶅ぇ姒傛椂闂�",
+  "EXTERIQR OUT AND BYPASS TO THE LEFT":"EXTERIQR OUT AND BYPASS TO THE LEFT",
+  "EXTERIQR OUT AND BYPASS TO THE RIGHT":"EXTERIQR OUT AND BYPASS TO THE RIGHT",
+  "Complete Task":"瀹屾垚浠诲姟",
+  "Outed":"宸插嚭绗�",
+  "Queue State":"闃熷垪鐘舵��",
+  "Sorting State":"鎺掑簭鐘舵��",
+  "Confirm State":"纭鐘舵��",
   "langparameter": {
     "conveyor Velocity(Auto FAST)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄦ參閫�",
@@ -437,5 +445,12 @@
     "D04.State": "D04.鐘舵��",
     "D05.State": "D05.鐘舵��",
     "D06.State": "D06.鐘舵��"
-  }
+  },
+  "Automatic State":"鑷姩鐘舵��",
+  "ManualJog":"寮�鍏虫帶鍒�",
+  "ManualonePosition":"鎵嬪姩瀹氫綅",
+  "Servomanualone":"鍗婅嚜鍔�",
+  "Address parameter settings":"鍦板潃鍙傛暟璁剧疆",
+  "Speed parameter settings":"閫熷害鍙傛暟璁剧疆"
+
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/layout/index.vue b/CanadaMes-ui/src/layout/index.vue
index ec7f6a6..244d977 100644
--- a/CanadaMes-ui/src/layout/index.vue
+++ b/CanadaMes-ui/src/layout/index.vue
@@ -1,7 +1,7 @@
 <template>
   <el-container style="flex: 1;height:100%;">
-    <div style="width: 200px;background-color: #222f3e" :style="{width: isCollapse?'70px':'250px'}">
-      <el-aside :width="isCollapse?'70px':'250px'">
+    <div style="width: 200px;background-color: #222f3e" :style="{ width: isCollapse ? '70px' : '250px' }">
+      <el-aside :width="isCollapse ? '70px' : '250px'">
         <el-col :gutter="20">
           <el-row :span="4">
             <div class="logo" @click="goToHome">
@@ -9,11 +9,10 @@
             </div>
           </el-row>
           <el-row :span="20">
-            <el-menu :default-active="activePath" class="el-menu-vertical-demo"
-                      background-color="#222f3e" text-color="#fff" active-text-color="#ffd04b"
-                      :collapse="isCollapse" :unique-opened="true"
-                      :collapse-transition="false" :router="true">
-             <!-- <el-menu-item index="/" @click="youhua">
+            <el-menu :default-active="activePath" class="el-menu-vertical-demo" background-color="#222f3e"
+              text-color="#fff" active-text-color="#ffd04b" :collapse="isCollapse" :unique-opened="true"
+              :collapse-transition="false" :router="true">
+              <!-- <el-menu-item index="/" @click="youhua">
                 <template slot="title">
                
                   <i class="el-icon-menu"></i>
@@ -31,10 +30,8 @@
                   <span>{{ item.name }}</span>
                 </template>
                 <!--浜岀骇鑿滃崟-->
-              
-                <el-menu-item :index="'/'+menu.router"
-                              v-for="menu in item.menuLists" :key="menu.id"
-                             >
+
+                <el-menu-item :index="'/' + menu.router" v-for="menu in item.menuLists" :key="menu.id">
                   <template slot="title">
                     <!--鍥炬爣-->
                     <i :class="menu.icon"></i>
@@ -50,40 +47,43 @@
     </div>
     <el-container>
       <el-header class="header-container">
-        
-        <el-menu :default-active="activePath1" class="el-menu-demo" mode="horizontal"
-                 background-color="#576574" text-color="#fff" active-text-color="#ffd04b">
+
+        <el-menu :default-active="activePath1" class="el-menu-demo" mode="horizontal" background-color="#576574"
+          text-color="#fff" active-text-color="#ffd04b">
           <div class="header-left">
-            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse" style="height:30px;"></el-button>
+            <el-button :icon="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click="toggleCollapse"
+              style="height:30px;"></el-button>
           </div>
           <!-- <div class="tagContainer" style="display: flex;">
   <tag v-for="(tag, index) in tags" :key="index" :tag="tag" @removeTag="removeTag(index)" @switchTag="switchTag(index)"></tag>
 </div> -->
           <template>
-            <el-submenu index="1" class="custom-submenu"  >
+            <el-submenu index="1" class="custom-submenu">
               <template slot="title">
-                <el-avatar src="../assets/emi.png"   style="width:20px;height:20px;margin-top:30px;background-color: white;"></el-avatar>
+                <el-avatar src="../assets/emi.png"
+                  style="width:20px;height:20px;margin-top:30px;background-color: white;"></el-avatar>
               </template>
               <el-menu-item index="1-1" @click="logout">{{ $t('exit') }}</el-menu-item>
               <el-menu-item index="1-2" @click="showChangePasswordDialog">{{ $t('changePassword') }}</el-menu-item>
             </el-submenu>
+
           </template>
           <template>
-            <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogVisible" width="30%">
-              <el-form ref="form" :model="formData" label-width="100px">
-                <el-form-item label="鏃у瘑鐮�">
+            <el-dialog :title="$t('changePassword')" :visible.sync="dialogVisible" width="30%">
+              <el-form ref="form" :model="formData" label-width="200px">
+                <el-form-item :label="$t('Old password')">
                   <el-input v-model="formData.oldPassword" type="password" show-password></el-input>
                 </el-form-item>
-                <el-form-item label="鏂板瘑鐮�">
+                <el-form-item :label="$t('New password')">
                   <el-input v-model="formData.newPassword" type="password" show-password></el-input>
                 </el-form-item>
-                <el-form-item label="纭鏂板瘑鐮�">
+                <el-form-item :label="$t('Confirm password')">
                   <el-input v-model="formData.confirmPassword" type="password" show-password></el-input>
                 </el-form-item>
               </el-form>
               <div slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisible = false">鍙栨秷</el-button>
-                <el-button type="primary" @click="savePassword">淇濆瓨</el-button>
+                <el-button @click="dialogVisible = false">{{ $t('cancel') }}</el-button>
+                <el-button type="primary" @click="savePassword">{{ $t('confirm') }}</el-button>
               </div>
             </el-dialog>
           </template>
@@ -91,10 +91,32 @@
       </el-header>
       <el-main>
         <keep-alive>
-          <router-view/>
+          <router-view />
         </keep-alive>
       </el-main>
     </el-container>
+    <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
+      <el-table :data="this.alarm" border style="width: 100%;font-size: 25px;">
+        <el-table-column prop="id" :label="$t('id')"></el-table-column>
+        <el-table-column prop="content" :label="$t('content')"></el-table-column>
+        <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
+      </el-table>
+    </el-dialog>
+    <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh">
+      <div :style="'font-size: ' + PromptSize + 'px;text-align: center;'">
+        <!-- {{ this.CountDowns }} -->
+        {{ this.CountDowns }}
+      </div>
+    </el-dialog>
+    <!-- <el-dialog :visible.sync="dialogFormVisible3">
+
+      <el-button :class="{ 'blue-button': receivedData === 1 }" @click="toggleButtonValue(1)">{{
+        $t('A01Abort/ResumeTasks') }}</el-button>
+      <el-button :class="{ 'blue-button': receivedData2 === 1 }" @click="toggleButtonValue(2)">{{
+        $t('A02Abort/ResumeTasks') }}</el-button>
+
+    </el-dialog> -->
+
   </el-container>
 </template>
 
@@ -103,9 +125,11 @@
 import { changePassword } from '../api/user'
 import { removeToken } from "../utils/auth";
 import LanguageMixin from '../lang/LanguageMixin'
+import { MessageBox } from 'element-ui';
 // import { mapState, mapMutations } from 'vuex';
 // import Tag from '../layout/tag.vue';
 // import store from '../store';
+let socket;
 
 export default {
   name: "Layout",
@@ -115,6 +139,8 @@
     return {
       activeTag: '', // 褰撳墠婵�娲荤殑鏍囩
       dialogVisible: false,
+      receivedData: 0,
+      receivedData2: 0,
       formData: {
         oldPassword: '',
         newPassword: '',
@@ -127,13 +153,25 @@
       menuListForm: {
         pageSize: 1,
         pageNum: -1
-      }
+      },
+      dialogFormVisible2: false,
+      dialogFormVisible3: false,
+      alarm: [],
+      alarm2: [],
+      CountDowns: "0",
+      EmergencyStop: false,
+      PromptSize: 250,
+      dialogFormCountDown: false
+
     }
   },
   // components: {
   //   Tag
   // },
   created() {
+
+
+
     selectList(this.menuListForm).then(res => {
       this.menuList = res.data
 
@@ -144,12 +182,168 @@
       // 璁板綍涓婁竴娆℃縺娲荤殑鑿滃崟
       // this.activePath = window.sessionStorage.getItem('activePath')
     });
+    this.init();
   },
   computed: {
     // ...mapState('tags', ['tags'])
   },
   methods: {
-    
+    toggleButtonValue(buttonNumber) {
+
+      MessageBox.confirm(this.$t('Are you sure to perform this operation?'), this.$t('prompt'), {
+        confirmButtonText: this.$t('confirm'),
+        cancelButtonText: this.$t('cancel'),
+        type: 'warning'
+      }).then(() => {
+        // 鐐瑰嚮纭鎸夐挳鍚庢墽琛岀殑鎿嶄綔
+        if (buttonNumber === 1) {
+          this.receivedData = this.receivedData === 0 ? 1 : 0;
+        } else if (buttonNumber === 2) {
+          this.receivedData2 = this.receivedData2 === 0 ? 1 : 0;
+        }
+        console.log(this.receivedData, this.receivedData2)
+
+
+        const data3 = [];
+        const resetButtonValues3 = [this.receivedData, this.receivedData2];
+
+        // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
+        data3.push(resetButtonValues3.flat());
+
+        // 鍦� data3 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
+
+        // 鍒涘缓 jsonObject3 瀵硅薄锛屽苟娣诲姞 data3 灞炴��
+        const jsonObject3 = { data: data3 };
+
+        // 鎻愪氦鏁版嵁鍒板悗绔�
+        const jsonString3 = JSON.stringify(jsonObject3);
+        console.log("鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨:", jsonString3);
+        socket?.send(jsonString3);
+        setTimeout(() => {
+          this.dialogFormVisible3 = false;
+        }, 1000); // 寤惰繜鏃堕棿涓�1绉掞紙1000姣锛�
+      }).catch(() => {
+        // 鐐瑰嚮鍙栨秷鎸夐挳鍚庢墽琛岀殑鎿嶄綔
+      });
+
+
+
+
+    },
+    init() {
+      let viewname = "Home";
+      if (typeof (WebSocket) == "undefined") {
+        console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
+      } else {
+        //console.log("鎮ㄧ殑娴忚鍣ㄦ敮鎸乄ebSocket");
+        let socketUrl = "ws://" + this.$t('ip') + ":8888" + "/springboot-vue3/api/talk/" + viewname;
+        if (socket != null) {
+          socket.close();
+          socket = null;
+        }
+        // 寮�鍚竴涓獁ebsocket鏈嶅姟
+        socket = new WebSocket(socketUrl);
+        //鎵撳紑浜嬩欢
+        socket.onopen = function () {
+          console.log("websocket宸叉墦寮�");
+        };
+        //  娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅
+        socket.onmessage = function (msg) {
+          //console.log("鏀跺埌鏁版嵁====" + msg.data);
+          let obj = JSON.parse(msg.data);
+          if (obj.alarmmg) {
+
+
+            if (obj.alarmmg[0].length > 0) {
+              if (this.alarm.length > 0) {
+                if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) {
+                  this.alarm = obj.alarmmg[0];
+                  this.dialogFormVisible2 = true;
+                }
+              } else {
+                this.alarm = obj.alarmmg[0];
+                this.dialogFormVisible2 = true;
+              }
+            } else {
+              this.alarm = obj.alarmmg[0];
+              this.dialogFormVisible2 = false;
+            }
+            //鏄惁鎬ュ仠
+            if (obj.emergencystop != null) {
+              this.EmergencyStop = obj.emergencystop[0];
+            }
+
+            //澶嶄綅鍊掕鏃�
+            if (obj.countdown != null) {
+              if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) {
+                this.CountDown();
+              }
+            }
+
+            //澶嶄綅瀹屾垚淇″彿
+            if (obj.reset != null) {
+              this.reset = obj.reset[0];
+            }
+          }
+
+
+
+
+
+
+          if (obj.Abort) {
+
+            if (obj.Abort[0].length > 0) {
+              this.receivedData = obj.Abort[0][0];
+              this.receivedData2 = obj.Abort[0][1];
+              // this.dialogFormVisible3 = true;
+            }
+          }
+          this.$forceUpdate();
+
+        }.bind(this);
+        //鍏抽棴浜嬩欢
+        socket.onclose = function () {
+          console.log("websocket宸插叧闂�");
+        };
+        //鍙戠敓浜嗛敊璇簨浠�
+        socket.onerror = function () {
+          console.log("websocket鍙戠敓浜嗛敊璇�");
+        }
+      }
+    },
+    //45绉掑浣嶅�掓暟璁℃椂
+    CountDown() {
+      let count = 45;
+      let timer = setInterval(
+        () => {
+          if (this.EmergencyStop == true) {
+            this.dialogFormCountDown = false;
+            clearInterval(timer);
+            this.CountDowns = "0";
+          } else {
+            if (count > 0) {
+              this.PromptSize = 500;
+              this.CountDowns = count;
+              count--;
+            }
+            else {
+              this.PromptSize = 200;
+              this.CountDowns = "Waiting for reset";
+              if (this.reset == true) {
+                clearInterval(timer);
+                this.dialogFormCountDown = false;
+              }
+            }
+          }
+
+        },
+        1000
+      );
+      if (this.reset == false) {
+        this.dialogFormCountDown = true;
+      }
+    },
     logout: function () {
       removeToken()
       this.$router.push('/login')
@@ -157,20 +351,19 @@
     goToHome() {
       this.$router.push('/home');
     },
-  
+
     // ...mapMutations('tags', ['addTag', 'removeTag', 'switchTag']),
     addTag() {
-  // let submenuItem;
-  // const menuItem = this.menuList.find(item => item.menuLists.some(menu => menu.router === router));
-  // if (menuItem) {
-  //   submenuItem = menuItem.menuLists.find(menu => menu.router === router);
-  // }
-  // if (submenuItem) {
-  //   const tag = submenuItem.router;
-  //   this.$store.commit('tags/addTag', tag);
-  // }
-},
-
+      // let submenuItem;
+      // const menuItem = this.menuList.find(item => item.menuLists.some(menu => menu.router === router));
+      // if (menuItem) {
+      //   submenuItem = menuItem.menuLists.find(menu => menu.router === router);
+      // }
+      // if (submenuItem) {
+      //   const tag = submenuItem.router;
+      //   this.$store.commit('tags/addTag', tag);
+      // }
+    },
 
     removeTag() {
       // this.$store.commit('tags/removeTag', index); // 浠� Vuex Store 涓Щ闄ゆ爣绛�
@@ -185,13 +378,13 @@
         this.$message.error('鏂板瘑鐮佷笌纭瀵嗙爜涓嶄竴鑷�');
         return;
       }
-      changePassword({oldPassword, newPassword}).then(res => {
+      changePassword({ oldPassword, newPassword }).then(res => {
         console.log(res.data);
         this.$message.success('瀵嗙爜淇敼鎴愬姛');
         removeToken()
         this.$router.push('/login')
       }).catch(() => {
-       
+
       });
 
       this.dialogVisible = false;
@@ -214,7 +407,7 @@
         '瑙掕壊绠$悊': 'RoleManagement',
         '瑙掕壊鍒楄〃': 'RoleList',
         '鐢垫皵绠$悊': 'Electrical management',
-        '璁惧鐘舵��':'State',
+        '璁惧鐘舵��': 'State',
 
         '涓婚〉': 'Home'
         // 鏍规嵁瀹為檯闇�姹傜户缁坊鍔犲鐓у叧绯�
@@ -241,69 +434,76 @@
 </script>
 
 <style scoped lang="less">
-
-.el-menu--horizontal > .el-submenu .el-submenu__title {
+.el-menu--horizontal>.el-submenu .el-submenu__title {
   height: 45px !important;
 }
-.custom-submenu  {
- 
- 
- height: 90px   !important;
+
+.custom-submenu {
+
+
+  height: 90px !important;
 }
 
 
 .header-container {
 
- height: 30px   !important; /* 璁剧疆杈冨皬鐨勯珮搴� */
+  height: 30px !important;
+  /* 璁剧疆杈冨皬鐨勯珮搴� */
 }
 
 
 
 .header-left {
- margin-right: auto;
-width:30px;
- 
+  margin-right: auto;
+  width: 30px;
+
 }
+
 .el-aside {
- height: 100vh;
- background-color: #222f3e;
- line-height: 200px;
+  height: 100vh;
+  background-color: #222f3e;
+  line-height: 200px;
 }
 
 .el-menu-vertical-demo:not(.el-menu--collapse) {
- width: 200px;
- min-height: 400px;
+  width: 200px;
+  min-height: 400px;
 }
 
 .el-menu-demo {
- display: flex;
- width: 100%;
- height: 100%;
- justify-content: flex-end;
- align-items: center;
+  display: flex;
+  width: 100%;
+  height: 100%;
+  justify-content: flex-end;
+  align-items: center;
 
 }
 
 .el-menu-vertical-demo {
- border: 0;
+  border: 0;
 }
 
 .logo {
- background-color: #222f3e;
- display: flex;
- justify-content: center;
- align-items: center;
- height: 60px;
+  background-color: #222f3e;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 60px;
 
- .sys-name {
-   font-size: 20px;
-   color: #ffffff;
-   margin-left: 10px;
- }
+  .sys-name {
+    font-size: 20px;
+    color: #ffffff;
+    margin-left: 10px;
+  }
+}
+
+.blue-button {
+  background-color: green;
+  color: white;
 }
 
 .el-header {
 
- background-color: #576574;
+  background-color: #576574;
 }
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/main.js b/CanadaMes-ui/src/main.js
index dfacd3c..a6bc365 100644
--- a/CanadaMes-ui/src/main.js
+++ b/CanadaMes-ui/src/main.js
@@ -10,14 +10,14 @@
 import VueI18n from 'vue-i18n'
 import zhCN from './lang/locales/zh-CN.json' // 涓枃璇█鍖�
 import enUS from './lang/locales/en-US.json' // 鑻辨枃璇█鍖�
-import websocketPlugin from './api/websocketPlugin';  // 寮曞叆鎻掍欢鏂囦欢
+//import websocketPlugin from './api/websocketPlugin';  // 寮曞叆鎻掍欢鏂囦欢
 // import store from './store'
 
 // import store from './store'
 Vue.use(VueI18n)
-Vue.use(websocketPlugin, {
-  ip: 'localhost',  // 鏇挎崲鎴愪綘鐨� WebSocket 鏈嶅姟鍣� IP 鍦板潃
-});
+// Vue.use(websocketPlugin, {
+//   ip: 'localhost',  // 鏇挎崲鎴愪綘鐨� WebSocket 鏈嶅姟鍣� IP 鍦板潃
+// });
 
 const i18n = new VueI18n({
   locale: 'en-US', 
diff --git a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
index fff23a1..c1831cb 100644
--- a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
+++ b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
@@ -60,19 +60,19 @@
           <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
             <div class="item-row">
               <span class="name" style="width:250px;">{{ item.name }}</span>
-              <!-- <el-input v-if="item.type === '0'"
+              <el-input v-if="item.type === '0'"
             v-model="item.value"
             class="input-box"
             :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"
-            @keyup.enter.native="submitDataToBackend">
-  </el-input> -->
+            @keyup.enter.native="submitDataToBackend($event)">
+  </el-input>
 
-  <el-input v-if="item.type === '0'"
+  <!-- <el-input v-if="item.type === '0'"
             v-model="item.value"
             class="input-box"
            
             @keyup.enter.native="submitDataToBackend">
-  </el-input>
+  </el-input> -->
 
                 <span v-if="item.unit" :name="item.unit"  >{{ item.unit }}</span>
 
@@ -114,6 +114,7 @@
 
 
   },
+ 
   methods: {
     closeSocket () {
       // 鍏抽棴 WebSocket 杩炴帴
@@ -155,7 +156,7 @@
       const jsonString = JSON.stringify(jsonObject);
       console.log('鎻愪氦浠ヤ笅鏁版嵁鍒板悗绔�:', jsonString);
       socket?.send(jsonString);
-
+      event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
 
     },
     initWebSocket () {
@@ -181,104 +182,112 @@
         };
 
         // 鏀跺埌娑堟伅
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+//         let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
 
-const inputBox = document.querySelectorAll('.input-box');
-inputBox.forEach(box => {
-  box.addEventListener('mouseenter', () => {
-    isMouseInInputBox = true;
-  });
-  box.addEventListener('mouseleave', () => {
-    isMouseInInputBox = false;
-  });
-});
+// const inputBox = document.querySelectorAll('.input-box');
+// inputBox.forEach(box => {
+//   box.addEventListener('mouseenter', () => {
+//     isMouseInInputBox = true;
+//   });
+//   box.addEventListener('mouseleave', () => {
+//     isMouseInInputBox = false;
+//   });
+// });
 
 socket.onmessage = (msg) => {
   if (!msg.data) {
     return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
   }
 
+  // 娣诲姞鍒ゆ柇鏉′欢锛氬鏋滃厜鏍囧湪杈撳叆妗嗗唴锛屽垯涓嶆墽琛屽悗缁�昏緫
+  if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
+  }
+ 
+
   let obj = JSON.parse(msg.data);
+  
   const jsonData2 = this.jsonData;
 
   const parms = obj.params;
-      const fanzhuan = obj.fanzhuan;
-      const xiaoche = obj.xiaoche;
-      const dache = obj.dache1;
+  const fanzhuan = obj.fanzhuan;
+  const xiaoche = obj.xiaoche;
+  const dache = obj.dache1;
 
-      const parms2 = obj.params2;
-      const fanzhuan2 = obj.fanzhuan2;
-      const xiaoche2 = obj.xiaoche2;
+  const parms2 = obj.params2;
+  const fanzhuan2 = obj.fanzhuan2;
+  const xiaoche2 = obj.xiaoche2;
 
-  if(parms && !isMouseInInputBox){
-     
+  if(parms){
+    let index = 0;
+    for (let i = 0; i < jsonData2.length - 1; i++) {
+      let arr = jsonData2[i];
 
-      let index = 0;
-      for (let i = 0; i < jsonData2.length - 1; i++) {
-        let arr = jsonData2[i];
-
-        for (let j = 0; j < arr.length; j++) {
-          let obj = arr[j];
-          if (obj.type === '0' && Object.prototype.hasOwnProperty.call(obj, 'value')) {
-            if (Array.isArray(parms) && Array.isArray(parms[0]) && parms[0][index] !== undefined) {
-              obj.value = parms[0][index];
-              index++;
-            }
+      for (let j = 0; j < arr.length; j++) {
+        let obj = arr[j];
+        if (obj.type === '0' && Object.prototype.hasOwnProperty.call(obj, 'value')) {
+          if (Array.isArray(parms) && Array.isArray(parms[0]) && parms[0][index] !== undefined) {
+            obj.value = parms[0][index];
+            index++;
           }
         }
-      }
-      if (Array.isArray(fanzhuan) && Array.isArray(fanzhuan[0]) && fanzhuan[0][0] !== undefined) {
-        jsonData2[4][0]['value'] = fanzhuan[0][0];
-      }
-      if (Array.isArray(xiaoche) && Array.isArray(xiaoche[0]) && xiaoche[0][0] !== undefined) {
-        jsonData2[3][0]['value'] = xiaoche[0][0];
-      }
-      if (Array.isArray(dache) && Array.isArray(dache[0]) && dache[0][0] !== undefined) {
-        jsonData2[2][0]['value'] = dache[0][0];
-      }
-
-      let index2 = 0;
-      for (let i = 5; i < jsonData2.length; i++) {
-        let arr2 = jsonData2[i];
-
-        for (let j = 0; j < arr2.length; j++) {
-          let obj2 = arr2[j];
-          if (obj2.type === '0' && Object.prototype.hasOwnProperty.call(obj2, 'value')) {
-            if (Array.isArray(parms2) && Array.isArray(parms2[0]) && parms2[0][index2] !== undefined) {
-              obj2.value = parms2[0][index2];
-              index2++;
-            }
-          }
-        }
-      }
-
-     
-              for (let i = 0; i < jsonData2.length; i++) {
-                let arr = jsonData2[i];
-
-                for (let j = 0; j < arr.length; j++) {
-                  let obj = arr[j];
-                  if (obj.type === '0' && Object.prototype.hasOwnProperty.call(obj, 'value')) {
-                    if (Array.isArray(parms) && Array.isArray(parms[0]) && parms[0][index] !== undefined) {
-                      obj.value = parms[0][index];
-                      index++;
-                    }
-                  }
-                }
-              }
-      
-      if (Array.isArray(fanzhuan2) && Array.isArray(fanzhuan2[0]) && fanzhuan2[0][0] !== undefined) {
-        jsonData2[8][0]['value'] = fanzhuan2[0][0];
-      }
-
-      if (Array.isArray(xiaoche2) && Array.isArray(xiaoche2[0]) && xiaoche2[0][0] !== undefined) {
-        jsonData2[9][0]['value'] = xiaoche2[0][0];
       }
     }
-  
 
+    if (Array.isArray(fanzhuan) && Array.isArray(fanzhuan[0]) && fanzhuan[0][0] !== undefined) {
+      jsonData2[4][0]['value'] = fanzhuan[0][0];
+    }
+    if (Array.isArray(xiaoche) && Array.isArray(xiaoche[0]) && xiaoche[0][0] !== undefined) {
+      jsonData2[3][0]['value'] = xiaoche[0][0];
+    }
+    if (Array.isArray(dache) && Array.isArray(dache[0]) && dache[0][0] !== undefined) {
+      jsonData2[2][0]['value'] = dache[0][0];
+    }
 
+    let index2 = 0;
+    for (let i = 5; i < jsonData2.length; i++) {
+      let arr2 = jsonData2[i];
+
+      for (let j = 0; j < arr2.length; j++) {
+        let obj2 = arr2[j];
+        if (obj2.type === '0' && Object.prototype.hasOwnProperty.call(obj2, 'value')) {
+          if (Array.isArray(parms2) && Array.isArray(parms2[0]) && parms2[0][index2] !== undefined) {
+            obj2.value = parms2[0][index2];
+            index2++;
+          }
+        }
+      }
+    }
+
+    // // 娣诲姞鍒ゆ柇鏉′欢锛氬鏋滃厜鏍囧湪杈撳叆妗嗗唴锛屽垯涓嶆墽琛屽悗缁�昏緫
+    // if (document.activeElement.tagName.toLowerCase() === 'input') {
+    //   return;
+    // }
+
+    for (let i = 0; i < jsonData2.length; i++) {
+      let arr = jsonData2[i];
+
+      for (let j = 0; j < arr.length; j++) {
+        let obj = arr[j];
+        if (obj.type === '0' && Object.prototype.hasOwnProperty.call(obj, 'value')) {
+          if (Array.isArray(parms) && Array.isArray(parms[0]) && parms[0][index] !== undefined) {
+            obj.value = parms[0][index];
+            index++;
+          }
+        }
+      }
+    }
+
+    if (Array.isArray(fanzhuan2) && Array.isArray(fanzhuan2[0]) && fanzhuan2[0][0] !== undefined) {
+      jsonData2[8][0]['value'] = fanzhuan2[0][0];
+    }
+
+    if (Array.isArray(xiaoche2) && Array.isArray(xiaoche2[0]) && xiaoche2[0][0] !== undefined) {
+      jsonData2[9][0]['value'] = xiaoche2[0][0];
+    }
+  }
 };
+
 
 
 
@@ -317,6 +326,9 @@
           } else if (obj.button && obj.button.name) {
             const newName = nameMap[obj.button.name] || obj.button.name;
             return { ...obj, button: { ...obj.button, name: newName } };
+          } else if (obj.title && obj.title.name) {
+            const newName = nameMap[obj.title.name] || obj.title.name;
+            return { ...obj, title: { ...obj.title, name: newName } };
           } else {
             return obj;
           }
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
index bb5400c..8d15a80 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -56,21 +56,21 @@
               <span class="name" style="width:300px;">{{ item.name }}</span>
 
                 <el-input style="width:250px;"  v-if="item.state != 0 && item.type === '0' && groupIndex === 0 && (itemIndex === 2)"  readonly v-model="item.value"  
-                class="input-box"    ></el-input>
+                class="input-box"  :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"   ></el-input>
 
-                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 0 "  v-model="item.value"  @keyup.enter.native="A01start"
-                class="input-box"    ></el-input>
+                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 0 "  v-model="item.value"  @keyup.enter.native="A01start($event)"
+                class="input-box"   :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"  ></el-input>
                 <el-input style="width: 250px;" v-else-if="(item.state !== 0) && (item.type === '0') && (itemIndex === 2)" v-model="item.value" readonly class="input-box"   ></el-input>
 
                 
-                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1" v-model="item.value"  @keyup.enter.native="A02start"
-                class="input-box"   ></el-input>
-                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 2" v-model="item.value"  @keyup.enter.native="B01start"
-                class="input-box"   ></el-input>
-                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 3" v-model="item.value"  @keyup.enter.native="B02start"
-                class="input-box"    ></el-input>
+                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1" v-model="item.value"  @keyup.enter.native="A02start($event)"
+                class="input-box"  :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"  ></el-input>
+                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 2" v-model="item.value"  @keyup.enter.native="B01start($event)"
+                class="input-box"  :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"  ></el-input>
+                <el-input style="width:250px;"  v-else-if="item.state != 0 && item.type === '0' && groupIndex === 3" v-model="item.value"  @keyup.enter.native="B02start($event)"
+                class="input-box"    :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`" ></el-input>
                 <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0'" v-model="item.value"
-                class="input-box"    ></el-input>
+                class="input-box"    :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`" ></el-input>
             </div>
           </div>
           <div class="button-row" style="display: flex; justify-content: space-between;">
@@ -151,7 +151,7 @@
 
 
     },
-    A01start(){
+    A01start(event){
 
       const data = [];
 
@@ -190,9 +190,9 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
-
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
-    A02start(){
+    A02start(event){
       const data = [];
 
 for (let i = 1; i < 2; i++) {
@@ -223,9 +223,9 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
-
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
-    B01start(){
+    B01start(event){
       const data = [];
 
 for (let i = 2; i < 3; i++) {
@@ -248,9 +248,9 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
-
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
-    B02start(){
+    B02start(event){
       const data = [];
 
 for (let i = 3; i < 4; i++) {
@@ -259,6 +259,16 @@
   });
 
   const values = inputData.map(item => item.value);
+
+  if (values.length > 0) {
+
+let firstValue = values[0];
+if (!(firstValue >= "106" && firstValue <= "210")) {
+  values.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+}
   data.unshift([], [], []);
   data.push(values);
 }
@@ -273,7 +283,7 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
-
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
     submitDataToBackend (currentButtonName) {
       if (currentButtonName === 'A01鍚姩' || currentButtonName === 'A01 Start') {
@@ -430,7 +440,7 @@
       }
 
 
-
+    
 
     },
 
@@ -457,21 +467,26 @@
         };
 
         // 鏀跺埌娑堟伅
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+//         let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
 
-const inputBox = document.querySelectorAll('.input-box');
-inputBox.forEach(box => {
-  box.addEventListener('mouseenter', () => {
-    isMouseInInputBox = true;
-  });
-  box.addEventListener('mouseleave', () => {
-    isMouseInInputBox = false;
-  });
-});
+// const inputBox = document.querySelectorAll('.input-box');
+// inputBox.forEach(box => {
+//   box.addEventListener('mouseenter', () => {
+//     isMouseInInputBox = true;
+//   });
+//   box.addEventListener('mouseleave', () => {
+//     isMouseInInputBox = false;
+//   });
+// });
 
 socket.onmessage = (msg) => {
   if (!msg.data) {
     return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+  }
+
+   // 娣诲姞鍒ゆ柇鏉′欢锛氬鏋滃厜鏍囧湪杈撳叆妗嗗唴锛屽垯涓嶆墽琛屽悗缁�昏緫
+   if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
   }
 
           let obj = JSON.parse(msg.data);
@@ -479,7 +494,7 @@
           const weihuiling = obj.weihuiling;
 
 
-  if(obj.zuhe1&& !isMouseInInputBox){
+  if(obj.zuhe1){
 
 // console.log(obj);
   
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
index 286a5ef..636b9d0 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -45,18 +45,18 @@
              
                 
  <el-input style="width:250px;"  v-if="item.state != 0 && item.type === '0' && groupIndex === 0 && (itemIndex === 2)"  readonly v-model="item.value"  
-                class="input-box"></el-input>
+                class="input-box"   :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"></el-input>
 
 
                 <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1 && (itemIndex === 2)"  readonly v-model="item.value"
-                class="input-box"></el-input>
+                class="input-box"   :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"></el-input>
 
-                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 0 "   v-model="item.value"  @keyup.enter.native="A01start"
-                class="input-box"></el-input>
+                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 0 "   v-model="item.value"  @keyup.enter.native="A01start($event)"
+                class="input-box"   :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"></el-input>
 
 
-                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1 "  v-model="item.value" @keyup.enter.native="A02start"
-                class="input-box"></el-input>
+                <el-input style="width:250px;" v-else-if="item.state != 0 && item.type === '0' && groupIndex === 1 "  v-model="item.value" @keyup.enter.native="A02start($event)"
+                class="input-box"   :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"></el-input>
 
 
 
@@ -133,7 +133,7 @@
     },
 
 
-    A01start(){
+    A01start(event){
       const data = [];
 
 for (let i = 0; i < 1; i++) {
@@ -155,10 +155,10 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
-
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
 
     },
-    A02start(){
+    A02start(event){
 
       const data = [];
 
@@ -180,6 +180,7 @@
 const jsonString = JSON.stringify(jsonObject);
 console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
 socket?.send(jsonString);
+event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
     //鎻愪氦鏂规硶
     submitDataToBackend (currentButtonName) {
@@ -318,26 +319,29 @@
         };
 
         // 鏀跺埌娑堟伅
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+//         let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
 
-const inputBox = document.querySelectorAll('.input-box');
-inputBox.forEach(box => {
-  box.addEventListener('mouseenter', () => {
-    isMouseInInputBox = true;
-  });
-  box.addEventListener('mouseleave', () => {
-    isMouseInInputBox = false;
-  });
-});
+// const inputBox = document.querySelectorAll('.input-box');
+// inputBox.forEach(box => {
+//   box.addEventListener('mouseenter', () => {
+//     isMouseInInputBox = true;
+//   });
+//   box.addEventListener('mouseleave', () => {
+//     isMouseInInputBox = false;
+//   });
+// });
 
 socket.onmessage = (msg) => {
   if (!msg.data) {
     return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
   }
 
+  if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
+  }
+
+
           let obj = JSON.parse(msg.data);
-
-
           // console.log(obj)
           const jsonData2 = this.jsonData;
           const weihuiling = obj.weihuiling;
@@ -345,7 +349,7 @@
 
 
             
-            if (obj.zuhe1&& !isMouseInInputBox ) {
+            if (obj.zuhe1 ) {
               // 鎵ц鏇存柊閫昏緫
               for (let i = 0; i < 2; i++) {
                 jsonData2[i].forEach((item, index) => {
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter2.vue b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
index 95bf82f..5542c24 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -186,7 +186,7 @@
   <el-input
                 v-if="item.type === '0' && groupIndex==15"
                 v-model="item.value"
-                @keyup.enter.native="timeout"
+                @keyup.enter.native="timeout($event)"
                 style="width: 300px"
                 class="input-box2"
               ></el-input>
@@ -265,20 +265,31 @@
     },
 
     updateButtonValue(dataGroup, itemIndex) {
-      if (dataGroup[itemIndex].button.value === 1) {
+      if (dataGroup[itemIndex].button.value2 === 1) {
         // 濡傛灉褰撳墠鎸夐挳鐨勫�兼槸 0锛屽皢鍏惰涓� 1
-        this.$set(dataGroup[itemIndex].button, "value", 0);
+        this.$set(dataGroup[itemIndex].button, "value2", 0);
       } else {
         // 鍚﹀垯灏嗗叾璁句负 0
-        this.$set(dataGroup[itemIndex].button, "value", 1);
+        this.$set(dataGroup[itemIndex].button, "value2", 1);
       }
     },
     //鑼冨洿 0-100
-    timeout(){
+    timeout(event){
 
     
         const data3 = [];
         const resetButtonValues3 = [this.jsonData[15][0].value];
+
+        if (resetButtonValues3.length > 0) {
+
+let firstValue = resetButtonValues3[0];
+if (!(firstValue >= "0" && firstValue <= "100")) {
+  resetButtonValues3.shift();
+  this.$message.error("Out of range");
+
+  return false;
+}
+}
 
         // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
         data3.push(resetButtonValues3.flat());
@@ -295,7 +306,7 @@
         // setTimeout(()=>
         //   window.location.reload(),2000
         // )
-      
+        event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
 
 
@@ -311,13 +322,13 @@
                 ["娓呴櫎ID", "Clear ID"].includes(subItem.button.name)
             );
 
-            return buttonItem ? buttonItem.button.value : null;
+            return buttonItem ? buttonItem.button.value2 : null;
           })
-          .filter((value) => value !== null);
+          .filter((value2) => value2 !== null);
 
         // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
         data2.push(resetButtonValues.flat());
-        data2.push([]);
+        data2.push([],[]);
         // 鍦� data2 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
 
         // 鍒涘缓 jsonObject2 瀵硅薄锛屽苟娣诲姞 data2 灞炴��
@@ -336,11 +347,12 @@
         currentButtonName === "A02缁堟/缁х画"
       ) {
         const data3 = [];
-        const resetButtonValues3 = [this.jsonData[13][0].button.value,this.jsonData[14][0].button.value];
+        const resetButtonValues3 = [this.jsonData[13][0].button.value2,this.jsonData[14][0].button.value2];
 
         // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
         data3.push(resetButtonValues3.flat());
         data3.unshift([]);
+        data3.push([]);
         // 鍦� data3 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
 
         // 鍒涘缓 jsonObject3 瀵硅薄锛屽苟娣诲姞 data3 灞炴��
@@ -384,22 +396,25 @@
         socket.onopen = function () {
           console.log("websocket宸叉墦寮�");
         };
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
-
-const inputBox = document.querySelectorAll('.input-box2');
-inputBox.forEach(box => {
-  box.addEventListener('mouseenter', () => {
-    isMouseInInputBox = true;
-  });
-  box.addEventListener('mouseleave', () => {
-    isMouseInInputBox = false;
-  });
-});
+//         let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+        let isUpdated = false;  // 瀹氫箟鏍囧織鍙橀噺
+// const inputBox = document.querySelectorAll('.input-box2');
+// inputBox.forEach(box => {
+//   box.addEventListener('mouseenter', () => {
+//     isMouseInInputBox = true;
+//   });
+//   box.addEventListener('mouseleave', () => {
+//     isMouseInInputBox = false;
+//   });
+// });
         // 鏀跺埌娑堟伅
         socket.onmessage = (msg) => {
           if (!msg.data) {
             return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
           }
+          if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
+  }
 
           let obj = JSON.parse(msg.data);
 
@@ -413,7 +428,7 @@
           // const inputBox = document.querySelectorAll('.id');
           // const target = event.target;
 
-          if (parms && !isMouseInInputBox) {
+          if (parms ) {
             //鎬ュ仠鎸夐挳
             jsonData2[13][0].button.value = obj.jiting[0][0];
             jsonData2[14][0].button.value = obj.jiting[0][1];
@@ -493,6 +508,8 @@
                 }
               }
             }
+            this.$forceUpdate();
+
             //鎵弿鏋壂鐮佺殑ID
 
             jsonData2.forEach((item) => {
@@ -531,7 +548,18 @@
              
              jsonData2[15][0].value =  obj.timeout[0];
 
-           
+             if (!isUpdated) {
+      for (let i = 0; i < jsonData2.length; i++) {
+        for (let j = 0; j < jsonData2[i].length; j++) {
+          if(jsonData2[i][j].button){
+
+          
+          jsonData2[i][j].button.value2 = jsonData2[i][j].button.value;
+        }
+        }
+      }
+      isUpdated = true;  // 鏇存柊鏍囧織鍙橀噺鐨勫��
+    }
                  
 
           }
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning1.vue b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
index a59cccb..7b46cad 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -136,8 +136,8 @@
               <el-input
                 v-if="item.type === '0'"
                 v-model="item.value"
-                class="input-box"
-                @keyup.enter.native="submitDataToBackend"
+                class="input-box"  :oninput="`value=value.replace(/^0|[^0-9]/g,'');if(value<`+item.min+`){value=`+item.value+`}else if(value>`+item.max+`){value=`+item.value+`}`"
+                @keyup.enter.native="submitDataToBackend($event)"
               ></el-input>
               <span v-if="item.unit" :name="item.unit">{{ item.unit }}</span>
 
@@ -180,7 +180,7 @@
       this.$set(dataGroup[itemIndex].button, "value", 1); // 鐐瑰嚮鎸夐挳鍚庡皢鍊兼敼涓�1
     },
     //鎻愪氦鏁版嵁鍒板悗绔�
-    submitDataToBackend() {
+    submitDataToBackend(event) {
       const inputData = this.jsonData.map((dataGroup) => {
         return dataGroup.map((item) => {
           if (item.type === "0") {
@@ -208,6 +208,7 @@
       const jsonString = JSON.stringify(jsonObject);
        console.log('鎻愪氦浠ヤ笅鏁版嵁鍒板悗绔�:', jsonString);
       socket?.send(jsonString);
+      event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
     initWebSocket() {
       let viewname = "Positioning1";
@@ -236,21 +237,24 @@
         };
 
         // 鏀跺埌娑堟伅
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+//         let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
 
-const inputBox = document.querySelectorAll('.input-box');
-inputBox.forEach(box => {
-  box.addEventListener('mouseenter', () => {
-    isMouseInInputBox = true;
-  });
-  box.addEventListener('mouseleave', () => {
-    isMouseInInputBox = false;
-  });
-});
+// const inputBox = document.querySelectorAll('.input-box');
+// inputBox.forEach(box => {
+//   box.addEventListener('mouseenter', () => {
+//     isMouseInInputBox = true;
+//   });
+//   box.addEventListener('mouseleave', () => {
+//     isMouseInInputBox = false;
+//   });
+// });
 
 socket.onmessage = (msg) => {
   if (!msg.data) {
     return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+  }
+  if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
   }
 
   let obj = JSON.parse(msg.data);
@@ -258,7 +262,7 @@
 
   const parms = obj.params;
 
-  if(parms && !isMouseInInputBox){ // 鍙湁鍦ㄩ紶鏍囦笉鍦ㄨ緭鍏ユ鍐呮椂鎵嶆洿鏂版暟鎹�
+  if(parms ){ // 鍙湁鍦ㄩ紶鏍囦笉鍦ㄨ緭鍏ユ鍐呮椂鎵嶆洿鏂版暟鎹�
   //  console.log(parms)
    
     let index = 0;
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 9e366aa..e2acb21 100644
--- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
+++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -116,7 +116,7 @@
                   <el-input
                     v-if="item.type === '0' && groupIndex === 0"
                     v-model="item.value"
-                    @keyup.enter.native="zuhe1"
+                    @keyup.enter.native="zuhe1($event)"
                     class="input-box"
                     :class="{
                       'special-class': groupIndex === 0,
@@ -127,7 +127,7 @@
                   <el-input
                     v-else-if="item.type === '0' && groupIndex === 1"
                     v-model="item.value"
-                    @keyup.enter.native="zuhe2"
+                    @keyup.enter.native="zuhe2($event)"
                     class="input-box"
                     :class="{
                       'special-class': groupIndex === 0,
@@ -317,7 +317,7 @@
         this.$set(dataGroup[itemIndex].button, "value", 1);
       }
     },
-    zuhe1() {
+    zuhe1(event) {
       const data = [];
 
       for (let i = 0; i < 1; i++) {
@@ -328,7 +328,36 @@
           });
 
         const values = inputData.map((item) => item.value);
+        // console.log(values)
+        if (values.length > 0) {
 
+
+if (!(values[1] == "1" || values[1] == "2")) {
+  values.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+// if (!(values[2] < "380" ) ) {
+//   values.shift();
+//   this.$message.error("Out of range");
+//   return false;
+// }
+
+
+
+if (!(values[4] >= "1" && values[4]  <= "210")  && values[4]  !== "1000") {
+  values.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+if (!(values[5] >= "1" && values[5]  <= "210")  && values[5]  !== "1000") {
+  values.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+
+}
+ 
         data.push(values);
       }
 
@@ -342,8 +371,13 @@
           });
 
         const values = inputData.map((item) => item.value);
-
-        data.push(values);
+        const pattern = /^[\w ]{1,14}$/;   // 鍖归厤闀垮害涓�14鐨勬暟瀛椼�佸瓧姣嶃�佺┖鏍肩殑缁勫悎
+if (!pattern.test(values[0])) {
+  values.shift();
+  this.$message.error("Please enter a 14-character string.");
+  return false;
+}
+       data.push(values);
       }
       data.push([], [], []);
 
@@ -353,8 +387,9 @@
       const jsonString = JSON.stringify(jsonObject);
       console.log("鎵�鏈塗ype涓�0鐨剉alue:", jsonString);
       socket?.send(jsonString);
+      event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
-    zuhe2() {
+    zuhe2(event) {
       const data2 = [];
 
       for (let i = 1; i < 2; i++) {
@@ -365,6 +400,29 @@
           });
 
         const values2 = inputData.map((item) => item.value);
+
+        if (values2.length > 0) {
+
+
+
+if (!(values2[1] >= "1" && values2[1]  <= "210")  && values2[1]  !== "1000") {
+  values2.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+if (!(values2[2] >= "1" && values2[2]  <= "210")  && values2[2]  !== "1000") {
+  values2.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+if (!(values2[3] == "1" || values2[3] == "2")) {
+  values2.shift();
+  this.$message.error("Out of range");
+  return false;
+}
+
+
+}
 
         data2.push(values2);
       }
@@ -380,7 +438,12 @@
           });
 
         const values2 = inputData.map((item) => item.value);
-
+        const pattern = /^[\w ]{1,14}$/;  // 鍖归厤闀垮害涓�14鐨勬暟瀛椼�佸瓧姣嶃�佺┖鏍肩殑缁勫悎
+if (!pattern.test(values2[0])) {
+  values2.shift();
+  this.$message.error("Please enter a 14-character string.");
+  return false;
+}
         data2.push(values2);
         data2.push([], [], []);
       }
@@ -391,6 +454,7 @@
       const jsonString = JSON.stringify(jsonObject);
       console.log("鎵�鏈塗ype涓�0鐨剉alue:", jsonString);
       socket?.send(jsonString);
+      event.target.blur(); // 鍙栨秷杈撳叆妗嗙劍鐐�
     },
     submitDataToBackend(currentButtonName) {
       const data = [];
@@ -620,17 +684,17 @@
           console.log("websocket宸叉墦寮�");
         };
 
-        let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
+        // let isMouseInInputBox = false; // 鏍囪榧犳爣鏄惁鍦ㄨ緭鍏ユ鍐�
 
-        const inputBox = document.querySelectorAll(".input-box");
-        inputBox.forEach((box) => {
-          box.addEventListener("mouseenter", () => {
-            isMouseInInputBox = true;
-          });
-          box.addEventListener("mouseleave", () => {
-            isMouseInInputBox = false;
-          });
-        });
+        // const inputBox = document.querySelectorAll(".input-box");
+        // inputBox.forEach((box) => {
+        //   box.addEventListener("mouseenter", () => {
+        //     isMouseInInputBox = true;
+        //   });
+        //   box.addEventListener("mouseleave", () => {
+        //     isMouseInInputBox = false;
+        //   });
+        // });
 
         socket.onmessage = (msg) => {
           if (!msg.data) {
@@ -641,8 +705,11 @@
           // console.log(obj)
           const weihuiling = obj.weihuiling;
           const jsonData2 = this.jsonData;
+          if (document.activeElement.tagName.toLowerCase() === 'input') {
+    return;
+  }
 
-          if (obj.zuhe1 && !isMouseInInputBox) {
+          if (obj.zuhe1 ) {
             //鍚姩鎸夐挳
 
             // 鎵ц鏇存柊閫昏緫
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 2c0efa2..e0a791e 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -46,9 +46,6 @@
     background-color: blue;
 }
 
-.red {
-    background-color: red;
-}
 
 .yellow {
     background-color: yellow;
@@ -211,6 +208,14 @@
     text-align: right;
 }
 
+.hide {
+    display: none;
+}
+
+.el-table .cell {
+    display: flex;
+}
+
 /* .el-table td,
 .el-table th {
     padding: 0px 0;
@@ -230,21 +235,23 @@
                 </div>
             </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)" :disabled="ManuallyInfeedGlass">
+                <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"
+                    :class="ManuallyInfeedGlass == true ? 'hide' : ''"></el-input>
+                <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="ManuallyInfeedGlass"
+                    :class="ManuallyInfeedGlass == true ? 'hide' : ''">
                     {{ $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>
             <div>
                 <el-table :data="this.tasklist1" border style="width: 100%">
-                    <el-table-column :width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
-                    <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
-                    <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
+                    <el-table-column :min-width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
+                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
+                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
+                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
-                    <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
+                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
                         <template slot-scope='scope'>
                             {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
                         </template>
@@ -258,13 +265,13 @@
                     </el-table-column>
                 </el-table>
                 <el-table :data="this.tasklist2" border style="width: 100%">
-                    <el-table-column :width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
-                    <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
-                    <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
+                    <el-table-column :min-width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
+                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
+                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
+                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
-                    <el-table-column :width="130" prop="lengthWidth" :label="$t('Dim')">
+                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
                         <template slot-scope='scope'>
                             {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
                         </template>
@@ -325,9 +332,11 @@
                 <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()" :disabled="OrderInfo">{{ $t('OrderInfo')
-                }}</el-button>
-                <el-button class="orderbutton2" type="primary" @click="showform6()" :disabled="OutingQueue">
+                <el-button class="orderbutton1" type="primary" @click="showform2()" :disabled="OrderInfo"
+                    :class="OrderInfo == true ? 'hide' : ''">{{ $t('OrderInfo')
+                    }}</el-button>
+                <el-button class="orderbutton2" type="primary" @click="showform6()" :disabled="OutingQueue"
+                    :class="OutingQueue == true ? 'hide' : ''">
                     {{ $t('Outing Queue') }}</el-button>
 
                 <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
@@ -435,10 +444,10 @@
                 <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column>
                 <el-table-column :min-width="55" prop="tier" :label="$t('The Side')"></el-table-column>
                 <el-table-column :min-width="145" prop="glassId" :label="$t('Barcode')"></el-table-column>
-                <el-table-column :min-width="100" prop="orderId" :label="$t('Order No')"></el-table-column>
+                <el-table-column :min-width="80" prop="orderId" :label="$t('Order No')"></el-table-column>
                 <el-table-column :min-width="80" prop="listId" :label="$t('List No')"></el-table-column>
-                <el-table-column :min-width="100" prop="boxId" :label="$t('Box No')"></el-table-column>
-                <el-table-column :min-width="90" prop="state" :label="$t('Glass State')">
+                <el-table-column :min-width="50" prop="boxId" :label="$t('Box No')"></el-table-column>
+                <el-table-column :min-width="80" prop="state" :label="$t('Glass State')">
                     <template slot-scope='scope'>
                         {{
                             scope.row.state == 1 ? $t('Normal') : scope.row.state == 2 ? $t('Entering') : scope.row.state == 3 ?
@@ -451,6 +460,12 @@
                         {{ scope.row.glassWidthMm }}{{ scope.row.glassWidthMm > 0 ? "*" : "" }}{{ scope.row.glassHeightMm }}
                     </template>
                 </el-table-column>
+                
+                <el-table-column :min-width="80" prop="lengthWidth" :label="$t('State')">
+                    <template slot-scope='scope'>
+                        {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}
+                    </template>
+                </el-table-column>
                 <el-table-column :min-width="250" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
@@ -461,10 +476,10 @@
                             @click="outglass(scope.row.glassId, scope.row.state)">{{ $t('Out') }}</el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                             @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)">
-                            {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}</el-button>
+                            {{ scope.row.disabled == 0 ? $t('Disable') : $t('Enable') }}</el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
                             :disabled="scope.row.glassId != null ? true : false"
-                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Increase')
+                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Add')
                             }}</el-button>
                     </template>
                 </el-table-column>
@@ -501,8 +516,11 @@
             <el-form :model="form" label-width="100px" style="padding-right: 30px">
                 <div style="display: flex;justify-content: space-around;">
                     <label for="">{{ $t('Upper film position') }}</label>
+                    <div>
+                        {{ $t('Confirm State') }}:{{ this.isConfirm == true ? $t('Not Allow') : $t('Allow') }}
                     <el-button type="primary" @click="isConfirmState()">
-                        {{ this.isConfirm == true ? "Allow" : "Not Allow" }}</el-button>
+                        {{ this.isConfirm == true ? $t('Allow') : $t('Not Allow') }}</el-button>
+                    </div>
                     <label for="">{{ $t('Scan Code Point') }}</label>
                 </div>
                 <div style="display: flex;justify-content: space-around;height: 40px;">
@@ -628,52 +646,66 @@
         </el-dialog>
 
         <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Outing Queue')" top="5vh">
-            <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue
+            {{  $t('Queue State') }}:
+            {{ this.isAllowQueue
                 == true ? $t('Start') : $t('Stop')
+            }}
+            <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue
+                == true ? $t('Stop') : $t('Start')
             }}</el-button>
-            <el-button type="primary" @click="isAllowReorderingState()" :disabled="this.isAllowQueue">{{
+            {{  $t('Sorting State') }}:
+            {{
                 this.isAllowReordering == true ? $t('Not Allow') : $t('Allow')
+            }}
+            <el-button type="primary" @click="isAllowReorderings()" :disabled="this.isAllowQueue">{{
+                this.isAllowReordering == true ? $t('Allow') : $t('Not Allow')
             }}</el-button>
+            <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input>
+            <el-button type="primary" @click="AddOutSliceS()">{{ $t('Add') }}</el-button>
+            <label style="background-color:yellow;font-size: 23px;" for="">{{ isQueueWarning== true ? $t('The cage is disabled') : "" }}</label>
+            <!-- <span style="background-color:yellow;">
+                {{ isQueueWarning== true ? $t('The cage is disabled') : $t('The cage is disabled') }}
+            </span> -->
+            
             <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border :cell-style="cellStyle"
                 style="width: 100%;overflow: auto;font-size: 18px;">
-                <el-table-column :min-width="100" prop="glassId" :label="$t('Barcode')"></el-table-column>
-                <el-table-column prop="storageCage.orderId" :label="$t('Order No')"></el-table-column>
-                <el-table-column prop="storageCage.listId" :label="$t('List No')"></el-table-column>
-                <el-table-column prop="storageCage.boxId" :label="$t('Box No')"></el-table-column>
-                <el-table-column prop="storageCage.glasswidthmm" :label="$t('Length')"></el-table-column>
-                <el-table-column prop="storageCage.glassheightmm" :label="$t('Width')"></el-table-column>
+                <el-table-column :min-width="175" prop="glassId" :label="$t('Barcode')"></el-table-column>
+                <el-table-column :min-width="70" prop="orderId" :label="$t('Order No')"></el-table-column>
+                <el-table-column :min-width="70" prop="listId" :label="$t('List No')"></el-table-column>
+                <el-table-column :min-width="70" prop="boxId" :label="$t('Box No')"></el-table-column>
+                <el-table-column :min-width="100" prop="glasswidthmm" :label="$t('Length')"></el-table-column>
+                <el-table-column :min-width="100" prop="glassheightmm" :label="$t('Width')"></el-table-column>
                 <el-table-column :min-width="90" prop="state" :label="$t('Glass State')">
                     <template slot-scope='scope'>
                         {{ scope.row.state == 0 ? $t('Waiting') : scope.row.state == 1 ? $t('Outing') : scope.row.state == 2
-                            ? $t('Completed') : scope.row.state == 3 ? $t('Absent') : $t('Deleted') }}
+                            ? $t('Outed') : scope.row.state == 3 ? $t('Absent') : $t('Completed') }}
                     </template>
                 </el-table-column>
                 <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column>
-                <el-table-column :min-width="300" prop="position" :label="$t('Position')" style="font-size: 20px;">
-                    <template slot-scope='scope'>
-                        <!-- {{ scope.row.position == 1 ? "<>鈻勨杽鈻�" : "鈻�" }} -->
-                        <div :style="'width:'+(scope.row.position==1?'300':'100') +'px;height:'+(scope.row.position==1?'100':'300') +'px;background-Color:gray;'">
-                            <!-- <div :style="'width:100px;height:300px;background-Color:red;'"></div> -->
-                        </div>
-                        <!-- {{ scope.row.position == 1 ? "<div></div>" : "<div></div>" }} -->
-                    </template>
-                </el-table-column>
-                <el-table-column prop="position" :label="$t('Flip')">
-                    <template slot-scope='scope'>
-                        {{ scope.row.flip == 1 ? $t('Yes') : $t('No') }}
-                    </template>
-                </el-table-column>
-                <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column>
-
-                <el-table-column prop="barcode" :label="$t('Complete')">
-                    <template slot-scope='scope'>
+                <el-table-column :min-width="90" prop="barcode" :label="$t('Complete')">
+                    <template slot-scope='scope' style="height:100px;height:100px;">
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            :disabled="(!isAllowQueue || scope.row.state != 1)"
+                            :disabled="!(!isAllowQueue && scope.row.state != 2 && scope.row.state != 4)"
                             @click="CompleteQueue(scope.row.id, scope.row.barcode, scope.row.glassId)">{{ $t('Complete')
                             }}</el-button>
                     </template>
                 </el-table-column>
-                <el-table-column :width="280" :label="$t('Operate')">
+                <el-table-column :min-width="300" prop="position" :label="$t('Position')" style="font-size: 20px;">
+                    <template slot-scope='scope'>
+                        <div
+                            :style="'width:' + (scope.row.position == 1 ? '300' : '100') + 'px;height:' + (scope.row.position == 1 ? '100' : '200') + 'px;background-Color:gray;margin:0 auto;'">
+                            
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="position" :label="$t('Flipped')" :min-width="200">
+                    <template slot-scope='scope'>
+                        {{ scope.row.flip == true ? $t('EXTERIQR OUT AND BYPASS TO THE LEFT')
+                            : $t('EXTERIQR OUT AND BYPASS TO THE RIGHT') }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column>
+                <el-table-column :width="240" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)"
                             style="font-size: 15px;"
@@ -692,6 +724,10 @@
                         </el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
                             @click="deleteproductionqueueglass(scope.row.barcode)">{{ $t('Delete') }}</el-button>
+
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
+                            @click="FrameStateUpdate(scope.row.barcode,scope.row.framestate)">{{
+                            scope.row.framestate == 0 ? $t('Stop') : $t('Start') }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -701,7 +737,7 @@
             top="5vh">
             <el-input style="width:15%;" :placeholder="$t('Enter the Frame No')" v-model="framebarcode"></el-input>
             <el-button type="primary" @click="showform7()">{{ $t('Query') }}</el-button>
-            <el-button type="primary" @click="addoutslice()">{{ $t('Increase') }}</el-button>
+            <el-button type="primary" @click="addoutslice()">{{ $t('Add') }}</el-button>
             <el-table :data="this.AluminumFrame" :height="700" border style="width: 100%;overflow: auto;">
 
                 <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column>
@@ -714,7 +750,7 @@
                 <el-table-column prop="storageCage.cell" :label="$t('Slot No')"></el-table-column>
                 <el-table-column prop="storageCage.tier" :label="$t('The Side')"></el-table-column>
                 <el-table-column prop="FrameNo" :label="$t('Frame No')"></el-table-column>
-                <el-table-column prop="Flip" :label="$t('Flip')"></el-table-column>
+                <el-table-column prop="Flip" :label="$t('Flipped')"></el-table-column>
                 <el-table-column prop="out_slice.state" :label="$t('In the queue')">
                     <template slot-scope='scope'>
                         {{ scope.row.out_slice != null ? $t('Yes') : $t('No') }}
@@ -734,7 +770,6 @@
                 </el-table-column>
             </el-table>
         </el-dialog>
-
         <el-dialog :visible.sync="dialogFormCountDown" :title="$t('Approximately resettable time')" top="5vh">
             <div :style="'font-size: ' + PromptSize + 'px;text-align: center;'">
                 <!-- {{ this.CountDowns }} -->
@@ -748,7 +783,8 @@
 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, SelectPermissionByUserName, currentUsername, CompleteQueue
+    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername, CompleteQueue,
+    isAllowReorderings, FrameStateUpdate
 } from "../../api/home";
 
 
@@ -834,11 +870,12 @@
             OutingQueue: true,
             OrderInfo: true,
             CageDetails: true,
-            CountDowns: "EMERGENCY \r\n STOP",
+            CountDowns: "0",
             D01RequestState: false,
             EmergencyStop: false,
             PromptSize: 250,
-            reset:false
+            reset: false,
+            isQueueWarning: false
         };
     },
     created() {
@@ -883,26 +920,46 @@
                     this.tasklist1 = obj.tasklist1[0];
                     this.tasklist2 = obj.tasklist2[0];
                     this.alarm = obj.alarmmg[0];
-                    if (this.alarm.length > 0) {
-                        this.dialogFormVisible2 = true;
-                    } else {
-                        this.dialogFormVisible2 = false;
-                    }
-                    //鏄惁鎬ュ仠
-                    this.EmergencyStop = obj.emergencystop[0];
-                    console.log(this.EmergencyStop);
+                    // if (obj.alarmmg[0].length > 0) {
+                    //     if (this.alarm.length > 0) {
+                    //         if (this.alarm[this.alarm.length - 1].id != obj.alarmmg[0][obj.alarmmg[0].length - 1].id) {
+                    //             this.alarm = obj.alarmmg[0];
+                    //             this.dialogFormVisible2 = true;
+                    //         }
+                    //     } else {
+                    //         this.alarm = obj.alarmmg[0];
+                    //         this.dialogFormVisible2 = true;
+                    //     }
+                    // }
+                    // //鏄惁鎬ュ仠
+                    // if (obj.emergencystop != null) {
+                    //     this.EmergencyStop = obj.emergencystop[0];
+                    // }
 
-                    //澶嶄綅鍊掕鏃�
-                    if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) {
-                        this.CountDown();
-                    }
-                    //澶嶄綅瀹屾垚淇″彿
-                    this.reset=obj.reset[0];
+                    // //澶嶄綅鍊掕鏃�
+                    // if (obj.countdown != null) {
+                    //     if ((obj.countdown[0] == true && this.CountDowns == 0) || this.EmergencyStop == true) {
+                    //         this.CountDown();
+                    //     }
+                    // }
+
+                    // //澶嶄綅瀹屾垚淇″彿
+                    // if (obj.reset != null) {
+                    //     this.reset = obj.reset[0];
+                    // }
+
                     //鏄惁鏈夎繘鐗囪姹�
-                    this.D01RequestState = obj.D01RequestState[0];
+                    if (obj.D01RequestState != null) {
+                        this.D01RequestState = obj.D01RequestState[0];
+                    }
+                    // this.D01RequestState=true;
 
                     //鏄惁鍏佽鍑虹墖
                     this.isAllowQueue = obj.isAllowQueue[0];
+                    //褰撳墠鍑虹墖鏍煎瓙鏄惁琚鐢�
+                    this.isQueueWarning = obj.isQueueWarning[0];
+                    //鏄惁鍏佽鍑虹墖闃熷垪璋冨簭
+                    this.isAllowReordering = obj.isAllowReordering[0];
                     //鍑虹墖闃熷垪
                     if (this.isAllowReordering == true) {
                         this.OutSlice = obj.listoutslice[0];
@@ -1020,7 +1077,7 @@
             SelectAlarmmgInfo().then(res => {
                 this.alarm = res.data.alarmmg;
             });
-            
+
             //鍔犺浇纭瀵嗙爜
             SelectPassword().then(res => {
                 this.password = res.data.password;
@@ -1035,7 +1092,7 @@
             } else if (state == 2) {
                 return "yellow gezi";
             } else if (state == 3) {
-                return "red gezi";
+                return "black gezi";
             } else {
                 return "black gezi";
             }
@@ -1053,7 +1110,6 @@
                     this.load();
                 });
             }
-
         },
         //鎵嬪姩涓婄墖
         sbumitglassid() {
@@ -1424,7 +1480,6 @@
                             this.form5 = {};
                             this.$message.success(this.$t('Operation successful'));
                         } else {
-                            alert(1);
                             this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
                         }
                     });
@@ -1479,19 +1534,24 @@
             this.AluminumFrame.forEach(item => { item.barcode = glassid; item.isCheck = isChecked })
         },
         //娣诲姞鍒板嚭鐗囬槦鍒�
-        addoutslice() {
-            var dats_ = new Array();
-            this.AluminumFrame.forEach(item => {
-                var dats2_ = new Array();
-                dats2_[0] = item.barcode;
-                dats2_[1] = item.isCheck;
-                dats2_[2] = item.Flip;
-                dats2_[3] = item.FrameNo;
-                dats2_[4] = item.glasslengthmm;
-                dats2_[5] = item.glassheightmm;
-                dats_[dats_.length] = dats2_;
-            });
-            AddOutSliceS(dats_).then(res => {
+        AddOutSliceS() {
+            // var dats_ = new Array();
+            // this.AluminumFrame.forEach(item => {
+            //     var dats2_ = new Array();
+            //     dats2_[0] = item.barcode;
+            //     dats2_[1] = item.isCheck;
+            //     dats2_[2] = item.Flip;
+            //     dats2_[3] = item.FrameNo;
+            //     dats2_[4] = item.glasslengthmm;
+            //     dats2_[5] = item.glassheightmm;
+            //     dats_[dats_.length] = dats2_;
+            // });
+            // AddOutSliceS(dats_).then(res => {
+            //     if (res.data.message == 200) {
+            //         this.$message.success(this.$t('Operation successful'));
+            //     }
+            // });
+            AddOutSliceS(this.framebarcode).then(res => {
                 if (res.data.message == 200) {
                     this.$message.success(this.$t('Operation successful'));
                 }
@@ -1616,9 +1676,13 @@
                 }
             })
         },
-        //
-        isAllowReorderingState() {
-            this.isAllowReordering = !this.isAllowReordering;
+        //鏄惁鍏佽鍑虹墖闃熷垪鎺掑簭
+        isAllowReorderings() {
+            isAllowReorderings(!this.isAllowReordering, this.OutSlice).then(res => {
+                if (res.data.message == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            })
         },
         //鍒囨崲涓婄墖鏄惁闇�瑕佺‘璁ょ幓鐠冧俊鎭�
         isConfirmState() {
@@ -1629,21 +1693,20 @@
             });
         }
         ,
-        cellStyle({ row, column, rowIndex, columnIndex }) {
-            // console.log(row, column, "ss");
+        //琛ㄦ牸鏍峰紡
+        cellStyle({ column, rowIndex, columnIndex }) {
             column = rowIndex;
             rowIndex = column;
             let style = "";
             if (columnIndex === 8) {
-                style = "font-size:200px;text-align: center;height:200px;";
+                style = "font-size:200px;text-align: center;";
             }
-            if (columnIndex === 9 && row.flip == 1) {
-                style = "background-Color:yellow;";
-            }
-            if (columnIndex === 6 && row.state == 3) {
-                style = "background-Color:gray;";
-            }
-            style
+            // if (columnIndex === 9 && row.flip == 1) {
+            //     style = "background-Color:yellow;";
+            // }
+            // if (columnIndex === 6 && row.state == 3) {
+            //     style = "background-Color:gray;";
+            // }
             return style;
         }
         ,
@@ -1661,7 +1724,7 @@
             if (rowIndex != 0) {
                 barcode2 = arrOutSlice[rowIndex - 1].barcode;
             }
-            if (columnIndex === 12) {
+            if (columnIndex === 12 || columnIndex === 9 || columnIndex === 10 || columnIndex === 11) {
                 if (barcode != barcode2) {
                     // this.FrameNoFlag = barcode;
                     for (let i = rowIndex; i < this.OutSlice.length; i++) {
@@ -1669,7 +1732,6 @@
                             barcode = arrOutSlice[i].barcode;
                             rowspans += 1;
                         } else {
-
                             break;
                         }
                     }
@@ -1730,25 +1792,26 @@
                 }
             });
         },
+        //45绉掑浣嶅�掓暟璁℃椂
         CountDown() {
-            //50绉掑�掓暟璁℃椂
             let count = 45;
             let timer = setInterval(
                 () => {
                     if (this.EmergencyStop == true) {
+                        this.dialogFormCountDown = false;
                         clearInterval(timer);
-                        this.PromptSize = 250;
-                        this.CountDowns = "EMERGENCY \n STOP";
+                        this.CountDowns = "0";
                     } else {
                         if (count > 0) {
                             this.PromptSize = 500;
-                            this.CountDowns = count;
                             count--;
+                            this.CountDowns = count;
+                            this.dialogFormCountDown = true;
                         }
                         else {
-                            this.PromptSize = 250;
-                            this.CountDowns = "Waiting \n for \n reset";
-                            if(this.reset==true){
+                            this.PromptSize = 200;
+                            this.CountDowns = "Waiting for reset";
+                            if (this.reset == true) {
                                 clearInterval(timer);
                                 this.dialogFormCountDown = false;
                             }
@@ -1757,7 +1820,19 @@
                 },
                 1000
             );
-            this.dialogFormCountDown = true;
+
+        },
+        FrameStateUpdate(frameno,framestate){
+            if(framestate == 1){
+                framestate=0;
+            }else{
+                framestate=1;
+            }
+            FrameStateUpdate(frameno,framestate).then(res=>{
+                if(res.data.message == 200){
+                    this.$message.success("Operation successful");
+                }
+            });
         }
     }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java b/springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java
index efcf9b6..36e26f5 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java
@@ -152,4 +152,74 @@
             System.err.println("An error occurred while writing string to PLC: " + e.getMessage());
         }
     }
+
+
+
+    public void writeBitandrenwuToPLC(JSONArray messageArray, List<String> addresses, int index) {
+        try {
+            // 妫�鏌ョ储寮曟槸鍚︽湁鏁�
+            if (messageArray.getJSONArray(index).size() > 0) {
+                // 鑾峰彇娑堟伅鏁扮粍
+                JSONArray jsonArray = messageArray.getJSONArray(index);
+                // 鍒涘缓涓�涓竷灏斿�煎垪琛�
+                List<Boolean> sValue = new ArrayList<>();
+                // 閬嶅巻娑堟伅鏁扮粍
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    // 鑾峰彇娑堟伅鏁扮粍涓殑鍊�
+                    Object value = jsonArray.get(i);
+                    // 妫�鏌ュ�兼槸鍚︽湁鏁�
+                    if (value != null && !value.toString().equals("null")) {
+                        try {
+                            // 绉婚櫎闈炴暟瀛楀拰鏁板瓧瀛楃
+                            String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                            // 瑙f瀽涓哄竷灏斿��
+                            boolean val = "1".equals(cleanedValue.trim());
+                            // 灏嗗竷灏斿�兼坊鍔犲埌甯冨皵鍊煎垪琛ㄤ腑
+                            sValue.add(val);
+                            System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+                       if(sValue.get(1)){
+
+                       }
+
+
+
+                        } catch (NumberFormatException e) {
+                            // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                            System.err.println("Could not parse value: " + value);
+                        }
+                    }
+                }
+                // 妫�鏌ュ竷灏斿�煎垪琛ㄦ槸鍚︿负绌�
+                if (!sValue.isEmpty()) {
+
+                    // 璋冪敤 S7control.getinstance().WriteBit 鏂规硶灏嗗竷灏斿�煎垪琛ㄥ啓鍏ュ湴鍧�鍒楄〃
+                    S7control.getinstance().WriteBit(addresses, sValue);
+                    System.out.println("Values " + sValue + " written to PLC at address " + addresses);
+                }
+            }
+        } catch (Exception e) {
+            System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
+        }
+    }
+
+
+
+    public short[] convertBooleanListToShortArray(List<Boolean> booleanList) {
+        short[] shortArray = new short[booleanList.size()];
+        for (int i = 0; i < booleanList.size(); i++) {
+            boolean value = booleanList.get(i);
+            shortArray[i] = value ? (short) 1 : (short) 0;
+        }
+        return shortArray;
+    }
+
+
+
+
+
+
+
+
+
+
 }
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 4299699..1c4a59b 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
@@ -28,6 +28,7 @@
         // \\ TODO Auto-generated catch block
         e.printStackTrace();
       }
+      if (S7control.getinstance().CheckConnected() == true) {
       spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
       spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
       jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
@@ -57,8 +58,9 @@
 
         // 鍒ゆ柇褰撳墠鏄惁鏈夋湭鎵ц鐨勪换鍔�
         int outnum = spianMapper.SelectOutSliceshu();
+        int cageoutsum=spianMapper.Selectcageout(3);
         // 褰撴病鏈変换鍔℃墽琛屽苟涓斿嚭鐗囪溅绌洪棽鏃�
-        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true) {
+        if (outnum == 0 && outstate == true && Plchome.isAllowQueue == true&&cageoutsum==0) {
           // 鍒ゆ柇閾濇鍑虹墖闃熷垪琛ㄦ槸鍚︽湁寰呭嚭鐗囩殑鐜荤拑
           String outglassid = spianMapper.SelectOutSlice();
           if (outglassid != null) {
@@ -101,8 +103,8 @@
         spianService.overtask(B02glassid.toString());// 瀹屾垚浠诲姟
         S7control.getinstance().WriteWord("DB106.62", (short) 0);// 鎭㈠B02灏忚溅搴旂瓟鏀逛负0
         System.out.println("姹囨姤鏃禕02|" + B02glassid);
-        boolean yingda = spianService.listbool("DB106.62");// b01姹囨姤
-        System.out.println("姹囨姤鏃禕01|绗�"+aaa+"娆�"+ B02glassid+"搴旂瓟"+yingda);
+        boolean yingda = spianService.listbool("DB106.62");// b02姹囨姤
+        System.out.println("姹囨姤鏃禕02|绗�"+aaa+"娆�"+ B02glassid+"搴旂瓟"+yingda);
       }
 
       // 鑾峰彇DO1鏁版嵁
@@ -157,5 +159,6 @@
 
     }
   }
+}
 
 }
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 3284110..6247785 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
@@ -206,7 +206,6 @@
                             // 鍐欏叆A02
                             customS7Control.WriteWordToPLC(messageArray, addresses2, 1);
 
-
                             // 鍐欏叆B01
                             customS7Control.WriteWordToPLC(messageArray, addresses3, 2);
 
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 0d5816b..458ccf8 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
@@ -72,7 +72,7 @@
             addresses2.add("DB100.118");
             addresses2.add("DB100.192");
 
-            addresses2.add("DB103.22");
+            addresses2.add("DB106.14");
             List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
 
             List<String> addresses9 = new ArrayList<>();
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 eccf8dc..379ec1b 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
@@ -2,7 +2,11 @@
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
+import com.example.springboot.controller.HomeController;
+import com.example.springboot.mapper.HomeMapper;
 import org.apache.commons.io.FileUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.example.springboot.service.StorageCageService;
 
 import java.io.*;
 import java.util.ArrayList;
@@ -12,12 +16,12 @@
 
 
 public class PlcParameter2 extends Thread {
-
-    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
-    private Configuration config;
-
+    @Autowired
+    StorageCageService storageCageService;
     // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
     MessageHandler customS7Control = new MessageHandler();
+    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
+    private Configuration config;
 
 
     public PlcParameter2() throws IOException {
@@ -33,12 +37,12 @@
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
-
+            storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
             //  id
             List<String> addressList1 = Arrays.asList(config.getProperty("Parameter2.id").split(","));
 
             List<String> paramlist = S7control.getinstance().readStrings(addressList1);
-
+            // System.out.println(paramlist);
 
             //鎵嬪姩鐘舵��
             List<String> addresses = Arrays.asList(config.getProperty("Parameter2.state").split(","));
@@ -71,7 +75,7 @@
 
 
             List<Short> data4 = S7control.getinstance().readWords(addresses4);
-
+            //System.out.println(data);
 //      List<Long> TIME2 = Collections.singletonList(S7control.getinstance().readtime("DB100.194"));
 //      System.out.println("addressList锛�" + TIME2);
 
@@ -93,19 +97,22 @@
 //      List<Short> data4 = new ArrayList<>(Arrays.asList(values4));
 //
 //
+//            JSONObject jsonObject = new JSONObject();
+//            short[] params = new short[data2.size()];
+//            for (int i = 0; i < data2.size(); i++) {
+//                boolean value = data2.get(i);
+//                params[i] = value ? (short) 1 : (short) 0;
+//            }
+////
+//            short[] anniuparams = new short[anniuread.size()];
+//            for (int i = 0; i < anniuread.size(); i++) {
+//                boolean value = anniuread.get(i);
+//                anniuparams[i] = value ? (short) 1 : (short) 0;
+//            }
+            //boolean杞负0 1
+            short[] params = customS7Control.convertBooleanListToShortArray(data2);
+            short[] anniuparams = customS7Control.convertBooleanListToShortArray(anniuread);
             JSONObject jsonObject = new JSONObject();
-            short[] params = new short[data2.size()];
-            for (int i = 0; i < data2.size(); i++) {
-                boolean value = data2.get(i);
-                params[i] = value ? (short) 1 : (short) 0;
-            }
-//
-            short[] anniuparams = new short[anniuread.size()];
-            for (int i = 0; i < anniuread.size(); i++) {
-                boolean value = anniuread.get(i);
-                anniuparams[i] = value ? (short) 1 : (short) 0;
-            }
-
             jsonObject.append("params", params);
             jsonObject.append("params", paramlist);
             jsonObject.append("params", data);
@@ -121,7 +128,7 @@
 //        jsonObject.set("message", "Hello, Parameter2!");
 //        sendwServer.sendMessage(jsonObject.toString());
 //      }
-
+//            HomeController controller = new HomeController();
             ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter2");
             if (sendwServer != null) {
                 for (WebSocketServer webserver : sendwServer) {
@@ -131,9 +138,7 @@
 
                     if (webserver != null) {
 
-
                         List<String> messages = webserver.getMessages();
-
 
                         if (!messages.isEmpty()) {
                             // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
@@ -141,9 +146,139 @@
 //        System.out.println("lastMessage锛�" + lastMessage);
                             JSONArray messageArray = new JSONArray(lastMessage);
                             //娓呴櫎ID
-                            customS7Control.writeBitToPLC(messageArray, addressList0, 0);
+                            // customS7Control.writeBitToPLC(messageArray, addressList0, 0);
+
+
+                            try {
+                                // 妫�鏌ョ储寮曟槸鍚︽湁鏁�
+                                if (messageArray.getJSONArray(0).size() > 0) {
+                                    // 鑾峰彇娑堟伅鏁扮粍
+                                    JSONArray jsonArray = messageArray.getJSONArray(0);
+                                    // 鍒涘缓涓�涓竷灏斿�煎垪琛�
+                                    List<Boolean> sValue = new ArrayList<>();
+                                    // 閬嶅巻娑堟伅鏁扮粍
+                                    for (int i = 0; i < jsonArray.size(); i++) {
+                                        // 鑾峰彇娑堟伅鏁扮粍涓殑鍊�
+                                        Object value = jsonArray.get(i);
+                                        // 妫�鏌ュ�兼槸鍚︽湁鏁�
+                                        if (value != null && !value.toString().equals("null")) {
+                                            try {
+                                                // 绉婚櫎闈炴暟瀛楀拰鏁板瓧瀛楃
+                                                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                                                // 瑙f瀽涓哄竷灏斿��
+                                                boolean val = "1".equals(cleanedValue.trim());
+                                                // 灏嗗竷灏斿�兼坊鍔犲埌甯冨皵鍊煎垪琛ㄤ腑
+                                                sValue.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);
+                                            }
+                                        }
+                                    }
+//瀹屾垚鍑虹墖
+                                    boolean containsOne = data.stream().anyMatch(number -> number == 1);
+                                    for (int i = 1; i <= 5; i++) {
+                                        boolean value = sValue.get(i);
+                                        String id = paramlist.get(i);
+                                        //鍒ゆ柇鏄惁鑷姩鐘舵��
+                                        if (!containsOne) {
+                                            //鍒ゆ柇id鏄惁鍖呭惈鏁板瓧
+                                            if (id.matches(".*\\d.*")) {
+                                                //鍒ゆ柇娓呮id鏄惁true
+                                                if (value) {
+                                                    System.out.println(id);
+                                                    switch (i) {
+                                                        case 1:
+                                                            storageCageService.UpdateTask(2, 0, paramlist.get(i));
+                                                            break;
+                                                        case 2:
+                                                        case 3:
+                                                        case 4:
+                                                        case 5:
+                                                            storageCageService.UpdateTask(3, 0, paramlist.get(i));
+                                                            break;
+                                                        default:
+                                                            // 澶勭悊绱㈠紩鍊间笉鍦ㄨ寖鍥村唴鐨勬儏鍐�
+                                                            break;
+                                                    }
+                                                }
+                                            }
+
+                                        }
+                                        // 妫�鏌ュ竷灏斿�煎垪琛ㄦ槸鍚︿负绌�
+                                        if (!sValue.isEmpty()) {
+
+                                            // 璋冪敤 S7control.getinstance().WriteBit 鏂规硶灏嗗竷灏斿�煎垪琛ㄥ啓鍏ュ湴鍧�鍒楄〃
+                                            S7control.getinstance().WriteBit(addressList0, sValue);
+                                            System.out.println("Values " + sValue + " written to PLC at address " + addressList0);
+                                        }
+                                    }
+                                }
+                            } catch (Exception e) {
+                                System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
+                            }
+
+
                             //鎬ュ仠
-                            customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1);
+//                            customS7Control.writeBitToPLC(messageArray, niuanaddressList3, 1);
+
+                            try {
+                                // 妫�鏌ョ储寮曟槸鍚︽湁鏁�
+                                if (messageArray.getJSONArray(1).size() > 0) {
+                                    // 鑾峰彇娑堟伅鏁扮粍
+                                    JSONArray jsonArray = messageArray.getJSONArray(1);
+                                    // 鍒涘缓涓�涓竷灏斿�煎垪琛�
+                                    List<Boolean> sValue = new ArrayList<>();
+                                    // 閬嶅巻娑堟伅鏁扮粍
+                                    for (int i = 0; i < jsonArray.size(); i++) {
+                                        // 鑾峰彇娑堟伅鏁扮粍涓殑鍊�
+                                        Object value = jsonArray.get(i);
+                                        // 妫�鏌ュ�兼槸鍚︽湁鏁�
+                                        if (value != null && !value.toString().equals("null")) {
+                                            try {
+                                                // 绉婚櫎闈炴暟瀛楀拰鏁板瓧瀛楃
+                                                String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                                                // 瑙f瀽涓哄竷灏斿��
+                                                boolean val = "1".equals(cleanedValue.trim());
+                                                // 灏嗗竷灏斿�兼坊鍔犲埌甯冨皵鍊煎垪琛ㄤ腑
+                                                sValue.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);
+                                            }
+                                        }
+                                    }
+// 缁堟杩涚墖浠诲姟
+                                    boolean Value1 = sValue.get(0);
+                                    boolean Value2 = sValue.get(1);
+
+                                    if (Value1) {
+                                        storageCageService.EndTask(0);
+
+                                    }
+                                    if (Value2) {
+                                        storageCageService.EndTask(1);
+
+                                    }
+                                    // 妫�鏌ュ竷灏斿�煎垪琛ㄦ槸鍚︿负绌�
+                                    if (!sValue.isEmpty()) {
+
+                                        // 璋冪敤 S7control.getinstance().WriteBit 鏂规硶灏嗗竷灏斿�煎垪琛ㄥ啓鍏ュ湴鍧�鍒楄〃
+                                        S7control.getinstance().WriteBit(niuanaddressList3, sValue);
+                                        System.out.println("Values " + sValue + " written to PLC at address " + niuanaddressList3);
+                                    }
+                                }
+                            } catch (Exception e) {
+                                System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
+                            }
+
+
                             //瀛樼墖绛夊緟寤惰繜
                             customS7Control.Writetime(messageArray, timeout2, 2);
 
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 2d0c98d..4de113f 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("D:/canadames/Alarm.json");
+      fileInputStream = new FileInputStream("D:/code/canadames/Alarm.json");
       // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
       InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
       // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
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 62cf276..87e0a12 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,11 +1,15 @@
 package com.example.springboot.component;
 
+import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 
+import java.io.IOException;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
+import com.example.springboot.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.example.springboot.entity.Out_slice;
@@ -14,10 +18,6 @@
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.mapper.HomeMapper;
 import com.example.springboot.mapper.SpianMapper;
-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.SpianService;
 
 public class Plchome extends Thread {
 
@@ -30,10 +30,21 @@
     private JdbcConnections dbserve;
     // 鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
     public static Boolean isAllowQueue = true;
+    public static Boolean isAllowReordering = true;
+    //鍑虹墖闃熷垪璀﹀憡
+    public static Boolean isQueueWarning=false;
     // 閾濇id
-    public static String FrameNo;
+    public static String FrameNo = "";
     // 鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
     public static Boolean isConfirm = false;
+
+    private Configuration config;
+
+    private StorageCageService storageCageService;
+
+    public Plchome() throws IOException {
+        config = new Configuration("config.properties");
+    }
 
     // public static Map b=new HashMap<>();
     // b.put()
@@ -49,6 +60,7 @@
             JSONObject jsonObject = new JSONObject();
 
             // 娉ㄥ叆mapper
+
             homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
             spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
             spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
@@ -74,25 +86,7 @@
             // 鏌ヨ鎶ヨ淇℃伅
             List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
             jsonObject.append("alarmmg", alarmmg);
-            // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
-            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();
@@ -110,46 +104,118 @@
             // 鑾峰彇鍑虹墖闃熷垪淇℃伅
             List<Out_slice> listoutslice = outSliceServive.SelectProductionqueue();
             jsonObject.append("listoutslice", listoutslice);
-            // 鑾峰彇褰撳墠鍑虹墖闃熷垪鐘舵��
+            // 鑾峰彇褰撳墠鍑虹墖闃熷垪鍑虹墖鐘舵��
             jsonObject.append("isAllowQueue", Plchome.isAllowQueue);
-
-            // 鑾峰彇閾濇idDB106.DBW64
-            // String frameno=spianService.queGlassid("DB103.270",14).toString();
-            // if(frameno!=Plchome.FrameNo&&frameno!=""){
-            // Plchome.FrameNo=frameno;
-            // }
-            // try {
-            // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
-            // } catch (SQLException e) {
-            // // TODO Auto-generated catch block
-            // e.printStackTrace();
-            // }
+            //鑾峰彇鍑虹墖闃熷垪璀﹀憡鐘舵��
+            jsonObject.append("isQueueWarning", Plchome.isQueueWarning);
+            // 鑾峰彇褰撳墠鍑虹墖闃熷垪璋冨簭鐘舵��
+            jsonObject.append("isAllowReordering", Plchome.isAllowReordering);
             // 鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
             jsonObject.append("isConfirm", isConfirm);
+            // String framenos="X21763329601FB";
+            //     if (!framenos.equals(Plchome.FrameNo)) {
+            //         Plchome.FrameNo = framenos;
+            //         try {
+            //             north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+            //         } catch (SQLException e) {
+            //             // TODO Auto-generated catch block
+            //             e.printStackTrace();
+            //         }
+            //     }
+            if (S7control.getinstance().CheckConnected() == true) {
+                // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
+                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);// 鑾峰彇杩涚墖杞︾姸鎬�
+                if (datas1ListState != null) {
+                    boolean exist1 = datas1ListState.contains((short) 0);
+                    jsonObject.append("zhuangtai", exist1);
+                }
 
-            // 鑾峰彇杩涚墖璇锋眰鐘舵��
-            List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
-            boolean D01RequestState = D01Request.contains((short) 1);
-            // boolean D01RequestState =true;
-            jsonObject.append("D01RequestState", D01RequestState);
+                // 鑾峰彇杩涚墖鐜荤拑淇℃伅
+                List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
+                if (inglassInfo != null) {
+                    if (inglassInfo.size() > 0) {
+                        jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+                    }
 
-            // 澶嶄綅鍊掕鏃�
-            // 鍦板潃104.9.6
-            List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
-            for (Boolean countdowns : countdown) {
-                jsonObject.append("countdown", countdowns);
-            }
-            // jsonObject.append("countdown", true);
-            // 澶嶄綅瀹屾垚淇″彿
-            List<Boolean> resets = S7control.getinstance().ReadBits("DB103.284", 1);
-            for (Boolean reset : resets) {
-                jsonObject.append("reset", reset);
-            }
+                }
 
-            // 鏄惁鎬ュ仠
-            List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
-            for (Boolean emergencystop : emergencystops) {
-                jsonObject.append("emergencystop", emergencystop);
+                // 鑾峰彇閾濇idDB106.DBW64锛屾坊鍔犲埌鍑虹墖闃熷垪
+                String frameno = spianService.queGlassid("DB103.270", 14).toString();
+                // String frameno="X12345611002GV";
+                // frameno="X21763329601FB";
+                if (!frameno.equals(Plchome.FrameNo)) {
+                    Plchome.FrameNo = frameno;
+                    try {
+                        north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+                    } catch (SQLException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                }
+
+                // 鑾峰彇杩涚墖璇锋眰鐘舵��
+                List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
+                boolean D01RequestState = D01Request.contains((short) 1);
+                // boolean D01RequestState =true;
+                jsonObject.append("D01RequestState", D01RequestState);
+
+                // 澶嶄綅鍊掕鏃�
+                // 鍦板潃104.9.6
+                List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
+                for (Boolean countdowns : countdown) {
+                    jsonObject.append("countdown", countdowns);
+                }
+                // jsonObject.append("countdown", true);
+                // 澶嶄綅瀹屾垚淇″彿ss
+                List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
+                for (Boolean reset : resetss) {
+                    jsonObject.append("reset", reset);
+                }
+
+                // 鏄惁鎬ュ仠
+                List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
+                for (Boolean emergencystop : emergencystops) {
+                    jsonObject.
+                    append("emergencystop", emergencystop);
+                }
+            
+
+                // // 缁堟缁х画鎸夐挳
+                // List<String> niuanaddressList3 = Arrays.asList(config.getProperty("Parameter2.stop").split(","));
+                // List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
+                // // Boolean[] value4 = { false, false};
+                // // List<Boolean> anniuread = new ArrayList<>(Arrays.asList(value4));
+                // Boolean[] value5 = { true };
+                // List<Boolean> resets = new ArrayList<>(Arrays.asList(value5));
+                // short[] anniuparams = new short[anniuread.size()];
+                // for (int i = 0; i < anniuread.size(); i++) {
+                //     boolean value = anniuread.get(i);
+                //     anniuparams[i] = value ? (short) 1 : (short) 0;
+                // }
+
+                // short[] resets2 = new short[resets.size()];
+                // for (int i = 0; i < resets.size(); i++) {
+                //     boolean value = resets.get(i);
+                //     resets2[i] = value ? (short) 1 : (short) 0;
+                // }
+
+                // for (short number : resets2) {
+
+                //     if (number == 1) {
+                //         jsonObject.append("Abort", anniuparams);
+
+                //     }
+
+                // }
             }
 
             // 閾濇绾夸氦浜�
@@ -175,7 +241,7 @@
             // }
             // S7control.getinstance().WriteWord("閾濇缈昏浆鍙戦�佸湴鍧�", (short)send);
             // }
-
+            storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
             dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
             boolean dbconnected = false;
             try {
@@ -191,9 +257,77 @@
             if (sendwServer != null) {
                 for (WebSocketServer webserver : sendwServer) {
                     webserver.sendMessage(jsonObject.toString());
+
+                    if (webserver != null) {
+
+                        List<String> messages = webserver.getMessages();
+
+                        if (!messages.isEmpty()) {
+                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                            // String lastMessage = messages.get(messages.size() - 1);
+                            // System.out.println("lastMessage锛�" + lastMessage);
+                            // JSONArray messageArray = new JSONArray(lastMessage);
+                            
+                            // try {
+                            //     // 妫�鏌ョ储寮曟槸鍚︽湁鏁�
+                            //     if (messageArray.getJSONArray(0).size() > 0) {
+                            //         // 鑾峰彇娑堟伅鏁扮粍
+                            //         JSONArray jsonArray = messageArray.getJSONArray(0);
+                            //         // 鍒涘缓涓�涓竷灏斿�煎垪琛�
+                            //         List<Boolean> sValue = new ArrayList<>();
+                            //         // 閬嶅巻娑堟伅鏁扮粍
+                            //         for (int i = 0; i < jsonArray.size(); i++) {
+                            //             // 鑾峰彇娑堟伅鏁扮粍涓殑鍊�
+                            //             Object value = jsonArray.get(i);
+                            //             // 妫�鏌ュ�兼槸鍚︽湁鏁�
+                            //             if (value != null && !value.toString().equals("null")) {
+                            //                 try {
+                            //                     // 绉婚櫎闈炴暟瀛楀拰鏁板瓧瀛楃
+                            //                     String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                            //                     // 瑙f瀽涓哄竷灏斿��
+                            //                     boolean val = "1".equals(cleanedValue.trim());
+                            //                     // 灏嗗竷灏斿�兼坊鍔犲埌甯冨皵鍊煎垪琛ㄤ腑
+                            //                     sValue.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);
+                            //                 }
+                            //             }
+                            //         }
+                            //         // 缁堟杩涚墖浠诲姟
+                            //         boolean Value1 = sValue.get(0);
+                            //         boolean Value2 = sValue.get(1);
+
+                            //         if (Value1) {
+                            //             storageCageService.EndTask(0);
+
+                            //         }
+                            //         if (Value2) {
+                            //             storageCageService.EndTask(1);
+
+                            //         }
+                            //         // 妫�鏌ュ竷灏斿�煎垪琛ㄦ槸鍚︿负绌�
+                            //         if (!sValue.isEmpty()) {
+
+                            //             // 璋冪敤 S7control.getinstance().WriteBit 鏂规硶灏嗗竷灏斿�煎垪琛ㄥ啓鍏ュ湴鍧�鍒楄〃
+                            //             S7control.getinstance().WriteBit(niuanaddressList3, sValue);
+                            //             System.out.println(
+                            //                     "Values " + sValue + " written to PLC at address " + niuanaddressList3);
+                            //         }
+                            //     }
+                            // } catch (Exception e) {
+                            //     System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
+                            // }
+                            webserver.clearMessages();
+                        }
+
+                    }
+
                 }
             }
-
         }
     }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
index a73f176..e0a5353 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
@@ -37,13 +37,21 @@
         }
         return instance;
     }
-
+    
     /**
      * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
      */
     public void CloseS7client() {
         if (s7PLC == null)
             s7PLC.close();
+            s7PLC.checkConnected();
+    }
+
+    /**
+     * s7閫氳杩炴帴鐘舵��
+     */
+    public boolean CheckConnected() {
+        return s7PLC.checkConnected();
     }
 
     /**
@@ -215,7 +223,15 @@
         if (s7PLC==null)
              return null;
        // List<String> addresslist = GetAddressList(address, count, 16);
-        return s7PLC.readByte(address,count);
+
+        try {
+            return s7PLC.readByte(address, count);
+        }catch (Exception e) {
+            // 澶勭悊寮傚父
+            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+            return null;
+        }
+
     }
 
     /**
@@ -331,11 +347,17 @@
     }
 
 //璇诲彇鏃堕棿
-    public Long readtime(String address) {
-        if (s7PLC==null)
-            return null;
+public Long readtime(String address) {
+    if (s7PLC == null)
+        return null;
+    try {
         return s7PLC.readTime(address);
+    } catch (Exception e) {
+        System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+        return null;
     }
+}
+
 
     public void writetime(String address, long datas) {
         if (s7PLC == null)
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 38115b2..d64b920 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
@@ -17,25 +17,25 @@
         //
         System.out.println("鍚姩瀹屾垚");
 
-    new PlcHold().start();
+        new PlcHold().start();
 
         new Plchome().start();
 
-         new Plcalarm().start();
+        new Plcalarm().start();
 
-         new Plcsign().start();
+        new Plcsign().start();
 
+        new Plcstate().start();
+        new PlcPositioning1().start();
 
-         new Plcstate().start();
-         new PlcPositioning1().start();
+        new PlcParameter2().start();
 
-         new PlcParameter2().start();
+        new PLCAutomaticParameterSetting().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();
+        new Plclog().start();
     }
 }
\ No newline at end of file
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 a5acaf6..3884738 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,47 +5,36 @@
 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 com.example.springboot.service.StorageCageService;
 
-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")
 public class HomeController {
   @Autowired
+ 
   HomeMapper homeMapper;
 
   @Autowired
@@ -59,6 +48,9 @@
 
   @Autowired
   OutSliceServive outSliceServive;
+
+  @Autowired
+  StorageCageService storageCageService;
 
   @Autowired
   North_Glass_Buffer1Service north_Glass_Buffer1Service;
@@ -78,6 +70,8 @@
   // 鏌ヨ鐞嗙墖绗间娇鐢ㄦ儏鍐�
   @GetMapping("/load")
   public Result selectAll() {
+    // storageCageService.EndTask(1);
+    // UpdateTask(2,0,"X12345610402GV");
     List<StorageCage> storageCagelist = homeMapper.selectAll();
     Map<String, Object> map = new HashMap<>();
     map.put("list", storageCagelist);
@@ -87,7 +81,6 @@
   // 鏌ヨ鐞嗙墖绗肩幓鐠冩儏鍐�
   @GetMapping("/loads")
   public Result selectRack() {
-
     List<StorageCage> storageCagelist1 = homeMapper.selectRack1();
     List<StorageCage> storageCagelist2 = homeMapper.selectRack2();
     List<StorageCage> storageCagelist3 = homeMapper.selectRack3();
@@ -136,20 +129,21 @@
     return Result.success(map);
   }
 
-  // 鎵嬪姩瀹屾垚杩�/鍑虹墖浠诲姟
+  // 鎵嬪姩瀹屾垚杩�/鍑虹墖浠诲姟 缁堟杩涚墖/鍑虹墖浠诲姟
   @GetMapping("/UpdateTask")
   public Result UpdateTask(Integer types, Integer shelfrack, String glassid) {
+    storageCageService.UpdateTask(types, shelfrack, glassid);
     Map<String, Object> map = new HashMap<>();
-    homeMapper.UpdateTask(types, glassid);
-    // StorageCage glass = homeMapper.SelectGlassInfo(glassid);
-    if (types == 0) {
-      homeMapper.UpdateCageTask1(glassid);
-      // S7control.getinstance().WriteWord("DB105.16", (short) 0);
-    } else {
-      // spianMapper.UpdataOutCage1(glass.getGlassWidth(), glass.getCage(), glass.getCell());
-      homeMapper.DeleteByGlassID(glassid);
-      // S7control.getinstance().WriteWord("DB105.18", (short) 0);
-    }
+    map.put("message3", "200");
+    return Result.success(map);
+  }
+
+  //缁堟杩涚墖/鍑虹墖浠诲姟
+  @GetMapping("/EndTask")
+  public Result EndTask(int types) {
+    storageCageService.EndTask(types);
+     
+    Map<String, Object> map = new HashMap<>();
     map.put("message3", "200");
     return Result.success(map);
   }
@@ -175,9 +169,7 @@
   // 鎵嬪姩鍒犻櫎鐞嗙墖绗肩幓鐠�
   @GetMapping("/DeleteByGlassID")
   public Result DeleteByGlassID(String glassid) {
-    StorageCage glassinfor = homeMapper.SelectGlassInfo(glassid);
-    spianMapper.UpdataOutCage1(glassinfor.getGlassWidth(), glassinfor.getCage(), glassinfor.getCell());
-    homeMapper.DeleteByGlassID(glassid);
+    outSliceServive.DeleteByGlassIDs(glassid);
     Map<String, Object> map = new HashMap<>();
     map.put("message3", "200");
     return Result.success(map);
@@ -195,10 +187,11 @@
         String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode());
         if (position != null) {
           int sequence = homeMapper.SelectMaxSquence();
-
           homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(),
               north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),
-              sequence, position, (short)0);
+              sequence, position, (short) 0, north_glass_buffer1.getordernumber(), north_glass_buffer1.getlistnumber(),
+              north_glass_buffer1.getboxnumber(), north_glass_buffer1.getglasslength().toString(),
+              north_glass_buffer1.getglassheight().toString());
           map.put("message2", "200");
         } else {
           map.put("message2", "300");
@@ -206,7 +199,6 @@
       } else {
         map.put("message2", "400");
       }
-
     } else {
       map.put("message2", "500");
     }
@@ -268,7 +260,7 @@
         map.put("message", "200");
       }
     }
-    return Result.success(map); 
+    return Result.success(map);
   }
 
   // 鏌ヨ鐜荤拑淇℃伅
@@ -340,6 +332,7 @@
   @PostMapping("/DeleteProductionQueueGlass")
   public Result DeleteProductionQueueGlass(String FrameNo) {
     homeMapper.CompleteQueueByFrameNo(FrameNo);
+
     Map<String, Object> map = new HashMap<>();
     map.put("message", "200");
     return Result.success(map);
@@ -347,18 +340,33 @@
 
   // 娣诲姞閾濇id瀵瑰簲鐜荤拑鍒板嚭鐗囬槦鍒�
   @PostMapping("/AddOutSliceS")
-  public Result AddOutSliceS(@RequestBody String[][] AluminumFrames) throws SQLException {
-    outSliceServive.AddOutSliceS(AluminumFrames);
+  public Result AddOutSliceS(String FrameNo) throws SQLException {
+    //public Result AddOutSliceS(@RequestBody String[][] AluminumFrames) throws SQLException {
+    north_Glass_Buffer1Service.AddOutSliceS(FrameNo);
     Map<String, Object> map = new HashMap<>();
     map.put("message", "200");
     return Result.success(map);
   }
 
-  // 淇敼鍑虹墖闃熷垪鐘舵�佷笌鍑虹墖闃熷垪璋冨簭
+  // 淇敼鍑虹墖闃熷垪鍑虹墖鐘舵��
   @PostMapping("/isAllowQueues")
   public Result isAllowQueues(Boolean isAllowQueue, @RequestBody List<Out_slice> out_slice) {
     Plchome.isAllowQueue = isAllowQueue;
-    if (isAllowQueue == true) {
+    // if (isAllowQueue == true) {
+    //   for (Out_slice out_slice2 : out_slice) {
+    //     homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(), out_slice2.getSequence());
+    //   }
+    // }
+    Map<String, Object> map = new HashMap<>();
+    map.put("message", "200");
+    return Result.success(map);
+  }
+
+  // 淇敼鍑虹墖闃熷垪璋冨簭鐘舵�佷笌鍑虹墖闃熷垪璋冨簭
+  @PostMapping("/isAllowReorderings")
+  public Result isAllowReorderings(Boolean isAllowReordering, @RequestBody List<Out_slice> out_slice) {
+    Plchome.isAllowReordering = isAllowReordering;
+    if (isAllowReordering == true) {
       for (Out_slice out_slice2 : out_slice) {
         homeMapper.UpdateOutSliceSequence(out_slice2.getGlassId(), out_slice2.getSequence());
       }
@@ -381,7 +389,13 @@
   @PostMapping("/CompleteQueue")
   public Result CompleteQueue(String id, String frameid, String glassid) {
     return outSliceServive.CompleteQueue(id, frameid, glassid);
-
   }
 
+  // 鎵嬪姩瀹屾垚浠诲姟
+  @PostMapping("/FrameStateUpdate")
+  public Result FrameStateUpdate(String frameno, String framestate) {
+    return outSliceServive.FrameStateUpdate(frameno, framestate);
+  }
+  
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java
deleted file mode 100644
index 86c397e..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/device/DeviceController.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.example.springboot.controller.device;
-
-
-
-import com.example.springboot.service.device.DeviceService;
-import com.example.springboot.entity.device.DeviceEntity;
-import com.example.springboot.entity.vo.Result;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/device") // 淇敼璇锋眰璺緞涓� "/api/device"
-public class DeviceController {
-
-    private final DeviceService deviceService;
-
-    @Autowired
-    public DeviceController(DeviceService deviceService) {
-        this.deviceService = deviceService;
-    }
-
-    @GetMapping("/getAllDevices")  // 淇敼鎺ュ彛璺緞涓� "/getAllDevices"
-    public Result getAllDevices() {
-        List<DeviceEntity> devices = deviceService.getAllDevices();
-        return Result.success(devices);
-    }
-
-    @PostMapping("/updateDeviceName")  // 淇敼鎺ュ彛璺緞涓� "/updateDeviceName"
-    public Result updateDeviceName(@RequestBody DeviceEntity device) {
-        deviceService.updateDeviceName(device);
-        return Result.success();
-    }
-    @PostMapping("/call-stored-proc")
-    public Result  callStoredProc(@RequestBody DeviceEntity device) {
-        List<DeviceEntity> result = deviceService.callStoredProc(device); // 鑾峰彇澶氳鏌ヨ缁撴灉
-        return Result.success(result); // 杩斿洖鍖呭惈澶氳缁撴灉鐨� Result 瀵硅薄
-    }
-
-}
-
-
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
index 5ea7bb2..4195abe 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
@@ -11,6 +11,13 @@
     private String time;//淇敼鏃堕棿
     private int sequence;//鍑虹墖椤哄簭
     private String position;//鐜荤拑鎽嗘斁浣嶇疆
+    private String orderId;//鐜荤拑id
+    private String listId;//闆嗗悎id
+    private String boxId;//绠卞瓙id
+    private double glasswidthmm;//鐜荤拑瀹絤m
+    private double glassheightmm;//鐜荤拑楂榤m
+    private String position_x;//x鍧愭爣
+    private int framestate;//y鍧愭爣
 
     public String getPosition() {
         return position;
@@ -124,4 +131,51 @@
     public void setSequence(int sequence) {
         this.sequence = sequence;
     }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public Double getGlassWidthMm() {
+        return glasswidthmm;
+    }
+
+    public void setGlassWidthMm(Double glasswidthmm) {
+        this.glasswidthmm = glasswidthmm;
+    }
+
+    public Double getGlassHeightMm() {
+        return glassheightmm;
+    }
+
+    public void setGlassHeightMm(Double glassheightmm) {
+        this.glassheightmm = glassheightmm;
+    }
+    public String getListId() {
+        return listId;
+    }
+
+    public void setListno(String listId) {
+        this.listId = listId;
+    }
+
+    public String getBoxId() {
+        return boxId;
+    }
+
+    public void setBoxno(String boxId) {
+        this.boxId = boxId;
+    }
+    
+    public int getFrameState() {
+        return framestate;
+    }
+
+    public void SetFrameState(int framestate) {
+        this.framestate = framestate;
+    }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java
deleted file mode 100644
index d2ee204..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/DeviceEntity.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.example.springboot.entity.device;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.io.Serializable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- *
- * </p>
- *
- * @author yyq
- * @since 2023-08-28
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("device")
-@ApiModel(value="DeviceEntity瀵硅薄", description="")
-public class DeviceEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private String deviceId;
-
-    private String createUser;
-    private String msg;
-    private LocalDateTime createTime;
-    private long id;
-    private String deviceName;
-    private String name;
-    private String status;
-
-    private String info;
-
-    private String model;
-
-    private LocalDateTime countTimeFlag;
-
-    private String address;
-
-    private String gps;
-
-    private LocalDate debugTime;
-
-    private LocalDate endTime;
-
-    private String customerName;
-
-    private String customerDeviceName;
-
-    private LocalDate lastProductCountDate;
-
-
-}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java b/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
index 2e2843d..ef08c24 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java
@@ -1,41 +1,46 @@
 package com.example.springboot.entity;
+
+import java.util.Comparator;
+
 //瀹㈡埛鐜荤拑淇℃伅琛�
 public class north_glass_buffer1 {
-    private Integer id; //鑷id
-    private String ordernumber;//璁㈠崟id
-    private String listnumber;//闆嗗悎id
-    private String boxnumber;//绠卞瓙id
-    private String barcode;//鐜荤拑id
-    private double glasslength;//鐜荤拑瀹�
-    private double glassheight;//鐜荤拑楂�
-    private double glasslengthmm;//鐜荤拑瀹絤m
-    private double glassheightmm;//鐜荤拑楂榤m
+    private Integer id; // 鑷id
+    private String ordernumber;// 璁㈠崟id
+    private String listnumber;// 闆嗗悎id
+    private String boxnumber;// 绠卞瓙id
+    private String barcode;// 鐜荤拑id
+    private double glasslength;// 鐜荤拑瀹�
+    private double glassheight;// 鐜荤拑楂�
+    private double glasslengthmm;// 鐜荤拑瀹絤m
+    private double glassheightmm;// 鐜荤拑楂榤m
 
     private String glassoutside;//
     private String glassinside;//
     private String glassbetween;//
     private String itemtype;//
-    private String slotnumber;//鏍煎瓙
+    private String slotnumber;// 鏍煎瓙
     private String datemodified;//
     private String datecreated;//
-    private String FrameBarcode;//閾濇id
+    private String FrameBarcode;// 閾濇id
 
-    private StorageCage storageCage;
- 
+    public StorageCage storageCage;
+
+    
+
     public void setstorageCage(StorageCage storageCage) {
         this.storageCage = storageCage;
     }
-    
+
     public StorageCage getstorageCage() {
         return storageCage;
     }
- 
+
     private Out_slice out_slice;
- 
+
     public void setOut_slice(Out_slice out_slice) {
         this.out_slice = out_slice;
     }
-    
+
     public Out_slice getOut_slice() {
         return out_slice;
     }
@@ -51,15 +56,19 @@
     public Integer getId() {
         return id;
     }
+
     public String getordernumber() {
         return ordernumber;
     }
+
     public void setordernumber(String ordernumber) {
         this.ordernumber = ordernumber;
     }
+
     public String getlistnumber() {
         return listnumber;
     }
+
     public void setlistnumber(String listnumber) {
         this.listnumber = listnumber;
     }
@@ -67,22 +76,23 @@
     public String getboxnumber() {
         return boxnumber;
     }
+
     public void setboxnumber(String boxnumber) {
         this.boxnumber = boxnumber;
     }
 
-
     public String getbarcode() {
         return barcode;
     }
+
     public void setbarcode(String barcode) {
         this.barcode = barcode;
     }
 
-    
     public Double getglasslength() {
         return glasslength;
     }
+
     public void setglasslength(Double glasslength) {
         this.glasslength = glasslength;
     }
@@ -90,6 +100,7 @@
     public Double getglassheight() {
         return glassheight;
     }
+
     public void setglassheight(Double glassheight) {
         this.glassheight = glassheight;
     }
@@ -97,6 +108,7 @@
     public Double getglasslengthmm() {
         return glasslengthmm;
     }
+
     public void setglasslengthmm(Double glasslengthmm) {
         this.glasslengthmm = glasslengthmm;
     }
@@ -104,6 +116,7 @@
     public Double getglassheightmm() {
         return glassheightmm;
     }
+
     public void setglassheightmm(Double glassheightmm) {
         this.glassheightmm = glassheightmm;
     }
@@ -111,33 +124,41 @@
     public String getitemtype() {
         return itemtype;
     }
+
     public void setitemtype(String itemtype) {
         this.itemtype = itemtype;
     }
+
     public String getslotnumber() {
         return slotnumber;
     }
+
     public void setslotnumber(String slotnumber) {
         this.slotnumber = slotnumber;
     }
+
     public String getdatemodified() {
         return datemodified;
     }
+
     public void setdatemodified(String datemodified) {
         this.datemodified = datemodified;
     }
+
     public String getdatecreated() {
         return datecreated;
     }
+
     public void setdatecreated(String datecreated) {
         this.datecreated = datecreated;
     }
+
     public String getFrameBarcode() {
         return FrameBarcode;
     }
+
     public void setFrameBarcode(String FrameBarcode) {
         this.FrameBarcode = FrameBarcode;
     }
-   
 
 }
\ No newline at end of file
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 38b5b3d..13fbf9e 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
@@ -4,6 +4,7 @@
 
 import com.example.springboot.entity.CarPosition;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.Out_slice;
@@ -33,6 +34,8 @@
   // 鏌ヨ5-1绗煎灞傛牸瀛愮姸鎬�
   @Select("SELECT case when tier=1 then cage else 0 end as cage,case when tier=1 then state else 0 end as state,sum(case when tier=1 then glasswidth/2750*2 else 0 end) as glasswidth,sum(case when tier=2 then glasswidth/2750*2 else 0 end) as width  from storage_cage where cage<=5  group by cage,cell order by cage desc,cell desc")
   List<StorageCage> selectRack4();
+
+
 
   // 鏍规嵁浠诲姟绫诲瀷鏌ヨ褰撳墠姝e湪鍑虹墖锛岃繘鐗囩殑鐜荤拑淇℃伅
   @Select("select * from storage_cage where state=#{task_type}")
@@ -71,7 +74,7 @@
   List<StorageCage> SelectCageInfo(String cage);
 
   // 鎵嬪姩瀹屾垚鍑虹墖浠诲姟淇敼绗煎瓙鏁版嵁
-  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,listid=null,boxid=null where glass_id=#{glassid}")
+  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,listid=null,boxid=null,FrameBarcode=null where glass_id=#{glassid}")
   void DeleteByGlassID(String glassid);
 
   //鏌ヨ灏忚溅浣嶇疆
@@ -139,6 +142,10 @@
   @Select("select * from storage_cage where glass_id=#{glassid}")
   StorageCage SelectStorageGlassById(String glassid);
 
+  //鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
+  @Select("select * from storage_cage where glass_id=#{glassid}")
+  List<StorageCage> SelectStoragesGlassById(String glassid);
+
 
   // //鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
   // @Update("update out_slice set state=4 where barcode=#{FrameNo} and (state=0 or state=1 or state=2)")
@@ -149,13 +156,13 @@
   List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode);
 
 
-  //鏌ヨ鐜荤拑鏄惁宸插瓨鍦ㄤ簬鍑虹墖闃熷垪
-  @Select("select * from out_slice where glassid=#{getbarcode} and (state=0 or state=1 or state=2 or state=3)")
+  //鏍规嵁鐜荤拑id鏌ヨ鍑虹墖闃熷垪淇℃伅
+  @Select("select * from out_slice where glassid=#{getbarcode}")
   Out_slice SelectQueueByglassid(String getbarcode);
 
   //娣诲姞鍑虹墖闃熷垪
-  @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position});")
-  void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state);
+  @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight});")
+  void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state,String orderid, String listid, String boxid, String glasswidth, String glassheight);
 
   //鍑虹墖闃熷垪璋冨簭
   @Update("update out_slice set sequence=#{sequence} where glassid=#{glassId}")
@@ -167,19 +174,37 @@
   //鏌ヨ鐢ㄦ埛鏉冮檺
   @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35)")
   List<RolePermission> SelectPermissionByUserName(String username);
-  //瀹屾垚鍑虹墖浠诲姟
-  @Update("update out_slice set state=2 where id=#{id}")
+
+  //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
+  @Update("update out_slice set state=4 where id=#{id}")
   void CompleteQueue(String id);
 
+  //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
+  @Update("update out_slice set state=4 where id=#{id}")
+  void CompleteQueueByGlassId(String glassid);
+
   //鏌ヨ閾濇id瀵瑰簲鐜荤拑瀹屾垚鏁伴噺
-  @Select("select count(*) from out_slice where barcode=#{frameid} and state<2")
+  @Select("select count(*) from out_slice where barcode=#{frameid} and state!=4")
   Short SelectCountByFrameNo(String frameid);
 
   //鍒犻櫎宸插畬鎴愮殑浠诲姟
-  @Update("delete from out_slice where Barcode=#{frameid}")
+  @Delete("delete from out_slice where Barcode=#{frameid}")
   void CompleteQueueByFrameNo(String frameid);
 
+  //鏌ヨ绗煎唴鏍煎瓙鍓╀綑瀹藉害
   @Select("Select width from storage_cage where cage=#{cage} and cell=#{cell} limit 1")
   Double SelectCageWidth(short cage, short cell);
 
+  //淇敼鍑虹墖闃熷垪鐜荤拑鐘舵�佷负缂哄け
+  @Update("update out_slice set state=3 where glassId=#{glassid} and state<3")
+  void UpdateOutSliceGlass(String glassid);
+
+  //鏌ヨ鏈畬鎴愮殑浠诲姟
+  @Select("select * from storage_task where task_state=0 and task_type=#{task_type}")
+  List<StorageTask> SelectTaskByState(int task_type);
+
+  //淇敼鍑虹墖闃熷垪閾濇鐘舵��
+  @Select("update out_slice set framestate=#{framestate} where barcode=#{frameno}")
+  void FrameStateUpdate(String frameno, String framestate);
+
 }
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 031ecfc..039a3ec 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
@@ -16,7 +16,7 @@
     @Select("select COUNT(if(a.state1=0,cell,0))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(a.cage<6,a.cage>0 and a.cage<6,a.cage>5) and disabled=0 GROUP BY cage ORDER BY cell desc LIMIT 1")
     int selectCage(int cage1);
     // 鑾峰彇璁㈠崟鍙锋帓搴忕殑绌鸿鍗曠瀛�
-    @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage  where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c  on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY FrameBarcode=#{Fbarcode} desc,shu desc,shu2,cage asc; ")
+    @Select("select a.cage,FrameBarcode,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1,disabled,FrameBarcode from storage_cage a left join (select COUNT(*)shu,cage from storage_cage  where order_id=#{orderids} GROUP BY cage)as b on a.cage=b.cage left join(select cage ,COUNT(glass_id)as shu2 from storage_cage GROUP BY cage)c  on a.cage=c.cage where (order_id=#{orderids} or ''='') GROUP BY cage,cell HAVING state1=0 ORDER BY (FrameBarcode=#{Fbarcode} or ''='') desc,shu desc,shu2,cage asc; ")
     List<StorageCage> selectAll(String orderids,String Fbarcode);
 
     // 鑾峰彇鍒ゆ柇璇ユ牸瀛愭槸鍚﹂渶瑕佹妸澶栫墖鎺ㄥ叆鍐呯墖浣嶇疆
@@ -34,7 +34,7 @@
     // 瀹屾垚杩涚墖涓殑鐜荤拑鐘舵��
     @Update("update storage_cage set state=#{state} where glass_id=#{glassid} and state=3;")
     void UpdateCageOver(String glassid, int state);
-        
+
     @Update("update storage_cage set state=#{state} where glass_id=#{glassid} and state=2;")
     void UpdateCageadd(String glassid, int state);
 
@@ -75,8 +75,7 @@
     void UpdataAddCage(String orderid, String glassid, double width, int cage, int cell, int id, int state);
 
     @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthmm},glassheight=#{glass.glassheightmm},glasswidthmm=#{glass.glasslength},glassheightmm=#{glass.glassheight},listid=#{glass.listnumber},boxid=#{glass.boxnumber},FrameBarcode=#{glass.FrameBarcode} where id=#{id};")
-    void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id,
-            int state);
+    void UpdataAddCage2(String orderid, String glassid, north_glass_buffer1 glass, int cage, int cell, int id,int state);
 
     // 淇敼绗煎瓙淇℃伅(澶氱墖杩涚墖)
     @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};")
@@ -95,7 +94,7 @@
     void UpdataOutCage1(double width, int cage, int cell);
 
     // 璋冩嫧鏇存崲绗煎瓙淇℃伅
-    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=2,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.id=#{id1}")
+    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=#{tier})as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.id=#{id1}")
     void UpdateDBCage(int id1, int cage, int cell, int tier);
 
     // @Insert("insert into user(name, date, address, user_no) values (#{name},
@@ -118,11 +117,11 @@
     String SelectOrderout();
 
     // 鍐呭鐗囪皟鎹�
-    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=1)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid where a.cage=#{cage} and a.cell=#{cell} and a.tier=2")
+    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=1)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth,a.glassheight=b.glassheight,a.glasswidthmm=b.glasswidthmm,a.glassheightmm=b.glassheightmm,a.listid=b.listid,a.boxid=b.boxid,a.FrameBarcode=b.FrameBarcode where a.cage=#{cage} and a.cell=#{cell} and a.tier=2")
     void UpdateDBCage1(int cage, int cell);
 
     // 娓呴櫎鍐呯墖鏁版嵁
-    @Update("update storage_cage a set glass_id='',order_id='',state=0,glasswidth=0,glassheight=0,glasswidthmm=0,glassheightmm=0,listid=null,boxid=null where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
+    @Update("update storage_cage a set glass_id=null,order_id=null,state=0,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,listid=null,boxid=null,FrameBarcode=null where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
     void UpdateDBCage2(int cage, int cell);
 
     // 鍒ゆ柇鏄惁鏈夎皟鎷ㄥ畬鍚庡嚭鐗囩殑浠诲姟
@@ -197,10 +196,13 @@
     // 鍒ゆ柇閾濇鍑虹墖琛ㄦ槸鍚︽湁鐜荤拑姝e湪鍑虹墖涓�
     @Select("SELECT count(*) FROM `out_slice` where state=1;")
     int SelectOutSliceshu();
+    //鍒ゆ柇鏄惁鏈夎皟鎷ㄤ换鍔℃湭瀹屾垚
+    @Select("SELECT count(*) FROM `storage_cage` where state=#{state};")
+    int Selectcageout(int state);
 
     // 鏇存柊鍑虹墖闃熷垪鐨勪换鍔$姸鎬�
-    @Update("update out_slice set state=#{state} where glassid=#{glassid} and state=1")
-    void OverOutSlice(String glassid, int state);
+    @Update("update out_slice set state=#{state} where glassid=#{glassid} and state=#{state2}")
+    void OverOutSlice(String glassid, int state,int state2);
 
     // 鑾峰彇鐜荤拑鐨勯摑妗唅d
     @Select("select barcode from out_slice where glassid=#{glassid};")
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java
deleted file mode 100644
index 6078dbb..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/device/DeviceMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.example.springboot.mapper.device;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.example.springboot.entity.User;
-import com.example.springboot.entity.device.DeviceEntity;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-
-@Mapper
-@Repository
-public interface DeviceMapper extends BaseMapper<User> {
-    List<DeviceEntity> selectAllDevices();
-
-    void updateDeviceName(DeviceEntity device);
-
-    void updateMultipleDevices(List<DeviceEntity> devices);
-    List<DeviceEntity> callStoredProc(DeviceEntity device);
-}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java b/springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
index 0a351d4..364e0cc 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/North_Glass_Buffer1Service.java
@@ -1,13 +1,17 @@
 package com.example.springboot.service;
 
 import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Comparator;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.mapper.HomeMapper;
+import java.util.Collections;
 
 @Service
 public class North_Glass_Buffer1Service {
@@ -17,7 +21,34 @@
     @Autowired
     private JdbcConnections jdbcConnections;
 
-    //鑾峰彇鐜荤拑鏄惁鍦ㄧ瀛愶紝鏄惁鍦ㄥ嚭鐗囬槦鍒�
+    class north_glass_buffer1Comparator implements Comparator<north_glass_buffer1> {
+        @Override
+        public int compare(north_glass_buffer1 n1, north_glass_buffer1 n2) {//瀵规煡璇㈠埌鐨勯摑妗嗗搴旂殑鐜荤拑鏁版嵁杩涜鎺掑簭锛屽皢绂诲嚭鐗囦綅缃繎鐨勶紝闈犺繎绗煎瓙鍑虹墖渚х殑鐜荤拑鎺掑湪鍓嶉潰
+            if (n1.getstorageCage() != null) {
+                if (n2.getstorageCage() != null) {
+                    int cageComparison = n2.getstorageCage().getCage().compareTo(n1.getstorageCage().getCage());//闈犲嚭鐗囧彛杩戠殑绗煎瓙浼樺厛
+                    if (cageComparison != 0) {
+                        return cageComparison;
+                    } else {
+                        int cellComparison = n2.getstorageCage().getCell().compareTo(n1.getstorageCage().getCell());//闈犲嚭鐗囧彛杩戠殑鏍煎瓙浼樺厛
+                        if (cellComparison != 0) {
+                            return cellComparison;
+                        } else {
+                            return n2.getstorageCage().getTier().compareTo(n1.getstorageCage().getTier());//闈犲嚭鐗囧彛杩戠殑鏍煎瓙澶栧眰浼樺厛
+                        }
+                    }
+                } else {
+                    return -1;
+                }
+
+            } else {
+                return 1;
+            }
+
+        }
+    }
+
+    // 鑾峰彇鐜荤拑鏄惁鍦ㄧ瀛愶紝鏄惁鍦ㄥ嚭鐗囬槦鍒�
     public List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode) throws SQLException {
         List<north_glass_buffer1> listAluminumFrame = jdbcConnections
                 .SelectGlassByGlassIdOrderIdFrameIdss(FrameBarcode);
@@ -25,27 +56,32 @@
             north_glass_buffer1.setstorageCage(homeMapper.SelectStorageGlassById(north_glass_buffer1.getbarcode()));
             north_glass_buffer1.setOut_slice(homeMapper.SelectQueueByglassid(north_glass_buffer1.getbarcode()));
         }
+        // 瀵瑰祵濂楃被鐨勫叾涓竴鍒楄繘琛屾帓搴�
+        Collections.sort(listAluminumFrame, new north_glass_buffer1Comparator());
         return listAluminumFrame;
     }
 
-    //鏍规嵁閾濇id娣诲姞鐜荤拑鍒板嚭鐗囬槦鍒�
-    public void AddOutSliceS(String FrameBarcode) throws SQLException{
-        List<north_glass_buffer1> north_glass_buffer1s=SelectAluminumFrameInfoById(FrameBarcode);
+    // 鏍规嵁閾濇id娣诲姞鐜荤拑鍒板嚭鐗囬槦鍒�
+    public void AddOutSliceS(String FrameBarcode) throws SQLException {
+        List<north_glass_buffer1> north_glass_buffer1s = SelectAluminumFrameInfoById(FrameBarcode);
         String flip = jdbcConnections.SelectFlipByFrameBarcode(FrameBarcode);
-        String position =jdbcConnections.SelectPositionByFrameBarcode(FrameBarcode);
-        int sequence=homeMapper.SelectMaxSquence();
-
+        String position = jdbcConnections.SelectPositionByFrameBarcode(FrameBarcode);
+        int sequence = homeMapper.SelectMaxSquence();
         for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
-            Short state=0;
-            if(north_glass_buffer1.getOut_slice()==null){
-                if(north_glass_buffer1.getstorageCage()==null){
-                    state=3;
+            Short state = 0;
+            if (north_glass_buffer1.getOut_slice() == null) {
+                if (north_glass_buffer1.getstorageCage() == null) {
+                    state = 3;
                 }
-                homeMapper.AddOutSliceS(north_glass_buffer1.getbarcode(), flip, FrameBarcode, north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(), sequence, position, state);
-                sequence+=1;
+                homeMapper.AddOutSliceS(north_glass_buffer1.getbarcode(), flip, FrameBarcode,
+                        north_glass_buffer1.getglasslengthmm().toString(),
+                        north_glass_buffer1.getglassheightmm().toString(), sequence, position, state,
+                        north_glass_buffer1.getordernumber(), north_glass_buffer1.getlistnumber(),
+                        north_glass_buffer1.getboxnumber(), north_glass_buffer1.getglasslength().toString(),
+                        north_glass_buffer1.getglassheight().toString());
+                sequence += 1;
             }
         }
     }
 
-    
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
index aeba11e..a6d32b8 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -6,11 +6,9 @@
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoProperties.Storage;
 import org.springframework.stereotype.Service;
 
 import com.example.springboot.common.Result;
-import com.example.springboot.component.S7control;
 import com.example.springboot.entity.Out_slice;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.mapper.HomeMapper;
@@ -23,33 +21,35 @@
   private HomeMapper homeMapper;
   @Autowired
   private SpianMapper spianMapper;
-
   @Autowired
-  private JdbcConnections jdbcConnections;
+  SpianService spianService;
+
 
   public void AddOutSliceS(String[][] AluminumFrames) throws SQLException {
-    int sequence = homeMapper.SelectMaxSquence();
+    // int sequence = homeMapper.SelectMaxSquence();
 
     // 娣诲姞鍒版暟鎹簱
-    for (String[] item : AluminumFrames) {
-      if (item[1] == "true") {
-        Short state=0;
-        String position = jdbcConnections.SelectPositionByFrameBarcode(item[3]);
-        homeMapper.AddOutSliceS(item[0], item[2], item[3], item[4], item[5], sequence, position,state );
-        sequence += 1;
-      }
-    }
+    // for (String[] item : AluminumFrames) {
+    // if (item[1] == "true") {
+    // Short state=0;
+    // String position = jdbcConnections.SelectPositionByFrameBarcode(item[3]);
+    // homeMapper.AddOutSliceS(item[0], item[2], item[3], item[4], item[5],
+    // sequence, position,state );
+    // sequence += 1;
+    // }
+    // }
   }
 
   // 鏌ヨ鍑虹墖闃熷垪
   public List<Out_slice> SelectProductionqueue() {
     List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
-    for (Out_slice out_slice : listoutslice) {
-      out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
-    }
+    // for (Out_slice out_slice : listoutslice) {
+    // out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
+    // }
     return listoutslice;
   }
 
+  // 瀹屾垚鍑虹墖浠诲姟
   public Result CompleteQueue(String id, String frameid, String glassid) {
     homeMapper.CompleteQueue(id);
     Short num = homeMapper.SelectCountByFrameNo(frameid);
@@ -57,14 +57,52 @@
       homeMapper.CompleteQueueByFrameNo(frameid);
     }
     StorageCage storageCage = homeMapper.SelectGlassInfo(glassid);
-    if(storageCage!=null){
+    if (storageCage != null&&storageCage.getState().equals("3")) {
       spianMapper.UpdataOutCage1(storageCage.getGlassWidth(), storageCage.getCage(), storageCage.getCell());
+      homeMapper.DeleteByGlassID(glassid);
     }
-    homeMapper.DeleteByGlassID(glassid);
-    S7control.getinstance().WriteWord("DB105.12", (short) 0);
     Map<String, Object> map = new HashMap<>();
     map.put("message", "200");
     return Result.success(map);
   }
 
+  // 纭鍚庡畬鎴愪慨鏀瑰嚭鐗囬槦鍒楃姸鎬�
+  public void CompleteQueueByGlassId(String glassid) {
+    homeMapper.CompleteQueueByGlassId(glassid);
+    Out_slice outslice=homeMapper.SelectQueueByglassid(glassid);
+    Short num = homeMapper.SelectCountByFrameNo(outslice.getBarCode());
+    if (num == 0) {
+      homeMapper.CompleteQueueByFrameNo(outslice.getBarCode());
+    }
+  }
+
+  //缁堟杩涚墖/鍑虹墖
+  public void StopTask(String glassid, int i) {
+    if (i == 0) {// 杩涚墖缁堟
+      spianService.overtask(glassid);
+      DeleteByGlassIDs(glassid);
+      homeMapper.UpdateOutSliceGlass(glassid);
+    } else {// 鍑虹墖缁堟
+      spianMapper.UpdatetaskOut(glassid);//瀹屾垚鍑虹墖浠诲姟
+      spianMapper.UpdataGlassCage(glassid, 0);// 娓呴櫎鍑虹墖鏍煎瓙鐜荤拑淇℃伅
+      spianMapper.UpdateCageOver(glassid, 0);// 鏇存敼绗煎瓙琛ㄥ嚭鐗囩姸鎬�
+      homeMapper.UpdateOutSliceGlass(glassid);//淇敼鍑虹墖闃熷垪姝ょ幓鐠冪姸鎬佷负缂哄け
+      
+    }
+  }
+
+  //鍒犻櫎绗煎唴鐜荤拑杩樺師瀹藉害
+  public void DeleteByGlassIDs(String glassid) {
+    StorageCage glassinfor = homeMapper.SelectGlassInfo(glassid);
+    spianMapper.UpdataOutCage1(glassinfor.getGlassWidth(), glassinfor.getCage(), glassinfor.getCell());
+    homeMapper.DeleteByGlassID(glassid);
+  }
+
+public Result FrameStateUpdate(String frameno, String framestate) {
+    homeMapper.FrameStateUpdate(frameno, framestate);
+    Map<String, Object> map = new HashMap<>();
+    map.put("message", "200");
+    return Result.success(map);
+}
+
 }
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 8e4265f..b46dad5 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
@@ -96,7 +96,7 @@
                     spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                     spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 鏂板浠诲姟
                     S7control.getinstance().WriteWord(adddresslist, datas);
-                    System.out.println("鍑虹墖浠诲姟|" + datas);
+                    System.out.println("杩涚墖浠诲姟|" + datas);
 
                 } else {
                     // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
@@ -105,7 +105,7 @@
                     spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                     spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier);// 鏂板浠诲姟
                     S7control.getinstance().WriteWord(adddresslist, datas);
-                    System.out.println("鍑虹墖浠诲姟|" + datas);
+                    System.out.println("杩涚墖浠诲姟|" + datas);
 
                     // S7control.getinstance().WriteByte("DB105.16",glassid);
                 }
@@ -155,9 +155,9 @@
             datas.add((short) 1000);
             datas.add((short) state);
             datas.add((short) 1);
-            spianMapper.OverOutSlice(glassid, 1);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
+            spianMapper.OverOutSlice(glassid.toString(), 1,0);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
             spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
-            spianMapper.UpdataGlassCageState(glassid, 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
+            spianMapper.UpdataGlassCageState(glassid.toString(), 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
 
             spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state);// 鏂板浠诲姟
             // int state = spianMapper.selectGlassState(cage, cell);//鑾峰彇鏍煎瓙鏁伴噺
@@ -180,11 +180,11 @@
                 datas.add((short) 1000);
                 datas.add((short) 1);
                 datas.add((short) 1);
-                spianMapper.OverOutSlice(glassid, 1);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
+                spianMapper.OverOutSlice(glassid.toString(), 1,0);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
                 spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1);// 鏂板浠诲姟
                 spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
                 spianMapper.UpdataGlassCageState(glassid, 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
-                spianMapper.OverOutSlice(glassid, 1);// 鏇存柊鍑虹墖闃熷垪浠诲姟
+                
                 System.out.println("鍑虹墖浠诲姟|" + datas);
                 outmesid(glassid, "DB105.34");// 娲惧彂鍑虹墖ID
                 S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
@@ -307,7 +307,7 @@
     public void overtask(String glassid) {
 
         spianMapper.UpdatetaskOut(glassid.toString());// 瀹屾垚涓婁竴娆� 鍑虹墖鎴栬�呰繘鐗囦换鍔�
-        spianMapper.OverOutSlice(glassid.toString(), 2);// 瀹屾垚鍑虹墖闃熷垪浠诲姟
+        spianMapper.OverOutSlice(glassid.toString(), 2,1);// 瀹屾垚鍑虹墖闃熷垪浠诲姟
         spianMapper.UpdataGlassCage(glassid.toString(), 0);// 娓呴櫎鍑虹墖鏍煎瓙鐜荤拑淇℃伅
         spianMapper.UpdateCageOver(glassid.toString(), 0);// 鏇存敼绗煎瓙琛ㄥ嚭鐗囩姸鎬�
         spianMapper.UpdateCageadd(glassid.toString(), 1);// 鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
new file mode 100644
index 0000000..f6b9988
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -0,0 +1,58 @@
+package com.example.springboot.service;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.StorageTask;
+import com.example.springboot.mapper.HomeMapper;
+
+@Service
+public class StorageCageService {
+    @Autowired
+    private HomeMapper homeMapper;
+
+    @Autowired
+    private OutSliceServive outSliceServive;
+
+    @Autowired
+    private SpianService spianService;
+
+    public void EndTask(int types) {
+        if (types == 0) {// 缁堟杩涚墖浠诲姟
+            List<StorageTask> cageList = homeMapper.SelectTaskByState(types);
+            for (StorageTask storageTask : cageList) {
+                outSliceServive.StopTask(storageTask.getGlassId(), types);
+            }
+            // 鍙戦�佺粓姝㈣繘鐗囦换鍔′俊鍙�
+        } else {// 缁堟鍑虹墖浠诲姟
+            List<StorageCage> storageCages = homeMapper.selectinout(3);
+            for (StorageCage storageCage : storageCages) {
+                List<StorageCage> storageCagess = homeMapper.SelectStoragesGlassById(storageCage.getGlassId());
+                for (StorageCage storageCagez : storageCagess) {
+                    if (storageCagez.getState().equals("2")) {// 璋冩嫧杩涚墖
+                        outSliceServive.StopTask(storageCagez.getGlassId(), 0);
+                    } else {// 鍑虹墖
+                        outSliceServive.StopTask(storageCagez.getGlassId(), types);
+                    }
+                }
+            }
+        }
+    }
+
+    public void UpdateTask(Integer types, Integer shelfrack, String glassid) {
+        if (types == 0) {// 瀹屾垚杩涚墖
+            spianService.overtask(glassid);
+        } else if (types == 1) {// 瀹屾垚鍑虹墖
+            spianService.overtask(glassid);
+        } else if (types == 2) {// 缁堟杩涚墖浠诲姟
+            outSliceServive.StopTask(glassid, 0);
+            // 鍙戦�佺粓姝㈣繘鐗囦换鍔′俊鍙�
+        } else {// 缁堟鍑虹墖浠诲姟
+            outSliceServive.StopTask(glassid, 1);
+        }
+    }
+
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java b/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java
deleted file mode 100644
index 378945a..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/service/device/DeviceService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.example.springboot.service.device;
-
-import com.example.springboot.entity.device.DeviceEntity;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-@Service
-public interface DeviceService {
-    List<DeviceEntity> getAllDevices();
-
-
-    void updateDeviceName(DeviceEntity device);
-    void updateMultipleDevices(List<DeviceEntity> devices);
-    List<DeviceEntity> callStoredProc(DeviceEntity device); // 淇敼杩斿洖绫诲瀷涓� List<DeviceEntity>
-}
-
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java b/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java
deleted file mode 100644
index 92c650f..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/service/device/impl/DeviceServiceImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.example.springboot.service.device.impl;
-
-import com.example.springboot.entity.device.DeviceEntity;
-import com.example.springboot.mapper.device.DeviceMapper;
-import com.example.springboot.service.device.DeviceService;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-
-public  class DeviceServiceImpl implements DeviceService {
-
-    private final DeviceMapper deviceDao;
-
-    @Autowired
-    public DeviceServiceImpl(DeviceMapper deviceDao) {
-        this.deviceDao = deviceDao;
-    }
-
-    @Override
-    public List<DeviceEntity> getAllDevices() {
-        return deviceDao.selectAllDevices();
-    }
-
-    @Override
-    public void updateDeviceName(DeviceEntity device) {
-        deviceDao.updateDeviceName(device);
-    }
-
-    @Override
-    public void updateMultipleDevices(List<DeviceEntity> devices) {
-        deviceDao.updateMultipleDevices(devices);
-    }
-
-    @Override
-    public List<DeviceEntity> callStoredProc(DeviceEntity device) {
-        return performStoredProcQuery(device);
-    }
-
-    private List<DeviceEntity> performStoredProcQuery(DeviceEntity device) {
-        // 鎵ц瀛樺偍杩囩▼鐨勬煡璇㈡搷浣滐紝骞惰繑鍥炵粨鏋滃垪琛�
-        List<DeviceEntity> resultList = new ArrayList<>();
-
-        return deviceDao.callStoredProc(device);
-    }
-}
diff --git a/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml b/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml
index 5cc5c18..769c418 100644
--- a/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml
+++ b/springboot-vue3/src/main/resources/com/example/springboot/mapper/DeviceMapper.xml
@@ -2,39 +2,39 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.example.springboot.mapper.device.DeviceMapper">
 
-    <resultMap id="myResultMap" type="com.example.springboot.entity.device.DeviceEntity">
-        <!-- 鏍规嵁浣犵殑瀹為檯鎯呭喌瀹氫箟缁撴灉鏄犲皠 -->
-        <!-- 绀轰緥涓皢缁撴灉鏄犲皠鍒板疄浣撶被鐨勫睘鎬� -->
-        <id property="id" column="id"/>
-        <result property="name" column="device_name"/>
-        <!-- 鍏朵粬灞炴�ф槧灏� -->
-    </resultMap>
+<!--    <resultMap id="myResultMap" type="com.example.springboot.entity.device.DeviceEntity">-->
+<!--        &lt;!&ndash; 鏍规嵁浣犵殑瀹為檯鎯呭喌瀹氫箟缁撴灉鏄犲皠 &ndash;&gt;-->
+<!--        &lt;!&ndash; 绀轰緥涓皢缁撴灉鏄犲皠鍒板疄浣撶被鐨勫睘鎬� &ndash;&gt;-->
+<!--        <id property="id" column="id"/>-->
+<!--        <result property="name" column="device_name"/>-->
+<!--        &lt;!&ndash; 鍏朵粬灞炴�ф槧灏� &ndash;&gt;-->
+<!--    </resultMap>-->
 
-    <select id="selectAllDevices" resultMap="myResultMap">
-        SELECT *
-        FROM device
-    </select>
+<!--    <select id="selectAllDevices" resultMap="myResultMap">-->
+<!--        SELECT *-->
+<!--        FROM device-->
+<!--    </select>-->
 
-    <select id="callStoredProc" statementType="CALLABLE" resultMap="myResultMap">
-        { call Your_Stored_Procedure(
-                #{id, mode=IN, jdbcType=VARCHAR},
-                #{name, mode=IN, jdbcType=VARCHAR}
+<!--    <select id="callStoredProc" statementType="CALLABLE" resultMap="myResultMap">-->
+<!--        { call Your_Stored_Procedure(-->
+<!--                #{id, mode=IN, jdbcType=VARCHAR},-->
+<!--                #{name, mode=IN, jdbcType=VARCHAR}-->
 
-            ) }
-    </select>
+<!--            ) }-->
+<!--    </select>-->
 
-    <update id="updateDeviceName">
-        UPDATE device SET
-                          device_name = #{deviceName},
-                          address = #{address}
-        WHERE id = #{id}
-    </update>
-    <update id="updateMultipleDevices" parameterType="java.util.List">
-        <foreach collection="list" item="device" separator=";">
-            UPDATE device SET
-            device_name = #{device.deviceName},
-            address = #{device.address}
-            WHERE id = #{device.id}
-        </foreach>
-    </update>
+<!--    <update id="updateDeviceName">-->
+<!--        UPDATE device SET-->
+<!--                          device_name = #{deviceName},-->
+<!--                          address = #{address}-->
+<!--        WHERE id = #{id}-->
+<!--    </update>-->
+<!--    <update id="updateMultipleDevices" parameterType="java.util.List">-->
+<!--        <foreach collection="list" item="device" separator=";">-->
+<!--            UPDATE device SET-->
+<!--            device_name = #{device.deviceName},-->
+<!--            address = #{device.address}-->
+<!--            WHERE id = #{device.id}-->
+<!--        </foreach>-->
+<!--    </update>-->
 </mapper>
diff --git a/springboot-vue3/src/main/resources/sql/canadames.sql b/springboot-vue3/src/main/resources/sql/canadames.sql
index a9b4d90..e9e446d 100644
--- a/springboot-vue3/src/main/resources/sql/canadames.sql
+++ b/springboot-vue3/src/main/resources/sql/canadames.sql
@@ -11,7 +11,7 @@
  Target Server Version : 80022
  File Encoding         : 65001
 
- Date: 11/12/2023 13:35:48
+ Date: 20/12/2023 15:38:31
 */
 
 SET NAMES utf8mb4;
@@ -27,7 +27,7 @@
   `timeon` datetime(0) NULL DEFAULT NULL COMMENT '寮�濮嬫椂闂�',
   `endTime` datetime(0) NULL DEFAULT NULL COMMENT '缁撴潫鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1742 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1990 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of alarmmg
@@ -438,6 +438,254 @@
 INSERT INTO `alarmmg` VALUES (1739, 'A02 servo turn error', '2023-12-08 15:23:23', '2023-12-08 15:24:01');
 INSERT INTO `alarmmg` VALUES (1740, 'A01 servo travel error', '2023-12-08 15:23:55', '2023-12-08 15:23:59');
 INSERT INTO `alarmmg` VALUES (1741, 'A02 servo turn error', '2023-12-08 15:24:02', '2023-12-08 15:24:03');
+INSERT INTO `alarmmg` VALUES (1742, 'A01 servo turn error', '2023-12-13 09:55:07', '2023-12-13 10:15:12');
+INSERT INTO `alarmmg` VALUES (1743, 'A02 servo turn error', '2023-12-13 09:55:07', '2023-12-13 10:15:12');
+INSERT INTO `alarmmg` VALUES (1744, 'A01 servo travel error', '2023-12-13 10:50:47', '2023-12-13 10:51:29');
+INSERT INTO `alarmmg` VALUES (1745, 'A02 servo travel error', '2023-12-13 10:50:50', '2023-12-13 10:51:29');
+INSERT INTO `alarmmg` VALUES (1746, 'A02 servo travel error', '2023-12-13 10:52:03', '2023-12-13 10:54:11');
+INSERT INTO `alarmmg` VALUES (1747, 'A01 servo travel error', '2023-12-13 10:52:05', '2023-12-13 10:54:11');
+INSERT INTO `alarmmg` VALUES (1748, 'A01 servo turn error', '2023-12-13 10:54:33', '2023-12-13 10:55:09');
+INSERT INTO `alarmmg` VALUES (1749, 'A02 servo turn error', '2023-12-13 10:54:33', '2023-12-13 10:55:09');
+INSERT INTO `alarmmg` VALUES (1750, 'A02 servo travel error', '2023-12-13 10:54:44', '2023-12-13 10:55:10');
+INSERT INTO `alarmmg` VALUES (1751, 'A01 servo travel error', '2023-12-13 10:54:50', '2023-12-13 10:55:10');
+INSERT INTO `alarmmg` VALUES (1752, 'A01 servo travel error', '2023-12-13 10:55:44', '2023-12-13 10:56:09');
+INSERT INTO `alarmmg` VALUES (1753, 'A02 servo travel error', '2023-12-13 10:55:47', '2023-12-13 10:56:09');
+INSERT INTO `alarmmg` VALUES (1754, 'A01 servo travel error', '2023-12-13 10:56:43', '2023-12-13 10:58:29');
+INSERT INTO `alarmmg` VALUES (1755, 'A02 servo travel error', '2023-12-13 10:56:46', '2023-12-13 10:58:29');
+INSERT INTO `alarmmg` VALUES (1756, 'A01 servo turn error', '2023-12-13 10:58:29', '2023-12-13 10:58:30');
+INSERT INTO `alarmmg` VALUES (1757, 'A01 servo travel error', '2023-12-13 10:59:26', '2023-12-13 10:59:44');
+INSERT INTO `alarmmg` VALUES (1758, 'A02 servo travel error', '2023-12-13 10:59:26', '2023-12-13 10:59:44');
+INSERT INTO `alarmmg` VALUES (1759, 'A01 servo turn error', '2023-12-13 10:59:44', '2023-12-13 10:59:47');
+INSERT INTO `alarmmg` VALUES (1760, 'A01 conveyor right safety alarm', '2023-12-13 11:19:58', '2023-12-13 11:20:01');
+INSERT INTO `alarmmg` VALUES (1761, 'A01 conveyor right safety alarm', '2023-12-13 11:20:10', '2023-12-13 11:20:12');
+INSERT INTO `alarmmg` VALUES (1762, '1# buffer safety alarm', '2023-12-13 11:20:11', '2023-12-13 11:20:13');
+INSERT INTO `alarmmg` VALUES (1763, 'A01 conveyor right safety alarm', '2023-12-13 11:26:44', '2023-12-13 11:26:47');
+INSERT INTO `alarmmg` VALUES (1764, 'More glass than known', '2023-12-13 11:26:51', '2023-12-13 11:27:46');
+INSERT INTO `alarmmg` VALUES (1765, 'A01 servo travel error', '2023-12-13 11:29:12', '2023-12-13 11:29:15');
+INSERT INTO `alarmmg` VALUES (1766, 'A02 servo travel error', '2023-12-13 11:29:14', '2023-12-13 11:29:15');
+INSERT INTO `alarmmg` VALUES (1767, 'A01 servo turn error', '2023-12-13 11:29:15', '2023-12-13 11:29:30');
+INSERT INTO `alarmmg` VALUES (1768, 'A02 servo turn error', '2023-12-13 11:29:15', '2023-12-13 11:29:30');
+INSERT INTO `alarmmg` VALUES (1769, 'A01 conveyor right safety alarm', '2023-12-13 11:30:35', '2023-12-13 11:30:37');
+INSERT INTO `alarmmg` VALUES (1770, 'A01 conveyor right safety alarm', '2023-12-13 11:30:46', '2023-12-13 11:30:49');
+INSERT INTO `alarmmg` VALUES (1771, '1# buffer safety alarm', '2023-12-13 11:30:46', '2023-12-13 11:30:50');
+INSERT INTO `alarmmg` VALUES (1772, '2# buffer safety alarm', '2023-12-13 11:35:31', '2023-12-13 11:35:34');
+INSERT INTO `alarmmg` VALUES (1773, 'A02 conveyor Left safety alarm', '2023-12-13 11:35:32', '2023-12-13 11:35:34');
+INSERT INTO `alarmmg` VALUES (1774, 'More glass than known', '2023-12-13 11:35:45', '2023-12-13 11:45:23');
+INSERT INTO `alarmmg` VALUES (1775, 'More glass than known', '2023-12-13 11:47:33', '2023-12-13 11:48:58');
+INSERT INTO `alarmmg` VALUES (1776, 'A01 servo turn error', '2023-12-13 11:48:59', '2023-12-13 11:49:29');
+INSERT INTO `alarmmg` VALUES (1777, 'A02 servo turn error', '2023-12-13 11:48:59', '2023-12-13 11:49:29');
+INSERT INTO `alarmmg` VALUES (1778, 'A02 servo travel error', '2023-12-13 11:49:20', '2023-12-13 11:49:23');
+INSERT INTO `alarmmg` VALUES (1779, 'A01 servo travel error', '2023-12-13 11:49:22', '2023-12-13 11:49:23');
+INSERT INTO `alarmmg` VALUES (1780, 'A01 servo travel error', '2023-12-14 09:30:09', '2023-12-14 10:07:16');
+INSERT INTO `alarmmg` VALUES (1781, 'A02 servo travel error', '2023-12-14 09:30:09', '2023-12-14 10:07:16');
+INSERT INTO `alarmmg` VALUES (1782, 'emergency stop alarm', '2023-12-14 10:07:16', '2023-12-14 10:07:18');
+INSERT INTO `alarmmg` VALUES (1783, 'A01 servo travel error', '2023-12-14 10:07:51', '2023-12-14 10:07:55');
+INSERT INTO `alarmmg` VALUES (1784, 'A02 servo travel error', '2023-12-14 10:07:54', '2023-12-14 10:07:55');
+INSERT INTO `alarmmg` VALUES (1785, 'A01 servo turn error', '2023-12-14 10:07:55', '2023-12-14 10:08:02');
+INSERT INTO `alarmmg` VALUES (1786, 'A02 servo turn error', '2023-12-14 10:07:55', '2023-12-14 10:07:56');
+INSERT INTO `alarmmg` VALUES (1787, 'emergency stop alarm', '2023-12-14 10:14:10', '2023-12-14 10:18:21');
+INSERT INTO `alarmmg` VALUES (1788, 'A01 servo turn error', '2023-12-14 10:18:36', '2023-12-14 10:19:26');
+INSERT INTO `alarmmg` VALUES (1789, 'A02 servo turn error', '2023-12-14 10:18:36', '2023-12-14 10:19:26');
+INSERT INTO `alarmmg` VALUES (1790, 'A01 servo travel error', '2023-12-14 10:18:54', '2023-12-14 10:19:42');
+INSERT INTO `alarmmg` VALUES (1791, 'A02 servo turn error', '2023-12-14 10:37:57', '2023-12-14 10:40:21');
+INSERT INTO `alarmmg` VALUES (1792, 'emergency stop alarm', '2023-12-14 10:40:21', '2023-12-14 10:40:31');
+INSERT INTO `alarmmg` VALUES (1793, 'A02 servo turn error', '2023-12-14 10:41:47', '2023-12-14 10:51:01');
+INSERT INTO `alarmmg` VALUES (1794, 'A02 servo travel error', '2023-12-14 10:44:01', '2023-12-14 10:44:10');
+INSERT INTO `alarmmg` VALUES (1795, 'A02 servo travel error', '2023-12-14 10:44:12', '2023-12-14 10:44:53');
+INSERT INTO `alarmmg` VALUES (1796, 'emergency stop alarm', '2023-12-14 10:51:01', '2023-12-14 10:53:59');
+INSERT INTO `alarmmg` VALUES (1797, 'D01 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1798, 'D02 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1799, 'D03 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1800, 'D04 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1801, 'D05 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1802, 'D06 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:54');
+INSERT INTO `alarmmg` VALUES (1803, 'B01 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1804, 'B02 VFD error', '2023-12-14 10:53:59', '2023-12-14 10:54:55');
+INSERT INTO `alarmmg` VALUES (1805, 'A02 servo turn error', '2023-12-14 10:53:59', '2023-12-14 10:54:53');
+INSERT INTO `alarmmg` VALUES (1806, 'A01 servo travel error', '2023-12-14 10:53:59', '2023-12-14 10:54:54');
+INSERT INTO `alarmmg` VALUES (1807, 'A02 servo travel error', '2023-12-14 10:53:59', '2023-12-14 10:54:54');
+INSERT INTO `alarmmg` VALUES (1808, 'emergency stop alarm', '2023-12-14 10:54:53', '2023-12-14 10:55:04');
+INSERT INTO `alarmmg` VALUES (1809, 'A01 servo turn error', '2023-12-14 10:55:56', '2023-12-14 10:56:00');
+INSERT INTO `alarmmg` VALUES (1810, 'A02 servo turn error', '2023-12-14 10:55:56', '2023-12-14 11:20:58');
+INSERT INTO `alarmmg` VALUES (1811, 'emergency stop alarm', '2023-12-14 11:20:58', '2023-12-14 11:21:24');
+INSERT INTO `alarmmg` VALUES (1812, 'emergency stop alarm', '2023-12-14 11:23:01', '2023-12-14 11:23:03');
+INSERT INTO `alarmmg` VALUES (1813, 'A01 servo travel error', '2023-12-14 11:23:40', '2023-12-14 11:23:49');
+INSERT INTO `alarmmg` VALUES (1814, 'A02 servo travel error', '2023-12-14 11:23:40', '2023-12-14 11:23:49');
+INSERT INTO `alarmmg` VALUES (1815, 'A01 servo turn error', '2023-12-14 11:23:49', '2023-12-14 11:29:17');
+INSERT INTO `alarmmg` VALUES (1816, 'A02 servo turn error', '2023-12-14 11:23:49', '2023-12-14 11:29:17');
+INSERT INTO `alarmmg` VALUES (1817, 'D01 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1818, 'D02 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1819, 'D03 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1820, 'D04 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1821, 'D05 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1822, 'D06 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:29');
+INSERT INTO `alarmmg` VALUES (1823, 'B01 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:00');
+INSERT INTO `alarmmg` VALUES (1824, 'B02 VFD error', '2023-12-14 11:29:17', '2023-12-14 11:30:00');
+INSERT INTO `alarmmg` VALUES (1825, 'A01 servo travel error', '2023-12-14 11:29:17', '2023-12-14 11:30:00');
+INSERT INTO `alarmmg` VALUES (1826, 'A02 servo travel error', '2023-12-14 11:29:17', '2023-12-14 11:30:00');
+INSERT INTO `alarmmg` VALUES (1827, 'emergency stop alarm', '2023-12-14 11:30:26', '2023-12-14 11:30:33');
+INSERT INTO `alarmmg` VALUES (1828, 'A01 servo travel error', '2023-12-14 11:31:05', '2023-12-14 11:31:14');
+INSERT INTO `alarmmg` VALUES (1829, 'A02 servo travel error', '2023-12-14 11:31:05', '2023-12-14 11:31:14');
+INSERT INTO `alarmmg` VALUES (1830, 'emergency stop alarm', '2023-12-14 11:31:39', '2023-12-14 11:31:49');
+INSERT INTO `alarmmg` VALUES (1831, 'A01 servo turn error', '2023-12-14 11:32:28', '2023-12-14 11:34:11');
+INSERT INTO `alarmmg` VALUES (1832, 'D01 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1833, 'D02 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1834, 'D03 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1835, 'D04 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1836, 'D05 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1837, 'D06 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:32');
+INSERT INTO `alarmmg` VALUES (1838, 'B01 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:03');
+INSERT INTO `alarmmg` VALUES (1839, 'B02 VFD error', '2023-12-14 11:34:11', '2023-12-14 11:35:03');
+INSERT INTO `alarmmg` VALUES (1840, 'A01 servo travel error', '2023-12-14 11:34:11', '2023-12-14 11:35:03');
+INSERT INTO `alarmmg` VALUES (1841, 'A02 servo travel error', '2023-12-14 11:34:12', '2023-12-14 11:35:03');
+INSERT INTO `alarmmg` VALUES (1842, 'emergency stop alarm', '2023-12-14 11:35:30', '2023-12-14 11:35:40');
+INSERT INTO `alarmmg` VALUES (1843, 'A01 servo travel error', '2023-12-15 10:11:02', '2023-12-15 10:11:19');
+INSERT INTO `alarmmg` VALUES (1844, 'A02 servo travel error', '2023-12-15 10:11:02', '2023-12-15 10:11:19');
+INSERT INTO `alarmmg` VALUES (1845, 'A01 conveyor right safety alarm', '2023-12-15 11:04:15', '2023-12-15 11:04:17');
+INSERT INTO `alarmmg` VALUES (1846, 'A01 conveyor right safety alarm', '2023-12-15 11:04:27', '2023-12-15 11:31:52');
+INSERT INTO `alarmmg` VALUES (1847, '1# buffer safety alarm', '2023-12-15 11:04:27', '2023-12-15 11:31:52');
+INSERT INTO `alarmmg` VALUES (1848, '2# buffer safety alarm', '2023-12-15 11:06:47', '2023-12-15 11:06:49');
+INSERT INTO `alarmmg` VALUES (1849, 'A01 conveyor right safety alarm', '2023-12-15 11:32:51', '2023-12-15 11:32:54');
+INSERT INTO `alarmmg` VALUES (1850, 'A01 conveyor right safety alarm', '2023-12-15 11:33:03', '2023-12-15 11:33:06');
+INSERT INTO `alarmmg` VALUES (1851, '1# buffer safety alarm', '2023-12-15 11:33:04', '2023-12-15 11:33:06');
+INSERT INTO `alarmmg` VALUES (1852, 'A02 conveyor Left safety alarm', '2023-12-15 11:35:56', '2023-12-15 11:35:58');
+INSERT INTO `alarmmg` VALUES (1853, '2# buffer safety alarm', '2023-12-15 11:35:56', '2023-12-15 11:35:58');
+INSERT INTO `alarmmg` VALUES (1854, 'A02 conveyor Left safety alarm', '2023-12-15 11:36:12', '2023-12-15 11:36:16');
+INSERT INTO `alarmmg` VALUES (1855, '2# buffer safety alarm', '2023-12-15 11:36:12', '2023-12-15 11:36:16');
+INSERT INTO `alarmmg` VALUES (1856, 'A02 conveyor Left safety alarm', '2023-12-15 11:36:29', '2023-12-15 11:36:32');
+INSERT INTO `alarmmg` VALUES (1857, '2# buffer safety alarm', '2023-12-15 11:36:29', '2023-12-15 11:36:32');
+INSERT INTO `alarmmg` VALUES (1858, 'less glass than known', '2023-12-15 11:36:45', '2023-12-15 11:40:24');
+INSERT INTO `alarmmg` VALUES (1859, 'A01 servo turn error', '2023-12-15 13:53:38', '2023-12-15 13:58:17');
+INSERT INTO `alarmmg` VALUES (1860, 'A02 servo turn error', '2023-12-15 13:53:38', '2023-12-15 13:58:17');
+INSERT INTO `alarmmg` VALUES (1861, 'D01 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1862, 'D02 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1863, 'D03 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1864, 'D04 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1865, 'D05 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1866, 'D06 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1867, 'B01 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1868, 'B02 VFD error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1869, 'A01 servo travel error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1870, 'A02 servo travel error', '2023-12-15 13:58:17', '2023-12-15 13:58:25');
+INSERT INTO `alarmmg` VALUES (1871, 'emergency stop alarm', '2023-12-15 13:58:24', '2023-12-15 13:58:31');
+INSERT INTO `alarmmg` VALUES (1872, 'A01 servo travel error', '2023-12-15 13:59:02', '2023-12-15 13:59:15');
+INSERT INTO `alarmmg` VALUES (1873, 'A02 servo travel error', '2023-12-15 13:59:02', '2023-12-15 13:59:15');
+INSERT INTO `alarmmg` VALUES (1874, 'A01 servo turn error', '2023-12-15 13:59:16', '2023-12-15 13:59:20');
+INSERT INTO `alarmmg` VALUES (1875, 'A02 servo turn error', '2023-12-15 13:59:16', '2023-12-15 13:59:20');
+INSERT INTO `alarmmg` VALUES (1876, 'B01 servo travel error', '2023-12-15 13:59:16', '2023-12-15 13:59:20');
+INSERT INTO `alarmmg` VALUES (1877, 'B02 servo travel error', '2023-12-15 13:59:16', '2023-12-15 13:59:20');
+INSERT INTO `alarmmg` VALUES (1878, 'D01 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1879, 'D02 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1880, 'D03 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1881, 'D04 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1882, 'D05 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1883, 'D06 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1884, 'B01 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1885, 'B02 VFD error', '2023-12-15 14:00:49', '2023-12-15 14:01:57');
+INSERT INTO `alarmmg` VALUES (1886, 'A01 servo travel error', '2023-12-15 14:00:49', '2023-12-15 14:01:55');
+INSERT INTO `alarmmg` VALUES (1887, 'A02 servo travel error', '2023-12-15 14:00:49', '2023-12-15 14:01:55');
+INSERT INTO `alarmmg` VALUES (1888, 'emergency stop alarm', '2023-12-15 14:01:53', '2023-12-15 14:02:04');
+INSERT INTO `alarmmg` VALUES (1889, 'A01 servo turn error', '2023-12-15 14:02:50', '2023-12-15 14:02:51');
+INSERT INTO `alarmmg` VALUES (1890, 'A02 servo turn error', '2023-12-15 14:02:50', '2023-12-15 14:02:51');
+INSERT INTO `alarmmg` VALUES (1891, 'B01 servo travel error', '2023-12-15 14:02:50', '2023-12-15 14:02:51');
+INSERT INTO `alarmmg` VALUES (1892, 'B02 servo travel error', '2023-12-15 14:02:50', '2023-12-15 14:02:51');
+INSERT INTO `alarmmg` VALUES (1893, 'emergency stop alarm', '2023-12-15 14:03:10', '2023-12-15 14:03:15');
+INSERT INTO `alarmmg` VALUES (1894, 'A01 servo travel error', '2023-12-15 14:03:46', '2023-12-15 14:04:01');
+INSERT INTO `alarmmg` VALUES (1895, 'A02 servo travel error', '2023-12-15 14:03:50', '2023-12-15 14:04:01');
+INSERT INTO `alarmmg` VALUES (1896, 'A01 servo turn error', '2023-12-15 14:04:01', '2023-12-15 14:05:17');
+INSERT INTO `alarmmg` VALUES (1897, 'A02 servo turn error', '2023-12-15 14:04:01', '2023-12-15 14:04:03');
+INSERT INTO `alarmmg` VALUES (1898, 'emergency stop alarm', '2023-12-15 14:05:17', '2023-12-15 14:05:23');
+INSERT INTO `alarmmg` VALUES (1899, 'A02 servo travel error', '2023-12-15 14:05:56', '2023-12-15 14:06:30');
+INSERT INTO `alarmmg` VALUES (1900, 'A01 servo travel error', '2023-12-15 14:06:00', '2023-12-15 14:06:30');
+INSERT INTO `alarmmg` VALUES (1901, 'A01 servo turn error', '2023-12-15 14:06:31', '2023-12-15 14:10:52');
+INSERT INTO `alarmmg` VALUES (1902, 'A02 servo turn error', '2023-12-15 14:06:31', '2023-12-15 14:06:33');
+INSERT INTO `alarmmg` VALUES (1903, 'emergency stop alarm', '2023-12-15 14:10:52', '2023-12-15 14:10:57');
+INSERT INTO `alarmmg` VALUES (1904, 'A01 servo travel error', '2023-12-15 14:11:29', '2023-12-15 14:12:03');
+INSERT INTO `alarmmg` VALUES (1905, 'A02 servo travel error', '2023-12-15 14:11:29', '2023-12-15 14:12:03');
+INSERT INTO `alarmmg` VALUES (1906, 'A01 servo turn error', '2023-12-15 14:12:03', '2023-12-15 14:13:39');
+INSERT INTO `alarmmg` VALUES (1907, 'A01 servo travel error', '2023-12-15 14:14:40', '2023-12-15 14:14:49');
+INSERT INTO `alarmmg` VALUES (1908, 'A02 servo travel error', '2023-12-15 14:14:40', '2023-12-15 14:14:49');
+INSERT INTO `alarmmg` VALUES (1909, '2# buffer safety alarm', '2023-12-15 14:16:18', '2023-12-15 14:16:21');
+INSERT INTO `alarmmg` VALUES (1910, 'A02 conveyor Left safety alarm', '2023-12-15 14:16:19', '2023-12-15 14:16:21');
+INSERT INTO `alarmmg` VALUES (1911, 'A02 conveyor Left safety alarm', '2023-12-15 14:16:48', '2023-12-15 14:16:52');
+INSERT INTO `alarmmg` VALUES (1912, 'A02 conveyor Left safety alarm', '2023-12-15 15:06:23', '2023-12-15 15:06:25');
+INSERT INTO `alarmmg` VALUES (1913, '2# buffer safety alarm', '2023-12-15 15:06:23', '2023-12-15 15:06:25');
+INSERT INTO `alarmmg` VALUES (1914, 'A02 conveyor Left safety alarm', '2023-12-15 15:06:53', '2023-12-15 15:06:57');
+INSERT INTO `alarmmg` VALUES (1915, 'A02 conveyor Left safety alarm', '2023-12-15 15:14:23', '2023-12-15 15:14:27');
+INSERT INTO `alarmmg` VALUES (1916, '2# buffer safety alarm', '2023-12-15 15:14:24', '2023-12-15 15:14:27');
+INSERT INTO `alarmmg` VALUES (1917, 'A02 conveyor Left safety alarm', '2023-12-15 15:14:55', '2023-12-15 15:14:59');
+INSERT INTO `alarmmg` VALUES (1918, '2# buffer safety alarm', '2023-12-15 15:16:18', '2023-12-15 15:16:21');
+INSERT INTO `alarmmg` VALUES (1919, 'A02 conveyor Left safety alarm', '2023-12-15 15:16:19', '2023-12-15 15:16:21');
+INSERT INTO `alarmmg` VALUES (1920, 'A02 conveyor Left safety alarm', '2023-12-15 15:16:50', '2023-12-15 15:16:53');
+INSERT INTO `alarmmg` VALUES (1921, 'A01 conveyor right safety alarm', '2023-12-15 15:46:56', '2023-12-15 15:46:58');
+INSERT INTO `alarmmg` VALUES (1922, 'A01 conveyor right safety alarm', '2023-12-15 15:47:07', '2023-12-15 15:47:17');
+INSERT INTO `alarmmg` VALUES (1923, '1# buffer safety alarm', '2023-12-15 15:47:08', '2023-12-15 15:47:17');
+INSERT INTO `alarmmg` VALUES (1924, 'A01 conveyor right safety alarm', '2023-12-15 15:50:17', '2023-12-15 15:50:20');
+INSERT INTO `alarmmg` VALUES (1925, 'A01 conveyor right safety alarm', '2023-12-15 15:50:29', '2023-12-15 15:50:31');
+INSERT INTO `alarmmg` VALUES (1926, '1# buffer safety alarm', '2023-12-15 15:50:29', '2023-12-15 15:50:32');
+INSERT INTO `alarmmg` VALUES (1927, 'A01 conveyor right safety alarm', '2023-12-15 16:00:31', '2023-12-15 16:00:34');
+INSERT INTO `alarmmg` VALUES (1928, 'A01 conveyor right safety alarm', '2023-12-15 16:00:43', '2023-12-15 16:00:47');
+INSERT INTO `alarmmg` VALUES (1929, '1# buffer safety alarm', '2023-12-15 16:00:44', '2023-12-15 16:00:47');
+INSERT INTO `alarmmg` VALUES (1930, 'A01 conveyor right safety alarm', '2023-12-15 16:03:01', '2023-12-15 16:03:04');
+INSERT INTO `alarmmg` VALUES (1931, 'A01 conveyor right safety alarm', '2023-12-15 16:03:13', '2023-12-15 16:03:16');
+INSERT INTO `alarmmg` VALUES (1932, '1# buffer safety alarm', '2023-12-15 16:03:13', '2023-12-15 16:03:17');
+INSERT INTO `alarmmg` VALUES (1933, '2# buffer safety alarm', '2023-12-15 16:05:19', '2023-12-15 16:05:22');
+INSERT INTO `alarmmg` VALUES (1934, 'A02 conveyor Left safety alarm', '2023-12-15 16:05:20', '2023-12-15 16:05:22');
+INSERT INTO `alarmmg` VALUES (1935, 'A02 conveyor Left safety alarm', '2023-12-15 16:05:50', '2023-12-15 16:05:55');
+INSERT INTO `alarmmg` VALUES (1936, 'A02 conveyor Left safety alarm', '2023-12-15 16:08:34', '2023-12-15 16:08:36');
+INSERT INTO `alarmmg` VALUES (1937, '2# buffer safety alarm', '2023-12-15 16:08:34', '2023-12-15 16:08:36');
+INSERT INTO `alarmmg` VALUES (1938, 'A02 conveyor Left safety alarm', '2023-12-15 16:08:51', '2023-12-15 16:08:53');
+INSERT INTO `alarmmg` VALUES (1939, '2# buffer safety alarm', '2023-12-15 16:08:51', '2023-12-15 16:08:53');
+INSERT INTO `alarmmg` VALUES (1940, 'emergency stop alarm', '2023-12-15 16:09:08', '2023-12-15 16:09:22');
+INSERT INTO `alarmmg` VALUES (1941, 'less glass than known', '2023-12-15 16:19:51', '2023-12-15 16:21:50');
+INSERT INTO `alarmmg` VALUES (1942, 'emergency stop alarm', '2023-12-15 16:20:52', '2023-12-15 16:21:08');
+INSERT INTO `alarmmg` VALUES (1943, 'A02 servo turn error', '2023-12-15 16:21:51', '2023-12-15 16:21:53');
+INSERT INTO `alarmmg` VALUES (1944, 'A01 conveyor right safety alarm', '2023-12-15 16:24:24', '2023-12-15 16:24:26');
+INSERT INTO `alarmmg` VALUES (1945, '1# buffer safety alarm', '2023-12-15 16:24:38', '2023-12-15 16:24:40');
+INSERT INTO `alarmmg` VALUES (1946, 'A02 conveyor Left safety alarm', '2023-12-15 16:25:59', '2023-12-15 16:26:01');
+INSERT INTO `alarmmg` VALUES (1947, '2# buffer safety alarm', '2023-12-15 16:25:59', '2023-12-15 16:26:01');
+INSERT INTO `alarmmg` VALUES (1948, 'A02 conveyor Left safety alarm', '2023-12-15 16:26:30', '2023-12-15 16:26:33');
+INSERT INTO `alarmmg` VALUES (1949, 'A01 conveyor right safety alarm', '2023-12-15 16:27:56', '2023-12-15 16:27:59');
+INSERT INTO `alarmmg` VALUES (1950, 'A01 conveyor right safety alarm', '2023-12-15 16:28:08', '2023-12-15 16:28:11');
+INSERT INTO `alarmmg` VALUES (1951, '1# buffer safety alarm', '2023-12-15 16:28:09', '2023-12-15 16:28:11');
+INSERT INTO `alarmmg` VALUES (1952, 'A02 conveyor Left safety alarm', '2023-12-15 16:29:16', '2023-12-15 16:29:20');
+INSERT INTO `alarmmg` VALUES (1953, '2# buffer safety alarm', '2023-12-15 16:29:16', '2023-12-15 16:29:20');
+INSERT INTO `alarmmg` VALUES (1954, 'A02 conveyor Left safety alarm', '2023-12-15 16:29:48', '2023-12-15 16:29:51');
+INSERT INTO `alarmmg` VALUES (1955, 'A02 conveyor Left safety alarm', '2023-12-15 16:30:39', '2023-12-15 16:30:41');
+INSERT INTO `alarmmg` VALUES (1956, '2# buffer safety alarm', '2023-12-15 16:30:39', '2023-12-15 16:30:41');
+INSERT INTO `alarmmg` VALUES (1957, 'A02 conveyor Left safety alarm', '2023-12-15 16:31:09', '2023-12-15 16:31:13');
+INSERT INTO `alarmmg` VALUES (1958, 'A01 conveyor right safety alarm', '2023-12-15 16:33:11', '2023-12-15 16:33:15');
+INSERT INTO `alarmmg` VALUES (1959, 'A01 conveyor right safety alarm', '2023-12-15 16:33:23', '2023-12-15 16:33:26');
+INSERT INTO `alarmmg` VALUES (1960, '1# buffer safety alarm', '2023-12-15 16:33:23', '2023-12-15 16:33:26');
+INSERT INTO `alarmmg` VALUES (1961, 'A01 conveyor right safety alarm', '2023-12-15 16:34:17', '2023-12-15 16:34:19');
+INSERT INTO `alarmmg` VALUES (1962, 'A01 conveyor right safety alarm', '2023-12-15 16:34:28', '2023-12-15 16:34:31');
+INSERT INTO `alarmmg` VALUES (1963, '1# buffer safety alarm', '2023-12-15 16:34:29', '2023-12-15 16:34:31');
+INSERT INTO `alarmmg` VALUES (1964, 'A02 conveyor Left safety alarm', '2023-12-15 16:35:22', '2023-12-15 16:35:25');
+INSERT INTO `alarmmg` VALUES (1965, '2# buffer safety alarm', '2023-12-15 16:35:22', '2023-12-15 16:35:25');
+INSERT INTO `alarmmg` VALUES (1966, 'A02 conveyor Left safety alarm', '2023-12-15 16:35:53', '2023-12-15 16:35:57');
+INSERT INTO `alarmmg` VALUES (1967, 'A02 conveyor Left safety alarm', '2023-12-15 16:36:29', '2023-12-15 16:36:33');
+INSERT INTO `alarmmg` VALUES (1968, '2# buffer safety alarm', '2023-12-15 16:36:29', '2023-12-15 16:36:33');
+INSERT INTO `alarmmg` VALUES (1969, 'A02 conveyor Left safety alarm', '2023-12-15 16:36:59', '2023-12-15 16:37:03');
+INSERT INTO `alarmmg` VALUES (1970, 'A01 conveyor right safety alarm', '2023-12-15 16:42:08', '2023-12-15 16:42:11');
+INSERT INTO `alarmmg` VALUES (1971, 'A01 conveyor right safety alarm', '2023-12-15 16:42:19', '2023-12-15 16:42:22');
+INSERT INTO `alarmmg` VALUES (1972, '1# buffer safety alarm', '2023-12-15 16:42:19', '2023-12-15 16:42:22');
+INSERT INTO `alarmmg` VALUES (1973, 'D01 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1974, 'D02 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1975, 'D03 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1976, 'D04 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1977, 'D05 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1978, 'D06 VFD error', '2023-12-20 11:07:17', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1979, 'B01 VFD error', '2023-12-20 11:07:18', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1980, 'B02 VFD error', '2023-12-20 11:07:18', '2023-12-20 11:07:46');
+INSERT INTO `alarmmg` VALUES (1981, 'A01 servo travel error', '2023-12-20 11:07:18', '2023-12-20 11:07:44');
+INSERT INTO `alarmmg` VALUES (1982, 'A02 servo travel error', '2023-12-20 11:07:18', '2023-12-20 11:07:44');
+INSERT INTO `alarmmg` VALUES (1983, 'emergency stop alarm', '2023-12-20 11:07:44', '2023-12-20 11:07:49');
+INSERT INTO `alarmmg` VALUES (1984, 'emergency stop alarm', '2023-12-20 11:13:13', '2023-12-20 11:13:16');
+INSERT INTO `alarmmg` VALUES (1985, 'A02 servo turn error', '2023-12-20 11:15:15', '2023-12-20 11:18:01');
+INSERT INTO `alarmmg` VALUES (1986, 'emergency stop alarm', '2023-12-20 11:18:01', '2023-12-20 11:19:10');
+INSERT INTO `alarmmg` VALUES (1987, 'A02 servo turn error', '2023-12-20 11:20:46', '2023-12-20 11:23:13');
+INSERT INTO `alarmmg` VALUES (1988, 'A01 servo travel error', '2023-12-20 11:24:04', '2023-12-20 11:24:15');
+INSERT INTO `alarmmg` VALUES (1989, 'A02 servo travel error', '2023-12-20 11:24:04', '2023-12-20 11:24:15');
 
 -- ----------------------------
 -- Table structure for car_position
@@ -471,7 +719,7 @@
   `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '鍒涘缓鏃堕棿',
   `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '鏇存柊鏃堕棿',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鍟嗗搧鍒嗙被' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '鍟嗗搧鍒嗙被' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of category
@@ -515,7 +763,7 @@
   `last_product_count_date` date NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `device_id_idx`(`device_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 47 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 46 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of device
@@ -546,7 +794,7 @@
   `height` decimal(10, 2) NULL DEFAULT NULL,
   `Conversionrate` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of glass
@@ -586,7 +834,6 @@
 INSERT INTO `menu_list` VALUES (12, 6, '瑙掕壊鍒楄〃', '', 12, 'role', 1, '2021-11-28 14:30:28', '2021-11-28 15:06:04');
 INSERT INTO `menu_list` VALUES (49, 2, '鎶ヨ淇℃伅', '', 49, 'Electrical/alarm', 1, '2021-11-28 14:30:28', '2023-09-08 11:14:08');
 INSERT INTO `menu_list` VALUES (51, 2, '璁惧鐘舵��', NULL, 51, 'Electrical/State', 1, '2023-08-25 13:29:13', '2023-09-11 17:07:08');
-INSERT INTO `menu_list` VALUES (52, 2, '寮�鍏虫帶鍒�', NULL, 52, 'Electrical/Action', 1, '2023-08-25 13:29:18', '2023-09-12 17:02:54');
 INSERT INTO `menu_list` VALUES (53, 2, '鍙傛暟涓嬪彂', NULL, 53, 'Electrical/Servomanual', 1, '2023-08-25 13:29:22', '2023-12-07 09:10:42');
 INSERT INTO `menu_list` VALUES (54, 2, 'IO鐘舵��', NULL, 54, 'Electrical/Sign', 1, '2023-08-25 13:29:22', '2023-12-08 11:35:20');
 
@@ -1358,7 +1605,7 @@
   `order_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '璁㈠崟鍙�',
   `state` int NULL DEFAULT NULL COMMENT '鐘舵��(0锛氭寜姝よ鍗曞彿鍑虹墖锛�1缁撴潫鍑虹墖)',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of order_out
@@ -1458,8 +1705,8 @@
 -- ----------------------------
 -- Records of queue
 -- ----------------------------
-INSERT INTO `queue` VALUES (1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, '2023-12-08 14:03:55');
-INSERT INTO `queue` VALUES (2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 0, '2023-12-08 14:04:09');
+INSERT INTO `queue` VALUES (1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, '2023-12-12 16:35:47');
+INSERT INTO `queue` VALUES (2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, 0, '2023-12-12 16:36:09');
 
 -- ----------------------------
 -- Table structure for role
@@ -1515,7 +1762,7 @@
 INSERT INTO `role_menu_list` VALUES (19, 1, 50, 1, '2023-08-24 09:13:00', '2023-12-08 11:55:22');
 INSERT INTO `role_menu_list` VALUES (20, 1, 49, 1, '2023-08-24 10:08:38', '2023-12-08 11:55:22');
 INSERT INTO `role_menu_list` VALUES (21, 1, 51, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
-INSERT INTO `role_menu_list` VALUES (22, 1, 52, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
+INSERT INTO `role_menu_list` VALUES (22, 1, 52, 0, '2023-08-24 10:08:56', '2023-12-14 16:10:00');
 INSERT INTO `role_menu_list` VALUES (23, 1, 53, 1, '2023-08-24 10:08:56', '2023-12-08 11:55:22');
 INSERT INTO `role_menu_list` VALUES (25, 1, 60, 1, '2023-08-25 13:05:53', '2023-12-08 11:55:22');
 INSERT INTO `role_menu_list` VALUES (26, 1, 1, 1, '2023-08-28 14:29:17', '2023-12-08 11:55:22');
@@ -1530,7 +1777,7 @@
 INSERT INTO `role_menu_list` VALUES (42, 2, 50, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
 INSERT INTO `role_menu_list` VALUES (43, 2, 49, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
 INSERT INTO `role_menu_list` VALUES (44, 2, 51, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
-INSERT INTO `role_menu_list` VALUES (45, 2, 52, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
+INSERT INTO `role_menu_list` VALUES (45, 2, 52, 0, '2023-08-28 15:14:27', '2023-12-14 16:10:07');
 INSERT INTO `role_menu_list` VALUES (46, 2, 53, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
 INSERT INTO `role_menu_list` VALUES (47, 2, 60, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
 INSERT INTO `role_menu_list` VALUES (51, 2, 49, 1, '2023-08-28 15:14:27', '2023-12-08 14:18:20');
@@ -1563,85 +1810,85 @@
 -- ----------------------------
 -- Records of role_permission
 -- ----------------------------
-INSERT INTO `role_permission` VALUES (1, 1, 1, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (2, 1, 2, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (3, 1, 3, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (7, 1, 7, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (8, 1, 8, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (9, 1, 9, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (10, 1, 10, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (11, 1, 11, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (12, 1, 12, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (13, 1, 13, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (16, 1, 16, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (17, 1, 17, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (18, 1, 18, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (19, 1, 19, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (20, 1, 20, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (22, 1, 22, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (25, 1, 25, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (26, 1, 26, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (27, 1, 27, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (28, 1, 28, 1, '2021-11-28 15:07:54', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (37, 2, 25, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (38, 2, 26, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (39, 2, 27, 1, '2021-11-28 16:30:57', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (40, 2, 28, 1, '2021-11-28 16:32:35', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (41, 2, 22, 1, '2021-11-28 19:57:35', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (42, 1, 30, 1, '2023-08-24 08:55:34', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (43, 1, 29, 1, '2023-08-24 08:56:15', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (44, 1, 31, 1, '2023-08-24 08:56:23', '2023-12-08 11:53:19', NULL);
-INSERT INTO `role_permission` VALUES (53, 2, 2, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (54, 2, 3, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (56, 2, 8, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (57, 2, 9, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (58, 2, 10, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (61, 2, 13, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (62, 2, 16, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (63, 2, 17, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (64, 2, 18, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (65, 2, 19, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (66, 2, 20, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (67, 2, 22, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (68, 2, 25, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-12-08 14:19:11', NULL);
-INSERT INTO `role_permission` VALUES (75, 1, 32, 1, '2023-12-05 08:54:59', '2023-12-05 08:54:59', NULL);
-INSERT INTO `role_permission` VALUES (76, 1, 33, 1, '2023-12-05 08:55:04', '2023-12-05 08:55:04', NULL);
-INSERT INTO `role_permission` VALUES (77, 1, 34, 1, '2023-12-05 08:55:09', '2023-12-05 08:55:09', NULL);
-INSERT INTO `role_permission` VALUES (78, 1, 35, 1, '2023-12-05 14:54:43', '2023-12-05 14:54:46', NULL);
-INSERT INTO `role_permission` VALUES (79, 2, 33, 1, '2023-12-08 10:58:25', '2023-12-08 11:42:12', NULL);
-INSERT INTO `role_permission` VALUES (80, 2, 34, 1, '2023-12-08 10:59:15', '2023-12-08 11:42:12', NULL);
-INSERT INTO `role_permission` VALUES (81, 2, 35, 1, '2023-12-08 10:59:23', '2023-12-08 11:42:12', NULL);
-INSERT INTO `role_permission` VALUES (82, 5, 33, 1, '2023-12-08 10:59:33', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (83, 5, 34, 0, '2023-12-08 10:59:39', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (84, 5, 35, 0, '2023-12-08 10:59:51', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (85, 5, 32, 0, '2023-12-08 11:08:54', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (86, 5, 1, 1, '2023-12-08 11:45:47', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (87, 5, 7, 1, '2023-12-08 11:45:55', '2023-12-08 11:48:26', NULL);
-INSERT INTO `role_permission` VALUES (89, 5, 2, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (90, 5, 3, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (91, 5, 8, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (92, 5, 9, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (93, 5, 10, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (94, 5, 13, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (95, 5, 16, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (96, 5, 17, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (97, 5, 18, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (98, 5, 19, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (99, 5, 20, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (100, 5, 22, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (101, 5, 25, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (102, 5, 26, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (103, 5, 27, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (104, 5, 28, 1, '2021-11-28 15:07:54', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (105, 5, 30, 1, '2023-08-24 08:55:34', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (106, 5, 29, 1, '2023-08-24 08:56:15', '2023-12-08 14:18:38', NULL);
-INSERT INTO `role_permission` VALUES (107, 5, 1, 1, '2023-08-30 16:29:46', '2023-12-08 14:18:38', NULL);
+INSERT INTO `role_permission` VALUES (1, 1, 1, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (2, 1, 2, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (3, 1, 3, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (7, 1, 7, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (8, 1, 8, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (9, 1, 9, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (10, 1, 10, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (11, 1, 11, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (12, 1, 12, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (13, 1, 13, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (16, 1, 16, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (17, 1, 17, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (18, 1, 18, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (19, 1, 19, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (20, 1, 20, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (22, 1, 22, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (25, 1, 25, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (26, 1, 26, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (27, 1, 27, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (28, 1, 28, 1, '2021-11-28 15:07:54', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (37, 2, 25, 1, '2021-11-28 16:30:57', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (38, 2, 26, 1, '2021-11-28 16:30:57', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (39, 2, 27, 1, '2021-11-28 16:30:57', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (40, 2, 28, 1, '2021-11-28 16:32:35', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (41, 2, 22, 1, '2021-11-28 19:57:35', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (42, 1, 30, 1, '2023-08-24 08:55:34', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (43, 1, 29, 1, '2023-08-24 08:56:15', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (44, 1, 31, 1, '2023-08-24 08:56:23', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (53, 2, 2, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (54, 2, 3, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (56, 2, 8, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (57, 2, 9, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (58, 2, 10, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (61, 2, 13, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (62, 2, 16, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (63, 2, 17, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (64, 2, 18, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (65, 2, 19, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (66, 2, 20, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (67, 2, 22, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (68, 2, 25, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (69, 2, 26, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (70, 2, 27, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (71, 2, 28, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (72, 2, 30, 1, '2023-08-24 08:55:34', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (73, 2, 29, 1, '2023-08-24 08:56:15', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (74, 2, 1, 1, '2023-08-30 16:29:46', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (75, 1, 32, 1, '2023-12-05 08:54:59', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (76, 1, 33, 1, '2023-12-05 08:55:04', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (77, 1, 34, 1, '2023-12-05 08:55:09', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (78, 1, 35, 1, '2023-12-05 14:54:43', '2023-12-12 10:51:42', 'admin');
+INSERT INTO `role_permission` VALUES (79, 2, 33, 1, '2023-12-08 10:58:25', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (80, 2, 34, 1, '2023-12-08 10:59:15', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (81, 2, 35, 1, '2023-12-08 10:59:23', '2023-12-12 10:57:16', 'user2');
+INSERT INTO `role_permission` VALUES (82, 5, 33, 1, '2023-12-08 10:59:33', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (83, 5, 34, 0, '2023-12-08 10:59:39', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (84, 5, 35, 0, '2023-12-08 10:59:51', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (85, 5, 32, 0, '2023-12-08 11:08:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (86, 5, 1, 1, '2023-12-08 11:45:47', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (87, 5, 7, 1, '2023-12-08 11:45:55', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (89, 5, 2, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (90, 5, 3, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (91, 5, 8, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (92, 5, 9, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (93, 5, 10, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (94, 5, 13, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (95, 5, 16, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (96, 5, 17, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (97, 5, 18, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (98, 5, 19, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (99, 5, 20, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (100, 5, 22, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (101, 5, 25, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (102, 5, 26, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (103, 5, 27, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (104, 5, 28, 1, '2021-11-28 15:07:54', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (105, 5, 30, 1, '2023-08-24 08:55:34', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (106, 5, 29, 1, '2023-08-24 08:56:15', '2023-12-12 10:57:25', 'user3');
+INSERT INTO `role_permission` VALUES (107, 5, 1, 1, '2023-08-30 16:29:46', '2023-12-12 10:57:25', 'user3');
 
 -- ----------------------------
 -- Table structure for storage_cage
@@ -2105,7 +2352,7 @@
   `cageno` int NULL DEFAULT NULL COMMENT '绗煎瓙鍙�',
   PRIMARY KEY (`id`) USING BTREE,
   INDEX `raw_package_id1`(`raw_package_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 492 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 491 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of storage_rack
@@ -2545,7 +2792,7 @@
   `finsh_time` datetime(0) NULL DEFAULT NULL COMMENT '浠诲姟缁撴潫鏃堕棿',
   `glass_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 67 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 66 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of storage_task

--
Gitblit v1.8.0