package com.example.springboot.component; import cn.hutool.json.JSONObject; import java.util.ArrayList; import java.util.List; import com.example.springboot.service.*; import org.springframework.beans.factory.annotation.Autowired; import com.example.springboot.entity.FlowCard; import com.example.springboot.entity.FlowCard; import com.example.springboot.entity.GlassInfo; import com.example.springboot.entity.MeasureSetting; import com.example.springboot.entity.Out_slice; import com.example.springboot.entity.Queue; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.StorageTask; import com.example.springboot.entity.alarmmg; import com.example.springboot.entity.north_glass_buffer1; import com.example.springboot.entity.device.PlcParameterObject; import com.example.springboot.mapper.HomeMapper; import com.example.springboot.mapper.GlassInfoMapper; import com.example.springboot.mapper.MeasureSettingMapper; import com.example.springboot.mapper.QueueMapper; import com.example.springboot.mapper.SpianMapper; public class Plchome extends Thread { @Autowired private HomeMapper homeMapper; @Autowired private HomeService HomeService; private QueueMapper QueueMapper; private GlassInfoMapper GlassInfoMapper; private MeasureSettingMapper MeasureSettingMapper; private OutSliceServive outSliceServive; private SpianMapper spianMapper; private SpianService spianService; // 出片队列是否允许出片 public static Boolean isAllowQueue = true; public static Boolean isAllowReordering = true; // 出片队列警告 public static Boolean isQueueWarning = true; // 铝框id public static String FrameNo = ""; // 是否需要手动确认玻璃 public static Boolean isConfirm = false; // 待确认的出片队列 public static List AluminumFrame; // private Configuration config; private StorageCageService storageCageService; public static Boolean FeedState = false; // public Plchome() throws IOException { // config = new Configuration("config.properties"); // } // public static Map b=new HashMap<>(); // b.put() @Override public void run() { while (this != null) { JSONObject jsonObject = new JSONObject(); try { Thread.sleep(1000); // 注入mapper HomeService = WebSocketServer.applicationContext.getBean(HomeService.class); QueueMapper = WebSocketServer.applicationContext.getBean(QueueMapper.class); homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); spianService = WebSocketServer.applicationContext.getBean(SpianService.class); outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class); storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class); // 笼子使用情况 List tableData = homeMapper.selectAll(); jsonObject.append("tableData", tableData); // 格理片笼格子状态 List cagelist1 = homeMapper.selectRack1(); List cagelist2 = homeMapper.selectRack2(); List cagelist3 = homeMapper.selectRack3(); List cagelist4 = homeMapper.selectRack4(); jsonObject.append("cagelist1", cagelist1); jsonObject.append("cagelist2", cagelist2); jsonObject.append("cagelist3", cagelist3); jsonObject.append("cagelist4", cagelist4); // 进出片任务 List tasklist1 = homeMapper.selectinout(3); List tasklist2 = homeMapper.selectinout(2); jsonObject.append("tasklist1", tasklist1); jsonObject.append("tasklist2", tasklist2); // 查询报警信息 List alarmmg = homeMapper.SelectAlarmmgInfo(); jsonObject.append("alarmmg", alarmmg); // 获取出片队列信息 List listoutslice = outSliceServive.SelectProductionqueue(); jsonObject.append("listoutslice", listoutslice); // 获取当前出片队列出片状态 jsonObject.append("isAllowQueue", Plchome.isAllowQueue); // 获取出片队列警告状态 jsonObject.append("isQueueWarning", Plchome.isQueueWarning); // 获取当前出片队列调序状态 jsonObject.append("isAllowReordering", Plchome.isAllowReordering); // 是否需要人工确认上片玻璃 jsonObject.append("isConfirm", isConfirm); // 查询当前铝框信息 Out_slice CurrentFrame = outSliceServive.SelectCurrentFrame(); jsonObject.append("CurrentFrame", CurrentFrame); //读取DB105区文件 PlcParameterObject plcmes=PLCAutoMes.PlcMesObject; //String PlcRequest=plcmes.getPlcParameter("GaToMES").getValue();//出片请求一线 //double width=plcmes.getPlcParameter("Height").getValue();//出片请求一线 //double height=plcmes.getPlcParameter("width").getValue();//出片请求一线 // 获取测量的长,宽 String PlcRequest = "1"; double width = 402; double height = 402; //获取匹配设置 if ("1".equals(PlcRequest)) { List Result=HomeService.NormalGlassInfo(width, height, "1"); if(Result.size()==1){ //匹配成功 就一种类型 添加数据 GlassInfo GlassInfo=Result.get(0); QueueMapper.insert(GlassInfo.getGlassid(),width,height,1); System.out.println("匹配成功"); //S7control.getinstance().WriteWord(plcmes.getPlcParameter("GaToMES").getAddress(), (short) 1); System.out.println(GlassInfo.getGlassid()); }else if(Result.size()>1){ //匹配失败 匹配到多条符合的数据 添加数据 QueueMapper.insert(null,width,height,2); System.out.println("匹配失败"); } else{ //匹配失败 未找到符合的数据 添加数据 QueueMapper.insert(null,width,height,3); System.out.println("未找到符合的数据"); } } // String E01id = new String( S7controlLK.getinstance().ReadByte("DB17.0",16)); // String J01id = new String( S7controlLK.getinstance().ReadByte("DB17.22",14)); //查询理片笼信息 List StorageCageInfo = storageCageService.SelectStorageCageInfo(); jsonObject.append("StorageCageInfo", StorageCageInfo); //查询当前进片任务 List StoragTaskeTaskFeed = storageCageService.SelectStorageTask(0); jsonObject.append("StoragTaskeTaskFeed", StoragTaskeTaskFeed); //查询当前出片任务 List StoragTaskeTaskOut = storageCageService.SelectStorageTask(1); jsonObject.append("StoragTaskeTaskOut", StoragTaskeTaskOut); //查询当前订单任务 List OrderTask = storageCageService.SelectOrderTask(); jsonObject.append("OrderTask", OrderTask); } catch (InterruptedException e) { e.printStackTrace(); } // jsonObject.append("params", new short[] { 30, 40, }); ArrayList sendwServer = WebSocketServer.sessionMap.get("Home"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { webserver.sendMessage(jsonObject.toString()); if (webserver != null) { List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } } } } } }