ZengTao
2024-05-29 6c584c489a317cee78729707890db4bb1ee3f062
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.example.springboot.component;
 
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
 
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
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_glass_buffer1;
import com.example.springboot.mapper.HomeMapper;
import com.example.springboot.mapper.SpianMapper;
 
@Slf4j
public class PlcLayout extends Thread {
 
    @Autowired
    private HomeMapper homeMapper;
    @Autowired
    // 出片队列是否允许出片
    public static Boolean isAllowQueue = true;
    public static Boolean isAllowReordering = true;
    // 出片队列警告
    public static Boolean isQueueWarning = false;
    // 铝框id
    public static String FrameNo = "";
    // 是否需要手动确认玻璃
    public static Boolean isConfirm = false;
    // 待确认的出片队列
    public static List<north_glass_buffer1> AluminumFrame;
 
    // private Configuration config;
 
    private StorageCageService storageCageService;
 
    // public Plchome() throws IOException {
    // config = new Configuration("config.properties");
    // }
 
    // public static Map b=new HashMap<>();
    // b.put()
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
                JSONObject jsonObject = new JSONObject();
 
                // 注入mapper
 
                homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
 
                if (S7control.getinstance().CheckConnected() == true) {
 
                    // 查询报警信息
                    List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
                    jsonObject.append("alarmmg", alarmmg);
 
                    // 复位倒计时
                    // 地址104.9.6
                    List<Boolean> countdown = S7control.getinstance().ReadBits("DB104.9.6", 1);
                    for (Boolean countdowns : countdown) {
                        jsonObject.append("countdown", countdowns);
                    }
                    // jsonObject.append("countdown", true);
                    // 复位完成信号ss
                    List<Boolean> resetss = S7control.getinstance().ReadBits("DB103.284", 1);
                    for (Boolean reset : resetss) {
                        jsonObject.append("reset", reset);
                    }
 
                    // 是否急停
                    List<Boolean> emergencystops = S7control.getinstance().ReadBits("DB104.5.1", 1);
                    for (Boolean emergencystop : emergencystops) {
                        jsonObject.append("emergencystop", emergencystop);
                    }
 
                }
 
                // jsonObject.append("params", new short[] { 30, 40, });
                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Layout");
                if (sendwServer != null) {
                    for (WebSocketServer webserver : sendwServer) {
                        
 
                        if (webserver != null&& webserver.session.isOpen()) {
                            webserver.sendMessage(jsonObject.toString());
                            List<String> messages = webserver.getMessages();
 
                            if (!messages.isEmpty()) {
                                // // 将最后一个消息转换为整数类型的列表
                                webserver.clearMessages();
                            }
                        }else{
                            log.info("Layout is closed");
                        }
 
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
 
        }
    }
}