admin
2024-04-24 363457b34e0e4f26ffe51aa80ecb227bf7873308
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package com.jcdm.main.da.opcuaconfig.cert;
 
import com.jcdm.framework.websocket.WebSocketServer;
import com.jcdm.framework.websocket.WebSocketUsers;
import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo;
import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService;
import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.opcuaconfig.client.ClientHandler;
import com.jcdm.main.da.opcuaconfig.domain.NodeEntity;
import com.jcdm.main.da.opcuaconfig.init.BeanUtils;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
 
import javax.websocket.Session;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
import static com.jcdm.main.da.opcuaconfig.client.ClientHandler.readValues;
 
@Slf4j
public class MethodName {
    Map<String, Session> map = WebSocketUsers.getUsers();
    private IDaCollectionParamConfService collectionParamConfService = BeanUtils.getBean(IDaCollectionParamConfService.class);
    private IDaParamCollectionService daParamCollectionService = BeanUtils.getBean(IDaParamCollectionService.class);
    private IDaPassingStationCollectionService daPassingStationCollectionService = BeanUtils.getBean(IDaPassingStationCollectionService.class);
    private IBsFormulaChildInfoService bsFormulaChildInfoService = BeanUtils.getBean(IBsFormulaChildInfoService.class);
    private List<DataValue> s=null;
    public void Transit(String Node, String value) throws Exception {
        log.info(Node+":"+value);
        String[] parts = Node.split("[.]");
        ClientHandler clientHandler=new ClientHandler();
        NodeEntity SN_node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".SNCode").value("").type("").build();
        String SNCode=clientHandler.read(SN_node);
        log.info("读取节点:{},结果:{}", SN_node.getIdentifier(),SNCode);
        switch (value) {
            case "0":   //初始
                NodeEntity node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("0").type("short").build();
                Boolean out=clientHandler.write(node);
                log.info("节点:{},响应结果:{}", node.getIdentifier(),out);
                break;
            case "1":   //请求下发进站状态
                NodeEntity node1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("11").type("short").build();
                Boolean out1=clientHandler.write(node1);
                DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
                PassingStationCollection.setSfcCode(SNCode);
                PassingStationCollection.setLocationCode(parts[1]);
                PassingStationCollection.setInboundTime(new Date());
                daPassingStationCollectionService.insertDaPassingStationCollection(PassingStationCollection);
                log.info("节点:{},响应结果:{}", node1.getIdentifier(),out1);
                WebSocketUsers.sendMessageToUserByText(map.get(parts[1]), "IN");
                break;
            case "2":   //请求记录工位数据
                List<DaCollectionParamConf> b;
                DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf();
                daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]);
                b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
 
                List<NodeId> nodeId = b.stream().map(info -> {
                    NodeId nodeid = new NodeId(2,info.getGatherAddress());
                    return nodeid;
                }).collect(Collectors.toList());
                List<DataValue> s=readValues(nodeId);
                //保存PLC采集数据
                for(int i=0;i<nodeId.size();i++)
                {
                    DaParamCollection Config=new DaParamCollection();
                    Config.setParamCode(nodeId.get(i).getIdentifier().toString().split("[.]")[2]);
                    Config.setLocationCode(nodeId.get(i).getIdentifier().toString().split("[.]")[1]);
                    Config.setParamValue(s.get(i).getValue().getValue().toString());
                    Config.setSfcCode(SNCode);
                    Config.setParamName(b.get(i).getGatherAddress());
                    daParamCollectionService.insertDaParamCollection(Config);
                }
                //更新出站时间,计算节拍。
                DaPassingStationCollection PSC=new DaPassingStationCollection();
                PSC.setSfcCode(SNCode);
                List<DaPassingStationCollection> LPSC=daPassingStationCollectionService.selectDaPassingStationCollectionList(PSC);
                if(LPSC != null && LPSC.size() > 0){
                    LPSC.get(0).setOutboundTime(new Date());
                    LPSC.get(0).setCollectionTime(new Date());
                    LPSC.get(0).setBeatTime(Long.toString(Math.abs(new Date().getTime() - LPSC.get(0).getInboundTime().getTime())));
                    daPassingStationCollectionService.updateDaPassingStationCollection(LPSC.get(0));
                }
                //更新PLC节点状态
                NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("21").type("short").build();
                Boolean out2=clientHandler.write(node2);
                WebSocketUsers.sendMessageToUserByText(map.get(parts[1]), "OUT");
                log.info("节点:{},响应结果:{}", node2.getIdentifier(),out2);
                break;
            default:
                break;
        }
    }
 
    public void tighten(String Node, String value) throws Exception {
        String[] parts = Node.split("[.]");
        ClientHandler clientHandler=new ClientHandler();
        System.out.println("Node:"+Node+"value:"+value);
        switch (value){
            case "1":
                //读扭矩
                NodeEntity SN_node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordSN").value("").type("").build();
                String SNCode=clientHandler.read(SN_node);
 
                //读角度
                NodeEntity SNDone= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordSNDone").value("").type("").build();
                String RecordSNDone = clientHandler.read(SNDone);
 
                //读结果
                NodeEntity SNDone1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".WorkID").value("").type("").build();
                String WorkID = clientHandler.read(SNDone1);
 
                //保存参数采集表
                DaParamCollection paramCollection = new DaParamCollection();
                paramCollection.setLocationCode(parts[1]);
                paramCollection.setParamCode("RecordSN");
                paramCollection.setParamValue(SNCode);
                paramCollection.setParamName(parts[0]+"."+parts[1]+".RecordSN");
                daParamCollectionService.insertDaParamCollection(paramCollection);
 
 
                DaParamCollection paramCollection1 = new DaParamCollection();
                paramCollection1.setLocationCode(parts[1]);
                paramCollection1.setParamCode("RecordSNDone");
                paramCollection1.setParamValue(RecordSNDone);
                paramCollection1.setParamName(parts[0]+"."+parts[1]+".RecordSNDone");
                daParamCollectionService.insertDaParamCollection(paramCollection1);
 
 
 
                DaParamCollection paramCollection2 = new DaParamCollection();
                paramCollection2.setLocationCode(parts[1]);
                paramCollection2.setParamCode("WorkID");
                paramCollection2.setParamValue(WorkID);
                paramCollection2.setParamName(parts[0]+"."+parts[1]+".WorkID");
                daParamCollectionService.insertDaParamCollection(paramCollection2);
 
                //保存状态更新前端表单
                BsFormulaChildInfo test = bsFormulaChildInfoService.selectBsFormulaChildInfoByTypeTopOne("1", "test", parts[1]);
                test.setResults(WorkID);
                bsFormulaChildInfoService.updateBsFormulaChildInfo(test);
                WebSocketUsers.sendMessageToUserByText(map.get(parts[1]), "TIGHTEN");
 
 
 
                System.out.println("SNCode:"+SNCode);
                System.out.println("Node:"+Node+"value:"+value);
                NodeEntity node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".StationStatus").value("0").type("short").build();
                Boolean out=clientHandler.write(node);
                NodeEntity RecordSN= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordSN").value("0").type("short").build();
                Boolean out1=clientHandler.write(RecordSN);
                NodeEntity riteRecordSNDone= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordSNDone").value("0").type("short").build();
                Boolean out2=clientHandler.write(riteRecordSNDone);
                log.info("节点:{},响应结果:{}", node.getIdentifier(),out);
            default:
                break;
        }
    }
 
 
}