From ef47083c90ff7e70362a32741a0a4d5770037e7f Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期一, 18 三月 2024 10:44:04 +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/AlbaniaMapper.java       |   24 +
 Albania_Mes-ui/src/lang/locales/en-US.json                                           |   19 +
 Albania_Mes-ui/src/views/home/index.vue                                              |  434 ++++++++++++++--------
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHoldNew.java       |  134 +-----
 springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java            |   17 
 springboot-vue3/src/main/java/com/example/springboot/entity/GlassInfo.java           |    2 
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java         |    6 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java       |   22 
 springboot-vue3/src/main/java/com/example/springboot/entity/glassinfo.java           |    2 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java          |   36 +
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java          |   60 +++
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java  |   42 ++
 springboot-vue3/src/main/java/com/example/springboot/service/StorageCageService.java |  109 +++++
 Albania_Mes-ui/src/api/home.js                                                       |   57 +++
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java     |    2 
 springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java            |   17 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java    |   81 ++-
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java         |   45 ++
 18 files changed, 771 insertions(+), 338 deletions(-)

diff --git a/Albania_Mes-ui/src/api/home.js b/Albania_Mes-ui/src/api/home.js
index 8dc939e..843d369 100644
--- a/Albania_Mes-ui/src/api/home.js
+++ b/Albania_Mes-ui/src/api/home.js
@@ -294,3 +294,60 @@
     })
 }
 
+export function UpdateStroageCageByCell(cell,num) {
+    return request({
+        url: '/home/UpdateStroageCageByCell?cell='+cell+'&num='+num,
+        method: 'post',
+        data:""
+    })
+}
+
+export function FinishTask(tasktype,id) {
+    return request({
+        url: '/home/FinishTask?tasktype='+tasktype+'&id='+id,
+        method: 'post',
+        data:""
+    })
+}
+
+export function SelectGlassInfo(width,height,thickness,films) {
+    return request({
+        url: '/home/SelectGlassInfo?width='+width+'&height='+height+'&thickness='+thickness+'&films='+films,
+        method: 'post',
+        data:""
+    })
+}
+
+export function StorageCageAddGlass(cell,data) {
+    return request({
+        url: '/home/StorageCageAddGlass?cell='+cell,
+        method: 'post',
+        data
+    })
+}
+
+export function ClaimTasks(flowcard,state) {
+    return request({
+        url: '/home/ClaimTasks?flowcard='+flowcard+'&state='+state,
+        method: 'post',
+        data:""
+    })
+}
+
+export function ModeChange(flowcard,method) {
+    return request({
+        url: '/home/ModeChange?flowcard='+flowcard+'&method='+method,
+        method: 'post',
+        data:""
+    })
+}
+
+
+
+export function UpdateQueue(data) {
+    return request({
+        url: '/home/UpdateQueue',
+        method: 'post',
+        data
+    })
+}
\ No newline at end of file
diff --git a/Albania_Mes-ui/src/lang/locales/en-US.json b/Albania_Mes-ui/src/lang/locales/en-US.json
index e7faca3..aeba614 100644
--- a/Albania_Mes-ui/src/lang/locales/en-US.json
+++ b/Albania_Mes-ui/src/lang/locales/en-US.json
@@ -1,4 +1,23 @@
 {
+  "Flowcard":"Flowcard",
+  "Glasstype":"Glasstype",
+  "Mode Change":"Mode Change",
+  "Start Task":"Start Task",
+  "Stop Task":"Stop Task",
+  "No Of Cage":"No Of Cage",
+  "Task State":"Task State",
+  "Task Method":"Task Method",
+  "Task Line":"Task Line",
+  "'No Of Cage":"'No Of Cage",
+  "Finish No":"Finish No",
+  "Mate No":"Mate No",
+  "Order":"Order",
+  "Select":"Select",
+  "GlassType":"GlassType",
+  "Films":"Films",
+  "StorageCageAdd":"StorageCageAdd",
+  "Reduce":"Reduce",
+  "number":"number",
   "Import order":"Importorder",
   "Measure":"Measure",
   "StorageCage":"StorageCage",
diff --git a/Albania_Mes-ui/src/views/home/index.vue b/Albania_Mes-ui/src/views/home/index.vue
index cca7c7e..f4765e5 100644
--- a/Albania_Mes-ui/src/views/home/index.vue
+++ b/Albania_Mes-ui/src/views/home/index.vue
@@ -6,7 +6,7 @@
 
 .occupy {
     height: 100%;
-    width: 10%;
+    width: 20%;
     background-color: white;
     margin: 0px 8px 0px 8px;
     border: 1px #EBEEF5 solid;
@@ -64,15 +64,16 @@
 }
 
 .blocks {
-    background-image: url('../../img/xmjc.png');
-    margin: 0 auto;
+    background-image: url('../../img/device.png');
+    /* margin: 0 auto; */
+    /* clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); */
     background-repeat: no-repeat;
     background-attachment: local;
-    min-height: 55vh;
-    width: 1400px;
-    max-width: 94vw;
-    background-size: 1200px 510px;
-    margin: 0 auto;
+    min-height: 118vh;
+    width: 1124px;
+    max-width: 57%;
+    background-size: 1050px 1400px;
+    margin-top: -280px;
     /* width: 1660px;
     max-width: 100vw;
     background-size: 1660px 560px; */
@@ -198,12 +199,13 @@
     font-size: 25px;
 }
 
+/* 
 @media screen and (min-width: 1900px) {
     .blocks {
         transform: scale(1.5, 1.05);
         width: 1210px;
     }
-}
+} */
 
 .el-message-box__btns {
     padding: 0px 15px 0;
@@ -256,71 +258,70 @@
                 <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState"
                     :class="SoftEmergencyStopState == true ? 'hide' : ''">
                     {{ $t('Measure') }}</el-button>
-                <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState"
+                <el-button type="primary" @click="showform(3)" :disabled="SoftEmergencyStopState"
                     :class="SoftEmergencyStopState == true ? 'hide' : ''">
                     {{ $t('StorageCage') }}</el-button>
-                <el-button type="primary" @click="showform(2)" :disabled="SoftEmergencyStopState"
+                <el-button type="primary" @click="showform(4)" :disabled="SoftEmergencyStopState"
                     :class="SoftEmergencyStopState == true ? 'hide' : ''">
                     {{ $t('Task queue') }}</el-button>
             </div>
-            <div>
-                <el-table :data="this.tasklist1" border style="width: 100%">
-                    <el-table-column :min-width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
-                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
-                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
-                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
-                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
-                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
-                        <template slot-scope='scope'>
-                            {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
-                        </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(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 :min-width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
-                    <el-table-column :min-width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
-                    <el-table-column :min-width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :min-width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
-                    <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
-                    <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
-                    <el-table-column :min-width="150" prop="lengthWidth" :label="$t('Dim')">
-                        <template slot-scope='scope'>
-                            {{ scope.row.glasswidthmm }}*{{ scope.row.glassheightmm }}
-                        </template>
-                    </el-table-column>
+            <div style="display: flex;align-items: center;">
+                <div class="blocks" style="position: relative;width: 100%;">
 
-                    <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('Terminate Task')
-                                }}</el-button>
-                        </template>
-                    </el-table-column>
-                </el-table>
-            </div>
-            <div style="padding: 10px;display: flex;height:85px;">
-                <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>
-                    </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>
-                    </el-col>
+                </div>
+                <div>
+                    <div style="padding: 10px;display: flex;height:100px;">
+                        <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>
+                            </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>
+                            </el-col>
+                        </div>
+                    </div>
+                    <el-table :data="this.tasklist1" border style="width: 700px;">
+                        <el-table-column prop="glasstype" :label="$t('Glasstype')"></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.glassWidth" :label="$t('Width')"></el-table-column>
+                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
+                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
+                        <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
+                        <el-table-column :min-width="100" :label="$t('Terminate Task')">
+                            <template slot-scope='scope'>
+                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                    @click="FinishTask(0, scope.row.id)">{{ $t('Complete') }}</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <el-table :data="this.tasklist2" border style="width: 100%">
+                        <el-table-column prop="glassId" :label="$t('Glasstype')"></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.glassWidth" :label="$t('Width')"></el-table-column>
+                        <el-table-column prop="storageCage.glassHeight" :label="$t('Height')"></el-table-column>
+                        <el-table-column prop="storageCage.thickness" :label="$t('Thickness')"></el-table-column>
+                        <el-table-column prop="storageCage.films" :label="$t('Films')"></el-table-column>
+
+                        <el-table-column :min-width="100" :label="$t('Terminate Task')">
+                            <template slot-scope='scope'>
+                                <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                    @click="FinishTask(1, scope.row.id)">{{ $t('Complete') }}</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
                 </div>
             </div>
+
+
         </el-main>
-        <el-dialog :visible.sync="Importorder" :title="$t('Import order')"
-            top="5vh">
+        <el-dialog :visible.sync="Importorder" :title="$t('Import order')" top="5vh">
         </el-dialog>
 
         <el-dialog :visible.sync="Measure" :title="$t('Measure')" top="5vh"><!--娴嬮噺椤甸潰-->
@@ -341,44 +342,131 @@
             </div>
         </el-dialog>
 
-        <el-dialog :visible.sync="StorageCage" :title="$t('StorageCage')"
-            top="5vh">
+        <el-dialog :visible.sync="StorageCage" :title="$t('StorageCage')" top="5vh">
             <el-table :data="this.StorageCageInfo" :height="700" border style="width: 100%;overflow: auto;">
-                <el-table-column :min-width="50" prop="cage" :label="$t('Cage No')"></el-table-column>
-                <el-table-column :min-width="50" prop="cell" :label="$t('Slot No')"></el-table-column>
-                <el-table-column :min-width="145" prop="glassId" :label="$t('Barcode')"></el-table-column>
-                <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column>
-                <el-table-column :min-width="80" prop="height" :label="$t('Height')"></el-table-column>
+                <el-table-column :min-width="80" prop="cage" :label="$t('Cage No')"></el-table-column>
+                <el-table-column :min-width="80" prop="cell" :label="$t('Slot No')"></el-table-column>
+                <el-table-column :min-width="80" prop="glasstype" :label="$t('GlassType')"></el-table-column>
+                <el-table-column :min-width="80" prop="glassWidth" :label="$t('Width')"></el-table-column>
+                <el-table-column :min-width="80" prop="glassHeight" :label="$t('Height')"></el-table-column>
                 <el-table-column :min-width="80" prop="thickness" :label="$t('Thickness')"></el-table-column>
+                <el-table-column :min-width="80" prop="number" :label="$t('number')"></el-table-column>
+                <el-table-column :min-width="80" prop="width" :label="$t('Width')"></el-table-column>
                 <el-table-column :min-width="250" :label="$t('Operate')">
                     <template slot-scope='scope'>
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            :disabled="scope.row.state == 1 ? false : true"
-                            @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('Delete') }}</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('Disable') : $t('Enable') }}</el-button>
+
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                            :disabled="scope.row.glassId != null ? true : false"
-                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('Add')
+                            :disabled="(scope.row.width < scope.row.glassWidth + 100 ? true : false)"
+                            @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 1)">{{ $t('Add')
+                            }}
+                        </el-button>
+
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            :disabled="scope.row.number >= 1 ? false : true"
+                            @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, -1)">{{ $t('Reduce')
+                            }}</el-button>
+
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            :disabled="scope.row.number >= 1 ? false : true"
+                            @click="UpdateStroageCageByCell(scope.row.cell, scope.row.number, 0)">{{ $t('Delete')
                             }}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
         </el-dialog>
