Browse Source

添加新的接口

master
zhaohe 2 years ago
parent
commit
7190da4c9b
  1. 10
      src/main_control_service.cpp
  2. 62
      src/service/disinfection_logs_manager.cpp
  3. 7
      src/service/disinfection_logs_manager.hpp

10
src/main_control_service.cpp

@ -496,6 +496,16 @@ void MainControlService::processFrontEndMessage_test(weak_ptr<WebSocket> webSock
}
return;
}
if (cmdstr == "disinfectionLogsGetList") {
receipt["disinfectionLogList"] = m_disinfectionLogsManager->getLoggerList();
return;
}
if (cmdstr == "disinfectionLogsGetRecord") {
string loggerName = cmd["disinfectionLogName"];
receipt["record"] = m_disinfectionLogsManager->getlogger(loggerName);
return;
}
}
void MainControlService::processFrontEndMessage_exportData(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt) {

62
src/service/disinfection_logs_manager.cpp

@ -1,5 +1,11 @@
#include "disinfection_logs_manager.hpp"
#include <dirent.h>
#include <errno.h>
#include "iflytop/core/components/fileutils.hpp"
using namespace iflytop;
using namespace core;
using namespace std;
#define LOG_STORGE_PATH "./disinfection_logs/"
@ -35,3 +41,59 @@ shared_ptr<DisinfectionLogger> DisinfectionLogsManager::createNewLogger(string l
logger->initialize(fmt::format("{}{}.csv", LOG_STORGE_PATH, log_file_name));
return logger;
}
static void split(const string& s, vector<string>& sv, const char delim = ' ') {
sv.clear();
istringstream iss(s);
string temp;
while (getline(iss, temp, delim)) {
sv.push_back(temp);
}
return;
}
void DisinfectionLogsManager::list_dir_csvfile(string path, vector<string>& sv) {
sv.clear();
DIR* dir;
struct dirent* ptr;
if ((dir = opendir(path.c_str())) == NULL) {
logger->error("Open dir {} error...", path);
return;
}
while ((ptr = readdir(dir)) != NULL) {
if (ptr->d_name[0] == '.') continue;
if (ptr->d_type == 8) {
string filename = ptr->d_name;
if (filename.find(".csv") != string::npos) {
sv.push_back(filename);
}
}
}
closedir(dir);
return;
}
nlohmann::json DisinfectionLogsManager::getlogger(string log_file_name) {
string content = FileUtils().readFileAsString(fmt::format("{}{}.csv", LOG_STORGE_PATH, log_file_name));
nlohmann::json csvcontent;
vector<string> lines;
split(content, lines, '\n');
for (auto& line : lines) {
csvcontent["content"].push_back(line);
}
return csvcontent;
}
nlohmann::json DisinfectionLogsManager::getLoggerList() {
//
// 1. get all files in LOG_STORGE_PATH
vector<string> files;
list_dir_csvfile(LOG_STORGE_PATH, files);
nlohmann::json loggerlist;
for (auto& file : files) {
// 获取文件名去掉.csv
file = file.substr(0, file.find(".csv"));
loggerlist.push_back(file);
}
return loggerlist;
}

7
src/service/disinfection_logs_manager.hpp

@ -10,6 +10,7 @@
#include <string>
#include <vector>
#include "iflytop/core/basic/nlohmann/json.hpp"
#include "iflytop/core/core.hpp"
namespace iflytop {
using namespace std;
@ -36,6 +37,12 @@ class DisinfectionLogsManager {
void initialize(){};
shared_ptr<DisinfectionLogger> createNewLogger(string log_file_name);
nlohmann::json getlogger(string log_file_name);
nlohmann::json getLoggerList();
private:
void list_dir_csvfile(string path, vector<string>& sv);
};
} // namespace iflytop
Loading…
Cancel
Save