From 28ded8102d83cf74bc232d1cdfc89b7f22c41952 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期二, 03 十二月 2024 09:09:31 +0800
Subject: [PATCH] 增加点击防抖事件 增加笼子使用详情的计算优化。 增加数据推送时的报错处理 测量台交互逻辑增加 参数界面增加翻转加减速度

---
 springboot-vue3/src/main/java/com/example/springboot/service/SpianServiceNew.java |  499 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 265 insertions(+), 234 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 a584239..5da2a94 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,267 +1,268 @@
 package com.example.springboot.service;
 
-
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 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.north_glass_buffer1;
+import com.example.springboot.entity.StorageTask;
 import com.example.springboot.entity.device.PlcParameterObject;
-import com.example.springboot.mapper.SpianMapper;
+import com.example.springboot.mapper.AlbaniaMapper;
 import com.google.common.primitives.Bytes;
-
 
 @Service
 public class SpianServiceNew {
     @Autowired
-    private SpianMapper spianMapper;
-   
-    // @GetMapping("/all")
-    public Short selectAll(String glassid) {
- //璇诲彇DB105鍖烘枃浠�
- PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
- //璇�106
- PlcParameterObject plcread=PLCAutoMes.PlcReadObject;
-        int cage1 = 0;
-        int cells;
-        int ids;
-        int prcid;
-        int tiers;
-        int prctier;
-        double width;
-        double minwidth = 0;
+    private AlbaniaMapper albaniaMapper;
+    @Autowired
+    private StorageCageService storageCageService;
+    // 璇诲彇DB105鍖烘枃浠�
+    private PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
 
-        north_glass_buffer1 glasslist = spianMapper.selectGlass(glassid); // 鑾峰彇鐜荤拑鍙傛暟
-        // 濡傛灉娌℃湁姝d鏃�
-        if (glasslist == null) {
-            return (300);
+    public Short selectAll(GlassInfo glassInfo) {
+        if (glassInfo == null) {
+            // 鏈夎繘鐗囪姹備絾鏄祴閲忓彴娌℃湁鐜荤拑
+            return 400;
         }
 
-        double widths = glasslist.getglasslengthmm();
-        String orderids = glasslist.getordernumber();
-        String FrameBarcode = glasslist.getFrameBarcode();
-        // 鑾峰彇閾濇鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
-        List<StorageCage> storageCage = spianMapper.selectAllFbarcode(FrameBarcode, widths, 400);
-        // 鍒ゆ柇閾濇鎸囧畾绌烘牸鏄惁闇�瑕侀棿闅旂┖闂�
-        if (storageCage.size() == 0) {
-            storageCage = spianMapper.selectAll(orderids, FrameBarcode);
-        }
-        if (storageCage == null) {
-            return (400);
-        }
-        for (StorageCage storageCage2 : storageCage) {
-            // 淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
-            cage1 = storageCage2.getCage();
-            // 鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
-            int cages = spianMapper.selectCage(cage1);
+        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);
 
-            // 濡傛灉鐩搁偦绗煎瓙娌℃湁绌烘牸,鎴栬�呮湁姝e湪鎵ц鐨勫嚭鐗囦换鍔℃椂杩斿洖400
-            if (cages == 0) {
+        } else {
+            // 鍒ゆ柇鐜荤拑鏄惁杩涘叆澶х墖绗�
+            if (glassInfo.getThickness() > 14) {
+                cage = albaniaMapper.SelectNewCell(3, 5);
+            } else {
+                cage = albaniaMapper.SelectNewCell(0, 4);
+
+                // System.out.println(cage + "鐞嗙墖绗煎垽鏂�");
+            }
+            // 褰撳皬鐗囩瀛愪笉澶燂紝鍒欑鍚堟潯浠剁殑鍙互杩涘叆澶х墖绗�
+            if (cage == null && glassInfo.getWidth() >= 1500 && glassInfo.getThickness() > 4) {
+                cage = albaniaMapper.SelectNewCell(3, 5);
+            }
+            // 褰撹繑鍥炵殑鏍煎瓙鍙蜂负绌烘椂,杩斿洖400绗煎瓙宸叉弧
+            if (cage != null) {
+                albaniaMapper.AddCage(cage.getId(), glassid, width, height, 1, glasstype, 0, thickness,
+                        glassfilms.getFilms(), glassfilms.getFlowcard(), glassfilms.getMateid(), glassfilms.getTier());
+                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);
             }
-            StorageCage cages1;
-            // 鍒ゆ柇鏄惁鏄浜岀墖闇�瑕佸姞闂撮殧鐗�
-            prctier = spianMapper.selectsum(cage1, storageCage2.getCell());// 浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
-            if (prctier > 0) {
-                cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths + 400);
-            } else {
-                cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths);
-            }
-            // 鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
-            // 鏈夊悎閫傜┖鏍兼椂杩涚墖
-            if (cages1 != null && cages >= 1 && storageCage2.getDisabled() == 0) {
-                ids = cages1.getId();// 鏁版嵁搴揑D
-                tiers = cages1.getTier();// 鍐呭鐗�
-                cells = cages1.getCell();// 鏍煎瓙鍙�
-                prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
-                width = cages1.getWidth();// 鏍煎瓙鍓╀綑瀹藉害
-                widths = glasslist.getglasslengthmm();
-
-                // 鎵ц杩涚墖
-
-                // 鑾峰彇璇ユ牸瀛愬唴鏄惁鏈夌幓鐠�
-                int cellint = spianMapper.selectcell(cage1, cells);
-                if (cellint == 1) {
-                    // 灏嗗鐗囩幓鐠冪殑鏁版嵁鏇存柊鍒板唴鐗�
-                    spianMapper.UpdateDBCage(ids, cage1, cells, 1);
-                    // 灏嗘柊鍏ョ殑鐜荤拑瀛樺叆澶栫墖
-                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids - 1, 2);
-                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
-                } else {
-                    // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
-                    spianMapper.UpdataAddCage2(orderids, glassid, glasslist, cage1, cells, ids, 2);
-                    spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害        
-                }
-                // 杩涚墖杞﹁捣濮嬩綅缃�
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("AddStart").getAddressIndex()), (short) 1000);
-                // 杩涚墖杞︾洰鏍囦綅缃�
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Addgoal").getAddressIndex()), (short) prcid);
-                // 杩涚墖鐜荤拑瀹�
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddLength").getAddress(plcmes.getPlcParameter("AddLength").getAddressIndex()), (short) widths);
-                // 杩涚墖绗煎唴宸叉湁鐜荤拑鏁�
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("AddCount").getAddressIndex()), (short) prctier);
-                // 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
-                S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1);       
-                String activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-                int activate2 = 0;
-                if (activate.equals("1")) {
-                    activate2 = 1;
-                }else{
-                    while (activate.equals("1")) {
-                        // 鍑虹墖浠诲姟鍙戦�佸瓧鏀逛负1
-                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1);
-                        activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-                    }
-                }
-                outmesid(glassid, "FeedID");//娲惧彂id
-                spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString(), prctier,activate2);// 鏂板浠诲姟
-                return (200);
-
-            }
-
         }
