From 94e971bad93246e5e6730d3a8bb009a7d0595a5e Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 11 九月 2023 17:32:47 +0800
Subject: [PATCH] 系统主界面添加点击理片笼显示玻璃信息,进行玻璃,出片操作

---
 CanadaMes-ui/src/views/home/index.vue                                               |  104 +++++++---
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java         |   53 ++---
 CanadaMes-ui/src/api/home.js                                                        |   24 ++
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java        |   27 ++
 springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java              |   48 ++++
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java        |    9 
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java      |  176 +++++++++++++++--
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java         |    2 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java         |   16 +
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java |  110 ++++++----
 10 files changed, 428 insertions(+), 141 deletions(-)

diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 0f4e344..224c6c9 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -58,3 +58,27 @@
         data :""
     })
 }
+
+export function SelectCageInfo(cage) {
+    return request({
+        url: '/home/SelectCageInfo?cage='+cage,
+        method: 'get',
+        data :""
+    })
+}
+
+export function DeleteByGlassID(glassid) {
+    return request({
+        url: '/home/DeleteByGlassID?glassid='+glassid,
+        method: 'get',
+        data :""
+    })
+}
+
+export function OutByGlassID(glassid) {
+    return request({
+        url: '/home/OutByGlassID?glassid='+glassid,
+        method: 'get',
+        data :""
+    })
+}
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 6695ee4..4fcd763 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -150,7 +150,6 @@
                     </label>
                 </div>
             </div>
-
             <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
                 <el-input style="width:15%;" placeholder="Enter the glass lD" v-model="glassid"></el-input>
                 <el-button type="primary" @click="showform()">Manually feed the glass</el-button>
@@ -197,23 +196,23 @@
         <el-footer>
             <div class="blocks" style="position: relative;">
                 <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
-                    <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"></div>
+                    <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"
+                        @click="showcageinfo(item['cage'])"></div>
                 </div>
                 <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:885px;">
-                    <div :class="getStatusClass(item.state)" v-for="item in cagelist2" :key="item['date']"></div>
+                    <div :class="getStatusClass(item.state)" v-for="item in cagelist2" :key="item['date']"
+                        @click="showcageinfo(item['cage'])"></div>
                 </div>
                 <div style="display:flex;position: absolute;float:left;z-index: 999;top:154px;left:328px;">
-                    <div :class="getStatusClass(item.state)" v-for="item in cagelist3" :key="item['date']"></div>
+                    <div :class="getStatusClass(item.state)" v-for="item in cagelist3" :key="item['date']"
+                        @click="showcageinfo(item['cage'])"></div>
                 </div>
                 <div style="display:flex;position: absolute;float:left;z-index: 999;top:154px;left:885px;">
-                    <div :class="getStatusClass(item.state)" v-for="item in cagelist4" :key="item['date']"></div>
+                    <div :class="getStatusClass(item.state)" v-for="item in cagelist4" :key="item['date']"
+                        @click="showcageinfo(item['cage'])"></div>
                 </div>
-                <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }">
-
-                </div>
-                <div class="blocks-img" :style="{ left: car2 + 'px', top: '194px' }">
-
-                </div>
+                <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
+                <div class="blocks-img" :style="{ left: car2 + 'px', top: '194px' }"></div>
             </div>
         </el-footer>
         <el-dialog :visible.sync="dialogFormVisible" title="Please confirm the information">
@@ -263,12 +262,31 @@
                 <el-table-column prop="endTime" label="endTime"></el-table-column>
             </el-table>
         </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible3" title="Ordering Information">
+            <el-table :data="this.cageinfo" border style="width: 100%;height: 700px;overflow: auto;">
+                <el-table-column :width="150" prop="cage" label="the grille number"></el-table-column>
+                <el-table-column prop="cell" label="cell"></el-table-column>
+                <el-table-column prop="tier" label="tier"></el-table-column>
+                <el-table-column prop="glassId" label="glassid"></el-table-column>
+                <el-table-column :width="130" prop="orderId" label="order number"></el-table-column>
+                <el-table-column :width="150" prop="lengthWidth" label="length and width"></el-table-column>
+                <el-table-column prop="coating" label="coating"></el-table-column>
+                <el-table-column :width="150" label="operate">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="deleteglass(scope.row.glassId, scope.row.state)">delete</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="outglass(scope.row.glassId,scope.row.state)">out</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-dialog>
     </el-container>
 </template>
-  
 <script>
 
-import { home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo } from "../../api/home";
+import { home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID } from "../../api/home";
+
 
 import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
