Browse Source

update

storage-in-realtime
zhaohe 2 years ago
parent
commit
20d8d3e0ca
  1. 7
      README.md
  2. 326
      src/db/db_service.cpp
  3. 94
      src/db/db_service.hpp
  4. 48
      src/db/user_behavior_des.cpp
  5. 38
      src/db/user_behavior_des.hpp
  6. 94
      src/main_control_service.cpp

7
README.md

@ -12,6 +12,8 @@
2. iflytop9973属于admin的超级密码 2. iflytop9973属于admin的超级密码
3. 修改用户密码 OK 3. 修改用户密码 OK
4. 登陆时给出提示,用户不存在,或者密码错误 4. 登陆时给出提示,用户不存在,或者密码错误
消毒前,如果湿度太大,不允许消毒。
添加预设参数 添加预设参数
添加预设参数配置 添加预设参数配置
@ -23,6 +25,11 @@
通过getState可以获得到log,小数 通过getState可以获得到log,小数
排液自动停止
水禁传感器测试
``` ```
# 测试指令 # 测试指令

326
src/db/db_service.cpp

@ -2,9 +2,9 @@
// //
#include <stdio.h> #include <stdio.h>
#include <time.h>
#include "db_service.hpp" #include "db_service.hpp"
// //
#include "iflytop/components/sqlite_orm/sqlite_orm.hpp" #include "iflytop/components/sqlite_orm/sqlite_orm.hpp"
@ -37,48 +37,25 @@ using namespace nlohmann;
make_column("permission_level", &Setting::permission_level), /**/ \ make_column("permission_level", &Setting::permission_level), /**/ \
make_column("val", &Setting::val)) make_column("val", &Setting::val))
// #define SETTING_DB_STRUCT \
// make_table("settings", /**/ \
// make_column("id", &PreSetting::id, primary_key()), /**/ \
// make_column("name", &PreSetting::group_id), /**/ \
// make_column("name", &PreSetting::name), /**/ \
// make_column("name_ch", &PreSetting::name_ch), /**/ \
// make_column("val_lower_limit", &PreSetting::val_lower_limit), /**/ \
// make_column("val_upper_limit", &PreSetting::val_upper_limit), /**/ \
// make_column("permission_level", &PreSetting::permission_level), /**/ \
// make_column("val", &PreSetting::val))
// // PreSetting
#define DISINFECTION_RECORD_DB_STRUCT \
DISINFECTION_RECORD_DB, \
make_table("disinfection_records", /**/ \
make_column("id", &DisinfectionRecord::id, primary_key().autoincrement()), /**/ \
make_column("uuid", &DisinfectionRecord::uuid), /**/ \
make_column("uid", &DisinfectionRecord::uid), /**/ \
make_column("date", &DisinfectionRecord::date), /**/ \
make_column("loglevel", &DisinfectionRecord::loglevel), /**/ \
make_column("duration", &DisinfectionRecord::duration)), /**/ \
make_table("sensor_records", /**/ \
make_column("id", &SensorRecord::id, primary_key().autoincrement()), /**/ \
make_column("disinfection_id", &SensorRecord::disinfection_id), /**/ \
make_column("date", &SensorRecord::date), /**/ \
make_column("heating_strip", &SensorRecord::heating_strip), /**/ \
make_column("air_compressor", &SensorRecord::air_compressor), /**/ \
make_column("sprinkler_pump", &SensorRecord::sprinkler_pump), /**/ \
make_column("disinfectant_volume", &SensorRecord::disinfectant_volume), /**/ \
make_column("h2o2_1", &SensorRecord::h2o2_1), /**/ \
make_column("temp_1", &SensorRecord::temp_1), /**/ \
make_column("humid_1", &SensorRecord::humid_1), /**/ \
make_column("saturation_1", &SensorRecord::saturation_1), /**/ \
make_column("h2o2_2", &SensorRecord::h2o2_2), /**/ \
make_column("temp_2", &SensorRecord::temp_2), /**/ \
make_column("humid_2", &SensorRecord::humid_2), /**/ \
make_column("saturation_2", &SensorRecord::saturation_2), /**/ \
make_column("h2o2_3", &SensorRecord::h2o2_3), /**/ \
make_column("temp_3", &SensorRecord::temp_3), /**/ \
make_column("humid_3", &SensorRecord::humid_3), /**/ \
make_column("saturation_3", &SensorRecord::saturation_3))
#define FORMULA_DB_STRUCT \
make_table("formulas", /**/ \
make_column("id", &Formula::id, primary_key()), /**/ \
make_column("formula_id", &Formula::formula_id), /**/ \
make_column("stoped_gs", &Formula::stoped_gs), /**/ \
make_column("continued_gs", &Formula::continued_gs), /**/ \
make_column("stoped_satur", &Formula::stoped_satur), /**/ \
make_column("continued_satur", &Formula::continued_satur), /**/ \
make_column("stoped_humi", &Formula::stoped_humi), /**/ \
make_column("continued_humi", &Formula::continued_humi), /**/ \
make_column("injection_pump_speed", &Formula::injection_pump_speed))
#define USER_BEHAVIOR_RECORD_STRUCT \
make_table("user_behavior_records", /**/ \
make_column("id", &UserBehaviorRecord::id, primary_key().autoincrement()), /**/ \
make_column("uid", &UserBehaviorRecord::uid), /**/ \
make_column("date", &UserBehaviorRecord::date), /**/ \
make_column("behavior", &UserBehaviorRecord::behavior), /**/ \
make_column("behaviorinfo", &UserBehaviorRecord::behaviorinfo))
DBService::DBService(/* args */) {} DBService::DBService(/* args */) {}
@ -90,7 +67,6 @@ void DBService::initialize() {
// //
init_usr_db(); init_usr_db();
init_setting_db(); init_setting_db();
init_disinfection_record_db();
json settings = getAllSettingJson(); json settings = getAllSettingJson();
logger->info("settings: {}", settings.dump()); logger->info("settings: {}", settings.dump());
@ -177,17 +153,19 @@ id setting_name setting_name_ch val_upper_limit val_lower_limi
} while (!suc); } while (!suc);
} }
void DBService::init_disinfection_record_db() {
void DBService::init_formula_db() {
bool suc = false; bool suc = false;
do { do {
try { try {
logger->info("init disinfection record db");
auto storage = make_storage(DISINFECTION_RECORD_DB_STRUCT);
logger->info("init formula db");
auto storage = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
storage.sync_schema(); storage.sync_schema();
suc = true; suc = true;
} catch (const std::exception& e) { } catch (const std::exception& e) {
logger->error("init disinfection record db failed: {}", e.what());
system("rm -rf disinfection_record.db");
logger->error("init setting db failed: {}", e.what());
system("rm -rf setting.db");
sleep(1); sleep(1);
} }
} while (!suc); } while (!suc);
@ -380,83 +358,191 @@ int DBService::getSettingVal(string name) {
return setting[0].val; return setting[0].val;
} }
json DBService::getAllRecords(string disinfection_id) {
json j_records;
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT);
// int id;
// string disinfection_id;
// string date;
// int heating_strip;
// int air_compressor;
// int sprinkler_pump;
// int disinfectant_volume;
// int h2o2_1;
// int temp_1;
// int humid_1;
// int saturation_1;
// int h2o2_2;
// int temp_2;
// int humid_2;
// int saturation_2;
// int h2o2_3;
// int temp_3;
// int humid_3;
// int saturation_3;
recordtable.sync_schema();
auto all = recordtable.get_all<SensorRecord>(where(c(&SensorRecord::disinfection_id) == disinfection_id));
for (auto& r : all) {
json j_record;
j_record["id"] = r.id;
j_record["disinfection_id"] = r.disinfection_id;
j_record["date"] = r.date;
j_record["heating_strip"] = r.heating_strip;
j_record["air_compressor"] = r.air_compressor;
j_record["sprinkler_pump"] = r.sprinkler_pump;
j_record["disinfectant_volume"] = r.disinfectant_volume;
j_record["h2o2_1"] = r.h2o2_1;
j_record["temp_1"] = r.temp_1;
j_record["humid_1"] = r.humid_1;
j_record["saturation_1"] = r.saturation_1;
j_record["h2o2_2"] = r.h2o2_2;
j_record["temp_2"] = r.temp_2;
j_record["humid_2"] = r.humid_2;
j_record["saturation_2"] = r.saturation_2;
j_record["h2o2_3"] = r.h2o2_3;
j_record["temp_3"] = r.temp_3;
j_record["humid_3"] = r.humid_3;
j_record["saturation_3"] = r.saturation_3;
j_records.push_back(j_record);
list<shared_ptr<db::Formula>> DBService::getAllFormula() {
list<shared_ptr<db::Formula>> formulas;
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
auto all = formulatable.get_all<Formula>();
for (auto& f : all) {
formulas.push_back(make_shared<Formula>(f));
} }
return j_records;
return formulas;
} }
void DBService::insertSensorRecord(shared_ptr<db::SensorRecord> record) {
if (!record) {
logger->error("insert sensor record failed: record is null");
return;
shared_ptr<db::Formula> DBService::getFormula(int id) {
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id));
if (formula.size() == 0) {
return nullptr;
} }
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT);
recordtable.sync_schema();
recordtable.insert(*record);
return make_shared<Formula>(formula[0]);
} }
void DBService::insertDisinfectionRecord(shared_ptr<db::DisinfectionRecord> record) {
if (!record) {
logger->error("insert disinfection record failed: record is null");
return;
json DBService::getAllFormulaJson() {
json j_formulas;
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
auto all = formulatable.get_all<Formula>();
for (auto& f : all) {
json j_formula;
j_formula["id"] = f.id;
j_formula["formula_id"] = f.formula_id;
j_formula["stoped_gs"] = f.stoped_gs;
j_formula["continued_gs"] = f.continued_gs;
j_formula["stoped_satur"] = f.stoped_satur;
j_formula["continued_satur"] = f.continued_satur;
j_formula["stoped_humi"] = f.stoped_humi;
j_formula["continued_humi"] = f.continued_humi;
j_formula["injection_pump_speed"] = f.injection_pump_speed;
j_formulas.push_back(j_formula);
} }
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT);
recordtable.sync_schema();
recordtable.insert(*record);
return j_formulas;
}
void DBService::addFormula(string formula_id, string stoped_gs, string continued_gs, string stoped_satur, string continued_satur, string stoped_humi,
string continued_humi, string injection_pump_speed) {
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
Formula f;
f.formula_id = formula_id;
f.stoped_gs = stoped_gs;
f.continued_gs = continued_gs;
f.stoped_satur = stoped_satur;
f.continued_satur = continued_satur;
f.stoped_humi = stoped_humi;
f.continued_humi = continued_humi;
f.injection_pump_speed = injection_pump_speed;
formulatable.insert(f);
formulatable.sync_schema();
} }
void DBService::setDisinfectionRecordDuration(string disinfection_id, int duration) {
auto recordtable = make_storage(DISINFECTION_RECORD_DB_STRUCT);
recordtable.sync_schema();
auto record = recordtable.get_all<DisinfectionRecord>(where(c(&DisinfectionRecord::uuid) == disinfection_id));
if (record.size() == 0) {
logger->error("set disinfection record duration failed: {} not found", disinfection_id);
void DBService::addFormula(string formula_id, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi,
int injection_pump_speed) {
addFormula(formula_id, to_string(stoped_gs), to_string(continued_gs), to_string(stoped_satur), to_string(continued_satur), to_string(stoped_humi),
to_string(continued_humi), to_string(injection_pump_speed));
}
void DBService::delFormula(int id) {
// remove_all
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
formulatable.remove_all<Formula>(where(c(&Formula::id) == id));
formulatable.sync_schema();
}
void DBService::updateFormula(int id, string column, string val) {
auto formulatable = make_storage(FORMULA_DB, FORMULA_DB_STRUCT);
formulatable.sync_schema();
auto formula = formulatable.get_all<Formula>(where(c(&Formula::id) == id));
if (formula.size() == 0) {
return; return;
} }
record[0].duration = duration;
recordtable.update(record[0]);
if (column == "formula_id") {
formula[0].formula_id = val;
} else if (column == "stoped_gs") {
formula[0].stoped_gs = val;
} else if (column == "continued_gs") {
formula[0].continued_gs = val;
} else if (column == "stoped_satur") {
formula[0].stoped_satur = val;
} else if (column == "continued_satur") {
formula[0].continued_satur = val;
} else if (column == "stoped_humi") {
formula[0].stoped_humi = val;
} else if (column == "continued_humi") {
formula[0].continued_humi = val;
} else if (column == "injection_pump_speed") {
formula[0].injection_pump_speed = val;
}
formulatable.update(formula[0]);
formulatable.sync_schema();
}
int DBService::getUserBehaviorRecordCount() {
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
return user_behavior_record_table.count<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0));
}
int DBService::getUserBehaviorRecordTheFirstId() {
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
if (all.size() == 0) {
return -1;
}
return all[0].id;
}
json DBService::getUserBehaviorRecordDescJson(int page, int page_size) {
json j_user_behavior_records;
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).desc());
int i = 0;
int from = page * page_size;
int to = (page + 1) * page_size;
for (auto& u : all) {
if (i >= from && i < to) {
json j_user_behavior_record;
j_user_behavior_record["id"] = u.id;
j_user_behavior_record["uid"] = u.uid;
j_user_behavior_record["behavior"] = u.behavior;
j_user_behavior_record["behaviorZH"] = user_behavior_to_str((user_behavior_t)u.behavior);
j_user_behavior_record["behaviorinfo"] = u.behaviorinfo;
j_user_behavior_record["date"] = u.date;
j_user_behavior_records["iterms"].push_back(j_user_behavior_record);
} else if (i >= to) {
break;
}
i++;
}
j_user_behavior_records["total"] = all.size();
j_user_behavior_records["page"] = page;
j_user_behavior_records["totalpage"] = all.size() / page_size + all.size() % page_size == 0 ? 0 : 1;
return j_user_behavior_records;
}
static string getTime() {
struct tm tm = {0};
time_t t = ::time(nullptr);
struct tm* tmp = localtime_r(&t, &tm);
return fmt::format("{:0>4}-{:0>2}{:0>2}-{:0>2}:{:0>2}:{:0>2}", tm.tm_year + 1900, //
tm.tm_mon + 1, //
tm.tm_mday, //
tm.tm_hour, //
tm.tm_min, tm.tm_sec);
}
void DBService::addUserBehaviorRecord(string uid, int behavior, string behaviorinfo) {
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
UserBehaviorRecord u;
u.uid = uid;
u.behavior = behavior;
u.behaviorinfo = behaviorinfo;
u.date = getTime();
user_behavior_record_table.insert(u);
user_behavior_record_table.sync_schema();
auto all = user_behavior_record_table.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
/**
* @brief 5000
*/
if (all.size() > USER_BEHAVIOR_RECORD_DB_MAX_RECORDS) {
user_behavior_record_table.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) == all[0].id));
user_behavior_record_table.sync_schema();
}
return;
}
void DBService::cleanUserBehaviorRecord() {
auto user_behavior_record_table = make_storage(USER_BEHAVIOR_RECORD_DB, USER_BEHAVIOR_RECORD_STRUCT);
user_behavior_record_table.sync_schema();
user_behavior_record_table.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0));
user_behavior_record_table.sync_schema();
} }