-        return (400);
+        // 澧炲姞浠诲姟璁板綍
+        albaniaMapper.Inserttask(0, 0, 1001, cage.getId(), glassid, glasstype, flowcard, glassfilms.getMateid(),
+                glassfilms.getTier());
+        albaniaMapper.UpdateQueueState(glassid);
+        return (200);
 
     }
 
-    public Short selectout2(String glassid) {
-         //璇诲彇DB105鍖烘枃浠�
-            PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-        //璇�106
-        PlcParameterObject plcread=PLCAutoMes.PlcReadObject;
+    // 琛ュ厖鍑虹墖
+    public Short mateOut() {
+        double carwidth = -300;
 
-        char[] a = glassid.toCharArray();
-        List<Short> datas = new ArrayList<>();
-        // 鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
-        StorageCage cageout = spianMapper.selectOut2(glassid);
-        if (cageout == null) {
-            return (300);
-        }
-
-        int cage = cageout.getCage(); // 鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
-        int cell = cageout.getCell();// 鍑虹墖鏍煎彿
-        int tier = cageout.getTier();// 鍑虹墖鍐呭鐗�
-        int prcid = cageout.getPrcId();// prcid
-        int prcid2;
-        int ids;
-        int cages;
-        int cells;
-        double glasswidth = cageout.getGlassWidth();
-        int state = spianMapper.selectGlassState(cage, cell);// 鑾峰彇鏍煎瓙鏁伴噺
-        // 鍒ゆ柇鐜荤拑鍐呭鐗�
-        if (tier == 2) {
-            
-            // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
-            spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
-            spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
-            spianMapper.UpdataGlassCageState(glassid.toString(), 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵�� 
-            spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, state, 3);// 鏂板浠诲姟
-           
+        List<StorageTask> glassmate = albaniaMapper.SelectOutTask();
+        String type = glassmate.get(0).getTaskType();
+        if (glassmate.size() == 0) {
+            return (400);
         } else {
-            // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
-           
-            // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
-            if (state == 1) {
-                spianMapper.OverOutSlice(glassid.toString(), 1, 0);// 鏇存柊鍑虹墖闃熷垪浠诲姟鐘舵�佷负杩涜涓�
-                spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
-                spianMapper.UpdataGlassCageState(glassid, 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
-                spianMapper.Inserttask(1, 0, cageout.getId(), 1000, glassid, 1,3);// 鏂板浠诲姟
-                
+            for (int i = 0; i < glassmate.size(); i++) {
+                GlassInfo glass = albaniaMapper.SelectGlassInfo(glassmate.get(i).getGlasstype());
+                carwidth = carwidth + glass.getWidth() + 300;
+                if (carwidth >= 4300 && type != glassmate.get(i).getTaskType()) {
+                    S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 鍑虹墖浠诲姟鍚姩
+                    MestoPlc();
+                    return (200);
+                } else {
+                    // 澧炲姞涓�鏉′换鍔¤褰�
+                    albaniaMapper.Inserttask(1, 0, Integer.parseInt(glassmate.get(i).getShelfRack()), 2001,
+                            glassmate.get(i).getGlassId(), glassmate.get(i).getGlasstype(),
+                            glassmate.get(i).getFlowcard(), glassmate.get(i).getMateid(), glassmate.get(i).geTier());
+                    // 瀹屾垚鍑虹墖闃熷垪鐨勪换鍔�
+                    albaniaMapper.UpdateOutTask(glassmate.get(i).getId());
+                    // 鍙戦�乸lc浠诲姟
+                    Mestast(glassmate.get(i).getGlassId(),
+                            Integer.parseInt(glassmate.get(i).getShelfRack()), 2001, 0, "MESID" + (i + 1), i + 1);
+                    System.out.println("鍙戦�佸嚭鐗囬槦鍒楅厤鐗囦换鍔�:" + glassmate.get(i).getShelfRack());
+                }
+            }
+            // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+            // S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(),
+            // (short) 1);// 鍑虹墖浠诲姟鍚姩
+            while (true) {
+                String currentValue = plcmes.getPlcParameter("MESToPLC").getValue();
+                // 妫�鏌� MESToPLC 鐨勫�兼槸鍚︿负 0
+                if (currentValue.equals("1")) {
+                    System.out.println("鍙戦�佸惎鍔ㄥ瓧鐜板湪涓�1,鍋滄寰幆鍐欏叆");
+                    break; // 閫�鍑哄惊鐜�
+                }
+                // 濡傛灉涓嶄负 1锛岀户缁啓鍏�
+                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 浠诲姟鍙戦�佸瓧
+                System.out.println("缁х画鍐欏叆 MESToPLC,褰撳墠鍊�:" + currentValue);
+                try {
+                    Thread.sleep(100); // 渚嬪姣忕妫�鏌ヤ竴娆�
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+            MestoPlc();
 
+        }
+        return (200);
+    }
+
+    // 鍑虹墖
+    public Short selectout(int line) {
+        GlassInfo glassmate = new GlassInfo();
+        GlassInfo method = new GlassInfo();
+        StorageCage glass = new StorageCage();
+        int glassend = 0;
+        double carwidth = -300;
+        double width = 0;
+
+        method = albaniaMapper.SelectMethod(line);
+        if (method == null) {
+            return (400);
+        }
+        // 濡傛灉涓嶆槸鐩撮�氭ā寮忓彧鍑烘湁瀹屾暣閰嶇墖鐨勬祦绋嬪崱
+        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 {
-                // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
-                if (cage < 6) {
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6, cell);
-                    if (cagecell == null) {
-                        return (300);
+                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("涓嶈冻")) {
+                        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);// 鍑虹墖浠诲姟鍚姩
+                        MestoPlc();
+                        return (200);// 缁撴潫
                     }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
-                    cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
-                    // 鏇存崲鐜荤拑鐨勭瀛�
-                    String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
-                    spianMapper.UpdataGlassCageState(glassids, 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
-                    spianMapper.UpdateDBCage(ids, cage, cell, 2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
-                    spianMapper.Inserttask(2, 0, cageout.getId(), ids, glassids, 2, 3);// 鏂板璋冨害浠诲姟
-                    
-                } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
-                    StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11, cell);
-                    if (cagecell == null) {
-                        return (300);
+                    // }
+                    // else {
+                    // continue;
+                    // }
+                }
+                System.out.println("鏈湁瀹屾暣閰嶇墖");
+                return (400);
+            }
+
+        } else {
+            for (int i = 1; i <= 7; i++) {
+                // 鐩撮�氭ā寮忔椂鎸夐『搴忕洿鍑�
+                // glassmate = albaniaMapper.SelectOutGlass(1);
+                glassmate = albaniaMapper.SelectOutGlass2();
+
+                System.err.println("鍑虹墖:" + glassmate);
+                if (glassmate == null && i > 1) {
+                    // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                    // 鍑虹墖浠诲姟鍚姩
+                    MestoPlc();
+                    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("鍑虹墖glass:" + glass);
+                    if (glass != null) {
+                        // 鍙戦�佷换鍔′箣鍓嶅垽鏂溅涓婄殑鍓╀綑瀹藉害鏄惁澶т簬姝ょ幓鐠�
+                        width = width + glassmate.getWidth() + 300;
+                        // 澶т簬杞︿笂绌轰綑瀹藉害鏃舵彁鍓嶅彂閫佸嚭鐗囧惎鍔�
+                        if (width > 4300) {
+                            // 鏈閰嶇墖瀹屾垚鍙戦�佸惎鍔ㄥ懡浠�
+                            MestoPlc();
+                            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());
+                    } else {
+                        return (400);// 缁撴潫
                     }
-                    // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
-                    prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
-                    ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
-                    cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
-                    cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
-                    String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id               
-                    spianMapper.UpdataGlassCageState(glassids, 3);// 鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��           
-                    spianMapper.Inserttask(2, 0, cageout.getId() + 1, ids, glassids, 2, 3);// 鏂板璋冨害浠诲姟
-                    spianMapper.UpdateDBCage(ids, cage, cell, 2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
-                    spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
-                    spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
-                    
 
                 }
-                //鍙戦�乸lc浠诲姟
-                 S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("AddStart").getAddressIndex()), (short) prcid);
-                 S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Addgoal").getAddressIndex()), (short) prcid2);
-                 S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("AddCount").getAddressIndex()), (short) state);
-                 S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1);       
-                 String activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-                 int activate2 = 0;
-                 if (activate.equals("1")) {
-                     activate2 = 1;
-                 }else{
-                     while (activate.equals("1")) {
-                         // 鍑虹墖浠诲姟鍙戦�佸瓧鏀逛负1
-                         S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1);
-                         activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-                     }
-                 }
-                outmesid(glassid, "ReleaseID");//娲惧彂id
-                //鍙戦�佸畬鍊掔墖缁撴潫
-                return (200); // 缁撴潫
             }
         }
