From d75d7d7d76fe16e133f793cc31bfaea17a10cd24 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期一, 27 十一月 2023 13:39:59 +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/entity/north_glass_buffer1.java  |   59 +
 springboot-vue3/src/main/java/com/example/springboot/service/JdbcConnections.java     |    9 
 .vscode/settings.json                                                                 |    3 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java           |  238 +++---
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java          |  294 +++----
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java          |   42 +
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java        |  103 +-
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java           |   36 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java           |   68 +
 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 ++
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java      |    2 
 .vscode/launch.json                                                                   |   28 
 CanadaMes-ui/src/api/home.js                                                          |   42 +
 springboot-vue3/src/main/java/com/example/springboot/entity/Out_slice.java            |  101 ++
 CanadaMes-ui/src/lang/locales/en-US.json                                              |   51 
 springboot-vue3/src/main/java/com/example/springboot/security/config/ShiroConfig.java |   34 
 20 files changed, 1,372 insertions(+), 649 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..a0df939
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +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": "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
new file mode 100644
index 0000000..c5f3f6b
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "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/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 0b55a8b..49d0c11 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)": "鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "鐨甫杈撻�佽嚜鍔ㄦ參閫�",
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/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/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index 0981044..2d46970 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -30,7 +30,7 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-    // new PlcHold().start();
+    new PlcHold().start();
 
 //  new Plcaction().start();
 //
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