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 b; DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf(); daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]); b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); if(b!=null&&b.size()>0){ List nodeId = b.stream().map(info -> { NodeId nodeid = new NodeId(2,info.getGatherAddress()); return nodeid; }).collect(Collectors.toList()); List s=readValues(nodeId); //保存PLC采集数据 // StopWatch stopWatch = new StopWatch(); // stopWatch.start(); List ParamCollectionlist = new ArrayList<>(); for(int i=0;i b; DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf(); daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]); b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); List nodeId = b.stream().map(info -> { NodeId nodeid = new NodeId(2,info.getGatherAddress()); return nodeid; }).collect(Collectors.toList()); List s=readValues(nodeId); //保存PLC采集数据 for(int i=0;i 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 b; DaCollectionParamConf daCollectionParamConf=new DaCollectionParamConf(); daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]); b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); List nodeId = b.stream().map(info -> { NodeId nodeid = new NodeId(2,info.getGatherAddress()); return nodeid; }).collect(Collectors.toList()); List s=readValues(nodeId); //保存PLC采集数据 for(int i=0;i 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); } } }