fix ledger update
This commit is contained in:
@@ -5427,10 +5427,12 @@ int update_one_terminal_ledger(terminal* update, int i,ied_t* ied,int terminal_i
|
||||
if (update[i].addr_str != NULL) {
|
||||
ied->channel[0].addr = ntohl(inet_addr(update[i].addr_str)); // DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, update[i].addr_str, LONGNAME - 1); // DEV_IP
|
||||
ied->channel[0].addr_str[LONGNAME-1] = '\0';
|
||||
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||
} else {
|
||||
ied->channel[0].addr = ntohl(inet_addr("0.0.0.0")); // DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, update[i].addr_str, LONGNAME - 1); // DEV_IP
|
||||
strncpy(ied->channel[0].addr_str, "0.0.0.0", LONGNAME - 1); // DEV_IP
|
||||
ied->channel[0].addr_str[LONGNAME-1] = '\0';
|
||||
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||
}
|
||||
if (update[i].port != NULL) {
|
||||
@@ -6194,7 +6196,7 @@ void clear_channel_and_cpuinfo(byte_t chncount, channel_t *channel, byte_t cpuco
|
||||
memset(channel[i].addr_str, 0, LONGNAME);
|
||||
channel[i].addr = 0;
|
||||
channel[i].port = 0;
|
||||
channel[i].status = 0;
|
||||
channel[i].status = CHANNEL_DISCONNECTED;
|
||||
channel[i].last_ticks = 0;
|
||||
channel[i].last_send_ticks = 0;
|
||||
channel[i].ied_id = 0;
|
||||
|
||||
@@ -159,7 +159,7 @@ protected:
|
||||
<< "\",\"logtype\":\"" << (logtype == LOGTYPE_COM ? "com" : "data")
|
||||
<< "\",\"frontType\":\"" << get_front_type_from_subdir()
|
||||
// ★新增:输出 code 字段(整型)
|
||||
<< "\",\"code\":" << code
|
||||
<< "\",\"code\":\"" << code
|
||||
<< "\",\"log\":\"" << escape_json(msg) << "\"}";
|
||||
|
||||
std::string jsonString = oss.str();
|
||||
@@ -340,7 +340,7 @@ void init_loggers_bydevid(const char* dev_id)
|
||||
logger_map[device_key_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_INFOLOG(device_key_d.c_str(),"【WARN】终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
DIY_INFOLOG(device_key_d.c_str(),"【NORMAL】终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
}
|
||||
|
||||
// 初始化监测点
|
||||
@@ -369,7 +369,7 @@ void init_loggers_bydevid(const char* dev_id)
|
||||
logger_map[mon_key_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_INFOLOG(mon_key_d.str().c_str(),"【WARN】监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
DIY_INFOLOG(mon_key_d.str().c_str(),"【NORMAL】监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,7 +418,7 @@ void init_loggers() {
|
||||
logger_map[device_key_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_INFOLOG(device_key_d.c_str(),"【WARN】终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
DIY_INFOLOG(device_key_d.c_str(),"【NORMAL】终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
|
||||
// 初始化监测点
|
||||
// 监测点 logger 名称格式:monitor.<mp_id>.COM / .DATA
|
||||
@@ -443,7 +443,7 @@ void init_loggers() {
|
||||
logger_map[mon_key_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
||||
|
||||
DIY_INFOLOG(mon_key_d.str().c_str(),"【WARN】监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
DIY_INFOLOG(mon_key_d.str().c_str(),"【NORMAL】监测点:%s - id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].name,ied_usr->LD_info[i].mp_id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2612,6 +2612,7 @@ void Set_xml_databaseinfo(char* MODEL_ID, char* TMNL_TYPE, char* FILE_PATH, char
|
||||
Xmldata* config = new Xmldata(); //没找到就插个新的终端类型到列表中
|
||||
xmlinfo_list.insert(type, config);
|
||||
|
||||
xmlinfo_list[type]->updataflag = true;//lnk20250820
|
||||
//调试用lnk20241125
|
||||
cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
|
||||
}
|
||||
@@ -3421,7 +3422,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
||||
bool ret = false;
|
||||
|
||||
if(xmlinfo_list[QString::fromUtf8(dev_type)] != NULL){ //原来已存在这个类型的节点
|
||||
if(xmlinfo_list[QString::fromUtf8(dev_type)]->updataflag == true){ //需要更新
|
||||
//if(xmlinfo_list[QString::fromUtf8(dev_type)]->updataflag == true){ //需要更新
|
||||
|
||||
//将这个点的xmlcfg和topicList删除
|
||||
clearXmlConfigAndTopicList(xmlinfo_list[QString::fromUtf8(dev_type)]);
|
||||
@@ -3431,7 +3432,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
||||
{
|
||||
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
}
|
||||
else{
|
||||
@@ -3440,7 +3441,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
||||
//添加角形
|
||||
if(isdelta_flag){
|
||||
if(xmlinfo_list2[QString::fromUtf8(dev_type)] != NULL){ //原来已存在这个类型的节点
|
||||
if(xmlinfo_list2[QString::fromUtf8(dev_type)]->updataflag == true){ //需要更新
|
||||
//if(xmlinfo_list2[QString::fromUtf8(dev_type)]->updataflag == true){ //需要更新
|
||||
|
||||
//将这个点的xmlcfg和topicList删除
|
||||
clearXmlConfigAndTopicList(xmlinfo_list2[QString::fromUtf8(dev_type)]);
|
||||
@@ -3450,7 +3451,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
||||
{
|
||||
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -232,7 +232,7 @@ int main(int argc, const char **argv)
|
||||
//char buf[256];
|
||||
//format_log_msg(buf,sizeof(buf),"前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
||||
//log_debug("process", buf);
|
||||
DIY_INFOLOG("process","【WARN】前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
||||
DIY_INFOLOG("process","【NORMAL】前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
||||
|
||||
#ifdef _OS_UNIX_
|
||||
#ifdef QT_NO_DEBUG
|
||||
|
||||
@@ -321,13 +321,13 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
|
||||
LD_info->registcount++;
|
||||
|
||||
if (LD_info->registcount <= 5) {
|
||||
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_REPORT,"【ERROR】监测点:%s - id:%s补招数据失败,监测点缺少报告控制块,请检查装置对应的装置类型是否有配对的icd模型", LD_info->name,LD_info->mp_id);
|
||||
DIY_ERRORLOG_CODE(full_key_m_c,LOG_CODE_REPORT,"【ERROR】监测点:%s - id:%s报告触发失败,监测点逻辑标识号为0,请检查装置对应的台账信息是否正确", LD_info->name,LD_info->mp_id);
|
||||
}
|
||||
|
||||
// 到5次就不再打印,并标记
|
||||
if (LD_info->registcount > 5) {
|
||||
LD_info->has_logged_regist = true;
|
||||
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_REPORT,"【WARN】监测点:%s - id:%s缺少报告控制块日志已达本次记录上限,不再输出,请检查装置对应的装置类型是否有配对的icd模型",
|
||||
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_REPORT,"【WARN】监测点:%s - id:%s监测点逻辑标识号错误日志已达本次记录上限,不再输出,请检查装置对应的台账信息是否正确",
|
||||
LD_info->name, LD_info->mp_id);
|
||||
}
|
||||
}
|
||||
@@ -1638,7 +1638,15 @@ void CheckNextNotConnectedChannel()
|
||||
chnl_usr->m_reqCtrl = NULL;
|
||||
chnl_usr->net_info->rem_vmd = NULL;
|
||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||
chnl_usr->m_ClosedMsTime = sGetMsTime();
|
||||
chnl_usr->m_ClosedMsTime = sGetMsTime();
|
||||
|
||||
//断联成功
|
||||
|
||||
apr_time_t t_now = apr_time_now();
|
||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||
//更新状态
|
||||
chnl_usr->chnl->ied->status = STATUS_OVERTIME;
|
||||
chnl_usr->chnl->status = STATUS_OVERTIME;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1673,6 +1681,14 @@ void CheckNextNotConnectedChannel()
|
||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
||||
chnl_usr->m_ClosedMsTime = sGetMsTime();
|
||||
|
||||
//断联
|
||||
|
||||
apr_time_t t_now = apr_time_now();
|
||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||
//更新状态
|
||||
chnl_usr->chnl->ied->status = STATUS_OVERTIME;
|
||||
chnl_usr->chnl->status = STATUS_OVERTIME;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1740,6 +1756,9 @@ void CheckNextNotConnectedChannel()
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||
apr_time_t t_now = apr_time_now();
|
||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||
//更新状态
|
||||
chnl_usr->chnl->ied->status = STATUS_BREAKOFF;
|
||||
chnl_usr->chnl->status = STATUS_BREAKOFF;
|
||||
|
||||
//mq日志
|
||||
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip端口:%s:%d 断连完成,关闭连接通道", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port);
|
||||
@@ -1767,6 +1786,9 @@ void CheckNextNotConnectedChannel()
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||
apr_time_t t_now = apr_time_now();
|
||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||
//更新状态
|
||||
chnl_usr->chnl->ied->status = STATUS_BREAKOFF;
|
||||
chnl_usr->chnl->status = STATUS_BREAKOFF;
|
||||
|
||||
//mq日志
|
||||
DIY_WARNLOG_CODE(full_key_t_c,LOG_CODE_COMM,"【WARN】终端%s - ip端口:%s:%d 断连未完成,但是已经超时180秒,关闭连接通道", ((ied_usr_t*)(chnl_usr->chnl->ied->usr_ext))->terminal_id,chnl_usr->ip_str,chnl_usr->chnl->port);
|
||||
@@ -1969,7 +1991,7 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
|
||||
//WW 2023-11-01 end
|
||||
if (ret2 !=APR_SUCCESS){
|
||||
//mq日志
|
||||
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,前置清除这个录波号段", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
||||
DIY_WARNLOG_CODE(full_key_m_c,LOG_CODE_COMTRADE_FILE,"【WARN】监测点:%s - id:%s前置记录的录波事件上传的录波号段%d与从装置获取的录波文件列表匹配失败,装置没有对应的号段的录波文件,清除该记录", LD_info->name,LD_info->mp_id,LD_info->FltNum[i]);
|
||||
//lnk20250819装置没有对应的文件时清除录波号段
|
||||
LD_info->FltNum[i] = -1;
|
||||
return ret2;
|
||||
|
||||
Reference in New Issue
Block a user