-        
-        <el-dialog :visible.sync="Taskqueue" :title="$t('Task queue')"
-            top="5vh">
+
+        <el-dialog :visible.sync="Taskqueue" :title="$t('Task queue')" top="5vh">
+            <el-table :data="tableData1" style="width: 100%;margin-bottom: 20px;" row-key="id" border lazy
+                default-expand-all :tree-props="{ children: 'glassinfo', hasChildren: 'hasChildren' }">
+                <el-table-column prop="flowcard" :label="$t('Order')">
+                </el-table-column>
+                <el-table-column prop="glasstype" :label="$t('GlassType')">
+                </el-table-column>
+                <el-table-column prop="number" :label="$t('Order No')">
+                </el-table-column>
+                <el-table-column prop="" :label="$t('No Of Cage')">
+                </el-table-column>
+                <el-table-column prop="finishnumber" :label="$t('Finish No')">
+                </el-table-column>
+                <el-table-column prop="mateid" :label="$t('Mate No')">
+                </el-table-column>
+                <el-table-column prop="films" :label="$t('Films')">
+                </el-table-column>
+                <el-table-column prop="thickness" :label="$t('Thickness')">
+                </el-table-column>
+                <el-table-column prop="width" :label="$t('Width')">
+                </el-table-column>
+                <el-table-column prop="height" :label="$t('Height')">
+                </el-table-column>
+                <el-table-column prop="state" :label="$t('Task State')">
+                    <template slot-scope='scope'>
+                        {{ scope.state == 0 ? $t('Start') : $t('Finished') }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="method" :label="$t('Task Method')">
+                </el-table-column>
+                <el-table-column prop="line" :label="$t('Task Line')">
+                </el-table-column>
+                <el-table-column width="220" :label="$t('Operate')">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            v-show="scope.row.state >= 0 ? true : false"
+                            @click="ClaimTasks(scope.row.flowcard, scope.row.state)">
+                            {{ scope.row.status == '0' ? $t('Start Task') : $t('Stop Task') }}</el-button>
+
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            v-show="scope.row.state >= 0 ? true : false"
+                            @click="ModeChange(scope.row.flowcard, scope.row.method)">
+                            {{ $t('Mode Change') }}</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
         </el-dialog>
-        
+
+        <el-dialog :visible.sync="StorageCageAdd" :title="$t('StorageCageAdd')" top="5vh" width="80%">
+            <div style="display: flex;height: 40px;line-height: 40px;">
+                <label for="">{{ $t('Width') }}</label>
+                <el-input v-model="StorageCageForm.width" autocomplete="off" style="width:15%;" />
+                <label for="">{{ $t('Height') }}</label>
+                <el-input v-model="StorageCageForm.height" autocomplete="off" style="width:15%;" />
+                <label for="">{{ $t('Thickness') }}</label>
+                <el-input v-model="StorageCageForm.thickness" autocomplete="off" style="width:15%;" />
+                <label for="">{{ $t('Films') }}</label>
+                <el-input v-model="StorageCageForm.films" autocomplete="off" style="width:15%;" />
+                <el-button @click="SelectGlassInfo()" type="primary">
+                    {{ $t('Select') }}</el-button>
+            </div>
+            <el-table :data="this.StorageCageAddInfo" :height="700" border style="width: 100%;overflow: auto;">
+                <el-table-column prop="flowcard" :label="$t('Flowcard')"></el-table-column>
+                <el-table-column prop="glasstype" :label="$t('GlassType')"></el-table-column>
+                <el-table-column prop="width" :label="$t('Width')"></el-table-column>
+                <el-table-column prop="height" :label="$t('Height')"></el-table-column>
+                <el-table-column prop="thickness" :label="$t('Thickness')"></el-table-column>
+                <el-table-column prop="films" :label="$t('Films')"></el-table-column>
+                <el-table-column :label="$t('Operate')">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="StorageCageAddGlass(scope.$index)">
+                            {{ $t('Add') }}</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-dialog>
+
     </el-container>
 </template>
 <script>
 
 import {
-    home, home2,  UpdateTask, SelectCageInfo, DeleteByGlassID, 
-    SelectPassword,  Disabled,  SelectPermissionByUserName, currentUsername, CompleteQueue,
-    isAllowReorderings
+    home, home2, SelectCageInfo,
+    Disabled, SelectPermissionByUserName, currentUsername, CompleteQueue,
+    isAllowReorderings,
+
+    UpdateStroageCageByCell, FinishTask, SelectGlassInfo, StorageCageAddGlass, ClaimTasks, ModeChange, UpdateQueue
 } from "../../api/home";
 
 
@@ -388,6 +476,8 @@
     name: "Home",
     data() {
         return {
+            tableData1:[],
+            Measuermode: false,
             confirm1: false,
             confirm2: false,
             insertcage: 0,
@@ -398,12 +488,21 @@
             dialogFormVisible: false,
             dialogFormVisible1: false,
             dialogFormVisible2: false,
-            Importorder:false,
-            Measure:false,
-            StorageCage:false,
-            Taskqueue:false,
-            StorageCageInfo:[],
-            TaskqueueInfo:[],
+            Importorder: false,
+            Measure: false,
+            StorageCage: false,
+            Taskqueue: false,
+            StorageCageAdd: false,
+            StorageCageInfo: [],
+            StorageCageForm: {
+                width: "",
+                height: "",
+                thickness: "",
+                films: ""
+            },
+            StorageCageAddInfo: [],
+            TaskqueueInfo: [],
+            cell: "",
             form1: {},
             form2: {},
             form3: {},
@@ -483,15 +582,15 @@
     }
     ,
     methods: {
-        showform(i){
-            if(i==1){
-                this.Importorder=true;
-            }else if(i==2){
-                this.Measure=true;
-            }else if(i==3){
-                this.StorageCage=true;
-            }else if(i==4){
-                this.Taskqueue=true;
+        showform(i) {
+            if (i == 1) {
+                this.Importorder = true;
+            } else if (i == 2) {
+                this.Measure = true;
+            } else if (i == 3) {
+                this.StorageCage = true;
+            } else if (i == 4) {
+                this.Taskqueue = true;
             }
         },
         init() {
@@ -529,11 +628,12 @@
                     this.cagelist2 = obj.cagelist2[0];
                     this.cagelist3 = obj.cagelist3[0];
                     this.cagelist4 = obj.cagelist4[0];
-                    this.tasklist1 = obj.tasklist1[0];
-                    this.tasklist2 = obj.tasklist2[0];
+                    this.tasklist2 = obj.StoragTaskeTaskFeed[0];
+                    this.tasklist1 = obj.StoragTaskeTaskOut[0];
+                    console.log(this.tasklist1);
                     this.alarm = obj.alarmmg[0];
-                    
 
+                    this.tableData1 = obj.OrderTask[0];
 
 
                     //鏄惁鍏佽鍑虹墖
@@ -552,9 +652,8 @@
                             this.cageinfo = res.data.cageinfo;
                         });
                     }
-                    if(obj.StorageCageInfo!=null){
-                        this.StorageCageInfo=obj.StorageCageInfo[0];
-                        console.log(this.StorageCageInfo);
+                    if (obj.StorageCageInfo != null) {
+                        this.StorageCageInfo = obj.StorageCageInfo[0];
                     }
                     this.$forceUpdate();
 
@@ -619,66 +718,71 @@
                 this.cagelist3 = res.data.list3;
                 this.cagelist4 = res.data.list4;
             });
-            //鍔犺浇纭瀵嗙爜
-            SelectPassword().then(res => {
-                this.password = res.data.password;
-            });
         },
-        
-        //缁撴潫杩�/鍑虹墖浠诲姟
-        endtask(type, glassid, cell) {
-            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) {
-                    UpdateTask(type, glassid, cell).then(res => {
-                        if (res.data.message3 == 200) {
-                            this.$message.success(this.$t('Operation successful'));
-                        }
-                    });
-                } else {
-                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-                }
-            }).catch(() => {
-                this.$message({
-                    type: 'info',
-                    message: this.$t('Operation canceled')
-                });
-            });
-        },
-        //鍒犻櫎鐞嗙墖绗肩幓鐠�
-        deleteglass(glassid, state) {
-            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) {
-                    if (state == 1) {
-                        DeleteByGlassID(glassid).then(res => {
-                            if (res.data.message3 == 200) {
-                                this.$message.success(this.$t('Operation successful'));
-                            }
-                        });
-                    } else {
-                        this.$message.error(this.$t('No delete allowed'));
+        //娣诲姞鐞嗙墖绗肩幓鐠�
+        StorageCageAddGlass(index) {
+            if (this.Measuermode == true) {
+                StorageCageAddGlass(this.cell, this.StorageCageAddInfo[index]).then(res => {
+                    if (res.data.code == 200) {
+                        this.$message.success(this.$t('Operation successful'));
                     }
-                } else {
-                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-                }
-
-            }).catch(() => {
-                this.$message({
-                    type: 'info',
-                    message: this.$t('Operation canceled')
+                })
+            } else {
+                UpdateQueue(this.StorageCageAddInfo[index]).then(res => {
+                    if (res.data.code == 200) {
+                        this.$message.success(this.$t('Operation successful'));
+                    }
                 });
+            }
+
+        },
+        //棰嗗彇/鏆傚仠浠诲姟
+        ClaimTasks(flowcard, state) {
+            console.log(flowcard, state);
+            ClaimTasks(flowcard, state).then(res => {
+                if (res.data.code == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
             });
+        },
+        //淇敼鍑虹墖鏂瑰紡
+        ModeChange(flowcard, method) {
+            ModeChange(flowcard, method).then(res => {
+                if (res.data.code == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            });
+        },
+        //鏌ヨ鐜荤拑淇℃伅
+        SelectGlassInfo() {
+            SelectGlassInfo(this.StorageCageForm.width, this.StorageCageForm.height, this.StorageCageForm.thickness, this.StorageCageForm.films).then(res => {
+                this.StorageCageAddInfo = res.data.StorageCageAddInfo;
+            })
+        },
+        //瀹屾垚杩�/鍑虹墖浠诲姟
+        FinishTask(tasktype, id) {
+            FinishTask(tasktype, id).then(res => {
+                if (res.data.message3 == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            });
+        },
+        //淇敼鐞嗙墖绗肩幓鐠冧俊鎭�
+        UpdateStroageCageByCell(cell, nownum, num) {
+            if (nownum == null && num == 1) {
+                this.StorageCageAdd = true;
+                this.cell = cell;
+            } else {
+                if (nownum + num == 0) {
+                    num = 0;
+                }
+                UpdateStroageCageByCell(cell, num).then(res => {
+                    if (res.data.message3 == 200) {
+                        this.$message.success(this.$t('Operation successful'));
+                    }
+                });
+            }
+
         },
         //鍚敤//鐞嗙墖绗肩鐢�
         UpdateDisabled(cage, cell, disabled) {
@@ -688,7 +792,7 @@
                 }
             });
         },
-        
+
         //鏀瑰彉姣忛〉瀹圭撼鐨勬暟鎹噺
         handleSizeChange: function (size) {
             this.pagesize = size;
@@ -705,7 +809,7 @@
         handleCurrentChanges: function (currentPage) {
             this.currentPages = currentPage;
         },
-        
+
         //鏄惁鍏佽鍑虹墖闃熷垪鎺掑簭
         isAllowReorderings() {
             isAllowReorderings(!this.isAllowReordering, this.OutSlice).then(res => {
@@ -746,7 +850,7 @@
         ManualMatching() {
             console.log(11111111);
         }
-        
+
     }
 }
-</script>
\ No newline at end of file
+</script>
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 3c74bd3..17fbf5a 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
@@ -33,119 +33,59 @@
         // \\ TODO Auto-generated catch block
         e.printStackTrace();
       }
-
+      
       // if (S7control.getinstance().CheckConnected() == false) {
       spianService = WebSocketServer.applicationContext.getBean(SpianServiceNew.class);
       albaniaMapper = WebSocketServer.applicationContext.getBean(AlbaniaMapper.class);
-
-      //璇诲彇DB105鍖烘枃浠�
+      spianService.selectAll(albaniaMapper.SelectGlass());
+      //璇诲彇DB14鍖烘枃浠�
       PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-      //璇�106
-      //PlcParameterObject plcread=PLCAutoMes.PlcReadObject;
-      //璇�103
+
       
-      String OutRequest=plcmes.getPlcParameter("OutRequest").getValue();//鍑虹墖璇锋眰涓�绾�
-      String OutActivate=plcmes.getPlcParameter("OutActivate").getValue();//鍑虹墖璇锋眰浜岀嚎
-      String AddRequest=plcmes.getPlcParameter("AddRequest").getValue();//杩涚墖璇锋眰
-      String CarRequest=plcmes.getPlcParameter("CatReque").getValue();//杩愰�佽溅璇锋眰
-      String Tastoverid=plcmes.getPlcParameter("Tastoverid").getValue();//浠诲姟瀹屾垚
-      String glassid=plcmes.getPlcParameter("glassid").getValue();//鐜荤拑id
+      String ExportTOMES1=plcmes.getPlcParameter("ExportTOMES1").getValue();//鍑虹墖璇锋眰涓�绾�
+      String ExportToMES2=plcmes.getPlcParameter("ExportToMES2").getValue();//鍑虹墖璇锋眰浜岀嚎
+      String PLCToMES=plcmes.getPlcParameter("PLCToMES").getValue();//杩涚墖璇锋眰
+      String B01State=plcmes.getPlcParameter("B01State").getValue();//杩愰�佽溅璇锋眰
+      String TastState=plcmes.getPlcParameter("MESToPLCStatus1").getValue();//浠诲姟瀹屾垚
+  
       
-      //璋冪敤鍑虹墖浠诲姟
-      if (OutActivate.equals("1") == false&&CarRequest.equals("0")==true) {
+      //涓�鍙风嚎璇锋眰
+      if (ExportTOMES1.equals("1") == true&&B01State.equals("0")==true) {
         //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 1);
-        spianService.selectout(glassid);
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
+        spianService.selectout(1);
       }
-      //璋冪敤杩涚墖浠诲姟
-      if(AddRequest.equals("1")==true&&CarRequest.equals("0")==true){
+      //浜岀嚎鍙疯姹傛椂
+      if (ExportToMES2.equals("1") == true&&B01State.equals("0")==true) {
         //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 1);
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(), (short) 1);
+        spianService.selectout(2);
+      }
+      //杩涚墖璇锋眰鏃�
+      if(PLCToMES.equals("1")==true&&B01State.equals("0")==true){
+        //灏嗚繍杈撹溅鐘舵�佹敼涓哄繖纰�
+        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 Tastover=plcmes.getPlcParameter("IDStatus"+i).getValue();//渚濇鑾峰彇浠诲姟绫诲瀷
+          String Glassid=plcmes.getPlcParameter("MESID"+i).getValue();//渚濇鑾峰彇浠诲姟绫诲瀷
+          if(Tastover.equals("1")){
 
-      // String B01backs = plcread.getPlcParameter("B01CompleteTheReport").getValue();// b01姹囨姤
-      // String B02backs = plcread.getPlcParameter("B02CompleteTheReport").getValue();// b02姹囨姤
-      
-      // String B01glassid = plcstate.getPlcParameter("B01ID1").getValue();// BO1鐨勭幓鐠僫d
-      // String B02glassid = plcstate.getPlcParameter("B02ID1").getValue();// B02鐨勭幓鐠僫d
+            //璋冪敤瀹屾垚浠诲姟 Glassid
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStatus"+i).getAddress(), (short) 1);//瀹屾垚纭瀛�
+          }
+        }
+      }
 
-      // // 褰撹繘鐗囧皬杞﹀畬鎴愪换鍔℃椂
-      // if (B01backs.equals("1") == true) {
-      //   // 鍒ゆ柇鏄惁姹囨姤姝g‘鐨刬d
-      //   int HB = spianMapper.SelectHB(B01glassid.toString());
-      //   if (HB > 0) {
-      //     // 鎭㈠B01灏忚溅搴旂瓟鏀逛负1
-      //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 1);
-      //     String yingda =plcmes.getPlcParameter("B01report").getValue();// b01姹囨姤
-      //     if (yingda.equals("1")) {
-      //       spianService.overtask(B01glassid.toString());// 瀹屾垚浠诲姟
-      //     }       
-      //   }
-
-      // }else{
-      //   // 鎭㈠B01灏忚溅搴旂瓟鏀逛负0
-      //   S7control.getinstance().WriteWord(plcmes.getPlcParameter("B01report").getAddress(plcmes.getPlcParameter("B01report").getAddressIndex()), (short) 0);
-      // }
-
-      // // 褰撳嚭鐗囧皬杞﹀畬鎴愪换鍔℃椂
-      // if (B02backs.equals("1") == true) {
-      //   // 鍒ゆ柇鏄惁姹囨姤姝g‘鐨刬d
-      //   int HB = spianMapper.SelectHB(B02glassid);
-      //   if (HB > 0) {
-      //     // 鎭㈠B02灏忚溅搴旂瓟鏀逛负1
-      //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("B02report").getAddress(plcmes.getPlcParameter("B02report").getAddressIndex()), (short) 1);
-      //     String yingda =plcmes.getPlcParameter("B01report").getValue();// b02搴旂瓟
-      //     if (yingda.equals("1") == true) {
-      //       spianService.overtask(B02glassid);// 瀹屾垚浠诲姟
-      //     }    
-      //   }
-      // }else{
-      //   S7control.getinstance().WriteWord(plcmes.getPlcParameter("B02report").getAddress(plcmes.getPlcParameter("B02report").getAddressIndex()), (short) 0);
-      // }
-
-
-      // // 鑾峰彇DO1鏁版嵁
-      // String Do1ID=plcread.getPlcParameter("FeedID").getValue();// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
-      // // 鑾峰彇DO2鏁版嵁
-      // String Do2ID=plcread.getPlcParameter("FeedID").getValue();// 鑾峰彇璇锋眰鐨刬d璺烡O1鍚屾椂娓�
-
-
-      // int questate = spianMapper.Selectquecount(Do1ID.toString());// 鍒ゆ柇鎵爜浣嶆槸鍚︽湁鐜荤拑宸茬‘璁�
-      // // queueid1.toString().isEmpty()
-      // north_glass_buffer1 glass1 = spianMapper.selectGlass(Do1ID);// D01鐨勭幓鐠冧俊鎭�
-      // north_glass_buffer1 glass2 = spianMapper.selectGlass(Do2ID);// D02鐜荤拑淇℃伅
-      // // 褰撴壂鐮佷綅鐜荤拑id涓虹┖鏃� 瀹藉害涓�0
-      // if (Do1ID != null && questate == 0) {
-      //   // 鍐欏叆D01鐨勬暟鎹埌涓婄墖闃熷垪琛�
-      //   if (glass1 == null) { // 褰撴病鏈夊�兼椂浼犵┖
-      //     spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 1);
-      //   } else {
-      //     spianMapper.Updatequeue(Do1ID.toString(), glass1.getordernumber(), glass1.getlistnumber(),
-      //     glass1.getboxnumber(), 0, glass1.getglasslengthmm().toString(), glass1.getglassheightmm().toString(),
-      //     glass1.getglasslength().toString(), glass1.getglassheight().toString(), 1);
-      //   }
-
-      // }
-
-      // if (Do2ID != null) {
-      //   // 鍐欏叆D02鐨勬暟鎹埌涓婄墖闃熷垪琛�
-      //   if (glass2 == null) {
-      //     spianMapper.Updatequeue(null, null, null, null, 0, null, null, null, null, 2);
-      //   } else {
-      //     spianMapper.Updatequeue(Do2ID.toString(), glass2.getordernumber(), glass2.getlistnumber(),
-      //     glass2.getboxnumber(), 0, glass2.getglasslengthmm().toString(), glass2.getglassheightmm().toString(),
-      //     glass2.getglasslength().toString(), glass2.getglassheight().toString(), 2);
-      //     spianMapper.overqueue2(Do2ID.toString(), 0, 1);// 鏇存敼鎵爜浣嶄换鍔¤〃鐨勭姸鎬佷负0
-      //     S7control.getinstance().WriteWord("DB105.16", (short) 0);// 鍏抽棴浠诲姟鍚姩
-      //   }
-
-      // }
-
+  
       // 鏌ヨ鏁版嵁搴�
       // 鎺ㄩ�佸埌鍓嶇
 
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 b6a205b..425009b 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,6 +1,5 @@
 package com.example.springboot.component;
 import cn.hutool.json.JSONObject;
-import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import com.example.springboot.service.*;
@@ -8,11 +7,14 @@
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import com.example.springboot.entity.FlowCard;
+import com.example.springboot.entity.FlowCard;
 import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.MeasureSetting;
 import com.example.springboot.entity.Out_slice;
 import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
 import com.example.springboot.entity.device.PlcParameterObject;
@@ -34,8 +36,6 @@
     private OutSliceServive outSliceServive;
     private SpianMapper spianMapper;
     private SpianService spianService;
-    private North_Glass_Buffer1Service north_Glass_Buffer1Service;
-    private JdbcConnections dbserve;
     
     // 鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
     public static Boolean isAllowQueue = true;
@@ -74,10 +74,7 @@
                 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();
@@ -100,15 +97,7 @@
                 List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
                 jsonObject.append("alarmmg", alarmmg);
 
-                // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
-                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);
@@ -181,12 +170,26 @@
                 // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14));
 
                 
+                //鏌ヨ鐞嗙墖绗间俊鎭�
+                List<StorageCage> StorageCageInfo = storageCageService.SelectStorageCageInfo();
+                jsonObject.append("StorageCageInfo", StorageCageInfo);
+
+                //鏌ヨ褰撳墠杩涚墖浠诲姟
+                List<StorageTask> StoragTaskeTaskFeed = storageCageService.SelectStorageTask(0);
+                jsonObject.append("StoragTaskeTaskFeed", StoragTaskeTaskFeed);
+
+                //鏌ヨ褰撳墠鍑虹墖浠诲姟
+                List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
+                jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
+
+                //鏌ヨ褰撳墠璁㈠崟浠诲姟
+                List<FlowCard> OrderTask = storageCageService.SelectOrderTask();
+                jsonObject.append("OrderTask", OrderTask);
 
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
 
-            
             // jsonObject.append("params", new short[] { 30, 40, });
             ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
             if (sendwServer != null) {
@@ -201,7 +204,6 @@
                             // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
                             webserver.clearMessages();
                         }
-
                     }
 
                 }
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 4e38988..a95fab6 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
@@ -18,7 +18,7 @@
         System.out.println("鍚姩瀹屾垚");
 
         //  new PlcHold().start();
-        //new PlcHoldNew().start();
+        // new PlcHoldNew().start();
         // new PLCAutoMes().start();
 
         new Plchome().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 c7a5a08..0a52ee2 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
@@ -21,6 +21,7 @@
 import com.example.springboot.component.Plchome;
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.CarPosition;
+import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.alarmmg;
 import com.example.springboot.entity.north_glass_buffer1;
@@ -446,4 +447,45 @@
     return Result.success(map);
   }
 