@@ -280,6 +298,7 @@
             dialogFormVisible: false,
             dialogFormVisible1: false,
             dialogFormVisible2: false,
+            dialogFormVisible3: false,
             form: {
                 orderno: "NG2210210",
                 length: 800,
@@ -306,7 +325,9 @@
             car1: 150,
             car2: 242,
             incell: "",
-            outcell: ""
+            outcell: "",
+            cageinfo: [],
+            cage: 0
         };
     },
     created() {
@@ -337,9 +358,11 @@
 
                     //console.log("鏀跺埌鏁版嵁====" + msg.data);
                     let obj = JSON.parse(msg.data);
+                    if (obj.params != null) {
+                        this.car1 = 150 + 24.6 * obj.params[0][0];
+                        this.car2 = 242 + 24.6 * obj.params[0][1];
+                    }
 
-                    this.car1 = 150 + 24.6 * obj.params[0][0];
-                    this.car2 = 242 + 24.6 * obj.params[0][1];
                     this.tableData = obj.tableData[0];
                     this.cagelist1 = obj.cagelist1[0];
                     this.cagelist2 = obj.cagelist2[0];
@@ -354,16 +377,11 @@
                         this.outcell = this.tasklist2[0]['cell'];
                     }
                     this.alarm = obj.alarmmg[0];
-                    // for (let a = 0; a <= this.record.params.length - 1; a++) {
-                    //     // this.record.xyData[a] = [this.record.canshu[a], this.record.params[0][a]];
-                    //     // this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
 
-                    //     // this.record.xyData[a].value = this.record.params[0][a];
-                    //     this.car1=this.record.params[0][a];
-                    //     console.log(this.record.params[0][a]);
+                    SelectCageInfo(this.cage).then(res => {
+                        this.cageinfo = res.data.cageinfo;
+                    });
 
-
-                    // }
                     this.$forceUpdate();
 
                 }.bind(this);
@@ -496,17 +514,35 @@
                 });
             }
 
-
         },
-        formatDate(timestamp) {
-            const date = new Date(timestamp);
-            const year = date.getFullYear();
-            const month = date.getMonth() + 1;
-            const day = date.getDate();
-            const hours = date.getHours();
-            const minutes = date.getMinutes();
-            const seconds = date.getSeconds();
-            return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+        showcageinfo(cage) {
+            this.cage = cage;
+            SelectCageInfo(cage).then(res => {
+                this.cageinfo = res.data.cageinfo;
+                this.dialogFormVisible3 = true;
+            });
+        },
+        deleteglass(glassid, state) {
+            if (state == 1) {
+                DeleteByGlassID(glassid).then(res=>{
+                    if (res.data.message3 == 200) {
+                        this.$message.success("Operation successful");
+                    }
+                });
+            } else {
+                this.$message.success("No out allowed");
+            }
+        },
+        outglass(glassid,state){
+            if (state == 1) {
+                OutByGlassID(glassid).then(res=>{
+                    if (res.data.message3 == 200) {
+                        this.$message.success("Operation successful");
+                    }
+                });
+            } else {
+                this.$message.success("No out allowed");
+            }
         }
 
     }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index f007033..c2a74e1 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -1,17 +1,9 @@
 package com.example.springboot.component;
 
-import java.util.ArrayList;
 import java.util.List;
-
-import javax.websocket.Session;
-
-import com.example.springboot.controller.SpianController;
 import com.example.springboot.service.SpianService;
 import com.example.springboot.mapper.AlarmMapper;
-import com.example.springboot.mapper.HomeMapper;
 
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
 
 public class PlcHold extends Thread {
 
@@ -30,38 +22,37 @@
         // TODO Auto-generated catch block
         e.printStackTrace();
       }
-      List<Boolean> bitlist = S7control.getinstance().ReadBits("DB2.0.0", 100);
-      List<Short> paramlist = S7control.getinstance().ReadWord("DB100.6", 1);
-      
+      spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
+      //spianService.selectout("112");
 
       //鍒ゆ柇杩涚墖璇锋眰 
