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) {
|
if (update[i].addr_str != NULL) {
|
||||||
ied->channel[0].addr = ntohl(inet_addr(update[i].addr_str)); // DEV_IP
|
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
|
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);
|
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||||
} else {
|
} else {
|
||||||
ied->channel[0].addr = ntohl(inet_addr("0.0.0.0")); // DEV_IP
|
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);
|
printf("ied_usr->addr_str: %s\n", ied->channel[0].addr_str);
|
||||||
}
|
}
|
||||||
if (update[i].port != NULL) {
|
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);
|
memset(channel[i].addr_str, 0, LONGNAME);
|
||||||
channel[i].addr = 0;
|
channel[i].addr = 0;
|
||||||
channel[i].port = 0;
|
channel[i].port = 0;
|
||||||
channel[i].status = 0;
|
channel[i].status = CHANNEL_DISCONNECTED;
|
||||||
channel[i].last_ticks = 0;
|
channel[i].last_ticks = 0;
|
||||||
channel[i].last_send_ticks = 0;
|
channel[i].last_send_ticks = 0;
|
||||||
channel[i].ied_id = 0;
|
channel[i].ied_id = 0;
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ protected:
|
|||||||
<< "\",\"logtype\":\"" << (logtype == LOGTYPE_COM ? "com" : "data")
|
<< "\",\"logtype\":\"" << (logtype == LOGTYPE_COM ? "com" : "data")
|
||||||
<< "\",\"frontType\":\"" << get_front_type_from_subdir()
|
<< "\",\"frontType\":\"" << get_front_type_from_subdir()
|
||||||
// ★新增:输出 code 字段(整型)
|
// ★新增:输出 code 字段(整型)
|
||||||
<< "\",\"code\":" << code
|
<< "\",\"code\":\"" << code
|
||||||
<< "\",\"log\":\"" << escape_json(msg) << "\"}";
|
<< "\",\"log\":\"" << escape_json(msg) << "\"}";
|
||||||
|
|
||||||
std::string jsonString = oss.str();
|
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_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
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_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
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_c] = TypedLogger(device_logger_c, LOGTYPE_COM);
|
||||||
logger_map[device_key_d] = TypedLogger(device_logger_d, LOGTYPE_DATA);
|
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
|
// 监测点 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_c.str()] = TypedLogger(mon_logger_c, LOGTYPE_COM);
|
||||||
logger_map[mon_key_d.str()] = TypedLogger(mon_logger_d, LOGTYPE_DATA);
|
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(); //没找到就插个新的终端类型到列表中
|
Xmldata* config = new Xmldata(); //没找到就插个新的终端类型到列表中
|
||||||
xmlinfo_list.insert(type, config);
|
xmlinfo_list.insert(type, config);
|
||||||
|
|
||||||
|
xmlinfo_list[type]->updataflag = true;//lnk20250820
|
||||||
//调试用lnk20241125
|
//调试用lnk20241125
|
||||||
cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
|
cout << "xmlinfo_list insert type:" << type.toStdString() << endl;
|
||||||
}
|
}
|
||||||
@@ -3421,7 +3422,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
|||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
if(xmlinfo_list[QString::fromUtf8(dev_type)] != NULL){ //原来已存在这个类型的节点
|
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删除
|
//将这个点的xmlcfg和topicList删除
|
||||||
clearXmlConfigAndTopicList(xmlinfo_list[QString::fromUtf8(dev_type)]);
|
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;
|
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@@ -3440,7 +3441,7 @@ void Set_xml_nodeinfo_one(char* dev_type)
|
|||||||
//添加角形
|
//添加角形
|
||||||
if(isdelta_flag){
|
if(isdelta_flag){
|
||||||
if(xmlinfo_list2[QString::fromUtf8(dev_type)] != NULL){ //原来已存在这个类型的节点
|
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删除
|
//将这个点的xmlcfg和topicList删除
|
||||||
clearXmlConfigAndTopicList(xmlinfo_list2[QString::fromUtf8(dev_type)]);
|
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;
|
std::cout << "!!!! this ledger xml config fail!!!!" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ int main(int argc, const char **argv)
|
|||||||
//char buf[256];
|
//char buf[256];
|
||||||
//format_log_msg(buf,sizeof(buf),"前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
//format_log_msg(buf,sizeof(buf),"前置的%s%d号进程 进程级日志初始化完毕", get_front_msg_from_subdir(), g_front_seg_index);
|
||||||
//log_debug("process", buf);
|
//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 _OS_UNIX_
|
||||||
#ifdef QT_NO_DEBUG
|
#ifdef QT_NO_DEBUG
|
||||||
|
|||||||
@@ -321,13 +321,13 @@ void ChannelCheckIECReports(chnl_usr_t *chnl_usr)
|
|||||||
LD_info->registcount++;
|
LD_info->registcount++;
|
||||||
|
|
||||||
if (LD_info->registcount <= 5) {
|
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次就不再打印,并标记
|
// 到5次就不再打印,并标记
|
||||||
if (LD_info->registcount > 5) {
|
if (LD_info->registcount > 5) {
|
||||||
LD_info->has_logged_regist = true;
|
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);
|
LD_info->name, LD_info->mp_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1638,7 +1638,15 @@ void CheckNextNotConnectedChannel()
|
|||||||
chnl_usr->m_reqCtrl = NULL;
|
chnl_usr->m_reqCtrl = NULL;
|
||||||
chnl_usr->net_info->rem_vmd = NULL;
|
chnl_usr->net_info->rem_vmd = NULL;
|
||||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
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
|
else
|
||||||
@@ -1673,6 +1681,14 @@ void CheckNextNotConnectedChannel()
|
|||||||
chnl_usr->m_state = CHANNEL_DISCONNECTED;
|
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1740,6 +1756,9 @@ void CheckNextNotConnectedChannel()
|
|||||||
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||||
apr_time_t t_now = apr_time_now();
|
apr_time_t t_now = apr_time_now();
|
||||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||||
|
//更新状态
|
||||||
|
chnl_usr->chnl->ied->status = STATUS_BREAKOFF;
|
||||||
|
chnl_usr->chnl->status = STATUS_BREAKOFF;
|
||||||
|
|
||||||
//mq日志
|
//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);
|
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;
|
ied_usr_t* ied_usr = (ied_usr_t*)chnl_usr->chnl->ied->usr_ext;
|
||||||
apr_time_t t_now = apr_time_now();
|
apr_time_t t_now = apr_time_now();
|
||||||
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
connectlog_pgsql(ied_usr->terminal_id,convertMsToDateTimeString(t_now),0);
|
||||||
|
//更新状态
|
||||||
|
chnl_usr->chnl->ied->status = STATUS_BREAKOFF;
|
||||||
|
chnl_usr->chnl->status = STATUS_BREAKOFF;
|
||||||
|
|
||||||
//mq日志
|
//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);
|
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
|
//WW 2023-11-01 end
|
||||||
if (ret2 !=APR_SUCCESS){
|
if (ret2 !=APR_SUCCESS){
|
||||||
//mq日志
|
//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装置没有对应的文件时清除录波号段
|
//lnk20250819装置没有对应的文件时清除录波号段
|
||||||
LD_info->FltNum[i] = -1;
|
LD_info->FltNum[i] = -1;
|
||||||
return ret2;
|
return ret2;
|
||||||
|
|||||||
Reference in New Issue
Block a user