package com.jcdm.main.da.opcuaconfig.cert;
|
|
import cn.hutool.core.date.StopWatch;
|
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 java.time.Duration;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.jcdm.main.da.opcuaconfig.client.ClientHandler.readValues;
|
|
@Slf4j
|
public class MethodName {
|
private IDaCollectionParamConfService collectionParamConfService = BeanUtils.getBean(IDaCollectionParamConfService.class);
|
private IDaParamCollectionService daParamCollectionService = BeanUtils.getBean(IDaParamCollectionService.class);
|
private IDaPassingStationCollectionService daPassingStationCollectionService = BeanUtils.getBean(IDaPassingStationCollectionService.class);
|
public void Transit(String Node, String value) throws Exception {
|
//log.info(Node+":"+value);
|
String[] parts = Node.split("[.]");
|
ClientHandler clientHandler=new ClientHandler();
|
switch (value) {
|
case "0": //初始
|
NodeEntity node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".MesRecordDataDone").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]+".MesRecordDataDone").value("11").type("short").build();
|
Boolean out1=clientHandler.write(node1);
|
log.info("节点:{},响应结果:{}", node1.getIdentifier(),out1);
|
break;
|
case "2": //请求记录工位数据
|
NodeEntity SN_node= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".SNCode").value("").type("").build();
|
String SNCode=clientHandler.read(SN_node);
|
if(SNCode==null){
|
NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".MesRecordDataDone").value("22").type("short").build();
|
Boolean out2=clientHandler.write(node2);
|
break;
|
}
|
List<DaCollectionParamConf> b;
|
DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf();
|
daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]);
|
b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
|
if(b!=null&&b.size()>0){
|
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采集数据
|
// StopWatch stopWatch = new StopWatch();
|
// stopWatch.start();
|
List<DaParamCollection> ParamCollectionlist = new ArrayList<>();
|
for(int i=0;i<nodeId.size();i++){
|
DaParamCollection ParamCollection = new DaParamCollection();
|
ParamCollection.setParamCode(nodeId.get(i).getIdentifier().toString().split("[.]")[2]);
|
ParamCollection.setLocationCode(nodeId.get(i).getIdentifier().toString().split("[.]")[1]);
|
ParamCollection.setParamValue(s.get(i).getValue().getValue().toString());
|
ParamCollection.setSfcCode(SNCode);
|
ParamCollection.setParamName(b.get(i).getGatherAddress());
|
ParamCollectionlist.add(ParamCollection);
|
}
|
daParamCollectionService.saveBeachDaParamCollection(ParamCollectionlist);
|
// stopWatch.stop();
|
// System.out.println("使用sqlSessionFactory实现批量插入耗时:" + stopWatch.getTotalTimeMillis());
|
}
|
//记录过站,并计算节拍。
|
DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
|
PassingStationCollection.setSfcCode(SNCode);
|
PassingStationCollection.setLocationCode(parts[1]);
|
PassingStationCollection.setInboundTime(new Date());
|
PassingStationCollection.setOutboundTime(new Date());
|
PassingStationCollection.setCollectionTime(new Date());
|
PassingStationCollection.setBeatTime("56");
|
daPassingStationCollectionService.insertDaPassingStationCollection(PassingStationCollection);
|
//更新PLC节点状态
|
NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".MesRecordDataDone").value("21").type("short").build();
|
Boolean out2=clientHandler.write(node2);
|
log.info("节点:{},响应结果:{}", node2.getIdentifier(),out2);
|
break;
|
default:
|
break;
|
}
|
}
|
|
public void Transit2(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]+".MesRecordDataDone").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]+".MesRecordDataDone").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);
|
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]+".MesRecordDataDone").value("21").type("short").build();
|
Boolean out2=clientHandler.write(node2);
|
log.info("节点:{},响应结果:{}", node2.getIdentifier(),out2);
|
break;
|
default:
|
break;
|
}
|
}
|
|
public void SNRetrieval(String Node, String value) throws Exception {
|
String[] parts = Node.split("[.]");
|
if(value=="1") {
|
//SN号检索
|
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);
|
|
String a=daPassingStationCollectionService.SelectSN(SNCode);
|
|
// 1:OK可生产 2:NG不可生产 3:NG可返工 4:PC检索失败(无记录)5:PC检索失败(软件)
|
NodeEntity node1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".CodeCheckFeed").value(a).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);
|
}
|
}
|
public void SaveData(String Node, String value) throws Exception {
|
String[] parts = Node.split("[.]");
|
if(value=="1") {
|
//采集数据最终保存
|
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);
|
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));
|
}
|
//请求最终保存反馈:1 保存完成 2 保存失败 3 保存失败,数据位超长
|
NodeEntity node1= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".SaveFeedLast").value("1").type("short").build();
|
Boolean out1=clientHandler.write(node1);
|
}
|
}
|
}
|