#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QMainWindow *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); timer = new QTimer(this); logThread = new LogThread(this); dbThread = new DBThread(this); connect(dbThread,&DBThread::getParam,this,&MainWindow::getParam); connect(dbThread,&DBThread::SqlLog,this,&MainWindow::SqlLog); connect(timer,&QTimer::timeout,this,&MainWindow::timeout); pointThread = new PointThread(this); lineThread = new LineThread(this); planThread = new PlanThread(this); //evalThread = new EvalThread(this); dbThread->initdb(); logThread->start(); timer->start(500); logThread->appendLog(QString("\r[ %1 ] ****** start ******").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); this->start(); } MainWindow::~MainWindow() { logThread->stop(); delete ui; } void MainWindow::start() { mainDB = QSqlDatabase::addDatabase("QODBC","GuardTour_DB"); QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;Uid=%2;Pwd=%3").arg(PathMdb).arg("").arg(PassWd); mainDB.setDatabaseName(dsn); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDWELL start ********").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); this->pointData(); //巡更点位接口数据处理 this->lineData(); //巡检路线接口数据处理 this->planData(); //巡检计划接口数据处理 //this->evalData(); //巡检计划完成状态接口数据处理 ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDWELL end ********").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(QString("\r[ %1 ] ****** end ******").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } void MainWindow::getParam(QString path, QString passwd) { PathMdb = path; PassWd = passwd; } void MainWindow::SqlLog(QString log) { logThread->appendLog(log); } void MainWindow::pointData() { QByteArray sendData; QJsonArray json_array; int idx = 0; logThread->appendLog(QString("\r[ %1 ] sql pointData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); pointThread->deletePointData(); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- pointData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); if (!mainDB.open()) { logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } else { logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); QSqlQuery query = mainDB.exec("select CStr(id) as pId,CheckPoint_Card,CheckPoint_Name,CheckPoint_Number,CheckPoint_Type from GT_CHECKPOINT;"); while(query.next()) { QString pId = query.value("pId").toString(); QString pCard = query.value("CheckPoint_Card").toString(); QString pName = query.value("CheckPoint_Name").toString(); QString pNumber = query.value("CheckPoint_Number").toString(); QString pType = query.value("CheckPoint_Type").toString(); 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)); pointThread->DealAccessDBData(pId,pCard,pName,pNumber,pType); //将查询数据保存在本地巡更点位表中 //将处理后的报警数据组装成数组形式 begin QJsonObject senddata; senddata.insert("pId",pId); senddata.insert("ptCard",pCard); senddata.insert("ptName",pName); senddata.insert("ptNum",pNumber); senddata.insert("ptType",pType); json_array.insert(idx,senddata); //将处理后的报警数据组装成数组形式 end idx++; } query.clear(); mainDB.close(); } //Post JSON数组到前端 sendData.append("key="); sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact)); pointThread->SendJSONData(sendData); logThread->appendLog(QString("\r[ %1 ] point sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(sendData); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] point sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- pointData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(QString("\r[ %1 ] sql pointData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } void MainWindow::lineData() { QByteArray sendData; QJsonArray json_array; int idx = 0; logThread->appendLog(QString("\r[ %1 ] sql lineData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); lineThread->deleteLineData(); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- lineData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); if (!mainDB.open()) { logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } else { logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); 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;"); while(query.next()) { QString lId = query.value("lID").toString(); QString lName = query.value("Line_Name").toString(); QString placeId = query.value("lPlace_ID").toString(); QString lOrder = query.value("lLine_Order").toString(); QString lNextPlaceTime = query.value("lNextPlace_Time").toString(); QString lStayTime = query.value("lStay_Time").toString(); 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)); lineThread->DealAccessDBData(lId,lName,placeId,lOrder,lNextPlaceTime,lStayTime); //将查询数据保存在本地巡更点位表中 //将处理后的报警数据组装成数组形式 begin QJsonObject senddata; senddata.insert("lId",lId); senddata.insert("lName",lName); senddata.insert("placeId",placeId); senddata.insert("lOrder",lOrder); senddata.insert("lNextPlaceTime",lNextPlaceTime); senddata.insert("lStayTime",lStayTime); json_array.insert(idx,senddata); //将处理后的报警数据组装成数组形式 end idx++; } query.clear(); mainDB.close(); } //Post JSON数组到前端 sendData.append("key="); sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact)); lineThread->SendJSONData(sendData); logThread->appendLog(QString("\r[ %1 ] line sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(sendData); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] line sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- lineData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(QString("\r[ %1 ] sql lineData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } void MainWindow::planData() { QByteArray sendData; QJsonArray json_array; int idx = 0; logThread->appendLog(QString("\r[ %1 ] sql planData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); planThread->deletePlanData(); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- planData start --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); if (!mainDB.open()) { logThread->appendLog(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open failed").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } else { logThread->appendLog(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] AccessDB open success").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); 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;"); while(query.next()) { QString planId = query.value("planId").toString(); QString lineId = query.value("lineId").toString(); QString pStartTime = query.value("pStartTime").toString(); QString pEndTime = query.value("pEndTime").toString(); QString pType = query.value("pType").toString(); QString pMode = query.value("pMode").toString(); QString pExcWeek = query.value("pExcWeek").toString(); QString pStartDate = query.value("pStartDate").toString(); QString pExcCycle = query.value("pExcCycle").toString(); QString pRestCycle = query.value("pRestCycle").toString(); QString placeId; int Place_ID = query.value("Place_ID").toInt(); logThread->appendLog(QString("Place_ID : %1").arg(Place_ID)); if(Place_ID == 0) { placeId = ""; } else { placeId = QString::number(Place_ID); } QString pCreateTime = query.value("pCreateTime").toString(); 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)); planThread->DealAccessDBData(planId,lineId,pStartTime,pEndTime,pType,pMode,pExcWeek,pStartDate,pExcCycle,pRestCycle,placeId,pCreateTime); //将查询数据保存在本地巡更点位表中 //将处理后的报警数据组装成数组形式 begin QJsonObject senddata; senddata.insert("planId",planId); senddata.insert("lineId",lineId); senddata.insert("pStartTime",pStartTime); senddata.insert("pEndTime",pEndTime); senddata.insert("pType",pType); senddata.insert("pMode",pMode); senddata.insert("pExcWeek",pExcWeek); senddata.insert("pStartDate",pStartDate); senddata.insert("pExcCycle",pExcCycle); senddata.insert("pRestCycle",pRestCycle); senddata.insert("placeId",placeId); senddata.insert("pCreateTime",pCreateTime); json_array.insert(idx,senddata); //将处理后的报警数据组装成数组形式 end idx++; } query.clear(); mainDB.close(); } //Post JSON数组到前端 sendData.append("key="); sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact)); planThread->SendJSONData(sendData); logThread->appendLog(QString("\r[ %1 ] plan sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(sendData); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] plan sendData: %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] -------- planData end --------").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(QString("\r[ %1 ] sql planData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } /*void MainWindow::evalData() { QByteArray sendData; QJsonArray json_array; int idx = 0; logThread->appendLog("sql evalData start"); if (!mainDB.open()) { logThread->appendLog("AccessDB open failed"); } else { logThread->appendLog("AccessDB open success"); 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;"); while(query.next()) { QString eId = query.value("eId").toString(); QString eStartTime = query.value("eStartTime").toString(); QString eEndTime = query.value("eEndTime").toString(); QString ePatrolTime; QDateTime PatrolTime = query.value("ePatrolTime").toDateTime(); logThread->appendLog(QString("PatrolTime : %1").arg(PatrolTime.toString("yyyy-MM-dd hh:mm:ss"))); if(PatrolTime.isNull()) { ePatrolTime = ""; } else { ePatrolTime = PatrolTime.toString("yyyy-MM-dd hh:mm:ss"); } QString eLName = query.value("eLName").toString(); QString ePlaceName = query.value("ePlaceName").toString(); QString eBindUser = query.value("eBindUser").toString(); QString eUserName = query.value("eUserName").toString(); QString eBindDevice = query.value("eBindDevice").toString(); QString eDeviceName = query.value("eDeviceName").toString(); QString ePlanState = query.value("ePlanState").toString(); QString eStayTime = query.value("eStayTime").toString(); QString eBindTeam = query.value("eBindTeam").toString(); QString eTeamName = query.value("eTeamName").toString(); QString eCreateTime = query.value("eCreateTime").toString(); QString ePlanType = query.value("ePlanType").toString(); QString eLineOrder = query.value("eLineOrder").toString(); QString ePlanMode = query.value("ePlanMode").toString(); QString planId = query.value("planId").toString(); QString eDFlag = query.value("eDFlag").toString(); QString eErrorTime = query.value("eErrorTime").toString(); 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)); evalThread->DealAccessDBData(eId,eStartTime,eEndTime,ePatrolTime,eLName,ePlaceName,eBindUser,eUserName,eBindDevice,eDeviceName,ePlanState,eStayTime,eBindTeam,eTeamName,eCreateTime,ePlanType,eLineOrder,ePlanMode,planId,eDFlag,eErrorTime); //将查询数据保存在本地巡更点位表中 //将处理后的报警数据组装成数组形式 begin QJsonObject senddata; senddata.insert("eId",eId); senddata.insert("eStartTime",eStartTime); senddata.insert("eEndTime",eEndTime); senddata.insert("ePatrolTime",ePatrolTime); senddata.insert("eLName",eLName); senddata.insert("ePlaceName",ePlaceName); senddata.insert("eBindUser",eBindUser); senddata.insert("eUserName",eUserName); senddata.insert("eBindDevice",eBindDevice); senddata.insert("eDeviceName",eDeviceName); senddata.insert("ePlanState",ePlanState); senddata.insert("eStayTime",eStayTime); senddata.insert("eBindTeam",eBindTeam); senddata.insert("eTeamName",eTeamName); senddata.insert("eCreateTime",eCreateTime); senddata.insert("ePlanType",ePlanType); senddata.insert("eLineOrder",eLineOrder); senddata.insert("ePlanMode",ePlanMode); senddata.insert("planId",planId); senddata.insert("eDFlag",eDFlag); senddata.insert("eErrorTime",eErrorTime); json_array.insert(idx,senddata); //将处理后的报警数据组装成数组形式 end idx++; } query.clear(); mainDB.close(); } //Post JSON数组到前端 sendData.append("key="); sendData.append(QJsonDocument(json_array).toJson(QJsonDocument::Compact)); evalThread->SendJSONData(sendData); logThread->appendLog("eval sendData: "); logThread->appendLog(sendData); logThread->appendLog("sql evalData end"); }*/ void MainWindow::timeout() { ui->time_label->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); } void MainWindow::on_pushButton_clicked() { this->start(); }