/** * 过期数据删除引擎 **/ #ifndef DELETEEXPIREDFOLDERENGINE_H #define DELETEEXPIREDFOLDERENGINE_H #include "AppCommon.h" #include "EngineBase.h" #include "EngineFactory.h" #include "MyYaml.h" #include "myutils.h" // 定义日期结构体 struct Date { int year; int month; int day; }; class DeleteExpiredFolderEngine : public ai_matrix::EngineBase { public: DeleteExpiredFolderEngine(); ~DeleteExpiredFolderEngine(); APP_ERROR Init() override; APP_ERROR DeInit() override; APP_ERROR Process() override; private: ai_matrix::BaseConfig baseConfig_; ai_matrix::IdentifyConfig identifyConfig_; // 获取某月有多少天 int DaysInMonth(int year, int month); // 解析字符串为日期结构体 Date StrToDate(const std::string &date_str); // 减去指定天数 void SubtractDays(Date &date, int n_days); // 格式化日期结构体为字符串 std::string DateToStr(const Date &date); // 接收一个日期字符串和一个整数n,返回n天前的日期字符串 std::string getDateBeforeNDays(const std::string &input_date, int n_days); void GetSubfolderNames(std::string &directory, std::vector &folder_names); void DeleteFolder(const std::string directory); // 删除向量中小于指定日期的所有元素 void DeleteEarlierDatesFolder(std::string &path, std::vector &subfolders, const Date &reference_date); void DeletePreviousFolder(std::string path, const std::string &date, int n_days); private: std::string strResultPath_; std::string strLogBakPath_; int iDaysNumber_; }; ENGINE_REGIST(DeleteExpiredFolderEngine) #endif