Browse Source

v2.1.4

master
zhaohe 8 months ago
parent
commit
c65cbaadfe
  1. 2
      README.md
  2. 5
      appdep/iflytop/core/components/zenum_template/zenum_template.hpp
  3. 36
      appsrc/appbase/appbean/setting_id.hpp
  4. 2
      appsrc/appconfig/basic/project_constant.hpp
  5. 2
      appsrc/appconfig/basic/zappversion.hpp
  6. 106
      appsrc/baseservice/db/bean/user_behavior_des.cpp
  7. 48
      appsrc/baseservice/db/bean/user_behavior_des.hpp
  8. 39
      appsrc/baseservice/db/user_behavior_record_dao.cpp
  9. 7
      appsrc/baseservice/db/user_behavior_record_dao.hpp
  10. 14
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp
  11. 15
      appsrc/service/app/disinfection_ctrl_service_ext.cpp
  12. 17
      appsrc/service/app_core.cpp
  13. 21
      appsrc/service/audit_mgr_service.cpp
  14. 2
      appsrc/service/calibration/h2o2_liquid_weight_sensor_calibration_service.cpp
  15. 7
      appsrc/service/setting_mgr_service.cpp
  16. 11
      appsrc/service/user_mgr_service.cpp

2
README.md

@ -133,6 +133,8 @@ VERSION 2.1.2
1. 增加 排空管路时间可配
2. 增i加 排液条件判定设置(即少于多少算排液完成)
3. 增加 手动设置H2O2称重偏移。
VERSION 2.1.3
1.修复去皮功能的BUG
TODO:
1. 设备使用时间维护(UI接口已经准备好,考虑是否使用文件袋放在设备中的方案)

5
appdep/iflytop/core/components/zenum_template/zenum_template.hpp

@ -42,11 +42,14 @@
public: \
typedef enum { elist(name, ZENUM_IMPL1) kunkown } enum_val_t; \
enum_val_t id; \
elist(name, ZENUM_IMPL2) public : name() {} \
elist(name, ZENUM_IMPL2) public : name() {} \
name(enum_val_t id) : id(id) {} \
name(int id) : id((enum_val_t)id) {} \
name(string str) : id(toEnum(str)) {} \
enum_val_t getId() const { return id; } \
bool eq(string val) { return (toString(id) == val); } \
bool eq(enum_val_t id) { return (this->id == id); } \
bool eq(int id) { return (this->id == id); } \
static string toString(enum_val_t enu) { \
switch (enu) { elist(name, ZENUM_TO_STR_IMPL) default : return "unknown"; } \
} \

36
appsrc/appbase/appbean/setting_id.hpp

@ -2,26 +2,28 @@
#include "iflytop/core/components/zenum_template/zenum_template.hpp"
#define SettingId_ZENUM_IMPL ZENUM_IMPL(SettingId, SettingId_LIST)
#define SettingId_LIST(type, marco) /**/ \
marco(type, stoped_gs) /**/ \
marco(type, continued_gs) /**/ \
marco(type, stoped_satur) /**/ \
marco(type, continued_satur) /**/ \
marco(type, max_humidity) /**/ \
marco(type, drainage_pump_speed) /**/ \
marco(type, injection_pump_speed) /**/ \
marco(type, pre_heat_time_s) /**/ \
marco(type, stoped_humi) /**/ \
marco(type, continued_humi) /**/ \
marco(type, proportional_valve_default_value) /**/ \
marco(type, record_period_min) /**/ \
marco(type, record_printer_period_min) /**/ \
marco(type, loglevel) /*消毒等级*/ \
#define SettingId_LIST(type, marco) /**/ \
marco(type, stoped_gs) /**/ \
marco(type, continued_gs) /**/ \
marco(type, stoped_satur) /**/ \
marco(type, continued_satur) /**/ \
marco(type, max_humidity) /**/ \
marco(type, drainage_pump_speed) /**/ \
marco(type, injection_pump_speed) /**/ \
marco(type, pre_heat_time_s) /**/ \
marco(type, stoped_humi) /**/ \
marco(type, continued_humi) /**/ \
marco(type, proportional_valve_default_value) /**/ \
marco(type, record_period_min) /**/ \
marco(type, record_printer_period_min) /**/ \
marco(type, loglevel) /*消毒等级*/ \
marco(type, enable_bd_dehumidify) /*是否启用BD除湿*/ \
marco(type, bd_dehumidify_threshold) /*BD除湿阈值*/ \
marco(type, bd_dehumidify_threshold) /*BD除湿阈值*/ \
marco(type, enable_ad_dehumidify) /*是否启用AD除湿*/ \
marco(type, ad_dehumidify_threshold) /*AD除湿阈值*/ \
marco(type, ad_dehumidify_threshold) /*AD除湿阈值*/ \
marco(type, enable_ad_degrade) /*是否启用AD降解*/ \
marco(type, ad_degrade_threshold) /*AD降解阈值*/
ZENUM_DECLAR(SettingId, SettingId_LIST);

