#include "alarmlistfrom.h" #include "ui_alarmlistfrom.h" #include "qcustomcalendarwidget.h" #include "QDateTimeEdit" #include "QTableView" #include "tablewidget.h" #include "QTextCodec" #include "alarmdetailform.h" #include <QSqlDatabase> #include <QSqlError> #include <QDebug> #include <QSqlQuery> #include <QSqlRecord> #include <mainwindow.h> #include <QAxObject> #include<QMessageBox> #include<QFileDialog> #include <QDir> static QSqlDatabase db; static QDateTimeEdit *dateEdit2,*dateEdit0; static TableWidget *tableWidget; AlarmListFrom::AlarmListFrom(QString username,QWidget *parent) : QWidget(parent), username(username), ui(new Ui::AlarmListFrom) { ui->setupUi(this); QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate().addDays(-365), this); QDateTimeEdit *dateEdit1 = new QDateTimeEdit(QDate::currentDate(), this); dateEdit2 = dateEdit1; dateEdit0 = dateEdit; connect(dateEdit,SIGNAL(dateChanged(QDate)),this,SLOT(updateLastDate(QDate))); QCustomCalendarWidget* calendarWidget = new QCustomCalendarWidget(this); dateEdit->setCalendarPopup(true); // 日历弹出 dateEdit->setCalendarWidget(calendarWidget); dateEdit->setContextMenuPolicy(Qt::NoContextMenu); dateEdit->setFixedSize(150, 26); dateEdit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); calendarWidget->disconnect(SIGNAL(selectionChanged())); calendarWidget->disconnect(SIGNAL(clicked(QDate))); connect(calendarWidget, &QCustomCalendarWidget::signalSetCalendarTime, [dateEdit](const QDate& data) { dateEdit->setDate(data); }); QFont decorationFont("Microsoft Yahei", 11); dateEdit->setFont(decorationFont); ui->timeLayout->addWidget(dateEdit,0,0); ui->timeLayout->addWidget(ui->to,0,1); QCustomCalendarWidget* calendarWidget1 = new QCustomCalendarWidget(this); dateEdit1->setCalendarPopup(true); // 日历弹出 dateEdit1->setCalendarWidget(calendarWidget1); dateEdit1->setMinimumDate(dateEdit->date()); dateEdit1->setContextMenuPolicy(Qt::NoContextMenu); dateEdit1->setFixedSize(150, 26); dateEdit1->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); calendarWidget1->disconnect(SIGNAL(selectionChanged())); calendarWidget1->disconnect(SIGNAL(clicked(QDate))); connect(calendarWidget1, &QCustomCalendarWidget::signalSetCalendarTime, [dateEdit1](const QDate& data){ dateEdit1->setDate(data); }); dateEdit1->setFont(decorationFont); ui->timeLayout->addWidget(dateEdit1,0,2); QStringList header; QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); header<<QString::fromLocal8Bit("预警编号")<<QString::fromLocal8Bit("预警等级") <<QString::fromLocal8Bit("预警类型")<<QString::fromLocal8Bit("预警内容")<<QString::fromLocal8Bit("预警状态") <<QString::fromLocal8Bit("预警时间")<<QString::fromLocal8Bit("操作"); tableWidget = new TableWidget(this); tableWidget->btnText = QString::fromLocal8Bit("处理详情"); tableWidget->alarmlistfrom = this; tableWidget->set_title(header); tableWidget->set_columnWidth(1,80); tableWidget->set_columnWidth(3,150); tableWidget->set_columnWidth(5,180); tableWidget->set_columnWidth(7,60); QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QSqlQuery query("select * from alarm",db); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("alarmcode").toString()); vector.append(query.value("alarmlevel").toString()); vector.append(query.value("alarmtype").toString()); vector.append(query.value("alarmcontent").toString()); vector.append(query.value("alarmstatus").toString()); vector.append(query.value("alarmtime").toString()); vector.append(query.value("id").toString()); curr_data.append(vector); } } tableWidget->curr_page = 0; tableWidget->updata_data(curr_data); QString str = QString::fromLocal8Bit("INSERT INTO operation (username, part, name, operation,operationtime) VALUES ('%1', '%2','%3', '%4','%5')") .arg(username) .arg(QString::fromLocal8Bit("预警管理")) .arg(QString::fromLocal8Bit("预警列表")) .arg(QString::fromLocal8Bit("查看详情")) .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); // qDebug()<<str; QSqlQuery query1(str); ui->datalist->addWidget(tableWidget); } AlarmListFrom::~AlarmListFrom() { delete ui; } void AlarmListFrom::on_export_data_clicked() { QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QString str; if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3' and alarmlevel ='%4'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()).arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText() =="" && ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmlevel ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()==""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()); }else{ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59'") .arg(dateEdit0->text()).arg(dateEdit2->text()); } QSqlQuery query(str); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("alarmcode").toString()); vector.append(query.value("alarmlevel").toString()); vector.append(query.value("alarmtype").toString()); vector.append(query.value("alarmcontent").toString()); vector.append(query.value("alarmstatus").toString()); vector.append(query.value("alarmtime").toString()); vector.append(query.value("id").toString()); curr_data.append(vector); } } QString filePath = QFileDialog::getSaveFileName(this, "Save Data", "untitle", "Microsoft Excel 2013(*.xlsx)"); if (!filePath.isEmpty()) { QAxObject *excel = new QAxObject(this); excel->setControl("Excel.Application"); excel->dynamicCall("SetVisible(bool Visible)", false); excel->setProperty("DisplayAlerts", false); QAxObject *workbooks = excel->querySubObject("WorkBooks"); workbooks->dynamicCall("Add"); QAxObject *workbook = excel->querySubObject("ActiveWorkBook"); QAxObject *worksheets = workbook->querySubObject("Sheets"); QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1); QStringList header; QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); header<<QString::fromLocal8Bit("预警编号")<<QString::fromLocal8Bit("预警等级") <<QString::fromLocal8Bit("预警类型")<<QString::fromLocal8Bit("预警内容")<<QString::fromLocal8Bit("预警状态") <<QString::fromLocal8Bit("预警时间")<<QString::fromLocal8Bit("操作"); for (int j = 1; j < 7; ++j) { QAxObject *Range = worksheet->querySubObject("Cells(int,int)", 1, j); Range->dynamicCall("SetValue(const QString &)", header[j-1]); } for (int i = 1; i < curr_data.count()+1; ++i) { for (int j = 1; j < 7; ++j) { QAxObject *Range = worksheet->querySubObject("Cells(int,int)", i+1, j); Range->dynamicCall("SetValue(const QString &)", curr_data[i-1][j-1]); } } workbook->dynamicCall("SaveAs(const QString &)", QDir::toNativeSeparators(filePath)); if (excel != NULL) { excel->dynamicCall("Quit()"); delete excel; excel = NULL; } QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("导出成功!")); } } void AlarmListFrom::check(QString id) { AlarmDetailForm *new_win = new AlarmDetailForm(id,this); new_win->setWindowTitle(QString::fromLocal8Bit("预警详情")); // emit sezndStr(id); new_win->show(); } void AlarmListFrom::updateLastDate(QDate date){ dateEdit2->setMinimumDate(date); } void AlarmListFrom::on_search_clicked() { QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QString str; if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3' and alarmlevel ='%4'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()).arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText() =="" && ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmlevel ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()==""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()); }else{ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59'") .arg(dateEdit0->text()).arg(dateEdit2->text()); } QSqlQuery query(str); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("alarmcode").toString()); vector.append(query.value("alarmlevel").toString()); vector.append(query.value("alarmtype").toString()); vector.append(query.value("alarmcontent").toString()); vector.append(query.value("alarmstatus").toString()); vector.append(query.value("alarmtime").toString()); vector.append(query.value("id").toString()); curr_data.append(vector); } } tableWidget->curr_page = 0; tableWidget->updata_data(curr_data); QString str = QString::fromLocal8Bit("INSERT INTO operation (username, part, name, operation,operationtime) VALUES ('%1', '%2','%3', '%4','%5')") .arg(username) .arg(QString::fromLocal8Bit("预警管理")) .arg(QString::fromLocal8Bit("预警列表")) .arg(QString::fromLocal8Bit("查看详情")) .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); // qDebug()<<str; QSqlQuery query1(str); } void AlarmListFrom::submit() { QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QString str; if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3' and alarmlevel ='%4'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()).arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText() =="" && ui->alarmlevel->currentText()!=""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmlevel ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmlevel->currentText()); }else if(ui->alarmtype->currentText()!=""&&ui->alarmlevel->currentText()==""){ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59' and alarmtype ='%3'") .arg(dateEdit0->text()).arg(dateEdit2->text()) .arg(ui->alarmtype->currentText()); }else{ str = QString("select * from alarm where alarmtime BETWEEN '%1 00:00:00' AND '%2 23:59:59'") .arg(dateEdit0->text()).arg(dateEdit2->text()); } QSqlQuery query(str); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("alarmcode").toString()); vector.append(query.value("alarmlevel").toString()); vector.append(query.value("alarmtype").toString()); vector.append(query.value("alarmcontent").toString()); vector.append(query.value("alarmstatus").toString()); vector.append(query.value("alarmtime").toString()); vector.append(query.value("id").toString()); curr_data.append(vector); } } tableWidget->updata_data(curr_data); }