From c05f266dd293e05be8d4045953af44188193d36c Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 3 Jul 2025 19:58:45 +0800 Subject: [PATCH] =?UTF-8?q?v2.4.4=20|=20=E7=94=A8=E6=88=B7=E9=80=80?= =?UTF-8?q?=E5=87=BA=E7=99=BB=E9=99=86=E6=97=B6=EF=BC=8C=20=E4=BC=9A?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=89=80=E6=9C=89=E7=A1=AC=E4=BB=B6?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appevent/app_checkpoint_check_fail_event.hpp | 43 -------------------- appsrc/appbase/appevent/app_event_type.hpp | 3 +- appsrc/appbase/appevent/app_events.hpp | 3 +- appsrc/appbase/appevent/app_login_event.hpp | 21 ++++++++++ appsrc/appbase/appevent/app_login_out_event.hpp | 19 +++++++++ appsrc/service/app_core.cpp | 46 +++++++++++++++------- appsrc/service/app_core.hpp | 5 ++- appsrc/service/debug_page_test_service.cpp | 12 ------ appsrc/service/hardware/device_io_ctrl_service.cpp | 22 +---------- appsrc/service/user_mgr_service.cpp | 8 +++- appsrc/service/user_mgr_service.hpp | 3 +- 11 files changed, 88 insertions(+), 97 deletions(-) delete mode 100644 appsrc/appbase/appevent/app_checkpoint_check_fail_event.hpp create mode 100644 appsrc/appbase/appevent/app_login_event.hpp create mode 100644 appsrc/appbase/appevent/app_login_out_event.hpp diff --git a/appsrc/appbase/appevent/app_checkpoint_check_fail_event.hpp b/appsrc/appbase/appevent/app_checkpoint_check_fail_event.hpp deleted file mode 100644 index 1e4927f..0000000 --- a/appsrc/appbase/appevent/app_checkpoint_check_fail_event.hpp +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once -#include "iapp_event.hpp" -namespace iflytop { - -typedef enum { - kCheckPointCode_Unknown = 0, - kCheckPointCode_evaporationBinWSTrigger, - kCheckPointCode_deviceBottomWSTrigger, -} CheckPointCode_t; - -class CheckPoint { - public: - CheckPointCode_t index; - string name; - bool passed; - int ecode; - string ecodeInfo; - - CheckPoint(CheckPointCode_t index, const string& name, bool passed) : index(index), name(name), passed(passed) {} - NLOHMANN_DEFINE_TYPE_INTRUSIVE(CheckPoint, index, ecode, ecodeInfo, name, passed); -}; - -class AppCheckPointCheckFailEvent : public IAppEvent { - public: - vector errCheckPoints; - - public: - AppCheckPointCheckFailEvent(vector checkpoint) : IAppEvent(AppEventType::AppCheckPointCheckFailEvent) { errCheckPoints = checkpoint; } - virtual ~AppCheckPointCheckFailEvent() {} - - // NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppCheckPointCheckFailEvent, errCheckPoints, uuid, type); - virtual json toJson() { - // return json(*this); - json j; - j["uuid"] = uuid; - j["type"] = type; - j["errCheckPoints"] = errCheckPoints; - return j; - - } -}; - -} // namespace iflytop \ No newline at end of file diff --git a/appsrc/appbase/appevent/app_event_type.hpp b/appsrc/appbase/appevent/app_event_type.hpp index 6adda99..e2e0063 100644 --- a/appsrc/appbase/appevent/app_event_type.hpp +++ b/appsrc/appbase/appevent/app_event_type.hpp @@ -9,6 +9,7 @@ marco(type, AppDisinfectionStartEvent) /**/ \ marco(type, AppPromoptEvent) /**/ \ marco(type, AppWarningPromoptEvent) /**/ \ - marco(type, AppCheckPointCheckFailEvent) /**/ + marco(type, AppLoginEvent) /**/\ + marco(type, AppLoginOutEvent) /**/ ZENUM_DECLAR(AppEventType, AppEventType_LIST); \ No newline at end of file diff --git a/appsrc/appbase/appevent/app_events.hpp b/appsrc/appbase/appevent/app_events.hpp index a8490a0..8057bc1 100644 --- a/appsrc/appbase/appevent/app_events.hpp +++ b/appsrc/appbase/appevent/app_events.hpp @@ -6,4 +6,5 @@ #include "app_warning_promopt_event.hpp" #include "iapp_event.hpp" #include "app_event_type.hpp" -#include "app_checkpoint_check_fail_event.hpp" \ No newline at end of file +#include "app_login_event.hpp" +#include "app_login_out_event.hpp" \ No newline at end of file diff --git a/appsrc/appbase/appevent/app_login_event.hpp b/appsrc/appbase/appevent/app_login_event.hpp new file mode 100644 index 0000000..cb19a06 --- /dev/null +++ b/appsrc/appbase/appevent/app_login_event.hpp @@ -0,0 +1,21 @@ +#pragma once +#include "iapp_event.hpp" +namespace iflytop { + +class AppLoginEvent : public IAppEvent { + private: + string usr; + string role; + + public: + AppLoginEvent(string usr, string role) : IAppEvent(AppEventType::AppLoginEvent), usr(usr), role(role) {} + virtual ~AppLoginEvent() {} + + string getUsr() const { return usr; } + string getRole() const { return role; } + + NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppLoginEvent, uuid, usr, role); + virtual json toJson() { return json(*this); } +}; + +} // namespace iflytop \ No newline at end of file diff --git a/appsrc/appbase/appevent/app_login_out_event.hpp b/appsrc/appbase/appevent/app_login_out_event.hpp new file mode 100644 index 0000000..eac2a12 --- /dev/null +++ b/appsrc/appbase/appevent/app_login_out_event.hpp @@ -0,0 +1,19 @@ +#pragma once +#include "iapp_event.hpp" +namespace iflytop { + +class AppLoginOutEvent : public IAppEvent { + private: + string usr; + + public: + AppLoginOutEvent(string usr) : IAppEvent(AppEventType::AppLoginOutEvent), usr(usr){} + virtual ~AppLoginOutEvent() {} + + string getUsr() const { return usr; } + + NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppLoginOutEvent, uuid, usr); + virtual json toJson() { return json(*this); } +}; + +} // namespace iflytop \ No newline at end of file diff --git a/appsrc/service/app_core.cpp b/appsrc/service/app_core.cpp index 1fc1639..70f6050 100644 --- a/appsrc/service/app_core.cpp +++ b/appsrc/service/app_core.cpp @@ -207,12 +207,14 @@ void AppCore::initialize() { // shared_ptr AppEventBus::ins()->onEvent.connect([this](shared_ptr event) { - if (dynamic_pointer_cast(event) || // - dynamic_pointer_cast(event) || // + if (dynamic_pointer_cast(event) || // dynamic_pointer_cast(event)) { insertAppEvent(event); return; } + if (dynamic_pointer_cast(event)) { + initHardwareState(); + } }); REG_EXTFN_VOID(getState, void(void)); @@ -233,7 +235,34 @@ void AppCore::initialize() { ThisThread().sleepForMs(1000); } })); + + initHardwareState(); }; +void AppCore::initHardwareState() { + auto deviceIoControlService = GET_SERVICE(DeviceIoControlService); + try { + if (PORT.isDT600B() || PORT.isDT600N() || PORT.isDT300N() || PORT.isDT300W()) { + // CAN_MASTER->clearResetFlag(kFixBoardId_LiquidCtrl); + // CAN_MASTER->clearResetFlag(kFixBoardId_PowerControl); + + deviceIoControlService->AddLiquidPump_stop(); + deviceIoControlService->SprayPump_stop(); + deviceIoControlService->Blower_close(); + deviceIoControlService->AC_close(); + deviceIoControlService->Heater_close(); + deviceIoControlService->WarningLight_setState(0, 0, 0, 0); + if (PORT.isDT300W()) { + deviceIoControlService->PosiPressureProp_setValve(0); + deviceIoControlService->NegaPressureProp_setValve(0); + deviceIoControlService->AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode::disinfection); + } + } + } catch (const appexception& e) { + logger->error("initialize hardware error:{}", e.what()); + AppEventBus::ins()->pushWarningPromptEvent(e); + } +} + int AppCore::demofn(int a, int b) { return 0; } void AppCore::getState(shared_ptr cxt) { @@ -248,12 +277,7 @@ void AppCore::appEventConfirm(shared_ptr cxt, string evenid) if (dynamic_pointer_cast(*it)) { ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("确认警告-{}", dynamic_pointer_cast(*it)->getDescription())); } - if (dynamic_pointer_cast(*it)) { - vector checkPoints = dynamic_pointer_cast(*it)->errCheckPoints; - for (auto& cp : checkPoints) { - ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("确认警告-{}", cp.ecodeInfo)); - } - } + appEventList.erase(it); break; } @@ -272,12 +296,6 @@ void AppCore::insertAppEvent(shared_ptr event) { GET_SERVICE(WarningLightControler)->setwarningFlag(true); // ADD_USER_BEHAVIOR(DS->getLoginName(), kbehavior_warning_prompt, dynamic_pointer_cast(event)->getDescription()); ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("警告-{}", dynamic_pointer_cast(event)->getDescription())); - } else if (dynamic_pointer_cast(event)) { - GET_SERVICE(WarningLightControler)->setwarningFlag(true); - vector checkPoints = dynamic_pointer_cast(event)->errCheckPoints; - for (auto& cp : checkPoints) { - ADD_USER_BEHAVIOR(DS->getLoginName(), fmt::format("警告-{}", cp.ecodeInfo)); - } } } diff --git a/appsrc/service/app_core.hpp b/appsrc/service/app_core.hpp index 603f7bb..c49e806 100644 --- a/appsrc/service/app_core.hpp +++ b/appsrc/service/app_core.hpp @@ -42,8 +42,8 @@ class AppCore : public enable_shared_from_this { unique_ptr wq; list> appEventList; recursive_mutex appEventListMutex; - unique_ptr stateUpdateThread; - unique_ptr stateUpdateThread2; + unique_ptr stateUpdateThread; + unique_ptr stateUpdateThread2; public: AppCore() {}; @@ -60,6 +60,7 @@ class AppCore : public enable_shared_from_this { void dosystem(string order, bool dump); void loop(); int demofn(int a, int b); + void initHardwareState(); private: void onDeviceStateChange(); diff --git a/appsrc/service/debug_page_test_service.cpp b/appsrc/service/debug_page_test_service.cpp index 2c36ace..cd8c6c0 100644 --- a/appsrc/service/debug_page_test_service.cpp +++ b/appsrc/service/debug_page_test_service.cpp @@ -11,7 +11,6 @@ void DebugPageTestService::initialize() { REG_EXTFN_VOID(triggerAppWarningPromoptEvent, void(void)); REG_EXTFN(triggerPromptEvent, void(string), message); - REG_EXTFN_VOID(triggerAppCheckPointFailEvent, void(void)); REG_EXTFN(test_int, int(json), param0); REG_EXTFN(test_int, int(SettingId), param0); @@ -137,16 +136,5 @@ void DebugPageTestService::triggerPromptEvent(shared_ptr cxt, AppEventBus::ins()->pushPromoptEvent(message); } void DebugPageTestService::triggerAppCheckPointFailEvent(shared_ptr cxt) { // - vector checkPoints; - auto cp1 = CheckPoint(kCheckPointCode_evaporationBinWSTrigger, "蒸发仓内液位检查", true); - auto cp2 = CheckPoint(kCheckPointCode_deviceBottomWSTrigger, "硬件仓液位检测", true); - - cp1.ecode = err::kappe_the_evaporation_bin_has_water; - cp1.ecodeInfo = ecode2str(cp1.ecode); - cp2.ecode = err::kappe_the_bottom_of_the_device_has_water; - cp2.ecodeInfo = ecode2str(cp2.ecode); - checkPoints.push_back(cp1); - - AppEventBus::ins()->push(make_shared(checkPoints)); } diff --git a/appsrc/service/hardware/device_io_ctrl_service.cpp b/appsrc/service/hardware/device_io_ctrl_service.cpp index a68b79f..0942714 100644 --- a/appsrc/service/hardware/device_io_ctrl_service.cpp +++ b/appsrc/service/hardware/device_io_ctrl_service.cpp @@ -95,27 +95,7 @@ void DeviceIoControlService::initialize() { /** * @brief 初始化所有硬件状态 */ - try { - if (PORT.isDT600B() || PORT.isDT600N() || PORT.isDT300N() || PORT.isDT300W()) { - // CAN_MASTER->clearResetFlag(kFixBoardId_LiquidCtrl); - // CAN_MASTER->clearResetFlag(kFixBoardId_PowerControl); - - AddLiquidPump_stop(); - SprayPump_stop(); - Blower_close(); - AC_close(); - Heater_close(); - WarningLight_setState(0, 0, 0, 0); - if (PORT.isDT300W()) { - PosiPressureProp_setValve(0); - NegaPressureProp_setValve(0); - AirLeakDetectTestModeCtrl_setMode(AirLeakTestMode::disinfection); - } - } - } catch (const appexception &e) { - logger->error("initialize hardware error:{}", e.what()); - AppEventBus::ins()->pushWarningPromptEvent(e); - } + heartThread.reset(new Thread("heartThread", [this]() { while (true) { diff --git a/appsrc/service/user_mgr_service.cpp b/appsrc/service/user_mgr_service.cpp index 23ee33c..f39ea9e 100644 --- a/appsrc/service/user_mgr_service.cpp +++ b/appsrc/service/user_mgr_service.cpp @@ -31,9 +31,12 @@ void UserMgrService::login(shared_ptr 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); + string roleType = UserDao::ins()->getUser(name)->roleType; + + m_deviceStateService->setLoginState(name, roleType); logger->info("user {} login success", name); ADD_USER_BEHAVIOR(name, "登陆"); + AppEventBus::ins()->push(make_shared(name, roleType)); return; } void UserMgrService::unlogin(shared_ptr cxt) { @@ -41,6 +44,7 @@ void UserMgrService::unlogin(shared_ptr cxt) { m_deviceStateService->unlogin(); logger->info("user unlogin success"); ADD_USER_BEHAVIOR(name, "登出"); + AppEventBus::ins()->push(make_shared(name)); return; } void UserMgrService::chpasswd(shared_ptr cxt, int id, string newpasswd, string passwd) { auto user = UserDao::ins()->changePasswd(id, newpasswd); } @@ -53,7 +57,7 @@ void UserMgrService::changeUsrRoleType(shared_ptr cxt, int id void UserMgrService::addUser(shared_ptr cxt, string name, string passwd, UsrRoleType roleType) { // if (UserDao::ins()->isUserExist(name)) { - THROW_APP_EXCEPTION(err::kappe_user_exist,""); + THROW_APP_EXCEPTION(err::kappe_user_exist, ""); } UserDao::ins()->addUser(name, passwd, roleType); diff --git a/appsrc/service/user_mgr_service.hpp b/appsrc/service/user_mgr_service.hpp index 1d54516..94d0064 100644 --- a/appsrc/service/user_mgr_service.hpp +++ b/appsrc/service/user_mgr_service.hpp @@ -14,7 +14,8 @@ namespace iflytop { class UserMgrService : public enable_shared_from_this { THISCLASS(UserMgrService); - shared_ptr m_deviceStateService; + SERVICE(DeviceStateService, m_deviceStateService); + SERVICE(AppEventBus, appEventBus); public: UserMgrService() {}