eis/eqpalg/algs/roller2.h

50 lines
1.3 KiB
C++

#pragma once
/**
* @file roller2.h
* @brief 同组离群监测
* @author your name (you@domain.com)
* @version 0.1
* @date 2025-01-20
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <eqpalg/algs/exp_base.h>
#include <eqpalg/define/public.h>
#include <array>
#include <map>
using std::string;
class Roller2 : public ExpBase {
public:
Roller2(const string& name, const mix_cc::json& rule_json,
const string& ruleId, size_t exp_type);
virtual ~Roller2();
public:
AlarmInfo doMonProc() override;
const vector<string> ExpStr = {"pre_exp", "X1", "X2", "X3", "X4",
"X5", "X6", "X7", "X8", "X9"};
int init() override;
virtual AlarmInfo mon_proc() override;
std::vector<AlarmInfo> exec_task(mix_cc::time_range_t time_range) override;
const array<string, 2> BIG_SMALL = {"过大", "过小"};
double limit_over_;
private:
std::unique_ptr<mix_cc::matheval::Expression> pre_exp_;
map<std::string, std::unique_ptr<mix_cc::matheval::Expression>>
var_exp_;
map<std::string, std::string> var_name_;
map<std::string, std::string> var_exp_str_;
map<std::string, double> var_Xdouble_;
bool pre_exp_flag_;
private:
int init_X_exp();
void print_load_content();
void refresh_var_result();
};