From 2d92826d942cd4c06e1f415d4a3896b99ec65e2b Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 07 十一月 2024 19:32:00 +0800
Subject: [PATCH] 更改配片逻辑

---
 springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java |  308 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 191 insertions(+), 117 deletions(-)

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 64d54bb..f2a2366 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
@@ -1,4 +1,5 @@
 package com.example.springboot.service;
+
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
@@ -12,128 +13,193 @@
 import com.example.springboot.mapper.AlbaniaMapper;
 import com.google.common.primitives.Bytes;
 
-
 @Service
 public class SpianServiceNew {
     @Autowired
     private AlbaniaMapper albaniaMapper;
-     //璇诲彇DB105鍖烘枃浠�
-    private PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-public Short selectAll(GlassInfo glassInfo) {
-    if(glassInfo==null){
-        //鏈夎繘鐗囪姹備絾鏄祴閲忓彴娌℃湁鐜荤拑
-        return 400;
-    }
-    
-    System.out.println(glassInfo+"鍒濆");
-    //瀹氫箟鍒濆瀛楁
-    StorageCage cage;
-    String glassid=glassInfo.getGlassid();
-    Double width=glassInfo.getWidth();
-    Double height=glassInfo.getHeight();
-    String flowcard=glassInfo.getFlowcard();
-    int glasstype=glassInfo.getGlasstype();
-    //鍒ゆ柇鏄惁鏈夊悓绫诲瀷鐨�
-    cage=albaniaMapper.SelectCage(glasstype,width, 300);
-     
-    //濡傛灉鏈夊悓绫诲瀷鏃剁洿鎺ュ鍔�
-    if(cage!=null){
-        //鍙戦�乸lc浠诲姟
-        Mestast(glassid, 1001, cage.getId(), 1,"MESID1",1);
-        System.out.println("浠诲姟鍙戦�佺幓鐠僫d:"+glassid+"璧峰浣嶇疆:"+1001+"鏍煎瓙鍙�:"+cage.getId()+"鍚姩:"+1);
-        
-    }else{ 
-         //鍒ゆ柇鐜荤拑鏄惁杩涘叆澶х墖绗�
-         if(glassInfo.getThickness()>=15){
-            cage=albaniaMapper.SelectNewCell(3,5);
-        }else{
-            cage=albaniaMapper.SelectNewCell(0,4);
-            
-            System.out.println(cage+"鐞嗙墖绗煎垽鏂�");
-        }
-        //褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
-        if(cage!=null){
-            albaniaMapper.AddCage(cage.getId(), glassid,width, height, 1, glasstype, 0);
-            Mestast(glassid,1001,cage.getId(),1,"MESID1",1);
-            System.out.println("浠诲姟鍙戦�佺幓鐠僫d:"+glassid+"璧峰浣嶇疆:"+1001+"鏍煎瓙鍙�:"+cage.getId()+"鍚姩:"+1);
-            albaniaMapper.UpdateStorage(width,height,cage.getId());
-        }else{
-            return(400);
-        }
-    }
-    //澧炲姞浠诲姟璁板綍
-    albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid,glasstype, flowcard,0,0);
-    albaniaMapper.UpdateQueueState(glassid);
-    return(200);
+    @Autowired
+    private StorageCageService storageCageService;
+    // 璇诲彇DB105鍖烘枃浠�
+    private PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
 
-}
+    public Short selectAll(GlassInfo glassInfo) {
+        if (glassInfo == null) {
+            // 鏈夎繘鐗囪姹備絾鏄祴閲忓彴娌℃湁鐜荤拑
+            return 400;
+        }
 
-    //鍑虹墖
+        System.out.println(glassInfo + "鍒濆");
+        // 瀹氫箟鍒濆瀛楁
+        StorageCage cage;
+        String glassid = glassInfo.getGlassid();
+        Double width = glassInfo.getWidth();
+        Double height = glassInfo.getHeight();
+        String flowcard = glassInfo.getFlowcard();
+        Integer glasstype = glassInfo.getGlasstype();
+        Double thickness = glassInfo.getThickness();
+        GlassInfo glassfilms = albaniaMapper.SelectGlassinfo(glasstype);
+        // 鍒ゆ柇鏄惁鏈夊悓绫诲瀷鐨�
+        cage = albaniaMapper.SelectCage(glasstype, width, 300);
+        // 濡傛灉鏈夊悓绫诲瀷鏃剁洿鎺ュ鍔�
+        if (cage != null) {
+            // 鍙戦�乸lc浠诲姟
+            Mestast(glassid, 1001, cage.getId(), 1, "MESID1", 1);
+            System.out.println("浠诲姟鍙戦�佺幓鐠僫d:" + glassid + "璧峰浣嶇疆:" + 1001 + "鏍煎瓙鍙�:" + cage.getId() + "鍚姩:" + 1);
+
+        } else {
+            // 鍒ゆ柇鐜荤拑鏄惁杩涘叆澶х墖绗�
+            if (glassInfo.getThickness() >= 15) {
+                cage = albaniaMapper.SelectNewCell(3, 5);
+            } else {
+                cage = albaniaMapper.SelectNewCell(0, 4);
+
+                // System.out.println(cage + "鐞嗙墖绗煎垽鏂�");
+            }
+            // 褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
+            if (cage != null) {
+                albaniaMapper.AddCage(cage.getId(), glassid, width, height, 1, glasstype, 0, thickness,
+                        glassfilms.getFilms(),glassfilms.getFlowcard(),glassfilms.getMateid());
+                Mestast(glassid, 1001, cage.getId(), 1, "MESID1", 1);
+                System.out.println("浠诲姟鍙戦�佺幓鐠僫d:" + glassid + "璧峰浣嶇疆:" + 1001 + "鏍煎瓙鍙�:" + cage.getId() + "鍚姩:" + 1);
+                albaniaMapper.UpdateStorage(width, height, cage.getId());
+            } else {
+                return (400);
+            }
+        }
+        // 澧炲姞浠诲姟璁板綍
+        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(), 0);
+        albaniaMapper.UpdateQueueState(glassid);
+        return (200);
+
+    }
+    //琛ュ厖鍑虹墖
+    public Short mateOut() {
+        double carwidth = -300;
+        list<StorageTask> glassmate = albaniaMapper.SelectMateOut();
+        return (200);
+    }
+    // 鍑虹墖
     public Short selectout(int line) {
-        GlassInfo glassmate=new GlassInfo();
-        GlassInfo method=new GlassInfo();
-        StorageCage glass=new StorageCage();
-        int glassend=0;
-        method=albaniaMapper.SelectMethod(line);
-        if(method==null){
+        GlassInfo glassmate = new GlassInfo();
+        GlassInfo method = new GlassInfo();
+        StorageCage glass = new StorageCage();
+        int glassend = 0;
+        double carwidth = -300;
+        method = albaniaMapper.SelectMethod(line);
+        if (method == null) {
             return (400);
         }
-        double width=0;
-            for(int i=1;i<=7;i++){
-                //濡傛灉涓嶆槸鐩撮�氭ā寮忓彧鍑烘湁瀹屾暣閰嶇墖鐨勬祦绋嬪崱
-                if(method.getMethod()==0){
-                    glassmate= albaniaMapper.SelectOutGlass(1);
-                }else{
-                    //鐩撮�氭ā寮忔椂鎸夐『搴忕洿鍑�
-                    glassmate= albaniaMapper.SelectOutGlass2(1);
-                    //鑾峰彇鐩撮�氭ā寮忔渶鍚庝竴鍧�
-                    glassend=albaniaMapper.SelectOutGlassend(1);
-                }
-                System.err.println("method:"+method+"glassmate:"+glassmate);
-                System.err.println(line);
-                if(glassmate==null){ 
-                    //鏈鍙栦换鍔�
-                    System.out.println("鏈鍙栦换鍔�");
+        double width = 0;
+        for (int i = 1; i <= 7; i++) {
+            // 濡傛灉涓嶆槸鐩撮�氭ā寮忓彧鍑烘湁瀹屾暣閰嶇墖鐨勬祦绋嬪崱
+            if (method.getMethod() == 0) {
+                // glassmate= albaniaMapper.SelectOutGlass(1);
+                //鍒ゆ柇鏈夋暟閲忕殑閰嶇墖id
+                List<GlassInfo> peipianid = albaniaMapper.SelectOutGlass3(method.getFlowcard());
+                if (peipianid.size() == 0) {
+                    System.out.println("peipianid:"+peipianid);
                     return (400);
-                }else{
-                
-                glass= albaniaMapper.SelectCageGlass(glassmate.getGlasstype()); 
-                System.out.println("glassmate:"+glassmate+"glassend:"+glassend+"glass:"+glass);   
-                  if(glass!=null){  
-                    //鍙戦�佷换鍔′箣鍓嶅垽鏂溅涓婄殑鍓╀綑瀹藉害鏄惁澶т簬姝ょ幓鐠�
-                    width=width+glassmate.getWidth()+300;
-                    //澶т簬杞︿笂绌轰綑瀹藉害鏃舵彁鍓嶅彂閫佸嚭鐗囧惎鍔�
-                    if(width>5000){
-                        //鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
-                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//鍑虹墖浠诲姟鍚姩
-                        return (200);//缁撴潫
-                      }
-                    //鍙戦�侀厤鐗囨暟鎹�
-                    Mestast(glass.getGlassId(), glass.getId(),40, 0,"MESID"+i,i);
-                    albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), glassmate.getTier());
-                    albaniaMapper.Inserttask(1, 0, glass.getId(), 2001, glassmate.getGlassid(), glassmate.getGlasstype(),glass.getFlowcard(),glassmate.getMateid(),glassmate.getTier());
-                      if(glassmate.getTier()==glassmate.getId()||glassmate.getTier()==glassend){//褰撻厤鐗囨暟閲忕瓑浜庢垚鍝佸皬鐗囨�荤墖鏁版椂
-                        //鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
-                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)1);//鍑虹墖浠诲姟鍚姩
-                        System.out.println("浠诲姟绫诲瀷:1,浠诲姟鐘舵��:0,璧峰:"+glass.getId()+",鐩爣"+"40");
-                        return (200);//缁撴潫
-                      }
-                     
-                      
-                    }else{
-                        return (400);//缁撴潫
+                } else {
+                    for (int j = 0; j < peipianid.size(); j++) {
+                        // 鍒ゆ柇閰嶇墖瀹藉害鏄惁澶熶笂澶ц溅
+                        // GlassInfo glasswidth = albaniaMapper.SelectOutGlass6(peipianid.get(j).getFlowcard(),peipianid.get(j).getMateid());
+                        // if (glasswidth.getWidth() <= 4300) {
+                            //鏄惁鏈夎冻澶熺殑搴撳瓨鏁伴噺
+                            List<String> peipiancage = albaniaMapper.SelectOutGlass4(peipianid.get(j).getFlowcard(),peipianid.get(j).getMateid());                              
+                            //鏄惁鏈夎冻澶熺殑鍙嚭鐗囨暟閲�
+                            List<String> peipiancage2 = albaniaMapper.SelectOutGlass8(peipianid.get(j).getFlowcard(),peipianid.get(j).getMateid()); 
+                            // System.out.println("peipiancage:"+peipiancage+peipianid.get(j).getMateid()); 
+                            // System.out.println("peipiancage2:"+peipiancage2);                                     
+                            if (!peipiancage.contains("涓嶈冻")&&!peipiancage2.contains("涓嶈冻")) {
+                                List<GlassInfo> chupian = albaniaMapper.SelectOutGlass7(peipianid.get(j).getFlowcard(),peipianid.get(j).getMateid());
+                                for (int k = 0; k < chupian.size(); k++) {
+                                      glass = albaniaMapper.SelectCageGlass(chupian.get(k).getGlasstype());
+                                      carwidth= carwidth+glass.getGlassWidth()+300;
+                                      if (carwidth<=4300) {
+                                          // 鍙戦�侀厤鐗囨暟鎹�
+                                    //   Mestast(chupian.get(k).getGlassid(), glass.getId(), 2001, 0, "MESID" + (k+1), k+1);                                    
+                                      albaniaMapper.AddFinishNumber(chupian.get(k).getFlowcard(), chupian.get(k).getMateid(), chupian.get(k).getTier());
+                                      storageCageService.UpdateStroageCageByCell(glass.getId(), -1);// 鐜荤拑鏁伴噺-1
+                                      albaniaMapper.Inserttask(1, 0, glass.getId(), 2001, chupian.get(k).getGlassid(),
+                                      chupian.get(k).getGlasstype(), chupian.get(k).getFlowcard(), chupian.get(k).getMateid(), chupian.get(k).getTier());
+                                      }else {
+                                        albaniaMapper.AddFinishNumber(chupian.get(k).getFlowcard(), chupian.get(k).getMateid(), chupian.get(k).getTier());
+                                        storageCageService.UpdateStroageCageByCell(glass.getId(), -1);// 鐜荤拑鏁伴噺-1
+                                        albaniaMapper.InsertOutTask(1, 0, glass.getId(), 2001, chupian.get(k).getGlassid(),
+                                        chupian.get(k).getGlasstype(), chupian.get(k).getFlowcard(), chupian.get(k).getMateid(), chupian.get(k).getTier());
+                                      }
+                                    
+                                }
+                                // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                                return (200);// 缁撴潫
+                            }
+                        // }
+                        //  else {
+                        //     continue;
+                        // }
                     }
-                    
-                
+                    System.out.println("鏈湁瀹屾暣閰嶇墖");
+                    return (400);
                 }
+
+            } else {
+                // 鐩撮�氭ā寮忔椂鎸夐『搴忕洿鍑�
+                glassmate= albaniaMapper.SelectOutGlass(1);
+                // glassmate = albaniaMapper.SelectOutGlass2(1);
+                // // 鑾峰彇鐩撮�氭ā寮忔渶鍚庝竴鍧�
+                // glassend = albaniaMapper.SelectOutGlassend(1);
+           
             }
-        return(200);// 缁撴潫
+            System.err.println("鍑虹墖:" + glassmate);
+            if (glassmate == null && i > 1) {
+                // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                System.out.println("鍑哄畬浠诲姟:1,浠诲姟鐘舵��:0,璧峰:" + glass.getId() + ",鐩爣" + "2001");
+                return (200);// 缁撴潫
+            }
+            if (glassmate == null) {
+                // 鏈鍙栦换鍔�
+                System.out.println("鏈鍙栦换鍔�:" + i);
+                return (400);
+            } else {
+                glass = albaniaMapper.SelectCageGlass(glassmate.getGlasstype());
+                System.out.println("glassmate:" + glassmate  + "glass:" + glass);
+                if (glass != null) {
+                    // 鍙戦�佷换鍔′箣鍓嶅垽鏂溅涓婄殑鍓╀綑瀹藉害鏄惁澶т簬姝ょ幓鐠�
+                    width = width + glassmate.getWidth() + 300;
+                    // 澶т簬杞︿笂绌轰綑瀹藉害鏃舵彁鍓嶅彂閫佸嚭鐗囧惎鍔�
+                    if (width > 4300) {
+                        // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                        return (200);// 缁撴潫
+                    }
+                    // 鍙戦�侀厤鐗囨暟鎹�
+                    Mestast(glass.getGlassId(), glass.getId(), 2001, 0, "MESID" + i, i);
+                    albaniaMapper.AddFinishNumber(glassmate.getFlowcard(), glassmate.getMateid(), glassmate.getTier());
+                    storageCageService.UpdateStroageCageByCell(glass.getId(), -1);// 鐜荤拑鏁伴噺-1
+                    albaniaMapper.Inserttask(1, 0, glass.getId(), 2001, glassmate.getGlassid(),
+                    glassmate.getGlasstype(), glass.getFlowcard(), glassmate.getMateid(), glassmate.getTier());
+                    // if (glassmate.getTier() == glassmate.getId() || glassmate.getTier() == glassend|| method.getMethod() == 1) {// 褰撻厤鐗囨暟閲忕瓑浜庢垚鍝佸皬鐗囨�荤墖鏁版椂
+                    //     // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                    //     S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                    //     System.out.println("浠诲姟绫诲瀷:1,浠诲姟鐘舵��:0,璧峰:" + glass.getId() + ",鐩爣" + "2001");
+                    //     return (200);// 缁撴潫
+                    // }
+
+                } else {
+                    return (400);// 缁撴潫
+                }
+
+            }
+        }
+        return (200);// 缁撴潫
     }
 
     // 娲惧彂浠诲姟鐜荤拑id
     public void outmesid(String glassid, String address) {
-      //璇诲彇DB105鍖烘枃浠�
-      PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+        // 璇诲彇DB105鍖烘枃浠�
+        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
         // System.out.println("outmesid:" + glassid);
         List<Byte> glassidlist = new ArrayList();
         char ds[] = glassid.toCharArray();
@@ -141,7 +207,7 @@
             glassidlist.add((byte) iditem);
         }
         byte[] bytes = Bytes.toArray(glassidlist);
-        //writeString
+        // writeString
         System.out.println("outmesidbytes:" + bytes.length);
         System.out.println(plcmes.getPlcParameter(address).getAddress());
         System.out.println();
@@ -158,7 +224,7 @@
                 writedstrIdOut.append((char) iditem);
             }
         }
-        return writedstrIdOut;  
+        return writedstrIdOut;
     }
 
     // char鏁扮粍杞寲鎴恇it鏁扮粍
@@ -180,22 +246,30 @@
         return listbool;
     }
 
-    //涓嬪彂鐞嗙墖浠诲姟
-    public void Mestast(String glassid,int MESToPLCStart1,int MESToPLCTarget1,int MESToPLC,String address,int i) {
-        S7control.getinstance().writeString(plcmes.getPlcParameter(address).getAddress(),glassid);//鐜荤拑id
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart"+i).getAddress(), (short) MESToPLCStart1);//璧峰浣嶇疆
-        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget"+i).getAddress(), (short) MESToPLCTarget1);//鐩爣浣嶇疆
-        if(MESToPLC!=0){
-            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short)MESToPLC);//mes鐞嗙墖浠诲姟绫诲瀷
-        }    
+    // 涓嬪彂鐞嗙墖浠诲姟
+    public void Mestast(String glassid, int MESToPLCStart1, int MESToPLCTarget1, int MESToPLC, String address, int i) {
+        // System.out.println("涓嬪彂鐞嗙墖浠诲姟鏁版嵁锛�");
+        // System.out.println("鐜荤拑 ID: " + glassid);
+        // System.out.println("璧峰浣嶇疆: " + MESToPLCStart1);
+        // System.out.println("鐩爣浣嶇疆: " + MESToPLCTarget1);
+        // System.out.println("浠诲姟绫诲瀷: " + MESToPLC);
+        // System.out.println("鍦板潃: " + address);
+        // System.out.println("绱㈠紩: " + i);
+        S7control.getinstance().writeString(plcmes.getPlcParameter(address).getAddress(), glassid);// 鐜荤拑id
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCStart" + i).getAddress(),
+                (short) MESToPLCStart1);// 璧峰浣嶇疆
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLCTarget" + i).getAddress(),
+                (short) MESToPLCTarget1);// 鐩爣浣嶇疆
+        if (MESToPLC != 0) {
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) MESToPLC);// mes鐞嗙墖浠诲姟绫诲瀷
+        }
     }
-    
+
     // 鎵爜澧炲姞闃熷垪浠诲姟
     public boolean scan(String address) {
         List<Short> list = S7control.getinstance().ReadWord(address, 1);// 杩斿洖涓簍ure鏃朵负1
         boolean listbool = list.contains((short) 1);
         return listbool;
     }
-
 
 }

--
Gitblit v1.8.0