#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); evalThread = new EvalThread(this); dbThread->initdb(); logThread->start(); timer->start(500); logThread->appendLog(QString("\r[ %1 ] ****** eval 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); this->evalData(); //巡检计划完成状态接口数据处理 logThread->appendLog(QString("\r[ %1 ] ****** eval 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::evalData() { QByteArray sendData; QJsonArray json_array; int idx = 0; logThread->appendLog(QString("\r[ %1 ] sql evalData start").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); evalThread->deleteEvalData(); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDEVAL 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 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,Mid(CStr(Create_Time),1,10) 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 WHERE format(Create_Time,'yyyy-MM-dd') = format(now(),'yyyy-MM-dd');"); 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("\r[ %1 ] PatrolTime : %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).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(QString("\r[ %1 ] eval sendData: ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); logThread->appendLog(sendData); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] sendData : %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(QString(sendData))); logThread->appendLog(QString("\r[ %1 ] sql evalData end").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); ui->plainTextEdit->appendPlainText(QString("\r[ %1 ] ******** USIAS-LANDEVAL end ********").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); } void MainWindow::timeout() { ui->time_label->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); } void MainWindow::on_pushButton_clicked() { this->start(); }