春风项目四线(合箱线、总装线)
yyt
2024-02-21 220f7b818bb9399391830fbbb9fb2028a21b938f
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/cert/MethodName.java
@@ -1,5 +1,6 @@
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;
@@ -7,10 +8,13 @@
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;
@@ -20,43 +24,133 @@
public class MethodName {
    private IDaCollectionParamConfService collectionParamConfService = BeanUtils.getBean(IDaCollectionParamConfService.class);
    private IDaParamCollectionService daParamCollectionService = BeanUtils.getBean(IDaParamCollectionService.class);
    private List<DataValue> s=null;
    public void getSn(String Node, String value) throws Exception {
        log.info(Node+":"+value);
    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]+".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);
                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.setCollectParameterId(parts[0]+"."+parts[1]);
                daCollectionParamConf.setGatherAddress(parts[0]+"."+parts[1]);
                b=collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf);
                List<NodeId> nodeId = b.stream().map(info -> {
                    NodeId nodeid = new NodeId(2,info.getCollectParameterId());
                    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);
                }
                NodeEntity node2= NodeEntity.builder().index(2).identifier(parts[0]+"."+parts[1]+".RecordDataDone").value("21").type("short").build();
                //更新出站时间,计算节拍。
                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;
@@ -64,4 +158,68 @@
                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);
        }
    }
}