diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/indexwindow.h b/softwareDirectory/AutoVerScheme/indexwindow.h index 190b0f1..df672ad 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.h +++ b/softwareDirectory/AutoVerScheme/indexwindow.h @@ -5,6 +5,8 @@ #include "datasyncView.h" #include "infomanageview.h" + + namespace Ui { class IndexWindow; } @@ -32,8 +34,9 @@ //页面关闭响应函数 void onNewWindowClosed(); - void on_tb1_clicked(); + + void ShowMessageBox(QString title,QString value); private: Ui::IndexWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/indexwindow.h b/softwareDirectory/AutoVerScheme/indexwindow.h index 190b0f1..df672ad 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.h +++ b/softwareDirectory/AutoVerScheme/indexwindow.h @@ -5,6 +5,8 @@ #include "datasyncView.h" #include "infomanageview.h" + + namespace Ui { class IndexWindow; } @@ -32,8 +34,9 @@ //页面关闭响应函数 void onNewWindowClosed(); - void on_tb1_clicked(); + + void ShowMessageBox(QString title,QString value); private: Ui::IndexWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/indexwindow.ui b/softwareDirectory/AutoVerScheme/indexwindow.ui index dec7207..562fd46 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.ui +++ b/softwareDirectory/AutoVerScheme/indexwindow.ui @@ -97,7 +97,7 @@ QFrame::Plain - 自动检定系统 + 自动检定系统(计准仪器) Qt::AutoText diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/indexwindow.h b/softwareDirectory/AutoVerScheme/indexwindow.h index 190b0f1..df672ad 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.h +++ b/softwareDirectory/AutoVerScheme/indexwindow.h @@ -5,6 +5,8 @@ #include "datasyncView.h" #include "infomanageview.h" + + namespace Ui { class IndexWindow; } @@ -32,8 +34,9 @@ //页面关闭响应函数 void onNewWindowClosed(); - void on_tb1_clicked(); + + void ShowMessageBox(QString title,QString value); private: Ui::IndexWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/indexwindow.ui b/softwareDirectory/AutoVerScheme/indexwindow.ui index dec7207..562fd46 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.ui +++ b/softwareDirectory/AutoVerScheme/indexwindow.ui @@ -97,7 +97,7 @@ QFrame::Plain - 自动检定系统 + 自动检定系统(计准仪器) Qt::AutoText diff --git a/softwareDirectory/AutoVerScheme/infomanageview.h b/softwareDirectory/AutoVerScheme/infomanageview.h index 5e44bba..9d876ff 100644 --- a/softwareDirectory/AutoVerScheme/infomanageview.h +++ b/softwareDirectory/AutoVerScheme/infomanageview.h @@ -26,6 +26,8 @@ void initNav(); //初始化导航按钮 void initIcon(); //初始化导航按钮图标 void buttonClicked(); //导航按钮单击事件 + + void ShowMessageBox(QString title,QString value); protected: void showEvent(QShowEvent *); private: diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/indexwindow.h b/softwareDirectory/AutoVerScheme/indexwindow.h index 190b0f1..df672ad 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.h +++ b/softwareDirectory/AutoVerScheme/indexwindow.h @@ -5,6 +5,8 @@ #include "datasyncView.h" #include "infomanageview.h" + + namespace Ui { class IndexWindow; } @@ -32,8 +34,9 @@ //页面关闭响应函数 void onNewWindowClosed(); - void on_tb1_clicked(); + + void ShowMessageBox(QString title,QString value); private: Ui::IndexWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/indexwindow.ui b/softwareDirectory/AutoVerScheme/indexwindow.ui index dec7207..562fd46 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.ui +++ b/softwareDirectory/AutoVerScheme/indexwindow.ui @@ -97,7 +97,7 @@ QFrame::Plain - 自动检定系统 + 自动检定系统(计准仪器) Qt::AutoText diff --git a/softwareDirectory/AutoVerScheme/infomanageview.h b/softwareDirectory/AutoVerScheme/infomanageview.h index 5e44bba..9d876ff 100644 --- a/softwareDirectory/AutoVerScheme/infomanageview.h +++ b/softwareDirectory/AutoVerScheme/infomanageview.h @@ -26,6 +26,8 @@ void initNav(); //初始化导航按钮 void initIcon(); //初始化导航按钮图标 void buttonClicked(); //导航按钮单击事件 + + void ShowMessageBox(QString title,QString value); protected: void showEvent(QShowEvent *); private: diff --git a/softwareDirectory/AutoVerScheme/main.cpp b/softwareDirectory/AutoVerScheme/main.cpp index 46ccce0..7204a9c 100644 --- a/softwareDirectory/AutoVerScheme/main.cpp +++ b/softwareDirectory/AutoVerScheme/main.cpp @@ -3,9 +3,11 @@ #include #include "indexWindow.h" #include "testview.h" -#include "testview.h" #include "infomanageview.h" #include "datasyncview.h" +#include "QMessageBox" + + int main(int argc, char *argv[]) { @@ -18,11 +20,13 @@ font.setPixelSize(13); a.setFont(font); //DataSyncView w; - //InfoManageView w; + IndexWindow w; //TestView w; //w.thread->start(); - loginWindow w; + + + //loginWindow w; w.show(); return a.exec(); } diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro index dfb0418..111e8d4 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro @@ -22,8 +22,10 @@ checkmethodmanage.cpp \ checkwindow.cpp \ create_task.cpp \ + databaseconnection.cpp \ datasyncview.cpp \ depar_task.cpp \ + depar_task_server.cpp \ indexwindow.cpp \ infomanageview.cpp \ inspectdataitem.cpp \ @@ -44,8 +46,10 @@ checkmethodmanage.h \ checkwindow.h \ create_task.h \ + databaseconnection.h \ datasyncview.h \ depar_task.h \ + depar_task_server.h \ indexwindow.h \ infomanageview.h \ inspectdataitem.h \ diff --git a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user index e01b794..b9b4915 100644 --- a/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user +++ b/softwareDirectory/AutoVerScheme/AutoVerScheme.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -8,7 +8,7 @@ ProjectExplorer.Project.ActiveTarget - 0 + 1 ProjectExplorer.Project.EditorSettings @@ -530,9 +530,8 @@ 2 - AutoVerScheme2 - Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro - C:/Users/admin/Desktop/SVN代码/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro + C:/Users/admin/Desktop/SVN/software/softwareDirectory/AutoVerScheme/AutoVerScheme.pro false @@ -543,7 +542,7 @@ false true - + D:/Auto_verification_scheme/build-AutoVerScheme-Desktop_Qt_5_14_2_MinGW_64_bit-Debug 1 diff --git a/softwareDirectory/AutoVerScheme/InfoBase.h b/softwareDirectory/AutoVerScheme/InfoBase.h index 084cf3f..82db20e 100644 --- a/softwareDirectory/AutoVerScheme/InfoBase.h +++ b/softwareDirectory/AutoVerScheme/InfoBase.h @@ -3,6 +3,7 @@ #include #include "QStandardItemModel" +#include "databaseconnection.h" ///信号管理页面的基类 所有信息管理页面都继承于InfoBase /// 便于统一管理 所有子类必须实现Load方法 /// 每次按钮点击切换都会调用Load方法 用于每次页面的数据刷新 diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.cpp b/softwareDirectory/AutoVerScheme/databaseconnection.cpp new file mode 100644 index 0000000..64ed567 --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.cpp @@ -0,0 +1,44 @@ +#include "databaseconnection.h" + + +DatabaseConnection* DatabaseConnection::Connect = nullptr; +QMutex DatabaseConnection::mutex; + +DatabaseConnection::DatabaseConnection() +{ + + // 连接数据库 + db = QSqlDatabase::addDatabase("QODBC"); + db.setHostName("111.198.10.15"); + db.setDatabaseName("casic_metering_xichang"); + db.setPort(21906); + db.setUserName("zdjdcs"); + db.setPassword("11111111"); + + +} +DatabaseConnection::~DatabaseConnection() { + // 在析构函数中关闭数据库连接 + close(); +} +bool DatabaseConnection::open() { + return db.open(); +} + +void DatabaseConnection::close() { + db.close(); +} + +QSqlDatabase& DatabaseConnection::getDatabase() { + return db; +} +DatabaseConnection* DatabaseConnection::getInstance() +{ + if (!Connect) { + QMutexLocker locker(&mutex); + if (!Connect) { + Connect = new DatabaseConnection(); + } + } + return Connect; +} diff --git a/softwareDirectory/AutoVerScheme/databaseconnection.h b/softwareDirectory/AutoVerScheme/databaseconnection.h new file mode 100644 index 0000000..98c4b6d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/databaseconnection.h @@ -0,0 +1,38 @@ +#ifndef DATABASECONNECTION_H +#define DATABASECONNECTION_H +#include +#include +#include + +class DatabaseConnection +{ + + +public: + //获取数据库实例 + static DatabaseConnection* getInstance(); + + DatabaseConnection(); + ~DatabaseConnection(); + bool open(); + void close(); + QSqlDatabase& getDatabase(); +private: + //单列模式 保证DatabaseConnection的唯一性 + static DatabaseConnection* Connect; + //QMutex 来确保在多线程环境下单例的正确创建。 + static QMutex mutex; + + //这是拷贝构造函数的声明,后面跟着 = delete; 表示这个构造函数被删除了。 + //这意味着你不能通过拷贝另一个 DatabaseConnection 对象来创建新的 DatabaseConnection 对象。 + //如果尝试这样做,编译器会报错。 + DatabaseConnection(const DatabaseConnection&) = delete; + //这是拷贝赋值运算符的声明,同样后面跟着 = delete; 表示这个运算符被删除了。 + //这意味着你不能将一个 DatabaseConnection 对象赋值给另一个 DatabaseConnection 对象。 + //如果尝试这样做,编译器同样会报错。 + DatabaseConnection& operator=(const DatabaseConnection&) = delete; + //数据库db类 + QSqlDatabase db; +}; + +#endif // DATABASECONNECTION_H diff --git a/softwareDirectory/AutoVerScheme/depar_task.cpp b/softwareDirectory/AutoVerScheme/depar_task.cpp index 5f0f93a..5c2db6d 100644 --- a/softwareDirectory/AutoVerScheme/depar_task.cpp +++ b/softwareDirectory/AutoVerScheme/depar_task.cpp @@ -3,6 +3,8 @@ #include "QMessageBox" #include "InfoBase.h" #include "QStandardItemModel" +//部门任务 +#include "depar_task_server.h" Depar_Task::Depar_Task(QWidget *parent) : InfoBase(parent), @@ -11,10 +13,6 @@ ui->setupUi(this); //初始化列表 this->initForm(); - - - - } Depar_Task::~Depar_Task() @@ -32,7 +30,8 @@ "background-color:white;" "}"); - ui->tableWidget->setRowCount(10); // 设置10行 + //ui->tableWidget->setRowCount(10); + //ui->tableWidget->setRowCount(10); // 设置10行 ui->tableWidget->setColumnCount(10); // 设置11列 ui->tableWidget->setColumnWidth(0, 80); // 设置第一列的宽度为100像素 ui->tableWidget->verticalHeader()->setParent(nullptr); //隐藏行头 @@ -42,13 +41,14 @@ //初始化TableWidget 设置列 QStringList headers; - headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "辅助字段"<< "出厂编号" + headers << "序号" << "设备名称" << "型号规则" << "辅助字段" << "出厂编号" << "生产厂家" <<"委托方"<<"使用部门"<<"要求检完时间"<<"是否加急"; ui->tableWidget->setHorizontalHeaderLabels(headers); } + void Depar_Task::ShowMessageBox(QString title,QString value) { // 创建一个QMessageBox对象 QMessageBox msgBox; @@ -67,5 +67,33 @@ } void Depar_Task::Load() { - //ShowMessageBox("部门任务页面","部门任务初始化完成"); + //查询部门任务 获取DatabaseConnection对象 + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + QSqlQuery query(Conn->getDatabase()); + // 创建数据库管理器对象 + sloveCh dbManager; + // 调用数据库管理器的函数获取数据 + QList data = dbManager.getAllData(); + + int rowCount = 0; + int row=0; + for (const Dept& dept : data) { + rowCount = ui->tableWidget->rowCount(); + ui->tableWidget->insertRow(rowCount); + ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QString::number(row+1))); + //ui->tableWidget->setItem(row, 0, new QTableWidgetItem(dept.id)); + ui->tableWidget->setItem(row, 1, new QTableWidgetItem(dept.sample_name)); //设置数据 + ui->tableWidget->setItem(row, 2, new QTableWidgetItem(dept.sample_model)); //设置数据 + ui->tableWidget->setItem(row, 3, new QTableWidgetItem(dept.help_instruction)); //设置数据 + ui->tableWidget->setItem(row, 4, new QTableWidgetItem(dept.manufacture_no)); //设置数据 + ui->tableWidget->setItem(row, 5, new QTableWidgetItem(dept.manufacturer)); //设置数据 + ui->tableWidget->setItem(row, 6, new QTableWidgetItem(dept.customer_name)); //设置数据 + ui->tableWidget->setItem(row, 7, new QTableWidgetItem(dept.FULL_NAME)); //设置数据 + ui->tableWidget->setItem(row, 8, new QTableWidgetItem(dept.require_over_time)); //设置数据 + ui->tableWidget->setItem(row, 9, new QTableWidgetItem(dept.is_urgent)); //设置数据 + //QDebug + row++; + + } + } diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.cpp b/softwareDirectory/AutoVerScheme/depar_task_server.cpp new file mode 100644 index 0000000..d68d46c --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.cpp @@ -0,0 +1,31 @@ +#include "depar_task_server.h" + +sloveCh::sloveCh() +{ + +} + +QList sloveCh::getAllData() { + QList result; + + QSqlQuery query; + + query.exec("SELECT bi.id ,br.sample_name , br.sample_model ,ei.help_instruction ,ei.manufacture_no ,ei.manufacturer ,bi.customer_name ,dept.FULL_NAME,bi.require_over_time ,bi.is_urgent FROM biz_business_order_info bi LEft JOIN biz_business_order_sample_relation br ON bi.id = br.order_id LEft JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no LEft JOIN sys_dept dept ON ei.dept_id = dept.ID LEft JOIN sys_user user ON user.ID = bi.create_user_id"); + + while (query.next()) { + Dept Dept; + Dept.id = query.value("id").toString(); + Dept.sample_name = query.value("sample_name").toString(); + Dept.sample_model = query.value("sample_model").toString(); + Dept.help_instruction = query.value("help_instruction").toString(); + Dept.manufacture_no = query.value("manufacture_no").toString(); + Dept.manufacturer = query.value("manufacturer").toString(); + Dept.customer_name = query.value("customer_name").toString(); + Dept.FULL_NAME = query.value("FULL_NAME").toString(); + Dept.require_over_time = query.value("require_over_time").toString(); + Dept.is_urgent = query.value("is_urgent").toString(); + result.append(Dept); + } + + return result; +} diff --git a/softwareDirectory/AutoVerScheme/depar_task_server.h b/softwareDirectory/AutoVerScheme/depar_task_server.h new file mode 100644 index 0000000..473cf4d --- /dev/null +++ b/softwareDirectory/AutoVerScheme/depar_task_server.h @@ -0,0 +1,37 @@ +#ifndef SLOVECH_H +#define SLOVECH_H + +#include +#include +#include +#include +#include "QList" +#include "databaseconnection.h" + + + class Dept { + public: + QString id; + QString sample_name; + QString sample_model; + QString help_instruction; + QString manufacture_no; + QString manufacturer; + QString customer_name; + QString FULL_NAME; + QString require_over_time; + QString is_urgent; +}; +class sloveCh +{ +public: + sloveCh(); + QList getAllData(); + +private: + QSqlDatabase db; + +}; + + +#endif // SLOVECH_H diff --git a/softwareDirectory/AutoVerScheme/indexwindow.cpp b/softwareDirectory/AutoVerScheme/indexwindow.cpp index cbba812..8854db9 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.cpp +++ b/softwareDirectory/AutoVerScheme/indexwindow.cpp @@ -6,6 +6,10 @@ #include "checkmethodmanage.h" #include "verifymethodmanage.h" #include "verifywindow.h" +#include "QMessageBox" +//QMessageBox +//数据连接类 +#include "databaseconnection.h" IndexWindow::IndexWindow(QWidget *parent) : QMainWindow(parent), @@ -52,6 +56,14 @@ loadStyle(":/qss/Index.css"); + DatabaseConnection *Conn=DatabaseConnection::getInstance(); + + //数据库连接 目前先放这里 后续需要放到登录界面 + bool IsOpen=Conn->open(); + if(IsOpen) + ShowMessageBox("数据库连接","连接成功"); + else + ShowMessageBox("数据库连接","连接失败"); } void IndexWindow::loadStyle(const QString &qssFile) @@ -83,7 +95,25 @@ } +void IndexWindow::ShowMessageBox(QString title,QString value) { + // 创建一个QMessageBox对象 + QMessageBox msgBox; + // 设置消息框的标题 + msgBox.setWindowTitle(title); + + // 设置消息框的文本内容 + msgBox.setText(value); + + // 设置消息框的标准按钮,这里是“确定”按钮 + msgBox.setStandardButtons(QMessageBox::Ok); + + // 设置样式表以改变文本颜色 + QString styleSheet = "QLabel { color: black; }"; // 这里将文本颜色设置为红色 + msgBox.setStyleSheet(styleSheet); + // 显示消息框 + msgBox.exec(); +} void IndexWindow::onNewWindowClosed() { // 新窗体关闭后,设置 IndexWindow 为活动窗口 diff --git a/softwareDirectory/AutoVerScheme/indexwindow.h b/softwareDirectory/AutoVerScheme/indexwindow.h index 190b0f1..df672ad 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.h +++ b/softwareDirectory/AutoVerScheme/indexwindow.h @@ -5,6 +5,8 @@ #include "datasyncView.h" #include "infomanageview.h" + + namespace Ui { class IndexWindow; } @@ -32,8 +34,9 @@ //页面关闭响应函数 void onNewWindowClosed(); - void on_tb1_clicked(); + + void ShowMessageBox(QString title,QString value); private: Ui::IndexWindow *ui; diff --git a/softwareDirectory/AutoVerScheme/indexwindow.ui b/softwareDirectory/AutoVerScheme/indexwindow.ui index dec7207..562fd46 100644 --- a/softwareDirectory/AutoVerScheme/indexwindow.ui +++ b/softwareDirectory/AutoVerScheme/indexwindow.ui @@ -97,7 +97,7 @@ QFrame::Plain - 自动检定系统 + 自动检定系统(计准仪器) Qt::AutoText diff --git a/softwareDirectory/AutoVerScheme/infomanageview.h b/softwareDirectory/AutoVerScheme/infomanageview.h index 5e44bba..9d876ff 100644 --- a/softwareDirectory/AutoVerScheme/infomanageview.h +++ b/softwareDirectory/AutoVerScheme/infomanageview.h @@ -26,6 +26,8 @@ void initNav(); //初始化导航按钮 void initIcon(); //初始化导航按钮图标 void buttonClicked(); //导航按钮单击事件 + + void ShowMessageBox(QString title,QString value); protected: void showEvent(QShowEvent *); private: diff --git a/softwareDirectory/AutoVerScheme/main.cpp b/softwareDirectory/AutoVerScheme/main.cpp index 46ccce0..7204a9c 100644 --- a/softwareDirectory/AutoVerScheme/main.cpp +++ b/softwareDirectory/AutoVerScheme/main.cpp @@ -3,9 +3,11 @@ #include #include "indexWindow.h" #include "testview.h" -#include "testview.h" #include "infomanageview.h" #include "datasyncview.h" +#include "QMessageBox" + + int main(int argc, char *argv[]) { @@ -18,11 +20,13 @@ font.setPixelSize(13); a.setFont(font); //DataSyncView w; - //InfoManageView w; + IndexWindow w; //TestView w; //w.thread->start(); - loginWindow w; + + + //loginWindow w; w.show(); return a.exec(); } diff --git a/softwareDirectory/AutoVerScheme/res/qss/Index.css b/softwareDirectory/AutoVerScheme/res/qss/Index.css index d2ba43e..ab24186 100644 --- a/softwareDirectory/AutoVerScheme/res/qss/Index.css +++ b/softwareDirectory/AutoVerScheme/res/qss/Index.css @@ -1,4 +1,7 @@ -QMainWindow#IndexWindow +*{ +color:black; +} +QWidget#centralwidget { background-image: url(:/image/Index/u15.png); background-color:white;