modify for ledgerupdate

This commit is contained in:
lnk
2025-01-17 17:10:18 +08:00
parent 040b1bd5f6
commit 760dffe884
5 changed files with 386 additions and 48 deletions

View File

@@ -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 &current_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> */////////////////////////////////////////////////////////////////////////////////////////////////////////////////////