From 202ca0f62257d108e95ca2e5912b86cf7b407906 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期一, 25 三月 2024 08:09:49 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/Albania_Mes

---
 springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java             |    3 
 springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java            |    8 
 .vscode/settings.json                                                                    |    3 
 springboot-vue3/src/main/java/com/example/springboot/component/S7control.java            |   14 
 Albania_Mes-ui/src/views/home/index.vue                                                  |  231 +++++++---
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java           |   60 +-
 springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java               |    1 
 springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java               |    1 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java              |   51 +
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java              |  149 ++++--
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java      |   23 +
 springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java     |  173 ++++++-
 /dev/null                                                                                |  403 -------------------
 Albania_Mes-ui/src/api/home.js                                                           |   27 +
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java         |   41 -
 springboot-vue3/src/main/java/MyGenerator.java                                           |    2 
 springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java           |   24 
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java |    4 
 springboot-vue3/src/main/resources/application.properties                                |    2 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java        |   17 
 20 files changed, 566 insertions(+), 671 deletions(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
index dcafc04..6d9bc64 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,6 @@
 {
     "java.configuration.updateBuildConfiguration": "interactive",
     "java.debug.settings.onBuildFailureProceed": true,
-    "java.compile.nullAnalysis.mode": "automatic"
+    "java.compile.nullAnalysis.mode": "automatic",
+    "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable"
 }
\ No newline at end of file
diff --git a/Albania_Mes-ui/src/api/home.js b/Albania_Mes-ui/src/api/home.js
index dccdaac..7f1d4e0 100644
--- a/Albania_Mes-ui/src/api/home.js
+++ b/Albania_Mes-ui/src/api/home.js
@@ -350,4 +350,31 @@
         method: 'post',
         data
     })
+}
+//浜哄伐鎷胯蛋AnewMeasure
+export function ManualTake(data) {
+    return request({
+        url: '/home/ManualTake',
+        method: 'post',
+        data
+        
+    })
+}
+//閲嶆柊娴嬮噺
+export function AnewMeasure(data) {
+    return request({
+        url: '/home/AnewMeasure',
+        method: 'post',
+        data
+        
+    })
+}
+
+export function importData(data) {
+    return request({
+        url: '/home/importData',
+        method: 'post',
+        data
+        
+    })
 }
\ No newline at end of file
diff --git a/Albania_Mes-ui/src/views/home/index.vue b/Albania_Mes-ui/src/views/home/index.vue
index fe4231b..66c61af 100644
--- a/Albania_Mes-ui/src/views/home/index.vue
+++ b/Albania_Mes-ui/src/views/home/index.vue
@@ -5,8 +5,8 @@
 }
 
 .occupy {
-    height: 100%;
-    width: 20%;
+    height: 50%;
+    width: 45%;
     background-color: white;
     margin: 0px 8px 0px 8px;
     border: 1px #EBEEF5 solid;
@@ -74,6 +74,7 @@
     max-width: 57%;
     background-size: 1050px 1400px;
     margin-top: -280px;
+    overflow: hidden;
     /* width: 1660px;
     max-width: 100vw;
     background-size: 1660px 560px; */
@@ -82,17 +83,14 @@
 }
 
 .blocks-img {
-    height: 88px;
-    line-height: 90px;
-    color: white;
+    height: 900px;
     max-width: 100vw;
     background-repeat: no-repeat;
     background-attachment: local;
-    width: 32px;
+    width: 1200px;
     position: absolute;
-    background-image: url('../../img/bigcar01.png');
-    background-size: 40px 87px;
-    /* background-size: 46px 94px; */
+    background-image: url(/img/car.c2f92670.png);
+    background-size: 800px 1200px;
 }
 
 .blocks-img2 {
@@ -237,80 +235,90 @@
     height: 15px;
     position: absolute;
 }
+
 /*
 
 */
 #fileinput .container {
-  width: 800px;
-  margin: 0 auto;
+    width: 800px;
+    margin: 0 auto;
 }
 
 #fileinput .header {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 10px;
+    display: flex;
+    justify-content: space-between;
+    margin-bottom: 10px;
 }
 
 #fileinput table {
-  width: 100%;
-  border-collapse: collapse;
-  border: 1px solid;
+    width: 100%;
+    border-collapse: collapse;
+    border: 1px solid;
 }
 
 #fileinput tr,
 #fileinput th,
 #fileinput td {
-  border: 1px solid #000;
-  padding: 5px;
+    border: 1px solid #000;
+    padding: 5px;
 }
 
 #fileinput button {
-  border: none;
-  padding: 5px;
-  background-color: #00a297;
-  color: #fff;
-  border-radius: 5px;
-  cursor: pointer;
-  margin: 0 5px;
+    border: none;
+    padding: 5px;
+    background-color: #00a297;
+    color: #fff;
+    border-radius: 5px;
+    cursor: pointer;
+    margin: 0 5px;
 }
 
 #fileinput tr:nth-child(2n) {
-  background-color: #dcdcdc;
+    background-color: #dcdcdc;
 }
 
 #fileinput .hide {
-  display: none;
+    display: none;
 }
 
 #fileinput .c1 {
-  position: fixed;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  background: rgba(0, 0, 0, .5);
-  z-index: 2;
+    position: fixed;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: rgba(0, 0, 0, .5);
+    z-index: 2;
 }
 
 #fileinput .c2 {
-  background-color: white;
-  position: fixed;
-  width: 400px;
-  height: 300px;
-  top: 50%;
-  left: 50%;
-  z-index: 3;
-  margin-top: -150px;
-  margin-left: -200px;
+    background-color: white;
+    position: fixed;
+    width: 400px;
+    height: 300px;
+    top: 50%;
+    left: 50%;
+    z-index: 3;
+    margin-top: -150px;
+    margin-left: -200px;
 }
 
-
+.cells {
+    height: 100%;
+}
 </style>
 <template>
     <el-container>
         <!-- <el-header style="padding: 10px;"></el-header> -->
         <el-main>
-            <div class="box" @click="dialogFormVisible2 = true">
+            <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
+                <el-table :data="this.alarm" border style="width: 100%;font-size: 25px;">
+                    <el-table-column prop="id" :label="$t('id')"></el-table-column>
+                    <el-table-column prop="content" :label="$t('content')"></el-table-column>
+                    <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
+                </el-table>
+            </el-dialog>
+            <div class="box" @click="dialogFormVisible2 = true" style="z-index: 999;">
                 <div class="text">
                     <!-- Alarm: -->
                     {{ this.text }}
@@ -336,22 +344,68 @@
                     {{ $t('Task queue') }}</el-button>
 
             </div>
-            <div style="display: flex;align-items: center;">
+            <div style="display: flex;align-items: center;overflow: hidden;">
                 <div class="blocks" style="position: relative;width: 100%;">
+                    <div class="blocks-img" :style="'z-index:99;left:150px;top:555px;'">
 
+                    </div>
+                    <div
+                        :style="'position: absolute;z-index:99;left:271px;top:987px;width:210px;height:38px;background-color:' + ShowDeviceList(0) + ';'">
+                    </div>
+                    <div
+                        :style="'position: absolute;z-index:99;left:553px;top:956px;width:110px;height:74px;background-color:' + ShowDeviceList(0) + ';'">
+                    </div>
+                    <div
+                        :style="'position: absolute;z-index:99;left:800px;top:450px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';'">
+                    </div>
+                    <div
+                        :style="'position: absolute;z-index:99;left:800px;top:675px;width:115px;height:30px;background-color:' + ShowDeviceList(0) + ';'">
+                    </div>
+                    <div :style="'position: absolute;z-index:1000;left:740px;top:507px;width:230px;height:114px;'">
+                        <div v-for="item in cagelist4" :key="item['id']"
+                            :style="'display:flex;height:4.55px;position: relative;'">
+                            <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' +
+                ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'">
+                            </div>
+                        </div>
+                    </div>
+                    <div :style="'position: absolute;z-index:1000;left:740px;top:730px;width:230px;height:90px;'">
+                        <div v-for="item in cagelist3" :key="item['id']"
+                            :style="'display:flex;height:2.25px;position: relative;'">
+                            <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' +
+                ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'">
+                            </div>
+                        </div>
+                    </div>
+                    <div :style="'position: absolute;z-index:1000;left:740px;top:830px;width:230px;height:90px;'">
+                        <div v-for="item in cagelist2" :key="item['id']"
+                            :style="'display:flex;height:2.25px;position: relative;'">
+                            <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' +
+                ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'">
+                            </div>
+                        </div>
+                    </div>
+                    <div :style="'position: absolute;z-index:1000;left:740px;top:930px;width:230px;height:90px;'">
+                        <div v-for="item in cagelist1" :key="item['id']"
+                            :style="'display:flex;height:2.25px;position: relative;'">
+                            <div class="cells" v-for="(num) in item['number']" :key="num" :style="'width: ' + (item['glassWidth'] * 0.046) + 'px;background-color:' + ShowCellList(1) + ';position: absolute;left:' +
+                ((item['glassWidth'] * 0.046 * (num - 1)) + ((num - 1) * 5)) + 'px;'">
+                            </div>
+                        </div>
+                    </div>
                 </div>
                 <div>
-                    <div style="padding: 10px;display: flex;height:100px;">
+                    <div style="padding: 10px;display: flex;height: 300px;flex-wrap: wrap;">
                         <div v-for="item in tableData" :key="item['cageno']" class="occupy">
                             <el-col style="text-align:left;font-weight: bold;">#{{ item['cage'] }}</el-col>
                             <el-col
-                                style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-                                <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['cell'] }}%</span>
+                                style="text-align:left;display:flex;justify-content: space-between;align-items: center;height: 70px;">
+                                <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['width'] }}%</span>
                             </el-col>
                             <hr style="width:80%;margin: 0 auto;" />
                             <el-col
                                 style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-                                <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['state']
+                                <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['cell']
                                     }}</span>
                             </el-col>
                         </div>
@@ -397,7 +451,7 @@
             <div id="fileinput" class="container">
                 <div class="header">
                     <div class="btn">
-                        <button @click="AllAdd">淇濆瓨</button>
+                        <el-button type="primary" @click="importData()">淇濆瓨</el-button>
                     </div>
                     <div class="inp">
                         <input type="file" id="uploadExcel" multiple @change="Change" />
@@ -440,7 +494,7 @@
                             <td>{{ item.films }}</td>
                             <td>{{ item.quantity }}</td>
                             <td>{{ item.tier }}</td>
