Newer
Older
SurgeTankControl / realtimeform.cpp
[wangxitong] on 27 Jan 2022 5 KB first commit
#include "realtimeform.h"
#include "ui_realtimeform.h"
#include "QTableView"
#include "tablewidget.h"
#include "QTextCodec"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QProcess>
#include <QDesktopServices>
#include <mainwindow.h>
#include <QUrl>
#include <Windows.h>
#include "realtimestatistics.h"
static QSqlDatabase db;
static TableWidget *tableWidget;
RealTimeForm::RealTimeForm(QString username,QWidget *parent) :
    QWidget(parent),
    username(username),
    ui(new Ui::RealTimeForm)
{
    ui->setupUi(this);
    ui->textEdit->viewport()->installEventFilter(this);
    QStringList header;
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

    header<<QString::fromLocal8Bit("设备编号")<<QString::fromLocal8Bit("设备类型")
         <<QString::fromLocal8Bit("监测值")<<QString::fromLocal8Bit("当前状态")<<QString::fromLocal8Bit("操作");

    tableWidget = new TableWidget(this);
    tableWidget->btnText = QString::fromLocal8Bit("历史曲线");
    tableWidget->realtimeform = this;
    tableWidget->set_title(header);
    tableWidget->set_columnWidth(1,130);
    tableWidget->set_columnWidth(2,200);
    tableWidget->set_columnWidth(3,160);
    tableWidget->set_columnWidth(4,80);
    tableWidget->set_columnWidth(0,130);
    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 monitor Order By uploadtime Desc",db);
        QSqlRecord rec = query.record();
        while(query.next())
        {
            vector.clear();
            vector.append(query.value("devicecode").toString());
            vector.append(query.value("devicetype").toString());
            vector.append(query.value("monitor").toString());
            vector.append(query.value("status").toString());
            vector.append(query.value("devicecode").toString());
            curr_data.append(vector);
        }
    }
    tableWidget->curr_page = 0;
    tableWidget->updata_data(curr_data);
    ui->datalist->addWidget(tableWidget);
    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);
}

RealTimeForm::~RealTimeForm()
{
    delete ui;
}

void RealTimeForm::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->textEdit->toPlainText()==""){
            str = "select * from monitor Order By uploadtime Desc";
        }else{
            str = QString("select * from monitor where devicecode like '%%1%' or devicename like '%%1%' Order By uploadtime Desc").arg(ui->textEdit->toPlainText());
        }
        QSqlQuery query(str);
        QSqlRecord rec = query.record();
        while(query.next())
        {
            vector.clear();
            vector.append(query.value("devicecode").toString());
            vector.append(query.value("devicetype").toString());
            vector.append(query.value("monitor").toString());
            vector.append(query.value("status").toString());
            vector.append(query.value("devicecode").toString());
            curr_data.append(vector);
        }
    }

    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 RealTimeForm::check(QString code)
{
    RealTimeStatistics *new_win = new RealTimeStatistics(code,username,this);
    new_win->setWindowFlags(new_win->windowFlags() |Qt::Dialog);
    new_win->setWindowTitle(QString::fromLocal8Bit("实时数据"));
    new_win->show();
}

//事件过滤器
bool RealTimeForm::eventFilter(QObject *watched, QEvent *event)
{
    if(watched==ui->textEdit->viewport() && event->type()==QEvent::MouseButtonPress){
        ui->textEdit->setFocus();
        int pInt = QProcess::execute("taskkill /im osk.exe /f");
        QDesktopServices::openUrl(QUrl("osk.exe", QUrl::TolerantMode));
    }
    return QWidget::eventFilter(watched,event);
}