From 1de312a18d164c2fa3718a1a975b8c5804723bcf Mon Sep 17 00:00:00 2001
From: clll <1320612696@qq.com>
Date: 星期一, 27 十一月 2023 13:46:12 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/home/index.vue                                                 |  564 ++++++---
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java     |   82 +
 springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java     |    9 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java   |    8 
 springboot-vue3/src/main/java/com/example/springboot/component/S7control.java         |   66 +
 CanadaMes-ui/src/views/Electrical/Parameter2.vue                                      |  300 ++--
 CanadaMes-ui/src/views/Electrical/State.vue                                           |    3 
 CanadaMes-ui/src/views/Electrical/Parameter.vue                                       |   30 
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java          |   42 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java |  238 ++++
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java           |   36 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java           |   68 
 CanadaMes-ui/src/views/Electrical/alarm.vue                                           |    3 
 CanadaMes-ui/src/api/home.js                                                          |   42 
 springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java            |  101 +
 CanadaMes-ui/src/configuration/parameter2.json                                        |  192 +-
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java     |   48 
 springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java |   34 
 springboot-vue3/src/main/java/com/example/springboot/entity/north_glass_buffer1.java  |   59 
 CanadaMes-ui/src/configuration/Positioning1.json                                      |   17 
 CanadaMes-ui/src/views/Electrical/Sign.vue                                            |    3 
 .vscode/settings.json                                                                 |    2 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java           |  238 ++-
 springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java   |   10 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java          |  294 ++--
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java        |  103 +
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java   |  129 ++
 CanadaMes-ui/src/lang/locales/zh-CN.json                                              |   51 
 springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java            |   66 +
 springboot-vue3/src/main/java/com/example/springboot/entity/out_slice.java            |  101 +
 .vscode/launch.json                                                                   |   52 
 CanadaMes-ui/src/lang/locales/en-US.json                                              |   51 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                  |  358 ++---
 33 files changed, 2,207 insertions(+), 1,193 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
index 9e59f51..a0df939 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,28 +1,28 @@
 {
-  // 浣跨敤 IntelliSense 浜嗚В鐩稿叧灞炴�с�� 
-  // 鎮仠浠ユ煡鐪嬬幇鏈夊睘鎬х殑鎻忚堪銆�
-  // 娆蹭簡瑙f洿澶氫俊鎭紝璇疯闂�: https://go.microsoft.com/fwlink/?linkid=830387
-  "version": "0.2.0",
-  "configurations": [
-    {
-      "type": "java",
-      "name": "Current File",
-      "request": "launch",
-      "mainClass": "${file}"
-    },
-    {
-      "type": "java",
-      "name": "MyGenerator",
-      "request": "launch",
-      "mainClass": "MyGenerator",
-      "projectName": "canadames"
-    },
-    {
-      "type": "java",
-      "name": "AuthorityApplication",
-      "request": "launch",
-      "mainClass": "com.example.springboot.AuthorityApplication",
-      "projectName": "canadames"
-    }
-  ]
+    // 浣跨敤 IntelliSense 浜嗚В鐩稿叧灞炴�с�� 
+    // 鎮仠浠ユ煡鐪嬬幇鏈夊睘鎬х殑鎻忚堪銆�
+    // 娆蹭簡瑙f洿澶氫俊鎭紝璇疯闂�: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "type": "java",
+            "name": "Current File",
+            "request": "launch",
+            "mainClass": "${file}"
+        },
+        {
+            "type": "java",
+            "name": "MyGenerator",
+            "request": "launch",
+            "mainClass": "MyGenerator",
+            "projectName": "springboot-vue3"
+        },
+        {
+            "type": "java",
+            "name": "AuthorityApplication",
+            "request": "launch",
+            "mainClass": "com.example.springboot.AuthorityApplication",
+            "projectName": "springboot-vue3"
+        }
+    ]
 }
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index dc3b895..c5f3f6b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,3 @@
 {
-  "java.configuration.updateBuildConfiguration": "interactive"
+    "java.configuration.updateBuildConfiguration": "interactive"
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 4a35acf..05cc8b4 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -154,4 +154,44 @@
         method: 'post',
         data: ""
     })
-}
\ No newline at end of file
+}
+
+export function SelectGlassNo(orderid) {
+    return request({
+        url: '/home/SelectGlassNo?orderid=' + orderid,
+        method: 'post',
+        data: ""
+    })
+}
+
+export function SelectAluminumFrameInfoById(FrameBarcode) {
+    return request({
+        url: '/home/SelectAluminumFrameInfoById?FrameBarcode=' + FrameBarcode,
+        method: 'post',
+        data: ""
+    })
+}
+
+export function SelectProductionqueue() {
+    return request({
+        url: '/home/SelectProductionqueue',
+        method: 'post',
+        data: ""
+    })
+}
+
+export function DeleteProductionQueueGlass(id) {
+    return request({
+        url: '/home/DeleteProductionQueueGlass?id='+id,
+        method: 'post',
+        data: ""
+    })
+}
+
+export function AddOutSliceS(data) {
+    return request({
+        url: '/home/AddOutSliceS',
+        method: 'post',
+        data
+    })
+}
diff --git a/CanadaMes-ui/src/configuration/Positioning1.json b/CanadaMes-ui/src/configuration/Positioning1.json
index e3c9dcb..740a03a 100644
--- a/CanadaMes-ui/src/configuration/Positioning1.json
+++ b/CanadaMes-ui/src/configuration/Positioning1.json
@@ -1,4 +1,12 @@
 [
+  [{
+    "name": "鏍煎瓙闂磋窛",
+    "read": 33,
+    "sending": 0,
+    "type": "0",
+    "value":"0"
+    
+  }],
     [{
       "name": "瀛樼墖鎺ョ墖鍦板潃",
       "read": 33,
@@ -15,14 +23,7 @@
       "value":"0"
       
     }],
-    [{
-      "name": "鏍煎瓙闂磋窛",
-      "read": 33,
-      "sending": 0,
-      "type": "0",
-      "value":"0"
-      
-    }],
+    
 
     [
         {
diff --git a/CanadaMes-ui/src/configuration/parameter2.json b/CanadaMes-ui/src/configuration/parameter2.json
index dfadfb6..e7956d1 100644
--- a/CanadaMes-ui/src/configuration/parameter2.json
+++ b/CanadaMes-ui/src/configuration/parameter2.json
@@ -3,7 +3,7 @@
     [
       {
         "button": {
-          "name": "D03鎵嬪姩鐘舵��",
+          "name": "D01鎵嬪姩鐘舵��",
           "value":0,
       "address":"DB10.0"
       },"type": "4"
@@ -26,7 +26,7 @@
       ,[
       {
         "button": {
-          "name": "D04鎵嬪姩鐘舵��",
+          "name": "D02鎵嬪姩鐘舵��",
           "value":0,
       "address":"DB10.0"
       },"type": "4"
@@ -50,6 +50,57 @@
     ,[
       {
         "button": {
+          "name": "D03鎵嬪姩鐘舵��",
+          "value":0,
+      "address":"DB10.0"
+      },"type": "4"
+      },
+      {
+        "button": {
+          "name": "娓呴櫎ID",
+          "value":0,
+      "address":"DB10.0"
+        },"type": "3"
+      },
+      {
+        "name": "ID",
+        "read": 33,
+        "sending": 0,
+        "type": "0",
+        "value":0
+   
+      }
+    ]
+    ,[
+      {
+        "button": {
+          "name": "D04鎵嬪姩鐘舵��",
+          "value":0,
+      "address":"DB10.0"
+      },"type": "4"
+      },
+      {
+        "button": {
+          "name": "娓呴櫎ID",
+          "value":0,
+      "address":"DB10.0"
+        },"type": "3"
+      },
+      {
+        "name": "ID",
+        "read": 33,
+        "sending": 0,
+        "type": "0",
+        "value":0
+   
+      }
+      
+     
+    ]
+
+     ,[
+      {
+        "button": {
           "name": "D05鎵嬪姩鐘舵��",
           "value":0,
       "address":"DB10.0"
@@ -70,6 +121,8 @@
         "value":0
    
       }
+      
+     
     ]
     ,[
       {
@@ -96,9 +149,41 @@
       }
       
      
+    ] ,[
+      {
+        "button": {
+          "name": "A01鎵嬪姩鐘舵��",
+          "value":0,
+      "address":"DB10.0"
+      },"type": "4"
+      },
+      {
+        "button": {
+          "name": "娓呴櫎ID",
+          "value":0,
+      "address":"DB10.0"
+        },"type": "3"
+      },
+      {
+        "name": "ID1",
+        "read": 33,
+        "sending": 0,
+        "type": "0",
+        "value":0
+   
+      },{
+        "name": "ID2",
+        "read": 33,
+        "sending": 0,
+        "type": "0",
+        "value":0
+   
+      }
+      
+     
     ]
-
-     ,[
+    
+    ,[
       {
         "button": {
           "name": "A02鎵嬪姩鐘舵��",
@@ -130,7 +215,7 @@
           "name": "B01鎵嬪姩鐘舵��",
           "value":0,
       "address":"DB10.0"
-      },"type": "4"
+        },"type": "4"
       },
       {
         "button": {
@@ -149,7 +234,7 @@
       }
       
      
-    ] ,[
+    ],[
       {
         "button": {
           "name": "B02鎵嬪姩鐘舵��",
@@ -173,91 +258,6 @@
    
       }
       
-     
-    ]
-    
-    ,[
-      {
-        "button": {
-          "name": "D01鎵嬪姩鐘舵��",
-          "value":0,
-      "address":"DB10.0"
-      },"type": "4"
-      },
-      {
-        "button": {
-          "name": "娓呴櫎ID",
-          "value":0,
-      "address":"DB10.0"
-        },"type": "3"
-      },
-      {
-        "name": "ID",
-        "read": 33,
-        "sending": 0,
-        "type": "0",
-        "value":0
-   
-      }
-      
-     
-    ]
-    ,[
-      {
-        "button": {
-          "name": "D02鎵嬪姩鐘舵��",
-          "value":0,
-      "address":"DB10.0"
-        },"type": "4"
-      },
-      {
-        "button": {
-          "name": "娓呴櫎ID",
-          "value":0,
-      "address":"DB10.0"
-        },"type": "3"
-      },
-      {
-        "name": "ID",
-        "read": 33,
-        "sending": 0,
-        "type": "0",
-        "value":0
-   
-      }
-      
-     
-    ],[
-      {
-        "button": {
-          "name": "A01鎵嬪姩鐘舵��",
-          "value":0,
-      "address":"DB10.0"
-      },"type": "4"
-      },
-      {
-        "button": {
-          "name": "娓呴櫎ID",
-          "value":0,
-      "address":"DB10.0"
-        },"type": "3"
-      },
-      {
-        "name": "ID1",
-        "read": 33,
-        "sending": 0,
-        "type": "0",
-        "value":0
-   
-      },
-      {
-        "name": "ID2",
-        "read": 33,
-        "sending": 0,
-        "type": "0",
-        "value":0
-   
-      }
       
      
     ]
@@ -265,7 +265,7 @@
     ,[
       {
         "name": "鎵弿鏋壂鐮佺殑ID",
-        "read": 33,
+        "read": 66,
         "sending": 0,
         "type": "0",
         "value":0
@@ -277,7 +277,7 @@
     ,[
       {
         "name": "A01褰撳墠鏍煎瓙",
-        "read": 33,
+        "read": 333,
         "sending": 0,
         "type": "0",
         "value":0
@@ -285,7 +285,7 @@
       },
       {
         "name": "A02鎵�鍦ㄦ牸瀛�",
-        "read": 33,
+        "read": 333,
         "sending": 0,
         "type": "0",
         "value":0
@@ -293,7 +293,7 @@
       },
       {
         "name": "B01鎵�鍦ㄦ牸瀛�",
-        "read": 33,
+        "read": 333,
         "sending": 0,
         "type": "0",
         "value":0
@@ -301,7 +301,7 @@
       },
       {
         "name": "B02鎵�鍦ㄦ牸瀛�",
-        "read": 33,
+        "read": 333,
         "sending": 0,
         "type": "0",
         "value":0
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index 4cb0513..a3374c9 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -227,8 +227,8 @@
 "deleteCancelledMessage": "Deletion cancelled",
 
 
-  "Enter the glass lD":"Enter the glass lD",
-  "Infeed barcodid":"Infeed barcodid",
+  "Enter the glass barcode":"Enter the glass barcode",
+  "Manually Infeed Glass":"Manually Infeed Glass",
   "Enter the order number":"Enter the order number",
   "Exit the glass by order number":"Exit the glass by order number",
   "Please confirm the glass information":"Please confirm the glass information",
@@ -236,33 +236,30 @@
   "Alarm Information":"Alarm Information",
   "Cage Details":"Cage Details",
   "order":"order",
-  "length":"length",
-  "width":"width",
+  "Length":"Length",
+  "Width":"Width",
   "Operate":"Operate",
-  "end task":"end task",
+  "Terminate Task":"Terminate Task",
   "cancel":"cancel",
   "confirm":"confirm",
-  "number":"number",
-  "Outfeed Barcodid":"Outfeed Barcodid",
-  "Infeed Barcodid":"Infeed Barcodid",
-  "The Cage number being used":"The Cage Number being used",
-  "The Slot number being used":"The Slot Number being used",
-  "Order Nmuber":"Order Nmuber",
-  "Length and Width":"Length and Width",
+  "Number":"Number",
+  "Outfeed glass barcode":"Outfeed glass barcode",
+  "Infeed glass barcode":"Infeed glass barcode",
+  "Cage No":"Cage No",
+  "Slot No":"Slot No",
+  "Dim":"Dim",
   "id":"id",
   "content":"content",
   "timeon":"timeon",
   "endTime":"endTime",
 
-  "The Cage number":"The Cage number",
   "The Side":"The Side",
-  "The Slot Number":"The Slot Number",
-  "Barcodid":"Barcodid",
-  "Order Number":"Order Number",
-  "List Number":"List Number",
-  "Box Number":"Box Number",
-  "delete":"delete",
-  "out":"out",
+  "barcode":"barcode",
+  "Order No":"Order No",
+  "List No":"List No",
+  "Box No":"Box No",
+  "Delete":"Delete",
+  "Out":"Out",
 
   "Operation successful":"Operation successful",
   "Operation canceled":"Operation canceled",
@@ -273,7 +270,6 @@
   "No delete allowed":"No delete allowed",
   "No out allowed":"No out allowed",
   "Are you sure to perform this operation ?":"Are you sure to perform this operation ?",
-  "prompt":"prompt",
   "Yes":"Yes",
   
 
@@ -283,13 +279,13 @@
   "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",
+  "Increase":"Increase",
   "Enable":"Enable",
   "Disable":"Disable",
   "Usage":"Usage",
   "Space (Pieces)":"Space (Pieces)",
   "This glass is already in the cage":"This glass is already in the cage",
-  "Enter the Order lD":"Enter the Order lD",
+  "Enter the Order No":"Enter the Order No",
   "OrderInfo":"OrderInfo",
   "Query":"Query",
   "permission update":"permission update",
@@ -302,6 +298,13 @@
   "Clear Current":"Clear Current",
   "Confirm Modification":"Confirm modification",
   "The glass ID already exists in the loading queue":"The glass ID already exists in the loading queue",
-  "This glass ID already exists in the sorting cage":"This glass ID already exists in the sorting cage"
+  "This glass ID already exists in the sorting cage":"This glass ID already exists in the sorting cage",
+  "Production queue":"Production queue",
+  "Enter the Frame No":"Enter the Frame No",
+  "Frame No":"Frame No",
+  "Glass information corresponding to aluminum frame":"Glass information corresponding to aluminum frame",
+  "In the cage":"In the cage",
+  "Flip":"Flip",
+  "In the queue":"In the queue"
 
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 8d4f7e1..314cee4 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -215,8 +215,8 @@
   "cancelButtonText": "鍙栨秷",
   "deleteSuccessMessage": "鍒犻櫎鎴愬姛",
   "deleteCancelledMessage": "宸插彇娑堝垹闄ゆ搷浣�",
-  "Enter the glass lD": "杈撳叆鐜荤拑id",
-  "Infeed barcodid": "鎵嬪姩涓婄墖",
+  "Enter the glass barcode": "杈撳叆鐜荤拑id",
+  "Infeed Barcodeid": "鎵嬪姩涓婄墖",
   "Enter the order number": "杈撳叆璁㈠崟鍙�",
   "Exit the glass by order number": "鎸夎鍗曞嚭鐗�",
   "Please confirm the glass information": "璇风‘璁ょ幓鐠冧俊鎭�",
@@ -224,32 +224,28 @@
   "Alarm Information": "鎶ヨ淇℃伅",
   "Cage Details": "鐞嗙墖绗艰鎯�",
   "order": "璁㈠崟",
-  "length": "闀�",
-  "width": "瀹�",
+  "Length": "闀�",
+  "Width": "瀹�",
   "Operate": "鎿嶄綔",
+  "Terminate Task":"缁撴潫浠诲姟",
   "end task": "瀹屾垚浠诲姟",
-  "cancel": "鍙栨秷",
-  "confirm": "纭",
-  "number": "鏁伴噺",
-  "Outfeed Barcodid": "鍑虹墖鐜荤拑id",
-  "Infeed Barcodid": "杩涚墖鐜荤拑id",
-  "The Cage number being used": "绗煎瓙",
-  "The Slot number being used": "鏍煎瓙",
-  "Order Nmuber": "璁㈠崟缂栧彿",
-  "List Number": "鍒楄〃缂栧彿",
-  "Box Number": "绠卞瓙缂栧彿",
-  "Length and Width": "灏哄",
+  "Number": "鏁伴噺",
+  "Outfeed glass barcode": "鍑虹墖鐜荤拑id",
+  "Infeed glass barcode": "杩涚墖鐜荤拑id",
+  "Order No": "璁㈠崟缂栧彿",
+  "List No": "鍒楄〃缂栧彿",
+  "Box No": "绠卞瓙缂栧彿",
+  "Dim": "灏哄",
   "id": "id",
   "content": "鍐呭",
   "timeon": "鎶ヨ鏃堕棿",
   "endTime": "缁撴潫鏃堕棿",
-  "The Cage number": "绗煎瓙",
+  "Cage No": "绗煎瓙",
   "The Side": "鍐呭渚�",
-  "The Slot Number": "鏍煎瓙",
-  "Barcodid": "鐜荤拑id",
-  "Order Number": "璁㈠崟",
-  "delete": "鍒犻櫎",
-  "out": "鍑虹墖",
+  "Slot No": "鏍煎瓙",
+  "Barcode": "鐜荤拑id",
+  "Delete": "鍒犻櫎",
+  "Out": "鍑虹墖",
   "Operation successful": "鎿嶄綔鎴愬姛",
   "Operation canceled": "鎿嶄綔鍙栨秷",
   "There is no such order": "娌℃湁姝よ鍗曠殑鐜荤拑",
@@ -276,13 +272,13 @@
   "DataBase Connection failed": "鏁版嵁搴撹繛鎺ュけ璐�",
   "Distribute parameters": "涓嬪彂鍙傛暟",
   "The glass size is not within the range": "鐜荤拑灏哄涓嶅湪鑼冨洿鍐�",
-  "increase": "娣诲姞",
+  "Increase": "娣诲姞",
   "Enable": "鍚敤",
   "Disable": "绂佺敤",
   "Usage": "浣跨敤鐜�",
   "Space (Pieces)": "绌洪棿(鐗囨暟)",
   "This glass is already in the cage": "绗煎瓙閲屽凡鏈夋鐜荤拑",
-  "Enter the Order lD": "璇疯緭鍏ヨ鍗昳d",
+  "Enter the Order No": "璇疯緭鍏ヨ鍗昳d",
   "OrderInfo": "璁㈠崟淇℃伅",
   "Query": "鏌ヨ",
   "permission update": "鏉冮檺缂栬緫",
@@ -296,6 +292,15 @@
   "Confirm Modification": "纭淇敼",
   "The glass ID already exists in the loading queue": "涓婄墖闃熷垪宸插瓨鍦ㄦ鐜荤拑id",
   "This glass ID already exists in the sorting cage": "鐞嗙墖绗煎唴宸插瓨鍦ㄦ鐜荤拑id",
+  "Production queue":"涓婄墖闃熷垪",
+  "Enter the Aluminum Frame No":"璇疯緭鍏ラ摑妗唅d",
+  "Frame No":"閾濇id",
+  "Glass information corresponding to aluminum frame":"閾濇瀵瑰簲鐨勭幓鐠冧俊鎭�",
+  "In the cage":"鍦ㄧ鍐�",
+  "Flip":"缈昏浆",
+  "In the queue":"鍦ㄩ槦鍒�",
+  "Enter the Frame No":"璇疯緭鍏ラ摑妗唅d",
+  "Manually Infeed Glass":"鎵嬪姩杩涚墖",
   "langparameter": {
     "conveyor Velocity(Auto FAST)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄦ參閫�",
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter.vue b/CanadaMes-ui/src/views/Electrical/Parameter.vue
index 46d671f..5fcdbab 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter.vue
@@ -12,6 +12,8 @@
       }}</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
+       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
     </el-breadcrumb>
 
     <div>Parameter</div>
@@ -57,18 +59,18 @@
       record: {
         params: [100, 200, 10, 10, 10, 10],
         xyData: [
-          { name: "conveyor Velocity(Auto FAST)", value: 0, value2: 1, unit: "m/min" },
-          { name: "conveyor Velocity(Auto SLOW)", value: 0, value2: 1, unit: "m/min" },
-          { name: "conveyor Velocity(Manual)", value: 0, value2: 1, unit: "m/min" },
-          { name: "A01 A02 TURN JOG Velocity", value: 0, value2: 1, unit: "mm/S" },
-          { name: "A01 A02 TRAVEL JOG Velocity", value: 0, value2: 1, unit: "mm/S" },
-          { name: "B01 B02 TRAVEL JOG Velocity", value: 0, value2: 1, unit: "mm/S" },
-          { name: "A01 A02 TURN POS Velocity AUTO", value: 0, value2: 1, unit: "mm/S" },
-          { name: "A01 A02 TURN POS Velocity manual", value: 0, value2: 1, unit: "mm/S" },
-          { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0, value2: 1, unit: "mm/S" },
-          { name: "A01 A02 TRAVEL POS Velocity manual", value: 0, value2: 1, unit: "mm/S" },
-          { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0, value2: 1, unit: "mm/S" },
-          { name: "B01 B02 TRAVEL POS Velocity manual", value: 0, value2: 1, unit: "mm/S" }
+          { name: "conveyor Velocity(Auto FAST)", value: 0, value2: 0, unit: "m/min" },
+          { name: "conveyor Velocity(Auto SLOW)", value: 0, value2: 0, unit: "m/min" },
+          { name: "conveyor Velocity(Manual)", value: 0, value2: 0, unit: "m/min" },
+          { name: "A01 A02 TURN JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
+          { name: "A01 A02 TRAVEL JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
+          { name: "B01 B02 TRAVEL JOG Velocity", value: 0, value2: 0, unit: "mm/S" },
+          { name: "A01 A02 TURN POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
+          { name: "A01 A02 TURN POS Velocity manual", value: 0, value2: 0, unit: "mm/S" },
+          { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
+          { name: "A01 A02 TRAVEL POS Velocity manual", value: 0, value2: 0, unit: "mm/S" },
+          { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0, value2: 0, unit: "mm/S" },
+          { name: "B01 B02 TRAVEL POS Velocity manual", value: 0, value2: 0, unit: "mm/S" }
         ],
         canshu: []
       },
@@ -218,6 +220,10 @@
   border: 1px solid black;
   border: none;
 }
+.special-class{
+
+
+}
 
 .in_mc {
 
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter2.vue b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
index b16bb05..9497c30 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -1,92 +1,74 @@
 <template>
-  <div class="app">
+    <div class="app">
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
-      }}</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
-      }}</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
-      }}</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
-      }}</router-link>
-      <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
-      }}</router-link>
+        <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
+        }}</router-link>
+        <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
+        }}</router-link>
+        <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
+        }}</router-link>
+        <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
+        }}</router-link>
+        <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
+        }}</router-link>
+         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
+      </el-breadcrumb>
+  
+      <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+        <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{ $t('Servomanualone')
+        }}</router-link>
+          <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+          }}</router-link>
+         <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
+          }}</router-link> 
+            <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning1')
+          }}</router-link>
+            <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning2')
+          }}</router-link>
     </el-breadcrumb>
