查询Tag点在某时间段内的原始记录

Navigation:  Java > 记录查询接口 >

查询Tag点在某时间段内的原始记录

Previous pageReturn to chapter overviewNext page

 

函数:

public List<HDRecord> queryTagHisRawRecords(int tagID, Date startTime, Date endTime) throws HDSdkException

 

参数:

参数名称

数据类型

参数说明

默认值

tagID

int

tag点id

 

startTime

Date

起始时间

 

endTime

Date

终止时间

 

 

返回值:

返回值类型

返回值说明

List<HDRecord>

记录列表,按照时间最新排列靠前排序

 

异常:

当参数出现错误时,向上抛出IllegalArgumentException异常

当后台查询出错时,向上抛出HDSdkException异常

 

说明:

该接口用于查询Tag点在某时间段内的原始记录,如果该时间段记录超过65535条记录,则只返回65535条。

可能需要先进行登录操作,请参考HDDataConnection类

 

示例代码:

注: 标记为红色的代码行为当前接口的调用

import com.baosight.hdsdk.HDConnectionFactory;

import com.baosight.hdsdk.HDDataProvider;

import com.baosight.hdsdk.HDServerFactory;

import com.baosight.hdsdk.domain.data.HDDataConnection;

import com.baosight.hdsdk.domain.data.HDDataServer;

import com.baosight.hdsdk.domain.data.HDRecord;

import com.baosight.hdsdk.exception.HDSdkException;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.List;

 

public class IhdJavaSdkQueryTagVal {

   // 查询Tag点在某时间段内的原始记录当前尝试次数

   private static int currentTry = 1;

   // 查询Tag点在某时间段内的原始记录最大尝试次数

   private static final int maxTries = 3;

   public void queryTagHisRawRecords() {

       // 设置服务器信息

       String serverIP = "168.2.237.1";

       String bakIp = "168.2.237.2";

       HDDataServer server = HDServerFactory.getHDDataServer(serverIP,5673,bakIp,5673);

       HDDataConnection dataConn = null;

       try {

           dataConn = HDConnectionFactory.getHDDataConnection(server);

           dataConn.loginToServer("admin", "admin");

           HDDataProvider dp = new HDDataProvider(dataConn);

          SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

           Date startTime = dateFormat.parse("2025-01-01 12:00:00");

           Date endTime = dateFormat.parse("2025-01-01 13:00:00");

           List<HDRecord> rawRecordsList = new ArrayList<>();

           while(true) {

               List<HDRecord> tempRawRecordList = dp.queryTagHisRawRecords(1, startTime, endTime);

               rawRecordsList.addAll(tempRawRecordList);

               if (tempRawRecordList.size() == 65535) { // 时间范围内记录条数超出65535,以最后一条记录的timestamp作为endTime继续查询

                   endTime = dateFormat.parse(tempRawRecordsList.get(65534).getTimeStampStr());

               } else {

                   break;

               }

           }

           dataConn.dispose();

       } catch (HDSdkException e) {

           e.printStackTrace();

           try { // 查历史值异常后,休眠三秒进行重试

               System.out.println("【查询Tag点在某时间段内的原始记录】接口第" + currentTry + "次调用失败, 执行重试");

               Thread.sleep(3000);

               currentTry ++;

               if (currentTry <= maxTries) {

                   queryTagHisRawRecords();

               } else {

                   System.out.println("【查询Tag点在某时间段内的原始记录】接口重试调用已达" + maxTries + "次, 查询失败");

                   currentTry = 1; // 接口调用当前尝试次数复位

               }

           } catch (InterruptedException ex) {

               ex.printStackTrace();

           }

       } catch (ParseException e) {

           throw new RuntimeException(e);

       }

   }

}