+  // 鍒囨崲PLC鑾峰彇浜岀淮鐮佹柟寮�
+  @PostMapping("/UpdateStroageCageByCell")
+  public Result UpdateStroageCageByCell(Integer cell,Integer num) {
+    return storageCageService.UpdateStroageCageByCell(cell,num);
+  }
+
+  //鎵嬪姩瀹屾垚浠诲姟
+  @PostMapping("/FinishTask")
+  public Result FinishTask(Integer tasktype,Integer id) {
+    return storageCageService.FinishTask(tasktype,id);
+  }
+  
+  //鏌ヨ鐜荤拑淇℃伅
+  @PostMapping("/SelectGlassInfo")
+  public Result SelectGlassInfo(String width,String height,String thickness,String films) {
+    return storageCageService.SelectGlassInfo(width,height,thickness,films);
+  }
+
+  //娣诲姞鐜荤拑淇℃伅鍒扮瀛�
+  @PostMapping("/StorageCageAddGlass")
+  public Result StorageCageAddGlass(String cell,@RequestBody GlassInfo glassInfo) {
+    return storageCageService.StorageCageAddGlass(cell,glassInfo);
+  }
+  
+  //棰嗗彇/鏆傚仠浠诲姟
+  @PostMapping("/ClaimTasks")
+  public Result ClaimTasks(String flowcard,Integer state) {
+    return storageCageService.ClaimTasks(flowcard,state);
+  }
+  
+  //淇敼鍑虹墖鏂瑰紡
+  @PostMapping("/ModeChange")
+  public Result ModeChange(String flowcard,Integer method) {
+    return storageCageService.ModeChange(flowcard,method);
+  }
+
+   //娣诲姞鐜荤拑淇℃伅鍒版祴閲忎俊鎭�
+   @PostMapping("/UpdateQueue")
+   public Result UpdateQueue(@RequestBody GlassInfo glassInfo) {
+     return storageCageService.UpdateQueue(glassInfo);
+   }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java b/springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java
index 0d6a010..fbb9979 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/FlowCard.java
@@ -1,6 +1,7 @@
 package com.example.springboot.entity;
 