2
appsrc/appconfig/basic/project_constant.hpp

@ -11,7 +11,7 @@
#define EMTPTY_LINE_WHEN_DISINFECTION 60
#define MAX_DISINFECTIONLOGGER_FILE_NUM 10 // 最大日志文件数量
#define USER_BEHAVIOR_RECORD_DB_MAX_RECORDS 3000 //
#define USER_BEHAVIOR_RECORD_DB_MAX_RECORDS 8000 //
#define SENSOR_PREHEART_TIME_S (5 * 60) // 传感器预热时间
#define MAX_SUPPORT_SENSOR 3

2
appsrc/appconfig/basic/zappversion.hpp

@ -1,3 +1,3 @@
#pragma once
#define VERSION "2.1.2"
#define VERSION "2.1.4"
#define PROJECT_NAME "TRANSMIT_DM"

106
appsrc/baseservice/db/bean/user_behavior_des.cpp

@ -1,58 +1,58 @@
#include "user_behavior_des.hpp"
using namespace iflytop;
using namespace iflytop::db;
// using namespace iflytop;
// using namespace iflytop::db;
namespace iflytop {
namespace 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_update_user_uid:
return "更新用户ID";
case kbehavior_set_setting_val:
return "设置参数";
case kbehavior_add_formula:
return "添加配方";
case kbehavior_del_formula:
return "删除配方";
case kbehavior_update_formula:
return "更新配方";
case kbehavior_update_formula_name:
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_disinfection_data:
return "导出消毒数据";
case kbehavior_export_user_action_data:
return "导出用户操作数据";
case kbehavior_warning_prompt:
return "警告信息";
case kbehavior_warning_prompt_confirm:
return "警告信息确认";
default:
break;
}
return "未知行为";
}
// 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_update_user_uid:
// return "更新用户ID";
// case kbehavior_set_setting_val:
// return "设置参数";
// case kbehavior_add_formula:
// return "添加配方";
// case kbehavior_del_formula:
// return "删除配方";
// case kbehavior_update_formula:
// return "更新配方";
// case kbehavior_update_formula_name:
// 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_disinfection_data:
// return "导出消毒数据";
// case kbehavior_export_user_action_data:
// return "导出用户操作数据";
// case kbehavior_warning_prompt:
// return "警告信息";
// case kbehavior_warning_prompt_confirm:
// return "警告信息确认";
// default:
// break;
// }
// return "未知行为";
// }
} // namespace db
} // namespace iflytop
// } // namespace db
// } // namespace iflytop

48
appsrc/baseservice/db/bean/user_behavior_des.hpp

