Browse Source

集中维护时间ID生成代码

master
zhaohe 1 month ago
parent
commit
8f6065fee3
  1. 14
      appsrc/baseservice/db/user_behavior_record_dao.cpp
  2. 22
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.cpp
  3. 1
      appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp
  4. 28
      appsrc/service/audit_mgr_service.cpp
  5. 50
      appsrc/service/disinfection_logs_service.cpp
  6. 69
      appsrc/utils/app_timeid_generator.hpp

14
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<recursive_mutex> 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<UserBehaviorRecord>();

22
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;

1
appsrc/service/app/disinfection_ctrl/disinfection_ctrl_service.hpp

@ -71,7 +71,6 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
static void updateRemainTime(int dval, float nlog, float tlog, int& remaintime);
bool isTimeToPauseDisinfection();
bool isTimeToResumeDisinfection();
string createDisinfectionID();
public:
// impl

28
appsrc/service/audit_mgr_service.cpp

@ -1,4 +1,6 @@
#include "audit_mgr_service.hpp"
#include "utils/app_timeid_generator.hpp"
using namespace iflytop;
#define EXPORT_PATH "/mnt/exportdata/TrySmet/"
@ -7,23 +9,11 @@ using namespace iflytop;
return err::kappe_udisk_wr_fail; \
}
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);
}
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<MsgProcessContext> cxt, int page, in
// cxt->rely = UserBehaviorRecordDao::ins()->getUserBehaviorRecordDescJson(jsonGet<int>(params["page"]), jsonGet<int>(params["page_size"]));
cxt->rely = UserBehaviorRecordDao::ins()->getUserBehaviorRecordDescJson(page, page_size);
}
void AuditMgrService::pushTestData(shared_ptr<MsgProcessContext> cxt) {
}
void AuditMgrService::pushTestData(shared_ptr<MsgProcessContext> cxt) {}
bool AuditMgrService::dosystem(string cmd) {
logger->info("do cmd: {}", cmd);

50
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<string>& sv) {
sv.clear();
@ -119,25 +102,6 @@ static void split(const string& s, vector<string>& 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<MsgProcessContext> cxt, int cnt) {
for (int i = 0; i < cnt; i++) {
string ssid = createFakeDisinfectionID();
string ssid = AppTimeIdGenerator::createDisinfectionID();
onAppDisinfectionStartEvent(ssid);
auto now = zsystem_clock().now();

69
appsrc/utils/app_timeid_generator.hpp

@ -0,0 +1,69 @@
#pragma once
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#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
Loading…
Cancel
Save