-
-    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
-      }}</router-link>
-      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualJog')
-      }}</router-link>
-    </el-breadcrumb>
-
-    <el-row :gutter="20">
+  
+    <el-row :gutter="40">
       <el-col :span="6" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
-        <el-card class="json-block" style="width:260px;">
+        <el-card class="json-block"  style="width:260px;">
           <div class="button-row" style="display: flex; justify-content: space-between;">
             <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
-              <span v-if="item.title" :name="item.title.name" class="action-button">{{ item.title.name }}</span>
+              <span v-if="item.title" :name="item.title.name" class="action-button" >{{ item.title.name }}</span>
             </div>
           </div>
 
           <div class="button-row" style="display: flex; justify-content: space-between;">
             <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
               <el-button v-if="item.button" :name="item.button.name" v-model="item.button.value" class="action-button"
-                @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name)"
-                :class="{ 'green-button': item.button.value === 0 && item.button.name !== '娓呴櫎ID', 'red-button': item.button.value === 1 && item.button.name !== '娓呴櫎ID' }">{{
-                  item.button.name }}</el-button>
+  @click="updateButtonValue(dataGroup, itemIndex);submitDataToBackend(item.button.name)"
+  :class="{ 'green-button': item.button.value === 0  && item.button.name !== '娓呴櫎ID','red-button': item.button.value === 1 && item.button.name !== '娓呴櫎ID' }">{{ item.button.name }}</el-button>
             </div>
           </div>
           <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container">
             <div class="item-row">
 
               <span class="name" style="width:150px;">{{ item.name }}</span>
-              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly" style="width:150px;"
-                class="input-box"></el-input>
+              <el-input v-if="item.type === '0'" v-model="item.value" readonly="readonly"    style="width:150px;" class="input-box"></el-input>
             </div>
           </div>
-
+        
         </el-card>
       </el-col>
     </el-row>
     <!-- <el-button @click="submitDataToBackend">鎻愪氦鏁版嵁鍒板悗绔�</el-button> -->
   </div>
-</template>
+  </template>
   
-<script>
-import LanguageMixin from '../../lang/LanguageMixin'
-import data from '../../configuration/parameter2'
-let socket;
-export default {
+  <script>
+  import LanguageMixin from '../../lang/LanguageMixin'
+  import data from '../../configuration/parameter2'
+  let socket;
+  export default {
   name: "Parameter2",
   mixins: [LanguageMixin],
-  data () {
+  data() {
     return {
-      jsonData: data,
+      jsonData: data ,
 
       // 鍔犺浇鏁翠釜data.json鏂囦欢浣滀负jsonData
     }
@@ -97,38 +79,38 @@
 
   },
   methods: {
-    updateButtonValue (dataGroup, itemIndex) {
-      // 灏嗗綋鍓嶆寜閽殑鍊艰涓�1
+    updateButtonValue(dataGroup, itemIndex) {
+  // 灏嗗綋鍓嶆寜閽殑鍊艰涓�1
 
-      this.$set(dataGroup[itemIndex].button, 'value', 1);
+    this.$set(dataGroup[itemIndex].button, 'value', 1);
+  
 
+  // 灏嗗叾浠栨寜閽殑鍊煎叏閮ㄨ涓�0
 
-      // 灏嗗叾浠栨寜閽殑鍊煎叏閮ㄨ涓�0
+},
+    submitDataToBackend(currentButtonName) {
+  if (currentButtonName === '娓呴櫎ID') {
+    const inputData = this.jsonData.map(dataGroup => {
+      return dataGroup.map(item => {
+        if (item.type === '3') {
+          return { value: item.button.value };
+        } 
+        return null;
+      });
+    });
 
-    },
-    submitDataToBackend (currentButtonName) {
-      if (currentButtonName === '娓呴櫎ID') {
-        const inputData = this.jsonData.map(dataGroup => {
-          return dataGroup.map(item => {
-            if (item.type === '3') {
-              return { value: item.button.value };
-            }
-            return null;
-          });
-        });
+    const values = inputData.flat().filter(item => item !== null).map(item => item.value);
 
-        const values = inputData.flat().filter(item => item !== null).map(item => item.value);
-
-        const jsonObject = { data: values };
-
-        // 鎻愪氦鏁版嵁鍒板悗绔�
-        const jsonString = JSON.stringify(jsonObject);
-        console.log('Type涓�3鐨剉alue:', jsonString);
-        socket?.send(jsonString);
-      }
-    },
+    const jsonObject = { data: values };
+ 
+ // 鎻愪氦鏁版嵁鍒板悗绔�
+ const jsonString = JSON.stringify(jsonObject);
+   console.log('Type涓�3鐨剉alue:', jsonString);
+     socket?.send(jsonString);
+  }
+},
     initWebSocket () {
-
+ 
       let viewname = "Parameter2";
 
       if (typeof WebSocket === "undefined") {
@@ -151,59 +133,90 @@
 
         // 鏀跺埌娑堟伅
         socket.onmessage = (msg) => {
-          if (!msg.data) {
-            return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
-          }
+  if (!msg.data) {
+    return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+  }
 
-          let obj = JSON.parse(msg.data);
+  let obj = JSON.parse(msg.data);
+ 
+  const jsonData2 = this.jsonData;
+ 
+      // 濡傛灉榧犳爣涓嶅湪杈撳叆妗嗗唴锛屾洿鏂拌緭鍏ユ鐨勫��
+      // this.submitDataToBackend()
+      const parms = obj.params;
+      // const xiaoche = obj.params[3];
+   
+     console.log(parms);
 
-          const jsonData2 = this.jsonData;
+      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 === '3') {
+      obj.button.value = parms[0][i];
+    }
+  }
 
-          // 濡傛灉榧犳爣涓嶅湪杈撳叆妗嗗唴锛屾洿鏂拌緭鍏ユ鐨勫��
-          // this.submitDataToBackend()
-          const parms = obj.params;
-          // console.log(parms);
+     
+}
 
-          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') {
-                obj.value = parms[1][i];
-              }
+      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') {
+      obj.value = parms[1][i];
+    }
+  }
+
+     
+}
+
+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 === '4') {
+      obj.button.value = parms[2][i];
+    }
+  }
+
+     
+}
+
+jsonData2.forEach((item) => {
+  item.forEach((subItem) => {
+    if (subItem.read === 66) {
+      subItem.value = parms[3][0]; 
+    }
+  });
+});
+
+
+let lastParmsArray = parms[parms.length - 1];
+
+let lastParmsIndex = 0;
+
+for (let i = 0; i < jsonData2.length; i++) {
+    for (let j = 0; j < jsonData2[i].length; j++) {
+        if (jsonData2[i][j].read === 333) {
+            jsonData2[i][j].value = lastParmsArray[lastParmsIndex];
+            lastParmsIndex++;
+            if (lastParmsIndex === lastParmsArray.length) {
+                lastParmsIndex = 0;
             }
+        }
+    }
+}
 
 
-          }
-
-          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 === '4') {
-                obj.button.value = parms[2][i];
-              }
-            }
 
 
-          }
 
-          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 === '3') {
-                obj.button.value = parms[0][i];
-              }
-            }
+//  console.log(jsonData2);
 
-
-          }
-
-          //  console.log(jsonData2);
-
-
-        };
+  
+};
 
 
 
@@ -221,30 +234,28 @@
       }
     },
     send () {
-
-
+     
+     
       socket?.send(JSON.stringify(this.messagepack));
     }
 
   }
-}
-</script>
+  }
+  </script>
   
-<style scoped>
-.item-row {
+  <style scoped>
+  .item-row {
   display: flex;
   align-items: center;
-  margin-bottom: 5px;
-  /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */
-}
-
-.action-button {
+  margin-bottom: 5px; /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */
+  }
+  
+  .action-button {
   margin-right: 30px;
   background: #66b1ff;
   color: #FFF;
-}
-
-.blue-button {
+  }
+  .blue-button {
   background-color: skyblue;
 }
 
@@ -252,7 +263,8 @@
   background-color: green;
 }
 
-.red-button {
+.red-button{
   background-color: red;
 }
-</style>
\ No newline at end of file
+
+  </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 21b837c..bfd5eb3 100644
--- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
+++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -1,90 +1,56 @@
 <template>
-  <div class="app">
+    <div class="app">
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
-      }}</router-link>
-      <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
-      }}</router-link>
-      <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
-      }}</router-link>
-      <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
-      }}</router-link>
-      <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
-      }}</router-link>
-    </el-breadcrumb>
+        <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm')
+        }}</router-link>
+        <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State')
+        }}</router-link>
+        <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action')
+        }}</router-link>
+        <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
+        }}</router-link>
+        <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
+        }}</router-link>
+         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
+      </el-breadcrumb>
 
-    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
+      <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+   
+        <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{ $t('Servomanualone')
       }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
-      }}</router-link>
-      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualJog')
-      }}</router-link>
-
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
-      }}</router-link>
-      <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualJog')
-      }}</router-link>
+        <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+        }}</router-link>
+           <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
+        }}</router-link> 
+          <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning1')
+          }}</router-link>
+            <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning2')
+          }}</router-link>
     </el-breadcrumb>
 
     <el-row :gutter="26">
-      <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
-        <el-card class="json-block" style="width:auto;">
-          <el-row>
-            <el-col v-for="(item, itemIndex) in dataGroup" :key="itemIndex" :span="12">
-              <div class="item-container">
-                <div class="item-row">
-                  <span class="name" style='width:230px;'>{{ item.name }}</span>
-                  <el-input v-if="item.type === '0'" v-model="item.value" class='input-box'
-                    :class="{ 'special-class': groupIndex === 0, 'special-class2': groupIndex === 1 }"
-                    v-show="groupIndex !== 0 && groupIndex !== 1"></el-input>
-                </div>
-              </div>
-            </el-col>
-          </el-row>
-          <div class="button-row" style="display: flex; justify-content: space-between;">
-            <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
-              <el-button v-if="item.button" :name="item.button.name" v-model="item.button.value"
-                :class="{ 'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1 }"
-                @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{
-                  item.button.name }}</el-button>
-
+  <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex">
+    <el-card class="json-block"  style="width:auto;">
+      <el-row >
+        <el-col v-for="(item, itemIndex) in dataGroup" :key="itemIndex" :span="12">
+          <div class="item-container">
+            <div class="item-row">
+              <span class="name" style='width:230px;'>{{ item.name }}</span>
+              <el-input v-if="item.type === '0'" v-model="item.value"   class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1"  ></el-input>
             </div>
           </div>
-        </el-card>
-      </el-col>
-    </el-row>
+        </el-col>
+      </el-row>
+      <div class="button-row" style="display: flex; justify-content: space-between;">
+        <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
+          <el-button v-if="item.button" :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+
+        </div>
+      </div>
+    </el-card>
+  </el-col>
+</el-row>
 
     <!-- <el-button @click="submitDataToBackend">鎻愪氦鏁版嵁鍒板悗绔�</el-button> -->
   </div>
@@ -95,12 +61,12 @@
 import data from '../../configuration/ServoManualone'
 import { throttle } from 'lodash';
 let socket;
-export default {
+  export default {
   name: "ServoManualone",
   mixins: [LanguageMixin],
-  data () {
+  data() {
     return {
-      jsonData: data,
+      jsonData: data ,
 
       // 鍔犺浇鏁翠釜data.json鏂囦欢浣滀负jsonData
     }
@@ -111,84 +77,84 @@
 
   },
   methods: {
-    updateButtonValue (dataGroup, itemIndex) {
-      // 灏嗗綋鍓嶆寜閽殑鍊艰涓�1
+    updateButtonValue(dataGroup, itemIndex) {
+  // 灏嗗綋鍓嶆寜閽殑鍊艰涓�1
 
-      this.$set(dataGroup[itemIndex].button, 'value', 1);
+    this.$set(dataGroup[itemIndex].button, 'value', 1);
+    
+  
+
+},
+submitDataToBackend(currentButtonName) {
+  if (currentButtonName === '鍗婅嚜鍔ㄥ惎鍔�') {
+    const data = [];
+
+for (let i = 0; i < 2; i++) {
+  const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
+    return { value: item.value };
+  });
+
+  const values = inputData.map(item => item.value);
+
+  data.push(values);
+}
 
 
 
-    },
-    submitDataToBackend (currentButtonName) {
-      if (currentButtonName === '鍗婅嚜鍔ㄥ惎鍔�') {
-        const data = [];
+const jsonObject = { data };
 
-        for (let i = 0; i < 2; i++) {
-          const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => {
-            return { value: item.value };
-          });
+// 鎻愪氦鏁版嵁鍒板悗绔�
+const jsonString = JSON.stringify(jsonObject);
+console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
+socket?.send(jsonString);
 
-          const values = inputData.map(item => item.value);
+  }
 
-          data.push(values);
-        }
+  if (currentButtonName === '澶嶄綅') {
+
+    const data2 = [];
+    const resetButtonValues = this.jsonData.map(item => {
+  const buttonItem = item.find(subItem => subItem.button && subItem.button.name === '澶嶄綅');
+  return buttonItem ? buttonItem.button.value : null;
+}).filter(value => value !== null);
+
+// 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
+data2.push(...resetButtonValues);
+const jsonObject2 = { data2 };
+
+// 鎻愪氦鏁版嵁鍒板悗绔�
+const jsonString2 = JSON.stringify(jsonObject2);
+console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString2);
+socket?.send(jsonString2);
 
 
+}
+  if (currentButtonName === 'A01鍗婅嚜鍔�') {
+    const elements = document.getElementsByClassName('special-class');
+    for (let i = 0; i < elements.length; i++) {
+      if (elements[i].style.display === 'none') {
+        elements[i].style.display = ''; // 鏄剧ず鍏冪礌
+      } 
+    }
+  }
 
-        const jsonObject = { data };
+  if (currentButtonName === 'A02鍗婅嚜鍔�') {
+    const elements = document.getElementsByClassName('special-class2');
+    for (let i = 0; i < elements.length; i++) {
+      if (elements[i].style.display === 'none') {
+        elements[i].style.display = ''; // 鏄剧ず鍏冪礌
+      } 
+    }
+  }
 
-        // 鎻愪氦鏁版嵁鍒板悗绔�
-        const jsonString = JSON.stringify(jsonObject);
-        console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString);
-        socket?.send(jsonString);
+ 
 
-      }
-
-      if (currentButtonName === '澶嶄綅') {
-
-        const data2 = [];
-        const resetButtonValues = this.jsonData.map(item => {
-          const buttonItem = item.find(subItem => subItem.button && subItem.button.name === '澶嶄綅');
-          return buttonItem ? buttonItem.button.value : null;
-        }).filter(value => value !== null);
-
-        // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
-        data2.push(...resetButtonValues);
-        const jsonObject2 = { data2 };
-
-        // 鎻愪氦鏁版嵁鍒板悗绔�
-        const jsonString2 = JSON.stringify(jsonObject2);
-        console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString2);
-        socket?.send(jsonString2);
-
-
-      }
-      if (currentButtonName === 'A01鍗婅嚜鍔�') {
-        const elements = document.getElementsByClassName('special-class');
-        for (let i = 0; i < elements.length; i++) {
-          if (elements[i].style.display === 'none') {
-            elements[i].style.display = ''; // 鏄剧ず鍏冪礌
-          }
-        }
-      }
-
-      if (currentButtonName === 'A02鍗婅嚜鍔�') {
-        const elements = document.getElementsByClassName('special-class2');
-        for (let i = 0; i < elements.length; i++) {
-          if (elements[i].style.display === 'none') {
-            elements[i].style.display = ''; // 鏄剧ず鍏冪礌
-          }
-        }
-      }
-
-
-
-
-    },
+  
+},
 
 
     initWebSocket () {
-
+ 
       let viewname = "ServoManualone";
 
       if (typeof WebSocket === "undefined") {
@@ -211,60 +177,57 @@
 
         // 鏀跺埌娑堟伅
         socket.onmessage = (msg) => {
-          if (!msg.data) {
-            return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
-          }
+  if (!msg.data) {
+    return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+  }
 
-          let obj = JSON.parse(msg.data);
-          // console.log(obj)
-          const jsonData2 = this.jsonData;
+  let obj = JSON.parse(msg.data);
+  // console.log(obj)
+  const jsonData2 = this.jsonData;
 
-          const handleMouseMove = throttle(function (event) {
-            const inputBox = document.querySelectorAll('.el-card__body');
-            const target = event.target;
-            if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
-              // 鎵ц鏇存柊閫昏緫
-              for (let i = 0; i < 6; i++) {
-                jsonData2[i].forEach((item, index) => {
-                  if (typeof item.value !== 'undefined' && typeof obj[`zuhe${i + 1}`][0][index] !== 'undefined') {
-                    item.value = obj[`zuhe${i + 1}`][0][index];
-                  }
-                });
-              }
+  const handleMouseMove = throttle(function(event) {
+  const inputBox = document.querySelectorAll('.el-card__body');
+  const target = event.target;
+  if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+    // 鎵ц鏇存柊閫昏緫
+    for (let i = 0; i < 6; i++) {
+  jsonData2[i].forEach((item, index) => {
+    if (typeof item.value !== 'undefined' && typeof obj[`zuhe${i+1}`][0][index] !== 'undefined') {
+      item.value = obj[`zuhe${i+1}`][0][index];
+    }
+  });
+}
 
-              // 閬嶅巻guzhang鏁扮粍
-              for (let i = 0; i < obj.guzhang[0].length; i++) {
-                const guzhangValue = obj.guzhang[0][i];
-
-                // 鏌ユ壘jsonData2涓甫鏈�"button"鐨勫璞★紝骞朵笖name绛変簬"鏁呴殰"
-                for (let j = 0; j < jsonData2.length; j++) {
-                  const section = jsonData2[j];
-
-                  for (let k = 0; k < section.length; k++) {
-                    const item = section[k];
-
-                    if (item.button && item.button.name === "鏁呴殰") {
-                      // 鏇存柊value灞炴��
-                      item.button.value = guzhangValue;
-                      break;
-                    }
-                  }
-
-
-                }
-              }
+// 閬嶅巻guzhang鏁扮粍
+for (let i = 0; i < obj.guzhang[0].length; i++) {
+  const guzhangValue = obj.guzhang[0][i];
+  
+  // 鏌ユ壘jsonData2涓甫鏈�"button"鐨勫璞★紝骞朵笖name绛変簬"鏁呴殰"
+  for (let j = 0; j < jsonData2.length; j++) {
+    const section = jsonData2[j];
+    
+    for (let k = 0; k < section.length; k++) {
+      const item = section[k];
+      
+      if (item.button && item.button.name === "鏁呴殰") {
+        // 鏇存柊value灞炴��
+        item.button.value = guzhangValue;
+        break;
+      }
+    }
+    
+  
+  }
+}
 
 
 
 
+  }
+}, 200);
 
-
-
-            }
-          }, 200);
-
-          document.addEventListener('mouseover', handleMouseMove);
-        };
+  document.addEventListener('mouseover', handleMouseMove);
+};
 
 
 
