mainwindow.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QMainWindow *parent)
  4. : QMainWindow(parent)
  5. , ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. timer = new QTimer(this);
  9. logThread = new LogThread(this);
  10. dbThread = new DBThread(this);
  11. connect(dbThread,&DBThread::getParam,this,&MainWindow::getParam);
  12. connect(dbThread,&DBThread::SqlLog,this,&MainWindow::SqlLog);
  13. connect(timer,&QTimer::timeout,this,&MainWindow::timeout);
  14. pointThread = new PointThread(this);
  15. lineThread = new LineThread(this);
  16. planThread = new PlanThread(this);
  17. //evalThread = new EvalThread(this);
  18. dbThread->initdb();
  19. logThread->start();
  20. timer->start(500);
  21. logThread->appendLog(QString("\r[ %1 ] ****** start ******").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  22. this->start();
  23. }
  24. MainWindow::~MainWindow()
  25. {
  26. logThread->stop();
  27. delete ui;
  28. }
  29. void MainWindow::start()
  30. {
  31. mainDB = QSqlDatabase::addDatabase("QODBC","GuardTour_DB");
  32. QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;Uid=%2;Pwd=%3").arg(PathMdb).arg("").arg(PassWd);
  33. mainDB.setDatabaseName(dsn);
  34. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDWELL start ********").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  35. this->pointData(); //巡更点位接口数据处理
  36. this->lineData(); //巡检路线接口数据处理
  37. this->planData(); //巡检计划接口数据处理
  38. //this->evalData(); //巡检计划完成状态接口数据处理
  39. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDWELL end ********").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  40. logThread->appendLog(QString("\r[ %1 ] ****** end ******").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  41. }
  42. void MainWindow::getParam(QString path, QString passwd)
  43. {
  44. PathMdb = path;
  45. PassWd = passwd;
  46. }
  47. void MainWindow::SqlLog(QString log)
  48. {
  49. logThread->appendLog(log);
  50. }
  51. void MainWindow::pointData()
  52. {
  53. QByteArray sendData;
  54. QJsonArray json_array;
  55. int idx = 0;
  56. logThread->appendLog(QString("\r[ %1 ] sql pointData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  57. pointThread->deletePointData();
  58. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- pointData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  59. if (!mainDB.open()) {
  60. logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  61. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  62. }
  63. else
  64. {
  65. logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  66. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  67. QSqlQuery query = mainDB.exec("select CStr(id) as pId,CheckPoint_Card,CheckPoint_Name,CheckPoint_Number,CheckPoint_Type from GT_CHECKPOINT;");
  68. while(query.next())
  69. {
  70. QString pId = query.value("pId").toString();
  71. QString pCard = query.value("CheckPoint_Card").toString();
  72. QString pName = query.value("CheckPoint_Name").toString();
  73. QString pNumber = query.value("CheckPoint_Number").toString();
  74. QString pType = query.value("CheckPoint_Type").toString();
  75. logThread->appendLog(QString("pId:%1,CheckPoint_Card:%2,CheckPoint_Name:%3,CheckPoint_Number:%4,CheckPoint_Type:%5").arg(pId).arg(pCard).arg(pName).arg(pNumber).arg(pType));
  76. pointThread->DealAccessDBData(pId,pCard,pName,pNumber,pType); //将查询数据保存在本地巡更点位表中
  77. //将处理后的报警数据组装成数组形式 begin
  78. QJsonObject senddata;
  79. senddata.insert("pId",pId);
  80. senddata.insert("ptCard",pCard);
  81. senddata.insert("ptName",pName);
  82. senddata.insert("ptNum",pNumber);
  83. senddata.insert("ptType",pType);
  84. json_array.insert(idx,senddata);
  85. //将处理后的报警数据组装成数组形式 end
  86. idx++;
  87. }
  88. query.clear();
  89. mainDB.close();
  90. }
  91. //Post JSON数组到前端
  92. sendData.append("key=");
  93. sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact));
  94. pointThread->SendJSONData(sendData);
  95. logThread->appendLog(QString("\r[ %1 ] point sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  96. logThread->appendLog(sendData);
  97. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] point sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData)));
  98. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- pointData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  99. logThread->appendLog(QString("\r[ %1 ] sql pointData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  100. }
  101. void MainWindow::lineData()
  102. {
  103. QByteArray sendData;
  104. QJsonArray json_array;
  105. int idx = 0;
  106. logThread->appendLog(QString("\r[ %1 ] sql lineData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  107. lineThread->deleteLineData();
  108. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- lineData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  109. if (!mainDB.open()) {
  110. logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  111. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  112. }
  113. else
  114. {
  115. logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  116. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  117. QSqlQuery query = mainDB.exec("SELECT CStr(line.id) AS lID, (select Line_Name from GT_LINE where id = line.Line_ID) AS Line_Name, CStr(line.Place_ID) AS lPlace_ID, CStr(line.Line_Order) AS lLine_Order, CStr(line.NextPlace_Time) AS lNextPlace_Time, CStr(line.Stay_Time) AS lStay_Time FROM GT_LINE_EXTD AS line;");
  118. while(query.next())
  119. {
  120. QString lId = query.value("lID").toString();
  121. QString lName = query.value("Line_Name").toString();
  122. QString placeId = query.value("lPlace_ID").toString();
  123. QString lOrder = query.value("lLine_Order").toString();
  124. QString lNextPlaceTime = query.value("lNextPlace_Time").toString();
  125. QString lStayTime = query.value("lStay_Time").toString();
  126. logThread->appendLog(QString("lId:%1,lName:%2,placeId:%3,lOrder:%4,lNextPlaceTime:%5,lStayTime:%6").arg(lId).arg(lName).arg(placeId).arg(lOrder).arg(lNextPlaceTime).arg(lStayTime));
  127. lineThread->DealAccessDBData(lId,lName,placeId,lOrder,lNextPlaceTime,lStayTime); //将查询数据保存在本地巡更点位表中
  128. //将处理后的报警数据组装成数组形式 begin
  129. QJsonObject senddata;
  130. senddata.insert("lId",lId);
  131. senddata.insert("lName",lName);
  132. senddata.insert("placeId",placeId);
  133. senddata.insert("lOrder",lOrder);
  134. senddata.insert("lNextPlaceTime",lNextPlaceTime);
  135. senddata.insert("lStayTime",lStayTime);
  136. json_array.insert(idx,senddata);
  137. //将处理后的报警数据组装成数组形式 end
  138. idx++;
  139. }
  140. query.clear();
  141. mainDB.close();
  142. }
  143. //Post JSON数组到前端
  144. sendData.append("key=");
  145. sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact));
  146. lineThread->SendJSONData(sendData);
  147. logThread->appendLog(QString("\r[ %1 ] line sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  148. logThread->appendLog(sendData);
  149. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] line sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData)));
  150. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- lineData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  151. logThread->appendLog(QString("\r[ %1 ] sql lineData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  152. }
  153. void MainWindow::planData()
  154. {
  155. QByteArray sendData;
  156. QJsonArray json_array;
  157. int idx = 0;
  158. logThread->appendLog(QString("\r[ %1 ] sql planData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  159. planThread->deletePlanData();
  160. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- planData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  161. if (!mainDB.open()) {
  162. logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  163. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  164. }
  165. else
  166. {
  167. logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  168. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  169. QSqlQuery query = mainDB.exec("select CStr(ID) AS planId,CStr(Line_ID) AS lineId,Plan_StartTime AS pStartTime,Plan_EndTime AS pEndTime,Plan_Type AS pType,CStr(Plan_Mode) AS pMode,Excute_Week AS pExcWeek,Start_Date AS pStartDate,CStr(Excute_Cycle) AS pExcCycle,CStr(Rest_Cycle) AS pRestCycle,Place_ID,CStr(Create_Time) AS pCreateTime From GT_PLAN;");
  170. while(query.next())
  171. {
  172. QString planId = query.value("planId").toString();
  173. QString lineId = query.value("lineId").toString();
  174. QString pStartTime = query.value("pStartTime").toString();
  175. QString pEndTime = query.value("pEndTime").toString();
  176. QString pType = query.value("pType").toString();
  177. QString pMode = query.value("pMode").toString();
  178. QString pExcWeek = query.value("pExcWeek").toString();
  179. QString pStartDate = query.value("pStartDate").toString();
  180. QString pExcCycle = query.value("pExcCycle").toString();
  181. QString pRestCycle = query.value("pRestCycle").toString();
  182. QString placeId;
  183. int Place_ID = query.value("Place_ID").toInt();
  184. logThread->appendLog(QString("Place_ID : %1").arg(Place_ID));
  185. if(Place_ID == 0)
  186. {
  187. placeId = "";
  188. }
  189. else
  190. {
  191. placeId = QString::number(Place_ID);
  192. }
  193. QString pCreateTime = query.value("pCreateTime").toString();
  194. logThread->appendLog(QString("planId:%1,lineId:%2,pStartTime:%3,pEndTime:%4,pType:%5,pMode:%6,pExcWeek:%7,pStartDate:%8,pExcCycle:%9,pRestCycle:%10,placeId:%11,pCreateTime:%12").arg(planId).arg(lineId).arg(pStartTime).arg(pEndTime).arg(pType).arg(pMode).arg(pExcWeek).arg(pStartDate).arg(pExcCycle).arg(pRestCycle).arg(placeId).arg(pCreateTime));
  195. planThread->DealAccessDBData(planId,lineId,pStartTime,pEndTime,pType,pMode,pExcWeek,pStartDate,pExcCycle,pRestCycle,placeId,pCreateTime); //将查询数据保存在本地巡更点位表中
  196. //将处理后的报警数据组装成数组形式 begin
  197. QJsonObject senddata;
  198. senddata.insert("planId",planId);
  199. senddata.insert("lineId",lineId);
  200. senddata.insert("pStartTime",pStartTime);
  201. senddata.insert("pEndTime",pEndTime);
  202. senddata.insert("pType",pType);
  203. senddata.insert("pMode",pMode);
  204. senddata.insert("pExcWeek",pExcWeek);
  205. senddata.insert("pStartDate",pStartDate);
  206. senddata.insert("pExcCycle",pExcCycle);
  207. senddata.insert("pRestCycle",pRestCycle);
  208. senddata.insert("placeId",placeId);
  209. senddata.insert("pCreateTime",pCreateTime);
  210. json_array.insert(idx,senddata);
  211. //将处理后的报警数据组装成数组形式 end
  212. idx++;
  213. }
  214. query.clear();
  215. mainDB.close();
  216. }
  217. //Post JSON数组到前端
  218. sendData.append("key=");
  219. sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact));
  220. planThread->SendJSONData(sendData);
  221. logThread->appendLog(QString("\r[ %1 ] plan sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  222. logThread->appendLog(sendData);
  223. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] plan sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData)));
  224. ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- planData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  225. logThread->appendLog(QString("\r[ %1 ] sql planData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  226. }
  227. /*void MainWindow::evalData()
  228. {
  229. QByteArray sendData;
  230. QJsonArray json_array;
  231. int idx = 0;
  232. logThread->appendLog("sql evalData start");
  233. if (!mainDB.open()) {
  234. logThread->appendLog("AccessDB open failed");
  235. }
  236. else
  237. {
  238. logThread->appendLog("AccessDB open success");
  239. QSqlQuery query = mainDB.exec("select CStr(ID) AS eId,CStr(Plan_StartTime) AS eStartTime,CStr(Plan_EndTime) AS eEndTime,Patrol_Time AS ePatrolTime,Line_Name AS eLName,Place_Name AS ePlaceName,Bind_User AS eBindUser,User_Name AS eUserName,Bind_Device AS eBindDevice,Device_Name AS eDeviceName,Plan_State AS ePlanState,CStr(Stay_Time) AS eStayTime,Bind_Team AS eBindTeam,Team_Name AS eTeamName,CStr(Create_Time) AS eCreateTime,Plan_Type AS ePlanType,CStr(Line_Order) AS eLineOrder,CStr(Plan_Mode) AS ePlanMode,CStr(Plan_id) AS planId,CStr(Dflag) AS eDFlag,CStr(Error_Time) AS eErrorTime From GT_PLAN_EVALUATION;");
  240. while(query.next())
  241. {
  242. QString eId = query.value("eId").toString();
  243. QString eStartTime = query.value("eStartTime").toString();
  244. QString eEndTime = query.value("eEndTime").toString();
  245. QString ePatrolTime;
  246. QDateTime PatrolTime = query.value("ePatrolTime").toDateTime();
  247. logThread->appendLog(QString("PatrolTime : %1").arg(PatrolTime.toString("yyyy-MM-dd hh:mm:ss")));
  248. if(PatrolTime.isNull())
  249. {
  250. ePatrolTime = "";
  251. }
  252. else
  253. {
  254. ePatrolTime = PatrolTime.toString("yyyy-MM-dd hh:mm:ss");
  255. }
  256. QString eLName = query.value("eLName").toString();
  257. QString ePlaceName = query.value("ePlaceName").toString();
  258. QString eBindUser = query.value("eBindUser").toString();
  259. QString eUserName = query.value("eUserName").toString();
  260. QString eBindDevice = query.value("eBindDevice").toString();
  261. QString eDeviceName = query.value("eDeviceName").toString();
  262. QString ePlanState = query.value("ePlanState").toString();
  263. QString eStayTime = query.value("eStayTime").toString();
  264. QString eBindTeam = query.value("eBindTeam").toString();
  265. QString eTeamName = query.value("eTeamName").toString();
  266. QString eCreateTime = query.value("eCreateTime").toString();
  267. QString ePlanType = query.value("ePlanType").toString();
  268. QString eLineOrder = query.value("eLineOrder").toString();
  269. QString ePlanMode = query.value("ePlanMode").toString();
  270. QString planId = query.value("planId").toString();
  271. QString eDFlag = query.value("eDFlag").toString();
  272. QString eErrorTime = query.value("eErrorTime").toString();
  273. logThread->appendLog(QString("eId:%1,eStartTime:%2,eEndTime:%3,ePatrolTime:%4,eLName:%5,ePlaceName:%6,eBindUser:%7,eUserName:%8,eBindDevice:%9,eDeviceName:%10,ePlanState:%11,eStayTime:%12,eBindTeam:%13,eTeamName:%14,eCreateTime:%15,ePlanType:%16,eLineOrder:%17,ePlanMode:%18,planId:%19,eDFlag:%20,eErrorTime:%21").arg(eId).arg(eStartTime).arg(eEndTime).arg(ePatrolTime).arg(eLName).arg(ePlaceName).arg(eBindUser).arg(eUserName).arg(eBindDevice).arg(eDeviceName).arg(ePlanState).arg(eStayTime).arg(eBindTeam).arg(eTeamName).arg(eCreateTime).arg(ePlanType).arg(eLineOrder).arg(ePlanMode).arg(planId).arg(eDFlag).arg(eErrorTime));
  274. evalThread->DealAccessDBData(eId,eStartTime,eEndTime,ePatrolTime,eLName,ePlaceName,eBindUser,eUserName,eBindDevice,eDeviceName,ePlanState,eStayTime,eBindTeam,eTeamName,eCreateTime,ePlanType,eLineOrder,ePlanMode,planId,eDFlag,eErrorTime); //将查询数据保存在本地巡更点位表中
  275. //将处理后的报警数据组装成数组形式 begin
  276. QJsonObject senddata;
  277. senddata.insert("eId",eId);
  278. senddata.insert("eStartTime",eStartTime);
  279. senddata.insert("eEndTime",eEndTime);
  280. senddata.insert("ePatrolTime",ePatrolTime);
  281. senddata.insert("eLName",eLName);
  282. senddata.insert("ePlaceName",ePlaceName);
  283. senddata.insert("eBindUser",eBindUser);
  284. senddata.insert("eUserName",eUserName);
  285. senddata.insert("eBindDevice",eBindDevice);
  286. senddata.insert("eDeviceName",eDeviceName);
  287. senddata.insert("ePlanState",ePlanState);
  288. senddata.insert("eStayTime",eStayTime);
  289. senddata.insert("eBindTeam",eBindTeam);
  290. senddata.insert("eTeamName",eTeamName);
  291. senddata.insert("eCreateTime",eCreateTime);
  292. senddata.insert("ePlanType",ePlanType);
  293. senddata.insert("eLineOrder",eLineOrder);
  294. senddata.insert("ePlanMode",ePlanMode);
  295. senddata.insert("planId",planId);
  296. senddata.insert("eDFlag",eDFlag);
  297. senddata.insert("eErrorTime",eErrorTime);
  298. json_array.insert(idx,senddata);
  299. //将处理后的报警数据组装成数组形式 end
  300. idx++;
  301. }
  302. query.clear();
  303. mainDB.close();
  304. }
  305. //Post JSON数组到前端
  306. sendData.append("key=");
  307. sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact));
  308. evalThread->SendJSONData(sendData);
  309. logThread->appendLog("eval sendData: ");
  310. logThread->appendLog(sendData);
  311. logThread->appendLog("sql evalData end");
  312. }*/
  313. void MainWindow::timeout()
  314. {
  315. ui->time_label->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  316. }
  317. void MainWindow::on_pushButton_clicked()
  318. {
  319. this->start();
  320. }