-import java.util.Date;
+import java.sql.Date;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -8,12 +9,22 @@
 
 @Data
 @TableName("`flowcard`")
-public class flowcard {
+public class FlowCard {
   private Integer id;// 鑷id
   private String flowcard;// 娴佺▼鍗d
   private Integer number;// 鐜荤拑鏁伴噺
   private Integer line;// 浠诲姟璺嚎
   private Integer state;// 鐘舵��
- 
+  private Integer method;// 鍑虹墖鏂瑰紡
+  private Date starttime;// 浠诲姟棰嗗彇鏃堕棿
 
+  public List<GlassInfo> glassinfo;// 鐜荤拑淇℃伅
+
+  public void setglassinfo(List<GlassInfo> glassinfo) {
+    this.glassinfo = glassinfo;
+  }
+
+  public List<GlassInfo> getglassinfo() {
+    return glassinfo;
+  }
 }
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 b378802..d375337 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
@@ -1,6 +1,5 @@
 package com.example.springboot.entity;
 
-import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -21,5 +20,4 @@
   private Double thickness;// 鍘�
   private Integer number;// 鏁伴噺
   private Integer finishnumber;// 瀹屾垚鏁伴噺
-
 }
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 c9a594f..628afd0 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
@@ -61,11 +61,11 @@
      */
     private Double glassHeightMm;
     /**
-     * 缂栧彿
+     * 鍘氬害
      */