-      // List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1);
-      // List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1);
-      SpianController spianController=new SpianController();
-      List<Short> datas1List1=new ArrayList<>();
-      List<Short> datas1List2=new ArrayList<>();
-      datas1List1.add((short)1);
-      datas1List2.add((short)0);
-      //鑾峰彇prc杩涚墖璇锋眰鏁版嵁
-      boolean exist = datas1List1.contains((short)1); 
-      boolean exist1 = datas1List2.contains((short)0); 
+       List<Short> datas1List=S7control.getinstance().ReadWord("DB106.24", 1);
+       List<Short> datas1ListState=S7control.getinstance().ReadWord("DB106.8", 1);
+      if(datas1List!=null &&datas1ListState!=null){
+          //鑾峰彇prc杩涚墖璇锋眰鏁版嵁
+       boolean exist = datas1List.contains((short)1); 
+       //鑾峰彇杩涚墖杞︾姸鎬�
+       boolean exist1 = datas1ListState.contains((short)0); 
       //杩涚墖璇锋眰涓�1鏃�
-      if(exist=true){
+       if(exist=true){
         //褰撹繘鐗囪溅绌洪棽鏃�
-        if(exist=true){
-        //List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
-        List<Short> datas1ListID=new ArrayList<>();
-        datas1ListID.add((short)001);
-        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
-        //鑾峰彇鐜荤拑id
+        if(exist1=true){
+        //鑾峰彇杩涚墖id
+        List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
+        //鑾峰彇鐜荤拑id    
         for(Short list1:datas1ListID){
-         spianService.selectAll(list1);
+            spianService.selectAll((short)list1);
         }
+      }
+
+     
+        
+        
         //System.out.println(exist);
       }
     }
-            //鑾峰彇杩涚墖id
-            // List<Short> datas1ListID=S7control.getinstance().ReadWord("DB106.26", 13);
+            
+          
 
       
       // 鏌ヨ鏁版嵁搴�
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 026cace..258556f 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
@@ -18,7 +18,7 @@
     public void run() {
         while (this != null) {
             try {
-                Thread.sleep(10000);
+                Thread.sleep(5000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
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 aea9709..5970b54 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
@@ -27,84 +27,108 @@
     @Autowired
     SpianService spianService;
 
-    @GetMapping("/load")    
-    public Result selectAll(){
-        List<StorageCage> storageCagelist=homeMapper.selectAll();
+    @GetMapping("/load")
+    public Result selectAll() {
+        List<StorageCage> storageCagelist = homeMapper.selectAll();
         Map<String, Object> map = new HashMap<>();
-        map.put("list",storageCagelist);
+        map.put("list", storageCagelist);
         return Result.success(map);
     }
 
-    @GetMapping("/loads")    
-    public Result selectRack(){
-        List<StorageCage> storageCagelist1=homeMapper.selectRack1();
-        List<StorageCage> storageCagelist2=homeMapper.selectRack2();
-        List<StorageCage> storageCagelist3=homeMapper.selectRack3();
-        List<StorageCage> storageCagelist4=homeMapper.selectRack4();
+    @GetMapping("/loads")
+    public Result selectRack() {
+        List<StorageCage> storageCagelist1 = homeMapper.selectRack1();
+        List<StorageCage> storageCagelist2 = homeMapper.selectRack2();
+        List<StorageCage> storageCagelist3 = homeMapper.selectRack3();
+        List<StorageCage> storageCagelist4 = homeMapper.selectRack4();
         Map<String, Object> map = new HashMap<>();
-        map.put("list1",storageCagelist1);
-        map.put("list2",storageCagelist2);
-        map.put("list3",storageCagelist3);
-        map.put("list4",storageCagelist4);
+        map.put("list1", storageCagelist1);
+        map.put("list2", storageCagelist2);
+        map.put("list3", storageCagelist3);
+        map.put("list4", storageCagelist4);
         return Result.success(map);
     }
-    
-    
-    @GetMapping("/loadinout")    
-    public Result selectinout(Integer types){
-        List<StorageCage> storageCageinout=homeMapper.selectinout(types);
+
+    @GetMapping("/loadinout")
+    public Result selectinout(Integer types) {
+        List<StorageCage> storageCageinout = homeMapper.selectinout(types);
         Map<String, Object> map = new HashMap<>();
-        map.put("list",storageCageinout);
+        map.put("list", storageCageinout);
         return Result.success(map);
     }
 
     @GetMapping("/InsertOrder")
-    public Result InsertOrder(String orderid){
-        short result=homeMapper.SelectOrder(orderid);
+    public Result InsertOrder(String orderid) {
+        short result = homeMapper.SelectOrder(orderid);
         Map<String, Object> map = new HashMap<>();
-        if(result>0){
+        if (result > 0) {
             homeMapper.updateOrder();
             homeMapper.InsertOrder(orderid);
-            map.put("message","200");
-        }else{
-            map.put("message","500");
+            map.put("message", "200");
+        } else {
+            map.put("message", "500");
         }
         return Result.success(map);
     }
 
     @GetMapping("/Addglassid")
-    public Result Addglassid(short glassid){
+    public Result Addglassid(short glassid) {
         Map<String, Object> map = new HashMap<>();
-        short taskno=homeMapper.SelectOutTask();
-        if(taskno>0){
-            map.put("message2","500");
-        }else{
-            map.put("message2","200");
-            //璋冪敤浼嶄笂鐗囧嚱鏁�
+        short taskno = homeMapper.SelectOutTask();
+        if (taskno > 0) {
+            map.put("message2", "500");
+        } else {
+            map.put("message2", "200");
+            // 璋冪敤浼嶄笂鐗囧嚱鏁�
             spianService.selectAll(glassid);
         }
         return Result.success(map);
     }
 
     @GetMapping("/UpdateTask")
-    public Result UpdateTask(Integer types,Integer shelfrack){
+    public Result UpdateTask(Integer types, Integer shelfrack) {
         Map<String, Object> map = new HashMap<>();
-        homeMapper.UpdateTask(types,shelfrack);
-        if(types==0){
+        homeMapper.UpdateTask(types, shelfrack);
+        if (types == 0) {
             homeMapper.UpdateCageTask1(shelfrack);
-        }else{
+        } else {
             homeMapper.UpdateCageTask2(shelfrack);
         }
-        map.put("message3","200");
+        map.put("message3", "200");
         return Result.success(map);
     }
 
-    @GetMapping("/SelectAlarmmgInfo")    
-    public Result SelectAlarmmgInfo(){
-        List<alarmmg> alarmmg=homeMapper.SelectAlarmmgInfo();
+    @GetMapping("/SelectAlarmmgInfo")
+    public Result SelectAlarmmgInfo() {
+        List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
         Map<String, Object> map = new HashMap<>();
-        map.put("alarmmg",alarmmg);
+        map.put("alarmmg", alarmmg);
         return Result.success(map);
     }
-    
+
+    @GetMapping("/SelectCageInfo")
+    public Result SelectCageInfo(short cage) {
+        List<StorageCage> cageinfo = homeMapper.SelectCageInfo(cage);
+        Map<String, Object> map = new HashMap<>();
+        map.put("cageinfo", cageinfo);
+        return Result.success(map);
+    }
+
+    @GetMapping("/DeleteByGlassID")
+    public Result DeleteByGlassID(short glassid) {
+        homeMapper.DeleteByGlassID(glassid);
+        Map<String, Object> map = new HashMap<>();
+        map.put("message3", "200");
+        return Result.success(map);
+    }
+
+    @GetMapping("/OutByGlassID")
+    public Result OutByGlassID(String glassid) {
+        spianService.selectout2(glassid);
+        
+        Map<String, Object> map = new HashMap<>();
+        map.put("message3", "200");
+        return Result.success(map);
+    }
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java
new file mode 100644
index 0000000..9ab999d
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Glass.java
@@ -0,0 +1,48 @@
+package com.example.springboot.entity;
+
+public class Glass{
+    private Integer id;
+    private Short orderId;
+    private double glassWidth;
+    private Short glassId;
+    
+    
+
+    public Integer id() {
+        return id;
+    }
+    public void setId(Integer id) {
+        this.id = id;
+    }
+    public Integer getId() {
+        return id;
+    }
+
+    public Short getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Short orderId) {
+        this.orderId = orderId;
+    }
+    
+    public double getWidth() {
+        return glassWidth;
+    }
+
+    public void setWidth(double glassWidth) {
+        this.glassWidth = glassWidth;
+    }
+
+     public Short getGlassId() {
+        return glassId;
+    }
+
+    public void setGlassId(Short glassId) {
+        this.glassId = glassId;
+    }
+
+  
+    
+
+}
\ No newline at end of file
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 15321e2..24fd64c 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
@@ -2,6 +2,7 @@
 
 public class StorageCage {
     private Integer id;
+    private Integer prcId;
     private String glassId;
     private Integer cage;
     private Integer cell;
@@ -25,6 +26,14 @@
     public Integer getId() {
         return id;
     }
+    public Integer getPrcId() {
+        return prcId;
+    }
+
+    public void setPrcId(Integer prcId) {
+        this.prcId = prcId;
+    }
+
 
     public String getGlassId() {
         return glassId;
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 c7ec473..384b18c 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,19 +14,19 @@
   List<StorageCage> selectAll();
 
   // 鏌ヨ1-5绗煎唴灞傛牸瀛愮姸鎬�
-  @Select("SELECT state from storage_cage where cage<=5 and tier=1")
+  @Select("SELECT cage,state from storage_cage where cage<=5 and tier=1")
   List<StorageCage> selectRack1();
 
   // 鏌ヨ6-10绗煎唴灞傛牸瀛愮姸鎬�
-  @Select("SELECT state from storage_cage where cage>5 and tier=1")
+  @Select("SELECT cage,state from storage_cage where cage>5 and tier=1")
   List<StorageCage> selectRack2();
 
   // 鏌ヨ1-5绗煎灞傛牸瀛愮姸鎬�
-  @Select("SELECT state from storage_cage where cage<=5 and tier=2")
+  @Select("SELECT cage,state from storage_cage where cage<=5 and tier=2")
   List<StorageCage> selectRack3();
 
   // 鏌ヨ6-10绗煎灞傛牸瀛愮姸鎬�
-  @Select("SELECT state from storage_cage where cage>5 and tier=2")
+  @Select("SELECT cage,state from storage_cage where cage>5 and tier=2")
   List<StorageCage> selectRack4();
 
   // 鏍规嵁浠诲姟绫诲瀷鏌ヨ褰撳墠姝e湪鍑虹墖锛岃繘鐗囩殑鐜荤拑淇℃伅
@@ -64,4 +64,12 @@
   //鑾峰彇鎶ヨ淇℃伅
   @Select("select id,content,timeon as timeons,endTime from alarmmg where endTime is null")
   List<alarmmg> SelectAlarmmgInfo();
+
+  //鑾峰彇鐞嗙墖绗煎唴鐜荤拑淇℃伅
+  @Select("select *,concat(glasswidth,' x ',glassheight) as lengthwidth from storage_cage where cage=#{cage} ")
+  List<StorageCage> SelectCageInfo(short cage);
+
+  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where glass_id=#{glassid}")
+  void DeleteByGlassID(short glassid);
+
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 6ee7fbf..76b6d90 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -2,6 +2,7 @@
 import org.apache.ibatis.annotations.*;
 
 import com.example.springboot.common.Result;
+import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.StorageCage;
@@ -12,7 +13,7 @@
 
 public interface SpianMapper {
     //鍒ゆ柇鐩搁偦绗煎瓙鏄惁鏈夌┖鏍�  
-    @Select("select COUNT(if(a.state1=0,cell,null))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(#{cage1}<6,a.cage>0 and a.cage<6,a.cage>5) GROUP BY cage ORDER BY cell desc LIMIT 1")
+    @Select("select COUNT(if(a.state1=0,cell,null))as cell,ROUND(id/2)as id from (select *,max(state)as state1 from storage_cage a  GROUP BY cage,cell)as a where (a.cage=#{cage1}-1 or a.cage=#{cage1}+1)and if(a.cage<6,a.cage>0 and a.cage<6,a.cage>5) GROUP BY cage ORDER BY cell desc LIMIT 1")
      int selectCage(int  cage1);
      
      //@Select("(select*from storage_cage as a  where a.state=0 and cage%2=0 ORDER BY id LIMIT 1)union (select a.* from storage_cage a inner join  (select cage,if(shu2=1,shu3,shu5) as gezi from ( select  cage, count(case when state1=1 and state2=0 then cell else null end)as shu1,  count(case when state1=0 then cell else null end) as shu2, min(case when state1=1 and state2=0 then cell else null end) as shu3, min(case when state1=0 then cell else null end) as shu4, min(case when state1=0 or state2=0 then cell else null end) as shu5 from  (select *,max(state) as state1,min(state) as state2 from storage_cage group by cage,cell) as a where  cage%2!=0  GROUP BY cage HAVING shu2>1 or (shu2=1 and shu1>0)  ) as sss limit 1)as b on a.cage=b.cage and a.cell=b.gezi and a.state=0 order by tier limit 1) ORDER BY id LIMIT 1;")
@@ -21,35 +22,47 @@
      List<StorageCage> selectAll(Short glassid);
 
      //鍒ゆ柇璇ョ瀛愭槸鍚︽湁鍚堥�傚搴︾┖鏍�
-     @Select("select COUNT(*),cage,cell,IF(tier=1,0,1)as tier,ROUND(id/2)as id from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier")
+     @Select("select cage,cell,tier,id,ROUND(id/2)as prcId from storage_cage where cage=#{cage1} and state=0 and width>=#{width} ORDER BY cell,tier LIMIT 1")
      StorageCage selectCage1(int  cage1,double width);
+     //鍒ゆ柇绗煎瓙鍐呯幓鐠冩暟
+     @Select("select COUNT(tier)as tier from storage_cage where  cage=#{cage} and cell=#{cell} and state=1;")
+     int selectsum(int cage,int cell);
 
     //@Update("update longzi set glass_id = #{glass_id}, width = #{width}, state = #{state} where cell = #{cell}")
     @Update("update longzi set glass_id =123, width =1600, state =1 where cell =24")
      void  update();
+     //鑾峰彇鐜荤拑淇℃伅
+     @Select("select orderid,width from glass where glassid=#{glassid}")
+     Glass selectGlass(Short glassid);
     
     @Insert("insert into storage_task(task_type,task_state,shelf_rack,load_rack)values(#{storage_task},#{task_state},#{shelf_rack},#{load_rack})")
      void insert(StorageTask storageTask);
     
     //鍑虹墖浠诲姟鏌ヨ
-    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
+    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
      StorageCage selectOut(String  orderId);
+    //鎸夌幓鐠僆D鍑虹墖浠诲姟鏌ヨ
+    @Select("select cage,cell,tier,glasswidth,ROUND(id/2)as prcId,id from storage_cage as a where a.order_id=#{orderId} and state=1 order by cage desc,tier desc,cell desc LIMIT 1")
+     StorageCage selectOut2(String  glassid);
 
     //鍒ゆ柇鍑虹墖涓�1鏃讹紝鏄惁鍙洿鎺ュ嚭鐗�
     @Select("select state from storage_cage where cage=#{cage} and cell=#{cell} and tier=2;")
      int selectGlassState(int  cage,int cell);
 
      //鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
-     @Select("select cage,cell,max(state)as shu,ROUND(id/2)as id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
+     @Select("select cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
      StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
 
-    //淇敼绗煎瓙淇℃伅(鍑虹墖)
+    //鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
     @Update("update storage_cage set state=#{state},width=width+#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=0 where cage=#{cage} and cell=#{cell} and tier=#{tier};")
     void UpdataGlassCage(String orderid,String glassid,double width,int cage,int cell,int tier,int state);
 
     //淇敼绗煎瓙淇℃伅(杩涚墖)
-    @Update("update storage_cage set state=#{state},width=width-#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where cage=#{cage} and cell=#{cell} and tier=#{tier};")
-    void UpdataAddCage(String orderid,Short glassid,double width,int cage,int cell,int tier,int state);
+    @Update("update storage_cage set state=#{state},width=width-#{width},glass_id=#{glassid},order_id=#{orderid},glasswidth=#{width} where id=#{id};")
+    void UpdataAddCage(Short orderid,Short glassid,double width,int cage,int cell,int id,int state);
+    //璋冩嫧鏇存崲绗煎瓙淇℃伅
+    @Update("update storage_cage as a,(select*from storage_cage b where b.cage=#{cage} and b.cell=#{cell} and b.tier=2)as b set a.glass_id=b.glass_id,a.order_id=b.order_id,a.glasswidth=b.glasswidth,a.width=a.width-b.glasswidth,a.state=1 where a.id=#{id1}")
+    void UpdateDBCage(int id1,int cage,int cell);
     // @Insert("insert into user(name, date, address, user_no) values (#{name}, #{date}, #{address}, #{userNo})")
     // void insert (Spian spian);
     
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 09c3df4..951216b 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
@@ -9,6 +9,7 @@
 
 import com.example.springboot.common.Result;
 import com.example.springboot.component.S7control;
+import com.example.springboot.entity.Glass;
 import com.example.springboot.entity.StorageCage;
 import com.example.springboot.mapper.SpianMapper;
 
@@ -17,7 +18,7 @@
     @Autowired
     private SpianMapper spianMapper;
     @GetMapping("/all2")
-    public Result selectadd(String orderid){
+    public Result selectout(String orderid){
         //瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
         List<String> adddresslist=new ArrayList<>();
         adddresslist.add("DB105.6");//鍑虹墖杞﹁捣濮嬩綅缃�
@@ -28,9 +29,10 @@
         //鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
          StorageCage cageout=spianMapper.selectOut(orderid);
          int cage =cageout.getCage(); //鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
-         int cell =cageout.getCell();
-         int tier =cageout.getTier();
-         int id=cageout.getId();
+         int cell =cageout.getCell();//鍑虹墖鏍煎彿
+         int tier =cageout.getTier();//鍑虹墖鍐呭鐗�
+         int prcid=cageout.getPrcId();//prcid
+         int prcid2;
          int ids;
          double glasswidth=cageout.getGlassWidth();
          //鍒ゆ柇鐜荤拑鍐呭鐗�
@@ -38,7 +40,8 @@
              //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
                 //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
                 spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
-                datas.add((short)id);
+               
+                datas.add((short)prcid);
                 datas.add((short)1000);
                 datas.add((short)1);
                 datas.add((short)1);
@@ -55,42 +58,55 @@
               //鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
                if(cage<6){
                 StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6);
+                if(cagecell==null){
+                    return Result.success(cagecell);
+                }
                 //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峆RCID
                 ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
+                //鏇存崲鐜荤拑鐨勭瀛�
+                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
                 //濉叆璋冩嫧鏁版嵁
-                datas.add((short)id);
-                datas.add((short)ids);
+                datas.add((short)prcid);//璋冩嫧澶栫墖璧峰浣嶇疆
+                datas.add((short)prcid2);
                 datas.add((short)2);
                 datas.add((short)1);
                 //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
                 S7control.getinstance().WriteWord(adddresslist, datas);
-                //鏇存崲鐜荤拑鐨勭瀛�
                 datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
                 //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
-                datas.add((short)id);
+                datas.add((short)prcid);
                 datas.add((short)1000);
                 datas.add((short)1);
                 datas.add((short)1);
                 S7control.getinstance().WriteWord(adddresslist, datas);
                  //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
-                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
+               
                 return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
                 
-               }else{
+               }else{//绗煎瓙鍙峰ぇ浜�5鏃�
                 StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
+                if(cagecell==null){
+                    return Result.success(cagecell);
+                }
                 //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峱rcID
                 ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
                 //濉叆璋冩嫧鏁版嵁
-                datas.add((short)id);
-                datas.add((short)ids);
+                datas.add((short)prcid);
+                datas.add((short)prcid2);
                 datas.add((short)2);
                 datas.add((short)1);
+                //杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
+                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
                 //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
                 S7control.getinstance().WriteWord(adddresslist, datas);
                 datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
                 //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
                 //濉叆鍑虹墖鏁版嵁
-                datas.add((short)id);
+                datas.add((short)prcid);
                 datas.add((short)1000);
                 datas.add((short)1);
                 datas.add((short)1);
@@ -110,18 +126,29 @@
     public Result selectAll(Short glassid){
         //return spianMapper.selectAll(); 
         int cage1;
+        int cells;
         int ids;
-        int tier;
-        double widths=1500;
+        int prcid;
+        int tiers;
+        int prctier;
+
+        Glass glasslist=spianMapper.selectGlass(glassid);
+        double widths=glasslist.getWidth();
+        Short orderids=glasslist.getOrderId();
+
         List<String> adddresslist=new ArrayList<>();
         adddresslist.add("DB105.0");//杩涚墖杞﹁捣濮嬩綅缃�
         adddresslist.add("DB105.2");//杩涚墖杞︾洰鏍囦綅缃�
         adddresslist.add("DB105.4");//杩涚墖绗肩幓鐠冩暟
         adddresslist.add("DB105.12");//杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
         List<Short> datas=new ArrayList<>();
+
         //String orderid="A001";
         //鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
         List<StorageCage> storageCage=spianMapper.selectAll(glassid);
+        if(storageCage==null){
+                    return Result.success(storageCage);
+                }
         for (StorageCage storageCage2 : storageCage) {
             //淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
             cage1=storageCage2.getCage();
@@ -129,18 +156,22 @@
             int cages=spianMapper.selectCage(cage1);
             //鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
             StorageCage cages1=spianMapper.selectCage1(cage1,widths);
-            ids=cages1.getId();
-            tier=cages1.getTier();
+            ids=cages1.getId();//鏁版嵁搴揑D
+            tiers=cages1.getTier();//鍐呭鐗�
+            cells=cages1.getCell();//鏍煎瓙鍙�
+            prcid=cages1.getPrcId();//浼犵粰prc鐨勭洰鏍囧湴id
+            prctier=spianMapper.selectsum(cage1, cells);//浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
             //鏈夊悎閫傜┖鏍兼椂杩涚墖
             if(cages>1 &&cages1.getTier()!=null){
                 //鎵ц杩涚墖
                 datas.add((short)1000);
-                datas.add((short)ids);
-                datas.add((short)tier);
+                datas.add((short)prcid);
+                datas.add((short)prctier);
                 datas.add((short)1);
                 S7control.getinstance().WriteWord(adddresslist, datas);
                 //鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
-                spianMapper.UpdataAddCage("glassid", glassid, widths, cages, ids, tier, 1);//杩樻湭鑾峰彇鐜荤拑id
+               
+                spianMapper.UpdataAddCage(orderids, glassid, widths, cage1, cells, ids, 1);
                 return Result.success(cages1);
             }
             
@@ -149,5 +180,108 @@
         return Result.success("涓嶅彲杩涚墖");      
       
     }
+
+   @GetMapping("/all2")
+    public Result selectout2(String glassid){
+        //瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
+        List<String> adddresslist=new ArrayList<>();
+        adddresslist.add("DB105.6");//鍑虹墖杞﹁捣濮嬩綅缃�
+        adddresslist.add("DB105.8");//鍑虹墖杞︾洰鏍囦綅缃�
+        adddresslist.add("DB105.10");//鍑虹墖绗肩幓鐠冩暟
+        adddresslist.add("DB105.14");//鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
+        List<Short> datas=new ArrayList<>();
+        //鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
+         StorageCage cageout=spianMapper.selectOut2(glassid);
+         int cage =cageout.getCage(); //鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
+         int cell =cageout.getCell();//鍑虹墖鏍煎彿
+         int tier =cageout.getTier();//鍑虹墖鍐呭鐗�
+         int prcid=cageout.getPrcId();//prcid
+         int prcid2;
+         int ids;
+         double glasswidth=cageout.getGlassWidth();
+         //鍒ゆ柇鐜荤拑鍐呭鐗�
+         if(tier==2){
+             //鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
+                //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+                spianMapper.UpdataGlassCage("","",glasswidth, cage, cell, tier, 0);
+               
+                datas.add((short)prcid);
+                datas.add((short)1000);
+                datas.add((short)1);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                return Result.success(datas);  
+         }
+         else{  
+            //鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
+           int state= spianMapper.selectGlassState(cage,cell);
+            //鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
+            if(state==0){
+             return Result.success("鐘舵�佷负0,鐩存帴鍑虹墖");  
+             }else{
+              //鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
+               if(cage<6){
+                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,0,6);
+                if(cagecell==null){
+                    return Result.success(cagecell);
+                }
+                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峆RCID
+                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
+                //鏇存崲鐜荤拑鐨勭瀛�
+                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
+                //濉叆璋冩嫧鏁版嵁
+                datas.add((short)prcid);//璋冩嫧澶栫墖璧峰浣嶇疆
+                datas.add((short)prcid2);
+                datas.add((short)2);
+                datas.add((short)1);
+                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�,濉叆鍑虹墖鏁版嵁
+                datas.add((short)prcid);
+                datas.add((short)1000);
+                datas.add((short)1);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                 //淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
+               
+                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+                
+               }else{//绗煎瓙鍙峰ぇ浜�5鏃�
+                StorageCage cagecell= spianMapper.selectGlassCage(cage,glasswidth,5,11);
+                if(cagecell==null){
+                    return Result.success(cagecell);
+                }
+                //鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
+                prcid2=cagecell.getPrcId();//璋冩嫧鐩爣浣峱rcID
+                ids=cagecell.getId();//璋冩嫧鐩爣浣岻D
+                //濉叆璋冩嫧鏁版嵁
+                datas.add((short)prcid);
+                datas.add((short)prcid2);
+                datas.add((short)2);
+                datas.add((short)1);
+                //杞Щ鍘熻皟鎷ㄦ牸瀛愭暟鎹�
+                spianMapper.UpdateDBCage(ids, cage, cell);//灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
+                spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, 2, 0);//娓呴櫎鍘熸牸瀛愭暟鎹�
+                //浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                datas.clear(); // 娓呯┖鏁翠釜鍒楄〃
+                //鍒ゆ柇璋冩嫧缁撴潫鍚庡啀娆″嚭鐗�
+                //濉叆鍑虹墖鏁版嵁
+                datas.add((short)prcid);
+                datas.add((short)1000);
+                datas.add((short)1);
+                datas.add((short)1);
+                S7control.getinstance().WriteWord(adddresslist, datas);
+                return Result.success(cagecell);  //璋冩嫧浣嶇疆鐨勫弬鏁板唴瀹�
+                
+               }
+               
+             }
+        }
+    
+}
     
 }

--
Gitblit v1.8.0