Newer
Older
SurgeTankControl / devicelistform.cpp
[wangxitong] on 27 Jan 2022 9 KB first commit
#include "devicelistform.h"
#include "ui_devicelistform.h"
#include "QTableView"
#include "tablewidget.h"
#include "QTextCodec"
#include "devicedetailform.h"
#include "realtimestatistics.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QProcess>
#include <QDesktopServices>
#include <QSqlQuery>
#include <QSqlRecord>
#include <mainwindow.h>
#include <QUrl>
#include <Windows.h>
#pragma comment(lib, "user32.lib")
static QSqlDatabase db;
static TableWidget *tableWidget;
DeviceListForm::DeviceListForm(QString username,QWidget *parent) :
    QWidget(parent),
    username(username),
    ui(new Ui::DeviceListForm)
{
    ui->setupUi(this);
    ui->textEdit->viewport()->installEventFilter(this);
    tableWidget = new TableWidget(this);
    tableWidget->btnText = QString::fromLocal8Bit("查看详情");
    tableWidget->devicelistform = this;
    on_search_clicked();

    ui->datalist->addWidget(tableWidget);

}

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

void DeviceListForm::on_export_data_clicked()
{
    DeviceDetailForm *new_win = new DeviceDetailForm("");
    new_win->setWindowTitle(QString::fromLocal8Bit("新增设备"));
    new_win->show();
}

void DeviceListForm::on_search_clicked()
{
    QStringList header;
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

    if(ui->deivcetype->currentText()==QString::fromLocal8Bit("运行设备")){
        header<<QString::fromLocal8Bit("设备位号")<<QString::fromLocal8Bit("设备名称")
             <<QString::fromLocal8Bit("规格/型号")<<QString::fromLocal8Bit("维修保养日期")<<QString::fromLocal8Bit("场站")<<QString::fromLocal8Bit("操作");
    }else{
        header<<QString::fromLocal8Bit("设备位号")<<QString::fromLocal8Bit("设备名称")
             <<QString::fromLocal8Bit("信号描述")<<QString::fromLocal8Bit("信号类型")<<QString::fromLocal8Bit("场站")<<QString::fromLocal8Bit("备注");
    }

    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){
        QString str;
        if(ui->deivcetype->currentText()==QString::fromLocal8Bit("运行设备")){
            if(ui->textEdit->toPlainText()==""){
                str = "select * from device";
            }
            else {
                str = QString::fromLocal8Bit("select * from device where 设备名称 like '%%1%' or 位号 like '%%1%' or 场站 like '%%1%'").arg(ui->textEdit->toPlainText());
            }
            QSqlQuery query(str);
            QSqlRecord rec = query.record();
            while(query.next())
            {
                vector.clear();
                vector.append(query.value(QString::fromLocal8Bit("位号")).toString());
                vector.append(query.value(QString::fromLocal8Bit("设备名称")).toString());
                vector.append(query.value(QString::fromLocal8Bit("规格型号")).toString());
                vector.append(query.value(QString::fromLocal8Bit("维修保养时间")).toString());
                vector.append(query.value(QString::fromLocal8Bit("场站")).toString());
                vector.append(query.value("id").toString());
                curr_data.append(vector);
            }
        }
        else {
            if(ui->textEdit->toPlainText()==""){
                str = "select * from monitordevice";
            }
            else if(ui->textEdit->toPlainText()!=""){
                str = QString::fromLocal8Bit("select * from monitordevice where position like '%%1%' or code like '%%1%' or station like '%%1%'").arg(ui->textEdit->toPlainText());
            }
            else {
                str = "";
            }
            QSqlQuery query1(str);
            QSqlRecord rec1 = query1.record();
            while(query1.next())
            {
                vector.clear();
                vector.append(query1.value(QString::fromLocal8Bit("code")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("position")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("signal_description")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("signal_type")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("station")).toString());
                vector.append(query1.value("remark").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 query2(str);
}

void DeviceListForm::submit()
{
    QStringList header;
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

    if(ui->deivcetype->currentText()==QString::fromLocal8Bit("运行设备")){
        header<<QString::fromLocal8Bit("设备位号")<<QString::fromLocal8Bit("设备名称")
             <<QString::fromLocal8Bit("规格/型号")<<QString::fromLocal8Bit("维修保养日期")<<QString::fromLocal8Bit("场站")<<QString::fromLocal8Bit("操作");
    }else{
        header<<QString::fromLocal8Bit("设备位号")<<QString::fromLocal8Bit("设备名称")
             <<QString::fromLocal8Bit("信号描述")<<QString::fromLocal8Bit("信号类型")<<QString::fromLocal8Bit("场站")<<QString::fromLocal8Bit("备注");
    }

    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){
        QString str;
        if(ui->deivcetype->currentText()==QString::fromLocal8Bit("运行设备")){
            if(ui->textEdit->toPlainText()==""){
                str = "select * from device";
            }
            else {
                str = QString::fromLocal8Bit("select * from device where 设备名称 like '%%1%' or 位号 like '%%1%' or 场站 like '%%1%'").arg(ui->textEdit->toPlainText());
            }
            QSqlQuery query(str);
            QSqlRecord rec = query.record();
            while(query.next())
            {
                vector.clear();
                vector.append(query.value(QString::fromLocal8Bit("位号")).toString());
                vector.append(query.value(QString::fromLocal8Bit("设备名称")).toString());
                vector.append(query.value(QString::fromLocal8Bit("规格型号")).toString());
                vector.append(query.value(QString::fromLocal8Bit("维修保养时间")).toString());
                vector.append(query.value(QString::fromLocal8Bit("场站")).toString());
                vector.append(query.value("id").toString());
                curr_data.append(vector);
            }
        }
        else {
            if(ui->textEdit->toPlainText()==""){
                str = "select * from monitordevice";
            }
            else if(ui->textEdit->toPlainText()!=""){
                str = QString::fromLocal8Bit("select * from monitordevice where position like '%%1%' or code like '%%1%' or station like '%%1%'").arg(ui->textEdit->toPlainText());
            }
            else {
                str = "";
            }
            QSqlQuery query1(str);
            QSqlRecord rec1 = query1.record();
            while(query1.next())
            {
                vector.clear();
                vector.append(query1.value(QString::fromLocal8Bit("code")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("position")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("signal_description")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("signal_type")).toString());
                vector.append(query1.value(QString::fromLocal8Bit("station")).toString());
                vector.append(query1.value("remark").toString());
                curr_data.append(vector);
            }
        }
        tableWidget->updata_data(curr_data);
    }
}
void DeviceListForm::check(QString id)
{
    DeviceDetailForm *new_win = new DeviceDetailForm(id,this);
    new_win->setWindowTitle(QString::fromLocal8Bit("编辑设备"));
    new_win->show();
}

//事件过滤器
bool DeviceListForm::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);
}