如何获取及处理 (集算器) 麦杰数据库数据

短暂接触麦杰数据库,欢迎指正!

据了解,麦杰实时库虽之前提供过 jdbc 的连接方式,但后期基本不再维护, 而是统一由 opnet(IOPConnect)方式代替,有完整的二次开发接口说明,可以针对实时及历史数据进行操作。

本文也将结合 opnet 方式,从麦杰数据库历史表获取历史数据并处理为可在报表解析展现的数据格式并在润乾报表中展现。

第一、  基于 api 获取历史表数据

注:这里不再说明如何设置数据库历史表,本文以 w3 库 TEST_NODE 节点的 AX 点的数据为例

1png

核心代码如下

public classGetMaiJie {

    // 定义获取数据,并将获取的数据以序列格式返回给集算器处理

   public staticSequence distance5(){

        // 获取数据连接

        String IP = “182.50.125.90”;

        intPORT = 8001;

        String USER_NAME = “sis”;

        String PASSWORD = “root”;

        Sequence sd =newSequence();

        OPConnect conn =null;

        try{

            conn =newOPConnect(IP,PORT,USER_NAME,PASSWORD);

        }catch(UsersException e) {

            e.printStackTrace();

        }catch(IOException e) {

            e.printStackTrace();

        }

        // 获取数据的点

        String[] pointNames =newString[] {“W3.TEST_NODE.AX”};

        // 获取历史数据,开始和结束时间,即取某时间段的数据

        Date FROM1 =null;

        Date TO1 =null;

        SimpleDateFormat sdf =newSimpleDateFormat(“yyyy-M-dd HH🇲🇲ss”);

        try{

            FROM1 = sdf.parse(“2017-4-11 14:16:00”);

            TO1 = sdf.parse(“2017-4-11 14:16:58”);

        }catch(ParseException e) {

            e.printStackTrace();

        }      

        Map<String, OPHisData[]> pn2HisMap=null;

        try{

            pn2HisMap =conn.getPointHistorys(pointNames, FROM1, TO1, OPNetConst.HISTORY_DATA_SAMPLE, 1);

        }catch(IOException e2) {

            e2.printStackTrace();

        }  

        // 输出获取到的数据

        for(Map.Entry<String, OPHisData[]> entry: pn2HisMap.entrySet()) {

            Stringpn= entry.getKey();

            OPHisData[] hiss = entry.getValue();

            for(OPHisData his : hiss) {

                // 将数据放入序列

                sd.add(his.toString());

            }

        }

        System.out.println(“finish…”);

        try{

            conn.close();

        }catch(IOException e) {

            e.printStackTrace();

        }

        returnsd;

}

注:集算器获取到的格式串为

DynamicData: time:2017-04-11 14:16:00.000,AV:60.0,AS:0

DynamicData: time:2017-04-11 14:16:01.000,AV:61.0,AS:0

DynamicData: time:2017-04-11 14:16:02.000,AV:62.0,AS:0

DynamicData: time:2017-04-11 14:16:03.000,AV:63.0,AS:0

DynamicData: time:2017-04-11 14:16:04.000,AV:64.0,AS:0

DynamicData: time:2017-04-11 14:16:05.000,AV:65.0,AS:0

DynamicData: time:2017-04-11 14:16:06.000,AV:66.0,AS:0

第二、  由集算器处理数据格式

目的是处理为二维表格式,以下是处理脚本(是不是很简单比 **Java**for 来 for 去好多了),仅需一行,顺序读一次就解决了

2png

处理后的数据格式

3png

注:当然还有如果涉及 **大数据** 怎么办?答案是可以办,后面另出文章介绍。

第三、  报表内引入集算器数据集展现数据

4png

报表web展现

b1png

更多数据源相关问题请查看:数据源相关问题分类导航
* 报表如何从 mongodb 中取数
* Json 数据怎么和数据库数据一起做运算
* 润乾报表设计器中使用 spring 框架实现自定义数据集
* 数据库密码中含有特殊字符润乾应用部署时 xml 怎么处理
* 动态水印怎么做