94
src/db/db_service.hpp

@ -16,10 +16,15 @@
#include "iflytop/core/spdlogfactory/logger.hpp" #include "iflytop/core/spdlogfactory/logger.hpp"
#include "iflytop/core/thread/thread.hpp" #include "iflytop/core/thread/thread.hpp"
#include "user_behavior_des.hpp"
#define USER_DB "user.db"
#define SETTING_DB "setting.db"
#define DISINFECTION_RECORD_DB "disinfection_record.db"
#define USER_DB "user.db"
#define SETTING_DB "setting.db"
#define DISINFECTION_RECORD_DB "disinfection_record.db"
#define FORMULA_DB "formula.db"
#define USER_BEHAVIOR_RECORD_DB "user_behavior_record.db"
#define USER_BEHAVIOR_RECORD_DB_MAX_RECORDS 5000
/** /**
* @brief * @brief
* *
@ -70,51 +75,29 @@ struct Setting {
int val; int val;
}; };
struct PreSetting {
public:
int id;
int group_id;
int stoped_gs;
int continued_gs;
int stoped_satur;
int continued_satur;
int stoped_humi;
int continued_humi;
int injection_pump_speed;
};
struct DisinfectionRecord {
struct Formula {
public: public:
int id; int id;
string uuid;
string uid;
string date;
string formula_id;
string stoped_gs;
string loglevel; string loglevel;
int duration;
string continued_gs;
string stoped_satur;
string continued_satur;
string stoped_humi;
string continued_humi;
string injection_pump_speed;
}; };
struct SensorRecord {
public:
struct UserBehaviorRecord {
int id; int id;
string disinfection_id;
string uid;
string date; string date;
int heating_strip;
int air_compressor;
int sprinkler_pump;
int disinfectant_volume;
int h2o2_1;
int temp_1;
int humid_1;
int saturation_1;
int h2o2_2;
int temp_2;
int humid_2;
int saturation_2;
int h2o2_3;
int temp_3;
int humid_3;
int saturation_3;
int behavior;
string behaviorinfo;
}; };
} // namespace db } // namespace db
using namespace db; using namespace db;
class DBService : public enable_shared_from_this<DBService> { class DBService : public enable_shared_from_this<DBService> {
@ -159,18 +142,37 @@ class DBService : public enable_shared_from_this<DBService> {
public: public:
/******************************************************************************* /*******************************************************************************
* SensorRecord_operation *
* Formula *
*******************************************************************************/
list<shared_ptr<db::Formula>> getAllFormula();
json getAllFormulaJson();
void addFormula(string formula_id, string stoped_gs, string continued_gs, string stoped_satur, string continued_satur, string stoped_humi,
string continued_humi, string injection_pump_speed);
void addFormula(string formula_id, int stoped_gs, int continued_gs, int stoped_satur, int continued_satur, int stoped_humi, int continued_humi,
int injection_pump_speed);
void delFormula(int id);
void updateFormula(int id, string column, string val);
shared_ptr<db::Formula> getFormula(int id);
/*******************************************************************************
* UserBehaviorRecord *
*******************************************************************************/ *******************************************************************************/
json getAllRecords(string disinfection_id);
void insertSensorRecord(shared_ptr<db::SensorRecord> record);
void insertDisinfectionRecord(shared_ptr<db::DisinfectionRecord> record);
void setDisinfectionRecordDuration(string disinfection_id, int duration);
list<shared_ptr<db::UserBehaviorRecord>> getAllUserBehaviorRecord();
int getUserBehaviorRecordCount();
int getUserBehaviorRecordTheFirstId();
json getUserBehaviorRecordDescJson(int page, int page_size);
void addUserBehaviorRecord(string uid, int behavior, string behaviorinfo);
void cleanUserBehaviorRecord();
private: private:
void init_usr_db(); void init_usr_db();
void init_setting_db(); void init_setting_db();
void init_disinfection_record_db();
void init_formula_db();
}; };
}; // namespace iflytop }; // namespace iflytop

