Newer
Older
SurgeTankControl / alarmlistfrom.cpp
[wangxitong] on 27 Jan 2022 14 KB first commit
#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);

}