@@ -282,21 +245,22 @@
       }
     },
     send () {
-
-
+     
+     
       socket?.send(JSON.stringify(this.messagepack));
     }
 
   }
-}
+  }
 </script>
 
 <style scoped>
+
+
 .item-row {
   display: flex;
   align-items: center;
-  margin-bottom: 2px;
-  /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */
+  margin-bottom: 2px; /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */
 }
 
 .action-button {
@@ -304,12 +268,12 @@
   background: #66b1ff;
   color: #FFF;
 }
-
 .blue-button {
   background-color: skyblue;
 }
-
 .error-button {
   background-color: red;
 }
+
+
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index 5466384..1d23008 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -13,7 +13,8 @@
       }}</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
-
+ <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
 
     </el-breadcrumb>
     <div>{{ $t('Sign') }}</div>
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index e3a4a2d..50d5bf9 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -13,7 +13,8 @@
       }}</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
-
+ <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
     </el-breadcrumb>
     <div>{{ $t('State') }}</div>
     <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index 910046b..14f8fd3 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -8,7 +8,8 @@
       <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
       <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
     <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
-
+    <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+        }}</router-link>
     </el-breadcrumb>
     <div>{{ $t('Alarm') }}</div>
     <div class="block">
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 166dc7d..f6c4317 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -111,9 +111,15 @@
     top: 366px; */
 }
 
-.orderbutton {
+.orderbutton1 {
     position: absolute;
     left: 1070px;
+    top: 70px;
+}
+
+.orderbutton2 {
+    position: absolute;
+    left: 1170px;
     top: 70px;
 }
 
@@ -194,39 +200,46 @@
                 </div>
             </div>
             <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
-                <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid1"></el-input>
-                <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Infeed barcodid') }}</el-button>
-                <el-input style="width:15%;" :placeholder="$t('Enter the order number')" v-model="order"></el-input>
+                <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid1"></el-input>
+                <el-button type="primary" @click="SelectGlassByGlassIDs(2)">{{ $t('Manually Infeed Glass') }}</el-button>
+                <el-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="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
-                    <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
-                    <el-table-column :width="150" prop="glassId" :label="$t('Outfeed Barcodid')"></el-table-column>
-                    <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
-                    <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
-                    <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
-                    <el-table-column :width="230" prop="lengthWidth" :label="$t('Length(inch) and Width(inch)')"></el-table-column>
-                    <el-table-column :label="$t('Operate')">
+                    <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="150" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
+                    <el-table-column :width="130" prop="north_glass_buffer1s.ordernumber" :label="$t('Order No')"></el-table-column>
+                    <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
+                    <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                    <el-table-column prop="lengthWidth" :label="$t('Dim')"></el-table-column>
+                    <el-table-column :label="$t('Terminate Task')">
                         <template slot-scope='scope'>
                             <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
+                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task')
+                                }}</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
                 <el-table :data="this.tasklist2" border style="width: 100%">
-                    <el-table-column :width="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
-                    <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
-                    <el-table-column :width="150" prop="glassId" :label="$t('Infeed Barcodid')"></el-table-column>
-                    <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
-                    <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
-                    <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
-                    <el-table-column :width="230"  prop="lengthWidth" :label="$t('Length(inch) and Width(inch)')"></el-table-column>
-                    <el-table-column :label="$t('Operate')">
+                    <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="150" prop="glassId" :labelf="$t('Infeed glass barcode')"></el-table-column>
+                    <el-table-column :width="130" prop="north_glass_buffer1s.ordernumber" :label="$t('Order No')"></el-table-column>
+                    <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
+                    <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                    <el-table-column prop="lengthWidth" :label="$t('Dim')">
+                        <template slot-scope='scope'>
+                            {{ scope.row.north_glass_buffer1s.glasslength }}*{{ scope.row.north_glass_buffer1s.glassheight }}
+                        </template>
+                    </el-table-column>
+
+                    <el-table-column :label="$t('Terminate Task')">
                         <template slot-scope='scope'>
                             <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
+                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('Terminate Task')
+                                }}</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -274,7 +287,8 @@
                 <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div>
                 <div class="blocks-img2"></div>
                 <div class="blocks-img3"></div>
-                <el-button class="orderbutton" type="primary" @click="showform2()">{{ $t('OrderInfo') }}</el-button>
+                <el-button class="orderbutton1" type="primary" @click="showform2()">{{ $t('OrderInfo') }}</el-button>
+                <el-button class="orderbutton2" type="primary" @click="showform6()">{{ $t('Production queue') }}</el-button>
 
                 <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
                     <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist1" :key="item['date']"
@@ -304,22 +318,35 @@
         </el-footer>
         <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')">
             <el-form :model="form" label-width="100px" style="padding-right: 30px">
-                <el-form-item :label="$t('Barcodid')">
-                    <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
+                <el-form-item :label="$t('Barcode')">
+                    <el-input style="width:15%;" :placeholder="$t('Enter the glass barcode')" v-model="glassid"></el-input>
                     <el-button type="primary" @click="showform(3)">{{ $t('Query') }}</el-button>
                 </el-form-item>
-                <el-form-item :label="$t('order')">
-                    <el-input v-model="form.orderId" readonly autocomplete="off" />
+                <el-form-item :label="$t('Barcode')">
+                    <el-input v-model="form.barcode" readonly autocomplete="off" />
                 </el-form-item>
-                <el-form-item :label="$t('length(inch)')">
-                    <el-input v-model="form.height" readonly autocomplete="off" />
+                <el-form-item :label="$t('Order No')">
+                    <el-input v-model="form.ordernumber" readonly autocomplete="off" />
                 </el-form-item>
-                <el-form-item :label="$t('width(inch)')">
-                    <el-input v-model="form.width" readonly autocomplete="off" />
+                <el-form-item :label="$t('List No')">
+                    <el-input v-model="form.listnumber" readonly autocomplete="off" />
                 </el-form-item>
-                <el-form-item :label="$t('Barcodid')">
-                    <el-input v-model="form.glassId" readonly autocomplete="off" />
+                <el-form-item :label="$t('Box No')">
+                    <el-input v-model="form.boxnumber" readonly autocomplete="off" />
                 </el-form-item>
+                <el-form-item :label="$t('Length')">
+                    <el-input v-model="form.glasslength" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Width')">
+                    <el-input v-model="form.glassheight" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Length')">
+                    <el-input v-model="form.glasslengthMm" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Width')">
+                    <el-input v-model="form.glassheightMm" readonly autocomplete="off" />
+                </el-form-item>
+
             </el-form>
             <template #footer>
                 <span class="dialog-footer">
@@ -334,6 +361,79 @@
             </template>
         </el-dialog>
 
+        <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
+            <el-form :model="form1" label-width="100px" style="padding-right: 30px">
+                <el-form-item :label="$t('Order No')">
+                    <el-input v-model="form1.order" autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Number')">
+                    <el-input v-model="form1.number" autocomplete="off" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
+                    <el-button @click="cancel1()">{{ $t('cancel') }}</el-button>
+                </span>
+            </template>
+        </el-dialog>
+
+        <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
+            <el-table :data="this.alarm" border style="width: 100%;">
+                <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-column prop="endTime" :label="$t('endTime')"></el-table-column>
+            </el-table>
+        </el-dialog>
+
+        <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh">
+            <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
+                <el-table-column :width="90" prop="cage" :label="$t('Cage No')"></el-table-column>
+                <el-table-column :width="90" prop="cell" :label="$t('Slot No')"></el-table-column>
+                <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
+                <el-table-column :width="100" prop="glassId" :label="$t('Barcode')"></el-table-column>
+                <el-table-column :width="100" prop="orderId" :label="$t('Order No')"></el-table-column>
+                <el-table-column :width="100" prop="north_glass_buffer1s.listnumber"
+                    :label="$t('List No')"></el-table-column>
+                <el-table-column :width="100" prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                <el-table-column :width="170" prop="lengthWidth" :label="$t('Dim')"></el-table-column>
+                <el-table-column :width="280" :label="$t('Operate')">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('Delete') }}</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @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>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Increase')
+                            }}</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-dialog>
+
+        <el-dialog :visible.sync="dialogFormVisible4" :title="$t('OrderInfo')" top="5vh">
+            <el-input style="width:15%;" :placeholder="$t('Enter the Order No')" v-model="orderid"></el-input>
+            <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button>
+            <el-table :data="GlassInfo.slice((currentPage - 1) * pagesize, currentPage * pagesize)
+                " :height="700" border style="width: 100%;overflow: auto;">
+
+                <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column>
+                <el-table-column prop="ordernumber" :label="$t('Order No')"></el-table-column>
+                <el-table-column prop="listnumber" :label="$t('List No')"></el-table-column>
+                <el-table-column prop="boxnumber" :label="$t('Box No')"></el-table-column>
+                <el-table-column prop="glasslength" :label="$t('Length')"></el-table-column>
+                <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column>
+            </el-table>
+            <el-pagination :style="'margin-top:-2px'" @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                :pager-count="7" :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pagesize"
+                layout="total, sizes, prev, pager, next, jumper" :total="GlassInfo.length > 0 ? GlassInfo.length : null"
+                background style="float: right; margin-top: 20px">
+            </el-pagination>
+        </el-dialog>
         <el-dialog :visible.sync="dialogFormVisible5" :title="$t('Please confirm the glass information')">
             <el-form :model="form" label-width="100px" style="padding-right: 30px">
                 <div style="display: flex;justify-content: space-around;">
@@ -350,72 +450,100 @@
                 </div>
                 <div style="display: flex;justify-content: space-around;">
                     <el-form-item>
-                        <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass lD')"
+                        <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')"
                             v-model="glassid2"></el-input>
                         <el-button type="primary" @click="SelectGlassByGlassIDs(1)" :disabled="disabled">{{ $t('Query')
                         }}</el-button>
                     </el-form-item>
                     <el-form-item>
-                        <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass lD')"
+                        <el-input style="width:50%;margin-left: 20%;" :placeholder="$t('Enter the glass barcode')"
                             v-model="glassid1"></el-input>
                         <el-button type="primary" @click="SelectGlassByGlassIDs(2)" :disabled="disabled">{{ $t('Query')
                         }}</el-button>
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
-                    <el-form-item :label="$t('Barcodid')">
-                        <el-input v-model="form2.glassId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Barcode')">
+                        <el-input v-model="form2.barcode" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('Barcodid')">
-                        <el-input v-model="form4.glassId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Barcode')">
+                        <el-input v-model="form4.barcode" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('Barcodid')">
-                        <el-input v-model="form3.glassId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Barcode')">
+                        <el-input v-model="form3.barcode" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('Barcodid')">
-                        <el-input v-model="form5.glassId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Barcode')">
+                        <el-input v-model="form5.barcode" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
-                    <el-form-item :label="$t('order')">
-                        <el-input v-model="form2.orderId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Order No')">
+                        <el-input v-model="form2.ordernumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('order')">
-                        <el-input v-model="form4.orderId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Order No')">
+                        <el-input v-model="form4.ordernumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('order')">
-                        <el-input v-model="form3.orderId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Order No')">
+                        <el-input v-model="form3.ordernumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('order')">
-                        <el-input v-model="form5.orderId" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Order No')">
+                        <el-input v-model="form5.ordernumber" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
-                    <el-form-item :label="$t('length')">
-                        <el-input v-model="form2.height" readonly autocomplete="off" />
+                    <el-form-item :label="$t('List No')">
+                        <el-input v-model="form2.listnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('length')">
-                        <el-input v-model="form4.height" readonly autocomplete="off" />
+                    <el-form-item :label="$t('List No')">
+                        <el-input v-model="form4.listnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('length')">
-                        <el-input v-model="form3.height" readonly autocomplete="off" />
+                    <el-form-item :label="$t('List No')">
+                        <el-input v-model="form3.listnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('length')">
-                        <el-input v-model="form5.height" readonly autocomplete="off" />
+                    <el-form-item :label="$t('List No')">
+                        <el-input v-model="form5.listnumber" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
-                    <el-form-item :label="$t('width')">
-                        <el-input v-model="form2.width" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Box No')">
+                        <el-input v-model="form2.boxnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('width')">
-                        <el-input v-model="form4.width" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Box No')">
+                        <el-input v-model="form4.boxnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('width')">
-                        <el-input v-model="form3.width" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Box No')">
+                        <el-input v-model="form3.boxnumber" readonly autocomplete="off" />
                     </el-form-item>
-                    <el-form-item :label="$t('width')">
-                        <el-input v-model="form5.width" readonly autocomplete="off" />
+                    <el-form-item :label="$t('Box No')">
+                        <el-input v-model="form5.boxnumber" readonly autocomplete="off" />
+                    </el-form-item>
+                </div>
+                <div style="display: flex;justify-content: space-around;">
+                    <el-form-item :label="$t('Length')">
+                        <el-input v-model="form2.glasslength" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Length')">
+                        <el-input v-model="form4.glasslength" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Length')">
+                        <el-input v-model="form3.glasslength" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Length')">
+                        <el-input v-model="form5.glasslength" readonly autocomplete="off" />
+                    </el-form-item>
+                </div>
+                <div style="display: flex;justify-content: space-around;">
+                    <el-form-item :label="$t('Width')">
+                        <el-input v-model="form2.glassheight" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Width')">
+                        <el-input v-model="form4.glassheight" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Width')">
+                        <el-input v-model="form3.glassheight" readonly autocomplete="off" />
+                    </el-form-item>
+                    <el-form-item :label="$t('Width')">
+                        <el-input v-model="form5.glassheight" readonly autocomplete="off" />
                     </el-form-item>
                 </div>
                 <div style="display: flex;justify-content: space-around;">
@@ -431,105 +559,76 @@
             </el-form>
             <template #footer>
                 <span class="dialog-footer">
-
                     <el-button @click="cancel3()">{{ $t('cancel') }}</el-button>
                 </span>
             </template>
         </el-dialog>
 
-        <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
-            <el-form :model="form1" label-width="100px" style="padding-right: 30px">
-                <el-form-item :label="$t('order')">
-                    <el-input v-model="form1.order" autocomplete="off" />
-                </el-form-item>
-                <el-form-item :label="$t('number')">
-                    <el-input v-model="form1.number" autocomplete="off" />
-                </el-form-item>
-            </el-form>
-            <template #footer>
-                <span class="dialog-footer">
-                    <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
-                    <el-button @click="cancel1()">{{ $t('cancel') }}</el-button>
-                </span>
-            </template>
-        </el-dialog>
-        <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
-            <el-table :data="this.alarm" border style="width: 100%;">
-                <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-column prop="endTime" :label="$t('endTime')"></el-table-column>
-            </el-table>
-        </el-dialog>
-        <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh">
-            <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
-                <el-table-column :width="90" prop="cage" :label="$t('The Cage number')"></el-table-column>
-                <el-table-column :width="90" prop="cell" :label="$t('The Slot Number')"></el-table-column>
-                <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
-                <el-table-column :width="100" prop="glassId" :label="$t('Barcodid')"></el-table-column>
-                <el-table-column :width="100" prop="orderId" :label="$t('Order Number')"></el-table-column>
-                <el-table-column :width="100" prop="list" :label="$t('List Number')"></el-table-column>
-                <el-table-column :width="100" prop="box" :label="$t('Box Number')"></el-table-column>
-                <el-table-column :width="170" prop="lengthWidth" :label="$t('Length(inch) and Width(inch)')"></el-table-column>
+        <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Production queue')" top="5vh">
+            <el-button type="primary" @click="showform7()">{{ $t('Increase') }}</el-button>
+            <el-table :data="this.OutSlice" :height="700" border style="width: 100%;overflow: auto;">
+                <el-table-column prop="glassId" :label="$t('Barcode')"></el-table-column>
+                <el-table-column prop="north_glass_buffer1s.ordernumber" :label="$t('Order No')"></el-table-column>
+                <el-table-column prop="north_glass_buffer1s.listnumber" :label="$t('List No')"></el-table-column>
+                <el-table-column prop="north_glass_buffer1s.boxnumber" :label="$t('Box No')"></el-table-column>
+                <el-table-column prop="barCode" :label="$t('Frame No')"></el-table-column>
+                <el-table-column prop="north_glass_buffer1s.glasslength" :label="$t('Length')"></el-table-column>
+                <el-table-column prop="north_glass_buffer1s.glassheight" :label="$t('Width')"></el-table-column>
                 <el-table-column :width="280" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('delete') }}</el-button>
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            @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>
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('increase')
-                            }}</el-button>
+                            @click="deleteproductionqueueglass(scope.row.id)">{{ $t('Delete') }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
         </el-dialog>
-        <el-dialog :visible.sync="dialogFormVisible4" :title="$t('OrderInfo')" top="5vh">
-            <el-input style="width:15%;" :placeholder="$t('Enter the Order lD')" v-model="orderid"></el-input>
-            <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button>
-            <el-table :data="GlassInfo.slice((currentPage - 1) * pagesize, currentPage * pagesize)
-                " :height="700" border style="width: 100%;overflow: auto;">
-                <el-table-column prop="glassId" :label="$t('Barcodid')"></el-table-column>
-                <el-table-column prop="orderId" :label="$t('Order Number')"></el-table-column>
-                <el-table-column prop="width" :label="$t('length')"></el-table-column>
-                <el-table-column prop="height" :label="$t('width')"></el-table-column>
-            </el-table>
 
+        <el-dialog :visible.sync="dialogFormVisible7" :title="$t('Glass information corresponding to aluminum frame')"
+            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-table :data="this.AluminumFrame" :height="700" border style="width: 100%;overflow: auto;">
 
-            <!-- <el-table :data="tableDatas.slice((currentPage - 1) * pagesize, currentPage * pagesize)
-                " style="width: 100%">
-                <el-table-column label="Date" prop="date"> </el-table-column>
-                <el-table-column label="Name" prop="name"> </el-table-column>
-                <el-table-column label="鎿嶄綔">
-                    <template slot-scope="scope">
-                        <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
-                        <el-button size="mini" type="danger"
-                            @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
+                <el-table-column prop="barcode" :label="$t('Barcode')"></el-table-column>
+                <el-table-column prop="ordernumber" :label="$t('Order No')"></el-table-column>
+                <el-table-column prop="listnumber" :label="$t('List No')"></el-table-column>
+                <el-table-column prop="boxnumber" :label="$t('Box No')"></el-table-column>
+                <el-table-column prop="glasslength" :label="$t('Length')"></el-table-column>
+                <el-table-column prop="glassheight" :label="$t('Width')"></el-table-column>
+                <el-table-column prop="storageCage.cage" :label="$t('Cage No')"></el-table-column>
+                <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="out_slice.state" :label="$t('In the queue')">
+                    <template slot-scope='scope'>
+                        {{ scope.row.out_slice != null ? $t('Yes') : $t('No') }}
                     </template>
                 </el-table-column>
-            </el-table> -->
-
-            <!-- 琛ㄦ牸鍒嗛〉 -->
-            <!-- pager-count pager-count灞炴�у彲浠ヨ缃渶澶ч〉鐮佹寜閽暟,瓒呭嚭鎶樺彔,榛樿涓�7-->
-            <!-- 娉ㄦ剰锛氳嫢鏁版嵁鏄悗绔帴鍙h繑鍥炵殑鍒欐鏃�:total="pageCount"-->
-            <el-pagination :style="'margin-top:-2px'" @size-change="handleSizeChange" @current-change="handleCurrentChange"
-                :pager-count="7" :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pagesize"
-                layout="total, sizes, prev, pager, next, jumper" :total="GlassInfo.length > 0 ? GlassInfo.length : null"
-                background style="float: right; margin-top: 20px">
-            </el-pagination>
-
-
+                
+                <el-table-column prop="storageCage.tier" :label="$t('In the cage')">
+                    <template slot-scope='scope'>
+                        {{ scope.row.storageCage != null ? $t('Yes') : $t('No') }}
+                    </template>
+                </el-table-column>
+                <el-table-column :width="80" :label="$t('Operate')">
+                    <template slot-scope='scope'>
+                        <el-checkbox label="" :disabled="!(scope.row.storageCage != null&&scope.row.out_slice == null)" :checked="scope.row.isCheck"  @change="CheckBoxchange(scope.row.barcode,$event)"></el-checkbox>
+                    </template>
+                </el-table-column>
+            </el-table>
         </el-dialog>
     </el-container>
 </template>
 <script>
-//:disabled="scope.row.glassId > 0 || scope.row.disabled == 1 ? true : false"
+
 import {
     home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
-    SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass
+    SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo,
+    SelectAluminumFrameInfoById, SelectProductionqueue, DeleteProductionQueueGlass, AddOutSliceS
 } from "../../api/home";
 
 
@@ -552,40 +651,19 @@
             dialogFormVisible3: false,
             dialogFormVisible4: false,
             dialogFormVisible5: false,
+            dialogFormVisible6: false,
+            dialogFormVisible7: false,
             form: {
                 orderId: "",
                 glassId: "",
                 height: "",
                 width: ""
             },
-            form1: {
-                order: "NG2210210",
-                number: 800,
-            },
-            form2: {
-                orderId: "",
-                glassId: "",
-                height: "",
-                width: ""
-            },
-            form3: {
-                orderId: "",
-                glassId: "",
-                height: "",
-                width: ""
-            },
-            form4: {
-                orderId: "",
-                glassId: "",
-                height: "",
-                width: ""
-            },
-            form5: {
-                orderId: "",
-                glassId: "",
-                height: "",
-                width: ""
-            },
+            form1: {},
+            form2: {},
+            form3: {},
+            form4: {},
+            form5: {},
             alarm: [],
             tableData: [],
             cagelist1: [],
@@ -618,7 +696,10 @@
             disabled1: false,
             currentPage: 1,  //榛樿鍒濆椤�
             pagesize: 15,    //姣忛〉榛樿鏄剧ず鐨勬暟鎹�
-            pageCount: 0
+            pageCount: 0,
+            OutSlice: [],
+            AluminumFrame: [],
+            framebarcode: ""
         };
     },
     created() {
@@ -666,7 +747,9 @@
                     if (obj.zhuangtai != null) {
                         this.zhuangtai = obj.zhuangtai[0];
                     }
-
+                    if(this.dialogFormVisible7==true){
+                        this.showform7();
+                    }
                     // this.glassid1 = obj.queid[0];
                     // if (obj.queid[0] != "" && obj.queid[0] != null && obj.state[0] == 0) {
                     //     this.state = false;
@@ -686,23 +769,14 @@
                     if (obj.form2 != null && obj.form2 != "") {
                         this.form2 = obj.form2[0];
                     } else {
-                        this.form2 = {
-                            orderId: "",
-                            glassId: "",
-                            height: "",
-                            width: ""
-                        };
+                        this.form2 = {};
                     }
 
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 1) {
                         this.form3 = obj.form3[0];
                     } else {
-                        this.form3 = {
-                            orderId: "",
-                            glassId: "",
-                            height: "",
-                            width: ""
-                        };
+                        this.form3 = {};
+
                     }
                     if (obj.form3 != null && obj.form3 != "" && obj.state[0] == 0) {
                         this.form5 = obj.form3[0];
@@ -844,11 +918,10 @@
         //鏄剧ず璁㈠崟淇℃伅椤甸潰
         showform1() {
             if (this.order != "") {
-                this.form1 =
-                {
-                    order: "NG2210210",
-                    number: 800,
-                };
+                SelectGlassNo(this.order).then(res => {
+                    this.form1.order = this.order;
+                    this.form1.number = res.data.count;
+                });
                 this.dialogFormVisible1 = true;
             }
         },
@@ -898,6 +971,7 @@
         },
         selectglassinfo() {
             SelectGlass(this.orderid).then(res => {
+                this.currentPage = 1;
                 this.GlassInfo = res.data.glass;
             });
         },
