diff --git a/appsrc/baseservice/db/user_behavior_record_dao.cpp b/appsrc/baseservice/db/user_behavior_record_dao.cpp index 9e19313..03434de 100644 --- a/appsrc/baseservice/db/user_behavior_record_dao.cpp +++ b/appsrc/baseservice/db/user_behavior_record_dao.cpp @@ -6,6 +6,7 @@ #include "appconfig/appconfig.hpp" #include "user_behavior_record_dao.hpp" +#include "utils/app_timeid_generator.hpp" // using namespace std; @@ -107,17 +108,6 @@ json UserBehaviorRecordDao::getUserBehaviorRecordDescJson(int page, int page_siz return j_user_behavior_records; } -static string getTime() { - struct tm tm = {0}; - time_t t = ::time(nullptr); - 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); -} - int UserBehaviorRecordDao::addUserBehaviorRecord(string name, string behaviorinfo, string extinfo) { lock_guard lock(lock_); @@ -126,7 +116,7 @@ int UserBehaviorRecordDao::addUserBehaviorRecord(string name, string behaviorinf u.behaviorinfo = behaviorinfo; u.extinfo = extinfo; u.behavior = 0; - u.date = getTime(); + u.date = AppTimeIdGenerator::generatoreUserBehaviorTimestamp(); storage.insert(u); // auto size = storage.count(); diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp index fc4102e..dd14355 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp @@ -3,6 +3,7 @@ #include "appcomponents/algo/dvalue_computer.hpp" #include "service/app/pipeline_pressure_control.hpp" #include "service/hardware/warning_light_controler.hpp" +#include "utils/app_timeid_generator.hpp" using namespace iflytop; using namespace disinfection; @@ -392,24 +393,7 @@ void DisinfectionCtrlService::changeToNextState() { void DisinfectionCtrlService::processStateIdle(DisinfectionEvent* event) {} -string DisinfectionCtrlService::createDisinfectionID() { - struct tm tm = {0}; - time_t t = ::time(nullptr); - if (t == -1) { - logger->error("time(nullptr) failed"); - exit(-1); - } - struct tm* tmp = localtime_r(&t, &tm); - if (!tmp) { - logger->error("localtime_r failed"); - exit(-1); - } - return fmt::format("{:0>4}-{: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); -} + void DisinfectionCtrlService::processStateInit(DisinfectionEvent* event) { if (event->event == kevent_enter_state) { @@ -417,7 +401,7 @@ void DisinfectionCtrlService::processStateInit(DisinfectionEvent* event) { * @brief 开始消毒 */ - s_sessionId = createDisinfectionID(); + s_sessionId = AppTimeIdGenerator::createDisinfectionID(); s_remaintime = -1; s_nlog = 0; s_dvalue = 0; diff --git a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp index 83d6360..3324edd 100644 --- a/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp +++ b/appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp @@ -71,7 +71,6 @@ class DisinfectionCtrlService : public enable_shared_from_this4}{: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 AuditMgrService::initialize() { GET_TO_SERVICE(m_udiskMgr); REG_EXTFN_VOID(exportData, void()); - REG_EXTFN(getRecords, void(int,int), page, pageSize); + REG_EXTFN(getRecords, void(int, int), page, pageSize); REG_EXTFN_VOID(pushTestData, void()); } int AuditMgrService::callExportData() { @@ -39,9 +29,9 @@ int AuditMgrService::callExportData() { * @brief 创建导出文件csv */ - auto records = UserBehaviorRecordDao::ins()->getAllUserBehaviorRecord(); - - string filename = fmt::format("/tmp/AUDIT{}.csv", getTime()); + auto records = UserBehaviorRecordDao::ins()->getAllUserBehaviorRecord(); + + string filename = fmt::format("/tmp/{}", AppTimeIdGenerator::generatorAuditFileName()); ofstream ofs(filename); if (!ofs.is_open()) { @@ -52,7 +42,7 @@ int AuditMgrService::callExportData() { ofs << "Date,UsrName,Operation" << endl; for (auto& record : records) { - ofs << fmt::format("{},{},\"{}\"", record->date, record->usrName, record->behaviorinfo) << endl; + ofs << fmt::format("{},{},\"{}\"", record->date, record->usrName, record->behaviorinfo) << endl; } ofs.close(); // 文件编码转换 @@ -88,9 +78,7 @@ void AuditMgrService::getRecords(shared_ptr cxt, int page, in // cxt->rely = UserBehaviorRecordDao::ins()->getUserBehaviorRecordDescJson(jsonGet(params["page"]), jsonGet(params["page_size"])); cxt->rely = UserBehaviorRecordDao::ins()->getUserBehaviorRecordDescJson(page, page_size); } -void AuditMgrService::pushTestData(shared_ptr cxt) { - -} +void AuditMgrService::pushTestData(shared_ptr cxt) {} bool AuditMgrService::dosystem(string cmd) { logger->info("do cmd: {}", cmd); diff --git a/appsrc/service/disinfection_logs_service.cpp b/appsrc/service/disinfection_logs_service.cpp index d031188..18f75c1 100644 --- a/appsrc/service/disinfection_logs_service.cpp +++ b/appsrc/service/disinfection_logs_service.cpp @@ -17,6 +17,7 @@ #include "appbase/appbean/disinfection_record_csv_header.hpp" #include "appbase/utils/zsimplepdf.hpp" #include "appdep/components/ziconv.hpp" +#include "utils/app_timeid_generator.hpp" using namespace std; using namespace iflytop; typedef DisinfectionRecordCSVHeader CSVHeader; @@ -55,25 +56,7 @@ static string formattimeS(int sec) { } } static string formatSensorVal(int val) { return fmt::format("{}", val); } -static string format_zsystem_tp(zsystem_tp tp) { - time_t time = system_clock().to_time_t(tp); - struct tm tm = {0}; - localtime_r(&time, &tm); - return fmt::format("{:0>4}-{: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); -} -static string format_simple_zsystem_tp(zsystem_tp tp) { - time_t time = system_clock().to_time_t(tp); - struct tm tm = {0}; - localtime_r(&time, &tm); - return fmt::format("{:0>2}:{:0>2}", - tm.tm_hour, // - tm.tm_min); -} static void listDirCSVFile(string path, vector& sv) { sv.clear(); @@ -119,25 +102,6 @@ static void split(const string& s, vector& sv, const char delim = ' ') { return; } -static string createFakeDisinfectionID() { - static int cnt; - struct tm tm = {0}; - time_t t = time(nullptr); - if (t == -1) { - printf("time error\n"); - exit(-1); - } - struct tm* tmp = localtime_r(&t, &tm); - if (!tmp) { - printf("localtime_r error\n"); - exit(-1); - } - 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, cnt++); -} /******************************************************************************* * CLASS * @@ -377,8 +341,8 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis content += fmt::format(" 全思美特 \n"); content += fmt::format("消毒ID: {}\n", sessionId); content += fmt::format("操作人员: {}\n", GET_SERVICE(DeviceStateService)->getLoginName()); - content += fmt::format("开始时间: {}\n", format_zsystem_tp(m_statistics->start_tp)); - content += fmt::format("结束时间: {}\n", format_zsystem_tp(m_statistics->complete_tp)); + 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); content += fmt::format("目标LOG: {}\n", m_statistics->tLog); content += fmt::format("实际LOG: {}\n", m_statistics->finalLog); @@ -409,13 +373,13 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis lastlogtime = snapshot->time; if (snapshot->ecode != 0) { - content += fmt::format("{}\n", format_zsystem_tp(snapshot->time)); + content += fmt::format("{}\n", AppTimeIdGenerator::format_zsystem_tp(snapshot->time)); content += fmt::format("错误: {}\n", ecode2str(snapshot->ecode)); continue; } if (stateChanged) { - content += fmt::format("{}\n", format_zsystem_tp(snapshot->time)); + content += fmt::format("{}\n", AppTimeIdGenerator::format_zsystem_tp(snapshot->time)); content += fmt::format("{}...\n", m_dmStateDict.getChName(snapshot->state)); if (state == DisinfectionState::disinfection) { content += fmt::format("时间 H2O2(ppm) RS(%) RH(%) LOG \n"); @@ -428,7 +392,7 @@ void DisinfectionLogsService::dumpDisinfectionToPrinterLog(string sessionId, lis auto h2o2data = snapshot->h2o2Snapshot; for (int i = 0; i < h2o2data->getSensorDataNum(); i++) { if (i == 0) { - content += fmt::format("{} {:>6} {:>4} {:>4} {:>2.2f} \n", format_simple_zsystem_tp(snapshot->time), // + content += fmt::format("{} {:>6} {:>4} {:>4} {:>2.2f} \n", AppTimeIdGenerator::format_zsystem_tp(snapshot->time), // h2o2data->isExpired[0] ? "N/A" : formatSensorVal(h2o2data->h2o2[0]), // h2o2data->isExpired[0] ? "N/A" : formatSensorVal(h2o2data->rs[0]), // h2o2data->isExpired[0] ? "N/A" : formatSensorVal(h2o2data->rh[0]), nlog); @@ -645,7 +609,7 @@ chrono::system_clock::time_point time_point_increment(chrono::system_clock::time void DisinfectionLogsService::createFakeData(shared_ptr cxt, int cnt) { for (int i = 0; i < cnt; i++) { - string ssid = createFakeDisinfectionID(); + string ssid = AppTimeIdGenerator::createDisinfectionID(); onAppDisinfectionStartEvent(ssid); auto now = zsystem_clock().now(); diff --git a/appsrc/utils/app_timeid_generator.hpp b/appsrc/utils/app_timeid_generator.hpp new file mode 100644 index 0000000..51f7458 --- /dev/null +++ b/appsrc/utils/app_timeid_generator.hpp @@ -0,0 +1,69 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "iflytop/core/core.hpp" + +namespace iflytop { +using namespace std; + +class AppTimeIdGenerator { + private: + /* data */ + public: + + static string generatoreUserBehaviorTimestamp() { + struct tm tm = {0}; + time_t t = ::time(nullptr); + 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); + } + + static string generatorAuditFileName() { + struct tm tm = {0}; + time_t t = ::time(nullptr); + localtime_r(&t, &tm); + return fmt::format("AUDIT{:0>4}{:0>2}{:0>2}{:0>2}{:0>2}{:0>2}.csv", tm.tm_year + 1900, // + tm.tm_mon + 1, // + tm.tm_mday, // + tm.tm_hour, // + tm.tm_min, tm.tm_sec); + } + + static string createDisinfectionID() { + struct tm tm = {0}; + time_t t = ::time(nullptr); + assert(t != -1 && "time(nullptr) failed"); + struct tm* tmp = localtime_r(&t, &tm); + assert(tmp != nullptr && "localtime_r failed"); + return fmt::format("{:0>4}-{: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); + } + + static string format_zsystem_tp(zsystem_tp tp) { + time_t time = system_clock().to_time_t(tp); + struct tm tm = {0}; + localtime_r(&time, &tm); + return fmt::format("{:0>4}-{: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); + } +}; + +} // namespace iflytop