@ -13,30 +13,32 @@ namespace iflytop {
using namespace std;
namespace db {
typedef enum {
kbehavior_login = 0,
kbehavior_logout = 1,
kbehavior_add_user = 2,
kbehavior_del_user = 3,
kbehavior_update_user_uid = 5,
kbehavior_update_user_permission_level = 6,
kbehavior_update_user_passwd = 7,
kbehavior_set_setting_val = 8,
kbehavior_add_formula = 9,
kbehavior_del_formula = 10,
kbehavior_update_formula = 11,
kbehavior_do_disinfection = 12,
kbehavior_stop_disinfection = 13,
kbehavior_do_formula = 14,
kbehavior_update_setting_val_on_disinfection = 15,
kbehavior_export_disinfection_data = 16,
kbehavior_export_user_action_data = 17,
kbehavior_update_formula_name = 18,
kbehavior_warning_prompt = 19,
kbehavior_warning_prompt_confirm = 20,
} user_behavior_t;
// typedef enum {
// kbehavior_login = 0,
// kbehavior_logout = 1,
// kbehavior_add_user = 2,
// kbehavior_del_user = 3,
// kbehavior_update_user_uid = 5,
// kbehavior_update_user_permission_level = 6,
// kbehavior_update_user_passwd = 7,
// kbehavior_set_setting_val = 8,
// kbehavior_add_formula = 9,
// kbehavior_del_formula = 10,
// kbehavior_update_formula = 11,
// kbehavior_do_disinfection = 12,
// kbehavior_stop_disinfection = 13,
// kbehavior_do_formula = 14,
// kbehavior_update_setting_val_on_disinfection = 15,
// kbehavior_export_disinfection_data = 16,
// kbehavior_export_user_action_data = 17,
// kbehavior_update_formula_name = 18,
// kbehavior_warning_prompt = 19,
// kbehavior_warning_prompt_confirm = 20,
// kbehavior_add_liquid = 21,
// kbehavior_drain_liquid = 22,
// } user_behavior_t;
string user_behavior_to_str(user_behavior_t behavior);
// string user_behavior_to_str(user_behavior_t behavior);
} // namespace db

39
appsrc/baseservice/db/user_behavior_record_dao.cpp

@ -50,15 +50,15 @@ int UserBehaviorRecordDao::getUserBehaviorRecordCount() {
return storage.count<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) > 0));
}
int UserBehaviorRecordDao::getUserBehaviorRecordTheFirstId() {
lock_guard<recursive_mutex> lock(lock_);
// int UserBehaviorRecordDao::getUserBehaviorRecordTheFirstId() {
// lock_guard<recursive_mutex> lock(lock_);
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
if (all.size() == 0) {
return -1;
}
return all[0].id;
}
// auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
// if (all.size() == 0) {
// return -1;
// }
// return all[0].id;
// }
list<shared_ptr<db::UserBehaviorRecord>> UserBehaviorRecordDao::getAllUserBehaviorRecord() {
lock_guard<recursive_mutex> lock(lock_);
@ -87,10 +87,10 @@ json UserBehaviorRecordDao::getUserBehaviorRecordDescJson(int page, int page_siz
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["usrName"] = u.usrName;
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["id"] = u.id;
j_user_behavior_record["usrName"] = u.usrName;
// j_user_behavior_record["behavior"] = u.behavior;
j_user_behavior_record["behaviorZH"] = u.behaviorinfo;
j_user_behavior_record["behaviorinfo"] = u.behaviorinfo;
j_user_behavior_record["date"] = u.date;
j_user_behavior_records["items"].push_back(j_user_behavior_record);
@ -118,26 +118,31 @@ static string getTime() {
tm.tm_min, tm.tm_sec);
}
void UserBehaviorRecordDao::addUserBehaviorRecord(string name, int behavior, string behaviorinfo) {
int UserBehaviorRecordDao::addUserBehaviorRecord(string name, string behaviorinfo, string extinfo) {
lock_guard<recursive_mutex> lock(lock_);
UserBehaviorRecord u;
u.usrName = name;
u.behavior = behavior;
u.behaviorinfo = behaviorinfo;
u.extinfo = extinfo;
u.behavior = 0;
u.date = getTime();
storage.insert(u);
// auto size = storage.count<UserBehaviorRecord>();
auto all = storage.get_all<UserBehaviorRecord>(order_by(&UserBehaviorRecord::id).asc());
/**
* @brief 5000
*/
logger->info("all.size()={}", all.size());
if (all.size() > USER_BEHAVIOR_RECORD_DB_MAX_RECORDS) {
storage.remove_all<UserBehaviorRecord>(where(c(&UserBehaviorRecord::id) == all[0].id));
storage.remove<UserBehaviorRecord>(all[0].id);
}
return;
return all.size();
}
void UserBehaviorRecordDao::cleanUserBehaviorRecord() {
lock_guard<recursive_mutex> lock(lock_);
system(fmt::format("rm -rf {}", USER_BEHAVIOR_RECORD_DB).c_str());
// system(fmt::format("rm -rf {}", USER_BEHAVIOR_RECORD_DB).c_str());
}

7
appsrc/baseservice/db/user_behavior_record_dao.hpp

@ -36,6 +36,7 @@ struct UserBehaviorRecord {
string date;
int behavior;
string behaviorinfo;
string extinfo;
};
#define USER_BEHAVIOR_RECORD_TABLE \
@ -81,10 +82,10 @@ class UserBehaviorRecordDao : public enable_shared_from_this<UserBehaviorRecordD
list<shared_ptr<db::UserBehaviorRecord>> getAllUserBehaviorRecord();
int getUserBehaviorRecordCount();
int getUserBehaviorRecordTheFirstId();
// int getUserBehaviorRecordTheFirstId();
json getUserBehaviorRecordDescJson(int page, int page_size);
void addUserBehaviorRecord(string name, int behavior, string behaviorinfo);
int addUserBehaviorRecord(string name, string behaviorinfo, string extinfo);
void cleanUserBehaviorRecord();
private:
@ -93,4 +94,4 @@ class UserBehaviorRecordDao : public enable_shared_from_this<UserBehaviorRecordD
}; // namespace iflytop
#define ADD_USER_BEHAVIOR(name, behavior, behaviorinfo) UserBehaviorRecordDao::ins()->addUserBehaviorRecord(name, behavior, behaviorinfo)
#define ADD_USER_BEHAVIOR(name, behaviorinfo) UserBehaviorRecordDao::ins()->addUserBehaviorRecord(name, behaviorinfo,"")

14
appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp

@ -139,6 +139,8 @@ void DisinfectionCtrlService::initialize() {
*******************************************************************************/
void DisinfectionCtrlService::start(int loglevel) {
stop();
logger->info("start loglevel:{}", loglevel);
checkBeforeStart();
m_tlog = loglevel;
@ -159,6 +161,8 @@ void DisinfectionCtrlService::start(int loglevel) {
startWorkThread();
}
json DisinfectionCtrlService::startWithFormula(string formulaid) {
stop();
logger->info("startWithFormula formulaid:{}", formulaid);
checkBeforeStart();
m_formulaid = formulaid;
@ -241,8 +245,8 @@ void DisinfectionCtrlService::startWorkThread() {
}
void DisinfectionCtrlService::stop() {
if (sm.getState() == DisinfectionState::finished) return;
if (sm.getState() == DisinfectionState::idle) return;
// if (sm.getState() == DisinfectionState::finished) return;
// if (sm.getState() == DisinfectionState::idle) return;
if (m_thread) {
m_thread->join();
@ -524,7 +528,6 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
*/
auto coefficient = DeviceExtSettingDAO::ins()->getDeviceExtSetting().dvalueCoefficient;
s_dvalue = DValueComputer().computeDValue(coefficient, s_h2o2Snapshot->minH2O2);
if (zsteady_clock().elapsedTimeS(s_lastComputeDvalueTp) > DVALUE_COMPUTEPERIOD_TIME_S) {
@ -581,7 +584,6 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
if (PORT.isHasDisinfectantBucket()) {
if (dwus->getWeight() < 10) {
logger->error("DisinfectantBucket is empty");
AppEventBus::ins()->push(make_shared<AppWarningPromoptEvent>(err::kappe_disinfectant_insufficient));
pushSnapshot(createErrorSnapshot(err::kappe_disinfectant_insufficient));
changeToNextState();
}
@ -599,7 +601,7 @@ void DisinfectionCtrlService::processStateDisinfection(DisinfectionEvent* event)
void DisinfectionCtrlService::processStateEmpytLiquidFromTheLine(DisinfectionEvent* event) {
if (event->event == kevent_enter_state) {
tryLogState(true);
dics->AC_ctrl(1);
// dics->AC_ctrl(1);
dics->SprayPump_startInRPM(-PORT.getSprayLiquidPumpMaxRPM());
s_remaintime = EMTPTY_LINE_WHEN_DISINFECTION;
@ -705,5 +707,3 @@ void DisinfectionCtrlService::processStateFinished(DisinfectionEvent* event) {
}
}
}
// AppEventBus::ins()->push(make_shared<AppWarningPromoptEvent>(s_error));

15
appsrc/service/app/disinfection_ctrl_service_ext.cpp

@ -56,17 +56,17 @@ void DisinfectionCtrlServiceExt::start(shared_ptr<MsgProcessContext> cxt, string
// 从setting中获取实时参数
int level = atoi(loglevel.c_str());
dcs->start(level);
ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_do_disinfection, fmt::format("开始消毒,level:{}", level));
ADD_USER_BEHAVIOR(ds->getLoginName(), fmt::format("开始消毒Log{}", level));
// m_state = DisinfectionState::preheat;
if (stateUpdateThread) stateUpdateThread->wake();
}
void DisinfectionCtrlServiceExt::startWithFormula(shared_ptr<MsgProcessContext> cxt, string formulaid) { //
json formula = dcs->startWithFormula(formulaid);
ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_do_formula, fmt::format("启动配置方,{}", formula["name"]));
ADD_USER_BEHAVIOR(ds->getLoginName(), fmt::format("启动配置方{}Log{}", formula["name"], formula[SettingId::toString(SettingId::kloglevel)]));
if (stateUpdateThread) stateUpdateThread->wake();
}
void DisinfectionCtrlServiceExt::stop(shared_ptr<MsgProcessContext> cxt) {
ADD_USER_BEHAVIOR(ds->getLoginName(), kbehavior_stop_disinfection, "");
ADD_USER_BEHAVIOR(ds->getLoginName(), "停止消毒");
dcs->stop();
if (stateUpdateThread) stateUpdateThread->wake();
}
@ -78,10 +78,17 @@ void DisinfectionCtrlServiceExt::getRealtimeConfig(shared_ptr<MsgProcessContext>
}
}
void DisinfectionCtrlServiceExt::updateTargetLogLevel(shared_ptr<MsgProcessContext> cxt, float loglevel) { dcs->updateTargetLogLevel(loglevel); }
void DisinfectionCtrlServiceExt::updateTargetLogLevel(shared_ptr<MsgProcessContext> cxt, float loglevel) {
auto tLog = dcs->getTlog();
dcs->updateTargetLogLevel(loglevel);
ADD_USER_BEHAVIOR(ds->getLoginName(), fmt::format("实时修改LOG{}->{}", int(tLog + 0.5), (int)(loglevel + 0.5)));
}
void DisinfectionCtrlServiceExt::setRealtimeConfig(shared_ptr<MsgProcessContext> cxt, string key, string val) {
logger->info("setRealtimeConfig key:{} val:{}", key, val);
auto setting = SETTING_DB->getSetting(key);
ADD_USER_BEHAVIOR(ds->getLoginName(), fmt::format("实时修改运行时配置{}{}", setting ? setting->name_ch : key, val));
dcs->getRealtimeCfg()[key] = val;
dcs->updateCfg();
}

17
appsrc/service/app_core.cpp

@ -170,6 +170,14 @@ void AppCore::initialize() {
BUILD_AND_REG_SERRVICE(ExtSettingMgrService);
BUILD_AND_REG_SERRVICE(EquipmentUsageInfoMgrService);
// int cnt = 0;
// while (true) {
// uint64_t tp = zsys_get_ticket();
// int cnt = ADD_USER_BEHAVIOR("AAAA", fmt::format("CNT {}", cnt++));
// uint64_t tpend = zsys_get_ticket();
// logger->info("time cost:{} {}", tpend - tp,cnt);
// }
//
GET_SERVICE(IflytopFrontEndService)->startListen();
GET_SERVICE(IflytopFrontEndService)->onMessage.connect([this](weak_ptr<WebSocket> webSocket, json& cmd, json& receipt) {
@ -219,12 +227,12 @@ void AppCore::appEventConfirm(shared_ptr<MsgProcessContext> cxt, string evenid)
for (auto it = appEventList.begin(); it != appEventList.end(); it++) {
if ((*it)->uuid == evenid) {
if (dynamic_pointer_cast<AppWarningPromoptEvent>(*it)) {
ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt_confirm, dynamic_pointer_cast<AppWarningPromoptEvent>(*it)->getDescription());
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("确认警告-{}", dynamic_pointer_cast<AppWarningPromoptEvent>(*it)->getDescription()));
}
if (dynamic_pointer_cast<AppCheckPointCheckFailEvent>(*it)) {
vector<CheckPoint> checkPoints = dynamic_pointer_cast<AppCheckPointCheckFailEvent>(*it)->errCheckPoints;
for (auto& cp : checkPoints) {
ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt_confirm, cp.ecodeInfo);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("确认警告-{}", cp.ecodeInfo));
}
}
appEventList.erase(it);
@ -243,12 +251,13 @@ void AppCore::insertAppEvent(shared_ptr<IAppEvent> event) {
if (dynamic_pointer_cast<AppWarningPromoptEvent>(event)) {
GET_SERVICE(WarningLightControler)->setwarningFlag(true);
ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt, dynamic_pointer_cast<AppWarningPromoptEvent>(event)->getDescription());
// ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt, dynamic_pointer_cast<AppWarningPromoptEvent>(event)->getDescription());
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("警告-{}", dynamic_pointer_cast<AppWarningPromoptEvent>(event)->getDescription()));
} else if (dynamic_pointer_cast<AppCheckPointCheckFailEvent>(event)) {
GET_SERVICE(WarningLightControler)->setwarningFlag(true);
vector<CheckPoint> checkPoints = dynamic_pointer_cast<AppCheckPointCheckFailEvent>(event)->errCheckPoints;
for (auto& cp : checkPoints) {
ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt, cp.ecodeInfo);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("警告-{}", cp.ecodeInfo));
}
}
}

21
appsrc/service/audit_mgr_service.cpp

@ -52,7 +52,7 @@ int AuditMgrService::callExportData() {
ofs << "Date,UsrName,Operation" << endl;
for (auto& record : records) {
ofs << fmt::format("{},{},\"{}{}\"", record->date, record->usrName, db::user_behavior_to_str((user_behavior_t)record->behavior), record->behaviorinfo) << endl;
ofs << fmt::format("{},{},\"{}\"", record->date, record->usrName, record->behaviorinfo) << endl;
}
ofs.close();
// 文件编码转换
@ -89,24 +89,7 @@ void AuditMgrService::getRecords(shared_ptr<MsgProcessContext> cxt, int page, in
cxt->rely = UserBehaviorRecordDao::ins()->getUserBehaviorRecordDescJson(page, page_size);
}
void AuditMgrService::pushTestData(shared_ptr<MsgProcessContext> cxt) {
ADD_USER_BEHAVIOR("123", kbehavior_login, "");
ADD_USER_BEHAVIOR("123", kbehavior_logout, "");
ADD_USER_BEHAVIOR("123", kbehavior_add_user, "");
ADD_USER_BEHAVIOR("123", kbehavior_del_user, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_user_uid, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_user_permission_level, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_user_passwd, "");
ADD_USER_BEHAVIOR("123", kbehavior_set_setting_val, "");
ADD_USER_BEHAVIOR("123", kbehavior_add_formula, "");
ADD_USER_BEHAVIOR("123", kbehavior_del_formula, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_formula, "");
ADD_USER_BEHAVIOR("123", kbehavior_do_disinfection, "");
ADD_USER_BEHAVIOR("123", kbehavior_stop_disinfection, "");
ADD_USER_BEHAVIOR("123", kbehavior_do_formula, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_setting_val_on_disinfection, "");
ADD_USER_BEHAVIOR("123", kbehavior_export_disinfection_data, "");
ADD_USER_BEHAVIOR("123", kbehavior_export_user_action_data, "");
ADD_USER_BEHAVIOR("123", kbehavior_update_formula_name, "");
}
bool AuditMgrService::dosystem(string cmd) {

2
appsrc/service/calibration/h2o2_liquid_weight_sensor_calibration_service.cpp

@ -13,7 +13,7 @@ void H2O2LiquidWeightSensorCalibrationService::initialize() {
REG_EXTFN_VOID(getBias, void(void)); //
}
void H2O2LiquidWeightSensorCalibrationService::tare(shared_ptr<MsgProcessContext> cxt) { //
float weight = m_disinfectantWeightUpdateService->getWeight();
float weight = m_disinfectantWeightUpdateService->getRoughWeight();
CalibrationInfoDao::ins()->setH2O2LiquidWeightSensorZeroBias(weight + 10);
}
void H2O2LiquidWeightSensorCalibrationService::getWeight(shared_ptr<MsgProcessContext> cxt) {

7
appsrc/service/setting_mgr_service.cpp

@ -28,16 +28,22 @@ void SettingMgrService::getAllSetting(shared_ptr<MsgProcessContext> cxt) {
void SettingMgrService::setSettingVal(shared_ptr<MsgProcessContext> cxt, string settingName, string settingVal) {
bool suc = SETTING_DB->setSettingVal(settingName, settingVal);
APPCHECK(suc, err::kappe_db_operate_error, "setSettingVal failed");
auto setting = SETTING_DB->getSetting(settingName);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("设置{}为{}", setting ? setting->name_ch : settingName, settingVal));
}
void SettingMgrService::getAllFormula(shared_ptr<MsgProcessContext> cxt) { cxt->rely = FORMULA_DB->getAllFormula(); }
void SettingMgrService::addNewFormula(shared_ptr<MsgProcessContext> cxt) {
auto formula = FORMULA_DB->newFormula();
cxt->rely = formula;
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("添加配方 {}", formula["name"]));
}
void SettingMgrService::delFormula(shared_ptr<MsgProcessContext> cxt, string formula_id) {
auto oldformulaName = FORMULA_DB->getFormula(formula_id, "name");
FORMULA_DB->deleteFormula(formula_id);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除配方 {}", oldformulaName));
return;
}
void SettingMgrService::updateFormula(shared_ptr<MsgProcessContext> cxt, string formula_id, json formula) {
@ -50,5 +56,6 @@ void SettingMgrService::updateFormulaIterm(shared_ptr<MsgProcessContext> cxt, st
}
void SettingMgrService::factoryResetSettings(shared_ptr<MsgProcessContext> cxt) {
SETTING_DB->factoryReset();
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("恢复出厂设置"));
cxt->rely = SETTING_DB->getAllSetting();
}

11
appsrc/service/user_mgr_service.cpp

@ -31,39 +31,42 @@ void UserMgrService::login(shared_ptr<MsgProcessContext> cxt, string name, strin
if (!UserDao::ins()->ispasswdCorrect(name, pwd)) //
THROW_APP_EXCEPTION(err::kappe_passwd_error, "");
m_deviceStateService->setLoginState(name, UserDao::ins()->getUser(name)->roleType);
logger->info("user {} login success", name);
ADD_USER_BEHAVIOR(name, kbehavior_login, "");
ADD_USER_BEHAVIOR(name, "登陆");
return;
}
void UserMgrService::unlogin(shared_ptr<MsgProcessContext> cxt) {
string name = m_deviceStateService->getLoginName();
m_deviceStateService->unlogin();
logger->info("user unlogin success");
ADD_USER_BEHAVIOR(name, kbehavior_logout, "");
ADD_USER_BEHAVIOR(name, "登出");
return;
}
void UserMgrService::chpasswd(shared_ptr<MsgProcessContext> cxt, int id, string newpasswd, string passwd) { auto user = UserDao::ins()->changePasswd(id, newpasswd); }
void UserMgrService::changeUsrRoleType(shared_ptr<MsgProcessContext> cxt, int id, UsrRoleType roleType) {
auto user = UserDao::ins()->updateUserRoleType(id, roleType);
APPCHECK(user, err::kappe_user_not_exist, fmt::format("user {} not exist", id));
}
void UserMgrService::addUser(shared_ptr<MsgProcessContext> cxt, string name, string passwd, UsrRoleType roleType) { //
UserDao::ins()->addUser(name, passwd, roleType);
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("添加用户{}", name));
}
void UserMgrService::delUser(shared_ptr<MsgProcessContext> cxt, int id) {
auto user = UserDao::ins()->delUser(id);
APPCHECK(user, err::kappe_user_not_exist, fmt::format("user {} not exist", id));
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("删除用户{}", user->name));
}
void UserMgrService::updateUserName(shared_ptr<MsgProcessContext> cxt, int id, string name) {
string oldname;
auto user = UserDao::ins()->updateUserUid(id, name, oldname);
APPCHECK(user, err::kappe_user_not_exist, fmt::format("user {} not exist", id));
ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("修改用户名{}->{}", oldname, name));
}
void UserMgrService::getAllUser(shared_ptr<MsgProcessContext> cxt) {
auto users = UserDao::ins()->getAllUserJson();

Loading…
Cancel
Save