| | |
| | | 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; |
| | |
| | | private IDaCollectionParamConfService collectionParamConfService = BeanUtils.getBean(IDaCollectionParamConfService.class); |
| | | private IDaParamCollectionService daParamCollectionService = BeanUtils.getBean(IDaParamCollectionService.class); |
| | | private IDaPassingStationCollectionService daPassingStationCollectionService = BeanUtils.getBean(IDaPassingStationCollectionService.class); |
| | | private List<DataValue> s=null; |
| | | public void getSn(String Node, String value) throws Exception { |
| | | 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> DaParamCollectionlist = 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()); |
| | | DaParamCollectionlist.add(ParamCollection); |
| | | } |
| | | daParamCollectionService.saveBeachDaParamCollection(DaParamCollectionlist); |
| | | // 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(); |
| | |
| | | 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(); |
| | | 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]+".RecordDataDone").value("11").type("short").build(); |
| | | 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); |
| | |
| | | daPassingStationCollectionService.updateDaPassingStationCollection(LPSC.get(0)); |
| | | } |
| | | //更新PLC节点状态 |
| | | NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("21").type("short").build(); |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |