| | |
| | | import com.kangaroohy.milo.model.ReadWriteEntity; |
| | | import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; |
| | | import com.kangaroohy.milo.service.MiloService; |
| | | import javafx.animation.Timeline; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.sql.Time; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | |
| | | |
| | | public IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService; |
| | | |
| | | public HashMap<String,List<DaCollectionParamConf>> allCollectParamList = new HashMap<>(); |
| | | |
| | | public OPCUaSubscription(MiloService miloService, |
| | | IDaCollectionParamConfService collectionParamConfService, |
| | | IDaParamCollectionService daParamCollectionService, |
| | |
| | | this.lists = lists; |
| | | this.rmRepairRecordService = rmRepairRecordService; |
| | | this.bsTechnologyRouteChildInfoService = bsTechnologyRouteChildInfoService; |
| | | |
| | | |
| | | } |
| | | @Override |
| | | public void onSubscribe(String identifier, Object value) { |
| | | String ecpStr = "";//异常记录标记 |
| | | try { |
| | | if(null != value && "1".equals(value.toString())) { |
| | | // if (OPCElement.OP121_ZZ_CODE_CHECK.equals(identifier)){ |
| | | // rework("2V91Y RD25D080",identifier); |
| | | // } |
| | | //1、检索SN号 |
| | | //2、过站参数采集 |
| | | //3、扫码枪数据回传 |
| | |
| | | List<String> collect2 = lists.stream().filter(x -> OPCElement.SAVE_DATA.equals(x.getrFunction())) |
| | | .map(DaOpcuaConfig::getNode).collect(Collectors.toList()); |
| | | if (collect1.contains(identifier)){ |
| | | log.info("-------监听到,{}的CODE_CHECK的信号",identifier); |
| | | log.info("-------time--------------,{}",LocalDateTime.now()); |
| | | //sn |
| | | this.SNRetrieval(identifier,value.toString()); |
| | | if (identifier.equals(OPCElement.OP120_ZZ_CODE_CHECK) && "1".equals(value.toString())){ |
| | |
| | | } |
| | | if (collect2.contains(identifier)){ |
| | | if ("1".equals(value.toString())){ |
| | | log.info("-------监听到,{}的SAVE_REQUEST_LAST的信号",identifier); |
| | | log.info("-------time--------------,{}",LocalDateTime.now()); |
| | | //save |
| | | this.SaveData(identifier); |
| | | //返回plc保存成功 |
| | | String[] parts = identifier.split("[.]"); |
| | | if (parts.length==3){ |
| | | if ("SaveRequest".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeed", 1); |
| | | log.info("-------监听到,{}的saveRequest的信号",identifier); |
| | | Integer i = map.getOrDefault(identifier + "的saveRequest的信号",0); |
| | | if (0==i){ |
| | | map.put(identifier + "的saveRequest的信号",i+1); |
| | | } |
| | | miloService.writeToOpcByte(entity); |
| | | }else if ("SaveRequestLast".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeedLast", 1); |
| | | log.info("-------监听到,{}的SaveRequestLast的信号",identifier); |
| | | Integer i = map.getOrDefault(identifier + "的SaveRequestLast的信号",0); |
| | | if (0==i){ |
| | | map.put(identifier + "的SaveRequestLast的信号",i+1); |
| | | } |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | if(null != SNCodeObject) { |
| | | String SNCode=SNCodeObject.toString(); |
| | | String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]); |
| | | System.out.println("codeCheckFeed:"+a); |
| | | log.info("-----返回codeCheckFeed-----,{}",a); |
| | | // String a="1"; |
| | | // 1:OK可生产 2:NG不可生产 3:NG可返工 4:PC检索失败(无记录)5:PC检索失败(软件) |
| | | if (StrUtil.isNotBlank(a)){ |
| | |
| | | // writeList.add(readWriteEntity); |
| | | // }); |
| | | // } |
| | | String[] parts = Node.split("[.]"); |
| | | String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]); |
| | | if (StrUtil.isNotBlank(a)){ |
| | | int input = Integer.parseInt(a); |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", input); |
| | | writeList.add(entity); |
| | | } |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier("Repair_sign"); |
| | | readWriteEntity.setValue(minOP); |
| | |
| | | if(null != SNCodeObject) |
| | | { |
| | | String SNCode = SNCodeObject.toString(); |
| | | List<DaCollectionParamConf> list; |
| | | DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); |
| | | daCollectionParamConf.setGatherAddress(parts[0] + "." + parts[1]); |
| | | daCollectionParamConf.setRemarks("1"); |
| | | list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); |
| | | Object object = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Runtime").getValue(); |
| | | String gatherAddress = parts[0] + "." + parts[1]; |
| | | List<DaCollectionParamConf> list = new ArrayList<>(); |
| | | if (allCollectParamList.containsKey(gatherAddress)){ |
| | | list = allCollectParamList.get(gatherAddress); |
| | | }else { |
| | | DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); |
| | | daCollectionParamConf.setGatherAddress(gatherAddress); |
| | | daCollectionParamConf.setRemarks("1"); |
| | | list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); |
| | | if (CollUtil.isNotEmpty(list)){ |
| | | //加入hashmap |
| | | allCollectParamList.put(gatherAddress,list); |
| | | } |
| | | } |
| | | |
| | | List<String> nodeIdList = list.stream().map(info -> { |
| | | String nodeid = info.getGatherAddress(); |
| | |
| | | }).collect(Collectors.toList()); |
| | | |
| | | if(!nodeIdList.isEmpty()){ |
| | | long time1 = new Date().getTime(); |
| | | List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); |
| | | long time2 = new Date().getTime(); |
| | | log.info("读取点位花费时间:{},",time2-time1); |
| | | |
| | | //返回plc保存成功 |
| | | if (parts.length==3){ |
| | | if ("SaveRequest".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeed", 1); |
| | | miloService.writeToOpcByte(entity); |
| | | }else if ("SaveRequestLast".equals(parts[2])){ |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeedLast", 1); |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | log.info("-------请求返回,{}的SaveFeedLast的信号",Node); |
| | | log.info("-------请求返回-----,{}",LocalDateTime.now()); |
| | | } |
| | | List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); |
| | | for(int i=0;i<nodeIdList.size();i++){ |
| | | if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){ |
| | |
| | | daParamCollectionlist.add(ParamCollection); |
| | | } |
| | | } |
| | | System.out.println("11111111111111"); |
| | | daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); |
| | | log.info("-------保存数据完成---------"); |
| | | } |
| | | |
| | | Object object = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Runtime").getValue(); |
| | | |
| | | Long beatTime = 0L; |
| | | if (ObjectUtil.isNotEmpty(object)){ |
| | | String str = object.toString(); |
| | |
| | | PassingStationCollection.setBeatTime(beatTime.toString()); |
| | | PassingStationCollection.setOutRsSign("合格"); |
| | | passingStationCollectionServiceImpl.insertDaPassingStationCollection(PassingStationCollection); |
| | | log.info("-------保存过站记录数据完成---------"); |
| | | |
| | | } |
| | | } |
| | | } |