#include "lpReport.h" #include "qtimedlg.h" #include #include #include #include "QProgressDialog" #include "qsavecsvthread.h" #include "checkthread.h" #include "QCompleter" #include "qreportwidget.h" #include #include "ModelDB.h" #pragma execution_character_set("utf-8") #define WHEEL_PIC_SIZE 150 enum EM_TYPE_TIME { em_Time_Year = 1, em_Time_Moth, em_Time_Day }; #define _QSQLITE_WHEELHUBWF_NAME "wheelhubwf.db" #define WHEEL_DB_FILE "\\pattern\\modelTemplate.db" lpReport::lpReport(QWidget *parent) : QMainWindow(parent) { qRegisterMetaType("QSqlQuery"); ui.setupUi(this); onInitUI(); QString strDbPath = QApplication::applicationDirPath() + "\\" + _QSQLITE_WHEELHUBWF_NAME; m_pDb = new DetectDataDB(strDbPath); m_pDb->InitDatabase(); m_pDb->ReadOutTimeData(m_Totaltime); QString strModelPath = QApplication::applicationDirPath() + "\\" + WHEEL_DB_FILE; m_pModeDB = new ModelDB(strModelPath); m_pModeDB->InitDatabase(); QStringList strList = m_pModeDB->ReadAllModes(); m_GridLayout = new QGridLayout; reportdlg = new QReportWidget; m_GridLayout->addWidget(reportdlg); m_countwidget = new QWidget; Hbox = new QVBoxLayout; m_GridLayout->setMargin(0); m_GridLayout->addLayout(Hbox, 0, 1); m_countwidget->setLayout(m_GridLayout); nstartTime.setHMS(0, 0, 0); nEndTime.setHMS(23, 59, 59); m_tableModel = new QStandardItemModel; m_WorkDB = new WorkForDB; m_WorkDB->moveToThread(&m_Workthread); m_WorkDB->setDB(m_pDb); connect(&m_Workthread, &QThread::finished, m_WorkDB, &QObject::deleteLater); connect(this, &lpReport::operate, m_WorkDB, &WorkForDB::doWork); connect(m_WorkDB, &WorkForDB::resultReady, this, &lpReport::handleResults); m_Workthread.start(); qDebug() << "start thread m_Workthread"; m_WorkCount = new CountData; m_WorkCount->moveToThread(&m_WorkThreadCount); m_WorkCount->setDB(m_pDb); connect(&m_WorkThreadCount, &QThread::finished, m_WorkCount, &QObject::deleteLater); connect(this, &lpReport::operateCount, m_WorkCount, &CountData::doWork); connect(m_WorkCount, &CountData::resultReady, this, &lpReport::handleResultsCount); connect(m_WorkCount, SIGNAL(sgShowMsg(QString)), this, SLOT(onShowMessage(QString))); connect(m_WorkCount, &CountData::sgShowProgress, this, &lpReport::onProgressForTsk); m_WorkThreadCount.start(); qDebug() << "start thread m_WorkThreadCount"; m_WorkHistory = new CheckData; m_WorkHistory->moveToThread(&m_WorkThreadCheckHistory); m_WorkHistory->setDB(m_pDb); connect(&m_WorkThreadCheckHistory, &QThread::finished, m_WorkHistory, &QObject::deleteLater); connect(this, &lpReport::operateHistory, m_WorkHistory, &CheckData::doWork); connect(m_WorkHistory, &CheckData::resultReady, this, &lpReport::handleResultsHistory); connect(m_WorkHistory, &CheckData::sgShowProgress, this, &lpReport::onProgressForTsk); m_WorkThreadCheckHistory.start(); qDebug() << "start thread m_WorkThreadCheckHistory"; m_Progressdlg.setWindowModality(Qt::ApplicationModal); m_Progressdlg.setWindowIcon(QIcon(":/image/leaper")); m_IsRunCountTsk = false; ui.scrollArea->setWidget(m_countwidget); InitUIParam(); SetModelNames(strList); setWindowTitle("数据记录查看"); setWindowIcon(QIcon(":/lpReport/Resources/Log.png")); } lpReport::~lpReport() { if (m_Workthread.isRunning()) { qDebug() << "delete m_Workthread"; m_Workthread.quit(); m_Workthread.wait(50); qDebug() << "delete m_Workthread end"; } if (m_WorkThreadCount.isRunning()) { qDebug() << "delete m_WorkThreadCount"; m_WorkThreadCount.quit(); m_WorkThreadCount.wait(50); qDebug() << "delete m_WorkThreadCount end"; } if (m_WorkThreadCheckHistory.isRunning()) { qDebug() << "delete m_WorkThreadCheckHistory"; m_WorkThreadCheckHistory.quit(); m_WorkThreadCheckHistory.wait(50); qDebug() << "delete m_WorkThreadCheckHistory end"; } if (m_tableWarnModel) { delete m_tableWarnModel; m_tableWarnModel = NULL; } if (m_tableModel) { delete m_tableModel; m_tableModel = NULL; } if (_pCompleter) { delete _pCompleter; _pCompleter = NULL; } if (m_countwidget) { delete m_countwidget; m_countwidget = NULL; } } void lpReport::onInitUI() { connect(ui.pushButton_Set1_Warning, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Set2_Warning, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Set1_History, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Set2_History, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Set1_Count, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Set2_Count, SIGNAL(clicked()), this, SLOT(SlotEditTime())); connect(ui.pushButton_Checkdata, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(ui.pushButton_SaveHistory, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(ui.pushButton_Wandring, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(ui.pushButton_SaveWaring, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(ui.pushButton_Checkdata_Calculate, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(ui.pushButton_SaveCalculate, SIGNAL(clicked()), this, SLOT(onCheckButton())); connect(this, SIGNAL(sgSetCurrentIndex(int)), ui.stackedWidget, SLOT(setCurrentIndex(int))); connect(ui.comboBox_Banci_Calculate, SIGNAL(currentIndexChanged(int)), this, SLOT(SlotCombox(int))); connect(ui.comboBox_Banci, SIGNAL(currentIndexChanged(int)), this, SLOT(SlotCombox(int))); ui.comboBox_Model->setEditable(true); connect(ui.Prev_checkShengchang, SIGNAL(clicked()), this, SLOT(onHistoryButton())); connect(ui.Next_checkShengchang, SIGNAL(clicked()), this, SLOT(onHistoryButton())); ui.LineNumber_checkShengchang->setText("50"); QValidator *validator = new QIntValidator(1, 9999, this); ui.LineNumber_checkShengchang->setValidator(validator); ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(0)); ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(0).arg(0)); int nItenCount = ui.check_listWidget->count(); for (int nIndex = 0; nIndex < nItenCount; nIndex++) { QListWidgetItem *itenn = ui.check_listWidget->item(nIndex); QSize s = itenn->sizeHint(); itenn->setSizeHint(QSize(s.width(), 45)); } connect(ui.check_listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(onSetCurrentIndex(int))); ui.LineNumber_log->setText("50"); QValidator *validatorlog = new QIntValidator(1, 9999, this); ui.LineNumber_log->setValidator(validatorlog); connect(ui.Prev_checklog, SIGNAL(clicked()), this, SLOT(onLogButton())); connect(ui.Next_checklog, SIGNAL(clicked()), this, SLOT(onLogButton())); ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(0).arg(0)); ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(0)); } void lpReport::timerEvent(QTimerEvent *event) { } Q_SLOT void lpReport::SlotEditTime() { QObject *obj = sender(); QString str = obj->objectName(); if (str == "pushButton_Set1_Count") { QTimeDlg dlg; dlg.SetDateTime(m_startDate_Count); dlg.setWindowModality(Qt::ApplicationModal); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_startDate_Count); QString m_strLast = m_startDate_Count.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time1_Count->setText(m_strLast); } } else if (str == "pushButton_Set2_Count") { QTimeDlg dlg; dlg.SetDateTime(m_endDate_Count); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_endDate_Count); QString m_endLast = m_endDate_Count.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time2_Count->setText(m_endLast); } } else if (str == "pushButton_Set1_Warning") { QTimeDlg dlg; dlg.SetDateTime(m_startDate_Warning); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_startDate_Warning); QString m_endLast = m_startDate_Warning.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time1_warning->setText(m_endLast); } } else if (str == "pushButton_Set2_Warning") { QTimeDlg dlg; dlg.SetDateTime(m_endDate_Warning); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_endDate_Warning); QString m_endLast = m_endDate_Warning.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time2_warning->setText(m_endLast); } } else if (str == "pushButton_Set1_History") { QTimeDlg dlg(NULL); dlg.SetDateTime(m_startDate_History); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_startDate_History); QString m_endLast = m_startDate_History.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time1_History->setText(m_endLast); } } else if (str == "pushButton_Set2_History") { QTimeDlg dlg; dlg.SetDateTime(m_endDate_History); if (dlg.exec() == QDialog::Accepted) { dlg.GetDateTime(m_endDate_History); QString m_endLast = m_endDate_History.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time2_History->setText(m_endLast); } } } Q_SLOT void lpReport::onCheckButton() { QObject *obj = sender(); QString str = obj->objectName(); if ("pushButton_Checkdata" == str)//查询生产数据 {/*这里需要做数据分页显示 减少内存泄露*/ static bool checkflags = false; if (checkflags == false) { checkflags = true; QString strBanci = ui.comboBox_Banci->currentText(); QString modelName = ui.comboBox_Model->currentText(); if (m_Totaltime.contains(strBanci)) { if (m_startDate_History.date() > m_endDate_History.date()) { if (m_Totaltime.value(strBanci).m_startTime > m_Totaltime.value(strBanci).m_endTime) { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的班次时间是隔夜的,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } else { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } } } else { if (m_startDate_History.date() > m_endDate_History.date()) { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } } QString m_strLast = ui.label_Time1_History->text(); QString m_endLast = ui.label_Time2_History->text(); QString strMsg = tr("查询了%1-%2的生产数据").arg(m_strLast).arg(m_endLast); SaveLog(strMsg); QApplication::setOverrideCursor(Qt::WaitCursor); QFont font; font.setPixelSize(14); ui.label_Tab2_Title->setFont(font); QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录").arg(m_strLast).arg(m_endLast); ui.label_Tab2_Title->setText(m_Title); if (modelName == tr("全部")) CheckDataHistoryByDate(m_strLast, m_endLast, "*"); else CheckDataHistoryByDate(m_strLast, m_endLast, modelName); QApplication::restoreOverrideCursor(); checkflags = false; } else { onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if ("pushButton_SaveHistory" == str) { if (m_tableModel == NULL) return; if (m_tableModel->rowCount() <= 0) { onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("History_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); fileDialog->setFileMode(QFileDialog::AnyFile); fileDialog->setViewMode(QFileDialog::Detail); fileDialog->setGeometry(10, 30, 300, 200); fileDialog->setDirectory("."); fileDialog->setNameFilter("Execl(*.csv)"); if (fileDialog->exec() == QDialog::Accepted) { QString path = fileDialog->selectedFiles()[0]; QString strString = getHistoryCheckString(); QSaveCSVThread *workerThread = new QSaveCSVThread(this); workerThread->setInform(ui.label_Tab2_Title->text(), "username"); workerThread->setCheckStr(m_pDb, strString, path, 0); connect(workerThread, SIGNAL(resultReady(int)), this, SLOT(onSaveCSVDone(int))); connect(workerThread, &QSaveCSVThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); onEventLoop(tr("正在导出数据,请稍等")); QString strMsg = tr("导出了%1-%2的生产数据").arg(ui.label_Time1_History->text()).arg(ui.label_Time2_History->text()); SaveLog(strMsg); onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); } if (fileDialog) { delete fileDialog; fileDialog = NULL; } } else if (str == "pushButton_Wandring") { static bool checkflags = false; if (checkflags == false) { checkflags = true; QApplication::setOverrideCursor(Qt::WaitCursor); QString m_strLast = ui.label_Time1_warning->text(); QString m_endLast = ui.label_Time2_warning->text(); QString strMsg = tr("查询了%1-%2的日志数据").arg(m_strLast).arg(m_endLast); QString strCombox = ui.comboBox_Wandring_Log->currentText(); int mType = 0; if (strCombox == tr("使用记录查询")) { mType = (int)emTypeUseState; } else if (strCombox == tr("报警记录查询")) { mType = (int)emTypeWaring; } else if (strCombox == tr("运行状态查询")) { mType = (int)emTypeRunState; } SaveLog(strMsg); QFont font; font.setPixelSize(14); ui.label_Tab3_Title->setFont(font); QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录").arg(m_strLast).arg(m_endLast); ui.label_Tab3_Title->setText(m_Title); CheckDataWarningByDate(mType, m_strLast, m_endLast); QApplication::restoreOverrideCursor(); checkflags = false; } else { onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if (str == "pushButton_SaveWaring") { if (m_tableWarnModel == NULL) { onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } if (m_tableWarnModel->rowCount() <= 0) { onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("WarnMessage_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); fileDialog->setFileMode(QFileDialog::AnyFile); fileDialog->setViewMode(QFileDialog::Detail); fileDialog->setGeometry(10, 30, 300, 200); fileDialog->setDirectory("."); fileDialog->setNameFilter("Execl(*.csv)"); if (fileDialog->exec() == QDialog::Accepted) { QString path = fileDialog->selectedFiles()[0]; QString strString = getLogCheckString(); QSaveCSVThread *workerThread = new QSaveCSVThread(this); workerThread->setInform(ui.label_Tab3_Title->text(), "username"); workerThread->setCheckStr(m_pDb, strString, path, 1); connect(workerThread, SIGNAL(resultReady(int)), this, SLOT(onSaveCSVDone(int))); connect(workerThread, &QSaveCSVThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); onEventLoop(tr("正在导出数据,请稍等")); QString strMsg = tr("导出了%1-%2的日志数据").arg(ui.label_Time1_warning->text()).arg(ui.label_Time2_warning->text()); SaveLog(strMsg); onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); } if (fileDialog) { delete fileDialog; fileDialog = NULL; } } else if ("pushButton_Checkdata_Calculate" == str) { static bool checkflags = false; if (checkflags == false) { checkflags = true; QString strBanci = ui.comboBox_Banci_Calculate->currentText(); QString modelName = ui.comboBox_Model->currentText(); if (m_Totaltime.contains(strBanci)) { if (m_startDate_Count.date() > m_endDate_Count.date()) { if (m_Totaltime.value(strBanci).m_startTime > m_Totaltime.value(strBanci).m_endTime) { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的班次时间是隔夜的,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } else { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新起始日期,再查询")); checkflags = false; return; } } } else { if (m_startDate_Count.date() > m_endDate_Count.date()) { onMessageBox(QMessageBox::Information, tr("提示"), tr("您选择的日期不合理,请您重新选择一下当前查询的日期,再查询")); checkflags = false; return; } } QString m_strLast = ui.label_Time1_Count->text(); QString m_endLast = ui.label_Time2_Count->text(); QString strMsg = tr("查询了%1-%2的统计数据").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); SaveLog(strMsg); QApplication::setOverrideCursor(Qt::WaitCursor); CheckDataByDate(m_strLast, m_endLast); QApplication::restoreOverrideCursor(); checkflags = false; } else { onMessageBox(QMessageBox::Information, tr("提示"), tr("正在查询数据,请稍后")); } } else if ("pushButton_SaveCalculate" == str) { if (m_CountNumber.size() <= 0) { onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有数据,请重新查询")); return; } QString filename = QString("Data_%1.csv").arg(QDateTime::currentDateTime().toString("yyyy_MM_dd")); QString fileTitle = tr("请选择保存文件的路径"); QFileDialog *fileDialog = new QFileDialog(NULL, fileTitle, filename); fileDialog->setWindowTitle("Save As"); fileDialog->setAcceptMode(QFileDialog::AcceptSave); fileDialog->setFileMode(QFileDialog::AnyFile); fileDialog->setViewMode(QFileDialog::Detail); fileDialog->setGeometry(10, 30, 300, 200); fileDialog->setDirectory("."); fileDialog->setNameFilter("Execl(*.csv)"); if (fileDialog->exec() == QDialog::Accepted) { QString path = fileDialog->selectedFiles()[0]; if (SaveDataToCSV(path, m_CountNumber)) onMessageBox(QMessageBox::Information, tr("提示"), tr("数据导出完成")); QString strMsg = tr("导出了%1-%2的统计数据").arg(ui.label_Time1_Count->text()).arg(ui.label_Time2_Count->text()); SaveLog(strMsg); } if (fileDialog) { delete fileDialog; fileDialog = NULL; } } } bool lpReport::onMessageBox(QMessageBox::Icon ntype, QString strTitle, QString strAtl, int onlyOK) { QMessageBox::StandardButton button = QMessageBox::Ok; if (onlyOK == 1) button = QMessageBox::Cancel; QMessageBox infobox(ntype, strTitle, strAtl, QMessageBox::Ok | button, NULL); infobox.setWindowIcon(QIcon(":/image/leaper")); infobox.setButtonText(QMessageBox::Ok, tr("确认")); infobox.setButtonText(QMessageBox::Cancel, tr("取消")); return (infobox.exec() == QMessageBox::Ok); } void lpReport::CheckDataHistoryByDate(QString m_strLast, QString m_endLast, QString modelname) { QSqlQuery sql; QVariantMap m_Value; m_Value.insert(_CHECK_TYPE_, EMT_CHECK_BY_NAME); m_Value.insert(_CHECK_TIME1_, m_strLast); m_Value.insert(_CHECK_TIME2_, m_endLast); m_Value.insert(_CHECK_NAME_, modelname); m_Value.insert(_CHECK_COUNT_, 1); if (modelname == "*") m_Value.insert(_CHECK_TYPE_, EMT_CHECK_BY_SAE); else m_Value.insert(_CHECK_TYPE_, EMT_CHECK_BY_NAME); QString strString; strString = m_pDb->genCheckStr(m_Value); int nlimit = ui.LineNumber_checkShengchang->text().toInt(); if (nlimit <= 0) { nlimit = 10; ui.LineNumber_checkShengchang->setText("10"); } m_totlaNum = 0; m_PrevNum = 0; QString strStringcheck; if (modelname == "*") strStringcheck = QString("select * from wftable where time >'%1' and time <'%2' LIMIT %4 OFFSET %5").arg(m_strLast).arg(m_endLast).arg(nlimit).arg(m_PrevNum); else strStringcheck = QString("select * from wftable where time >'%1' and time <'%2' and model = '%3' LIMIT %4 OFFSET %5").arg(m_strLast).arg(m_endLast).arg(modelname).arg(nlimit).arg(m_PrevNum); QVariantMap m_mapVarite; m_mapVarite.insert("SqlCount", strString); m_mapVarite.insert("SqlCheck", strStringcheck); m_mapVarite.insert("limit", nlimit); emit operateHistory(m_mapVarite); } bool lpReport::SaveDataToCSV(QString filePath, QMap &m_mapTable) { QFile file(filePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))// 追加写入数据 return false; QTextStream out(&file); QString tableData; QString m_startStr = m_startDate_Count.toString("yyyy-MM-dd ") + m_startTime.toString("hh:mm:ss"); QString m_endStr = m_endDate_Count.toString("yyyy-MM-dd ") + m_endTime.toString("hh:mm:ss"); out << tr("从%1到%2统计的数据如下").arg(m_startStr).arg(m_endStr) << "\n"; out << tr("序号") << "," << tr("型号") << "," << tr("数量") << "\n"; int index = 1; int sum = 0; for (QMap::iterator its = m_mapTable.begin(); its != m_mapTable.end(); ++its) { out << (index++) << ","; tableData = its.key(); out << tableData << ","; out << QString::number(m_mapTable[tableData]) << ","; sum += m_mapTable[tableData]; out << "\n"; } if (!m_mapTable.contains(QString("NG"))) { out << (index++) << "," << QString("NG") << "," << 0 << "\n"; } out << (index++) << "," << tr("总数") << "," << QString::number(sum) << "\n"; out << tr("时间:") << "," << QDateTime::currentDateTime().toString("yyyy-MM-dd") << "," << QDateTime::currentDateTime().toString("hh:mm:ss") << "\n"; out << tr("用户:") << "," << "username" << "," << "\n"; file.close(); return true; } void lpReport::CheckDataByDate(QString m_strLast, QString m_endLast) { if (m_IsRunCountTsk != false) { return; } m_IsRunCountTsk = true; m_CountNumber.clear(); m_channels.clear(); QProgressDialog progress; progress.setWindowModality(Qt::ApplicationModal); progress.setWindowTitle(tr("查询进度")); progress.setWindowIcon(QIcon(":/image/leaper")); progress.setLabelText(tr("数据查询中,请稍后.....")); progress.setCancelButton(0); QSqlQuery sql; QVariantMap m_Value; m_Value.insert(_CHECK_TYPE_, EMT_CHECK_BY_COUNT); m_Value.insert(_CHECK_TIME1_, m_strLast); m_Value.insert(_CHECK_TIME2_, m_endLast); m_Value.insert("CheckType", "Count"); QString strCheck = m_pDb->genCheckStr(m_Value); m_Value.insert(_CHECK_COUNT_, 1); QString strCount = m_pDb->genCheckStr(m_Value); QVariantMap m_map; m_map.insert("SqlCount", strCount); m_map.insert("SqlCheck", strCheck); emit operateCount(m_map); } void lpReport::onEventLoop(QString strMsg) { WaitingDialog dlg; dlg.setWindowModality(Qt::ApplicationModal); dlg.setWindowIcon(QIcon(":/image/leaper")); dlg.setWindowTitle(strMsg); dlg.Start(50, 150), dlg.show(); QEventLoop eventloop; connect(this, SIGNAL(sgFinish()), &eventloop, SLOT(quit())); eventloop.exec(); } void lpReport::SaveLog(QString str) { // QString strMsg = m_pCtrl->getUserName() + ":" + str; // m_pCtrl->addLog(strMsg, emTypeUseState); } QString lpReport::getHistoryCheckString() { QString m_strLast = ui.label_Time1_History->text(); QString m_endLast = ui.label_Time2_History->text(); QString modelName = ui.comboBox_Model->currentText(); QString strString; if (modelName == tr("全部")) strString = QString("select * from wftable where time >'%1' and time <'%2'").arg(m_strLast).arg(m_endLast); else strString = QString("select * from wftable where time >'%1' and time <'%2' and model = '%3'").arg(m_strLast).arg(m_endLast).arg(modelName); return strString; } Q_SLOT void lpReport::onHistoryButton() { QString strObj = sender()->objectName(); if ("Prev_checkShengchang" == strObj) { if (m_PrevNum <= 0) return; int limitNum = ui.LineNumber_checkShengchang->text().toInt(); if (limitNum <= 0) { limitNum = 10; ui.LineNumber_checkShengchang->setText("10"); } QString strString = getHistoryCheckString(); m_PrevNum -= limitNum; if (m_PrevNum <= 0) m_PrevNum = 0; strString = strString + QString(" LIMIT %1 OFFSET %2").arg(limitNum).arg(m_PrevNum); /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShow(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); m_totalPage = (m_totlaNum / limitNum); m_page = ((m_PrevNum) / limitNum) + 1; ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage + 1)); if (m_PrevNum <= 0) { m_PrevNum = 0; ui.Prev_checkShengchang->setDisabled(true); } ui.Next_checkShengchang->setDisabled(false); } else if ("Next_checkShengchang" == strObj) { if (m_PrevNum >= m_totlaNum) return; int limitNum = ui.LineNumber_checkShengchang->text().toInt(); if (limitNum <= 0) { limitNum = 10; ui.LineNumber_checkShengchang->setText("10"); } m_PrevNum += limitNum; if (m_PrevNum >= m_totlaNum) m_PrevNum = m_totlaNum - limitNum; QString strString = getHistoryCheckString(); strString = strString + QString(" LIMIT %1 OFFSET %2").arg(limitNum).arg(m_PrevNum); /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShow(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); m_totalPage = (m_totlaNum / limitNum); m_page = (m_PrevNum + limitNum) / limitNum; ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage + 1)); if ((m_PrevNum + limitNum) >= m_totlaNum) { m_PrevNum = m_totlaNum; ui.Next_checkShengchang->setDisabled(true); } ui.Prev_checkShengchang->setDisabled(false); } } void lpReport::cleanHistorycal() { m_PrevNum = 0; m_NextNum = 0; m_totlaNum = 0; m_page = 0; m_totalPage = 0; m_PrevNumlog = 0; m_NextNumlog = 0; m_totlaNumlog = 0; m_pagelog = 0; m_totalPagelog = 0; ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(0)); ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(0).arg(0)); ui.Prev_checkShengchang->setDisabled(true); ui.Next_checkShengchang->setDisabled(true); ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(0)); ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(0).arg(0)); ui.Prev_checklog->setDisabled(true); ui.Next_checklog->setDisabled(true); } Q_SLOT void lpReport::onSetCurrentIndex(int nIndex) { ui.label_Title->setText(ui.check_listWidget->item(nIndex)->data(0).toString()); emit(sgSetCurrentIndex(nIndex)); } Q_SLOT void lpReport::onSaveCSVDone(int) { emit(sgFinish()); } Q_SLOT void lpReport::handleResults(QString str) { //QString strMsg = "username" + ":" + tr("系统自动定时查询了一次数据完成,目标是清除超期的数据"); //m_pCtrl->addLog(strMsg, emTypeRunState); onShowMessage(tr("系统自动进行清理完成")); } Q_SLOT void lpReport::onShowMessage(QString str) { // QPulpewidget *pw = new QPulpewidget(); // pw->showmessage(str); // pw->setParent(m_pDlgCheck); // connect(pw, SIGNAL(finished()), pw, SLOT(deleteLater()));// } Q_SLOT void lpReport::onProgressForTsk(QVariantMap m_map) { QString nType = m_map.value("Type").toString(); if (nType == "start") { QString strMsg = m_map.value("msg", tr("正在查询数据")).toString(); m_Progressdlg.setWindowTitle(strMsg); m_Progressdlg.Start(50, 150), m_Progressdlg.show(); } else { m_Progressdlg.Stop(); m_Progressdlg.hide(); } } Q_SLOT void lpReport::handleResultsHistory(QVariantMap Mapstr, QSqlQuery sql) { updateModelShowHistory(sql); QString m_strLast = ui.label_Time1_History->text(); QString m_endLast = ui.label_Time2_History->text(); m_totlaNum = Mapstr.value("sum").toInt(); int nlimit = Mapstr.value("limit").toInt(); int nIndex = Mapstr.value("nIndex").toInt(); QString m_Title = tr("起始时间:%1 到 结束时间:%2 的历史记录 共%3条").arg(m_strLast).arg(m_endLast).arg(m_totlaNum); ui.label_Number->setText(QString::number(m_totlaNum)); QFont font; font.setPixelSize(14); font.setBold(true); ui.label_Tab2_Title->setFont(font); ui.label_Tab2_Title->setText(m_Title); ui.Next_checkShengchang->setDisabled(false); m_totalPage = (m_totlaNum / nlimit); if (m_totlaNum > 0) { m_totalPage = m_totalPage + 1; m_page = 1; nIndex = m_totlaNum; } else { m_totlaNum = 0; m_page = 0; } ui.showPage_Label_Checkdata->setText(tr("第%1页 共%2页").arg(m_page).arg(m_totalPage)); ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(nIndex)); onShowMessage(tr("数据查询完成")); } Q_SLOT void lpReport::onShowMsg() { onMessageBox(QMessageBox::Information, tr("提示"), tr("操作已生效")); } Q_SLOT void lpReport::handleResultsCount(const QString &result, const QMap *p) { reportdlg->ClearData(); reportdlg->setTitle(tr("统计结果 ")); if (p == NULL) { m_IsRunCountTsk = false; return; } reportdlg->SetData(QMap(*p)/*m_CountNumber*/); if (!p->contains(QString("NG"))) reportdlg->AppendData(QString("NG"), 0, true); reportdlg->AppendData(tr("总数"), result.toInt(), true); reportdlg->UpdateTableView(); onShowMessage(tr("统计完成")); m_IsRunCountTsk = false; if (p) delete p; } Q_SLOT void lpReport::onLogButton() { QString strObj = sender()->objectName(); if ("Prev_checklog" == strObj) { if (m_PrevNumlog <= 0) return; int limitNum = ui.LineNumber_log->text().toInt(); if (limitNum <= 0) { limitNum = 10; ui.LineNumber_log->setText("10"); } m_PrevNumlog -= limitNum; if (m_PrevNumlog <= 0) m_PrevNumlog = 0; QString strString = getLogCheckString(); strString += QString(" LIMIT %1 OFFSET %2 ").arg(limitNum).arg(m_PrevNumlog); /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShowlog(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); m_totalPagelog = (m_totlaNumlog / limitNum); m_pagelog = ((m_PrevNumlog) / limitNum) + 1; ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog + 1)); if (m_PrevNumlog <= 0) { m_PrevNumlog = 0; ui.Prev_checklog->setDisabled(true); } ui.Next_checklog->setDisabled(false); } else if ("Next_checklog" == strObj) { if (m_PrevNumlog >= m_totlaNumlog) return; int limitNum = ui.LineNumber_log->text().toInt(); if (limitNum <= 0) { limitNum = 10; ui.LineNumber_log->setText("10"); } m_PrevNumlog += limitNum; if (m_PrevNumlog >= m_totlaNumlog) m_PrevNumlog = m_totlaNumlog - limitNum; QString strString = getLogCheckString(); strString += QString(" LIMIT %1 OFFSET %2 ").arg(limitNum).arg(m_PrevNumlog); /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShowlog(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); m_totalPagelog = (m_totlaNumlog / limitNum); m_pagelog = (m_PrevNumlog + limitNum) / limitNum; ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog + 1)); if ((m_PrevNumlog + limitNum) >= m_totlaNumlog) { m_PrevNumlog = m_totlaNumlog; ui.Next_checklog->setDisabled(true); } ui.Prev_checklog->setDisabled(false); } } QString lpReport::getLogCheckString(int nCheckCount/*=0*/) { QString m_strLast = ui.label_Time1_warning->text(); QString m_endLast = ui.label_Time2_warning->text(); QString strCombox = ui.comboBox_Wandring_Log->currentText(); int mType = 0; if (strCombox == tr("使用记录查询")) { mType = (int)emTypeUseState; } else if (strCombox == tr("报警记录查询")) { mType = (int)emTypeWaring; } else if (strCombox == tr("运行状态查询")) { mType = (int)emTypeRunState; } QVariantMap m_vlaue; m_vlaue.insert(_CHECK_TIME1_, m_strLast); m_vlaue.insert(_CHECK_TIME2_, m_endLast); m_vlaue.insert(_CHECK_LOGTYPE, mType); m_vlaue.insert(_CHECK_TYPE_, EMT_CHECK_BY_LOG); if (nCheckCount == 1) m_vlaue.insert(_CHECK_COUNT_, 1); return m_pDb->genCheckStr(m_vlaue); } Q_SLOT void lpReport::onUpdateTableViewShow(QSqlQuery sql) { updateModelShowHistory(sql); } void lpReport::updateModelShowHistory(QSqlQuery &sql) { QStandardItemModel *testmodel = new QStandardItemModel; ui.tableView_checkShengchang->setModel(testmodel);//先将模型插入后在一次性显示 可以提高显示速率 ui.tableView_checkShengchang->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.tableView_checkShengchang->setSelectionBehavior(QAbstractItemView::SelectRows); ui.tableView_checkShengchang->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//自适应行宽 ui.tableView_checkShengchang->horizontalHeader()->setMaximumHeight(100); if (m_tableModel == NULL) m_tableModel = new QStandardItemModel; m_tableModel->clear(); ui.CheckDlg_label_Pic->clear(); m_tableModel->setHorizontalHeaderItem(0, new QStandardItem(tr("日期时间"))); m_tableModel->setHorizontalHeaderItem(1, new QStandardItem(tr("匹配型号"))); m_tableModel->setHorizontalHeaderItem(2, new QStandardItem(tr("相似度"))); m_tableModel->setHorizontalHeaderItem(3, new QStandardItem(tr("消耗时间s"))); m_tableModel->setHorizontalHeaderItem(4, new QStandardItem(tr("直径mm"))); m_tableModel->setHorizontalHeaderItem(5, new QStandardItem(tr("厚度mm"))); m_tableModel->setHorizontalHeaderItem(6, new QStandardItem(tr("缩略图"))); m_tableModel->setHorizontalHeaderItem(7, new QStandardItem(tr("uid"))); int nIndex = 0; while (sql.next()) { /*这里下面是统计查询到的通道对应的产品总数*/ int uid = sql.value("uid").toInt(); QString time = sql.value("time").toString(); QString model = sql.value("model").toString(); double dCorrelate = sql.value("correlate").toDouble(); QString correlate; if (dCorrelate >= 1.7976931348623158e+308) dCorrelate = 0; correlate = QString::number(dCorrelate * 100, 'f', 3) + "%"; double dDetecttime = sql.value("detecttime").toDouble(); QString detecttime = QString::number(dDetecttime, 'f', 3); double dDiameter = sql.value("diameter").toDouble(); QString diameter = QString::number(dDiameter, 'f', 3); double dHight = sql.value("hight").toDouble(); QString hight = QString::number(dHight, 'f', 3); QByteArray pic = sql.value("pic").toByteArray(); QImage img = QImage::fromData(pic); QSize s = img.size(); QPixmap m_Pix = QPixmap::fromImage(img); ui.CheckDlg_label_Pic->setPixmap(m_Pix.scaled(WHEEL_PIC_SIZE, WHEEL_PIC_SIZE)); m_tableModel->setItem(nIndex, 0, new QStandardItem(time)); m_tableModel->setItem(nIndex, 1, new QStandardItem(model)); m_tableModel->setItem(nIndex, 2, new QStandardItem(correlate)); m_tableModel->setItem(nIndex, 3, new QStandardItem(detecttime)); m_tableModel->setItem(nIndex, 4, new QStandardItem(diameter)); m_tableModel->setItem(nIndex, 5, new QStandardItem(hight)); m_tableModel->setItem(nIndex, 6, new QStandardItem(QIcon(m_Pix.scaled(50, 50)), "")); m_tableModel->setItem(nIndex, 7, new QStandardItem(QString("%1").arg(uid))); nIndex++; } ui.showNum_Label_Checkdata->setText(tr("共显示%1条记录").arg(nIndex)); ui.tableView_checkShengchang->setModel(m_tableModel); ui.tableView_checkShengchang->hideColumn(7); ui.tableView_checkShengchang->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); connect(ui.tableView_checkShengchang, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onTableViewClick(QModelIndex))); delete testmodel; testmodel = NULL; } Q_SLOT void lpReport::onUpdateTableViewShowlog(QSqlQuery sql) { updateModelShowLog(sql); } Q_SLOT void lpReport::onResultCountlog(int nCount) { m_totlaNumlog = nCount; emit(sgFinish()); } Q_SLOT void lpReport::onResultCount(int nCount) { m_totlaNum = nCount; emit(sgFinish()); } void lpReport::CheckDataWarningByDate(int nType, QString m_strLast, QString m_endLast) { QString strString = getLogCheckString(1); m_PrevNumlog = 0; m_totlaNumlog = 0; CheckThread *workThread = new CheckThread(this); workThread->setCheckStr(m_pDb, strString); workThread->setModelFlags(true); connect(workThread, SIGNAL(resultCount(int)), this, SLOT(onResultCountlog(int))); connect(workThread, &CheckThread::finished, workThread, &QObject::deleteLater); workThread->start(); onEventLoop(tr("正在查询记录,请稍等")); strString = getLogCheckString(); int nlimit = ui.LineNumber_log->text().toInt(); if (nlimit <= 0) { nlimit = 10; ui.LineNumber_log->setText("10"); } strString += QString(" LIMIT %1 OFFSET %2 ").arg(nlimit).arg(m_PrevNumlog); CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, strString); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onUpdateTableViewShowlog(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); QString m_Title = tr("从%1 到 %2 的记录 共%3条").arg(m_strLast).arg(m_endLast).arg(m_totlaNumlog); QFont font; font.setPixelSize(14); font.setBold(true); ui.label_Tab3_Title->setFont(font); ui.label_Tab3_Title->setText(m_Title); ui.Next_checklog->setDisabled(false); m_totalPagelog = (m_totlaNumlog / nlimit); if (m_totlaNumlog > 0) { m_totalPagelog = m_totalPagelog + 1; m_pagelog = 1; } else { m_totlaNumlog = 0; m_pagelog = 0; } ui.showPage_Label_Checkdata_2->setText(tr("第%1页 共%2页").arg(m_pagelog).arg(m_totalPagelog)); } void lpReport::updateModelShowLog(QSqlQuery &sql) { QStandardItemModel *testmodel = new QStandardItemModel; ui.tableView_TWarning->setModel(testmodel);//先将模型插入后在一次性显示 可以提高显示速率 ui.tableView_TWarning->setEditTriggers(QAbstractItemView::NoEditTriggers); ui.tableView_TWarning->setSelectionBehavior(QAbstractItemView::SelectRows); ui.tableView_TWarning->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);//自适应行宽 if (m_tableWarnModel == NULL) m_tableWarnModel = new QStandardItemModel; m_tableWarnModel->clear(); m_tableWarnModel->setHorizontalHeaderItem(0, new QStandardItem(tr("时间"))); m_tableWarnModel->setHorizontalHeaderItem(1, new QStandardItem(tr("信息"))); int nIndex = 0; while (sql.next()) { /*这里下面是统计查询到的通道对应的产品总数*/ QString time = sql.value("time").toString(); QString message = sql.value("message").toString(); QString classd = sql.value("class").toString(); m_tableWarnModel->setItem(nIndex, 0, new QStandardItem(time)); m_tableWarnModel->setItem(nIndex, 1, new QStandardItem(message)); nIndex++; } ui.showNum_Label_Checkdata_2->setText(tr("共显示%1条记录").arg(nIndex)); ui.tableView_TWarning->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui.tableView_TWarning->setModel(m_tableWarnModel); delete testmodel; testmodel = NULL; } Q_SLOT void lpReport::SlotCombox(int index) { QObject *strobj = sender(); QString objname = strobj->objectName(); if ("comboBox_Banci_Calculate" == objname) { QString str = ui.comboBox_Banci_Calculate->currentText(); if (m_Totaltime.contains(str)) { if (m_Totaltime.value(str).m_startTime >= m_Totaltime.value(str).m_endTime) { QDate m = m_endDate_Count.date(); m = m.addDays(-1); QString strdata = m.toString("yyyy-MM-dd"); m_startDate_Count.setDate(m); } else { m_startDate_Count.setDate(m_endDate_Count.date()); } if (m_startDate_Count.date() > m_endDate_Count.date()) m_startDate_Count.setDate(m_endDate_Count.date()); m_startDate_Count.setTime(m_Totaltime.value(str).m_startTime);// m_endDate_Count.setTime(m_Totaltime.value(str).m_endTime);// } else { if (str == tr("全天")) { QString strTime = nstartTime.toString("hh:mm:ss"); if (m_startDate_Count.date() > m_endDate_Count.date()) m_startDate_Count.setDate(m_endDate_Count.date()); m_startDate_Count.setTime(m_startTime); m_endDate_Count.setTime(nEndTime); QString strStart = m_startDate_Count.toString("yyyy-MM-dd hh:mm:ss"); } } ui.label_Time1_Count->setText(m_startDate_Count.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time2_Count->setText(m_endDate_Count.toString("yyyy-MM-dd hh:mm:ss")); } else if ("comboBox_Banci" == objname) { QString str = ui.comboBox_Banci->currentText(); if (m_Totaltime.contains(str)) { if (m_Totaltime.value(str).m_startTime >= m_Totaltime.value(str).m_endTime) { QDate m = m_endDate_History.date(); m = m.addDays(-1); QString strdata = m.toString("yyyy-MM-dd"); m_startDate_History.setDate(m); } else { m_startDate_History.setDate(m_endDate_History.date()); } if (m_startDate_History.date() > m_endDate_History.date()) m_startDate_History.setDate(m_endDate_History.date()); m_startDate_History.setTime(m_Totaltime.value(str).m_startTime);// m_endDate_History.setTime(m_Totaltime.value(str).m_endTime);// } else { if (str == tr("全天")) { QString strTime = nstartTime.toString("hh:mm:ss"); if (m_startDate_History.date() > m_endDate_History.date()) m_startDate_History.setDate(m_endDate_History.date()); m_startDate_History.setTime(m_startTime); m_endDate_History.setTime(nEndTime); QString strStart = m_startDate_History.toString("yyyy-MM-dd hh:mm:ss"); } } ui.label_Time1_History->setText(m_startDate_History.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time2_History->setText(m_endDate_History.toString("yyyy-MM-dd hh:mm:ss")); } } Q_SLOT void lpReport::onSlowPixmap(QSqlQuery sql) { static bool nFlag = false; if (nFlag == true) return; nFlag = true; sql.next(); double dHight = sql.value("hight").toDouble(); QByteArray pic = sql.value("pic").toByteArray(); QImage img = QImage::fromData(pic); QSize s = img.size(); QPixmap m_Pix = QPixmap::fromImage(img); { int dhight = m_Pix.height(); int dwidth = m_Pix.width(); double nRate = m_Pix.width()*1.0 / m_Pix.height(); int scarew = 150; int scareh = 150 * 1.0 / nRate; if (scareh > 150) { scarew = 150; scareh = 150 * 1.0 / nRate; } ui.CheckDlg_label_Pic->setPixmap(m_Pix.scaled(scarew, scareh)); } nFlag = false; } Q_SLOT void lpReport::onTableViewClick(QModelIndex mIndex) { QString strObj = sender()->objectName(); if ("tableView_checkShengchang" == strObj) { if (m_tableModel) { QModelIndex ItemIndex = m_tableModel->index(mIndex.row(), 7); QString strdata = ItemIndex.data().toString(); if (m_pDb) { QVariantMap m_value; m_value.insert(_CHECK_UID_, strdata); m_value.insert(_CHECK_TYPE_, EMT_CHECK_BY_UID); QString seletcStr = m_pDb->genCheckStr(m_value); /*启用线程查询数据 减少界面卡顿*/ CheckThread *workerThread = new CheckThread(this); workerThread->setCheckStr(m_pDb, seletcStr); connect(workerThread, SIGNAL(resultReady(QSqlQuery)), this, SLOT(onSlowPixmap(QSqlQuery))); connect(workerThread, &CheckThread::finished, workerThread, &QObject::deleteLater); workerThread->start(); } } } } //初始化UI参数 void lpReport::InitUIParam() { m_startDate_History = QDateTime::currentDateTime(); m_endDate_History = QDateTime::currentDateTime(); QString strstartDate = m_startDate_History.toString("yyyy-MM-dd hh:mm:ss"); ui.label_Time1_History->setText(m_startDate_History.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time2_History->setText(m_endDate_History.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time1_Count->setText(m_startDate_Count.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time2_Count->setText(m_endDate_Count.toString("yyyy-MM-dd hh:mm:ss")); m_startDate_Count = QDateTime::currentDateTime(); m_endDate_Count = QDateTime::currentDateTime(); m_endDate_Warning = m_startDate_Warning = QDateTime::currentDateTime(); m_startDate_Warning.setTime(nstartTime); ui.label_Time1_warning->setText(m_startDate_Warning.toString("yyyy-MM-dd hh:mm:ss")); ui.label_Time2_warning->setText(m_endDate_Warning.toString("yyyy-MM-dd hh:mm:ss")); ui.comboBox_Banci->clear(); ui.comboBox_Banci->addItem(tr("全天")); ui.comboBox_Banci->addItems(m_Totaltime.keys()); ui.comboBox_Banci_Calculate->clear(); ui.comboBox_Banci_Calculate->addItem(tr("全天")); ui.comboBox_Banci_Calculate->addItems(m_Totaltime.keys()); ui.comboBox_Wandring_Log->clear(); ui.comboBox_Wandring_Log->addItem(tr("报警记录查询")); ui.comboBox_Wandring_Log->addItem(tr("运行状态查询")); ui.comboBox_Wandring_Log->addItem(tr("使用记录查询")); ui.label_Title->setText(tr("生产数据查询")); ui.stackedWidget->setCurrentIndex(0); if (m_tableModel) { m_tableModel->clear(); } if (m_tableWarnModel) m_tableWarnModel->clear(); ui.label_Number->setText("0"); ui.CheckDlg_label_Pic->clear(); if (reportdlg) reportdlg->ClearData(); } void lpReport::SetModelNames(QStringList models) { ui.comboBox_Model->clear(); ui.comboBox_Model->addItem(tr("全部")); if (!models.contains("NG")) ui.comboBox_Model->addItem(tr("NG")); ui.comboBox_Model->addItems(models); if (_pCompleter) delete _pCompleter; _pCompleter = new QCompleter(models); _pCompleter->setCaseSensitivity(Qt::CaseInsensitive); ui.comboBox_Model->setCompleter(_pCompleter); }