48
src/db/user_behavior_des.cpp

@ -0,0 +1,48 @@
#include "user_behavior_des.hpp"
using namespace iflytop;
using namespace iflytop::db;
namespace iflytop {
namespace db {
string user_behavior_to_str(user_behavior_t behavior) {
switch (behavior) {
case kbehavior_login:
return "登陆";
case kbehavior_logout:
return "登出";
case kbehavior_add_user:
return "添加用户";
case kbehavior_del_user:
return "删除用户";
case kbehavior_update_user_permission_level:
return "更新用户权限";
case kbehavior_update_user_passwd:
return "更新用户密码";
case kbehavior_set_setting_val:
return "设置参数";
case kbehavior_add_formula:
return "添加配方";
case kbehavior_del_formula:
return "删除配方";
case kbehavior_update_formula:
return "更新配方";
case kbehavior_do_disinfection:
return "开始消毒";
case kbehavior_stop_disinfection:
return "停止消毒";
case kbehavior_do_formula:
return "执行配方";
case kbehavior_update_setting_val_on_disinfection:
return "消毒中更新参数";
case kbehavior_export_data:
return "导出数据";
default:
break;
}
return "未知行为";
}
} // namespace db
} // namespace iflytop

38
src/db/user_behavior_des.hpp

@ -0,0 +1,38 @@
#pragma once
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
namespace iflytop {
using namespace std;
namespace db {
typedef enum {
kbehavior_login = 0,
kbehavior_logout,
kbehavior_add_user,
kbehavior_del_user,
kbehavior_update_user_permission_level,
kbehavior_update_user_passwd,
kbehavior_set_setting_val,
kbehavior_add_formula,
kbehavior_del_formula,
kbehavior_update_formula,
kbehavior_do_disinfection,
kbehavior_stop_disinfection,
kbehavior_do_formula,
kbehavior_update_setting_val_on_disinfection,
kbehavior_export_data,
} user_behavior_t;
string user_behavior_to_str(user_behavior_t behavior);
} // namespace db
} // namespace iflytop

