|
|
@@ -1036,13 +1036,79 @@ cJSON* json_to_over_equipment_mintenance(const char* str,_Equipment_Mintenance*
|
|
|
if(cjson_type!=NULL)
|
|
|
_over_equipment_mintenance->type = cjson_type->valuestring;
|
|
|
|
|
|
- cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
|
|
|
- if(cjson_productName!=NULL)
|
|
|
- _over_equipment_mintenance->product_name = cjson_productName->valuestring;
|
|
|
|
|
|
- cJSON* cjson_productNumber = cJSON_GetObjectItem(cjson,"productNumber");
|
|
|
- if(cjson_productNumber!=NULL)
|
|
|
- _over_equipment_mintenance->product_number = cjson_productNumber->valuestring;
|
|
|
+ if(strcmp(_over_equipment_mintenance->type,"switchSave") == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ cJSON* cjson_cjfs = cJSON_GetObjectItem(cjson,"cjfs");
|
|
|
+ if(cjson_cjfs!=NULL)
|
|
|
+ _over_equipment_mintenance->cjfs = cjson_cjfs->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_comkh = cJSON_GetObjectItem(cjson,"comkh");
|
|
|
+ if(cjson_comkh!=NULL)
|
|
|
+ _over_equipment_mintenance->comkh = cjson_comkh->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_cjdz = cJSON_GetObjectItem(cjson,"cjdz");
|
|
|
+ if(cjson_cjdz!=NULL)
|
|
|
+ _over_equipment_mintenance->cjdz = cjson_cjdz->valuestring;
|
|
|
+
|
|
|
+
|
|
|
+ cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
|
|
|
+ if(cjson_jdh!=NULL)
|
|
|
+ _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
|
|
|
+ if(cjson_productChIds!=NULL)
|
|
|
+ _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
|
|
|
+ if(cjson_productId!=NULL)
|
|
|
+ _over_equipment_mintenance->product_id = cjson_productId->valuestring;
|
|
|
+
|
|
|
+
|
|
|
+ // cJSON* cjson_jdh = cJSON_GetObjectItem(cjson,"jdh");
|
|
|
+ // if(cjson_jdh!=NULL)
|
|
|
+ // _over_equipment_mintenance->jdh = cjson_jdh->valuestring;
|
|
|
+ } else if(strcmp(_over_equipment_mintenance->type,"switchUpdate") == 0){
|
|
|
+ cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
|
|
|
+ if(cjson_productId!=NULL)
|
|
|
+ _over_equipment_mintenance->product_id = cjson_productId->valuestring;
|
|
|
+ cJSON* cjson_productChIds = cJSON_GetObjectItem(cjson,"productChIds");
|
|
|
+ if(cjson_productChIds!=NULL)
|
|
|
+ _over_equipment_mintenance->productChids = cjson_productChIds->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
|
|
|
+ if(cjson_switchId!=NULL)
|
|
|
+ _over_equipment_mintenance->switchId = cjson_switchId->valueint;
|
|
|
+
|
|
|
+ cJSON* cjson_switchName = cJSON_GetObjectItem(cjson,"switchName");
|
|
|
+ if(cjson_switchName != NULL)
|
|
|
+ _over_equipment_mintenance->switchName = cjson_switchName->valuestring;
|
|
|
+ }else if (strcmp(_over_equipment_mintenance->type,"switchDelete") == 0){
|
|
|
+ cJSON* cjson_switchId = cJSON_GetObjectItem(cjson,"switchId");
|
|
|
+ if(cjson_switchId!=NULL)
|
|
|
+ _over_equipment_mintenance->switchId = cjson_switchId->valueint;
|
|
|
+
|
|
|
+ cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
|
|
|
+ if(cjson_productId!=NULL)
|
|
|
+ _over_equipment_mintenance->product_id = cjson_productId->valuestring;
|
|
|
+ }else if(strcmp(_over_equipment_mintenance->type,"listSwitchtatusQuery") == 0)
|
|
|
+ {
|
|
|
+ cJSON* cjson_productId = cJSON_GetObjectItem(cjson,"productId");
|
|
|
+ if(cjson_productId!=NULL)
|
|
|
+ _over_equipment_mintenance->product_id = cjson_productId->valuestring;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+
|
|
|
+ cJSON* cjson_productName = cJSON_GetObjectItem(cjson,"productName");
|
|
|
+ if(cjson_productName!=NULL)
|
|
|
+ _over_equipment_mintenance->product_name = cjson_productName->valuestring;
|
|
|
+
|
|
|
+ cJSON* cjson_productNumber = cJSON_GetObjectItem(cjson,"productNumber");
|
|
|
+ if(cjson_productNumber!=NULL)
|
|
|
+ _over_equipment_mintenance->product_number = cjson_productNumber->valuestring;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
return cjson;
|
|
|
}
|
|
|
@@ -1160,6 +1226,69 @@ char* over_all_monitor_to_json(_OverBackStsInfo* _over_back_sts_info)
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
+/// @brief return breaker device list information
|
|
|
+/// @param _over_back_sts_info
|
|
|
+/// @return
|
|
|
+char* over_breaker_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackBreakerInfo* _over_back_sts_info,bool curFlag)
|
|
|
+{
|
|
|
+ int i,r;
|
|
|
+ char* str = NULL;
|
|
|
+ dev_list_t dl;
|
|
|
+ char temp[100] = {0};
|
|
|
+
|
|
|
+ // 创建 JSON 对象
|
|
|
+ cJSON* root = cJSON_CreateObject();
|
|
|
+ if(root) {
|
|
|
+ cJSON_AddNumberToObject(root, "code", 200);
|
|
|
+
|
|
|
+ cJSON* root_array = cJSON_CreateArray();
|
|
|
+ if(root_array) {
|
|
|
+ r = cascade_get_dlist(&dl);
|
|
|
+ if(r==0) {
|
|
|
+ for(i=0; i<dl.cnt; i++) {
|
|
|
+ cJSON* data_filed = cJSON_CreateObject();
|
|
|
+ if(data_filed) {
|
|
|
+ if(dl.slave[i].addr==0) {
|
|
|
+ sprintf(temp, "%s", _over_back_sts_info->product_name);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.slave[i].addr);
|
|
|
+ }
|
|
|
+
|
|
|
+ cJSON_AddStringToObject(data_filed, "productName", temp);
|
|
|
+
|
|
|
+ sprintf(temp, "%d", dl.slave[i].addr);
|
|
|
+ cJSON_AddStringToObject(data_filed, "productId", temp);
|
|
|
+ //cJSON_AddNumberToObject(data_filed, "productId", dl.slave[i].addr);
|
|
|
+
|
|
|
+ cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
|
|
|
+
|
|
|
+ cJSON_AddNumberToObject(data_filed, "productType", _over_back_sts_info->product_type);
|
|
|
+
|
|
|
+ cJSON_AddItemToArray(root_array, data_filed);
|
|
|
+ }
|
|
|
+ //如果是listSbWhQuery请求,只推送当前PDU信息
|
|
|
+ if (curFlag)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ cascade_free_dlist(&dl);
|
|
|
+ }
|
|
|
+ cJSON_AddItemToObject(root, "data", root_array);
|
|
|
+ }
|
|
|
+ cJSON_AddStringToObject(root, "msg", "操作成功");
|
|
|
+
|
|
|
+ str = cJSON_Print(root);
|
|
|
+
|
|
|
+ cJSON_Delete(root);
|
|
|
+ }
|
|
|
+
|
|
|
+ return str;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/// @brief 返回设备列表
|
|
|
/// @param _over_back_sts_info
|
|
|
/// @return
|
|
|
@@ -1434,6 +1563,21 @@ char* ctrl_sts_ack_to_json(void)
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
+char* ctrl_breaker_err_ack_to_json(char *string)
|
|
|
+{
|
|
|
+ char* str = NULL;
|
|
|
+ // 创建 JSON 对象
|
|
|
+ cJSON* root = cJSON_CreateObject();
|
|
|
+ // 添加基本键值对
|
|
|
+ cJSON_AddNumberToObject(root, "code", 201);
|
|
|
+ //添加结果
|
|
|
+ cJSON_AddStringToObject(root, "msg", string);
|
|
|
+ //转换
|
|
|
+ str = cJSON_Print(root);
|
|
|
+ //释放资源
|
|
|
+ cJSON_Delete(root);
|
|
|
+ return str;
|
|
|
+}
|
|
|
|
|
|
/// @brief 返回历史信息
|
|
|
/// @param _globalPowerInfo
|
|
|
@@ -2336,6 +2480,151 @@ cJSON* json_to_sensor_manage(const char* str,_OverSensorRequest* _overSensorRequ
|
|
|
return cjson;
|
|
|
}
|
|
|
|
|
|
+/// @brief return breaker chn information
|
|
|
+/// @param _over_all_pwr_back_info
|
|
|
+/// @return
|
|
|
+char* over_all_breaker_chn_info_to_json(_OverBreakerChnInfo* _over_all_breaker_back_info,int nWSType)
|
|
|
+{
|
|
|
+ char* str = NULL;
|
|
|
+ struct list_head *pos;
|
|
|
+ _OverBreakerChnInfo* _temp = NULL;
|
|
|
+
|
|
|
+ char temp_buf[16] = {0};
|
|
|
+ // 创建 JSON 对象
|
|
|
+ cJSON* root = cJSON_CreateObject();
|
|
|
+ // 添加基本键值对
|
|
|
+
|
|
|
+
|
|
|
+ // 添加基本键值对
|
|
|
+ cJSON* sdata_filed = cJSON_CreateObject();
|
|
|
+ // 创建数据
|
|
|
+ cJSON *data_root_array = cJSON_CreateArray();
|
|
|
+ if (nWSType)
|
|
|
+ {
|
|
|
+ cJSON_AddNumberToObject(sdata_filed, "code", 200);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cJSON_AddNumberToObject(root, "code", 200);
|
|
|
+ }
|
|
|
+ list_for_each_entry(_temp, &_over_all_breaker_back_info->list, list)
|
|
|
+ {
|
|
|
+ char temp[32] = {0};
|
|
|
+ cJSON* data_filed = cJSON_CreateObject();
|
|
|
+ cJSON_AddStringToObject(data_filed, "productName",_temp->product_name);
|
|
|
+ cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
|
|
|
+ cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_name);
|
|
|
+ cJSON_AddStringToObject(data_filed, "productChName",_temp->product_ch_name);
|
|
|
+ cJSON_AddNumberToObject(data_filed,"productChId",_temp->product_ch_id);
|
|
|
+ cJSON_AddItemToObject(data_root_array, "data", data_filed);
|
|
|
+ }
|
|
|
+ if (nWSType)
|
|
|
+ {
|
|
|
+ // 添加汇总
|
|
|
+ cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
|
|
|
+ // 添加结果
|
|
|
+ cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
|
|
|
+ cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
|
+ // 添加内容
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
+ cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
|
+ cJSON_AddBoolToObject(root, "success", true);
|
|
|
+ cJSON_AddStringToObject(root, "type", "sensorStatusMonitoring");
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ cJSON_AddItemToObject(root, "data", data_root_array);
|
|
|
+ // 添加内容
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
+ }
|
|
|
+ //转换
|
|
|
+ str = cJSON_Print(root);
|
|
|
+ //释放资源
|
|
|
+ cJSON_Delete(root);
|
|
|
+ return str;
|
|
|
+}
|
|
|
+
|
|
|
+/// @brief return breaker switch information
|
|
|
+/// @param _over_all_pwr_back_info
|
|
|
+/// @return
|
|
|
+char* over_all_breaker_switch_info_to_json(_OverBreakerSwitchInfo* _over_all_breaker_switch_info,int nWSType)
|
|
|
+{
|
|
|
+ char* str = NULL;
|
|
|
+ struct list_head *pos;
|
|
|
+ _OverBreakerSwitchInfo* _temp = NULL;
|
|
|
+
|
|
|
+ char temp_buf[16] = {0};
|
|
|
+ // 创建 JSON 对象
|
|
|
+ cJSON* root = cJSON_CreateObject();
|
|
|
+ // 添加基本键值对
|
|
|
+
|
|
|
+
|
|
|
+ // 添加基本键值对
|
|
|
+ cJSON* sdata_filed = cJSON_CreateObject();
|
|
|
+ // 创建数据
|
|
|
+ cJSON *data_root_array = cJSON_CreateArray();
|
|
|
+ if (nWSType)
|
|
|
+ {
|
|
|
+ cJSON_AddNumberToObject(sdata_filed, "code", 200);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ cJSON_AddNumberToObject(root, "code", 200);
|
|
|
+ }
|
|
|
+ list_for_each_entry(_temp, &_over_all_breaker_switch_info->list, list)
|
|
|
+ {
|
|
|
+ char temp[32] = {0};
|
|
|
+ cJSON* data_filed = cJSON_CreateObject();
|
|
|
+ cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
|
|
|
+ cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
|
|
|
+ cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
|
|
|
+ cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
|
|
|
+ cJSON_AddStringToObject(data_filed,"productChIds",_temp->productChids);
|
|
|
+ cJSON_AddNumberToObject(data_filed,"switchId",_temp->switch_id);
|
|
|
+ cJSON_AddNumberToObject(data_filed, "switchStatus",_temp->status);
|
|
|
+ cJSON_AddStringToObject(data_filed, "switchName",_temp->switch_name);
|
|
|
+ cJSON_AddStringToObject(data_filed,"cjfs",_temp->cjfs);
|
|
|
+ cJSON_AddStringToObject(data_filed,"comkh",_temp->comkh);
|
|
|
+ cJSON_AddStringToObject(data_filed,"cjdz",_temp->cjdz);
|
|
|
+ cJSON_AddStringToObject(data_filed,"jdh",_temp->jdh);
|
|
|
+ cJSON_AddItemToObject(data_root_array, "data", data_filed);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(list_empty(&_over_all_breaker_switch_info->list))
|
|
|
+ {
|
|
|
+ cJSON* data_filed = cJSON_CreateObject();
|
|
|
+ // cJSON_AddStringToObject(data_filed, "productName",_temp->productName);
|
|
|
+ // cJSON_AddNumberToObject(data_filed,"productId",_temp->product_id);
|
|
|
+ // cJSON_AddStringToObject(data_filed, "productNumber",_temp->product_number);
|
|
|
+ // cJSON_AddStringToObject(data_filed, "productChNames",_temp->product_ch_name);
|
|
|
+ cJSON_AddItemToObject(data_root_array, "data", data_filed);
|
|
|
+ }
|
|
|
+ if (nWSType)
|
|
|
+ {
|
|
|
+ // 添加汇总
|
|
|
+ cJSON_AddItemToObject(sdata_filed, "data", data_root_array);
|
|
|
+ // 添加结果
|
|
|
+ cJSON_AddStringToObject(sdata_filed, "msg", "操作成功");
|
|
|
+ cJSON_AddItemToObject(root, "data", sdata_filed);
|
|
|
+ // 添加内容
|
|
|
+ cJSON_AddStringToObject(root, "message", "提示信息");
|
|
|
+ cJSON_AddStringToObject(root, "socketIdx", "PDU-WebSocket");
|
|
|
+ cJSON_AddBoolToObject(root, "success", true);
|
|
|
+ cJSON_AddStringToObject(root, "type", "switchEquipmentMintenance");
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ cJSON_AddItemToObject(root, "data", data_root_array);
|
|
|
+ // 添加内容
|
|
|
+ cJSON_AddStringToObject(root, "message", "操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ //转换
|
|
|
+ str = cJSON_Print(root);
|
|
|
+ //释放资源
|
|
|
+ cJSON_Delete(root);
|
|
|
+ return str;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/// @brief 返回传感器信息
|
|
|
/// @param _over_all_pwr_back_info
|
|
|
/// @return
|
|
|
@@ -2452,6 +2741,60 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
|
|
|
cJSON_Delete(root);
|
|
|
return str;
|
|
|
}
|
|
|
+char *breaker_status_ack_to_json(GlobalDeviceManager *gm,int slave)
|
|
|
+{
|
|
|
+ char *strRet = NULL;
|
|
|
+ GlobalBreakerManager *_globalbreakerManger = &gm->g_new_global_breaker;
|
|
|
+ GlobalBreakerManager* temp = NULL;
|
|
|
+ _OverBreakerSwitchInfo _over_breaker_switch_info;
|
|
|
+ INIT_LIST_HEAD(&_over_breaker_switch_info.list);
|
|
|
+
|
|
|
+ pthread_mutex_lock(&gm->_breaker_mutex);
|
|
|
+ list_for_each_entry(temp, &_globalbreakerManger->list, list)
|
|
|
+ {
|
|
|
+ char buff[120] = {0};
|
|
|
+// printf("get listSwitchtatusQuery infomation!!!\n");
|
|
|
+ _OverBreakerSwitchInfo *info = (_OverBreakerSwitchInfo *)
|
|
|
+ malloc(sizeof(_OverBreakerSwitchInfo));
|
|
|
+ memset(info,0,sizeof(_OverBreakerSwitchInfo));
|
|
|
+ info->product_id = temp->product_id;
|
|
|
+ sprintf(buff,"Breaker_%d",temp->breaker_id);
|
|
|
+ strcpy(info->product_ch_name,buff);
|
|
|
+ if(slave)
|
|
|
+ {
|
|
|
+ sprintf(buff,"%s %d",__globalDeviceManage._global_device_info->product_name, slave);
|
|
|
+ strcpy(info->productName,buff);
|
|
|
+ }else
|
|
|
+ strcpy(info->productName,__globalDeviceManage._global_device_info->product_name);
|
|
|
+ strcpy(info->product_number,__globalDeviceManage._global_device_info->product_number);
|
|
|
+ strcpy(info->productChids,temp->breaker_chns_name);
|
|
|
+ info->switch_id = temp->breaker_id;
|
|
|
+ info->status = temp->breaker_status;
|
|
|
+ strcpy(info->cjfs,temp->breaker_gather_type);
|
|
|
+ strcpy(info->switch_name,temp->breaker_switch_name);
|
|
|
+ strcpy(info->comkh,temp->breaker_com);
|
|
|
+ sprintf(buff,"%d",temp->breaker_gather_addr);
|
|
|
+ strcpy(info->cjdz,buff);
|
|
|
+ sprintf(buff,"%d",temp->breaker_chn);
|
|
|
+ strcpy(info->jdh,buff);
|
|
|
+ //printf("push %s %d %d %s %s %s %s\n",info->productChids,info->switch_id,info->status,info->cjfs,info->comkh,info->cjdz,info->jdh);
|
|
|
+ list_add_tail(&info->list,&_over_breaker_switch_info.list);
|
|
|
+ }
|
|
|
+ pthread_mutex_unlock(&gm->_breaker_mutex);
|
|
|
+ strRet = over_all_breaker_switch_info_to_json(&_over_breaker_switch_info,1);
|
|
|
+ //释放资源
|
|
|
+ _OverBreakerSwitchInfo* node;
|
|
|
+ _OverBreakerSwitchInfo* next;
|
|
|
+ list_for_each_entry_safe(node, next, &_over_breaker_switch_info.list, list)
|
|
|
+ {
|
|
|
+ list_del(&node->list);
|
|
|
+ free(node);
|
|
|
+ }
|
|
|
+ return strRet;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* @brief 将传感器状态应答转换为 JSON 字符串
|
|
|
*
|