169 lines
4.4 KiB
C++
169 lines
4.4 KiB
C++
#pragma once
|
||
/**
|
||
* @file eqp_stat.h
|
||
* @brief 处理与页面交互的shm数据
|
||
* @author your name (you@domain.com)
|
||
* @version 0.1
|
||
* @date 2023-12-21
|
||
*
|
||
* Copyright: Baosight Co. Ltd.
|
||
* DO NOT COPY/USE WITHOUT PERMISSION
|
||
*
|
||
*/
|
||
#include <log4cplus/LOG.h>
|
||
#include <shm/RuleStatShm.h>
|
||
#include <memory>
|
||
#include <vector>
|
||
class EqpStat {
|
||
public:
|
||
EqpStat();
|
||
~EqpStat();
|
||
|
||
public:
|
||
/**
|
||
* @brief 静态数据维护
|
||
*/
|
||
void init();
|
||
|
||
/**
|
||
* @brief 更新指定key的动态数据
|
||
* @param ruleid 规则id
|
||
* @param rule_stat RuleStatShm::RuleStat数据 引用
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool update_dynamic(std::string ruleid,
|
||
const RuleStatShm::RuleStat& rule_stat);
|
||
|
||
/**
|
||
* @brief 更新指定key的静态数据 弃用
|
||
* @param ruleid 规则id
|
||
* @param rule_stat RuleStatShm::RuleStat数据 引用
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
// bool update_static(std::string ruleid,
|
||
// const RuleStatShm::RuleStat& rule_stat);
|
||
/**
|
||
* @brief 更新指定key的shear_times/running_time 弃用
|
||
* @param ruleid 规则id
|
||
* @param rule_stat RuleStatShm::RuleStat数据 引用
|
||
* @param is_times 是否为运行时间
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
// bool update_static(std::string ruleid, const RuleStatShm::RuleStat&
|
||
// rule_stat,
|
||
// bool is_times);
|
||
/**
|
||
* @brief 更新指定key的 静态数据
|
||
* 内含当前变量 rule_stat_statstic_
|
||
* @param ruleid 规则id
|
||
* @param is_times 是否为运行时间/出现次数
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool update_static(std::string ruleid, bool is_times);
|
||
/**
|
||
* @brief 更新所有 循环
|
||
* 内含当前变量 rule_stat_
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool update_static();
|
||
/**
|
||
* @brief 更新指定key的所有数据
|
||
* @param ruleid My Param doc
|
||
* @param rule_stat My Param doc
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool update_stat(std::string ruleid, const RuleStatShm::RuleStat& rule_stat);
|
||
/**
|
||
* @brief 添加数据到shm
|
||
* @param ruleid My Param doc
|
||
* @param rule_stat My Param doc
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool add_stat_values(std::string ruleid, const double& rule_stat);
|
||
/**
|
||
* @brief 获取shm的数据
|
||
* @param ruleid 规则id
|
||
* @param rule_stat 接收的数据类
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool get_stat_values(std::string ruleid, RuleStatShm::RuleStat& rule_stat);
|
||
/**
|
||
* @brief 删除指定key的数据
|
||
* @param ruleid My Param doc
|
||
* @return true
|
||
* @return false
|
||
*/
|
||
bool delete_stat(std::string ruleid);
|
||
/**
|
||
* @brief map 转 json 的 string
|
||
* @return std::string
|
||
*/
|
||
std::string get_stat_json();
|
||
/**
|
||
* @brief 从 cfg查询 所有规则,从map中找到cfg不存在的
|
||
* @return std::vector<std::string>
|
||
*/
|
||
std::vector<std::string> stat_find_no_ruleid();
|
||
/**
|
||
* @brief map的size
|
||
* @return int
|
||
*/
|
||
int get_stat_size();
|
||
/**
|
||
* @brief 查T_RULE_CFG表
|
||
*/
|
||
void get_cfg_rules();
|
||
|
||
/**
|
||
* @brief Get the ruleid json object
|
||
* @return string {"ruleid":[xxx,xxx,……]}
|
||
*/
|
||
string get_ruleid_json();
|
||
|
||
private:
|
||
std::unique_ptr<LOG> logger_;
|
||
std::vector<string> cfg_rules_;
|
||
// RuleStatShm::RuleStat rule_stat_; ///<当前数据 供循环用
|
||
// RuleStatShm::RuleStat rule_stat_statstic_; ///<当前数据 统计类调用函数
|
||
bool cfg_flag = false; ///<查询
|
||
chrono::system_clock::time_point
|
||
last_update_static_time_; ///<上次刷新静态数据的时间
|
||
/**
|
||
* @brief 运行时间
|
||
* @param ruleid My Param doc
|
||
* @return double
|
||
*/
|
||
double select_running_by_ruleid(string ruleid);
|
||
/**
|
||
* @brief 出现次数
|
||
* @param ruleid My Param doc
|
||
* @return unsigned long
|
||
*/
|
||
unsigned long select_times_by_ruleid(string ruleid);
|
||
/**
|
||
* @brief 报警次数
|
||
* @param ruleid My Param doc
|
||
* @return int
|
||
*/
|
||
int select_alarm_by_ruleid(string ruleid);
|
||
/**
|
||
* @brief 设备编码
|
||
* @param ruleid My Param doc
|
||
* @return std::string
|
||
*/
|
||
std::string select_dev_coder_by_ruleid(string ruleid);
|
||
/**
|
||
* @brief 最新报警时间
|
||
* @param ruleid My Param doc
|
||
* @return string
|
||
*/
|
||
string select_latest_alarm_by_ruleid(string ruleid);
|
||
}; |