DataManager.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. #include "DataManager.h"
  2. #include <QTextCodec>
  3. #include <QFile>
  4. #include <QApplication>
  5. #ifdef Q_OS_WIN
  6. #pragma execution_character_set("utf-8")
  7. #endif
  8. DataManager* DataManager::g_GlobalSingle = NULL;
  9. std::mutex DataManager::m_Mutex;
  10. DataManager::DataManager(QObject* parent)
  11. : QObject(parent)
  12. {
  13. InitTestFileData();
  14. pRunThread = new TaskRunThread(this);
  15. }
  16. DataManager& DataManager::instance()
  17. {
  18. if (g_GlobalSingle == NULL)
  19. {
  20. std::unique_lock<std::mutex> lock(m_Mutex);
  21. if (g_GlobalSingle == NULL)
  22. {
  23. g_GlobalSingle = new (std::nothrow) DataManager();
  24. }
  25. }
  26. return *g_GlobalSingle;
  27. }
  28. void DataManager::destroyInstance()
  29. {
  30. std::unique_lock<std::mutex> lock(m_Mutex);
  31. if (g_GlobalSingle)
  32. {
  33. delete g_GlobalSingle;
  34. g_GlobalSingle = NULL;
  35. }
  36. }
  37. std::string DataManager::string_To_UTF8(const std::string& str)
  38. {
  39. QTextCodec* codec = QTextCodec::codecForName("GBK"); // 根据实际情况调整源编码
  40. if (!codec) {
  41. return str;
  42. }
  43. QString unicodeStr = codec->toUnicode(str.c_str());
  44. QByteArray utf8Data = unicodeStr.toUtf8();
  45. return std::string(utf8Data.constData(), utf8Data.length());
  46. }
  47. std::string DataManager::UTF8_to_string(const std::string& str)
  48. {
  49. QTextCodec* utf8Codec = QTextCodec::codecForName("UTF-8");
  50. if (!utf8Codec) {
  51. return str;
  52. }
  53. QString unicodeStr = utf8Codec->toUnicode(str.c_str());
  54. QTextCodec* localCodec = QTextCodec::codecForName("GBK"); // 根据实际情况调整目标编码
  55. if (!localCodec) {
  56. return str;
  57. }
  58. QByteArray localData = localCodec->fromUnicode(unicodeStr);
  59. return std::string(localData.constData(), localData.length());
  60. }
  61. bool DataManager::JsonToStyled(const std::string& str, std::string& strRetrun)
  62. {
  63. Json::Reader reader;
  64. Json::Value root;
  65. if (reader.parse(str, root))
  66. {
  67. return JsonToStyled(root, strRetrun);
  68. }
  69. else
  70. {
  71. return false;
  72. }
  73. }
  74. bool DataManager::JsonToStyled(Json::Value& jValue, std::string& strRetrun)
  75. {
  76. Json::StyledWriter jWriter;
  77. if (jValue.isNull())
  78. {
  79. return false;
  80. }
  81. else
  82. {
  83. strRetrun = jWriter.write(jValue);
  84. return true;
  85. }
  86. }
  87. void DataManager::AddHttpLog(LogJson& pNewLog)
  88. {
  89. m_vectorLogJson.push_back(pNewLog);
  90. emit dataChanged(HttpLogList);
  91. }
  92. void DataManager::ClearHttpLog()
  93. {
  94. m_vectorLogJson.clear();
  95. emit dataChanged(HttpLogList);
  96. }
  97. void DataManager::InitTestFileData()
  98. {
  99. QString strPath=QApplication::applicationDirPath()+"/allData.txt";
  100. QFile pFile(strPath);
  101. if(pFile.open(QIODevice::ReadOnly|QIODevice::Text))
  102. {
  103. strAllDataFile=pFile.readAll();
  104. };
  105. SystemData pData;
  106. pData.nSystemID = 1001;
  107. pData.nSysType = 1;
  108. pData.strSysType = "Server";
  109. pData.strSysName = QString::fromStdString(string_To_UTF8("控制服务器"));
  110. pData.nStatus = 1;
  111. m_mapSystemStatus.insert(1001, pData);
  112. pData.nSystemID = 1002;
  113. pData.nSysType = 2;
  114. pData.strSysType = "IO";
  115. pData.strSysName = QString::fromStdString(string_To_UTF8("IO服务器"));
  116. pData.nStatus = 0;
  117. m_mapSystemStatus.insert(1002, pData);
  118. // pData.nSystemID = 1003;
  119. // pData.strSysName = QString::fromStdString(string_To_UTF8("信息化服务器"));
  120. // pData.nStatus = 0;
  121. // m_mapSystemStatus.insert(1003, pData);
  122. }
  123. void DataManager::setEqpmtStatus(int nSysID, int nStatus)
  124. {
  125. auto iter = m_mapSystemStatus.find(nSysID);
  126. if (iter!=m_mapSystemStatus.end())
  127. {
  128. iter.value().nStatus = nStatus;
  129. }
  130. }
  131. bool DataManager::addEqpmFault(std::string strEqpmt,int nEqpmtType, int nFaultID)
  132. {
  133. auto iters = m_mapEqpmtFault.find(strEqpmt);
  134. if (iters!=m_mapEqpmtFault.end())
  135. {
  136. bool bIsAdded=false;
  137. for (auto iter =iters.value().begin();iter!=iters.value().end();iter++)
  138. {
  139. if (iter->nFaultID==nFaultID)
  140. {
  141. bIsAdded = true;
  142. }
  143. }
  144. if (!bIsAdded)
  145. {
  146. EqpmtFault pFaultData;
  147. pFaultData.nFaultID = nFaultID;
  148. pFaultData.FaultTime = QDateTime::currentDateTime();
  149. iters.value().push_back(pFaultData);
  150. }
  151. }
  152. else
  153. {
  154. QList<EqpmtFault> mList;
  155. EqpmtFault pFaultData;
  156. pFaultData.nFaultID = nFaultID;
  157. pFaultData.FaultTime = QDateTime::currentDateTime();
  158. mList.push_back(pFaultData);
  159. m_mapEqpmtFault.insert(strEqpmt, mList);
  160. m_mapEqpmtType.insert(strEqpmt, nEqpmtType);
  161. }
  162. return true;
  163. }
  164. bool DataManager::DeleteEqpmtFault(std::string strEqpmt, int nFaultID)
  165. {
  166. auto iters = m_mapEqpmtFault.find(strEqpmt);
  167. if (iters != m_mapEqpmtFault.end())
  168. {
  169. for (auto iter = iters.value().begin(); iter != iters.value().end(); iter++)
  170. {
  171. if (iter->nFaultID == nFaultID)
  172. {
  173. iters.value().erase(iter);
  174. break;
  175. }
  176. }
  177. }
  178. else
  179. {
  180. return false;
  181. }
  182. return true;
  183. }
  184. void DataManager::clearEqpmtFault()
  185. {
  186. m_mapEqpmtFault.clear();
  187. m_mapEqpmtType.clear();
  188. }