From 4bc1a459607c34d1ee903d9b508529362efd77b0 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 9 Jul 2025 16:40:12 +0800 Subject: [PATCH] v3.1.8| --- README.md | 7 ++++++- appsrc/appbase/appevent/app_disinfection_finished_event.hpp | 8 ++++++-- appsrc/appconfig/basic/zappversion.hpp | 2 +- .../service/app/disinfection_ctrl/disinfection_ctrl_service.cpp | 5 ++++- .../service/app/disinfection_ctrl/disinfection_ctrl_service.hpp | 2 ++ .../service/app/disinfection_ctrl/disinfection_state_machine.hpp | 1 + appsrc/service/disinfection_logs_service.cpp | 4 ++-- appsrc/service/user_mgr_service.cpp | 9 --------- 8 files changed, 22 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b058eb4..493ce53 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,12 @@ V 3.1.6 2. 修改预热时间最小值从0分钟到120分钟,默认值2分钟 3. 支持修改风机默认速度 4. 打开预热时,打开风机 - +v3.1.8| + 1. 任何时刻都允许用户登出, 登出时,除了审计,不执行任何设备操作. + 2. 有屏,和无屏, 都允许用户在消毒过程中登出. + 3. 重复登录会挤掉已登录的用户 + 4. 审计记录实时用户对象 + 5. csv文件中,和打印的日志, 均以启动消毒那一刻为准. 那一刻操作员是谁, 就记录谁. TODO: 1.添加用户增加用户查重检查 2.测试如果数据库文件损坏,设备的执行逻辑 diff --git a/appsrc/appbase/appevent/app_disinfection_finished_event.hpp b/appsrc/appbase/appevent/app_disinfection_finished_event.hpp index 4809bb4..d0f2ff5 100644 --- a/appsrc/appbase/appevent/app_disinfection_finished_event.hpp +++ b/appsrc/appbase/appevent/app_disinfection_finished_event.hpp @@ -1,9 +1,13 @@ #pragma once +#include + #include "iapp_event.hpp" namespace iflytop { - +using namespace std; class DisinfectionStatistics { public: + string deviceOperator; + zsystem_tp start_tp = {}; zsystem_tp complete_tp = {}; int disinfectantVolume_g = {}; // 消毒剂量 @@ -26,7 +30,7 @@ class AppDisinfectionFinishedEvent : public IAppEvent { string getSessionId() { return sessionId; } shared_ptr getDisinfectionStatistics() { return disinfectionStatistics; } - NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppDisinfectionFinishedEvent, uuid, type,sessionId); + NLOHMANN_DEFINE_TYPE_INTRUSIVE(AppDisinfectionFinishedEvent, uuid, type, sessionId); virtual json toJson() { return json(*this); } }; diff --git a/appsrc/appconfig/basic/zappversion.hpp b/appsrc/appconfig/basic/zappversion.hpp index 41bb7b3..3d61bac 100644 --- a/appsrc/appconfig/basic/zappversion.hpp +++ b/appsrc/appconfig/basic/zappversion.hpp @@ -1,3 +1,3 @@ #pragma once -#define VERSION "3.1.7" +#define VERSION "3.1.8" #define PROJECT_NAME "TRANSMIT_DM" \ No newline at end of file diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp index 369ba78..470caae 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp @@ -298,7 +298,8 @@ shared_ptr DisinfectionCtrlService::createSnapshot(bo snapshot->ecode = 0; snapshot->forcelog = forceLog; snapshot->isDisinfectionTakeBreak = s_isDisinfectionTakeBreak; - snapshot->inJectionRate = getSettingAsInt(SettingId::injection_pump_speed); + + snapshot->inJectionRate = getSettingAsInt(SettingId::injection_pump_speed); return snapshot; } shared_ptr DisinfectionCtrlService::createErrorSnapshot(int32_t errorcode) { @@ -424,6 +425,7 @@ void DisinfectionCtrlService::processStateInit(DisinfectionEvent* event) { s_start_steady_tp = zsteady_clock().now(); s_afterDisinfectantVolume_g = 0; s_beforeDisinfectantVolume_g = dwus->getWeight(); + s_operator = ds->getLoginName(); AppEventBus::ins()->push(make_shared(s_sessionId)); GET_SERVICE(WarningLightControler)->setworkFlag(true); changeToNextState(); @@ -737,6 +739,7 @@ void DisinfectionCtrlService::processStateFinished(DisinfectionEvent* event) { statistice->disinfectantVolume_g = s_afterDisinfectantVolume_g - s_beforeDisinfectantVolume_g; statistice->tLog = m_tlog; statistice->finalLog = s_nlog; + statistice->deviceOperator = s_operator; AppEventBus::ins()->push(make_shared(s_sessionId, statistice)); return; diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp index 12729e9..893e823 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp @@ -46,6 +46,8 @@ class DisinfectionCtrlService : public enable_shared_from_this m_thread; // 实时任务状态 + string s_operator; // 操作人 + string s_sessionId = {}; zsystem_tp s_start_tp = {}; zsystem_tp s_complete_tp = {}; diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_state_machine.hpp b/appsrc/service/app/disinfection_ctrl/disinfection_state_machine.hpp index c34aee7..721c337 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_state_machine.hpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_state_machine.hpp @@ -26,6 +26,7 @@ class DisinfectionStateMachine { recursive_mutex lock_; recursive_mutex actionLock_; + map> m_state_processer_map; function m_bf_state_processer; diff --git a/appsrc/service/disinfection_logs_service.cpp b/appsrc/service/disinfection_logs_service.cpp index 3560f5a..22c1abd 100644 --- a/appsrc/service/disinfection_logs_service.cpp +++ b/appsrc/service/disinfection_logs_service.cpp @@ -17,8 +17,8 @@ #include "appbase/appbean/disinfection_record_csv_header.hpp" #include "appbase/utils/zsimplepdf.hpp" #include "appdep/components/ziconv.hpp" -#include "utils/app_timeid_generator.hpp" #include "internationalization.hpp" +#include "utils/app_timeid_generator.hpp" using namespace std; using namespace iflytop; typedef DisinfectionRecordCSVHeader CSVHeader; @@ -340,7 +340,7 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis content += fmt::format("= = = = = = = = = = = = = = = \n"); content += fmt::format(" 全思美特 \n"); content += fmt::format("消毒ID: {}\n", sessionId); - content += fmt::format("操作人员: {}\n", GET_SERVICE(DeviceStateService)->getLoginName()); + content += fmt::format("操作人员: {}\n", m_statistics->deviceOperator); content += fmt::format("开始时间: {}\n", AppTimeIdGenerator::format_zsystem_tp(m_statistics->start_tp)); content += fmt::format("结束时间: {}\n", AppTimeIdGenerator::format_zsystem_tp(m_statistics->complete_tp)); content += fmt::format("总耗时: {}:{}:{}\n", total_hours, total_mins, total_secs); diff --git a/appsrc/service/user_mgr_service.cpp b/appsrc/service/user_mgr_service.cpp index f78c3b8..1d539b3 100644 --- a/appsrc/service/user_mgr_service.cpp +++ b/appsrc/service/user_mgr_service.cpp @@ -27,10 +27,6 @@ void UserMgrService::login(shared_ptr cxt, string name, strin // return; // } - if(m_deviceStateService->isLogin()){ - THROW_APP_EXCEPTION(err::kappe_user_exist, "用户已登录"); - } - if (!UserDao::ins()->isUserExist(name)) // THROW_APP_EXCEPTION(err::kappe_user_not_exist, ""); if (!UserDao::ins()->ispasswdCorrect(name, pwd)) // @@ -45,11 +41,6 @@ void UserMgrService::login(shared_ptr cxt, string name, strin return; } void UserMgrService::unlogin(shared_ptr cxt) { - if (!m_deviceStateService->getDeviceState().eq(DeviceState::kIdle)) { - THROW_APP_EXCEPTION(err::kappe_state_is_busy, // - Internationalization::deviceBusyError2description(err::kappe_state_is_busy, m_deviceStateService->getDeviceState())); - } - string name = m_deviceStateService->getLoginName(); m_deviceStateService->unlogin(); logger->info("user unlogin success");