devicemanager.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. #include "devicemanager.h"
  2. DeviceManager::DeviceManager(QObject *parent) : QObject(parent)
  3. {
  4. }
  5. bool DeviceManager::DoLoadDeviceData()
  6. {
  7. m_deviceDataList.clear();
  8. lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI();
  9. if(httpApi == nullptr)
  10. {
  11. return false;
  12. }
  13. //加载发射机监测点配置数据
  14. QJsonObject jsParam
  15. {
  16. {"nchnid", 0},
  17. {"typecode_1", TZ_PT_CODE_1},
  18. {"typecode_2", TZ_PT_CODE_2}
  19. };
  20. QJsonObject jsRoot
  21. {
  22. {"opName", "TZCJ_GetMonitorPinByChannel"},
  23. {"paramList", jsParam}
  24. };
  25. QJsonDocument doc;
  26. doc.setObject(jsRoot);
  27. QByteArray post_Array = doc.toJson(QJsonDocument::Compact);
  28. QString strRetJson;
  29. QString strtoken = singletonWork::instance()->GetServerToken();
  30. if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson))
  31. {
  32. LH_WRITE_ERROR("获取频率参数信息失败!");
  33. return false;
  34. }
  35. QByteArray baJson = strRetJson.toUtf8();
  36. QJsonParseError jsonError;
  37. QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError);
  38. if(jsonError.error != QJsonParseError::NoError)
  39. {
  40. LH_WRITE_ERROR(jsonError.errorString());
  41. }
  42. QJsonObject rootObj = doucment.object();
  43. if(!rootObj.contains("result"))
  44. {
  45. LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson));
  46. }
  47. QJsonArray jsResult = rootObj.value("result").toArray();
  48. for(int i = 0; i < jsResult.count(); i++)
  49. {
  50. QJsonValue jsValue = jsResult.at(i);
  51. QJsonObject jsObject = jsValue.toObject();
  52. tDeviceData dev;
  53. dev.nChnID = jsObject.value("chnid").toInt();
  54. dev.nMPID = jsObject.value("mpid").toInt();
  55. dev.nDeviceID = jsObject.value("did").toInt();
  56. dev.strDevName = jsObject.value("dname").toString();
  57. dev.strChnName = jsObject.value("chnname").toString();
  58. dev.strMPName = jsObject.value("mname").toString();
  59. dev.strMaddress = jsObject.value("maddress").toString();
  60. m_deviceDataList.append(dev);
  61. }
  62. if(m_deviceDataList.size() < 1)
  63. {
  64. return false;
  65. }
  66. return DoLoadTranPin();
  67. }
  68. bool DeviceManager::DoLoadTranPin()
  69. {
  70. lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI();
  71. if(httpApi == nullptr)
  72. {
  73. return false;
  74. }
  75. //加载发射机监测点配置数据
  76. QJsonObject jsParam
  77. {
  78. {"nchnid", 0},
  79. {"typecode_1", TRANSMITTER_PT_CODE_1},
  80. {"typecode_2", TRANSMITTER_PT_CODE_2}
  81. };
  82. QJsonObject jsRoot
  83. {
  84. {"opName", "TZCJ_GetMonitorPinByChannel"},
  85. {"paramList", jsParam}
  86. };
  87. QJsonDocument doc;
  88. doc.setObject(jsRoot);
  89. QByteArray post_Array = doc.toJson(QJsonDocument::Compact);
  90. QString strRetJson;
  91. QString strtoken = singletonWork::instance()->GetServerToken();
  92. if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson))
  93. {
  94. LH_WRITE_ERROR("获取频率参数信息失败!");
  95. return false;
  96. }
  97. QByteArray baJson = strRetJson.toUtf8();
  98. QJsonParseError jsonError;
  99. QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError);
  100. if(jsonError.error != QJsonParseError::NoError)
  101. {
  102. LH_WRITE_ERROR(jsonError.errorString());
  103. }
  104. QJsonObject rootObj = doucment.object();
  105. if(!rootObj.contains("result"))
  106. {
  107. LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson));
  108. }
  109. QJsonArray jsResult = rootObj.value("result").toArray();
  110. for(int i = 0; i < jsResult.count(); i++)
  111. {
  112. QJsonValue jsValue = jsResult.at(i);
  113. QJsonObject jsObject = jsValue.toObject();
  114. tMPinData pin;
  115. pin.nChnID = jsObject.value("chnid").toInt();
  116. pin.nMPID = jsObject.value("mpid").toInt();
  117. pin.nDeviceID = jsObject.value("did").toInt();
  118. pin.nFlags = jsObject.value("dclass").toInt();
  119. pin.strDevName = jsObject.value("dname").toString();
  120. pin.strMPName = jsObject.value("mname").toString();
  121. pin.strMaddress = jsObject.value("maddress").toString();
  122. m_transDataList.append(pin);
  123. }
  124. return true;
  125. }
  126. bool DeviceManager::DoLoadServiceConfig(int nServiceID)
  127. {
  128. lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI();
  129. if(httpApi == nullptr)
  130. {
  131. return false;
  132. }
  133. //加载发射机监测点配置数据
  134. QJsonObject jsParam
  135. {
  136. {"id", nServiceID}
  137. };
  138. QJsonObject jsRoot
  139. {
  140. {"opName", "EQM_GetServiceConfigById"},
  141. {"paramList", jsParam}
  142. };
  143. QJsonDocument doc;
  144. doc.setObject(jsRoot);
  145. QByteArray post_Array = doc.toJson(QJsonDocument::Compact);
  146. QString strRetJson;
  147. QString strtoken = singletonWork::instance()->GetServerToken();
  148. if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_SELECT, QString::fromUtf8(post_Array), strRetJson))
  149. {
  150. LH_WRITE_ERROR("获取频率参数信息失败!");
  151. return false;
  152. }
  153. QByteArray baJson = strRetJson.toUtf8();
  154. QJsonParseError jsonError;
  155. QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError);
  156. if(jsonError.error != QJsonParseError::NoError)
  157. {
  158. LH_WRITE_ERROR(jsonError.errorString());
  159. }
  160. QJsonObject rootObj = doucment.object();
  161. if(!rootObj.contains("result"))
  162. {
  163. LH_WRITE_ERROR(QString("获取结果无效:%1").arg(strRetJson));
  164. }
  165. QJsonArray serverList = rootObj.value(QLatin1String("result")).toArray();
  166. QJsonObject jsSetinginfo = serverList.at(0).toObject();
  167. QString strSetInfo = jsSetinginfo.value("setinginfo").toString();
  168. QJsonDocument jsonDoc(QJsonDocument::fromJson(strSetInfo.toStdString().data(), &jsonError));
  169. if(!jsonDoc.isNull() && jsonError.error == QJsonParseError::NoError)
  170. {
  171. QJsonObject jObj = jsonDoc.object();
  172. m_transServerIP = jObj.value("transserverip").toString();
  173. m_transServerPort = jObj.value("transserverport").toInt();
  174. QJsonArray array = jObj.value("montzdevice").toArray();
  175. for(int i = 0; i < array.count(); i++)
  176. {
  177. QJsonObject mpjson = array.at(i).toObject();
  178. tTZConfig temp;
  179. temp.mpid = mpjson.value("mpid").toInt();
  180. temp.enable = mpjson.value("enable").toBool();
  181. temp.address = mpjson.value("address").toString();
  182. temp.port = mpjson.value("port").toInt();
  183. temp.slaveid = mpjson.value("slaveid").toInt();
  184. temp.hosttransmpid = mpjson.value("hosttransmpid").toInt();
  185. temp.backtransmpid = mpjson.value("backtransmpid").toInt();
  186. temp.emergencympid = mpjson.value("emergencympid").toInt();
  187. temp.enablemutilchannel = mpjson.value("enablemutilchannel").toBool();
  188. temp.powerofftime = mpjson.value("powerofftime").toInt();
  189. m_tzConfigList.append(temp);
  190. }
  191. }
  192. return true;
  193. }
  194. void DeviceManager::GetDeviceConfig(int nMPID, tTZConfig& config)
  195. {
  196. for(int i = 0; i < m_tzConfigList.size(); i++)
  197. {
  198. if(m_tzConfigList.at(i).mpid == nMPID)
  199. {
  200. config = m_tzConfigList.at(i);
  201. break;
  202. }
  203. }
  204. }
  205. void DeviceManager::SetDeviceConfig(int nMPID, tTZConfig &config)
  206. {
  207. bool bFind = false;
  208. for(int i = 0; i < m_tzConfigList.size(); i++)
  209. {
  210. if(m_tzConfigList.at(i).mpid == nMPID)
  211. {
  212. bFind = true;
  213. m_tzConfigList[i] = config;
  214. break;
  215. }
  216. }
  217. if(!bFind)
  218. {
  219. m_tzConfigList.append(config);
  220. }
  221. }
  222. void DeviceManager::GetMonitorByID(int nMPID, tMPinData& pin)
  223. {
  224. for(int i = 0; i < m_transDataList.size(); i++)
  225. {
  226. if(m_transDataList.at(i).nMPID == nMPID)
  227. {
  228. pin = m_transDataList.at(i);
  229. break;
  230. }
  231. }
  232. }
  233. bool DeviceManager::DoSaveServiceConfig(int nServiceID)
  234. {
  235. lhhttpapi* httpApi = singletonWork::instance()->LhHttpAPI();
  236. if(httpApi == nullptr)
  237. {
  238. return false;
  239. }
  240. QJsonArray devArray;
  241. for(int i = 0; i < m_tzConfigList.size(); i++)
  242. {
  243. QJsonObject mpObj
  244. {
  245. {"mpid", m_tzConfigList.at(i).mpid},
  246. {"enable", m_tzConfigList.at(i).enable},
  247. {"address", m_tzConfigList.at(i).address},
  248. {"port", m_tzConfigList.at(i).port},
  249. {"slaveid", m_tzConfigList.at(i).slaveid},
  250. {"hosttransmpid", m_tzConfigList.at(i).hosttransmpid},
  251. {"backtransmpid", m_tzConfigList.at(i).backtransmpid},
  252. {"emergencympid", m_tzConfigList.at(i).emergencympid},
  253. {"enablemutilchannel", m_tzConfigList.at(i).enablemutilchannel},
  254. {"powerofftime", m_tzConfigList.at(i).powerofftime},
  255. };
  256. devArray.append(mpObj);
  257. }
  258. QJsonObject rootObj
  259. {
  260. {"transserverip", m_transServerIP},
  261. {"transserverport", m_transServerPort},
  262. {"montzdevice", devArray}
  263. };
  264. QJsonObject jsParam
  265. {
  266. {"setinfo", QString::fromUtf8(QJsonDocument(rootObj).toJson(QJsonDocument::Compact))},
  267. {"id", nServiceID}
  268. };
  269. QJsonObject jsRoot
  270. {
  271. {"opName", "EQM_UpdateServerSetInfo"},
  272. {"paramList", jsParam}
  273. };
  274. QJsonDocument doc;
  275. doc.setObject(jsRoot);
  276. QByteArray post_Array = doc.toJson(QJsonDocument::Compact);
  277. QString strtoken = singletonWork::instance()->GetServerToken();
  278. QString strRetJson;
  279. if(RERUNSUCCESS != httpApi->DBDoInterface(strtoken, DBDOTYPE_UPDATE, QString::fromUtf8(post_Array), strRetJson))
  280. {
  281. LH_WRITE_ERROR("保存配置信息失败!");
  282. return false;
  283. }
  284. //
  285. QByteArray baJson = strRetJson.toUtf8();
  286. QJsonParseError jsonError;
  287. QJsonDocument doucment = QJsonDocument::fromJson(baJson, &jsonError);
  288. if(jsonError.error != QJsonParseError::NoError)
  289. {
  290. LH_WRITE_ERROR(jsonError.errorString());
  291. }
  292. QJsonObject obj = doucment.object();
  293. if (!obj.contains(QLatin1String("result")))
  294. {
  295. LH_WRITE_ERROR(QString("%1 数据解析失败, Json:%2").arg(Q_FUNC_INFO).arg(strRetJson));
  296. return false;
  297. }
  298. return true;
  299. }