春风项目四线(合箱线、总装线)
wujian
2024-04-27 c76a3fde9098df30b47a546ee90598c4ec3cfb54
change model2
已修改1个文件
92 ■■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -21,15 +21,15 @@
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;
@@ -55,6 +55,8 @@
    public IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService;
    public HashMap<String,List<DaCollectionParamConf>> allCollectParamList = new HashMap<>();
    public OPCUaSubscription(MiloService miloService,
                             IDaCollectionParamConfService collectionParamConfService,
                             IDaParamCollectionService daParamCollectionService,
@@ -71,12 +73,17 @@
        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、扫码枪数据回传
@@ -85,6 +92,8 @@
                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())){
@@ -95,29 +104,11 @@
                }
                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);
                            }
                        }
                    }
                }
@@ -151,7 +142,7 @@
            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)){
@@ -277,6 +268,13 @@
//                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);
@@ -294,11 +292,21 @@
        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();
@@ -306,7 +314,23 @@
            }).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")){
@@ -329,11 +353,11 @@
                        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();
@@ -349,6 +373,8 @@
            PassingStationCollection.setBeatTime(beatTime.toString());
            PassingStationCollection.setOutRsSign("合格");
            passingStationCollectionServiceImpl.insertDaPassingStationCollection(PassingStationCollection);
            log.info("-------保存过站记录数据完成---------");
        }
    }
}