-         // 鍑虹墖杞﹁捣濮嬩綅缃�
-         S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddStart").getAddress(plcmes.getPlcParameter("OutStart").getAddressIndex()), (short) prcid);
-         // 鍑虹墖杞︾洰鏍囦綅缃�
-         S7control.getinstance().WriteWord(plcmes.getPlcParameter("Addgoal").getAddress(plcmes.getPlcParameter("Outgoal").getAddressIndex()), (short) 1000);
-         // 鍑虹墖绗煎唴宸叉湁鐜荤拑鏁�
-         S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddCount").getAddress(plcmes.getPlcParameter("OutCount").getAddressIndex()), (short) state);
-         // 鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
-         S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("OutActivate").getAddressIndex()), (short) 1);       
-         String activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-         int activate2 = 0;
-         if (activate.equals("1")) {
-             activate2 = 1;
-         }else{
-             while (activate.equals("1")) {
-                 // 鍑虹墖浠诲姟鍙戦�佸瓧鏀逛负1
-                 S7control.getinstance().WriteWord(plcmes.getPlcParameter("AddActivate").getAddress(plcmes.getPlcParameter("AddActivate").getAddressIndex()), (short) 1);
-                 
-                 activate =plcmes.getPlcParameter("AddActivate").getValue();// 鍒ゆ柇鍚姩鏄惁鍐欏叆
-             }
-         }
-         outmesid(glassid, "ReleaseID");//娲惧彂id
-        //鐩存帴鍑虹墖缁撴潫
-        return(200);// 缁撴潫
+        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();
@@ -269,9 +270,10 @@
             glassidlist.add((byte) iditem);
         }
         byte[] bytes = Bytes.toArray(glassidlist);