-                            <td>{{ item.matching}}</td>
+                            <td>{{ item.matching }}</td>
                             <td>{{ item.glasstype }}</td>
                             <td>{{ item.productname }}</td>
                         </tr>
@@ -457,7 +511,9 @@
                     <el-button type="primary" @click="ManualMatching()" :disabled="SoftEmergencyStopState"
                         style="z-index: 999;">浜哄伐鍖归厤</el-button>
                     <el-button type="primary" @click="ManualTake()" :disabled="SoftEmergencyStopState"
-                        style="z-index: 999;">浜哄伐鍖归厤</el-button>
+                        style="z-index: 999;">浜哄伐鎷胯蛋</el-button>
+                    <el-button type="primary" @click="AnewMeasure()" :disabled="SoftEmergencyStopState"
+                        style="z-index: 999;">閲嶆柊娴嬮噺</el-button>
                 </div>
                 <!--鏄剧ず-->
                 <div style="width:1000px;height: 720px;border: 2px solid #d1d1d1;margin: auto auto;">
@@ -597,11 +653,11 @@
 <script>
 
 import {
-    home, home2, SelectCageInfo,
+    home, SelectCageInfo,
     Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
     isAllowReorderings,
 
-    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue
+    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue,importData,ManualTake,AnewMeasure
 } from "../../api/home";
 
 
@@ -704,7 +760,7 @@
             reset: false,
             isQueueWarning: false,
             CurrentFrame: [],
-            DeviceList: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            DeviceList: [1, 1, 1, 1],
             GlassIdList: [],
             Scanningmethod: true,
             CurrrentGlassId: "",
@@ -760,7 +816,10 @@
                         // this.car1 = 210 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
                         // this.car2 = 300 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
                     }
-
+                    // 鑾峰彇璁惧鐘舵��
+                    if (obj.DeviceList != null) {
+                        this.DeviceList = obj.DeviceList[0];
+                    }
                     this.tableData = obj.tableData[0];
                     this.cagelist1 = obj.cagelist1[0];
                     this.cagelist2 = obj.cagelist2[0];
@@ -848,13 +907,6 @@
             SelectCageInfo("").then(res => {
                 this.cageinfo = res.data.cageinfo;
                 this.currentPages = 1;
-            });
-            //鍔犺浇鐞嗙墖绗肩幓鐠冩暟鎹�
-            home2().then(res => {
-                this.cagelist1 = res.data.list1;
-                this.cagelist2 = res.data.list2;
-                this.cagelist3 = res.data.list3;
-                this.cagelist4 = res.data.list4;
             });
         },
         //娣诲姞鐞嗙墖绗肩幓鐠�
@@ -978,6 +1030,15 @@
                 }
             }
         },
