springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -2,6 +2,7 @@
import cn.hutool.json.JSONObject;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -14,6 +15,7 @@
import com.example.springboot.entity.Glass;
import com.example.springboot.entity.GlassInfo;
import com.example.springboot.entity.MeasureSetting;
import com.example.springboot.entity.OutTask;
import com.example.springboot.entity.Out_slice;
import com.example.springboot.entity.Queue;
import com.example.springboot.entity.StorageCage;
@@ -139,18 +141,62 @@
                // 匹配
                // System.err.println(PlcRequest+","+MesSend+","+width+","+height);
                if (plcmes.getPlcParameter("GaToMES").getValue() != null) {
                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// 请求
                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// 发送
                    String PlcRequest = plcmes.getPlcParameter("GaToMES").getValue();// plc请求字
                    String MesSend = plcmes.getPlcParameter("MESToGaStatus").getValue();// mes发送字
                    String A01ToMES = plcmes.getPlcParameter("A01ToMES").getValue();// 扫码请求
                    String MESToA01 = plcmes.getPlcParameter("MESToA01").getValue();// 确认扫码
                    String Layer = plcmes.getPlcParameter("Layer").getValue();// 层号
                    String Mateid = plcmes.getPlcParameter("A01MateID").getValue();// 配对号
                    String Order = plcmes.getPlcParameter("A01OrderID").getValue();// 订单号
                    double width = Double.valueOf(plcmes.getPlcParameter("width").getValue());//
                    // 宽
                    double height = Double.valueOf(plcmes.getPlcParameter("Height").getValue());// 高
                    if ("0".equals(PlcRequest) && istest) {
                    String celanedOrders = Order.replaceAll("[^a-zA-Z0-9.]", "").trim().split("\\.")[0];
                    String cleanedMateids = Mateid.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; // 移除所有非数字字符
                    String cleanedLayers = Layer.replaceAll("[^0-9.]", "").trim().split("\\.")[0]; //
                    String celanedOrder = celanedOrders.isEmpty() ? "" : celanedOrders;
                    String cleanedMateid = cleanedMateids.isEmpty() ? "" : cleanedMateids;
                    String cleanedLayer = cleanedLayers.isEmpty() ? "" : cleanedLayers;
                    if ("4".equals(PlcRequest)) {
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                (short) 0);
                        System.out.println("收四归零");
                    }
                    // System.out.println("PlcRequest:" + PlcRequest+"MesSend:" + MesSend+"width:" +
                    // width+"height:" + height);
                    // 扫码请求时
                    if ("1".equals(A01ToMES) && "0".equals(MESToA01) && "0".equals(MesSend) && "0".equals(PlcRequest)) {
                        if (cleanedMateid == "" || cleanedLayer == "") {
                            cleanedMateid = "0";
                            cleanedLayer = "0";
                        }
                        int cont = storageCageService.ScanMatch(celanedOrder, Integer.parseInt(cleanedMateid),
                                Integer.parseInt(cleanedLayer));
                        if (cont > 0) {
                            System.out.println("扫码成功");
                            System.out.println(
                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(),
                                    (short) 1);
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 1);
                        } else {
                            // QueueMapper.insertMatchFailure(1000, 1000, -1);
                            System.out.println(
                                    "Order:" + celanedOrder + " Mateid:" + cleanedMateid + " Layer:" + cleanedLayer);
                            System.out.println("扫码添加失败");
                        }
                    }
                    // 请求归零时
                    if ("4".equals(A01ToMES)) {
                        System.out.println("扫码归零成功");
                        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToA01").getAddress(), (short) 0);
                    }
                    // 测量请求时
                    if ("1".equals(PlcRequest) && "0".equals(MesSend)) {
                        boolean is = HomeService.Normal(width, height, "1");
                        if (is && istest) {
@@ -158,12 +204,10 @@
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 1);
                        }
                        else if (istest) {
                        } else if (istest) {
                            // 匹配失败
                            S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),
                                    (short) 4);
                        }
                    }
                }
@@ -206,6 +250,14 @@
                List<StorageTask> StoragTaskeTaskOut = storageCageService.SelectStorageTask(1);
                jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut);
                // 查询当前出片队列
                List<Map> OutTask = storageCageService.SelectOutTask();
                jsonObject.append("OutTask", OutTask);
                // 查询最后6次出片记录
                List<Map> OutLog = storageCageService.SelectOutLog();
                jsonObject.append("OutLog", OutLog);
                // 查询所有玻璃厚度和膜系
                List<GlassInfo> SelectMeasure = storageCageService.SelectMeasure();
                jsonObject.append("SelectMeasure", SelectMeasure);
@@ -222,25 +274,49 @@
                // jsonObject.append("params", new short[] { 30, 40, });
                // System.out.println("jsonObject:" + jsonObject);
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        webserver.sendMessage(jsonObject.toString());
                    try {
                        Iterator<WebSocketServer> iterator = sendwServer.iterator();
                        while (iterator.hasNext()) {
                        if (webserver != null) {
                            WebSocketServer webserver = iterator.next();
                            webserver.sendMessage(jsonObject.toString());
                            List<String> messages = webserver.getMessages();
                            if (!messages.isEmpty()) {
                                // // 将最后一个消息转换为整数类型的列表
                                webserver.clearMessages();
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace(); // 打印堆栈信息,方便定位问题
                        System.out.println("webserver出现异常: " + e.getMessage());
                        // TODO: handle exception
                    }
                }
                // ArrayList<WebSocketServer> sendwServer =
                // WebSocketServer.sessionMap.get("Home");
                // if (sendwServer != null) {
                // for (WebSocketServer webserver : sendwServer) {
                // webserver.sendMessage(jsonObject.toString());
                // if (webserver != null) {
                // List<String> messages = webserver.getMessages();
                // if (!messages.isEmpty()) {
                // // // 将最后一个消息转换为整数类型的列表
                // webserver.clearMessages();
                // }
                // }
                // }
                // }
            } catch (InterruptedException e) {
                System.out.println("线程出现异常");
                e.printStackTrace();
            }
        }