eis/eqpalg/.do_not_use/unused_algs/AlgLoopLen.cpp

82 lines
2.6 KiB
C++

#include <base/BitTool.h>
#include <eqpalg/algs/AlgLoopLen.h>
#include <utility/StringHelper.h>
#include <zlib/MemTrk.h>
extern std::map<std::string, ITEM> glob_items;
int AlgLoopLen::init() {
LOG d("AlgLoopLen::init", AUTO_CATCH_PID);
int ret = 0;
try {
} catch (const std::exception &e) {
d.Error() << mix_cc::get_nested_exception(e) << std::endl;
ret = -1;
}
return ret;
}
AlgLoopLen::AlgLoopLen(const string name, const Json::Value rulejson,
const string ruleId)
: AlgBase(name, rulejson, ruleId) {
// CMemTable<MOD_CACHE> mod1("ZONE0",1);
// gb_data = mod1();
this->init();
m_start = -1;
looplen_start = 0.0;
}
AlgLoopLen::~AlgLoopLen() {}
int AlgLoopLen::calculate(string &outjson) {
LOG d("AlgLoopLen::calculate", AUTO_CATCH_PID);
outjson = "";
int ret = 0;
try {
// m_tags[0] : 套量编码器信号
// m_tags[1] : 速度信号
if (m_start > 0) {
time_t m_curr = this->mstime();
HD3TimeRegion timeRegion;
timeRegion.left.nSec = m_start / 1000;
timeRegion.left.nSec = m_curr / 1000;
if (m_curr - m_start < m_json_param["delay"]["time"].asInt()) {
return 0;
}
double looplen_end = glob_items[m_tags[0]].value;
if (fabs(looplen_end - looplen_start) <
m_json_param["limit_alarm"]["value"][1].asDouble()) {
string msg =
m_json_param["limit_alarm"]["content"][1].asString() + " " +
"当前套量变化幅度为" +
std::to_string(fabs(looplen_end - looplen_start));
string tmp = this->build_alarm_info(MsgLevel::WARN, rule_id_, rule_name_,
"LOOPLEN", msg, timeRegion);
if (!tmp.empty())
outjson = tmp;
} else if (fabs(looplen_end - looplen_start) <
m_json_param["limit_error"]["value"][1].asDouble()) {
string msg =
m_json_param["limit_error"]["content"][1].asString() + " " +
"当前套量变化幅度为" +
std::to_string(fabs(looplen_end - looplen_start));
string tmp = this->build_alarm_info(MsgLevel::ERROR, rule_id_, rule_name_,
"LOOPLEN", msg, timeRegion);
if (!tmp.empty())
outjson = tmp;
} else {
// d.Debug() << rule_name_ << " 数据正常! " << endl;
}
m_start = -1;
} else {
double speed = glob_items[m_tags[1]].value;
if (fabs(speed) > EPS) {
m_start = this->mstime();
}
}
} catch (const std::exception &e) {
d.Error() << mix_cc::get_nested_exception(e) << std::endl;
ret = -1;
}
return ret;
}