-    private String thickness;
+    private Integer thickness;
     /**
-     * 绠卞瓙鍙�
+     * 鑶滅郴
      */
     private String films;
     /**
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
index 76883ce..c4f12d1 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/StorageTask.java
@@ -1,5 +1,8 @@
 package com.example.springboot.entity;
+
+
 //鍑虹墖浠诲姟琛�
+
 public class StorageTask{
     private Integer id;//鑷簭
     private String taskType;//绫诲瀷
@@ -8,7 +11,19 @@
     private String shelfRack;//璧峰浣�
     private String loadrack;//鐩爣浣�
     private Integer count;//鐜荤拑鏁伴噺
-    
+    private Integer glasstype;//鐜荤拑绫诲瀷
+    private Integer flowcard;//娴佺▼鍗�
+    private Integer mateid;//閰嶇墖id
+    private Integer tier;//鐗囧簭
+
+	private StorageCage storageCage;
+    public void setstorageCage(StorageCage storageCage) {
+        this.storageCage = storageCage;
+    }
+
+    public StorageCage getstorageCage() {
+        return storageCage;
+    }
 
     public Integer id() {
         return id;
@@ -66,6 +81,32 @@
         this.loadrack = loadrack;
     }
 
-    
+    public Integer getGlasstype() {
+        return glasstype;
+    }
+ 
+    public void setGlasstype(Integer glasstype) {
+        this.glasstype = glasstype;
+    } 
+    public Integer getFlowcard() {
+        return flowcard;
+    }
+ 
+    public void setFlowcard(Integer flowcard) {
+        this.flowcard = flowcard;
+    } public Integer getMateid() {
+        return mateid;
+    }
+ 
+    public void setMateid(Integer mateid) {
+        this.mateid = mateid;
+    }
+    public Integer geTier() {
+        return tier;
+    }
+ 
+    public void setTier(Integer tier) {
+        this.tier = tier;
+    }
 
 }
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java b/springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java
index 0d6a010..fbb9979 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/flowcard.java
@@ -1,6 +1,7 @@
 package com.example.springboot.entity;
 
-import java.util.Date;
+import java.sql.Date;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -8,12 +9,22 @@
 
 @Data
 @TableName("`flowcard`")
-public class flowcard {
+public class FlowCard {
   private Integer id;// 鑷id
   private String flowcard;// 娴佺▼鍗d
   private Integer number;// 鐜荤拑鏁伴噺
   private Integer line;// 浠诲姟璺嚎
   private Integer state;// 鐘舵��
- 
+  private Integer method;// 鍑虹墖鏂瑰紡
+  private Date starttime;// 浠诲姟棰嗗彇鏃堕棿
 
+  public List<GlassInfo> glassinfo;// 鐜荤拑淇℃伅
+
+  public void setglassinfo(List<GlassInfo> glassinfo) {
+    this.glassinfo = glassinfo;
+  }
+
+  public List<GlassInfo> getglassinfo() {
+    return glassinfo;
+  }
 }
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 b378802..d375337 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
@@ -1,6 +1,5 @@
 package com.example.springboot.entity;
 
-import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -21,5 +20,4 @@
   private Double thickness;// 鍘�
   private Integer number;// 鏁伴噺
   private Integer finishnumber;// 瀹屾垚鏁伴噺
-
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
index f53c73e..84b1c7b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/AlbaniaMapper.java
@@ -5,12 +5,13 @@
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 import com.example.springboot.entity.GlassInfo;
+import com.example.springboot.entity.StorageCage;
 
 @Mapper
 @Repository
 public interface AlbaniaMapper  {
     //鍒ゆ柇绗煎唴鏄惁鏈夊悎閫傜殑绫诲瀷绌烘牸
-    @Select("select id from storage_cage where glasstype=#{glasstype} and width>=#{width}+#{widths}  order by id limit 1")
+    @Select("select id from storage_cage where glasstype=#{glasstype} and width>=#{width}+#{widths} and state=0  order by id limit 1")
     int SelectCage(int glasstype,Double width,int widths);
     //鍒ゆ柇绗煎唴娌℃湁鐜荤拑鐨勭┖鏍�
     @Select("select id from storage_cage where number=0 and cage>#{cage} and cage<#{cage2} order by id limit 1")
@@ -22,14 +23,29 @@
     @Update("update storage_cage set number=number-1,width=width+glasswidth where id=#{id}")
     void UpdateCageNumberOut(int id);
     //澧炲姞浠诲姟璁板綍
-    @Insert("INSERT INTO `canadames`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id,count,finsh_time) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid},#{count},#{qidong});")
-    void Inserttask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid, int count,int qidong);
+    @Insert("INSERT INTO `albania`.`storage_task`(`task_type`, `task_state`, `shelf_rack`, `load_rack`,start_time,glass_id,glasstype,flowcard,mateid,tier) VALUES (#{tasktype},#{taskstate},#{shelfrack},#{loadrack},now(),#{glassid},#{glasstype},#{flowcard},#{mateid},#{tier});")
+    void Inserttask(int tasktype, int taskstate, int shelfrack, int loadrack, String glassid, int glasstype,String flowcard,int mateid,int tier);
     //鏂板涓�鏉$瀛愭暟鎹�
     @Update("UPDATE `albania`.`storage_cage` SET `glass_id` =#{glassid}, `width` =width-#{glasswidth}, `glasswidth` =#{glasswidth}, `glassheight` =#{glassheight}, `glasswidthmm` =#{glasswidthmm}, `glassheightmm` = #{glassheightmm},  `state` = #{state}, `glasstype` = #{glasstype}, `number` = #{number} WHERE `id` =#{id};")
     void AddCage(int id,String glassid,Double glasswidth,Double glassheight,Double glasswidthmm,Double glassheightmm,int state,int glasstype,int number);
     //鑾峰彇杩涚墖鏁版嵁
-    @Select("select glassid,flowcard,glasswidth as width,glassheight as height,glasswidthmm,glassheightmm,glasstype from queue where glasstype=1")
+    @Select("select glassid,flowcard,glasswidth as width,glassheight as height,glasswidthmm,glassheightmm,glasstype from queue where state=0 limit 1")
     GlassInfo SelectGlass();
+    //涓�鍙风嚎鏌ヨ浠诲姟
+    @Select("select * from v_cagerelease1 where mateid not in(select mateid from v_cagerelease1 where surplus=0 group by mateid);")
+    GlassInfo SelectOutGlass1();
+    //浜屽彿绾挎煡璇换鍔�
+    @Select("select * from v_cagerelease2 where mateid not in(select mateid from v_cagerelease2 where surplus=0 group by mateid)LIMIT 1;")
+    GlassInfo SelectOutGlass2();
+    //娴佺▼鍗′换鍔℃煡璇�
+    @Select("select G.flowcard,G.glasstype,G.number,G.mateid,G.tier,G.starttime,G.finishnumber,IF((G.number-G.finishnumber-ku.KuCount)<0,G.number,ku.KuCount) as 'surplus',G.totaltier as id from (select Gfd.flowcard,Ggf.glasstype,Ggf.number,Ggf.mateid,Ggf.tier,Ggf.finishnumber,Gfd.starttime,Gfd.totaltier  from flowcard as Gfd LEFT JOIN glassinfo as Ggf on Gfd.flowcard=Ggf.flowcard where Gfd.state=1 and Gfd.line=#{line}) as G left join (select glasstype,sum(number) AS KuCount from storage_cage where flowcard is not null group by glasstype) as ku on G.glasstype=ku.glasstype where G.mateid not in(select mateid from v_cagerelease1 where surplus=0 group by mateid)order by `g`.`starttime`,`g`.`mateid`,`g`.`finishnumber`,`g`.`tier`LIMIT 1;")
+    GlassInfo SelectOutGlass(int line);
+    //鑾峰彇璇ョ被鍨嬪湪搴撳瓨鐨勪綅缃�
+    @Select("select * from storage_cage where glasstype=#{glasstype} and number>0 limit 1")
+    StorageCage SelectCageGlass(int glasstype);
+    //鍙戦�佸嚭鐗囧悗澧炲姞宸插彂鏁伴噺
+    @Update("update glassinfo set finishnumber=finishnumber+1 where flowcard=#{flowcard} and mateid=#{mateid} and tier=#{tier};")
+    void AddFinishNumber(String flowcard,int mateid,int tier);
     
 
 }
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 6bb984e..66857b4 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
@@ -3,6 +3,8 @@
 import org.apache.ibatis.annotations.*;
 
 import com.example.springboot.entity.CarPosition;
+import com.example.springboot.entity.FlowCard;
+import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.alarmmg;
@@ -85,9 +87,9 @@
   @Select("select dianqimima from user where id=1")
   String SelectPassword();
 
-  //鏍规嵁鐜荤拑id鏌ヨ鐞嗙墖绗间俊鎭�
-  @Select("select * from storage_cage where glass_id=#{glassid}")
-  StorageCage SelectGlassInfo(String glassid);
+  // //鏍规嵁鐜荤拑id鏌ヨ鐞嗙墖绗间俊鎭�
+  // @Select("select * from storage_cage where glass_id=#{glassid}")
+  // StorageCage SelectGlassInfo(String glassid);
 
   //鏍规嵁鐜荤拑id鏌ヨ鐞嗙墖绗间俊鎭�
   @Select("select * from storage_cage where glass_id=#{glassid}")
@@ -231,6 +233,58 @@
   //鏌ヨ鐞嗙墖绗煎唴淇℃伅
   @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=number+#{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浠诲姟
+  @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);
+
+  @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);
+
+  @Select("select * from flowcard where state!=2")
+  List<FlowCard> SelectOrderTask();
+
+  @Select("select * from glassinfo where flowcard=#{flowcard} order by mateid,tier")
+  List<GlassInfo> SelectOrderView(String flowcard);
+
+  @Update("update flowcard set state=#{state} where flowcard=#{flowcard}")
+  void ClaimTasks(String flowcard, int state);
+
+  @Update("update flowcard set method=#{method} where flowcard=#{flowcard}")
+  void ModeChange(String flowcard, int method);
+
+  @Update("update queue set flowcard=#{flowcard},glasswidth=#{width},glassheight=#{height},glasstype=#{glasstype} where state=0")
+  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}")
+  void AddGlassNo(Integer flowcard, Integer mateid, Integer geTier);
   
 
 }
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 2988da2..4d665ce 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
@@ -92,13 +92,13 @@
                 ids = cages1.getId();// 鏁版嵁搴揑D
                 tiers = cages1.getTier();// 鍐呭鐗�
                 cells = cages1.getCell();// 鏍煎瓙鍙�
-                prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
+                //prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
                 width = cages1.getWidth();// 鏍煎瓙鍓╀綑瀹藉害
                 widths = glasslist.getglasslengthmm();
 
                 // 鎵ц杩涚墖
                 datas.add((short) 1000);// 璧峰浣嶇疆
-                datas.add((short) prcid);// 鐩爣浣嶇疆
+                datas.add((short) 1);// 鐩爣浣嶇疆
                 datas.add((short) widths);// 杩涚墖鐜荤拑瀹�
                 datas.add((short) prctier); // 鐜荤拑鏁�
                 datas.add((short) 1);// 浠诲姟鍚姩
@@ -171,7 +171,7 @@
         int cage = cageout.getCage(); // 鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
         int cell = cageout.getCell();// 鍑虹墖鏍煎彿
         int tier = cageout.getTier();// 鍑虹墖鍐呭鐗�
-        int prcid = cageout.getPrcId();// prcid
+        //int prcid = cageout.getPrcId();// prcid
         int prcid2;
         int ids;
         int cages;
@@ -183,7 +183,7 @@
             int state = spianMapper.selectGlassState(cage, cell);// 鑾峰彇鏍煎瓙鏁伴噺
             // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
             // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-            datas.add((short) prcid);
+            datas.add((short) 1);
             datas.add((short) 1000);
             datas.add((short) state);
             datas.add((short) 1);
@@ -214,7 +214,7 @@
             // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
             if (state == 1) {
                 // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 3);
-                datas.add((short) prcid);
+                datas.add((short) 1);
                 datas.add((short) 1000);
                 datas.add((short) 1);
                 datas.add((short) 1);
@@ -248,14 +248,14 @@
                         return (300);
                     }
                     // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
+                    //prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
                     ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
                     cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
                     cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
 
                     // 濉叆璋冩嫧鏁版嵁
-                    datas.add((short) prcid);// 璋冩嫧澶栫墖璧峰浣嶇疆
-                    datas.add((short) prcid2);
+                    datas.add((short) 1);// 璋冩嫧澶栫墖璧峰浣嶇疆
+                    datas.add((short) 1);
                     datas.add((short) 2);
                     datas.add((short) 1);
                     // 鏇存崲鐜荤拑鐨勭瀛�
@@ -290,13 +290,13 @@
                         return (300);
                     }
                     // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
+                    //prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
                     ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
                     cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
                     cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
                     // 濉叆璋冩嫧鏁版嵁
-                    datas.add((short) prcid);
-                    datas.add((short) prcid2);
+                    datas.add((short) 1);
+                    datas.add((short) 1);
                     datas.add((short) 2);
                     datas.add((short) 1);
                     String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
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 f779ef2..7b49fa8 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
@@ -7,6 +7,8 @@
 import com.example.springboot.component.PLCAutoMes;
 import com.example.springboot.component.S7control;
 import com.example.springboot.entity.GlassInfo;
+import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.device.PlcParameterObject;
 import com.example.springboot.mapper.AlbaniaMapper;
 import com.google.common.primitives.Bytes;
@@ -23,20 +25,20 @@
     int cageid;
     String glassid=glassInfo.getGlassid();
     Double width=glassInfo.getWidth();
-    Double height=glassInfo.getHeight();
+    //int mateid=glassInfo.getMateid();
+    String flowcard=glassInfo.getFlowcard();
     int glasstype=glassInfo.getGlasstype();
     
     
 
     //鍒ゆ柇鏄惁鏈夊悓绫诲瀷鐨�
-     cageid=albaniaMapper.SelectCage(glassInfo.getGlasstype(), glassInfo.getWidth(), 50);
+     cageid=albaniaMapper.SelectCage(glasstype,width, 50);
     //濡傛灉鏈夊悓绫诲瀷鏃剁洿鎺ュ鍔�
     if(cageid!=Integer.MIN_VALUE){
         //鍙戦�乸lc浠诲姟
+        //Mestast(glassid,1001,cageid,1);
         
-        //浠诲姟瀹屾垚鍚庡鍔犳暟閲�
-        albaniaMapper.UpdateCageNumberAdd(cageid);
-    }else{
+    }else{ 
          //鍒ゆ柇鐜荤拑鏄惁杩涘叆澶х墖绗�
         if(glassInfo.getThickness()>=15){
             cageid=albaniaMapper.SelectNewCell(3,5);
@@ -45,23 +47,51 @@
             //鍙戦�乸lc浠诲姟
         }
         //褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
-        if(cageid==Integer.MIN_VALUE){
-            return(400);
+        if(cageid!=Integer.MIN_VALUE){
+            Mestast(glassid,1001,cageid,1);
+            //鍙戦�乸lc浠诲姟
+            
         }else{
-            //鍒ゆ柇瀹屾垚浠诲姟鍚庡鍔犳暟閲�
-            albaniaMapper.AddCage(cageid, glassid, width, height, width, height, 0, glasstype, 1);
+            return(400);
         }
     }
     //澧炲姞浠诲姟璁板綍
-    albaniaMapper.Inserttask(0, 0, 0, cageid, glassInfo.getGlassid(), 0, 0);
+    albaniaMapper.Inserttask(0, 0, 1001, cageid, glassid,glasstype, flowcard,0,0);
     return(200);
 
 }
 
-
-    public Short selectout(String glasstype) {
-        //鍒ゆ柇绗煎瓙鏈�鍏堝嚭鍝墖
-         
+    //鍑虹墖
+    public Short selectout(int line) {
+        int mateid;
+        int glasstype;
+        int tier;
+        int sumid;
+        String flowcard;
+        GlassInfo glassmate=new GlassInfo();
+           
+            for(int i=1;i<=7;i++){
+                glassmate= albaniaMapper.SelectOutGlass(line);
+                mateid=glassmate.getMateid();
+                glasstype=glassmate.getGlasstype();
+                tier=glassmate.getTier();
+                sumid=glassmate.getId();
+                flowcard=glassmate.getFlowcard(); 
+   
+                    StorageCage glass= albaniaMapper.SelectCageGlass(glasstype);
+                    //鍙戦�侀厤鐗囨暟鎹�
+                    Mestast(glassmate.getGlasstype()+"i", glass.getId(),2002, 0);
+                    albaniaMapper.AddFinishNumber(flowcard, mateid, tier);
+                    albaniaMapper.Inserttask(1, 0, glass.getId(), 2002, glassmate.getGlassid()+i, glasstype,glass.getFlowcard(),mateid,tier);
+                    if(tier==sumid){
+                        //鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)2);//鍑虹墖浠诲姟鍚姩
+                        return (200);//缁撴潫
+                    }
+                
+            }
+           
+     
        
         return(200);// 缁撴潫
     }
@@ -78,7 +108,7 @@
         }
         byte[] bytes = Bytes.toArray(glassidlist);
         System.out.println("outmesidbytes:" + bytes.length);
-        S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(plcmes.getPlcParameter(address).getAddressIndex()),bytes);
+        S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(),bytes);
         //S7control.getinstance().WriteByte(address, bytes);// 娲惧彂鍑虹墖id
 
     }
@@ -93,7 +123,7 @@
                 writedstrIdOut.append((char) iditem);
             }
         }
-        return writedstrIdOut;
+        return writedstrIdOut;  
     }
 
     // char鏁扮粍杞寲鎴恇it鏁扮粍
@@ -115,15 +145,16 @@
         return listbool;
     }
 
-    // 鏍规嵁鐜荤拑id瀹屾垚鍦ㄨ繘琛屼腑鐨勪换鍔�
-    public void overtask(String glassid) {
-
-        // spianMapper.UpdatetaskOut(glassid.toString());// 瀹屾垚涓婁竴娆� 鍑虹墖鎴栬�呰繘鐗囦换鍔�
-        // spianMapper.OverOutSlice(glassid.toString(), 2, 1);// 瀹屾垚鍑虹墖闃熷垪浠诲姟
-        // spianMapper.UpdataGlassCage(glassid.toString(), 0);// 娓呴櫎鍑虹墖鏍煎瓙鐜荤拑淇℃伅
-        // spianMapper.UpdateCageOver(glassid.toString(), 0);// 鏇存敼绗煎瓙琛ㄥ嚭鐗囩姸鎬�
-        // spianMapper.UpdateCageadd(glassid.toString(), 1);// 鏇存敼绗煎瓙琛ㄨ繘鐗囩姸鎬�
-        // spianMapper.UpdateAddQueue(glassid.toString());// 鎶婅繘鐗囩殑鐜荤拑鏇存柊鍒板嚭鐗囬槦鍒椾腑
+    //涓嬪彂鐞嗙墖浠诲姟
+    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC) {
+        outmesid(glassid, "MESID1");//涓嬪彂鐜荤拑id
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart1").getAddress(), (short) MESToPLCStart1);//璧峰浣嶇疆
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget1").getAddress(), (short) MESToPLCTarget1);//鐩爣浣嶇疆
+        if(MESToPLC!=0){
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)MESToPLC);//mes鐞嗙墖浠诲姟绫诲瀷
+        }
+        
+        
     }
 
 }
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 5e8ccf9..c8d5699 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
@@ -1,5 +1,6 @@
 package com.example.springboot.service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -11,6 +12,8 @@
 import com.example.springboot.common.Result;
 import com.example.springboot.component.Plchome;
 import com.example.springboot.component.S7control;
+import com.example.springboot.entity.FlowCard;
+import com.example.springboot.entity.GlassInfo;
 import com.example.springboot.entity.Queue;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
@@ -206,4 +209,110 @@
         return homeMapper.SelectStorageCageInfo();
     }
 
+    // 澧炲姞/鍑忓皯鐞嗙墖绗肩幓鐠冩暟
+    public Result UpdateStroageCageByCell(Integer cell, Integer num) {
+        if (num == 0) {
+            homeMapper.DeleteStroageCageByCell(cell);
+        } else {
+            homeMapper.updateStroageCageByCell(cell, num);
+            homeMapper.UpdateStroageCageWidthByCell(cell);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("message", "200");
+        return Result.success(map);
+    }
+
+    // 鏌ヨ杩�/鍑虹墖浠诲姟
+    public List<StorageTask> SelectStorageTask(int task_type) {
+        List<StorageTask> storageTasks = new ArrayList<>();
+        if (task_type == 0) {
+            storageTasks = homeMapper.SelectStorageTask(task_type);
+        } else {
+            storageTasks = homeMapper.SelectStorageTask(task_type);
+        }
+        for (StorageTask storageTask : storageTasks) {
+            storageTask.setstorageCage(homeMapper.SelectStorageByCell(storageTask.getLoadrack()));
+        }
+        return storageTasks;
+    }
+
+    //鎵嬪姩瀹屾垚浠诲姟
+    public Result FinishTask(Integer tasktype, Integer id) {
+        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);//娓呴櫎鏍煎唴淇℃伅
+            }
+            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);
+        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);
+        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()));
+        }
+        return OrderTask;
+    }
+
+    //寮�濮嬩换鍔�
+    public Result ClaimTasks(String flowcard, Integer state) {
+        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);
+        }
+        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());
+        Map<String, Object> map = new HashMap<>();
+        map.put("message", "200");
+        return Result.success(map);
+    }
+
 }

--
Gitblit v1.8.0