package com.example.springboot.component; import cn.hutool.json.JSONObject; import lombok.extern.slf4j.Slf4j; import java.sql.SQLException; 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.Out_slice; import com.example.springboot.entity.Queue; import com.example.springboot.entity.StorageCage; import com.example.springboot.entity.alarmmg; import com.example.springboot.entity.north_frame_buffer1_frames; import com.example.springboot.entity.north_glass_buffer1; import com.example.springboot.mapper.HomeMapper; import com.example.springboot.mapper.SpianMapper; @Slf4j public class Plchome extends Thread { @Autowired private HomeMapper homeMapper; private OutSliceServive outSliceServive; private SpianMapper spianMapper; private SpianService spianService; private North_Glass_Buffer1Service north_Glass_Buffer1Service; private JdbcConnections dbserve; // 出片队列是否允许出片 public static Boolean isAllowQueue = true; public static Boolean isAllowReordering = true; // 出片队列警告 public static Boolean isQueueWarning = false; // 铝框id public static String FrameNo = ""; // 是否需要手动确认玻璃 public static Boolean isConfirm = true; // 待确认的出片队列 public static List AluminumFrame; // 待确认的铝框信息 public static north_frame_buffer1_frames AluminumFrameInfo=new north_frame_buffer1_frames(); // private Configuration config; private StorageCageService storageCageService; public static Boolean FeedState = false; public static StringBuilder feedglassid; public static Boolean dbconnected = false; public static Boolean plc1 = true; public static Boolean plc2 = 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) { Short zhi = 0; JSONObject jsonObject = new JSONObject(); jsonObject.append("feedglassid", feedglassid); try { Thread.sleep(500); // 注入mapper homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class); spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class); spianService = WebSocketServer.applicationContext.getBean(SpianService.class); outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class); north_Glass_Buffer1Service = WebSocketServer.applicationContext .getBean(North_Glass_Buffer1Service.class); storageCageService = WebSocketServer.applicationContext.getBean(StorageCageService.class); dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class); try { dbserve.getConn(); dbconnected = true; } catch (Exception e) { e.printStackTrace(); dbconnected = false; log.info("dbconnected:" + dbconnected); } jsonObject.append("dbconnected", dbconnected); // 笼子使用情况 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); // 伍 获取进是否有待确认的玻璃id String queid = spianMapper.Selectqueueid(); int state = spianMapper.Selectqueuestate(); jsonObject.append("queid", queid); jsonObject.append("state", state); // 获取扫码位与上片位玻璃信息 Queue form2 = homeMapper.GetQueueInfo(2); Queue form3 = homeMapper.GetQueueInfo(1); if (form2.getglassId() != null && form2.getglassId() != "") { jsonObject.append("form2", form2); } if (form3.getglassId() != null && form3.getglassId() != "") { jsonObject.append("form3", form3); } // 获取出片队列信息 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); try { // 铝框线交互 // if (S7controlLK.getinstance().CheckConnected() == true) { // E02玻璃id // log.info("frame1"+S7controlLK.getinstance().CheckConnected()); String E02id=""; try { E02id= S7controlLK.getinstance().readStrings("DB17.40"); plc2=true; } catch (Exception e) { // TODO: handle exception plc2=false; e.printStackTrace(); } jsonObject.append("Plc2", plc2); // log.info("铝框线读取2"+S7controlLK.getinstance().CheckConnected()); // log.info("E02id"+E02id); outSliceServive.FrameStateUpdate(E02id); if (CurrentFrame != null) { S7controlLK.getinstance().writeStrings(CurrentFrame.getBarCode(), "DB17.0"); } // else{ // S7controlLK.getinstance().writeStrings("", "DB17.0"); // } String J01id = S7controlLK.getinstance().readStrings("DB17.22"); List liststate = S7controlLK.getinstance().ReadWord("DB17.20", 1); Short framerequest = liststate.get(0); // log.info("liststate:" + liststate); if (framerequest == 1) { // 铝框id String position; try { position = dbserve.SelectPositionByFrameBarcode(J01id); } catch (SQLException e) { // TODO Auto-generated catch block position = "0"; e.printStackTrace(); } Short send; if (position.equals("1")) { send = 1; } else { send = 2; } if (J01id != null) { int barcodeState = spianMapper.SelectOverState(J01id);// 获取该铝框的状态 if (barcodeState == 0) {// 当该铝框所有的玻璃都是完成状态时删除在出片队列的数据 spianMapper.DeleteQueue(J01id); // log.info("deleteoutslice:" + J01id); } } S7controlLK.getinstance().WriteWord("DB17.38", (short) send); } } catch (Exception e) { e.printStackTrace(); } if (S7control.getinstance().CheckConnected() == true) { // 获取当前扫码方式 List Scanningmethods = S7control.getinstance().ReadBits("DB101.11.4", 1); if (Scanningmethods != null) { for (Boolean Scanningmethod : Scanningmethods) { jsonObject.append("Scanningmethod", Scanningmethod); } } // 获取当前扫码枪玻璃id String CurrrentGlassId = spianService.queGlassid("DB103.256", 14).toString(); if (CurrrentGlassId.toString() != "" && CurrrentGlassId.toString() != null) { north_glass_buffer1 form6=new north_glass_buffer1(); try { form6= dbserve.SelectGlassByGlassIdOrderIdFrameIdouts(CurrrentGlassId, "", ""); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } if(form6!=null){ if (form6.getbarcode() != null) { jsonObject.append("form6", form6); double width = 0; double height = 0; if (form6.getglassheightmm() < form6.getglasslengthmm()) { height = form6.getglassheightmm(); width = form6.getglasslengthmm(); } else { height = form6.getglasslengthmm(); width = form6.getglassheightmm(); } if (height < 225 || width < 380 || height > 1810 || width > 2760) { zhi = 600; } else { zhi = spianService.selectAlls(form6); } } } } jsonObject.append("CurrrentGlassId", CurrrentGlassId); // 获取D01-D06,A01,A02,B01,B02状态 List DeviceList = S7control.getinstance().ReadWord("DB103.0", 10); jsonObject.append("DeviceList", DeviceList); // 获取D01-D06,A01,A02,B01,B02玻璃id List GlassIdList = new ArrayList(); GlassIdList.add(spianService.queGlassid("DB103.44", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.58", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.184", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.212", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.128", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.142", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.156", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.72", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.86", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.100", 14).toString()); GlassIdList.add(spianService.queGlassid("DB103.114", 14).toString()); jsonObject.append("GlassIdList", GlassIdList); // 获取Plc进片车与出片车位置 List addressList = new ArrayList(); addressList.add("DB106.12"); addressList.add("DB106.0"); List paramlist = S7control.getinstance().ReadWord(addressList); if (paramlist != null) { jsonObject.append("params", paramlist); } String frameno = spianService.queGlassid("DB103.270", 11).toString(); north_frame_buffer1_frames frameInfo=dbserve.SelectFrameBarcode(frameno); if(frameInfo!=null){ jsonObject.append("frameInfo", frameInfo); } if (!frameno.equals(Plchome.FrameNo)) { Plchome.FrameNo = frameno; try { Short num = 0; List north_glass_buffer1s = north_Glass_Buffer1Service .SelectAluminumFrameInfoById(Plchome.FrameNo); double framewidth=0; double frameheight=0; if(frameInfo!=null){ if(frameInfo.getframelengthmm()>frameInfo.getframeheightmm()){ framewidth=frameInfo.getframelengthmm(); frameheight=frameInfo.getframeheightmm(); }else{ framewidth=frameInfo.getframeheightmm(); frameheight=frameInfo.getframelengthmm(); } if(framewidth<600||frameheight<400){ Plchome.AluminumFrame = north_glass_buffer1s; Plchome.AluminumFrameInfo=frameInfo; }else{ for (north_glass_buffer1 north_glass_buffer1 : north_glass_buffer1s) { if (north_glass_buffer1.getstorageCage() == null) { break; } num++; } if(num==0&&north_glass_buffer1s.size()==0){ Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo); if(Plchome.AluminumFrameInfo.getbarcode()!=null){ int count=homeMapper.SelectCountFrame(AluminumFrameInfo.getbarcode()); if(count==0){ int sequence = homeMapper.SelectMaxSquence(); homeMapper.AddOutSliceS("", AluminumFrameInfo.getflip().toString(), Plchome.FrameNo, "0", "0", sequence, "0", (short)3, AluminumFrameInfo.getordernumber(),AluminumFrameInfo.getlistnumber() , AluminumFrameInfo.getboxnumber(), "0", "0", AluminumFrameInfo.getframelength().toString(), AluminumFrameInfo.getframeheight().toString()); log.info("NoGlass"+AluminumFrameInfo.getbarcode()); Plchome.AluminumFrameInfo=new north_frame_buffer1_frames(); } } }else{ if (num == north_glass_buffer1s.size()) { north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo); } else { Plchome.AluminumFrame = north_glass_buffer1s; Plchome.AluminumFrameInfo=dbserve.SelectFrameBarcode(Plchome.FrameNo); } } } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 复位倒计时 // 地址104.9.6 List countdown = S7control.getinstance().ReadBits("DB104.9.6", 1); for (Boolean countdowns : countdown) { jsonObject.append("countdown", countdowns); } // jsonObject.append("countdown", true); // 复位完成信号 List resetss = S7control.getinstance().ReadBits("DB103.284", 1); for (Boolean reset : resetss) { jsonObject.append("reset", reset); } // 是否急停 List emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1); for (Boolean emergencystop : emergencystops) { jsonObject.append("emergencystop", emergencystop); } // 获取进片请求状态 List D01Request = S7control.getinstance().ReadWord("DB106.24", 1); boolean D01RequestState = D01Request.contains((short) 1); jsonObject.append("D01RequestState", D01RequestState); // 获取进片发送状态 List D01respnse = S7control.getinstance().ReadWord("DB106.16", 1); boolean D01ResponseState = D01respnse.contains((short) 1); // jsonObject.append("D01RequestState", D01RequestState); // 自动进片 if (isConfirm == true && form3.getglassId() != null && form3.getglassId() != "") { double width = 0; double height = 0; if (form3.getglassheight() < form3.getglasswidth()) { height = form3.getglassheight(); width = form3.getglasswidth(); } else { height = form3.getglasswidth(); width = form3.getglassheight(); } if (height < 225 || width < 380 || height > 1810 || width > 2760) { zhi = 600; } else { if (D01RequestState == true && D01ResponseState != true) { zhi = storageCageService.InsertQueueGlassIds((short) 1, form3); } } } plc1=true; } else { plc1=false; log.info("Plc1" + S7controlLK.getinstance().CheckConnected()); } if (AluminumFrame != null) { jsonObject.append("AluminumFrame", AluminumFrame); } if (AluminumFrameInfo.getbarcode() != null) { jsonObject.append("AluminumFrameInfo", AluminumFrameInfo); } jsonObject.append("zhi", zhi); jsonObject.append("Plc1", plc1); // jsonObject.append("params", new short[] { 30, 40, }); ArrayList sendwServer = WebSocketServer.sessionMap.get("Home"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null && webserver.session.isOpen()) { webserver.sendMessage(jsonObject.toString()); List messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("Home is closed"); } } } } catch (InterruptedException | SQLException e) { e.printStackTrace(); } } } }