+        //鑾峰彇璁惧鏄剧ず鐘舵��
+        ShowCellList(num) {
+            if (num == null) {
+                return "";
+            } else if (num > 0) {
+                return "gray";
+                // return "rgba(0,0,0,1)";
+            }
+        },
         //鑾峰彇璁惧鐜荤拑id
         ShowGlassIdList(num) {
             if (this.GlassIdList != null && this.GlassIdList.length > 0) {
@@ -991,7 +1052,21 @@
         },
         //浜哄伐鎷胯蛋
         ManualTake() {
-
+            let s="123";
+            ManualTake(s).then(res => {
+                if (res.data.message == 200) {
+                    console.log(res.data.message);
+                }
+            })
+        },
+        //閲嶆柊娴嬮噺
+        AnewMeasure() {
+            let s="123";
+            AnewMeasure(s).then(res => {
+                if (res.data.message == 200) {
+                    console.log(res.data.message);
+                }
+            })
         },
         Change(event) {
             // 鑾峰彇鍒版枃浠跺す
@@ -1005,9 +1080,9 @@
                 let _this = this //鎶奷ata閲岀殑鏁版嵁璧嬪�肩粰鏂扮殑鍙橀噺
                 // wb:wordbook 宸ヤ綔琛�  
                 reader.addEventListener("load", function (e) {
-                    
+
                     var data = e.target.result; //璇诲彇鎴愬姛鍚巖esult涓殑鏁版嵁
-                    var wb = XLSX.read(data, { type: "binary" });  
+                    var wb = XLSX.read(data, { type: "binary" });
                     let sheetName = wb.SheetNames[0]; //鏄幏鍙朣heets涓涓�涓猄heet鐨勫悕瀛�
                     let sheets = wb.Sheets[sheetName];
                     let dataList2 = JSON.stringify(XLSX.utils.sheet_to_json(sheets));
@@ -1020,17 +1095,21 @@
             }
         },
         Add() {
-            
+
         },
-        Hide() {
-            
-        },
-        AllAdd() {
-            //娣诲姞鏁版嵁杩涘悗鍙�
-            console.log(this.dataList);
+        importData() {
+
+            //let tbdata=JSON.stringify(this.dataList);
+            let tbdata=this.dataList;
+            console.log(tbdata);
+            importData(tbdata).then(res => {
+                if (res.data.message == 200) {
+                    //this.$message.success(this.$t('Operation successful'));
+                }
+            });
         },
         del() {
-            
+
             this.StorageCageAdd = true;
         }
 
diff --git a/springboot-vue3/src/main/java/MyGenerator.java b/springboot-vue3/src/main/java/MyGenerator.java
index 9343999..f5a219f 100644
--- a/springboot-vue3/src/main/java/MyGenerator.java
+++ b/springboot-vue3/src/main/java/MyGenerator.java
@@ -18,7 +18,7 @@
 public class MyGenerator {
 
     /** 鏁版嵁婧愰厤缃�*/
-    private static final String jdbc = "jdbc:mysql://10.153.19.150:3306/albania?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
+    private static final String jdbc = "jdbc:mysql://192.168.10.99:3306/albania?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
     private static final String driverName = "com.mysql.cj.jdbc.Driver";
 
     private static final String username = "root";
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
index 1edd60f..2059f38 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutoMes.java
@@ -81,18 +81,18 @@
             // readAndUpdateWordValues(PlcframeObject);
             
             // readAndUpdateWordValues(plcStateObject);
-            int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
-            // System.out.println(index);
-            PlcMesObject.getPlcParameter("AddStart").getAddress(index);
-            // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
-            List<String> addresses = new ArrayList<>();
-            addresses.add("FeedID");
-            addresses.add("AddStart");
-            // System.out.println(addresses);
-            // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
-            List<String> addresses2 = new ArrayList<>();
-            addresses2.add("FeedID");
-            addresses2.add("FeedCarStatus");
+            // int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
+            // // System.out.println(index);
+            // PlcMesObject.getPlcParameter("AddStart").getAddress(index);
+            // // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
+            // List<String> addresses = new ArrayList<>();
+            // addresses.add("FeedID");
+            // addresses.add("AddStart");
+            // // System.out.println(addresses);
+            // // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
+            // List<String> addresses2 = new ArrayList<>();
+            // addresses2.add("FeedID");
+            // addresses2.add("FeedCarStatus");
 
             //System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
index c0fa68e..886fb12 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java
@@ -1,17 +1,25 @@
 package com.example.springboot.component;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
+import com.example.springboot.service.JdbcConnections;
 import com.example.springboot.service.SpianServiceNew;
-import com.example.springboot.service.StorageCageService;
+import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.device.PlcParameterObject;
+import com.example.springboot.mapper.AlarmMapper;
 import com.example.springboot.mapper.AlbaniaMapper;
+import com.example.springboot.mapper.SpianMapper;
 
 public class PlcHoldNew extends Thread {
 
+  private AlarmMapper alarmMapper;
 
   @Autowired
+  private JdbcConnections jdbcConnections;
   private AlbaniaMapper albaniaMapper;
   private SpianServiceNew spianService;
-  private StorageCageService storageCageService;
   int aaa;
 
   @Override
@@ -25,16 +33,14 @@
         // \\ TODO Auto-generated catch block
         e.printStackTrace();
       }
-    
-      //S7control.getinstance().ReadWord("DB14.0", 1);
-      // if (S7control.getinstance().CheckConnected() == false) {
+     
       spianService = WebSocketServer.applicationContext.getBean(SpianServiceNew.class);
       albaniaMapper = WebSocketServer.applicationContext.getBean(AlbaniaMapper.class);
-      spianService.selectAll(albaniaMapper.SelectGlass());
+      //spianService.selectAll(albaniaMapper.SelectGlass());
       //璇诲彇DB14鍖烘枃浠�
       PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
       
-      
+    
       String ExportTOMES1=plcmes.getPlcParameter("ExportTOMES1").getValue();//鍑虹墖璇锋眰涓�绾�
       String ExportToMES2=plcmes.getPlcParameter("ExportToMES2").getValue();//鍑虹墖璇锋眰浜岀嚎
       String PLCToMES=plcmes.getPlcParameter("PLCToMES").getValue();//杩涚墖璇锋眰
@@ -43,42 +49,42 @@
   
       
       //涓�鍙风嚎璇锋眰
-      if (ExportTOMES1.equals("1") == true&&B01State.equals("0")==true) {
-        //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
-        spianService.selectout(1);
-      }
-      //浜岀嚎鍙疯姹傛椂
-      if (ExportToMES2.equals("1") == true&&B01State.equals("0")==true) {
-        //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
-        spianService.selectout(2);
-      }
+      // if (ExportTOMES1.equals("1") == true&&B01State.equals("0")==true) {
+      //   //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
+      //   S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
+      //   spianService.selectout(1);
+      // }
+      // //浜岀嚎鍙疯姹傛椂
+      // if (ExportToMES2.equals("1") == true&&B01State.equals("0")==true) {
+      //   //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
+      //   S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
+      //   spianService.selectout(2);
+      // }
       //杩涚墖璇锋眰鏃�
+      if(PLCToMES!=null && B01State!=null){
       if(PLCToMES.equals("1")==true&&B01State.equals("0")==true){
         //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
+        //S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
         
         spianService.selectAll(albaniaMapper.SelectGlass());
       }
-      
+    
 
       //浠诲姟瀹屾垚鏃�
       if(TastState.equals("1")==true){
         
         //瀹屾垚纭瀛�
         for(int i=1;i<7;i++){
-          String Glassid=plcmes.getPlcParameter("MESID"+i).getValue();//渚濇鑾峰彇浠诲姟ID
-            int tastid=albaniaMapper.SelectTaskId(Glassid.substring(0,14));
+          String Tastover=plcmes.getPlcParameter("IDStatus"+i).getValue();//渚濇鑾峰彇浠诲姟绫诲瀷
+          String Glassid=plcmes.getPlcParameter("MESID"+i).getValue();//渚濇鑾峰彇浠诲姟绫诲瀷
+          if(Tastover.equals("1")){
+
             //璋冪敤瀹屾垚浠诲姟 Glassid
-            storageCageService.FinishTask(tastid);
-            //鍒犻櫎queue琛ㄧ殑鏁版嵁
-            albaniaMapper.DeleteQueue(Glassid.substring(0,14));
             S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStatus"+i).getAddress(), (short) 1);//瀹屾垚纭瀛�
-          
+          }
         }
       }
-
+    }
   
       // 鏌ヨ鏁版嵁搴�
       // 鎺ㄩ�佸埌鍓嶇
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 b5693e4..c0a1c85 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
@@ -77,13 +77,13 @@
                 storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
 
                 // 绗煎瓙浣跨敤鎯呭喌
-                List<StorageCage> tableData = homeMapper.selectAll();
+                List<StorageCage> tableData = homeMapper.selectAlls();
                 jsonObject.append("tableData", tableData);
                 // 鏍肩悊鐗囩鏍煎瓙鐘舵��
-                List<StorageCage> cagelist1 = homeMapper.selectRack1();
-                List<StorageCage> cagelist2 = homeMapper.selectRack2();
-                List<StorageCage> cagelist3 = homeMapper.selectRack3();
-                List<StorageCage> cagelist4 = homeMapper.selectRack4();
+                List<StorageCage> cagelist1=storageCageService.SelectStorageCageByCage(1);
+                List<StorageCage> cagelist2=storageCageService.SelectStorageCageByCage(2);
+                List<StorageCage> cagelist3=storageCageService.SelectStorageCageByCage(3);
+                List<StorageCage> cagelist4=storageCageService.SelectStorageCageByCage(4);
                 jsonObject.append("cagelist1", cagelist1);
                 jsonObject.append("cagelist2", cagelist2);
                 jsonObject.append("cagelist3", cagelist3);
@@ -116,9 +116,16 @@
                 //璇诲彇DB105鍖烘枃浠�
                 PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
       
-                //String PlcRequest=plcmes.getPlcParameter("GaToMES").getValue();//璇锋眰
-                //double width=plcmes.getPlcParameter("Height").getValue();//瀹�
-                //double height=plcmes.getPlcParameter("width").getValue();//楂�
+                // String PlcRequest=plcmes.getPlcParameter("GaToMES").getValue();//璇锋眰
+                // String MesSend=plcmes.getPlcParameter("MESToGaStatus").getValue();//鍙戦��
+                // double width=Double.valueOf(plcmes.getPlcParameter("Height").getValue());//瀹�
+                // double height=Double.valueOf(plcmes.getPlcParameter("width").getValue());//楂�
+
+                String PlcRequest=S7control.getinstance().ReadWord("DB14.26", 1).get(0)+"";
+                double width=Double.parseDouble(S7control.getinstance().ReadWord("DB14.28", 1).get(0)+"");
+                double height=Double.parseDouble(S7control.getinstance().ReadWord("DB14.30", 1).get(0)+"");
+                String MesSend=S7control.getinstance().ReadWord("DB14.170", 1).get(0)+"";
+
                 //鑾峰彇娴嬮噺鐨勯暱锛屽
                 
                 
@@ -131,15 +138,27 @@
 
 
 
-                String PlcRequest = "1";
-                double width = 402;
-                double height = 402;
+                // String PlcRequest = "1";
+                // String MesSend = "0";
+                // double width = 402;
+                // double height = 402;
                 
                 //鍖归厤
-                if ("1".equals(PlcRequest)) {
-                    GlassInfo MesureGlassinfo=HomeService.Normal(width, height, "1");
-                                       
-                    
+                //System.err.println(PlcRequest+","+MesSend+","+width+","+height);
+                if ("0".equals(PlcRequest)) {
+                    S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 0);
+                }
+                if ("1".equals(PlcRequest)&&"0".equals(MesSend)) {
+                    boolean is=HomeService.Normal(width, height, "1");
+                    if (is) {
+                        // 娴嬮噺鎴愬姛
+                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
+
+                    }else{
+                        // 閲嶆柊娴嬮噺
+                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 4);
+                    }
+
                 }
                 Queue LastQueue= QueueMapper.selectLastQueue();
                 // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16));
@@ -158,7 +177,7 @@
                 List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
                 jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
 
-                //鏌ヨ褰撳墠璁㈠崟浠诲姟
+                // //鏌ヨ褰撳墠璁㈠崟浠诲姟
                 List<FlowCard> OrderTask = storageCageService.SelectOrderTask();
                 jsonObject.append("OrderTask", OrderTask);
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java
deleted file mode 100644
index 5ad5cd8..0000000
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlchomeNew.java
+++ /dev/null
@@ -1,403 +0,0 @@
-package com.example.springboot.component;
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.example.springboot.service.*;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.example.springboot.entity.Glass;
-import com.example.springboot.entity.Out_slice;
-import com.example.springboot.entity.Queue;
-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.device.PlcBitObject;
-import com.example.springboot.entity.device.PlcParameterObject;
-import com.example.springboot.mapper.HomeMapper;
-import com.example.springboot.mapper.SpianMapper;
-
-public class PlchomeNew extends Thread {
-
-    @Autowired
-    private HomeMapper homeMapper;
-    private OutSliceServive outSliceServive;
-    private SpianMapper spianMapper;
-    private SpianService spianService;
-    private North_Glass_Buffer1Service north_Glass_Buffer1Service;
-    private JdbcConnections dbserve;
-    // 鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
-    public static Boolean isAllowQueue = true;
-    public static Boolean isAllowReordering = true;
-    // 鍑虹墖闃熷垪璀﹀憡
-    public static Boolean isQueueWarning = false;
-    // 閾濇id
-    public static String FrameNo = "";
-    // 鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
-    public static Boolean isConfirm = false;
-    // 寰呯‘璁ょ殑鍑虹墖闃熷垪
-    public static List<north_glass_buffer1> AluminumFrame;
-
-    // private Configuration config;
-
-    private StorageCageService storageCageService;
-
-    public static Boolean FeedState = false;
-
-    // public Plchome() throws IOException {
-    // config = new Configuration("config.properties");
-    // }
-
-    // public static Map b=new HashMap<>();
-    // b.put()
-    @Override
-    public void run() {
-        while (this != null) {
-            JSONObject jsonObject = new JSONObject();
-            try {
-                Thread.sleep(1000);
-                // 娉ㄥ叆mapper
-
-                homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
-                spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
-                spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
-                outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class);
-                north_Glass_Buffer1Service = WebSocketServer.applicationContext
-                        .getBean(North_Glass_Buffer1Service.class);
-                storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class);
-                dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
-
-                // 绗煎瓙浣跨敤鎯呭喌
-                List<StorageCage> tableData = homeMapper.selectAll();
-                jsonObject.append("tableData", tableData);
-                // 鏍肩悊鐗囩鏍煎瓙鐘舵��
-                List<StorageCage> cagelist1 = homeMapper.selectRack1();
-                List<StorageCage> cagelist2 = homeMapper.selectRack2();
-                List<StorageCage> cagelist3 = homeMapper.selectRack3();
-                List<StorageCage> cagelist4 = homeMapper.selectRack4();
-                jsonObject.append("cagelist1", cagelist1);
-                jsonObject.append("cagelist2", cagelist2);
-                jsonObject.append("cagelist3", cagelist3);
-                jsonObject.append("cagelist4", cagelist4);
-                // 杩涘嚭鐗囦换鍔�
-                List<StorageCage> tasklist1 = homeMapper.selectinout(3);
-                List<StorageCage> tasklist2 = homeMapper.selectinout(2);
-                jsonObject.append("tasklist1", tasklist1);
-                jsonObject.append("tasklist2", tasklist2);
-                // 鏌ヨ鎶ヨ淇℃伅
-                List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
-                jsonObject.append("alarmmg", alarmmg);
-
-                // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
-                String queid = spianMapper.Selectqueueid();
-                int state = spianMapper.Selectqueuestate();
-                jsonObject.append("queid", queid);
-                jsonObject.append("state", state);
-                // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
-                Queue form2 = homeMapper.GetQueueInfo(2);
-                Queue form3 = homeMapper.GetQueueInfo(1);
-                if (form2.getglassId() != null && form2.getglassId() != "") {
-                    jsonObject.append("form2", form2);
-                }
-                if (form3.getglassId() != null && form3.getglassId() != "") {
-                    jsonObject.append("form3", form3);
-                }
-                // 鑾峰彇鍑虹墖闃熷垪淇℃伅
-                List<Out_slice> listoutslice = outSliceServive.SelectProductionqueue();
-                jsonObject.append("listoutslice", listoutslice);
-                // 鑾峰彇褰撳墠鍑虹墖闃熷垪鍑虹墖鐘舵��
-                jsonObject.append("isAllowQueue", PlchomeNew.isAllowQueue);
-                // 鑾峰彇鍑虹墖闃熷垪璀﹀憡鐘舵��
-                jsonObject.append("isQueueWarning", PlchomeNew.isQueueWarning);
-                // 鑾峰彇褰撳墠鍑虹墖闃熷垪璋冨簭鐘舵��
-                jsonObject.append("isAllowReordering", PlchomeNew.isAllowReordering);
-                // 鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
-                jsonObject.append("isConfirm", isConfirm);
-                // 鏌ヨ褰撳墠閾濇淇℃伅
-                Out_slice CurrentFrame = outSliceServive.SelectCurrentFrame();
-                jsonObject.append("CurrentFrame", CurrentFrame);
-
-                // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16));
-                // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14));
-
-                // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
-                // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
-                // public static PlcBitObject plcBitObject = initUtil.initbit(PlcSign);
-                // public static PlcParameterObject plcStateObject = initUtil.initword(PlcState);
-                // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
-                // public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
-                // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
-                // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
-
-                // PlcParameterObject PlcParameter = PLCAutoMes.plcParameterObject;// plc鍙傛暟鍦板潃DB100
-                // PlcBitObject PlcTest = PLCAutoMes.plcPlcTest;// plc鏍囪瘑鍦板潃DB101
-                // PlcBitObject PlcSign = PLCAutoMes.plcBitObject;// plc璁惧鐘舵�佸湴鍧�DB102
-                // PlcParameterObject PlcState = PLCAutoMes.plcStateObject;// plc鐘舵�佸湴鍧�DB103
-                // PlcBitObject PlcAlarm = PLCAutoMes.plcPlcAlarm;// plc鎶ヨ鍦板潃DB104
-                // PlcParameterObject MesMission = PLCAutoMes.PlcMesObject;// mes浠籑ES鍔″湴鍧�DB105
-                // PlcParameterObject PLCMission = PLCAutoMes.PlcReadObject;// plc浠诲姟鍦板潃DB106
-                // PlcParameterObject Plcframe = PLCAutoMes.PlcframeObject;// plc閾濇鍦板潃DB17
-
-                // if (S7control.getinstance().CheckConnected() == true) {
-
-                // 閾濇绾夸氦浜�
-                if (S7controlLK.getinstance().CheckConnected() == true) {
-                    if (CurrentFrame != null) {
-                        S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(),
-                                Plcframe.getPlcParameter("E01id")
-                                        .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex()));
-                    }
-                    String E01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("E01id")
-                            .getAddress(Plcframe.getPlcParameter("E01id").getAddressIndex()));
-                    String J01id = S7controlLK.getinstance().readStrings(Plcframe.getPlcParameter("J01id")
-                            .getAddress(Plcframe.getPlcParameter("J01id").getAddressIndex()));
-
-                    String framerequest = Plcframe.getPlcParameter("J01Quest").getValue();
-                    // List<Short> liststates = S7controlLK.getinstance().ReadWord("DB17.38", 1);
-                    // List<Short> liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1);
-                    // Short framerequest = liststate.get(0);
-                    if (framerequest.equals("1")) {
-                        // 閾濇id
-                        String position;
-                        try {
-                            position = dbserve.SelectPositionByFrameBarcode(J01id);
-                        } catch (SQLException e) {
-                            // TODO Auto-generated catch block
-                            position = "0";
-                            e.printStackTrace();
-                        }
-                        Short send;
-                        if (position.equals("0")) {
-                            send = 0;
-                        } else {
-                            send = 1;
-                        }
-                        S7controlLK.getinstance().WriteWord(Plcframe.getPlcParameter("J01Quest")
-                                .getAddress(Plcframe.getPlcParameter("J01Quest").getAddressIndex()), (short) send);
-                    }
-                }
-
-                // 鑾峰彇褰撳墠鎵爜鏂瑰紡
-                // List<Boolean> Scanningmethods =
-                // S7control.getinstance().ReadBits("DB101.11.4", 1);
-                // if (Scanningmethods != null) {
-                // for (Boolean Scanningmethod : Scanningmethods) {
-                // jsonObject.append("Scanningmethod", Scanningmethod);
-                // }
-                // }
-                //
-                Boolean Scanningmethod = PlcTest.getPlcBit("Scanningmethod").getValue();
-                if (Scanningmethod != null) {
-                    jsonObject.append("Scanningmethod", Scanningmethod);
-                }
-
-                // 鑾峰彇褰撳墠鎵爜鏋幓鐠僫d
-                String CurrrentGlassId=PlcState.getPlcParameter("Scanningguns").getValue();
-
-                // String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString();
-                jsonObject.append("CurrrentGlassId", CurrrentGlassId);
-
-                // 鑾峰彇D01-D06,A01,A02,B01,B02鐘舵��
-                // List<Short> DeviceList = S7control.getinstance().ReadWord("DB103.0", 10);
-                List<String> DeviceStateList=new ArrayList<String>();
-                DeviceStateList.add("D01.State");
-                DeviceStateList.add("D02.State");
-                DeviceStateList.add("B01.State");
-                DeviceStateList.add("B02.State");
-                DeviceStateList.add("A01.State");
-                DeviceStateList.add("A02.State");
-                DeviceStateList.add("D03.State");
-                DeviceStateList.add("D04.State");
-                DeviceStateList.add("D05.State");
-                DeviceStateList.add("D06.State");
-                List<String> DeviceList=PlcState.getPlcParameterValues(DeviceStateList);
-                jsonObject.append("DeviceList", DeviceList);
-                
-                // 鑾峰彇D01-D06,A01,A02,B01,B02鐜荤拑id
-                List<String> GlassStateList=new ArrayList<String>();
-                GlassStateList.add("D01ID");
-                GlassStateList.add("D02ID");
-                GlassStateList.add("B01ID1");
-                GlassStateList.add("B02ID1");
-                GlassStateList.add("A01ID1");
-                GlassStateList.add("A01ID2");
-                GlassStateList.add("A02ID1");
-                GlassStateList.add("D03ID");
-                GlassStateList.add("D04ID");
-                GlassStateList.add("D05ID");
-                GlassStateList.add("D06ID");
-                List<String> GlassIdList = PlcState.getPlcParameterValues(GlassStateList);
-                // List<String> GlassIdList = new ArrayList<String>();
-                // GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString());
-
-                // GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString());
-
-                // GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString());
-
-                // GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString());
-                // GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString());
-                jsonObject.append("GlassIdList", GlassIdList);
-
-                // 鑾峰彇Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃�
-                List<String> addressList = new ArrayList<String>();
-                addressList.add("A02Position");
-                addressList.add("A01Position");
-                List<String> paramlist=PLCMission.getPlcParameterValues(addressList);
-                // addressList.add("DB106.12");
-                // addressList.add("DB106.0");
-                // List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
-                if (paramlist != null) {
-                    jsonObject.append("params", paramlist);
-                }
-                // // 鑾峰彇杩涚墖杞︾姸鎬�
-
-                // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
-                //         1);// 鑾峰彇杩涚墖杞︾姸鎬�
-                // if (datas1ListState != null) {
-                //     boolean exist1 = datas1ListState.contains((short) 0);
-                //     jsonObject.append("zhuangtai", exist1);
-                // }
-
-                // // 鑾峰彇杩涚墖鐜荤拑淇℃伅
-                // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
-                // if (inglassInfo != null) {
-                //     if (inglassInfo.size() > 0) {
-                //         jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
-                //     }
-                // }
-                // // 鑾峰彇閾濇idDB106.DBW64锛屾坊鍔犲埌鍑虹墖闃熷垪
-                // String frameno="X21763329601FB";
-                
-                String frameno=PlcState.getPlcParameter("Frameid").getValue();//寰呯數姘旀洿鏂板湴鍧�琛ㄦ牸
-                // String frameno = spianService.queGlassid("DB103.270", 14).toString();
-                if (!frameno.equals(PlchomeNew.FrameNo)) {
-                    PlchomeNew.FrameNo = frameno;
-                    try {
-                        Short num = 0;
-                        List<north_glass_buffer1> north_glass_buffer1s = north_Glass_Buffer1Service
-                                .SelectAluminumFrameInfoById(PlchomeNew.FrameNo);
-                        for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) {
-                            if (north_glass_buffer1.getstorageCage() == null) {
-                                break;
-                            }
-                            num++;
-                        }
-                        if (num == north_glass_buffer1s.size()) {
-                            north_Glass_Buffer1Service.AddOutSliceS(PlchomeNew.FrameNo);
-                        } else {
-                            PlchomeNew.AluminumFrame = north_glass_buffer1s;
-                        }
-                    } catch (SQLException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
-                    }
-                }
-                if (AluminumFrame != null) {
-                    jsonObject.append("AluminumFrame", AluminumFrame);
-                }
-
-                // 澶嶄綅鍊掕鏃�
-                // 鍦板潃104.9.6
-                Boolean countdown=PlcAlarm.getPlcBit("resetDelay").getValue();
-                jsonObject.append("countdown", countdown);
-                // List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
-                // for (Boolean countdowns : countdown) {
-                //     jsonObject.append("countdown", countdowns);
-                // }
-                // jsonObject.append("countdown", true);
-                // 澶嶄綅瀹屾垚淇″彿
-                String reset=PlcState.getPlcParameter("resetDelay").getValue();
-                jsonObject.append("reset", reset);
-                // List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
-                // for (Boolean reset : resetss) {
-                //     jsonObject.append("reset", reset);
-                // }
-
-                // 鏄惁鎬ュ仠
-                Boolean emergencystop=PlcAlarm.getPlcBit("emergencystopalarm").getValue();
-                jsonObject.append("emergencystop", emergencystop);
-
-                // List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
-                // for (Boolean emergencystop : emergencystops) {
-                //     jsonObject.append("emergencystop", emergencystop);
-                // }
-                // 鑾峰彇杩涚墖璇锋眰鐘舵��
-                String D01Request=PLCMission.getPlcParameter("FeedRequest").getValue();
-
-                // List<Short> D01Request = S7control.getinstance().ReadWord("DB106.24", 1);
-                Boolean D01RequestState = D01Request.contains("1");
-                jsonObject.append("D01RequestState", D01RequestState);
-
-                // 鑾峰彇杩涚墖鍙戦�佺姸鎬�
-                String D01respnse=PLCMission.getPlcParameter("A02QuestStartPosition").getValue();
-                // List<Short> D01respnse = S7control.getinstance().ReadWord("DB106.16", 1);
-                boolean D01ResponseState = D01respnse.contains("1");
-                // jsonObject.append("D01RequestState", D01RequestState);
-                // 鑷姩杩涚墖
-                isConfirm = true;
-                if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") {
-                    if ((form3.getglassheight() < 380 || form3.getglasswidth() < 390 || form3.getglassheight() > 1810
-                            || form3.getglasswidth() > 2760)
-                            || (form3.getglassheight() < 390 || form3.getglasswidth() < 380
-                                    || form3.getglassheight() > 2760 || form3.getglasswidth() > 1810)) {
-                        FeedState = true;
-                        jsonObject.append("FeedState", FeedState);
-                        FeedState = false;
-                    } else {
-                        if (D01RequestState == true && D01ResponseState != true) {
-                            storageCageService.InsertQueueGlassId((short) 1, form3);
-                        }
-                    }
-                }
-
-                // }
-
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-
-            boolean dbconnected = false;
-            try {
-                dbserve.getConn();
-                dbconnected = true;
-            } catch (Exception e) {
-                // TODO: handle exception
-                dbconnected = false;
-            }
-            jsonObject.append("dbconnected", dbconnected);
-            // jsonObject.append("params", new short[] { 30, 40, });
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    webserver.sendMessage(jsonObject.toString());
-
-                    if (webserver != null) {
-
-                        List<String> messages = webserver.getMessages();
-
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-
-                    }
-
-                }
-            }
-        }
-    }
-}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
index 44a6805..9ad8e83 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java
@@ -201,7 +201,6 @@
     public List<Short> ReadWord(String address, int count) {
         if (s7PLC == null)
             return null;
-
         List<String> addresslist = GetAddressList(address, count, 16);
         try {
             return s7PLC.readInt16(addresslist);
@@ -211,7 +210,13 @@
             return null;
         }
     }
-
+    public byte[] Readbyte(String address, int count) {
+        byte[] byt=new byte[count];
+        int wordcount=((count%2==0)?count/2:count+1);
+        List<Short> word=ReadWord(address,wordcount);
+        
+        return byt;
+    }
     /**
      * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
      * 
@@ -465,7 +470,10 @@
         }
         return addresslist;
     }
-
+    public void writeString(String addr,String data) {
+        s7PLC.writeString(addr,data);
+    }
+    
     public String readStrings(String addr) {
         return s7PLC.readString(addr);
     }
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 a6eaa4c..c7bc287 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
@@ -16,30 +16,29 @@
         // TODO Auto-generated method stub
         //
         System.out.println("鍚姩瀹屾垚");
-        //new PLCAutoMes().start();
-        //  new PlcHold().start();
-          new PlcHoldNew().start();
-        
+        new PLCAutoMes().start();
+        // new PlcHold().start();
+        new PlcHoldNew().start();
 
-        //  new Plchome().start();
-        //  new PlcLayout().start();
-        //  new Plcalarm().start();
-        //  new Plcsign().start();
-        //  new Plcstate().start();
-        //  new PlcPositioning1().start();
-        //  new PlcParameter2().start();
-        //  new PLCAutomaticParameterSetting().start();
+        //new Plchome().start();
+        // new PlcLayout().start();
+        // new Plcalarm().start();
+        // new Plcsign().start();
+        // new Plcstate().start();
+        // new PlcPositioning1().start();
+        // new PlcParameter2().start();
+        // new PLCAutomaticParameterSetting().start();
 
-        //  new PlcManualonePosition().start();
-        //  new PlcManualonePosition2().start();
-        //  new PlcServoManualone().start();
-        //  new PLCManualJog().start();
-        //  new Plclog().start();
+        // new PlcManualonePosition().start();
+        // new PlcManualonePosition2().start();
+        // new PlcServoManualone().start();
+        // new PLCManualJog().start();
+        // new Plclog().start();
 
-        //  new PlcInteractionState().start();
-        //new PlcParameter1Review().start();
-        //new PLCAutomaticParameterSettingReview2().start();
+        // new PlcInteractionState().start();
+        // new PlcParameter1Review().start();
+        // new PLCAutomaticParameterSettingReview2().start();
 
-    // new PLCManualJogReview().start();
+        // new PLCManualJogReview().start();
     }
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index f47de89..f4c9d3e 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,6 +1,7 @@
 package com.example.springboot.controller;
 
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -16,6 +17,11 @@
 import com.example.springboot.service.OutSliceServive;
 import com.example.springboot.service.SpianService;
 import com.example.springboot.service.StorageCageService;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+import cn.hutool.core.lang.Console;
 
 import com.example.springboot.common.Result;
 import com.example.springboot.component.Plchome;
@@ -482,10 +488,25 @@
   public Result ModeChange(String flowcard,Integer method) {
     return storageCageService.ModeChange(flowcard,method);
   }
-
+  
    //娣诲姞鐜荤拑淇℃伅鍒版祴閲忎俊鎭�
    @PostMapping("/UpdateQueue")
    public Result UpdateQueue(@RequestBody GlassInfo glassInfo) {
      return storageCageService.UpdateQueue(glassInfo);
    }
+    //浜哄伐鎷胯蛋
+    @PostMapping("/ManualTake")
+    public Result ManualTake(@RequestBody String glassInfo) {
+      return storageCageService.ManualTake(glassInfo);
+    }
+    //閲嶆柊娴嬮噺
+    @PostMapping("/AnewMeasure")
+    public Result AnewMeasure(@RequestBody String glassInfo) {
+      return storageCageService.AnewMeasure(glassInfo);
+    }
+   //瀵煎叆鏁版嵁 锛氭坊鍔犵幓鐠冧俊鎭�
+   @PostMapping("/importData")
+   public Result importData(@RequestBody List<Map> IportDataStr) { 
+     return storageCageService.AddGlassinfo(IportDataStr);
+   }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java
index 0a886d5..9a1653b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java
@@ -20,6 +20,7 @@
   private Double thickness;// 鍘�
   private Integer number;// 鏁伴噺
   private Integer finishnumber;// 瀹屾垚鏁伴噺
+  private Integer sumtier;// 瀹屾垚鏁伴噺
   private Integer measurenumber;// 娴嬮噺瀹屾垚鏁伴噺
   private Integer cageno;//绗煎唴鏁伴噺
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
index f0bc2e2..dacfd4c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterInfo.java
@@ -112,8 +112,8 @@
         }
         if (addressLength == 14 ) {
             int wordindex = index;
-            int newIndex = wordindex + 13;
-            return stringdatas[0] + "." + wordindex +"-" + newIndex;
+            //int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex ;
         }
         return null;
     }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java b/springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java
index 0a886d5..9a1653b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java
@@ -20,6 +20,7 @@
   private Double thickness;// 鍘�
   private Integer number;// 鏁伴噺
   private Integer finishnumber;// 瀹屾垚鏁伴噺
+  private Integer sumtier;// 瀹屾垚鏁伴噺
   private Integer measurenumber;// 娴嬮噺瀹屾垚鏁伴噺
   private Integer cageno;//绗煎唴鏁伴噺
 }
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 105307a..65c1980 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
@@ -14,12 +14,16 @@
 import com.example.springboot.entity.RolePermission;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface HomeMapper {
-  //鏌ヨ姣忎釜绗煎瓙鐨勪娇鐢ㄦ儏鍐�
+  // 鏌ヨ姣忎釜绗煎瓙鐨勪娇鐢ㄦ儏鍐�
   @Select("select cage,round(100-(21-sum(if(state>0,1,state)))/21*100) as cell,21-sum(if(state>0,1,state)) as state from (select cage,cell,max(state) as state from storage_cage group by cage,cell) as cages group by cage")
   List<StorageCage> selectAll();
+
+  @Select("Select cage,sum(case when number=0 or number is null then 1 else 0 end) as cell,100-sum(case when number=0 or number is null then 1 else 0 end)/count(id)*100 as width from storage_cage group by cage")
+  List<StorageCage> selectAlls();
 
   // 鏌ヨ10-6绗煎唴灞傛牸瀛愮姸鎬�
   @Select("SELECT cage,state,ifnull(glasswidth/2750*2,0) as glasswidth from storage_cage where cage>5 and tier=2 order by cage desc,cell desc")
@@ -36,8 +40,6 @@
   // 鏌ヨ5-1绗煎灞傛牸瀛愮姸鎬�
   @Select("SELECT case when tier=1 then cage else 0 end as cage,case when tier=1 then state else 0 end as state,sum(case when tier=1 then glasswidth/2750*2 else 0 end) as glasswidth,sum(case when tier=2 then glasswidth/2750*2 else 0 end) as width  from storage_cage where cage<=5  group by cage,cell order by cage desc,cell desc")
   List<StorageCage> selectRack4();
-
-
 
   // 鏍规嵁浠诲姟绫诲瀷鏌ヨ褰撳墠姝e湪鍑虹墖锛岃繘鐗囩殑鐜荤拑淇℃伅
   @Select("select * from storage_cage where state=#{task_type}")
@@ -61,17 +63,17 @@
 
   // 鎵嬪姩瀹屾垚浠诲姟
   @Update("update storage_task set task_state=1 where task_type=#{task_type} and glass_id=#{glassid}")
-  void UpdateTask(@Param("task_type") Integer task_type,String glassid);
+  void UpdateTask(@Param("task_type") Integer task_type, String glassid);
 
   // 鎵嬪姩瀹屾垚杩涚墖浠诲姟淇敼绗煎瓙鏁版嵁
   @Update("update storage_cage set state=1 where glass_id=#{glassid} and state=2")
   void UpdateCageTask1(@Param("glassid") String glassid);
 
-  //鑾峰彇鎶ヨ淇℃伅
+  // 鑾峰彇鎶ヨ淇℃伅
   @Select("select id,content,timeon as timeons,endTime from alarmmg where endTime is null")
   List<alarmmg> SelectAlarmmgInfo();
 
-  //鑾峰彇鐞嗙墖绗煎唴鐜荤拑淇℃伅
+  // 鑾峰彇鐞嗙墖绗煎唴鐜荤拑淇℃伅
   @Select("select * from storage_cage where position(#{cage} in ifnull(glass_id,\"\"))")
   List<StorageCage> SelectCageInfo(String cage);
 
@@ -79,11 +81,11 @@
   @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,listid=null,boxid=null,FrameBarcode=null where glass_id=#{glassid}")
   void DeleteByGlassID(String glassid);
 
-  //鏌ヨ灏忚溅浣嶇疆
+  // 鏌ヨ灏忚溅浣嶇疆
   @Select("select * from car_position")
   List<CarPosition> Loadcarlist();
 
-  //鏌ヨ鎿嶄綔瀵嗙爜
+  // 鏌ヨ鎿嶄綔瀵嗙爜
   @Select("select dianqimima from user where id=1")
   String SelectPassword();
 
@@ -91,93 +93,95 @@
   // @Select("select * from storage_cage where glass_id=#{glassid}")
   // StorageCage SelectGlassInfo(String glassid);
 
-  //鏍规嵁鐜荤拑id鏌ヨ鐞嗙墖绗间俊鎭�
+  // 鏍规嵁鐜荤拑id鏌ヨ鐞嗙墖绗间俊鎭�
   @Select("select * from storage_cage where glass_id=#{glassid}")
   List<StorageCage> SelectStorageInfoByGlassId(String glassid);
 
-  //鏌ヨ鐜荤拑淇℃伅
-//  @Select("select * from glass where glassid=#{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.glasswidth},glassheight=#{glass.glassheight},glasswidthmm=#{glass.glasswidthmm},glassheightmm=#{glass.glassheightmm},listid=#{glass.listId},boxid=#{glass.boxId} where cage=#{cage} and cell=#{cell} and tier=#{tier}")
   void Inglassid(Queue glass, short cage, short cell, short tier);
 
-  //鏌ヨ鐞嗙墖绗间腑鏄惁鏈夋鐜荤拑
+  // 鏌ヨ鐞嗙墖绗间腑鏄惁鏈夋鐜荤拑
   @Select("select count(*) from storage_cage where glass_id=#{glassId}")
   short SelectStorageByGlassId(String glassId);
 
-  //鏍规嵁璁㈠崟鏌ヨ鐜荤拑淇℃伅
+  // 鏍规嵁璁㈠崟鏌ヨ鐜荤拑淇℃伅
   @Select("select * from north_glass_buffer1 where position(#{orderid} in ordernumber)")
   List<north_glass_buffer1> SelectGlass(String orderid);
 
-  //鑾峰彇涓婄墖闃熷垪淇℃伅
+  // 鑾峰彇涓婄墖闃熷垪淇℃伅
   @Select("select * from queue where id=#{id}")
   Queue GetQueueInfo(int id);
 
-  //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
+  // 鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
   @Update("update queue set glassid=#{queue.glassId},orderid=#{queue.orderId},listId=#{queue.listId},boxId=#{queue.boxId},glasswidth=#{queue.glasswidth},glassheight=#{queue.glassheight},glasswidthmm=#{queue.glasswidthmm},glassheightmm=#{queue.glassheightmm},state=1 where id=#{id}")
-  void InsertQueueGlassId(Queue queue,Short id);
+  void InsertQueueGlassId(Queue queue, Short id);
 
-  //纭鎵爜浣嶇幓鐠冧俊鎭�
+  // 纭鎵爜浣嶇幓鐠冧俊鎭�
   @Update("update queue set state=1 where id=1")
   void UpdateQueueState();
 
-  //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
+  // 鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
   @Update("update queue set glassid=null,orderid=null,listid=null,boxid=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,state=0 where id=#{id}")
   void DeleteQueueGlass(String id);
 
-  //鏌ヨ姝よ鍗曞湪鐞嗙墖绗奸噷鐨勭幓鐠冩暟
+  // 鏌ヨ姝よ鍗曞湪鐞嗙墖绗奸噷鐨勭幓鐠冩暟
   @Select("select count(*) from storage_cage where order_id=#{orderid}")
   Short SelectGlassNo(String orderid);
 
-  //鏍规嵁鐜荤拑id浠庡鎴疯〃鏌ヨ鏁版嵁
+  // 鏍规嵁鐜荤拑id浠庡鎴疯〃鏌ヨ鏁版嵁
   @Select("select * from north_glass_buffer1 where barcode=#{glassid}")
   north_glass_buffer1 SelectBoxNo(String glassid);
 
-  //鏌ヨ鍑虹墖闃熷垪淇℃伅
+  // 鏌ヨ鍑虹墖闃熷垪淇℃伅
   @Select("select * from out_slice order by sequence")
   List<Out_slice> SelectProductionqueue();
 
-  //鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
+  // 鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
   @Select("select * from storage_cage where glass_id=#{glassid}")
   StorageCage SelectStorageGlassById(String glassid);
 
-  //鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
+  // 鏍规嵁鐜荤拑id鏌ヨ绗煎唴鐜荤拑淇℃伅
   @Select("select * from storage_cage where glass_id=#{glassid}")
   List<StorageCage> SelectStoragesGlassById(String glassid);
 
-
   // //鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
-  // @Update("update out_slice set state=4 where barcode=#{FrameNo} and (state=0 or state=1 or state=2)")
+  // @Update("update out_slice set state=4 where barcode=#{FrameNo} and (state=0
+  // or state=1 or state=2)")
   // void DeleteProductionQueueGlass(String id);
 
-  //鏍规嵁閾濇id鏌ヨ瀵瑰簲鐜荤拑淇℃伅
+  // 鏍规嵁閾濇id鏌ヨ瀵瑰簲鐜荤拑淇℃伅
   @Select("select * from north_glass_buffer1 where FrameBarcode=#{FrameBarcode}")
   List<north_glass_buffer1> SelectAluminumFrameInfoById(String FrameBarcode);
 
-
-  //鏍规嵁鐜荤拑id鏌ヨ鍑虹墖闃熷垪淇℃伅
+  // 鏍规嵁鐜荤拑id鏌ヨ鍑虹墖闃熷垪淇℃伅
   @Select("select * from out_slice where glassid=#{getbarcode}")
   Out_slice SelectQueueByglassid(String getbarcode);
 
-  //娣诲姞鍑虹墖闃熷垪
+  // 娣诲姞鍑虹墖闃熷垪
   @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position` ,`orderid` ,`listid` ,`boxid` ,`glasswidthmm` ,`glassheightmm` ,`framewidthmm` ,`frameheightmm` ,`framestate` ) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, #{state}, #{flip}, #{sequence}, now(), #{position}, #{orderid}, #{listid}, #{boxid}, #{glasswidth}, #{glassheight}, #{framewidthmm}, #{frameheightmm}, 0);")
-  void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position, Short state,String orderid, String listid, String boxid, String glasswidth, String glassheight,String framewidthmm,String frameheightmm);
+  void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm,
+      int sequence, String position, Short state, String orderid, String listid, String boxid, String glasswidth,
+      String glassheight, String framewidthmm, String frameheightmm);
 
-  //鍑虹墖闃熷垪璋冨簭
+  // 鍑虹墖闃熷垪璋冨簭
   @Update("update out_slice set sequence=#{sequence} where glassid=#{glassId}")
-  void UpdateOutSliceSequence(String glassId,int sequence);
+  void UpdateOutSliceSequence(String glassId, int sequence);
 
-  //鏌ヨ鍑虹墖闃熷垪鏈�澶ч『搴�
+  // 鏌ヨ鍑虹墖闃熷垪鏈�澶ч『搴�
   @Select("select ifnull(max(sequence),0)+1 from out_slice ")
   Short SelectMaxSquence();
-  //鏌ヨ鐢ㄦ埛鏉冮檺
+
+  // 鏌ヨ鐢ㄦ埛鏉冮檺
   @Select("select rp.* from role_permission rp inner join user r on rp.role_id=r.role_id and r.username=#{username} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35 or permission_id=36 or permission_id=37 or permission_id=38 or permission_id=39)")
   List<RolePermission> SelectPermissionByUserName(String username);
 
@@ -185,85 +189,84 @@
   // @Update("update out_slice set state=2 where id=#{id}")
   // void CompleteQueue(String id);
 
-  //鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
+  // 鏍规嵁鐜荤拑瀹屾垚鍑虹墖浠诲姟
   @Update("update out_slice set state=2 where glassid=#{glassid}")
   void CompleteQueueByGlassId(String glassid);
 
-  //鏌ヨ閾濇id瀵瑰簲鐜荤拑瀹屾垚鏁伴噺
+  // 鏌ヨ閾濇id瀵瑰簲鐜荤拑瀹屾垚鏁伴噺
   @Select("select count(*) from out_slice where barcode=#{frameid} and state!=4")
   Short SelectCountByFrameNo(String frameid);
 
-  //鍒犻櫎宸插畬鎴愮殑浠诲姟
+  // 鍒犻櫎宸插畬鎴愮殑浠诲姟
   @Delete("delete from out_slice where Barcode=#{frameid}")
   void CompleteQueueByFrameNo(String frameid);
 
-  //鏌ヨ绗煎唴鏍煎瓙鍓╀綑瀹藉害
+  // 鏌ヨ绗煎唴鏍煎瓙鍓╀綑瀹藉害
   @Select("Select width from storage_cage where cage=#{cage} and cell=#{cell} limit 1")
   Double SelectCageWidth(short cage, short cell);
 
-  //淇敼鍑虹墖闃熷垪鐜荤拑鐘舵�佷负缂哄け
+  // 淇敼鍑虹墖闃熷垪鐜荤拑鐘舵�佷负缂哄け
   @Update("update out_slice set state=3 where glassId=#{glassid} and state<3")
   void UpdateOutSliceGlass(String glassid);
 
-  //鏌ヨ鏈畬鎴愮殑浠诲姟
+  // 鏌ヨ鏈畬鎴愮殑浠诲姟
   @Select("select * from storage_task where task_state=0 and task_type=#{task_type}")
   List<StorageTask> SelectTaskByState(int task_type);
 
-  //淇敼鍑虹墖闃熷垪閾濇鐘舵��
+  // 淇敼鍑虹墖闃熷垪閾濇鐘舵��
   @Update("update out_slice set framestate=1 where barcode=#{frameno}")
   void FrameStateUpdate(String frameno);
 
-  //鏌ヨ褰撳墠閾濇淇℃伅
+  // 鏌ヨ褰撳墠閾濇淇℃伅
   @Select("select * from out_slice where framestate=0 order by id limit 1")
   Out_slice SelectCurrentFrame();
 
-  //鏍规嵁鐜荤拑id鏌ヨ浠诲姟淇℃伅
+  // 鏍规嵁鐜荤拑id鏌ヨ浠诲姟淇℃伅
   @Select("select task_type from storage_task where glass_id=#{glassid} and task_state!=1")
   Short SelectTaskByGlassId(String glassid);
 
-  //淇敼鏍煎瓙瀹藉害
+  // 淇敼鏍煎瓙瀹藉害
   @Update("update storage_cage set width=width+#{width} where   cage=#{cage} and cell=#{cell};")
   void UpdataCageWidth(double width, int cage, int cell);
 
-  //鑾峰彇閾濇鏈夋病鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑
+  // 鑾峰彇閾濇鏈夋病鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑
   @Select("select count(*) from out_slice where barcode=#{frameNo} and state=1")
   Short SelectOutingQueueCount(String frameNo);
 
-
-  //鏌ヨ鐞嗙墖绗煎唴淇℃伅
+  // 鏌ヨ鐞嗙墖绗煎唴淇℃伅
   @Select("select * from storage_cage")
   List<StorageCage> SelectStorageCageInfo();
 
-  //鍒犻櫎鏍煎瓙鍐呯幓鐠冧俊鎭�
+  // 鍒犻櫎鏍煎瓙鍐呯幓鐠冧俊鎭�
   @Update("update storage_cage set width=5000,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,thickness=null,glasstype=null,number=null where cell=#{cell}")
   void DeleteStroageCageByCell(Integer cell);
-  
-  //淇敼鏍煎瓙鐜荤拑鏁伴噺
+
+  // 淇敼鏍煎瓙鐜荤拑鏁伴噺
   @Update("update storage_cage set number=ifnull(number,0)+#{num} where cell=#{cell}")
   void updateStroageCageByCell(Integer cell, Integer num);
 
-  //璁$畻鏍煎瓙鍐呭墿浣欏搴�
+  // 璁$畻鏍煎瓙鍐呭墿浣欏搴�
   @Update("update storage_cage set width=5000-(glasswidth+100)*number where cell=#{cell}")
   void UpdateStroageCageWidthByCell(Integer cell);
 
-  //鏍规嵁浠诲姟绫诲瀷鑾峰彇浠诲姟
+  // 鏍规嵁浠诲姟绫诲瀷鑾峰彇浠诲姟
   @Select("select * from storage_task where task_type=#{task_type} and task_state=0")
   List<StorageTask> SelectStorageTask(int task_type);
-  
-  //鏍规嵁id浠诲姟
+
+  // 鏍规嵁id浠诲姟
   @Select("select * from storage_task where id=#{id}")
   StorageTask SelectStorageTaskById(int id);
 
-  //鏍规嵁鏍煎瓙鏌ヨ鐜荤拑淇℃伅
+  // 鏍规嵁鏍煎瓙鏌ヨ鐜荤拑淇℃伅
   @Select("select * from storage_cage where cell=#{cell}")
   StorageCage SelectStorageByCell(String cell);
 
-  //鎵嬪姩瀹屾垚浠诲姟
+  // 鎵嬪姩瀹屾垚浠诲姟
   @Select("update storage_task set task_state=1 where id=1429")
   void FinishTask(Integer id);
 
   @Select("select gi.* from glassinfo gi inner join flowcard fc on gi.flowcard=fc.flowcard where fc.state!=2 and position(#{width} in gi.width) and position(#{height} in gi.height) and position(#{thickness} in gi.thickness) and position(#{films} in gi.films) group by gi.id")
-  List<GlassInfo> SelectGlassInfo(String width,String height,String thickness,String films);
+  List<GlassInfo> SelectGlassInfo(String width, String height, String thickness, String films);
 
   @Update("update storage_cage set glasstype=#{glassInfo.glasstype},glasswidth=#{glassInfo.width},glassheight=#{glassInfo.height},thickness=#{glassInfo.thickness},films=#{glassInfo.films},number=0 where cell=#{cell}")
   void StorageCageAddGlass(String cell, GlassInfo glassInfo);
@@ -281,10 +284,32 @@
   void ModeChange(String flowcard, int method);
 
   @Update("update queue set flowcard=#{flowcard},glasswidth=#{width},glassheight=#{height},glasstype=#{glasstype},state=1 where state<=0")
-  void UpdateQueue(String flowcard,double width,double height,Integer glasstype);
+  void UpdateQueue(String flowcard, double width, double height, Integer glasstype);
 
-  @Update("update glassinfo set finishnumber=finishnumber+1 where flowcard=#{flowcard} and mateid=#{mateid} and tier=#{geTier}")
+  @Update("update glassinfo set finishnumber=ifnull(finishnumber,0)+1 where flowcard=#{flowcard} and mateid=#{mateid} and tier=#{geTier}")
   void AddGlassNo(String flowcard, Integer mateid, Integer geTier);
-  
+
+  // 娣诲姞鍑虹墖闃熷垪
+  @Insert("INSERT INTO glassinfo (`flowcard`, `glasstype`, `mateid`, `glassid`, `tier`, `films`, `width`, `height`, `thickness`, `number`, `finishnumber`, `sumtier`, `measurenumber`)"
+      +
+      " VALUES (#{flowcard}, #{glasstype}, #{mateid}, #{glassid}, #{tier}, #{films}, #{width}, #{height}, #{thickness}, #{number}, 0, #{sumtier}, 0)")
+  void AddGlassinfo(String flowcard, Integer glasstype, Integer mateid, String glassid, Integer tier, String films,
+      Double width, Double height, Double thickness, Integer number, Integer sumtier);
+
+  // 鏈�澶х幓鐠冪被鍨�
+  @Select("select max(glasstype)+1 from glassinfo")
+  Integer SelectMaxType();
+
+  // 鏌ヨ鍏ㄩ儴鐜荤拑绫诲瀷
+  @Select("select CONCAT(IFNULL(width,''),'_',IFNULL(height,''),'_',IFNULL(thickness,''),'_',IFNULL(films,'')) as type,glasstype from glassinfo GROUP BY width,height,thickness,films")
+  List<Map> SelectType();
+
+  // 鏌ヨ鎬诲眰鏁�
+  @Select("SELECT CONCAT(IFNULL(flowcard,''),'_',IFNULL(mateid,'')),count(*) as tiersum FROM `glassinfo` group by flowcard,mateid")
+  List<Map> Selecttiersum();
+
+  // 鏌ヨ绗煎唴鐜荤拑淇℃伅
+  @Select("select * from storage_cage where cage=#{cage} order by id desc")
+  List<StorageCage> SelectStorageCageByCage(Integer cage);
 
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
index e908ad8..4ebf773 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/QueueMapper.java
@@ -38,4 +38,7 @@
                         "values (null,null,null,null,null,null,#{glasswidthmm},#{glassheightmm},null,#{state},NOW())")
     void insertMatchFailure(@Param("glasswidthmm") double glasswidthmm, @Param("glassheightmm") double glassheightmm,@Param("state") int state);
 
+    @Delete("delete from queue where state<=0")
+    void DeleteErrorQueue();
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java b/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
index b70f990..54bf11e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/HomeService.java
@@ -63,11 +63,11 @@
     }
 
     // 鍖归厤閫昏緫
-    public GlassInfo Normal(double width, double height, String line) {
+    public boolean Normal(double width, double height, String line) {
         List<Queue> ErrowQueues= QueueMapper.selectErrorQueues();
         if (ErrowQueues.size()>0) {
             //System.out.println("鏈夊尮閰嶅け璐ユ暟鎹湭鍘婚櫎");
-            return new GlassInfo();
+            return false;
         }
         List<GlassInfo> Result = NormalGlassInfo(width, height, "1");
         if (Result.size() == 1) {
@@ -77,7 +77,7 @@
             GlassInfoMapper.updatemeasurenumber(GlassInfo.getId());
             System.out.println("鍖归厤鎴愬姛");
             System.out.println(GlassInfo.getGlassid());
-            return GlassInfo;
+            return true;
         } else if (Result.size() > 1) {
             // 鍖归厤澶辫触 鍖归厤鍒板鏉$鍚堢殑鏁版嵁 娣诲姞鏁版嵁
             QueueMapper.insertMatchFailure(width, height, 0);
@@ -88,7 +88,7 @@
             QueueMapper.insertMatchFailure(width, height, -1);
             System.out.println("鏈壘鍒扮鍚堢殑鏁版嵁");
         }
-        return new GlassInfo();
+        return false;
     }
 
     // Execl琛ㄦ牸 浼犲叆鏂囦欢璺緞
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
index 5c4474a..d68cb6b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java
@@ -40,6 +40,8 @@
     //濡傛灉鏈夊悓绫诲瀷鏃剁洿鎺ュ鍔�
     if(cageid!=Integer.MIN_VALUE){
         //鍙戦�乸lc浠诲姟
+        Mestast(glassid, 1001, cageid, 1,"MESID1");
+        //浠诲姟鍙戦�佸瓧
         //Mestast(glassid,1001,cageid,1);
         
     }else{ 
@@ -52,7 +54,7 @@
         }
         //褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
         if(cageid!=Integer.MIN_VALUE){
-            Mestast(glassid,1001,cageid,1);
+            Mestast(glassid,1001,cageid,1,"MESID1");
             //鍙戦�乸lc浠诲姟
             
         }else{
@@ -84,7 +86,7 @@
    
                     StorageCage glass= albaniaMapper.SelectCageGlass(glasstype);
                     //鍙戦�侀厤鐗囨暟鎹�
-                    Mestast(glassmate.getGlasstype()+"i", glass.getId(),2002, 0);
+                    Mestast(glassmate.getGlasstype()+"i", glass.getId(),2002, 0,"MESID1");
                     albaniaMapper.AddFinishNumber(flowcard, mateid, tier);
                     albaniaMapper.Inserttask(1, 0, glass.getId(), 2002, glassmate.getGlassid()+i, glasstype,glass.getFlowcard(),mateid,tier);
                     if(tier==sumid){
@@ -111,8 +113,12 @@
             glassidlist.add((byte) iditem);
         }
         byte[] bytes = Bytes.toArray(glassidlist);
+        //writeString
         System.out.println("outmesidbytes:" + bytes.length);
-        S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(),bytes);
+        System.out.println(plcmes.getPlcParameter(address).getAddress());
+        System.out.println();
+        
+        //S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(),bytes);
         //S7control.getinstance().WriteByte(address, bytes);// 娲惧彂鍑虹墖id
 
     }
@@ -150,8 +156,9 @@
     }
 
     //涓嬪彂鐞嗙墖浠诲姟
-    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC) {
-        outmesid(glassid, "MESID1");//涓嬪彂鐜荤拑id
+    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC,String address) {
+        //outmesid(glassid, "MESID1");//涓嬪彂鐜荤拑id
+        S7control.getinstance().writeString(plcmes.getPlcParameter(address).getAddress(),glassid);
         S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart1").getAddress(), (short) MESToPLCStart1);//璧峰浣嶇疆
         S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget1").getAddress(), (short) MESToPLCTarget1);//鐩爣浣嶇疆
         if(MESToPLC!=0){
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
index 14acc27..f1fa40e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java
@@ -5,11 +5,13 @@
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.example.springboot.common.Result;
+import com.example.springboot.component.PLCAutoMes;
 import com.example.springboot.component.Plchome;
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.FlowCard;
@@ -17,7 +19,10 @@
 import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
+import com.example.springboot.entity.device.PlcParameterObject;
 import com.example.springboot.mapper.HomeMapper;
+import com.example.springboot.mapper.QueueMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 
 @Service
 public class StorageCageService {
@@ -26,6 +31,9 @@
 
     @Autowired
     private OutSliceServive outSliceServive;
+
+    @Autowired
+    private QueueMapper QueueMapper;
 
     @Autowired
     private SpianService spianService;
@@ -236,83 +244,176 @@
         return storageTasks;
     }
 
-    //鎵嬪姩瀹屾垚浠诲姟
+    // 鎵嬪姩瀹屾垚浠诲姟
     public Result FinishTask(Integer id) {
-        StorageTask storageTask = homeMapper.SelectStorageTaskById(id);//鑾峰彇浠诲姟淇℃伅
-        homeMapper.FinishTask(storageTask.getId());//瀹屾垚浠诲姟
-        if(storageTask.getTaskType().equals("0")){
-            UpdateStroageCageByCell(Integer.parseInt(storageTask.getLoadrack()),1);//鐜荤拑鏁伴噺+1
-        }else{
+        StorageTask storageTask = homeMapper.SelectStorageTaskById(id);// 鑾峰彇浠诲姟淇℃伅
+        homeMapper.FinishTask(storageTask.getId());// 瀹屾垚浠诲姟
+        if (storageTask.getTaskType().equals("0")) {
+            UpdateStroageCageByCell(Integer.parseInt(storageTask.getLoadrack()), 1);// 鐜荤拑鏁伴噺+1
+        } else {
             StorageCage storageCage = homeMapper.SelectStorageByCell(storageTask.getShelfRack());
-            if(storageCage.getNumber()>1){
-                UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()),-1);//鐜荤拑鏁伴噺-1
-            }else{
-                UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()),0);//娓呴櫎鏍煎唴淇℃伅
+            if (storageCage.getNumber() > 1) {
+                UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), -1);// 鐜荤拑鏁伴噺-1
+            } else {
+                UpdateStroageCageByCell(Integer.parseInt(storageTask.getShelfRack()), 0);// 娓呴櫎鏍煎唴淇℃伅
             }
-            homeMapper.AddGlassNo(storageTask.getFlowcard(),storageTask.getMateid(),storageTask.geTier());//娣诲姞鍑虹墖瀹屾垚鏁伴噺
+            homeMapper.AddGlassNo(storageTask.getFlowcard(), storageTask.getMateid(), storageTask.geTier());// 娣诲姞鍑虹墖瀹屾垚鏁伴噺
         }
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
         return Result.success(map);
     }
 
-
-    //鏌ヨ鐜荤拑淇℃伅
-    public Result SelectGlassInfo(String width,String height,String thickness,String films) {
-        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width,height,thickness,films);
+    // 鏌ヨ鐜荤拑淇℃伅
+    public Result SelectGlassInfo(String width, String height, String thickness, String films) {
+        List<GlassInfo> glassInfoList = homeMapper.SelectGlassInfo(width, height, thickness, films);
         Map<String, Object> map = new HashMap<>();
         map.put("StorageCageAddInfo", glassInfoList);
         return Result.success(map);
     }
 
-    //娣诲姞鐜荤拑鍒版牸瀛愬唴
-    public Result StorageCageAddGlass(String cell,GlassInfo glassInfo) {
-        homeMapper.StorageCageAddGlass(cell,glassInfo);
-        UpdateStroageCageByCell(Integer.parseInt(cell),1);
+    // 娣诲姞鐜荤拑鍒版牸瀛愬唴
+    public Result StorageCageAddGlass(String cell, GlassInfo glassInfo) {
+        homeMapper.StorageCageAddGlass(cell, glassInfo);
+        UpdateStroageCageByCell(Integer.parseInt(cell), 1);
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
         return Result.success(map);
     }
 
-    //鏌ヨ璁㈠崟浠诲姟
+    // 鏌ヨ璁㈠崟浠诲姟
     public List<FlowCard> SelectOrderTask() {
-        List<FlowCard> OrderTask=homeMapper.SelectOrderTask();
-        for (FlowCard flowcard : OrderTask) {
-            flowcard.setglassinfo(homeMapper.SelectOrderView(flowcard.getFlowcard()));
-        }
+        List<FlowCard> OrderTask = homeMapper.SelectOrderTask();
+        // for (FlowCard flowcard : OrderTask) {
+        //     flowcard.setglassinfo(homeMapper.SelectOrderView(flowcard.getFlowcard()));
+        // }
         return OrderTask;
     }
 
-    //寮�濮嬩换鍔�
+    // 寮�濮嬩换鍔�
     public Result ClaimTasks(String flowcard, Integer state) {
-        if(state==1){
-            homeMapper.ClaimTasks(flowcard,0);
-        }else{
-            homeMapper.ClaimTasks(flowcard,1);
+        if (state == 1) {
+            homeMapper.ClaimTasks(flowcard, 0);
+        } else {
+            homeMapper.ClaimTasks(flowcard, 1);
         }
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
         return Result.success(map);
     }
 
-    //浠诲姟妯″紡淇敼
+    // 浠诲姟妯″紡淇敼
     public Result ModeChange(String flowcard, Integer method) {
-        if(method==1){
-            homeMapper.ModeChange(flowcard,0);
-        }else{
-            homeMapper.ModeChange(flowcard,1);
+        if (method == 1) {
+            homeMapper.ModeChange(flowcard, 0);
+        } else {
+            homeMapper.ModeChange(flowcard, 1);
         }
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
         return Result.success(map);
     }
 
-    //淇敼娴嬮噺淇℃伅
+    // 淇敼娴嬮噺淇℃伅
     public Result UpdateQueue(GlassInfo glassInfo) {
-        homeMapper.UpdateQueue(glassInfo.getFlowcard(),glassInfo.getWidth(),glassInfo.getHeight(),glassInfo.getGlasstype());
+        homeMapper.UpdateQueue(glassInfo.getFlowcard(), glassInfo.getWidth(), glassInfo.getHeight(),
+                glassInfo.getGlasstype());
         Map<String, Object> map = new HashMap<>();
         map.put("message", "200");
         return Result.success(map);
     }
 
+    public List<StorageCage> SelectStorageCageByCage(int cage) {
+        return homeMapper.SelectStorageCageByCage(cage);
+    }
+
+    // 浜哄伐鎷胯蛋
+    public Result ManualTake(String glassInfo) {
+        // 璇诲彇DB105鍖烘枃浠�
+        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
+        // 绉婚櫎
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 3);
+        //鍒犻櫎鏁版嵁
+        QueueMapper.DeleteErrorQueue();
+        
+        // plcmes.getPlcParameter("GaToMES").setValue("3");
+        Map<String, Object> map = new HashMap<>();
+        map.put("message", "200");
+        return Result.success(map);
+    }
+
+    // 閲嶆柊娴嬮噺
+    public Result AnewMeasure(String glassInfo) {
+        // 璇诲彇DB105鍖烘枃浠�
+        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
+        // 閲嶆柊娴嬮噺
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
+        //鍒犻櫎鏁版嵁
+        QueueMapper.DeleteErrorQueue();
+        // plcmes.getPlcParameter("GaToMES").setValue("2");
+        Map<String, Object> map = new HashMap<>();
+        map.put("message", "200");
+        return Result.success(map);
+    }
+
+    // 娣诲姞灏忕墖淇℃伅
+    public Result AddGlassinfo(List<Map> IportDataStr) {
+
+        // 绛涢�夊鐞嗘暟鎹� 1.鍘婚櫎鏃犵敤鏁版嵁 2.璁$畻閰嶇墖ID 3.璁$畻ID 4. 璁$畻鎬诲眰鏁�
+        List<Map> TypeDatas = homeMapper.SelectType();
+        Map<String, String> TypeData = new HashMap<String, String>();// 寰楀埌澶勭悊瀹屽悗鎵�鏈夌殑绫诲瀷
+        Map<String, Integer> groupby=new HashMap<String, Integer>(); // 寰楀埌澶勭悊瀹屽悗鎵�鏈夋�诲眰鏁�;
+
+        List<Map> RemoveErrorData = IportDataStr.stream()
+                .filter(item -> (item.get("order") != null && item.get("glasstype") != null && item.get("tier") != null
+                        &&
+                        item.get("films") != null && item.get("base") != null && item.get("height") != null
+                        && item.get("thickness") != null && item.get("quantity") != null&& item.get("matching") != null))
+                .collect(Collectors.toList());
+
+        TypeDatas.forEach(item -> {
+            TypeData.put(item.get("type").toString(), item.get("glasstype").toString());
+        });
+
+        RemoveErrorData.forEach(item -> {
+            String key=item.get("order").toString()+"_"+item.get("matching").toString();
+            if (groupby.get(key)!=null) {
+                Integer Tiers=groupby.get(key)+1;
+                groupby.put(key, Tiers);
+            }else{
+                groupby.put(key, 1);
+            }    
+        });
+
+        System.out.println(RemoveErrorData.size());
+        // 澶勭悊瀹屾垚 娣诲姞鏁版嵁搴�
+        for (Map map : RemoveErrorData) {
+            String key = map.get("base").toString() + "_" + map.get("height").toString() + "_"
+                       + map.get("thickness").toString() + "_" + map.get("films").toString();
+
+            String tierkey = map.get("order").toString() + "_" + map.get("matching").toString();
+
+            String value = TypeData.get(key);
+            Integer glasstype;
+            if (TypeData.get(key) == null) {
+                glasstype = homeMapper.SelectMaxType();
+            } else {
+                glasstype = Integer.valueOf(value);
+            }
+            homeMapper.AddGlassinfo(map.get("order").toString(), glasstype,
+                    Integer.parseInt(map.get("glasstype").toString()) // 闇�瑕佽绠� 閰嶇墖ID
+                    , glasstype+"" // 闇�瑕佽绠� 鐜荤拑ID
+                    , Integer.parseInt(map.get("tier").toString()), map.get("films").toString(),
+                    Double.parseDouble(map.get("base").toString()), Double.parseDouble(map.get("height").toString()),
+                    Double.parseDouble(map.get("thickness").toString()),
+                    Integer.parseInt(map.get("quantity").toString()),groupby.get(tierkey));// 闇�瑕佽绠楁�诲眰鏁�
+        }
+        Map<String, Object> ResultCode = new HashMap<>();
+        ResultCode.put("message", "200");
+        return Result.success(ResultCode);
+    }
+
+
+
+
 }
diff --git a/springboot-vue3/src/main/resources/application.properties b/springboot-vue3/src/main/resources/application.properties
index 5f6b5f7..d1ef623 100644
--- a/springboot-vue3/src/main/resources/application.properties
+++ b/springboot-vue3/src/main/resources/application.properties
@@ -6,7 +6,7 @@
 #\u6570\u636E\u5E93\u9A71\u52A8
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 #\u6570\u636E\u5E93\u8FDE\u63A5\u5730\u5740
-spring.datasource.url=jdbc:mysql://10.153.19.150:3306/albania?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+spring.datasource.url=jdbc:mysql://localhost:3306/albania?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 #\u6570\u636E\u5E93\u7528\u6237\u540D
 spring.datasource.username=root
 #\u6570\u636E\u5E93\u7528\u6237\u5BC6\u7801  

--
Gitblit v1.8.0