@@ -906,6 +980,27 @@
                 this.GlassInfo = res.data.glass;
             });
             this.dialogFormVisible4 = true;
+        },
+        showform6() {
+            SelectProductionqueue().then(res => {
+                this.OutSlice = res.data.listoutslice;
+            });
+            this.dialogFormVisible6 = true;
+        },
+        showform7() {
+            SelectAluminumFrameInfoById(this.framebarcode).then(res => {
+                this.AluminumFrame = res.data.listAluminumFrame;
+                this.AluminumFrame.forEach(item => {
+                    if(item.storageCage!=null&&item.out_slice==null){
+                        item.isCheck = true;
+                    }else{
+                        item.isCheck = false;
+                    }
+                    item.Flip=res.data.flip;
+                    item.FrameNo=this.framebarcode;
+                });
+            });
+            this.dialogFormVisible7 = true;
         },
         //鍙栨秷鎿嶄綔鏃跺叧闂〉闈�
         cancel() {
@@ -956,6 +1051,7 @@
             this.cage = cage;
             SelectCageInfo(cage).then(res => {
                 this.cageinfo = res.data.cageinfo;
+                console.log(this.cageinfo)
                 this.dialogFormVisible3 = true;
             });
         },
@@ -1051,7 +1147,7 @@
         //鎵嬪姩涓婄墖
         FeedInglassid() {
             Inglassid(this.insertcage, this.insertcell, this.inserttier, this.form).then(res => {
-                if (this.form.glassId != "") {
+                if (this.form.barcode != "") {
                     if (res.data.message == 200) {
                         this.$message.success(this.$t('Operation successful'));
                         this.dialogFormVisible = false;
@@ -1072,7 +1168,29 @@
                 }
             });
         },
-        handleEdit(index, row) {
+        //鍒犻櫎鍑虹墖闃熷垪鐜荤拑
+        deleteproductionqueueglass(id) {
+            this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
+                inputType: 'password',
+                inputPlaceholder: this.$t('Please enter the password'),
+                confirmButtonText: this.$t('Yes'),
+                cancelButtonText: this.$t('No'),
+                type: 'warning'
+            }).then(({ value }) => {
+                if (this.password == value) {
+                    DeleteProductionQueueGlass(id).then(res => {
+                        if (res.data.message == 200) {
+                            this.$message.success(this.$t('Operation successful'));
+                        }
+                    });
+                }
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
+            });
+        }, handleEdit(index, row) {
             console.log(index, row);
         },
         //琛ㄦ牸鍒犻櫎
@@ -1089,36 +1207,26 @@
         },
         //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
         InsertQueueGlass(parameter) {
-            if (parameter == 1 && this.form5.glassId != "") {
-                if (this.form5.glassId != this.form2.glassId) {
-                    InsertQueueGlassId(this.form5.glassId, 1).then(res => {
+            if (parameter == 1 && this.form5.barcode != "") {
+                if (this.form5.barcode != this.form2.barcode) {
+                    InsertQueueGlassId(this.form5.barcode, 1).then(res => {
                         if (res.data.message == 200) {
-                            this.form5 = {
-                                orderId: "",
-                                glassId: "",
-                                height: "",
-                                width: ""
-                            };
+                            this.form5 = {};
                             this.$message.success(this.$t('Operation successful'));
-                        }else{
+                        } else {
                             this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
                         }
                     });
                 } else {
                     this.$message.error(this.$t('The glass ID already exists in the loading queue'));
                 }
-            } else if (parameter == 2 && this.form4.glassId != "") {
-                if (this.form4.glassId != this.form3.glassId) {
-                    InsertQueueGlassId(this.form4.glassId, 2).then(res => {
+            } else if (parameter == 2 && this.form4.barcode != "") {
+                if (this.form4.barcode != this.form3.barcode) {
+                    InsertQueueGlassId(this.form4.barcode, 2).then(res => {
                         if (res.data.message == 200) {
-                            this.form4 = {
-                                orderId: "",
-                                glassId: "",
-                                height: "",
-                                width: ""
-                            };
+                            this.form4 = {};
                             this.$message.success(this.$t('Operation successful'));
-                        }else{
+                        } else {
                             this.$message.error(this.$t('This glass ID already exists in the sorting cage'));
                         }
                     });
@@ -1152,6 +1260,36 @@
                     this.$message.success(this.$t('Operation successful'));
                 }
             });
+        },
+        CheckBoxchange(glassid,isChecked){
+            this.AluminumFrame.forEach(item=>{item.barcode=glassid;item.isCheck=isChecked})
+            console.log(this.AluminumFrame);
+        },
+        addoutslice(){
+            // var AluminumFrames1=this.AluminumFrame.map(item=>{return item.barcode});
+            // var AluminumFrames2=this.AluminumFrame.map(item=>{return item.isCheck});
+            // var AluminumFrames3=this.AluminumFrame.map(item=>{return item.Flip});
+            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_;
+            });
+            console.log(dats_);
+            //var AluminumFrames=this.AluminumFrame.map((item)=>({barcode,isCheck,Flip}) );
+            // console.log(AluminumFrames1);
+            // console.log(AluminumFrames2);
+            // console.log(AluminumFrames3);
+            AddOutSliceS(dats_).then(res=>{
+                if (res.data.message == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            });
         }
     }
 }
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 b5023ae..ec56e0c 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
@@ -10,6 +10,7 @@
 import com.example.springboot.service.JdbcConnections;
 import com.example.springboot.service.SpianService;
 import com.example.springboot.entity.Glass;
+import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.mapper.AlarmMapper;
 import com.example.springboot.mapper.SpianMapper;
 
@@ -24,8 +25,8 @@
 
   @Override
   public void run() {
-    boolean inglassbegin=false;
-    boolean outglassbegin=false;
+    boolean inglassbegin = false;
+    boolean outglassbegin = false;
     while (this != null) {
       try {
 
@@ -38,35 +39,33 @@
       spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
       jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
 
-      spianService.selectout("1145");
-      //spianService.selectAll2();
-      //澧炲姞闃熷垪琛ㄦ暟鎹�
-      //spianMapper.insertqueue("1",1,1500);
-
+      String str = "Hello";
+      char[] charArray = new char[str.length()];
+      for (int i = 0; i < str.length(); i++) {
+        charArray[i] = str.charAt(i);
+      }
+      System.out.println(charArray);
+      // spianService.selectout("1145");
+      // spianService.selectAll("11");
+      // spianService.selectAll2();
+      // 澧炲姞闃熷垪琛ㄦ暟鎹�
+      // spianMapper.insertqueue("1",1,1500);
 
       // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
       // try {
 
-      //   Glass glass = jdbcConnections.selectGlass(112);
+      // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
 
-      //   // System.out.println(glass.getOrderId());
+      // // System.out.println(glass.getOrderId());
       // } catch (SQLException e) {
-      //   // TODO Auto-generated catch block
-      //   e.printStackTrace();
+      // // TODO Auto-generated catch block
+      // e.printStackTrace();
       // }
-    
-      //鍒ゆ柇杩涚墖璇锋眰
+
+      // 鍒ゆ柇杩涚墖璇锋眰
       List<Short> datas1List = S7control.getinstance().ReadWord("DB106.24", 1);// 鑾峰彇prc杩涚墖璇锋眰鏁版嵁
       List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 鑾峰彇杩涚墖杞︾姸鎬�
       List<Short> datas1ListState2 = S7control.getinstance().ReadWord("DB105.12", 1);// 鑾峰彇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
-      //娴嬭瘯鍚姩鑷畾涔塸rc鍊�
-      // List<Short> datas1List=new ArrayList<>();
-      // datas1List.add((short)1);
-      // List<Short> datas1ListState=new ArrayList<>();
-      // datas1List.add((short)0);
-      // List<Short> datas1ListState2=new ArrayList<>();
-      // datas1List.add((short)0);
-     
 
       if (datas1List != null && datas1ListState != null) {
 
@@ -74,127 +73,144 @@
         boolean exist = datas1List.contains((short) 1);
         // 鑾峰彇杩涚墖杞︾姸鎬�
         boolean exist1 = datas1ListState.contains((short) 0);
-        //鍒ゆ柇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
+        // 鍒ゆ柇杩涚墖杞︿换鍔℃槸鍚﹀惎鍔�
         boolean exist2 = datas1ListState2.contains((short) 1);
-       
-        String glassid="";
-        StringBuilder strId=new StringBuilder();
-         StringBuilder writedstrId=new StringBuilder();
-       
-       if(!inglassbegin&!exist1)//褰撹繘鐗囪溅涓嶇┖闂叉椂
-       {
-         inglassbegin=true;
-       }
-       if(inglassbegin&exist1)//褰撹繘鐗囪溅绌洪棽鏃�
-       {
-        inglassbegin=false;
-        spianMapper.Updatetask(1, 0);//绔嬪嵆缁撴潫鏁版嵁搴撹〃涓殑涓婄墖浠诲姟
-        spianMapper.UpdataAddCageState(1,2);
-       }
+
+        String glassid = "";
+        StringBuilder strId = new StringBuilder();
+        StringBuilder writedstrId = new StringBuilder();
+
+        if (!inglassbegin & !exist1)// 褰撹繘鐗囪溅涓嶇┖闂叉椂
+        {
+          inglassbegin = true;
+        }
+        if (inglassbegin & exist1)// 褰撹繘鐗囪溅绌洪棽鏃�
+        {
+          inglassbegin = false;
+          spianMapper.Updatetask(1, 0);// 绔嬪嵆缁撴潫鏁版嵁搴撹〃涓殑涓婄墖浠诲姟
+          spianMapper.UpdataAddCageState(1, 2);
+        }
         // 杩涚墖璇锋眰涓�1鏃�
         if (exist == true) {
           // 褰撹繘鐗囪溅绌洪棽鏃�
           if (exist1 == true) {
-            //鑾峰彇宸蹭笅鍙戠殑杩涚墖id 涓巔lc璇锋眰鐨刬d浣滄瘮杈�
-              byte[] writedglassidbytes = S7control.getinstance().ReadByte("DB105.16", 1);
+            // 鑾峰彇宸蹭笅鍙戠殑杩涚墖id 涓巔lc璇锋眰鐨刬d浣滄瘮杈�
+            byte[] writedglassidbytes = S7control.getinstance().ReadByte("DB105.16", 13);
             if (writedglassidbytes != null) { //
               // 鑾峰彇鐜荤拑id
-              for (byte iditem : writedglassidbytes) { 
+              for (byte iditem : writedglassidbytes) {
                 writedstrId.append(iditem);
               }
             }
             // 鑾峰彇杩涚墖id
-            byte[] datas1ListID = S7control.getinstance().ReadByte("DB106.26", 1);
+            byte[] datas1ListID = S7control.getinstance().ReadByte("DB106.26", 13);
             if (datas1ListID != null) {
               // 鑾峰彇鐜荤拑id
-              for (byte list1 : datas1ListID) { 
+              for (byte list1 : datas1ListID) {
                 strId.append(list1);
-                
+
               }
-              if(!writedstrId.toString().equals(strId.toString())) //宸茬粡涓嬪彂鐨刬d涓巔lc璇锋眰鐨刬d涓嶄竴鏍锋椂锛岃涓轰笉鏄噸澶嶇殑浠诲姟锛屾墠鎵ц涓嬪彂浠诲姟鎸囦护
+              if (!writedstrId.toString().equals(strId.toString())) // 宸茬粡涓嬪彂鐨刬d涓巔lc璇锋眰鐨刬d涓嶄竴鏍锋椂锛岃涓轰笉鏄噸澶嶇殑浠诲姟锛屾墠鎵ц涓嬪彂浠诲姟鎸囦护
               {
-                 
-                 int glasslimit=1;//鍒ゆ柇鏄惁鏄鐗囦笂鐗�
-                 if(glasslimit==1){
+
+                int glasslimit = 1;// 鍒ゆ柇鏄惁鏄鐗囦笂鐗�
+                if (glasslimit == 1) {
                   spianService.selectAll(strId.toString());
-                 }else{
+                } else {
                   spianService.selectAll(strId.toString());
-                 }
-                  S7control.getinstance().WriteByte("DB105.16",datas1ListID);//娲惧彂杩涚墖id
-                  
+                }
+                S7control.getinstance().WriteByte("DB105.16", datas1ListID);// 娲惧彂杩涚墖id
+
               }
-              //spianService.selectAll(Short.parseShort(strId.toString()));
+              // spianService.selectAll(Short.parseShort(strId.toString()));
             }
 
           }
           // System.out.println(exist);
         }
-//涓嬪彂浠诲姟鍚庡皢浠诲姟鍚姩鏀逛负0
-           if(exist1==false){  //杩涚墖杞﹀繖纰屾椂
-          if(exist2==true) {   //浠诲姟宸插惎鍔ㄦ椂
-          S7control.getinstance().WriteWord("DB105.12",(short)0);//杩涚墖浠诲姟鍚姩鏀逛负0
-          }  
+        // 涓嬪彂浠诲姟鍚庡皢浠诲姟鍚姩鏀逛负0
+        if (exist1 == false) { // 杩涚墖杞﹀繖纰屾椂
+          if (exist2 == true) { // 浠诲姟宸插惎鍔ㄦ椂
+            S7control.getinstance().WriteWord("DB105.12", (short) 0);// 杩涚墖浠诲姟鍚姩鏀逛负0
+          }
         }
       }
-      
-      //spianService.selectAll((short) 111);
-      
+
       List<Short> outlist = S7control.getinstance().ReadWord("DB106.20", 1); // 鍑虹墖杞︾姸鎬�
       List<Short> outlist1 = S7control.getinstance().ReadWord("DB105.14", 1); // 鍑虹墖浠诲姟鏄惁鍚姩
-      StringBuilder writedstrIdOut=new StringBuilder();
-       //鑾峰彇宸蹭笅鍙戠殑鍑虹墖id
-              byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 1);
-            if (writedglassidbytesOut != null) {
-              // 鑾峰彇鐜荤拑id
-              for (byte iditem : writedglassidbytesOut) { 
-                writedstrIdOut.append(iditem);
-              }
-            }
-      boolean outstate=false;//鍑虹墖杞︾┖闂插垽鏂�
-      boolean outstate1=false;//鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
-       if (outlist != null&&outlist1!=null) {
-        // 鍒ゆ柇鎸夎鍗曞嚭鐗�
-         outstate = outlist.contains((short) 0);//鍑虹墖杞︾┖闂插垽鏂�
-         outstate1 = outlist1.contains((short) 1);//鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
-         
-          Glass glass=spianMapper.SelectDBOut();//鍒ゆ柇鏄惁鏈夎皟鎷ㄥ悗鐨勫嚭鐗囦换鍔℃湭瀹屾垚
-
-          if(!outglassbegin&!outstate)//褰撲换鍔¤繕鏈紑濮嬶紝涓斿嚭鐗囪溅涓嶇┖闂叉椂,浠诲姟鐘舵�佹敼涓哄紑濮�
-       {
-         outglassbegin=true;
-       }
-       if(outglassbegin&outstate)//褰撲换鍔″紑濮嬩笖鍑虹墖杞︾┖闂叉椂
-       {
-        outglassbegin=false;
-        spianMapper.UpdatetaskOut(); //瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰皟搴︿换鍔�
-        spianMapper.UpdataAddCageState(0,3);
-       }
-
-         if(outstate== true &glass.getGlassId()!=null){ //褰撳嚭鐗囪溅绌洪棽涓旀湁鍑虹墖浠诲姟寰呭畬鎴愭椂
-          if(glass.getId()==2&!writedstrIdOut.toString().equals(glass.getGlassId().toString())){ 
-           spianService.selectout2(glass.getGlassId().toString());
-            }
-        } 
-        if(outstate==false){//涓嬪彂浠诲姟鍚庡皢浠诲姟鍚姩鏀逛负0//鍑虹墖杞︾┖闂插垽鏂�
-          if(outstate1==true){
-            S7control.getinstance().WriteWord("DB105.14",(short)0);//鍑虹墖浠诲姟鍚姩鏀逛负0
-          }
-         }
+      StringBuilder writedstrIdOut = new StringBuilder();
+      // 鑾峰彇宸蹭笅鍙戠殑鍑虹墖id
+      byte[] writedglassidbytesOut = S7control.getinstance().ReadByte("DB105.30", 13);
+      if (writedglassidbytesOut != null) {
+        // 鑾峰彇鐜荤拑id
+        for (byte iditem : writedglassidbytesOut) {
+          writedstrIdOut.append((char) iditem);
+        }
       }
-     
-      
- 
-     
-        if (outstate == true) { // 鍑虹墖杞︾姸鎬佺┖闂叉椂
-            Integer state=spianMapper.Selectoutstate();
-            String orderid = spianMapper.SelectOrderout();
-           
-            if (orderid != null &&state==0) {
-              spianService.selectout(orderid);
-            }      
+      // 鑾峰彇BO1鏁版嵁
+      StringBuilder queueid1 = spianService.queGlassid("DB103.DBB32");
+      // 鑾峰彇BO2鏁版嵁
+      StringBuilder queueid2 = spianService.queGlassid("DB103.DBB46");
+      if (queueid1 != null) {
+        // 鍐欏叆B01鐨勬暟鎹埌涓婄墖闃熷垪琛�
+        spianMapper.insertqueue(queueid1.toString(), 1, 0);
+      }
+      if (queueid2 != null) {
+        // 鍐欏叆B02鐨勬暟鎹埌涓婄墖闃熷垪琛�
+        spianMapper.insertqueue(queueid2.toString(), 2, 0);
+      }
+
+      // 鍑虹墖浠诲姟////////////////////////////////
+      boolean outstate = false;// 鍑虹墖杞︾┖闂插垽鏂�
+      boolean outstate1 = false;// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
+      if (outlist != null && outlist1 != null) {
+        // 鍒ゆ柇鎸夎鍗曞嚭鐗�
+        outstate = outlist.contains((short) 0);// 鍑虹墖杞︾┖闂插垽鏂�
+        outstate1 = outlist1.contains((short) 1);// 鍑虹墖杞︿换鍔℃槸鍚﹀惎鍔�
+
+        north_glass_buffer1 glass = spianMapper.SelectDBOut();// 鍒ゆ柇鏄惁鏈夎皟鎷ㄥ悗鐨勫嚭鐗囦换鍔℃湭瀹屾垚
+
+        if (!outglassbegin & !outstate)// 褰撲换鍔¤繕鏈紑濮嬶紝涓斿嚭鐗囪溅涓嶇┖闂叉椂,浠诲姟鐘舵�佹敼涓哄紑濮�
+        {
+          outglassbegin = true;
+        }
+        if (outglassbegin & outstate)// 褰撲换鍔″紑濮嬩笖鍑虹墖杞︾┖闂叉椂
+        {
+          outglassbegin = false;
+          spianMapper.UpdatetaskOut(); // 瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰皟搴︿换鍔�
+          spianMapper.UpdataAddCageState(0, 3);// 灏嗗嚭鐗囦腑鐨勬牸瀛愮姸鎬佹敼鎴�0
         }
 
-      
+        if (outstate == true & glass.getbarcode() != null) { // 褰撳嚭鐗囪溅绌洪棽涓旀湁鍑虹墖浠诲姟寰呭畬鎴愭椂
+          // 鍒ゆ柇鏈変袱涓嚭鐗囨垨璋冩嫧浠诲姟鏃跺苟涓斿嚭鐗噄d鍜屾湭瀹屾垚鐨勫嚭鐗囦换鍔d涓嶄竴鏍锋椂鎵ц鍑虹墖
+          if (glass.getId() == 2 & !writedstrIdOut.toString().equals(glass.getbarcode().toString())) {
+            spianService.selectout2(glass.getbarcode().toString());
+          }
+        }
+        // 鍒ゆ柇褰撳墠鏄惁鏈夋湭鎵ц鐨勪换鍔�
+        int outnum = spianMapper.SelectOutSliceshu();
+        if (outnum == 0) {
+          // 鍒ゆ柇閾濇鍑虹墖闃熷垪琛ㄦ槸鍚︽湁寰呭嚭鐗囩殑鐜荤拑
+          String outglassid = spianMapper.SelectOutSlice();
+          if (outglassid != null) {
+            spianService.selectout2(outglassid);
+          }
+        }
+        if (outstate == false) {// 涓嬪彂浠诲姟鍚庡皢浠诲姟鍚姩鏀逛负0//鍑虹墖杞︾┖闂插垽鏂�
+          if (outstate1 == true) {
+            S7control.getinstance().WriteWord("DB105.14", (short) 0);// 鍑虹墖浠诲姟鍚姩鏀逛负0
+          }
+        }
+      }
+
+      if (outstate == true) { // 鍑虹墖杞︾姸鎬佺┖闂叉椂
+        Integer state = spianMapper.Selectoutstate();
+        String orderid = spianMapper.SelectOrderout();
+
+        if (orderid != null && state == 0) {
+          spianService.selectout(orderid);
+        }
+      }
 
       // 鏌ヨ鏁版嵁搴�
       // 鎺ㄩ�佸埌鍓嶇
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
index 08b75b0..5e7007a 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
@@ -66,20 +66,22 @@
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
-      // this.readValue();
-      // String PlcAddress = this.name;
-      // Integer Plccount = this.count;
+//      this.readValue();
+//      String PlcAddress = this.name;
+//      Integer Plccount = this.count;
 
       // System.out.println(stt);
-      // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
-      // List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.8", 1);
-      // List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.12", 1);
-      Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
-      List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
-      Short[] fanzhuan = { 4 };
-      List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
-      Short[] xiaoche = { 5 };
-      List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
+       List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
+       List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.8", 1);
+       List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.12", 1);
+//      Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
+//      List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+//      Short[] fanzhuan = { 4 };
+//      List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
+//      Short[] xiaoche = {5};
+//      List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
+
+
 
       JSONObject jsonObject = new JSONObject();
       // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
@@ -90,16 +92,13 @@
       jsonObject.append("xiaoche", xiaoche1);
 
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter1");
-      // System.out.println(sendwServer);
       if (sendwServer != null) {
         sendwServer.sendMessage(jsonObject.toString());
       }
 
       WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter1");
-
       if (webSocketServer != null) {
         List<String> messages = webSocketServer.getMessages();
-        // System.out.println(messages);
         String addressList1 = "DB100.0";
         String addressList2 = "DB100.8";
         String addressList3 = "DB100.12";
@@ -107,9 +106,9 @@
         if (!messages.isEmpty()) {
           // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
           String lastMessage = messages.get(messages.size() - 1);
-          // System.out.println("lastMessage锛�" + lastMessage);
+//        System.out.println("lastMessage锛�" + lastMessage);
           JSONArray messageArray = new JSONArray(lastMessage);
-          // System.out.println(messageArray);
+
           // 鏁村悎绗� 1 鍒� 3 涓暟缁勫苟鍘绘帀 null 鍏冪礌
           List<Short> mergedList = new ArrayList<>();
           for (int i = 0; i < 3; i++) {
@@ -136,9 +135,8 @@
               try {
                 String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                 short sValue = Short.parseShort(cleanedValue.trim());
-                // S7control.getinstance().WriteWord(addressList1, Arrays.asList(sValue));
-                System.out
-                    .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList1);
+               S7control.getinstance().WriteWord(addressList1, Arrays.asList(sValue));
+                System.out.println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList1);
               } catch (NumberFormatException e) {
                 // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
                 System.err.println("Could not parse value: " + value);
@@ -153,9 +151,8 @@
               try {
                 String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                 short sValue = Short.parseShort(cleanedValue.trim());
-                // S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
-                System.out
-                    .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
+               S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
+                System.out.println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
               } catch (NumberFormatException e) {
                 // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
                 System.err.println("Could not parse value: " + value);
@@ -165,15 +162,16 @@
 
           // 鍐欏叆绗笁涓湴鍧�
           if (!mergedList.isEmpty()) {
-            // S7control.getinstance().WriteWord(addressList3, mergedList);
+          S7control.getinstance().WriteWord(addressList3, mergedList);
             System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + addressList3);
           }
 
           // 娓呯┖娑堟伅鍒楄〃
           webSocketServer.clearMessages();
         }
+      
 
-      }
+    }
 
     }
   }
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 466e88b..5c4348d 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
@@ -66,22 +66,64 @@
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
-//      this.readValue();
-//      String PlcAddress = this.name;
-//      Integer Plccount = this.count;
 
-      // System.out.println(stt);
-      // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
-      // List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10);
 
-      Boolean[] values = { false, true, true, true, true, true, true, true, true,
-              true};
-      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
-      Short[] values1 = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
-      List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+      List<String> addressList1 = new ArrayList<>();
+      addressList1.add("DB103.32~45");
+      addressList1.add("DB103.46~59");
+      addressList1.add("DB103.60~73");
+      addressList1.add("DB103.74~101");
+      addressList1.add("DB103.102~115");
+      addressList1.add("DB103.116~143");
+      addressList1.add("DB103.144~157");
+      addressList1.add("DB103.158~171");
+      addressList1.add("DB103.172~185");
+      addressList1.add("DB103.200~213");
+      addressList1.add("DB103.228~241");
+      List<Boolean> paramlist = S7control.getinstance().readBits(addressList1);
 
-      Short[] values2 = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
-      List<Short> state = new ArrayList<>(Arrays.asList(values2));
+
+      List<String> addresses = new ArrayList<>();
+      addresses.add("DB103.0");
+      addresses.add("DB103.2");
+      addresses.add("DB103.12");
+      addresses.add("DB103.14");
+      addresses.add("DB103.16");
+      addresses.add("DB103.18");
+      addresses.add("DB103.8");
+      addresses.add("DB103.10");
+      addresses.add("DB103.4");
+      addresses.add("DB103.6");
+      List<Short> data = S7control.getinstance().readWords(addresses);
+
+
+
+      List<Boolean> data2 = S7control.getinstance().ReadBits("DB101.9.2", 10);
+      List<String> addressList3 = new ArrayList<>();
+      addressList3.add("DB106.64-DB106.77");
+      List<Boolean> data3 = S7control.getinstance().readBits(addressList3);
+
+      List<String> addresses4 = new ArrayList<>();
+      addresses.add("DB106.0");
+      addresses.add("DB106.12");
+      addresses.add("DB106.40");
+      addresses.add("DB106.50");
+
+      List<Short> data4 = S7control.getinstance().readWords(addresses4);
+
+
+//     Boolean[] values = { false, true, true, true, true, true, true, true, true,
+//            true};
+//      List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
+//      Short[] values1 = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+//     List<Short> data = new ArrayList<>(Arrays.asList(values1));
+//      Short[] values2 = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+//     List<Short> data2 = new ArrayList<>(Arrays.asList(values2));
+//      Short[] values3 = { 11};
+//     List<Short> data3 = new ArrayList<>(Arrays.asList(values3));
+//      Short[] values4 = { 2,2,3,4};
+//      List<Short> data4 = new ArrayList<>(Arrays.asList(values4));
+
 
       JSONObject jsonObject = new JSONObject();
       short[] params = new short[paramlist.size()];
@@ -89,11 +131,13 @@
         boolean value = paramlist.get(i);
         params[i] = value ? (short) 1 : (short) 0;
       }
-      // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
-      // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
+
       jsonObject.append("params", params);
-      jsonObject.append("params", arraylist);
-      jsonObject.append("params", state);
+      jsonObject.append("params", data2);
+      jsonObject.append("params", data);
+      jsonObject.append("params", data3);
+      jsonObject.append("params", data4);
+
 
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter2");
       if (sendwServer != null) {
@@ -105,7 +149,7 @@
 
         List<String> messages = webSocketServer.getMessages();
 
-        String addressList = "DB2.0.0";
+        String addressList = "DB101.9.2";
 
         if (!messages.isEmpty()) {
           // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
@@ -132,7 +176,7 @@
           }
 
           // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
-//          S7control.getinstance().WriteBit(addressList, messageBooleans);
+         S7control.getinstance().WriteBit(addressList, messageBooleans);
           System.out.println("messageValues锛�" + messageBooleans);
           System.out.println("addressList锛�" + addressList);
           // 娓呯┖娑堟伅鍒楄〃
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
index a53ded8..17e0010 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -79,16 +79,16 @@
 //            Integer Plccount = this.count;
 
             // System.out.println(stt);
-            // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
-            // List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10);
+  List<Short> arraylist = S7control.getinstance().ReadWord("DB100.42", 20);
+
 //            Short[] 瀛樼墖 = { 1 };
 //            List<Short> 瀛樼墖1 = new ArrayList<>(Arrays.asList(瀛樼墖));
 //            Short[] 鎺ョ墖 = { 1 };
 //            List<Short> 鎺ョ墖1 = new ArrayList<>(Arrays.asList(鎺ョ墖));
 //            Short[] 闂磋窛 = { 1 };
 //            List<Short> 闂磋窛1 = new ArrayList<>(Arrays.asList(闂磋窛));
-            Short[] values1 = {1,1,1, 1,2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12,13,14,15,16,17,18,19,20 };
-            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+//            Short[] values1 = {1,1,1, 1,2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12,13,14,15,16,17,18,19,20 };
+//            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
 
 
             JSONObject jsonObject = new JSONObject();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java
index 31c5ad8..608bb76 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java
@@ -72,10 +72,10 @@
 //            Integer Plccount = this.count;
 
             // System.out.println(stt);
-            // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
-            // List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10);
-            Short[] values1 = { 1,2, 3, 4, 5 , 11, 12,13,14,15};
-            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+            List<Short> arraylist = S7control.getinstance().ReadWord("DB100.88", 10);
+
+//            Short[] values1 = { 1,2, 3, 4, 5 , 11, 12,13,14,15};
+//            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
 
 
             JSONObject jsonObject = new JSONObject();
@@ -94,7 +94,7 @@
             if (webSocketServer != null) {
                 List<String> messages = webSocketServer.getMessages();
 
-                String addressList3 = "DB100.12";
+                String addressList3 = "DB100.88";
 
                 if (!messages.isEmpty()) {
                     // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
new file mode 100644
index 0000000..70b6ea5
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -0,0 +1,238 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcServoManualone extends Thread {
+  String name = "";
+  Integer count = 0;
+
+  public static String readFileToString(String filePath) throws IOException {
+    File file = new File(filePath);
+    return FileUtils.readFileToString(file, "UTF-8");
+  }
+
+  public void readValue() {
+    String str = "";
+    BufferedReader bufferedReader = null;
+    FileInputStream fileInputStream;
+    try {
+      // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+      fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+      // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+      InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+      // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+      bufferedReader = new BufferedReader(inputStreamReader);
+      String line = null;
+      // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+      while ((line = bufferedReader.readLine()) != null) {
+        str += line;
+      }
+
+      // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+      JSONObject jsonObject = new JSONObject(str);
+
+      // 鑾峰彇json涓殑鍊�
+      JSONArray address = jsonObject.getJSONArray("ServoManualone");
+      for (int i = 0; i < address.size(); i++) {
+        JSONObject ress = (JSONObject) address.get(i);
+
+        this.name = ress.getStr("name");
+        this.count = ress.getInt("count");
+
+      }
+
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (UnsupportedEncodingException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void run() {
+    while (this != null) {
+      try {
+        Thread.sleep(500);
+
+      } catch (InterruptedException e) {
+        e.printStackTrace();
+      }
+//      this.readValue();
+//      String PlcAddress = this.name;
+//      Integer Plccount = this.count;
+
+
+      List<String> addresses = new ArrayList<>();
+      addresses.add("DB103.25");
+      addresses.add("DB100.144");
+      addresses.add("DB100.148-161");
+      addresses.add("DB100.184");
+      addresses.add("DB100.186");
+      addresses.add("DB100.180");
+      addresses.add("DB100.182");
+
+      List<Short> arraylist = S7control.getinstance().readWords(addresses);
+
+      List<String> addresses2 = new ArrayList<>();
+      addresses2.add("DB103.26");
+      addresses2.add("DB100.188");
+      addresses2.add("DB100.190");
+      addresses2.add("DB100.146");
+      addresses2.add("DB100.162-175");
+      List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
+
+      List<String> addresses3 = new ArrayList<>();
+      addresses3.add("DB103.42");
+      List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
+
+      List<String> addresses4 = new ArrayList<>();
+      addresses4.add("DB103.46");
+      List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
+
+      List<Short> arraylist5 = S7control.getinstance().ReadWord("DB103.27", 2);
+      List<Short> arraylist6 = S7control.getinstance().ReadWord("DB103.29", 2);
+      List<String> addresses7 = new ArrayList<>();
+      addresses7.add("DB104.24");
+      addresses7.add("DB104.26");
+      addresses7.add("DB104.20");
+      addresses7.add("DB104.22");
+      addresses7.add("DB104.28");
+      addresses7.add("DB104.30");
+      List<Short> arraylist7 = S7control.getinstance().readWords(addresses7);
+//      List<String> addresses8 = new ArrayList<>();
+//      addresses8.add("DB103.26");
+//      addresses8.add("DB103.26");
+//      addresses8.add("DB103.26");
+//      addresses8.add("DB103.26");
+//      List<Short> arraylist8 = S7control.getinstance().readWords(addresses8);
+
+//      Short[] values1 = { 1, 2, 3, 4, 5, 6, 7};
+//      List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+//      Short[] values2 = { 1, 2, 3, 4, 5};
+//      List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+
+//      Short[] values3 = {1};
+//      List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
+//      Short[] values4 = {2};
+//      List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
+//      Short[] values5 = {3,3};
+//      List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
+//      Short[] values6 = { 4,4};
+//      List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
+//      Short[] values7 = { 1,1,1,1,1,1};
+//      List<Short> arraylist7 = new ArrayList<>(Arrays.asList(values7));
+//      Short[] values8 = { 1,1,1,1,1,1};
+//      List<Short> arraylist8 = new ArrayList<>(Arrays.asList(values8));
+
+
+      JSONObject jsonObject = new JSONObject();
+
+      jsonObject.append("zuhe1", arraylist);
+      jsonObject.append("zuhe2", arraylist2);
+      jsonObject.append("zuhe3", arraylist3);
+      jsonObject.append("zuhe4", arraylist4);
+      jsonObject.append("zuhe5", arraylist5);
+      jsonObject.append("zuhe6", arraylist6);
+      jsonObject.append("guzhang", arraylist7);
+//      jsonObject.append("weihuiling", arraylist8);
+
+
+
+      WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
+      if (sendwServer != null) {
+        sendwServer.sendMessage(jsonObject.toString());
+      }
+
+      WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ServoManualone");
+      if (webSocketServer != null) {
+        List<String> messages = webSocketServer.getMessages();
+        List<String> waddresses1 = new ArrayList<>();
+        waddresses1.add("DB103.25");
+        waddresses1.add("DB100.144");
+        waddresses1.add("DB100.148-161");
+        waddresses1.add("DB100.184");
+        waddresses1.add("DB100.186");
+        waddresses1.add("DB100.180");
+        waddresses1.add("DB100.182");
+
+        List<String> waddresses2 = new ArrayList<>();
+        waddresses2.add("DB103.26");
+        waddresses2.add("DB100.188");
+        waddresses2.add("DB100.190");
+        waddresses2.add("DB100.146");
+        waddresses2.add("DB100.162-175");
+
+
+
+        if (!messages.isEmpty()) {
+          // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+          String lastMessage = messages.get(messages.size() - 1);
+//        System.out.println("lastMessage锛�" + lastMessage);
+          JSONArray messageArray = new JSONArray(lastMessage);
+
+
+
+
+          // 鍐欏叆绗竴涓湴鍧�
+          if (messageArray.getJSONArray(0).size() > 0) {
+            JSONArray jsonArray = messageArray.getJSONArray(0);
+            List<Short> 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-]", "");
+                  short val = Short.parseShort(cleanedValue.trim());
+                  sValue.add(val);
+                  System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValue.isEmpty()) {
+              S7control.getinstance().WriteWord(waddresses1, sValue);
+              System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
+            }
+          }
+
+          if (messageArray.getJSONArray(1).size() > 0) {
+            JSONArray jsonArray = messageArray.getJSONArray(1);
+            List<Short> sValue2 = 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-]", "");
+                  short val = Short.parseShort(cleanedValue.trim());
+                  sValue2.add(val);
+                  System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValue2.isEmpty()) {
+              S7control.getinstance().WriteWord(waddresses2, sValue2);
+              System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
+            }
+          }
+
+          // 娓呯┖娑堟伅鍒楄〃
+          webSocketServer.clearMessages();
+        }
+      }
+    }
+  }
+}
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 cf088ab..60f5831 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,18 +1,10 @@
 package com.example.springboot.component;
 
 import cn.hutool.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-
-import org.springframework.web.bind.annotation.PostMapping;
-
-import com.example.springboot.common.Result;
-import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
+import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.mapper.HomeMapper;
 import com.example.springboot.mapper.SpianMapper;
 import com.example.springboot.service.JdbcConnections;
@@ -45,12 +37,18 @@
             List<StorageCage> cagelist3 = homeMapper.selectRack3();
             List<StorageCage> cagelist4 = homeMapper.selectRack4();
             jsonObject.append("cagelist1", cagelist1);
-            jsonObject.append("cagelist2", (Object) cagelist2);
+            jsonObject.append("cagelist2", cagelist2);
             jsonObject.append("cagelist3", cagelist3);
             jsonObject.append("cagelist4", cagelist4);
             // 杩涘嚭鐗囦换鍔�
             List<StorageCage> tasklist1 = homeMapper.selectinout(3);
             List<StorageCage> tasklist2 = homeMapper.selectinout(2);
+            for (StorageCage storageCage : tasklist1) {
+                storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
+            }
+            for (StorageCage storageCage : tasklist2) {
+                storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
+              }
             jsonObject.append("tasklist1", tasklist1);
             jsonObject.append("tasklist2", tasklist2);
             // 鏌ヨ鎶ヨ淇℃伅
@@ -62,17 +60,18 @@
             // addressList.add("DB106.0");
             // List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
             // if (paramlist != null) {
-            //     jsonObject.append("params", paramlist);
+            // jsonObject.append("params", paramlist);
             // }
             // // 鑾峰彇杩涚墖杞︾姸鎬�
-            // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8", 1);// 鑾峰彇杩涚墖杞︾姸鎬�
+            // 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);
+            // if (inglassInfo.size() > 0)
+            // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
             // }
             // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
             String queid = spianMapper.Selectqueueid();
@@ -80,8 +79,10 @@
             jsonObject.append("queid", queid);
             jsonObject.append("state", state);
             // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
-            Glass form2 = homeMapper.GetQueueInfo(2);
-            Glass form3 = homeMapper.GetQueueInfo(1);
+            String queueglassid2 = homeMapper.GetQueueInfo(2);
+            String queueglassid1 = homeMapper.GetQueueInfo(1);
+            north_glass_buffer1 form2 = homeMapper.SelectGlassByGlassID(queueglassid2);
+            north_glass_buffer1 form3 = homeMapper.SelectGlassByGlassID(queueglassid1);
             jsonObject.append("form2", form2);
             jsonObject.append("form3", form3);
             // List<Short> paramlists = new ArrayList<Short>();
@@ -91,7 +92,6 @@
             // paramlists.add(para2);
             // System.out.println(paramlists);
 
-            
             dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
             boolean dbconnected = false;
             try {
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 5caea97..e207db3 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
@@ -79,16 +79,36 @@
      * @param datas   word鐨勫��
      */
     public void WriteWord(List<String> address, List<Short> datas) {
-        if (s7PLC==null)
+        if (s7PLC == null)
             return;
-        // s7PLC.write(address, data);
 
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
         for (int i = 0; i < address.size(); i++) {
-            addressWrite.addInt16(address.get(i), datas.get(i));
+            String addr = address.get(i);
+            short data = datas.get(i);
+
+            if (addr.contains("-")) {
+                // 澶勭悊鑼冨洿鍦板潃
+                String[] range = addr.split("-");
+                if (range.length == 2) {
+                    String startAddr = range[0].trim();
+                    String endAddr = range[1].trim();
+
+                    int startIndex = Integer.parseInt(startAddr.substring(startAddr.indexOf('.') + 1));
+                    int endIndex = Integer.parseInt(endAddr.substring(endAddr.indexOf('.') + 1));
+
+                    for (int j = startIndex; j <= endIndex; j++) {
+                        String currentAddress = startAddr.substring(0, startAddr.indexOf('.') + 1) + j;
+                        s7PLC.writeInt16(currentAddress, data); // 灏嗘暟鎹啓鍏ュ綋鍓嶅湴鍧�
+                    }
+                }
+            } else {
+                // 澶勭悊鍗曚釜鍦板潃
+                s7PLC.writeInt16(addr, data); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
+            }
         }
-        s7PLC.writeMultiData(addressWrite);
     }
+
+
 
 
 
@@ -255,6 +275,42 @@
         return s7PLC.readBoolean(addresslist);
     }
 
+    public List<Boolean> readBits(List<String> addressList) {
+        if (s7PLC == null)
+            return null;
+
+        List<Boolean> result = new ArrayList<>();
+
+        for (String address : addressList) {
+            if (address.contains("~")) {
+                String[] range = address.split("~");
+                String startAddress = range[0];
+                String endAddress = range[1];
+
+                int startIndex = extractAddressNumber(startAddress);
+                int endIndex = extractAddressNumber(endAddress);
+
+                String prefix = startAddress.substring(0, startAddress.indexOf(".") + 1);
+
+                for (int i = startIndex; i <= endIndex; i++) {
+                    String newAddress = prefix + i;
+                    result.add(s7PLC.readBoolean(newAddress));
+                }
+            } else {
+                result.add(s7PLC.readBoolean(address));
+            }
+        }
+
+        return result;
+    }
+
+
+    private int extractAddressNumber(String address) {
+        String numberStr = address.replaceAll("\\D+", ""); // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨暟瀛楅儴鍒�
+        return Integer.parseInt(numberStr);
+    }
+
+
     /**
      * 浠庢寚瀹氱殑鍦板潃寮�濮� 杩炵画鎸塨it浣嶈鍙�
      *
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 04444d3..c773316 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
@@ -1,23 +1,30 @@
 package com.example.springboot.controller;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.logging.log4j.util.PropertySource.Comparator;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import com.example.springboot.mapper.HomeMapper;
 import com.example.springboot.mapper.SpianMapper;
 import com.example.springboot.service.HomeService;
+import com.example.springboot.service.MultiFieldComparator;
 import com.example.springboot.service.SpianService;
 import com.example.springboot.common.Result;
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.CarPosition;
-import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
+import com.example.springboot.entity.north_glass_buffer1;
+import com.example.springboot.entity.Out_slice;
 
 import org.springframework.web.bind.annotation.*;
+
 
 @RestController
 @RequestMapping("/home")
@@ -62,6 +69,9 @@
   @GetMapping("/loadinout")
   public Result selectinout(Integer types) {
     List<StorageCage> storageCageinout = homeMapper.selectinout(types);
+    for (StorageCage storageCage : storageCageinout) {
+      storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
+    }
     Map<String, Object> map = new HashMap<>();
     map.put("list", storageCageinout);
     return Result.success(map);
@@ -110,11 +120,9 @@
     homeMapper.UpdateTask(types);
     StorageCage glass = homeMapper.SelectGlassInfo(glassid);
     if (types == 0) {
-      // spianMapper.UpdataAddCage1(glass.getGlassWidth(),glass.getCage(),glass.getCell());
       homeMapper.UpdateCageTask1(glassid);
       S7control.getinstance().WriteWord("DB105.14", (short) 0);
     } else {
-
       spianMapper.UpdataOutCage1(glass.getGlassWidth(), glass.getCage(), glass.getCell());
       homeMapper.UpdateCageTask2(glassid);
       S7control.getinstance().WriteWord("DB105.12", (short) 0);
@@ -136,6 +144,9 @@
   @GetMapping("/SelectCageInfo")
   public Result SelectCageInfo(short cage) {
     List<StorageCage> cageinfo = homeMapper.SelectCageInfo(cage);
+    for (StorageCage storageCage : cageinfo) {
+      storageCage.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(storageCage.getGlassId()));
+    }
     Map<String, Object> map = new HashMap<>();
     map.put("cageinfo", cageinfo);
     return Result.success(map);
@@ -193,9 +204,9 @@
   // 鏍规嵁鐜荤拑id鏌ヨ鐜荤拑淇℃伅
   @GetMapping("/SelectGlassByGlassID")
   public Result SelectGlassByGlassID(String glassid) {
-    Glass Glass = homeMapper.SelectGlassByGlassID(glassid);
+    north_glass_buffer1 north_glass_buffer1s = homeMapper.SelectGlassByGlassID(glassid);
     Map<String, Object> map = new HashMap<>();
-    map.put("form", Glass);
+    map.put("form", north_glass_buffer1s);
     return Result.success(map);
   }
 
@@ -210,14 +221,14 @@
 
   // 鎵嬪姩寰�鐞嗙墖绗兼坊鍔犵幓鐠�
   @PostMapping("/Inglassid")
-  public Result Inglassid(short cage, short cell, short tier, @RequestBody Glass glass) {
+  public Result Inglassid(short cage, short cell, short tier, @RequestBody north_glass_buffer1 north_glass_buffer1s) {
     Map<String, Object> map = new HashMap<>();
-    short result = homeMapper.SelectStorageByGlassId(glass.getGlassId());
+    short result = homeMapper.SelectStorageByGlassId(north_glass_buffer1s.getbarcode());
     if (result > 0) {
       map.put("message", "300");
     } else {
-      homeMapper.Inglassid(glass, cage, cell, tier);
-      spianMapper.UpdataAddCage1(glass.getwidth(), cage, cell);
+      homeMapper.Inglassid(north_glass_buffer1s, cage, cell, tier);
+      spianMapper.UpdataAddCage1(north_glass_buffer1s.getglasslengthMm(), cage, cell);
     }
     return Result.success(map);
   }
@@ -226,7 +237,7 @@
   @PostMapping("/SelectGlass")
   public Result SelectGlass(String orderid) {
     Map<String, Object> map = new HashMap<>();
-    List<Glass> glass = homeMapper.SelectGlass(orderid);
+    List<north_glass_buffer1> glass = homeMapper.SelectGlass(orderid);
     map.put("glass", glass);
     return Result.success(map);
   }
@@ -240,6 +251,8 @@
       map.put("message", "300");
     } else {
       homeMapper.InsertQueueGlassId(glassid, id);
+    //璋冪敤浼嶅瓨鍌ㄨ繃绋�
+    spianMapper.selectAll(glassid);
       map.put("message", "200");
     }
     return Result.success(map);
@@ -263,4 +276,100 @@
     return Result.success(map);
   }
 
+  // 鏌ヨ姝よ鍗曞湪鐞嗙墖绗奸噷鐨勭幓鐠冩暟
+  @PostMapping("/SelectGlassNo")
+  public Result SelectGlassNo(String orderid) {
+    Short count = homeMapper.SelectGlassNo(orderid);
+    Map<String, Object> map = new HashMap<>();
+    map.put("count", count);
+    return Result.success(map);
+  }
+
+  // 鏍规嵁閾濇id鑾峰彇瀵瑰簲鐜荤拑淇℃伅
+  @PostMapping("/SelectAluminumFrameInfoById")
+  public Result SelectAluminumFrameInfoById(String FrameBarcode) {
+    List<north_glass_buffer1> listAluminumFrame = homeMapper.SelectAluminumFrameInfoById(FrameBarcode);
+    String flip=homeMapper.SelectFlipByFrameBarcode(FrameBarcode);
+    for (north_glass_buffer1 north_glass_buffer1 : listAluminumFrame) {
+      north_glass_buffer1.setstorageCage(homeMapper.SelectStorageGlassById(north_glass_buffer1.getbarcode()));
+      north_glass_buffer1.setOut_slice(homeMapper.SelectQueueByglassid(north_glass_buffer1.getbarcode()));
+    }
+    Map<String, Object> map = new HashMap<>();
+    map.put("listAluminumFrame", listAluminumFrame);
+    map.put("flip", flip);
+    return Result.success(map);
+  }
+  
+  
+
+  // 鏌ヨ鍑虹墖闃熷垪鏁版嵁
+  @PostMapping("/SelectProductionqueue")
+  public Result SelectProductionqueue() {
+    List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
+    for (Out_slice out_slice : listoutslice) {
+      out_slice.setnorth_glass_buffer1s(homeMapper.SelectBoxNo(out_slice.getGlassId()));
+      out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
+    }
+    
+    //HashMap<String,List<Out_slice>> map=new HashMap<String,List<Out_slice>>();
+    // HashMap map=new HashMap<>();
+    // for (Out_slice out_slice : listoutslice) {
+    //   String key_=out_slice.getState()+"-";
+    //   if (map.get(key_)==null) {
+    //     List<Out_slice> lists=new ArrayList<Out_slice>();
+    //     lists.add(out_slice);
+    //     map.put(key_, lists);
+    //   }else{
+    //     List<Out_slice> lists=(List<Out_slice>)map.get(key_);
+    //     lists.add(out_slice);
+    //     map.put(key_,lists);
+    //   }
+    // }
+    // System.out.println(map);
+
+    // List<Out_slice> listskey=(List<Out_slice>)map.get("1-");
+    // List<Out_slice> list=new ArrayList<Out_slice>();
+    // for (Out_slice out_slice : listskey) {
+    //   if (list.isEmpty()) {
+    //     list.add(out_slice);
+    //   }else{
+    //     for (int i=0;i<list.size();i++) {
+    //       Out_slice out_slice2=list.get(i);
+    //       if(out_slice.getID()>out_slice2.getID()){
+    //         continue;
+    //       }else{
+    //         list.add(i,out_slice2);
+    //       }
+    //     }
+    //   }
+    // }
+    //Collections.sort(listoutslice,new MultiFieldComparator());
+
+    Map<String, Object> maps = new HashMap<>();
+    maps.put("listoutslice", listoutslice);
+    return Result.success(maps);
+  }
+
+  // 鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
+  @PostMapping("/DeleteProductionQueueGlass")
+  public Result DeleteProductionQueueGlass(Short id) {
+    homeMapper.DeleteProductionQueueGlass(id);
+    Map<String, Object> map = new HashMap<>();
+    map.put("message", "200");
+    return Result.success(map);
+  }
+
+  // 
+  @PostMapping("/AddOutSliceS")
+  public Result AddOutSliceS(@RequestBody String[][] AluminumFrames ) {
+    for (String[] item : AluminumFrames) {
+      if(item[1]=="true"){
+        homeMapper.AddOutSliceS(item[0],item[2],item[3],item[4],item[5]);
+      }
+    }
+    System.out.println(AluminumFrames);
+    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/entity/Out_slice.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
new file mode 100644
index 0000000..84e3004
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java
@@ -0,0 +1,101 @@
+package com.example.springboot.entity;
+
+public class Out_slice {
+    private int id;
+    private String glassId;
+    private String barcode;
+    private double glasswidth;
+    private double glassheight;
+    private int state;
+    private String time;
+
+    private north_glass_buffer1 north_glass_buffer1s;
+
+    public void setnorth_glass_buffer1s(north_glass_buffer1 north_glass_buffer1s) {
+        this.north_glass_buffer1s = north_glass_buffer1s;
+    }
+    
+    public north_glass_buffer1 getnorth_glass_buffer1s() {
+        return north_glass_buffer1s;
+    }
+
+    private StorageCage storageCage;
+
+    public void setstorageCage(StorageCage storageCage) {
+        this.storageCage = storageCage;
+    }
+    
+    public StorageCage getstorageCage() {
+        return storageCage;
+    }
+
+    public Out_slice() {
+    }
+
+    public Out_slice(int ID, String glassId, String barCode, double glasswidth, double glassheight, int state, String time) {
+        this.id = ID;
+        this.glassId = glassId;
+        this.barcode = barCode;
+        this.glasswidth = glasswidth;
+        this.glassheight = glassheight;
+        this.state = state;
+        this.time = time;
+    }
+
+    public int getID() {
+        return id;
+    }
+
+    public String getGlassId() {
+        return glassId;
+    }
+
+    public String getBarCode() {
+        return barcode;
+    }
+
+    public double getGlasswidth() {
+        return glasswidth;
+    }
+
+    public double getGlassheight() {
+        return glassheight;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setID(int ID) {
+        this.id = ID;
+    }
+
+    public void setGlassId(String glassId) {
+        this.glassId = glassId;
+    }
+
+public void setBarCode(String barCode) {
+        barcode = barCode;
+    }
+
+    public void setGlasswidth(double glasswidth) {
+        this.glasswidth = glasswidth;
+    }
+
+    public void setGlassheight(double glassheight) {
+        this.glassheight = glassheight;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+    
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
index 2c952ab..30e8ff6 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java
@@ -1,5 +1,7 @@
 package com.example.springboot.entity;
 
+
+
 public class StorageCage {
     private Integer id;
     private Integer prcId;
@@ -14,6 +16,28 @@
     private String orderId;
     private Integer disabled;
     private String lengthWidth;
+    private String listno;
+    private String boxno;
+
+    private north_glass_buffer1 north_glass_buffer1s;
+
+    public void setnorth_glass_buffer1s(north_glass_buffer1 north_glass_buffer1s) {
+        this.north_glass_buffer1s = north_glass_buffer1s;
+    }
+    
+    public north_glass_buffer1 getnorth_glass_buffer1s() {
+        return north_glass_buffer1s;
+    }
+
+    private Out_slice outSlice;
+
+    public void setout_slice(Out_slice outSlice) {
+        this.outSlice = outSlice;
+    }
+    
+    public Out_slice getout_slice() {
+        return outSlice;
+    }
 
     public Integer id() {
         return id;
@@ -122,4 +146,22 @@
     public void setLengthWidth(String lengthWidth) {
         this.lengthWidth = lengthWidth;
     }
+
+    public String getListno() {
+        return listno;
+    }
+
+    public void setListno(String listno) {
+        this.listno = listno;
+    }
+
+    public String getBoxno() {
+        return boxno;
+    }
+
+    public void setBoxno(String boxno) {
+        this.boxno = boxno;
+    }
+
+    
 }
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 97842af..370e790 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
@@ -8,8 +8,17 @@
     private String barcode;//鐜荤拑id
     private double glasslength;//鐜荤拑瀹�
     private double glassheight;//鐜荤拑楂�
-    private double glasslength_mm;//鐜荤拑瀹絤m
-    private double glassheight_mm;//鐜荤拑楂榤m
+    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 datemodified;//
+    private String datecreated;//
+    private String FrameBarcode;//
 
     public Integer id() {
         return id;
@@ -65,20 +74,50 @@
         this.glassheight = glassheight;
     }
 
-    public Double getglasslength_mm() {
-        return glasslength_mm;
+    public Double getglasslengthmm() {
+        return glasslengthmm;
     }
-    public void setglasslength_mm(Double glasslength_mm) {
-        this.glasslength_mm = glasslength_mm;
+    public void setglasslengthmm(Double glasslengthmm) {
+        this.glasslengthmm = glasslengthmm;
     }
 
-    public Double glassheight_mm() {
-        return glassheight_mm;
+    public Double glassheightmm() {
+        return glassheightmm;
     }
-    public void setglassheight_mm(Double glassheight_mm) {
-        this.glassheight_mm = glassheight_mm;
+    public void setglassheightmm(Double glassheightmm) {
+        this.glassheightmm = glassheightmm;
     }
 
+    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/entity/out_slice.java b/springboot-vue3/src/main/java/com/example/springboot/entity/out_slice.java
new file mode 100644
index 0000000..84e3004
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/out_slice.java
@@ -0,0 +1,101 @@
+package com.example.springboot.entity;
+
+public class Out_slice {
+    private int id;
+    private String glassId;
+    private String barcode;
+    private double glasswidth;
+    private double glassheight;
+    private int state;
+    private String time;
+
+    private north_glass_buffer1 north_glass_buffer1s;
+
+    public void setnorth_glass_buffer1s(north_glass_buffer1 north_glass_buffer1s) {
+        this.north_glass_buffer1s = north_glass_buffer1s;
+    }
+    
+    public north_glass_buffer1 getnorth_glass_buffer1s() {
+        return north_glass_buffer1s;
+    }
+
+    private StorageCage storageCage;
+
+    public void setstorageCage(StorageCage storageCage) {
+        this.storageCage = storageCage;
+    }
+    
+    public StorageCage getstorageCage() {
+        return storageCage;
+    }
+
+    public Out_slice() {
+    }
+
+    public Out_slice(int ID, String glassId, String barCode, double glasswidth, double glassheight, int state, String time) {
+        this.id = ID;
+        this.glassId = glassId;
+        this.barcode = barCode;
+        this.glasswidth = glasswidth;
+        this.glassheight = glassheight;
+        this.state = state;
+        this.time = time;
+    }
+
+    public int getID() {
+        return id;
+    }
+
+    public String getGlassId() {
+        return glassId;
+    }
+
+    public String getBarCode() {
+        return barcode;
+    }
+
+    public double getGlasswidth() {
+        return glasswidth;
+    }
+
+    public double getGlassheight() {
+        return glassheight;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setID(int ID) {
+        this.id = ID;
+    }
+
+    public void setGlassId(String glassId) {
+        this.glassId = glassId;
+    }
+
+public void setBarCode(String barCode) {
+        barcode = barCode;
+    }
+
+    public void setGlasswidth(double glasswidth) {
+        this.glasswidth = glasswidth;
+    }
+
+    public void setGlassheight(double glassheight) {
+        this.glassheight = glassheight;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+    
+}
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 a9598f5..d6236e3 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
@@ -6,6 +6,9 @@
 import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
+import com.example.springboot.entity.north_glass_buffer1;
+import com.example.springboot.entity.north_glass_buffer1_frames;
+import com.example.springboot.entity.Out_slice;
 
 import java.util.List;
 
@@ -32,7 +35,7 @@
   List<StorageCage> selectRack4();
 
   // 鏍规嵁浠诲姟绫诲瀷鏌ヨ褰撳墠姝e湪鍑虹墖锛岃繘鐗囩殑鐜荤拑淇℃伅
-  @Select("select a.*,concat(round(a.glasswidth*b.conversionrate,2),' x ',round(a.glassheight*b.conversionrate,2)) as lengthwidth from storage_cage as a,conver as b where a.state=#{task_type} limit 1")
+  @Select("select *,concat(glasswidth,' x ',glassheight) as lengthwidth from storage_cage where state=#{task_type}")
   List<StorageCage> selectinout(@Param("task_type") Integer task_type);
 
   // 鏌ヨ鏄惁瀛樺湪姝よ鍗�
@@ -68,7 +71,7 @@
   List<alarmmg> SelectAlarmmgInfo();
 
   //鑾峰彇鐞嗙墖绗煎唴鐜荤拑淇℃伅
-  @Select("select *,concat(round(a.glasswidth*b.conversionrate,2),' x ',round(a.glassheight*b.conversionrate,2)) as lengthwidth from storage_cage  as a,conver as b  ")
+  @Select("select *,concat(round(a.glasswidth),' x ',round(a.glassheight)) as lengthwidth from storage_cage as a")
   List<StorageCage> SelectCageInfo(short cage);
 
   @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null where glass_id=#{glassid}")
@@ -87,28 +90,29 @@
   StorageCage SelectGlassInfo(String glassid);
 
   //鏌ヨ鐜荤拑淇℃伅
- @Select("select * from glass where glassid=#{glassid}")
-  Glass SelectGlassByGlassID(String glassid);
+//  @Select("select * from glass where glassid=#{glassid}")
+  @Select("SELECT ordernumber,listnumber,boxnumber,barcode,glasslength,glassheight,glasslength_mm,glassheight_mm FROM north_glass_buffer1 where barcode=#{barcode}")
+  north_glass_buffer1 SelectGlassByGlassID(String barcode);
 
   //鍚敤/绂佺敤鐞嗙墖绗兼牸瀛�
   @Update("update storage_cage set disabled=#{disabled} where cage=#{cage} and cell=#{cell}")
   void Disabled(short cage, short cell, short disabled);
 
   //鐞嗙墖绗兼柊澧炵幓鐠�
-  @Update("update storage_cage set state=1,glass_id=#{glass.glassId},order_id=#{glass.orderId},glasswidth=#{glass.width},glassheight=#{glass.height} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
-  void Inglassid(Glass glass, short cage, short cell, short tier);
+  @Update("update storage_cage set state=1,glass_id=#{glass.barcode},order_id=#{glass.ordernumber},glasswidth=#{glass.glasslengthMm},glassheight=#{glass.glassheightMm} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
+  void Inglassid(north_glass_buffer1 glass, short cage, short cell, short tier);
 
   //鏌ヨ鐞嗙墖绗间腑鏄惁鏈夋鐜荤拑
   @Select("select count(*) from storage_cage where glass_id=#{glassId}")
   short SelectStorageByGlassId(String glassId);
 
   //鏍规嵁璁㈠崟鏌ヨ鐜荤拑淇℃伅
-  @Select("select * from glass where position(#{orderid} in orderid)")
-  List<Glass> SelectGlass(String orderid);
+  @Select("select * from north_glass_buffer1 where position(#{orderid} in ordernumber)")
+  List<north_glass_buffer1> SelectGlass(String orderid);
 
   //鑾峰彇涓婄墖闃熷垪淇℃伅
-  @Select("select gl.* from queue qe inner join glass gl on qe.glassid=gl.glassid where qe.id=#{id}")
-  Glass GetQueueInfo(int id);
+  @Select("select glassid from queue where id=#{id}")
+  String GetQueueInfo(int id);
 
   //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
   @Select("update queue set glassid=#{glassid},state=1 where id=#{id}")
@@ -119,8 +123,48 @@
   void UpdateQueueState();
 
   //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
-  @Select("update queue set glassid='' where id=#{id}")
+  @Select("update queue set glassid='',state=0 where id=#{id}")
   void DeleteQueueGlass(String id);
 
-  
+  //鏌ヨ姝よ鍗曞湪鐞嗙墖绗奸噷鐨勭幓鐠冩暟
+  @Select("select count(*) from storage_cage where order_id=#{orderid}")
+  Short SelectGlassNo(String orderid);
+
+  //鏍规嵁鐜荤拑id浠庡鎴疯〃鏌ヨ鏁版嵁
+  @Select("select * from north_glass_buffer1 where barcode=#{glassid}")
+  north_glass_buffer1 SelectBoxNo(String glassid);
+
+  //鏌ヨ鍑虹墖闃熷垪淇℃伅
+  @Select("select * from out_slice where state=0 or state=1")
+  List<Out_slice> SelectProductionqueue();
+
+  //鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
+  @Select("select * from storage_cage where glass_id=#{glassid}")
+  StorageCage SelectStorageGlassById(String glassid);
+
+
+  //鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
+  @Select("update out_slice set state=3 where id=#{id}")
+  void DeleteProductionQueueGlass(Short id);
+
+  //鏍规嵁閾濇id鏌ヨ瀵瑰簲鐜荤拑淇℃伅
+  @Select("select * from north_glass_buffer1 where FrameBarcode=#{FrameBarcode}")
+  List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode);
+
+  //鏌ヨ鏍规嵁id鏌ヨ
+  @Select("select b.* from storage_cage a inner join out_slice b on a.glass_id=b.glassId where b.glassId=#{glassId}")
+  List<Out_slice> SelectOutSliceById(String glassId);
+
+  //鏌ヨ鐜荤拑id鏄惁
+  @Select("select Flip from north_glass_buffer1_frames where Barcode=#{frameBarcode} limit 1")
+  String SelectFlipByFrameBarcode(String frameBarcode);
+
+  //鏌ヨ鐜荤拑鏄惁宸插瓨鍦ㄤ簬鍑虹墖闃熷垪
+  @Select("select * from out_slice where glassid=#{getbarcode} and (state=0 or state=1)")
+  Out_slice SelectQueueByglassid(String getbarcode);
+
+  //鏌ヨ鐜荤拑鏄惁宸插瓨鍦ㄤ簬鍑虹墖闃熷垪
+  @Select("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, 0, #{flip});")
+  void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm);
+
 }
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 301ab96..86dbe5a 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
@@ -1,10 +1,11 @@
 package com.example.springboot.mapper;
-
 import org.apache.ibatis.annotations.*;
+
 
 import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
+import com.example.springboot.entity.north_glass_buffer1;
 
 import java.util.List;
 
@@ -13,170 +14,139 @@
 @Mapper
 
 public interface SpianMapper {
-  // 鍒ゆ柇鐩搁偦绗煎瓙鏄惁鏈夌┖鏍�
-  @Select("select COUNT(if(a.state1=0,cell,null))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) GROUP BY cage ORDER BY cell desc LIMIT 1")
-  int selectCage(int cage1);
+    //鍒ゆ柇鐩搁偦绗煎瓙鏄惁鏈夌┖鏍�  
+    @Select("select COUNT(if(a.state1=0,cell,null))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) GROUP BY cage ORDER BY cell desc LIMIT 1")
+     int selectCage(int  cage1);
+     
+     //@Select("(select*from storage_cage as a  where a.state=0 and cage%2=0 ORDER BY id LIMIT 1)union (select a.* from storage_cage a inner join  (select cage,if(shu2=1,shu3,shu5) as gezi from ( select  cage, count(case when state1=1 and state2=0 then cell else null end)as shu1,  count(case when state1=0 then cell else null end) as shu2, min(case when state1=1 and state2=0 then cell else null end) as shu3, min(case when state1=0 then cell else null end) as shu4, min(case when state1=0 or state2=0 then cell else null end) as shu5 from  (select *,max(state) as state1,min(state) as state2 from storage_cage group by cage,cell) as a where  cage%2!=0  GROUP BY cage HAVING shu2>1 or (shu2=1 and shu1>0)  ) as sss limit 1)as b on a.cage=b.cage and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;")
+    //鑾峰彇璁㈠崟鍙锋帓搴忕殑绌鸿鍗曠瀛�
+     @Select("select a.cage,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1 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 shu desc,shu2,cage asc; ")
+     List<StorageCage> selectAll(String orderids);
+    //鑾峰彇鍒ゆ柇璇ユ牸瀛愭槸鍚﹂渶瑕佹妸澶栫墖鎺ㄥ叆鍐呯墖浣嶇疆
+     @Select("select state from storage_cage where  cage=#{cage} and cell=#{cell} and tier=1;")
+     int selectcell(int cage,int cell);
+     //鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚搴︾┖鏍�
+     @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} ORDER BY cell asc,tier asc LIMIT 1")
+     StorageCage selectCage1(int  cage1,int cell,double width);
+     //鍒ゆ柇绗煎瓙鍐呯幓鐠冩暟
+     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=1;")
+     int selectsum(int cage,int cell);
 
-  // @Select("(select*from storage_cage as a where a.state=0 and cage%2=0 ORDER BY
-  // id LIMIT 1)union (select a.* from storage_cage a inner join (select
-  // cage,if(shu2=1,shu3,shu5) as gezi from ( select cage, count(case when
-  // state1=1 and state2=0 then cell else null end)as shu1, count(case when
-  // state1=0 then cell else null end) as shu2, min(case when state1=1 and
-  // state2=0 then cell else null end) as shu3, min(case when state1=0 then cell
-  // else null end) as shu4, min(case when state1=0 or state2=0 then cell else
-  // null end) as shu5 from (select *,max(state) as state1,min(state) as state2
-  // from storage_cage group by cage,cell) as a where cage%2!=0 GROUP BY cage
-  // HAVING shu2>1 or (shu2=1 and shu1>0) ) as sss limit 1)as b on a.cage=b.cage
-  // and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;")
-  // 鑾峰彇璁㈠崟鍙锋帓搴忕殑绌鸿鍗曠瀛�
-  @Select("select a.cage,COUNT(if(a.order_id=#{orderids},a.order_id,null))as orderid,b.shu,c.shu2,a.cell,min(a.state)as state1 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 shu desc,shu2,cage asc; ")
-  List<StorageCage> selectAll(String orderids);
+    //@Update("update longzi set glass_id = #{glass_id}, width = #{width}, state = #{state} where cell = #{cell}")
+    @Update("update longzi set glass_id =123, width =1600, state =1 where cell =24")
+     void  update();
+     //鑾峰彇鐜荤拑淇℃伅
+     @Select("select orderid as ordernumber,width as glasslengthmm from glass where glassid=#{glassid}")
+     north_glass_buffer1 selectGlass(String glassid);
+    
+    @Insert("insert into storage_task(task_type,task_state,shelf_rack,load_rack)values(#{storage_task},#{task_state},#{shelf_rack},#{load_rack})")
+     void insert(StorageTask storageTask);
+    
+    //鍑虹墖浠诲姟鏌ヨ
+    @Select("select COUNT(order_id)order_id,cage,cell,glasswidth,tier,ROUND(id/2)as prcId,glass_id from storage_cage a where a.order_id=#{orderId} GROUP BY cage,cell ORDER BY cage desc,order_id desc,cell desc,glasswidth desc limit 1")
+     StorageCage selectOut(String  orderId);
+    // @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
+    //  StorageCage selectOut(String  orderId);
+    //鎸夌幓鐠僆D鍑虹墖浠诲姟鏌ヨ
+    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.glass_id=#{glassid} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
+     StorageCage selectOut2(String  glassid);
 
-  // 鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚搴︾┖鏍�
-  @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} ORDER BY cell asc,tier desc LIMIT 1")
-  StorageCage selectCage1(int cage1, int cell, double width);
+    //鍒ゆ柇鍑虹墖涓�1鏃讹紝鏄惁鍙洿鎺ュ嚭鐗�
+    @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell}")
+     int selectGlassState(int  cage,int cell);
 
-  // 鍒ゆ柇绗煎瓙鍐呯幓鐠冩暟
-  @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=1;")
-  int selectsum(int cage, int cell);
+     //鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
+     @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
+     StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
 
-  // @Update("update longzi set glass_id = #{glass_id}, width = #{width}, state =
-  // #{state} where cell = #{cell}")
-  @Update("update longzi set glass_id =123, width =1600, state =1 where cell =24")
-  void update();
+    //鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
+    @Update("update storage_cage as a set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};")
+    void UpdataGlassCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state);
 
-  // 鑾峰彇鐜荤拑淇℃伅
-  @Select("select orderid,width from glass where glassid=#{glassid}")
-  Glass selectGlass(String glassid);
+    //淇敼绗煎瓙淇℃伅(杩涚墖)
+    @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};")
+    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=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};")
+    void UpdataAddqueCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state);
+    //淇敼鍚岀瀛愭牸瀛愬搴�
+     @Update("update storage_cage set width=width-#{width} where   cage=#{cage} and cell=#{cell};")
+    void UpdataAddCage1(double width,int cage,int cell);
+    //淇敼鍚岀瀛愭牸瀛愬搴�
 
-  @Insert("insert into storage_task(task_type,task_state,shelf_rack,load_rack)values(#{storage_task},#{task_state},#{shelf_rack},#{load_rack})")
-  void insert(StorageTask storageTask);
-
-  // 鍑虹墖浠诲姟鏌ヨ
-  @Select("select COUNT(order_id)order_id,cage,cell,glasswidth,tier,ROUND(id/2)as prcId,glass_id from storage_cage a where a.order_id=#{orderId} GROUP BY cage,cell ORDER BY cage desc,order_id desc,cell desc,glasswidth desc limit 1")
-  StorageCage selectOut(String orderId);
-
-  // @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id,glass_id
-  // from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage
-  // desc,tier desc,cell desc LIMIT 1")
-  // StorageCage selectOut(String orderId);
-  // 鎸夌幓鐠僆D鍑虹墖浠诲姟鏌ヨ
-  @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.glass_id=#{glassid} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
-  StorageCage selectOut2(String glassid);
-
-  // 鍒ゆ柇鍑虹墖涓�1鏃讹紝鏄惁鍙洿鎺ュ嚭鐗�
-  @Select("select COUNT(state) from storage_cage where cage=#{cage} and cell=#{cell}")
-  int selectGlassState(int cage, int cell);
-
-  // 鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
-  @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
-  StorageCage selectGlassCage(int cage, double width, int cage1, int cage2);
-
-  // 鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
-  @Update("update storage_cage as a set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};")
-  void UpdataGlassCage(String orderid, String glassid, double width, int cage, int cell, int tier, int state);
-
-  // 淇敼绗煎瓙淇℃伅(杩涚墖)
-  @Update("update storage_cage set state=#{state},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};")
-  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=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};")
-  void UpdataAddqueCage(String orderid, String glassid, double width, int cage, int cell, int tier, int state);
-
-  // 淇敼鍚岀瀛愭牸瀛愬搴�
-  @Update("update storage_cage set width=width-#{width} where   cage=#{cage} and cell=#{cell};")
-  void UpdataAddCage1(double width, int cage, int cell);
-
-  // 淇敼鍚岀瀛愭牸瀛愬搴�
-  @Update("update storage_cage set state=#{state} where   state=#{oldstate};")
-  void UpdataAddCageState(int state, int oldstate);
-
-  // 淇敼鍚岀瀛愭牸瀛愬搴�(鍑虹墖)
-  @Update("update storage_cage set width=width+#{width} where   cage=#{cage} and cell=#{cell};")
-  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=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth where a.id=#{id1}")
-  void UpdateDBCage(int id1, int cage, int cell);
-
-  // @Insert("insert into user(name, date, address, user_no) values (#{name},
-  // #{date}, #{address}, #{userNo})")
-  // void insert (Spian spian);
-  // 鏂板浠诲姟琛�
-  @Insert("INSERT INTO `canadames`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid});")
-  void Inserttask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid);
-
-  // 淇敼浠诲姟琛�
-  @Update("update storage_task set task_state=#{state} where task_type=#{type} and task_state=0;")
-  void Updatetask(int state, int type);
-
-  // 淇敼浠诲姟琛�
-  @Update("update storage_task set task_state=1 where (task_type=1 or task_type=2) and task_state=0;")
-  void UpdatetaskOut();
-
-  // 鏌ヨ鎸夎鍗曞嚭鐗�
-  @Select("select order_id state from order_out where state=0")
-  String SelectOrderout();
-
-  // 鍐呭鐗囪皟鎹�
-  @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth where a.cage=#{cage} and a.cell=#{cell} and a.tier=1")
-  void UpdateDBCage1(int cage, int cell);
-
-  // 娓呴櫎鍐呯墖鏁版嵁
-  @Update("update storage_cage set glass_id='',order_id='',state=0,glasswidth=0 where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
-  void UpdateDBCage2(int cage, int cell);
-
-  // 鍒ゆ柇鏄惁鏈夎皟鎷ㄥ畬鍚庡嚭鐗囩殑浠诲姟
-  @Select("select COUNT(*)as id,glass_id from storage_task where (task_type=1 or task_type=2) and task_state=0;")
-  Glass SelectDBOut();
-
-  // 鏍规嵁绗煎瓙鏍煎瓙灞傛暟鑾峰彇鐜荤拑id
-  @Select("select glass_id from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
-  String SelectGlassid(int cage, int cell);
-
-  // 鏍规嵁绗煎瓙鏍煎瓙灞傛暟鑾峰彇鐜荤拑id
-  @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;")
-  Integer Selectoutstate();
-
-  // 娣诲姞浠诲姟搴忓垪
-  // 鑾峰彇杩涚墖闃熷垪id
-  @Insert("INSERT INTO `canadames`.`queue`(`glassid`, `type`, `state`,width) VALUES (#{glassid},#{type},0,#{width});")
-  void insertqueue(String glassid, int type, double width);
-
-  // 鑾峰彇浠诲姟搴忓垪
-  @Select("select glassid,orderid,width,type from queue where state=#{state}")
-  StorageCage SelectQueue(int state);
-
-  // 鑾峰彇搴忓垪琛ㄧ殑鐜荤拑瀹�
-  @Select("select sum(width)+400 as width,orderid from queue where state=0 limit 1")
-  StorageCage SelectQueueWidth();
-
-  // 鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚畬鏁寸┖鏍�
-  @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width,max(state)state1 from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} HAVING state1=0 ORDER BY cell asc,tier desc LIMIT 1")
-  StorageCage selectqueCage1(int cage1, int cell, double width);
-
-  // 鑾峰彇搴忓垪琛ㄧ殑鐜荤拑
-  @Select("select glassid,orderid,width from queue where state=0 and type=#{type}")
-  Glass SelectQueueGlass(int type);
-
-  // 澶氱墖鍑哄簱娓呴櫎涓�鏁翠釜绌烘牸
-  @Update("update storage_cage set glass_id='',order_id='',glasswidth=0,width=2750,state=0 where cage=#{cage} and cell=#{cell}")
-  void UpdatequeOut(int cage, int cell);
-
-  // 鍒ゆ柇搴忓垪琛ㄩ噷鐨勭幓鐠冩槸鍚︽槸鍚屼竴璁㈠崟
-  @Select("select  COUNT(distinct orderid) from queue ")
-  int SelectQueOrder();
-
-  // 瀵绘壘鍙互澶氱墖鍑虹墖鐨勭幓鐠�
-  @Select("select cage,cell,ROUND(id/2)as prcId,width,count(glass_id)shu from storage_cage where order_id=#{orderid} and (cage!=#{cage} or cell!=#{cell}) GROUP BY cage,cell HAVING shu=1 ORDER BY cage desc,cell desc limit 1")
-  StorageCage SelectQueout(String orderid, int cage, int cell);
-  // 鑾峰彇杩涚墖闃熷垪id
-
-  @Select("select glassid from queue where type=1")
-  String Selectqueueid();
-
-  // 鑾峰彇杩涚墖闃熷垪id
-  @Select("select state from queue where type=1")
-  String Selectqueuestate();
-}
+     @Update("update storage_cage set state=#{state} where   state=#{oldstate};")
+    void UpdataAddCageState(int state,int oldstate);
+    //淇敼鍚岀瀛愭牸瀛愬搴�(鍑虹墖)
+     @Update("update storage_cage set width=width+#{width} where   cage=#{cage} and cell=#{cell};")
+    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=1,a.glasswidth=b.glasswidth 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}, #{date}, #{address}, #{userNo})")
+    // void insert (Spian spian);
+    //鏂板浠诲姟琛�
+    @Insert("INSERT INTO `canadames`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid});")
+    void Inserttask(int tasktype,int taskstate,int shelfrack,int loadrack,String glassid);
+    //淇敼浠诲姟琛�
+    @Update("update storage_task set task_state=#{state} where task_type=#{type} and task_state=0;")
+    void Updatetask(int state,int type);
+    //淇敼浠诲姟琛�
+    @Update("update storage_task set task_state=1 where (task_type=1 or task_type=2) and task_state=0;")
+    void UpdatetaskOut();
+    //鏌ヨ鎸夎鍗曞嚭鐗�
+    @Select("select order_id state from order_out where state=0")
+    String  SelectOrderout();
+    //鍐呭鐗囪皟鎹�
+    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.state=1,a.glasswidth=b.glasswidth where a.cage=#{cage} and a.cell=#{cell} and a.tier=1")
+    void UpdateDBCage1(int cage,int cell);
+    //娓呴櫎鍐呯墖鏁版嵁
+    @Update("update storage_cage set glass_id='',order_id='',state=0,glasswidth=0 where a.cage=#{cage} and a.cell=#{cell} and a.tier=1;")
+    void UpdateDBCage2(int cage,int cell);
+    //鍒ゆ柇鏄惁鏈夎皟鎷ㄥ畬鍚庡嚭鐗囩殑浠诲姟
+    @Select("select COUNT(*)as id,glass_id as barcode from storage_task where (task_type=1 or task_type=2) and task_state=0;")
+    north_glass_buffer1 SelectDBOut();
+    //鏍规嵁绗煎瓙鏍煎瓙灞傛暟鑾峰彇鐜荤拑id
+     @Select("select glass_id from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
+     String SelectGlassid(int cage,int cell);
+     //鏍规嵁绗煎瓙鏍煎瓙灞傛暟鑾峰彇鐜荤拑id
+     @Select("SELECT COUNT(*) FROM `storage_cage` where state=3;")
+     Integer Selectoutstate();
+     //娣诲姞浠诲姟搴忓垪
+     //鑾峰彇杩涚墖闃熷垪id
+     @Insert("INSERT INTO `canadames`.`queue`(`glassid`, `type`, `state`,width) VALUES (#{glassid},#{type},0,#{width});")
+     void insertqueue(String glassid,int type,double width);
+     //鑾峰彇浠诲姟搴忓垪
+     @Select("select glassid,orderid,width,type from queue where state=#{state}")
+     StorageCage SelectQueue(int state);
+     //鑾峰彇搴忓垪琛ㄧ殑鐜荤拑瀹�
+     @Select("select sum(width)+400 as width,orderid from queue where state=0 limit 1")
+     StorageCage SelectQueueWidth();
+    //鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚畬鏁寸┖鏍�
+     @Select("select cage,cell,tier,id,ROUND(id/2)as prcId,width,max(state)state1 from storage_cage where cage=#{cage1} and cell=#{cell} and state=0 and width>=#{width} HAVING state1=0 ORDER BY cell asc,tier desc LIMIT 1")
+     StorageCage selectqueCage1(int  cage1,int cell,double width);
+     //鑾峰彇搴忓垪琛ㄧ殑鐜荤拑
+     @Select("select glassid as barcode,orderid as ordernumber,width as glasslengthmm from queue where state=0 and type=#{type}")
+     north_glass_buffer1 SelectQueueGlass(int type);
+     //澶氱墖鍑哄簱娓呴櫎涓�鏁翠釜绌烘牸
+     @Update("update storage_cage set glass_id='',order_id='',glasswidth=0,width=2750,state=0 where cage=#{cage} and cell=#{cell}")
+     void UpdatequeOut(int cage,int cell);
+     //鍒ゆ柇搴忓垪琛ㄩ噷鐨勭幓鐠冩槸鍚︽槸鍚屼竴璁㈠崟
+     @Select("select  COUNT(distinct orderid) from queue ")
+     int SelectQueOrder();
+     //瀵绘壘鍙互澶氱墖鍑虹墖鐨勭幓鐠�
+     @Select("select cage,cell,ROUND(id/2)as prcId,width,count(glass_id)shu from storage_cage where order_id=#{orderid} and (cage!=#{cage} or cell!=#{cell}) GROUP BY cage,cell HAVING shu=1 ORDER BY cage desc,cell desc limit 1")
+     StorageCage SelectQueout(String orderid,int cage,int cell);
+     //鑾峰彇杩涚墖闃熷垪id
+     @Select("select glassid from queue where type=1")
+     String Selectqueueid();
+     //鑾峰彇杩涚墖闃熷垪id
+     @Select("select state from queue where type=1")
+     String Selectqueuestate();
+     //鍒ゆ柇閾濇鍑虹墖琛ㄦ槸鍚︽湁鐜荤拑闇�瑕佸嚭
+     @Select("SELECT * FROM `out_slice` where state=0 or state=0 order by id limit 1;")
+     String SelectOutSlice();
+     //鍒ゆ柇閾濇鍑虹墖琛ㄦ槸鍚︽湁鐜荤拑姝e湪鍑虹墖涓�
+     @Select("SELECT count(*) FROM `out_slice` where state=1 or state=0 order by id limit 1;")
+     int SelectOutSliceshu();
+}   
+    
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java b/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java
index 3e7a55a..52ad80c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java
@@ -1,5 +1,5 @@
 package com.example.springboot.security.config;
-
+ 
 import com.example.springboot.security.JWTRealm;
 import com.example.springboot.security.NoSessionFilter;
 import com.example.springboot.security.StatelessDefaultSubjectFactory;
@@ -18,17 +18,17 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.DependsOn;
-
+ 
 import javax.servlet.Filter;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
-
+ 
 @Configuration
 public class ShiroConfig {
-
-
+ 
+ 
     /**
      * Shiro鐢熷懡鍛ㄦ湡澶勭悊鍣�
      *
@@ -38,7 +38,7 @@
     public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
         return new LifecycleBeanPostProcessor();
     }
-
+ 
     /**
      * 寮�鍚疭hiro鐨勬敞瑙�(濡侤RequiresRoles,@RequiresPermissions),闇�鍊熷姪SpringAOP鎵弿浣跨敤Shiro娉ㄨВ鐨勭被,骞跺湪蹇呰鏃惰繘琛屽畨鍏ㄩ�昏緫楠岃瘉
      * DefaultAdvisorAutoProxyCreator鐨勯『搴忓繀椤诲湪shiroFilterFactoryBean涔嬪墠锛屼笉鐒禨ecurityUtils.getSubject().getPrincipal()鑾峰彇涓嶅埌鍙傛暟
@@ -52,24 +52,24 @@
         advisorAutoProxyCreator.setProxyTargetClass(true);
         return advisorAutoProxyCreator;
     }
-
+ 
     @Bean
     public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor() {
         AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
         authorizationAttributeSourceAdvisor.setSecurityManager(defaultSecurityManager());
         return authorizationAttributeSourceAdvisor;
     }
-
+ 
     @Bean(name = "shiroFilterFactoryBean")
     public ShiroFilterFactoryBean shiroFilterFactoryBean() {
         ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
         shiroFilterFactoryBean.setSecurityManager(defaultSecurityManager());
-
+ 
         // 杩囨护瑙勫垯
         Map<String, String> linkedHashMap = new LinkedHashMap<>();
         // 鏃犵姸鎬佺櫥褰曟儏鍐典笅鍏抽棴浜唖hiro涓殑session锛屽鑷存墍鏈夐渶瑕佸姞涓奱uthc鎺ュ彛璇锋眰鏃跺�欓兘浼氭姤閿欙紝
         // 鎵�浠ヤ娇鐢ˊRequiresRoles,@RequiresPermissions娉ㄨВ,aop鏂瑰紡瀹炵幇鎺ュ彛鐨勬潈闄愭牎楠�
-
+ 
         /* 娣诲姞shiro鐨勫唴缃繃婊ゅ櫒锛岃嚜瀹氫箟url瑙勫垯
          * Shiro鑷甫鎷︽埅鍣ㄩ厤缃鍒�
          * rest锛氭瘮濡�/admins/user/**=rest[user],鏍规嵁璇锋眰鐨勬柟娉曪紝鐩稿綋浜�/admins/user/**=perms[user锛歮ethod] ,鍏朵腑method涓簆ost锛実et锛宒elete绛�
@@ -110,7 +110,7 @@
 //        // 鎺堟潈鐨勬潈闄�
 //        linkedHashMap.put("/api/rolePermission/saveOrUpdate", "perms[rolePermission:add]");
 //        linkedHashMap.put("/api/rolePermission/removeByIds", "perms[rolePermission:delete]");
-
+ 
         // 鑷畾涔夎繃婊ゅ櫒
         HashMap<String, Filter> filterHashMap = new HashMap<>();
         filterHashMap.put("jwt", new NoSessionFilter());
@@ -120,7 +120,7 @@
         shiroFilterFactoryBean.setFilterChainDefinitionMap(linkedHashMap);
         return shiroFilterFactoryBean;
     }
-
+ 
     @Bean
     public DefaultWebSecurityManager defaultSecurityManager() {
         DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
@@ -134,7 +134,7 @@
         defaultWebSecurityManager.setSubjectFactory(subjectFactory());
         return defaultWebSecurityManager;
     }
-
+ 
     /**
      * 鐧诲綍鐨勮璇佸拰鎺堟潈
      *
@@ -146,7 +146,7 @@
         userRealm.setCredentialsMatcher(hashedCredentialsMatcher());
         return userRealm;
     }
-
+ 
     /**
      * token鐨勮璇佸拰鎺堟潈
      *
@@ -156,12 +156,12 @@
     public JWTRealm jwtRealm() {
         return new JWTRealm();
     }
-
+ 
     @Bean
     public StatelessDefaultSubjectFactory subjectFactory() {
         return new StatelessDefaultSubjectFactory();
     }
-
+ 
     /*
      * 鍑瘉鍖归厤鍣� 鐢变簬鎴戜滑鐨勫瘑鐮佹牎楠屼氦缁橲hiro鐨凷impleAuthenticationInfo杩涜澶勭悊浜�
      */
@@ -172,7 +172,7 @@
         hashedCredentialsMatcher.setHashIterations(1024);// 鏁e垪鐨勬鏁帮紝姣斿鏁e垪涓ゆ锛岀浉褰撲簬MD5(MD5(""));
         return hashedCredentialsMatcher;
     }
-
+ 
     @Bean
     public CookieRememberMeManager cookieRememberMeManager() {
         CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
index 6dc8f99..f032d87 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java
@@ -9,6 +9,7 @@
 import org.springframework.stereotype.Component;
 
 import com.example.springboot.entity.Glass;
+import com.example.springboot.entity.north_glass_buffer1;
 @Component
 public class JdbcConnections {
     /**
@@ -24,15 +25,15 @@
 	private static PreparedStatement ps = null;
 	private static ResultSet rs = null;
 	
-	public  Glass selectGlass(int glassid) throws SQLException {
+	public  north_glass_buffer1 selectGlass(int glassid) throws SQLException {
         conn = getConn();
-        Glass glass=new Glass();
-        String sql = "select orderid from glass where glassid=?";
+        north_glass_buffer1 glass=new north_glass_buffer1();
+        String sql = "select ordernumber from north_glass_buffer1 where glassid=?";
          ps = conn.prepareStatement(sql);
          ps.setInt(1, glassid);
          rs= ps.executeQuery();
          while (rs.next()) {
-			glass.setOrderId(rs.getString("orderid"));
+			glass.setordernumber(rs.getString("ordernumber"));
          }
 		 conn.close();
          return glass;
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java b/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java
new file mode 100644
index 0000000..13764dd
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/OutSlice.java
@@ -0,0 +1,66 @@
+package com.example.springboot.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import com.example.springboot.entity.Out_slice;
+
+public class OutSlice {
+
+    // public static List<Out_slice> Groupbyresult(List<Out_slice> out_slices) {
+    //     // 浼犲叆涓�涓泦鍚� 杩涜鍒嗙粍鏉′欢鍒嗙粍
+    //     List<Out_slice> resultlist = new ArrayList<Out_slice>();
+    //     HashMap map = new HashMap<>();
+    //     // HashMap<String,List<Out_slice>> map=new HashMap<String,List<Out_slice>>();
+    //     for (Out_slice out_slice : out_slices) {
+    //         String key_ = out_slice.getState() + "-";
+    //         if (map.get(key_) == null) {
+    //             List<Out_slice> lists = new ArrayList<Out_slice>();
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         } else {
+    //             List<Out_slice> lists = (List<Out_slice>) map.get(key_);
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         }
+    //     }
+    //     return resultlist;
+    // }
+
+    // public static List<Out_slice> Orderbyresult(List<Out_slice> out_slices, int orders) {
+    //     // orders 鎺掑簭妯″紡
+    //     List<Out_slice> list = new ArrayList<Out_slice>();
+    //     for (Out_slice out_slice : out_slices) {
+    //         if (list.isEmpty()) {
+    //             list.add(out_slice);
+    //         } else {
+    //             for (int i = 0; i < list.size(); i++) {
+    //                 Out_slice out_slice2 = list.get(i);
+    //                 if (out_slice.getID() > out_slice2.getID()) {
+    //                     continue;
+    //                 } else {
+    //                     list.add(i, out_slice2);
+    //                 }
+    //             }
+    //         }
+    //     }
+    // }
+
+    // public static void f() {
+    //     HashMap map = new HashMap<>();
+    //     for (Out_slice out_slice : listoutslice) {
+    //         String key_ = out_slice.getState() + "-";
+    //         if (map.get(key_) == null) {
+    //             List<Out_slice> lists = new ArrayList<Out_slice>();
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         } else {
+    //             List<Out_slice> lists = (List<Out_slice>) map.get(key_);
+    //             lists.add(out_slice);
+    //             map.put(key_, lists);
+    //         }
+    //     }
+    // }
+
+}
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 9a6cb6a..8bad256 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
@@ -1,6 +1,7 @@
 package com.example.springboot.service;
 
 import java.lang.reflect.Array;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -11,6 +12,7 @@
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.mapper.SpianMapper;
 import com.google.common.primitives.Bytes;
 
@@ -33,12 +35,12 @@
         double width;
         double minwidth = 0;
 
-        Glass glasslist = spianMapper.selectGlass(glassid); // 鑾峰彇鐜荤拑鍙傛暟
+        north_glass_buffer1 glasslist = spianMapper.selectGlass(glassid); // 鑾峰彇鐜荤拑鍙傛暟
         if (glasslist == null) {
             return (300);
         }
-        double widths = glasslist.getwidth();
-        String orderids = glasslist.getOrderId();
+        double widths = glasslist.getglasslengthmm();
+        String orderids = glasslist.getordernumber();
 
         List<String> adddresslist = new ArrayList<>();
         adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
@@ -74,20 +76,33 @@
                 cells = cages1.getCell();// 鏍煎瓙鍙�
                 prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
                 width = cages1.getWidth();// 鏍煎瓙鍓╀綑瀹藉害
-                widths = glasslist.getwidth();
+                widths = glasslist.getglasslengthmm();
 
                 // 鎵ц杩涚墖
                 datas.add((short) 1000);
                 datas.add((short) prcid);
                 datas.add((short) prctier);
-                datas.add((short) 1);
-                // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
+                datas.add((short) 1); 
+                //鑾峰彇璇ユ牸瀛愬唴鏄惁鏈夌幓鐠�
+                int cellint=spianMapper.selectcell(cage1,cells);
+                if(cellint==1){
+                    //灏嗗鐗囩幓鐠冪殑鏁版嵁鏇存柊鍒板唴鐗�
+                    spianMapper.UpdateDBCage(ids, cage1, cells,1);
+                    //灏嗘柊鍏ョ殑鐜荤拑瀛樺叆澶栫墖
+                    spianMapper.UpdataAddCage(orderids.toString(), glassid, widths, cage1, cells, ids-1, 2);
+                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
+                    spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
+                    S7control.getinstance().WriteWord(adddresslist, datas);
+                }else{
+                 // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
                 spianMapper.UpdataAddCage(orderids.toString(), glassid, widths, cage1, cells, ids, 2);
                 spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
                 spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
                 S7control.getinstance().WriteWord(adddresslist, datas);
 
                 // S7control.getinstance().WriteByte("DB105.16",glassid);
+                }
+              
                 return (200);
 
             }
@@ -118,7 +133,6 @@
         double widths = queGlass.getWidth();
         String orderids = queGlass.getOrderId();
         int num = spianMapper.SelectQueOrder();
-
         if (num == 1) {
 
             // 鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
@@ -142,12 +156,12 @@
                     prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
                     // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
                     for (int i = 2; i > 0; i--) {
-                        Glass qglass = spianMapper.SelectQueueGlass(i);
-                        width = qglass.getwidth();// 鏍煎瓙鍓╀綑瀹藉害
-                        spianMapper.UpdataAddqueCage(qglass.getOrderId(), qglass.getGlassId(), width, cage1, cells, i,
+                        north_glass_buffer1 qglass = spianMapper.SelectQueueGlass(i);
+                        width = qglass.getglasslengthmm();// 鏍煎瓙鍓╀綑瀹藉害
+                        spianMapper.UpdataAddqueCage(qglass.getordernumber(), qglass.getbarcode(), width, cage1, cells, i,
                                 1);
                         spianMapper.UpdataAddCage1(width, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
-                        spianMapper.Inserttask(0, 0, 1000, ids, qglass.getGlassId().toString());// 鏂板浠诲姟
+                        spianMapper.Inserttask(0, 0, 1000, ids, qglass.getbarcode().toString());// 鏂板浠诲姟
                     }
                     // 鎵ц杩涚墖
                     datas.add((short) 1000);
@@ -163,10 +177,10 @@
 
         } else {
             for (int i = 2; i > 0; i--) {
-                Glass qglass = spianMapper.SelectQueueGlass(i);
-                String orderid = qglass.getOrderId().toString();
-                String glassid = qglass.getGlassId();
-                widths = qglass.getwidth();
+                north_glass_buffer1 qglass = spianMapper.SelectQueueGlass(i);
+                String orderid = qglass.getordernumber().toString();
+                String glassid = qglass.getbarcode();
+                widths = qglass.getglasslengthmm();
                 List<StorageCage> storageCage = spianMapper.selectAll(orderid);
                 if (storageCage == null) {
                     return (400);
@@ -192,7 +206,7 @@
                         cells = cages1.getCell();// 鏍煎瓙鍙�
                         prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
                         width = cages1.getWidth();// 鏍煎瓙鍓╀綑瀹藉害
-                        widths = qglass.getwidth();
+                        widths = qglass.getglasslengthmm();
 
                         // 鎵ц杩涚墖
                         datas.add((short) 1000);
@@ -327,7 +341,7 @@
                         datas.add((short) 1);
                         // 鏇存崲鐜荤拑鐨勭瀛�
                         String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
-                        spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                        spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
                         spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
                         spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
                         spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 娓呴櫎琚皟鎷ㄦ牸瀛愭暟鎹�
@@ -354,7 +368,7 @@
                         datas.add((short) 2);
                         datas.add((short) 1);
                         String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
-                        spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                        spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
                         spianMapper.Inserttask(2, 0, cageout.getId(), ids, orderid);// 鏂板璋冨害浠诲姟
                         spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
                         spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
@@ -373,7 +387,7 @@
 
     }
 
-    // @GetMapping("/all2")
+    
     public Short selectout2(String glassid) {
         // spianMapper.UpdatetaskOut(); //瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰皟搴︿换鍔�,鏀瑰埌plchold閲岋紝鍑虹墖鎴栬皟搴︿换鍔″畬鎴愮珛鍗虫敼鍙樼粨鏉熶换鍔★紱
         // 瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
@@ -417,7 +431,7 @@
                 spianMapper.UpdateDBCage2(cage, cell);// 娓呴櫎鍐呯墖鏁版嵁
             }
             S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
-            //outmesid(glassid);// 娲惧彂鍑虹墖ID
+            outmesid(glassid);// 娲惧彂鍑虹墖ID
 
             return (200);// 缁撴潫
         } else {
@@ -433,7 +447,7 @@
                 spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 鏂板浠诲姟
                 spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
                 spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);// 娓呴櫎鏍煎瓙鐜荤拑淇℃伅
-                //outmesid(glassid);// 娲惧彂鍑虹墖ID
+                outmesid(glassid);// 娲惧彂鍑虹墖ID
                 S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
 
                 return (200);// 缁撴潫
@@ -458,7 +472,7 @@
                     datas.add((short) 1);
                     // 鏇存崲鐜荤拑鐨勭瀛�
                     String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
                     spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
                     spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
                     spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 娓呴櫎琚皟鎷ㄦ牸瀛愭暟鎹�
@@ -488,7 +502,7 @@
                     String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
                     spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassid);// 鏂板璋冨害浠诲姟
                     spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid);// 鏂板鍑虹墖浠诲姟
-                    spianMapper.UpdateDBCage(ids, cage, cell);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                    spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
                     spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
                     spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
                     spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 3);// 娓呴櫎琚皟鎷ㄦ牸瀛愭暟鎹�
@@ -503,7 +517,7 @@
         }
 
     }
-
+    //娲惧彂璋冩嫧浠诲姟鐜荤拑id
     public void outmesid(String glassid) {
         System.out.println("outmesid:" + glassid);
         List<Byte> glassidlist = new ArrayList();
@@ -514,23 +528,26 @@
         System.out.println("outmesidbytes:" + bytes.length);
         S7control.getinstance().WriteByte("DB105.30", bytes);// 娲惧彂鍑虹墖id
     }
-
-    /*** 淇敼鐢ㄦ埛* @throws SQLException */
-    // public static int updateUser(Glass user) throws SQLException {conn =
-    // getConn();
-    // String sql = "update t_user set name=?,gender=?,age=?,score=?"+ " where
-    // id=?";ps = conn.prepareStatement(sql);
-    // ps.setString(1, user.getName());ps.setString(2, user.getGender());
-    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());ps.setInt(5,
-    // user.getId());return ps.executeUpdate();}
-    // /*** 澧炲姞鐢ㄦ埛* @throws SQLException */
-    // public static int insertUser(User user) throws SQLException {
-    // conn = getConn();
-    // String sql = "insert into t_user(name,gender,age,score)"+ " values(?,?,?,?)";
-    // ps = conn.prepareStatement(sql);ps.setString(1,
-    // user.getName());ps.setString(2, user.getGender());
-    // ps.setInt(3, user.getAge());ps.setDouble(4, user.getScore());return
-    // ps.executeUpdate();
-    // }
-
+    //鑾峰彇鍦板潃鍐呯殑鐜荤拑id杞瓧绗︿覆
+    public StringBuilder queGlassid(String address) {
+        StringBuilder writedstrIdOut = new StringBuilder();
+        byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, 13);
+      if (writedglassidbytesOut != null) {
+        // 鑾峰彇鐜荤拑id
+        for (byte iditem : writedglassidbytesOut) {
+          writedstrIdOut.append((char) iditem);
+        }
+      }
+        return writedstrIdOut;
+    }
+    //char鏁扮粍杞寲鎴恇it鏁扮粍
+       public static byte[] toBytes(char[] chars) {
+        String s = new String(chars);
+        return s.getBytes(StandardCharsets.UTF_8);
+    }
+    //bit鏁扮粍杞寲鎴恈har鏁扮粍
+    public static char[] toChars(byte[] bytes) {
+        String s = new String(bytes, StandardCharsets.UTF_8);
+        return s.toCharArray();
+    }
 }

--
Gitblit v1.8.0