+        // writeString
         System.out.println("outmesidbytes:" + bytes.length);
-        S7control.getinstance().WriteByte(plcmes.getPlcParameter(address).getAddress(plcmes.getPlcParameter(address).getAddressIndex()),bytes);
-        //S7control.getinstance().WriteByte(address, bytes);// 娲惧彂鍑虹墖id
+        System.out.println(plcmes.getPlcParameter(address).getAddress());
+        System.out.println();
 
     }
 
@@ -307,15 +309,44 @@
         return listbool;
     }
 
-    // 鏍规嵁鐜荤拑id瀹屾垚鍦ㄨ繘琛屼腑鐨勪换鍔�
-    public void overtask(String glassid) {
+    // 涓嬪彂鐞嗙墖浠诲姟
+    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鐞嗙墖浠诲姟绫诲瀷
+            MestoPlc();
+        }
+    }
 
-        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 boolean scan(String address) {
+        List<Short> list = S7control.getinstance().ReadWord(address, 1);// 杩斿洖涓簍ure鏃朵负1
+        boolean listbool = list.contains((short) 1);
+        return listbool;
+    }
+
+    public void MestoPlc() {
+        while (true) {
+            String currentValue = plcmes.getPlcParameter("MESToPLC").getValue();
+            // 妫�鏌� MESToPLC 鐨勫�兼槸鍚︿负 0
+            if (currentValue.equals("1")) {
+                System.out.println("鍙戦�佸惎鍔ㄥ瓧鐜板湪涓�1,鍋滄寰幆鍐欏叆");
+                break; // 閫�鍑哄惊鐜�
+            }
+            // 濡傛灉涓嶄负 1锛岀户缁啓鍏�
+            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToPLC").getAddress(), (short) 1);// 浠诲姟鍙戦�佸瓧
+            System.out.println("缁х画鍐欏叆 MESToPLC,褰撳墠鍊�:" + currentValue);
+            try {
+                Thread.sleep(100); // 渚嬪姣忕妫�鏌ヤ竴娆�
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
     }
 
 }

--
Gitblit v1.8.0