modify for ledgerupdate
This commit is contained in:
@@ -187,7 +187,7 @@ QString THREE_SECS_CONFIG_FN = QString("Trigger3S.xml");//ʵʱ
|
||||
QString RECALL_CONFIG_FN = QString("Recall.xml");//<2F><><EFBFBD><EFBFBD>
|
||||
|
||||
//lnk20241220<32><30><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>̨<EFBFBD><CCA8>
|
||||
std::string LEDGER_UPDATE_FN = "LedgerUpdate.xml";
|
||||
std::string LEDGER_UPDATE_FN = "LedgerUpdate.log";
|
||||
|
||||
const int MAX_CPUNO = 10;
|
||||
|
||||
@@ -12809,7 +12809,70 @@ int parse_model_cfg_web()
|
||||
return e.code;
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////////////////////////icdģ<64><C4A3><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>lnk20250116
|
||||
char* parse_model_cfg_web_one(ied_t* ied)
|
||||
{
|
||||
std::vector<std::string> codes;//<2F><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD>
|
||||
QMap<QString, icd_model*> icd_model_map;
|
||||
ied_usr_t* ied_usr;
|
||||
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
// <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
std::string input_jstr = "[";
|
||||
input_jstr += "\"" + std::string(ied_usr->dev_type) + "\"";
|
||||
input_jstr += "]"; // <20><><EFBFBD><EFBFBD> JSON <20><><EFBFBD><EFBFBD>
|
||||
std::cout << "input_jstr: " << input_jstr << std::endl; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
codes.push_back(input_jstr); //<2F><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6>ͺ<EFBFBD><CDBA>б<EFBFBD>-<2D><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>icd<63><64><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
|
||||
parse_model_web(&icd_model_map,codes);
|
||||
|
||||
codes.clear();
|
||||
|
||||
try {
|
||||
char model_id[64];
|
||||
char tmnl_type[64];
|
||||
//char tmnl_factory[64];
|
||||
char file_name[128];
|
||||
char file_path[128];
|
||||
//char timestamp[64];
|
||||
otl_datetime timestamp;//<2F><>ʹ<EFBFBD><CAB9>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QMap<QString, icd_model*>::iterator it;
|
||||
for (it = icd_model_map.begin(); it != icd_model_map.end(); ++it) {
|
||||
icd_model* value = it.value();
|
||||
|
||||
// ȷ<><C8B7> value <20><>Ϊ<EFBFBD><CEAA>
|
||||
if (value != nullptr) {
|
||||
// <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>Ʋ<EFBFBD>ȡֵ
|
||||
strncpy(model_id, value->model_id, sizeof(model_id) - 1);
|
||||
strncpy(tmnl_type, value->tmnl_type, sizeof(tmnl_type) - 1);
|
||||
strncpy(file_path, value->file_path, sizeof(file_path) - 1);
|
||||
strncpy(file_name, value->file_name, sizeof(file_name) - 1);
|
||||
//strncpy(timestamp, value->timestamp, sizeof(timestamp) - 1);
|
||||
|
||||
std::cout << "model_id" << model_id << std::endl;
|
||||
std::cout << "tmnl_type" << tmnl_type << std::endl;
|
||||
std::cout << "filepath" << file_path << std::endl;
|
||||
std::cout << "filename" << file_name << std::endl;
|
||||
|
||||
//lnk20241125<32><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//strncpy(tmnl_type, "PS_NET", sizeof(tmnl_type) - 1);
|
||||
|
||||
Set_xml_databaseinfo(model_id, tmnl_type, file_path, file_name, timestamp.year, timestamp.month, timestamp.day, timestamp.hour, timestamp.minute, timestamp.second);
|
||||
}
|
||||
}
|
||||
return model_id;
|
||||
}
|
||||
catch (otl_exception& e)
|
||||
{
|
||||
printf("\nicd model\"%s\"select error,ERROR code= %d,msg= %s \n", g_strOTLConnect.c_str(), e.code, e.msg);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>нӿڣ<D3BF><DAA3>ݲ<EFBFBD><DDB2>ģ<DEB8><C4A3><EFBFBD><EFBFBD>ܲ<EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
#if 0
|
||||
bool CheckPG_To_Recall_web(long long start, long long end, char* Monitorid)
|
||||
@@ -14265,15 +14328,116 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
return 0;
|
||||
}
|
||||
//3-д<><D0B4>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>///////////////////////////////////
|
||||
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>//////////////////////////////
|
||||
|
||||
//4-<2D><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ļ<EFBFBD>///////////////////////////////////
|
||||
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>//////////////////////////////
|
||||
//5-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>///////////////////////////////////
|
||||
//6-init_rem_dib_table//////////////////////////////
|
||||
//6-init_rem_dib_table///////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////̨<>˸<EFBFBD><CBB8>¼<EFBFBD>¼<EFBFBD><C2BC>־
|
||||
// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0>䲢<EFBFBD><E4B2A2>ʽ<EFBFBD><CABD>Ϊ "YYYY-MM-DD HH:MM:SS"
|
||||
std::string get_current_time() {
|
||||
std::time_t t = std::time(NULL);
|
||||
struct std::tm tm = *std::localtime(&t);
|
||||
|
||||
char buffer[80];
|
||||
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &tm);
|
||||
return std::string(buffer);
|
||||
}
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ŀ
|
||||
void write_log_entry(std::ofstream &log_file, const std::string &action, const std::string &terminal_id, const std::string ¤t_time) {
|
||||
log_file << terminal_id << "\t" << action << "time:" << current_time << "\n";
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>־
|
||||
void create_ledger_log(trigger_update_xml_t* ledger_update_xml) {
|
||||
std::string log_filename = "../etc/" + std::string(LEDGER_UPDATE_FN);
|
||||
std::ofstream log_file(log_filename.c_str(), std::ios::app); // <20><><EFBFBD><D7B7>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
|
||||
if (!log_file.is_open()) {
|
||||
std::cerr << "Failed to open log file: " << log_filename << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::string, std::string> > new_entries; // <20><><EFBFBD>ڴ洢new<65><77>terminal_id<69><64>ʱ<EFBFBD><CAB1>
|
||||
std::vector<std::pair<std::string, std::string> > modify_entries; // <20><><EFBFBD>ڴ洢modify<66><79>terminal_id<69><64>ʱ<EFBFBD><CAB1>
|
||||
std::vector<std::pair<std::string, std::string> > delete_entries; // <20><><EFBFBD>ڴ洢delete<74><65>terminal_id<69><64>ʱ<EFBFBD><CAB1>
|
||||
|
||||
std::string current_time = get_current_time(); // <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> new_updates
|
||||
for (int i = 0; i < ledger_update_xml->new_update_num; ++i) {
|
||||
std::string terminal_id = ledger_update_xml->new_updates[i].terminal_id;
|
||||
new_entries.push_back(std::make_pair(terminal_id, current_time));
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> modify_updates
|
||||
for (int i = 0; i < ledger_update_xml->modify_update_num; ++i) {
|
||||
std::string terminal_id = ledger_update_xml->modify_updates[i].terminal_id;
|
||||
modify_entries.push_back(std::make_pair(terminal_id, current_time));
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> delete_updates
|
||||
for (int i = 0; i < ledger_update_xml->delete_update_num; ++i) {
|
||||
std::string terminal_id = ledger_update_xml->delete_updates[i].terminal_id;
|
||||
delete_entries.push_back(std::make_pair(terminal_id, current_time));
|
||||
}
|
||||
|
||||
// д<><D0B4><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD>
|
||||
if (!new_entries.empty()) {
|
||||
log_file << "<new>\n";
|
||||
for (size_t i = 0; i < new_entries.size(); ++i) {
|
||||
write_log_entry(log_file, "add", new_entries[i].first, new_entries[i].second);
|
||||
}
|
||||
log_file << "</new>\n";
|
||||
}
|
||||
|
||||
if (!modify_entries.empty()) {
|
||||
log_file << "<modify>\n";
|
||||
for (size_t i = 0; i < modify_entries.size(); ++i) {
|
||||
write_log_entry(log_file, "modify", modify_entries[i].first, modify_entries[i].second);
|
||||
}
|
||||
log_file << "</modify>\n";
|
||||
}
|
||||
|
||||
if (!delete_entries.empty()) {
|
||||
log_file << "<delete>\n";
|
||||
for (size_t i = 0; i < delete_entries.size(); ++i) {
|
||||
write_log_entry(log_file, "delete", delete_entries[i].first, delete_entries[i].second);
|
||||
}
|
||||
log_file << "</delete>\n";
|
||||
}
|
||||
|
||||
log_file.close();
|
||||
std::cout << "Ledger log has been updated." << std::endl;
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <20><><EFBFBD><EFBFBD> ied_usr_t <20>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>ݵĺ<DDB5><C4BA><EFBFBD>
|
||||
void clear_ied_usr(ied_t* ied) {
|
||||
if (ied && ied->usr_ext) { // <20><><EFBFBD><EFBFBD> usr_ext <20>Ƿ<EFBFBD>Ϊ NULL
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ա
|
||||
memset(ied_usr->dev_type, 0, sizeof(ied_usr->dev_type));
|
||||
memset(ied_usr->dev_key, 0, sizeof(ied_usr->dev_key));
|
||||
memset(ied_usr->dev_series, 0, sizeof(ied_usr->dev_series));
|
||||
memset(ied_usr->terminal_id, 0, sizeof(ied_usr->terminal_id));
|
||||
memset(ied_usr->org_name, 0, sizeof(ied_usr->org_name));
|
||||
memset(ied_usr->maint_name, 0, sizeof(ied_usr->maint_name));
|
||||
memset(ied_usr->station_name, 0, sizeof(ied_usr->station_name));
|
||||
memset(ied_usr->tmnl_factory, 0, sizeof(ied_usr->tmnl_factory));
|
||||
memset(ied_usr->tmnl_status, 0, sizeof(ied_usr->tmnl_status));
|
||||
memset(ied_usr->terminal_code, 0, sizeof(ied_usr->terminal_code));
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>͵ij<CDB5>Ա
|
||||
ied_usr->dev_idx = 0;
|
||||
ied_usr->dev_flag = 0;
|
||||
ied_usr->cookie = NULL;
|
||||
ied_usr->last_call_wavelist_time = 0;
|
||||
ied_usr->time = 0;
|
||||
ied_usr->update_flag = 0;
|
||||
}
|
||||
}
|
||||
/*<2A><>װC<D7B0>ɵ<EFBFBD><C9B5>õ<EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>º<EFBFBD><C2BA><EFBFBD> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user