From 662699f970ec493dd046fa4844e265c7170c0c34 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期一, 11 九月 2023 17:34:11 +0800
Subject: [PATCH] 优化理片笼逻辑,新增按玻璃ID出片

---
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java          |   52 ++++-----
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java         |   27 ++++-
 springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java |    2 
 springboot-vue3/src/main/java/com/example/springboot/entity/StorageCage.java         |    9 +
 springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java       |  176 +++++++++++++++++++++++++++++++----
 5 files changed, 208 insertions(+), 58 deletions(-)

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..dcb65c0 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
@@ -2,16 +2,11 @@
 
 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 +25,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/controller/SpianController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
index 9a7de54..c6fea0c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
@@ -31,7 +31,7 @@
 @GetMapping("/all2")
     public void selectdd(String orderid){
        SpianService service=new SpianService();
-       service.selectadd(orderid);
+       service.selectout(orderid);
     
 }
 
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/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index 6ee7fbf..3893141 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