#include "devicemanager.h" DeviceManager::DeviceManager(QObject *parent) : QObject(parent) { } bool DeviceManager::DoLoadDeviceData() { m_deviceDataList.clear(); lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI(); if(httpApi == nullptr) { return false; } //加载发射机监测点配置数据 QJsonObject jsParam { {"nchnid", 0}, {"typecode_1", TZ_PT_CODE_1}, {"typecode_2", TZ_PT_CODE_2} }; QJsonObject jsRoot { {"opName", "TZCJ_GetMonitorPinByChannel"}, {"paramList", jsParam} }; QJsonDocument doc; doc.setObject(jsRoot); QByteArray post_Array = doc.toJson(QJsonDocument::Compact); QString strRetJson; QString strtoken = singletonWork::instance()->GetServerToken(); if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson)) { LH_WRITE_ERROR("获取频率参数信息失败!"); return false; } QByteArray baJson = strRetJson.toUtf8(); QJsonParseError jsonError; QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError); if(jsonError.error != QJsonParseError::NoError) { LH_WRITE_ERROR(jsonError.errorString()); } QJsonObject rootObj = doucment.object(); if(!rootObj.contains("result")) { LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson)); } QJsonArray jsResult = rootObj.value("result").toArray(); for(int i = 0; i < jsResult.count(); i++) { QJsonValue jsValue = jsResult.at(i); QJsonObject jsObject = jsValue.toObject(); tDeviceData dev; dev.nChnID = jsObject.value("chnid").toInt(); dev.nMPID = jsObject.value("mpid").toInt(); dev.nDeviceID = jsObject.value("did").toInt(); dev.strDevName = jsObject.value("dname").toString(); dev.strChnName = jsObject.value("chnname").toString(); dev.strMPName = jsObject.value("mname").toString(); dev.strMaddress = jsObject.value("maddress").toString(); m_deviceDataList.append(dev); } if(m_deviceDataList.size() < 1) { return false; } return DoLoadTranPin(); } bool DeviceManager::DoLoadTranPin() { lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI(); if(httpApi == nullptr) { return false; } //加载发射机监测点配置数据 QJsonObject jsParam { {"nchnid", 0}, {"typecode_1", TRANSMITTER_PT_CODE_1}, {"typecode_2", TRANSMITTER_PT_CODE_2} }; QJsonObject jsRoot { {"opName", "TZCJ_GetMonitorPinByChannel"}, {"paramList", jsParam} }; QJsonDocument doc; doc.setObject(jsRoot); QByteArray post_Array = doc.toJson(QJsonDocument::Compact); QString strRetJson; QString strtoken = singletonWork::instance()->GetServerToken(); if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson)) { LH_WRITE_ERROR("获取频率参数信息失败!"); return false; } QByteArray baJson = strRetJson.toUtf8(); QJsonParseError jsonError; QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError); if(jsonError.error != QJsonParseError::NoError) { LH_WRITE_ERROR(jsonError.errorString()); } QJsonObject rootObj = doucment.object(); if(!rootObj.contains("result")) { LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson)); } QJsonArray jsResult = rootObj.value("result").toArray(); for(int i = 0; i < jsResult.count(); i++) { QJsonValue jsValue = jsResult.at(i); QJsonObject jsObject = jsValue.toObject(); tMPinData pin; pin.nChnID = jsObject.value("chnid").toInt(); pin.nMPID = jsObject.value("mpid").toInt(); pin.nDeviceID = jsObject.value("did").toInt(); pin.nFlags = jsObject.value("dclass").toInt(); pin.strDevName = jsObject.value("dname").toString(); pin.strMPName = jsObject.value("mname").toString(); pin.strMaddress = jsObject.value("maddress").toString(); m_transDataList.append(pin); } return true; } bool DeviceManager::DoLoadServiceConfig(int nServiceID) { lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI(); if(httpApi == nullptr) { return false; } //加载发射机监测点配置数据 QJsonObject jsParam { {"id", nServiceID} }; QJsonObject jsRoot { {"opName", "EQM_GetServiceConfigById"}, {"paramList", jsParam} }; QJsonDocument doc; doc.setObject(jsRoot); QByteArray post_Array = doc.toJson(QJsonDocument::Compact); QString strRetJson; QString strtoken = singletonWork::instance()->GetServerToken(); if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson)) { LH_WRITE_ERROR("获取频率参数信息失败!"); return false; } QByteArray baJson = strRetJson.toUtf8(); QJsonParseError jsonError; QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError); if(jsonError.error != QJsonParseError::NoError) { LH_WRITE_ERROR(jsonError.errorString()); } QJsonObject rootObj = doucment.object(); if(!rootObj.contains("result")) { LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson)); } QJsonArray serverList = rootObj.value(QLatin1String("result")).toArray(); QJsonObject jsSetinginfo = serverList.at(0).toObject(); QString strSetInfo = jsSetinginfo.value("setinginfo").toString(); QJsonDocument jsonDoc(QJsonDocument::fromJson(strSetInfo.toStdString().data(), &jsonError)); if(!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError) { QJsonObject jObj = jsonDoc.object(); m_transServerIP = jObj.value("transserverip").toString(); m_transServerPort = jObj.value("transserverport").toInt(); QJsonArray array = jObj.value("montzdevice").toArray(); for(int i = 0; i < array.count(); i++) { QJsonObject mpjson = array.at(i).toObject(); tTZConfig temp; temp.mpid = mpjson.value("mpid").toInt(); temp.enable = mpjson.value("enable").toBool(); temp.address = mpjson.value("address").toString(); temp.port = mpjson.value("port").toInt(); temp.slaveid = mpjson.value("slaveid").toInt(); temp.hosttransmpid = mpjson.value("hosttransmpid").toInt(); temp.backtransmpid = mpjson.value("backtransmpid").toInt(); temp.emergencympid = mpjson.value("emergencympid").toInt(); temp.enablemutilchannel = mpjson.value("enablemutilchannel").toBool(); temp.powerofftime = mpjson.value("powerofftime").toInt(); m_tzConfigList.append(temp); } } return true; } void DeviceManager::GetDeviceConfig(int nMPID, tTZConfig& config) { for(int i = 0; i < m_tzConfigList.size(); i++) { if(m_tzConfigList.at(i).mpid == nMPID) { config = m_tzConfigList.at(i); break; } } } void DeviceManager::SetDeviceConfig(int nMPID, tTZConfig &config) { bool bFind = false; for(int i = 0; i < m_tzConfigList.size(); i++) { if(m_tzConfigList.at(i).mpid == nMPID) { bFind = true; m_tzConfigList[i] = config; break; } } if(!bFind) { m_tzConfigList.append(config); } } void DeviceManager::GetMonitorByID(int nMPID, tMPinData& pin) { for(int i = 0; i < m_transDataList.size(); i++) { if(m_transDataList.at(i).nMPID == nMPID) { pin = m_transDataList.at(i); break; } } } bool DeviceManager::DoSaveServiceConfig(int nServiceID) { lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI(); if(httpApi == nullptr) { return false; } QJsonArray devArray; for(int i = 0; i < m_tzConfigList.size(); i++) { QJsonObject mpObj { {"mpid", m_tzConfigList.at(i).mpid}, {"enable", m_tzConfigList.at(i).enable}, {"address", m_tzConfigList.at(i).address}, {"port", m_tzConfigList.at(i).port}, {"slaveid", m_tzConfigList.at(i).slaveid}, {"hosttransmpid", m_tzConfigList.at(i).hosttransmpid}, {"backtransmpid", m_tzConfigList.at(i).backtransmpid}, {"emergencympid", m_tzConfigList.at(i).emergencympid}, {"enablemutilchannel", m_tzConfigList.at(i).enablemutilchannel}, {"powerofftime", m_tzConfigList.at(i).powerofftime}, }; devArray.append(mpObj); } QJsonObject rootObj { {"transserverip", m_transServerIP}, {"transserverport", m_transServerPort}, {"montzdevice", devArray} }; QJsonObject jsParam { {"setinfo", QString::fromUtf8(QJsonDocument(rootObj).toJson(QJsonDocument::Compact))}, {"id", nServiceID} }; QJsonObject jsRoot { {"opName", "EQM_UpdateServerSetInfo"}, {"paramList", jsParam} }; QJsonDocument doc; doc.setObject(jsRoot); QByteArray post_Array = doc.toJson(QJsonDocument::Compact); QString strtoken = singletonWork::instance()->GetServerToken(); QString strRetJson; if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_UPDATE, QString::fromUtf8(post_Array), strRetJson)) { LH_WRITE_ERROR("保存配置信息失败!"); return false; } // QByteArray baJson = strRetJson.toUtf8(); QJsonParseError jsonError; QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError); if(jsonError.error != QJsonParseError::NoError) { LH_WRITE_ERROR(jsonError.errorString()); } QJsonObject obj = doucment.object(); if (!obj.contains(QLatin1String("result"))) { LH_WRITE_ERROR(QString("%1 数据解析失败, Json:%2").arg(Q_FUNC_INFO).arg(strRetJson)); return false; } return true; }