94
src/main_control_service.cpp

@ -324,15 +324,23 @@ void MainControlService::processFrontEndMessage_Disinfection(weak_ptr<WebSocket>
* * * *
*******************************************************************************/ *******************************************************************************/
string cmdstr = cmd["command"]; string cmdstr = cmd["command"];
if (cmdstr == "startDisinfection2") {
m_disinfectionCtrlService->startDisinfection(jsonGet<int>(cmd["loglevel"]),
jsonGet<int>(cmd["injection_pump_speed"]), //
jsonGet<int>(cmd["stoped_gs"]), //
jsonGet<int>(cmd["continued_gs"]),
jsonGet<int>(cmd["stoped_satur"]), //
jsonGet<int>(cmd["continued_satur"]), //
jsonGet<int>(cmd["stoped_humi"]),
jsonGet<int>(cmd["continued_humi"])); //
if (cmdstr == "startFormula") {
int id = jsonGet<int>(cmd["id"]);
auto formul = m_dbService->getFormula(id);
if (!formul) {
logger->error("formula id {} not exist", id);
receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kdb_operate_error);
receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kdb_operate_error, "");
return;
}
m_disinfectionCtrlService->startDisinfection(atoi(formul->loglevel.c_str()), //
atoi(formul->injection_pump_speed.c_str()), //
atoi(formul->stoped_gs.c_str()), //
atoi(formul->continued_gs.c_str()), //
atoi(formul->stoped_satur.c_str()), //
atoi(formul->continued_satur.c_str()), //
atoi(formul->stoped_humi.c_str()), //
atoi(formul->continued_humi.c_str())); //
return; return;
} }
if (cmdstr == "startDisinfection") { if (cmdstr == "startDisinfection") {
@ -510,6 +518,74 @@ void MainControlService::processFrontEndMessage(weak_ptr<WebSocket> webSocket, j
receipt["disinfectionConfig"]["continued_humi"] = m_disinfectionCtrlService->m_context.continued_humi; receipt["disinfectionConfig"]["continued_humi"] = m_disinfectionCtrlService->m_context.continued_humi;
return; return;
} }
/**
* @brief
*/
if (cmdstr == "getAllFormula") {
receipt["formula"] = m_dbService->getAllFormulaJson();
return;
}
if (cmdstr == "addFormula") {
m_dbService->addFormula(cmd["formula_id"], //
jsonGet<int>(cmd["stoped_gs"]), //
jsonGet<int>(cmd["continued_gs"]), //
jsonGet<int>(cmd["stoped_satur"]), //
jsonGet<int>(cmd["continued_satur"]), //
jsonGet<int>(cmd["stoped_humi"]), //
jsonGet<int>(cmd["continued_humi"]), //
jsonGet<int>(cmd["injection_pump_speed"]));
return;
}
if (cmdstr == "delFormula") {
m_dbService->delFormula(jsonGet<int>(cmd["id"]));
return;
}
if (cmdstr == "updateFormula") {
string val_str;
if (cmd["val"].is_string()) {
val_str = cmd["val"];
} else {
val_str = std::to_string(cmd["val"].get<int>());
}
m_dbService->updateFormula(jsonGet<int>(cmd["id"]), cmd["column"], val_str);
return;
}
if (cmdstr == "getUserBehaviorRecordDescJson") {
receipt["records"] = m_dbService->getUserBehaviorRecordDescJson(jsonGet<int>(cmd["page"]), jsonGet<int>(cmd["page_size"]));
return;
}
if (cmdstr == "cleanUserBehaviorRecord") {
m_dbService->cleanUserBehaviorRecord();
return;
}
// 导入用户行为测试数据
if (cmdstr == "importTestData") {
for (size_t i = 0; i < 100; i++) {
m_dbService->addUserBehaviorRecord("admin", kbehavior_login, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_logout, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_add_user, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_del_user, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_permission_level, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_user_passwd, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_set_setting_val, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_add_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_del_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_do_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_stop_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_do_formula, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_update_setting_val_on_disinfection, "(....)");
m_dbService->addUserBehaviorRecord("admin", kbehavior_export_data, "(....)");
}
return;
}
} }
HttpResponsePtr MainControlService::hello_world( // HttpResponsePtr MainControlService::hello_world( //

Loading…
Cancel
Save