| | |
| | | #include "searchinfo.h" |
| | | #include "ui_searchinfo.h" |
| | | #include <QAxObject> |
| | | #include <QDebug> |
| | | #include <QDir> |
| | | #include <QSqlError> |
| | | #include <QSqlQuery> |
| | | |
| | | SearchInfo::SearchInfo(QWidget *parent) : |
| | | QMainWindow(parent), |
| | | ui(new Ui::SearchInfo) |
| | | { |
| | | ui->setupUi(this); |
| | | // ui->label_2->hide(); |
| | | // ui->label_3->hide(); |
| | | // ui->dateTimeEdit->hide(); |
| | | // ui->dateTimeEdit_2->hide(); |
| | | |
| | | m_model = new QStandardItemModel(this); |
| | | ui->tableView->setModel(m_model); |
| | | ui->tableView->verticalHeader()->setVisible(false); // 隐藏行头 |
| | | m_model->setColumnCount(5); |
| | | QStringList labels; |
| | | labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"; |
| | | m_model->setHorizontalHeaderLabels(labels); |
| | | if(QSqlDatabase::contains("qt_sql_default_connection")){ |
| | | m_db = QSqlDatabase::addDatabase("qt_sql_default_connection"); |
| | | }else{ |
| | | m_db = QSqlDatabase::addDatabase("QSQLITE"); |
| | | } |
| | | m_db.setDatabaseName("sqlData.db"); |
| | | if(m_db.open()){ |
| | | qDebug()<<"db open ok"; |
| | | createSqlite(); |
| | | //m_db.close(); |
| | | searchComName(); // 查询公司名 |
| | | }else{ |
| | | qDebug()<<"db open fail"; |
| | | } |
| | | // 设置表格列标签 |
| | | setLabels(); |
| | | |
| | | } |
| | | |
| | | SearchInfo::~SearchInfo() |
| | | { |
| | | m_db.close(); |
| | | delete ui; |
| | | } |
| | | |
| | | void SearchInfo::createSqlite() |
| | | { |
| | | // 建表 |
| | | QString sql = "create table Internal_1 (id int primary key, name varchar(30), _020100 int)"; |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<"create Internal_1 ok..."; |
| | | }else{ |
| | | qDebug()<<"create Internal_1 fail..."<<query.lastError().text(); |
| | | } |
| | | |
| | | sql = "CREATE TABLE file_up_info (\ |
| | | id INTEGER PRIMARY KEY AUTOINCREMENT,\ |
| | | name VARCHAR (30),\ |
| | | code TEXT,\ |
| | | up_time TEXT\ |
| | | )"; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<"create file_up_info ok..."; |
| | | }else{ |
| | | qDebug()<<"create file_up_info fail..."<<query.lastError().text(); |
| | | } |
| | | |
| | | sql = "CREATE TABLE company_info (\ |
| | | id INTEGER PRIMARY KEY AUTOINCREMENT,\ |
| | | name VARCHAR (30),\ |
| | | code VARCHAR (30),\ |
| | | 机构类型 TEXT,\ |
| | | 主要业务活动 TEXT,\ |
| | | 行业代码 TEXT,\ |
| | | 单位注册地及区域 TEXT,\ |
| | | 区域代码 TEXT,\ |
| | | 城乡代码 TEXT,\ |
| | | 单位规模 TEXT,\ |
| | | 从业期末人数 TEXT,\ |
| | | 法定代表人 TEXT,\ |
| | | 执行会记标准类别 TEXT,\ |
| | | 长途区号 TEXT,\ |
| | | 固定电话 TEXT,\ |
| | | 邮政编码 TEXT,\ |
| | | 电子邮箱 TEXT,\ |
| | | 网址 TEXT\ |
| | | )"; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<"create company_info ok..."; |
| | | }else{ |
| | | qDebug()<<"create company_info fail..."<<query.lastError().text(); |
| | | } |
| | | |
| | | // 审计项目表 |
| | | createTableNoEvidences("audit_project"); |
| | | m_itemAndTable["审计项目"] = "audit_project"; |
| | | |
| | | // 内审工作量表 |
| | | createTableNoEvidences("audit_workload"); |
| | | m_itemAndTable["内审工作量"] = "audit_workload"; |
| | | |
| | | // 问题金额表 |
| | | createTableHasEvidences("problem_money"); |
| | | m_itemAndTable["问题金额"] = "problem_money"; |
| | | |
| | | // 问题个数表 |
| | | createTableHasEvidences("problem_count"); |
| | | m_itemAndTable["问题个数"] = "problem_count"; |
| | | // 问题整改表 |
| | | createTableHasEvidences("problem_rectification"); |
| | | m_itemAndTable["问题整改"] = "problem_rectification"; |
| | | |
| | | // 问题整改--非金额表 |
| | | createTableHasEvidences("problem_no_money"); |
| | | m_itemAndTable["问题整改--非金额"] = "problem_no_money"; |
| | | |
| | | // 处分表 |
| | | createTableNoEvidences("punish"); |
| | | m_itemAndTable["处分"] = "punish"; |
| | | |
| | | // 案件线索表 |
| | | createTableHasUnit("case_clue"); |
| | | m_itemAndTable["案件线索"] = "case_clue"; |
| | | |
| | | } |
| | | |
| | | void SearchInfo::createTableHasEvidences(QString tableName) |
| | | { |
| | | QString sql =QString( "CREATE TABLE %1 ( \ |
| | | id INTEGER PRIMARY KEY AUTOINCREMENT,\ |
| | | kpi_name TEXT,\ |
| | | code TEXT,\ |
| | | num INTEGER,\ |
| | | evidences TEXT,\ |
| | | com_id INTEGER\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<QString("create %1 ok...").arg(tableName); |
| | | }else{ |
| | | qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text(); |
| | | } |
| | | } |
| | | |
| | | void SearchInfo::createTableNoEvidences(QString tableName) |
| | | { |
| | | QString sql = QString("CREATE TABLE %1 (\ |
| | | id INTEGER PRIMARY KEY AUTOINCREMENT,\ |
| | | kpi_name TEXT,\ |
| | | code TEXT,\ |
| | | num INTEGER,\ |
| | | com_id INTEGER\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<QString("create %1 ok...").arg(tableName); |
| | | }else{ |
| | | qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text(); |
| | | } |
| | | } |
| | | |
| | | void SearchInfo::createTableHasUnit(QString tableName) |
| | | { |
| | | QString sql = QString("CREATE TABLE %1 (\ |
| | | id INTEGER PRIMARY KEY AUTOINCREMENT,\ |
| | | kpi_name TEXT,\ |
| | | code TEXT,\ |
| | | unit TEXT,\ |
| | | num INTEGER,\ |
| | | com_id INTEGER\ |
| | | )").arg(tableName); |
| | | QSqlQuery query; |
| | | if(query.exec(sql)) |
| | | { |
| | | qDebug()<<QString("create %1 ok...").arg(tableName); |
| | | }else{ |
| | | qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text(); |
| | | } |
| | | } |
| | | |
| | | void SearchInfo::searchComName() |
| | | { |
| | | QSqlQuery query; |
| | | QString sql = QString("select id,name from company_info"); |
| | | if(query.exec(sql)){ |
| | | qDebug()<<"size:"<<query.numRowsAffected(); |
| | | while(query.next()){ |
| | | int id = query.value(0).toInt(); |
| | | QString name = query.value(1).toString(); |
| | | qDebug()<<"com select:"<<id<<name; |
| | | m_comInfo[name] = id; |
| | | ui->comboBox_company->addItem(name); |
| | | } |
| | | } |
| | | } |
| | | |
| | | QVector<QVector<QString>> SearchInfo::getResult(QString &sql,int colCnt) |
| | | { |
| | | QVector<QVector<QString>> resultSet; |
| | | QSqlQuery query; |
| | | qDebug()<<sql; |
| | | if(query.exec(sql)){ |
| | | while (query.next()) { |
| | | QVector<QString> tmp; |
| | | for(int i=0;i<colCnt;++i){ |
| | | tmp.push_back(query.value(i).toString()); |
| | | } |
| | | resultSet.append(tmp); |
| | | } |
| | | } |
| | | return resultSet; |
| | | } |
| | | |
| | | void SearchInfo::setLabels() |
| | | { |
| | | QStringList labels,labels2,labels3; |
| | | labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"<<" "; |
| | | labels2<<"ID"<<"指标名称"<<"代码"<<"单位"<<"数量"<<"公司编号"; |
| | | labels3<<"ID"<<"指标名称"<<"代码"<<"数量"<<"佐证"<<"公司编号"; |
| | | m_labels["审计项目"] = labels; |
| | | m_labels["内审工作量"] = labels; |
| | | m_labels["问题金额"] = labels3; |
| | | m_labels["问题个数"] = labels3; |
| | | m_labels["问题整改"] = labels3; |
| | | m_labels["问题整改--非金额"] = labels3; |
| | | m_labels["处分"] = labels; |
| | | m_labels["案件线索"] = labels2; |
| | | } |
| | | |
| | | void SearchInfo::on_pushButton_search_clicked() |
| | | { |
| | | // 获取信息,然后查询 |
| | | QString item = ui->comboBox->currentText(); |
| | | QString comName = ui->comboBox_company->currentText(); |
| | | QString sql = QString("select * from %1 where com_id=%2").arg(m_itemAndTable[item]).arg(m_comInfo[comName]); |
| | | qDebug()<<__FUNCTION__<<sql; |
| | | QSqlQuery query; |
| | | if(query.exec(sql)){ |
| | | qDebug()<<"size:"<<query.size(); |
| | | m_model->setRowCount(0); |
| | | int rowCnt = 0; |
| | | while (query.next()) { |
| | | rowCnt++; |
| | | m_model->setRowCount(rowCnt); |
| | | qDebug()<<query.value(0).toInt(); |
| | | for(int i=0;i<6;++i){ |
| | | if(query.value(i).isValid()){ |
| | | m_model->setItem(rowCnt-1,i,new QStandardItem(query.value(i).toString())); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | void SearchInfo::on_pushButton_export_clicked() |
| | | { |
| | | // 每一张表拿最新的那一批数据即可,然后保存到电子表格中 |
| | | int comId = m_comInfo[ui->comboBox_company->currentText()]; |
| | | QString audit_project = QString("select kpi_name,code,num from %2 where com_id=%1 limit 10").arg(comId).arg("audit_project"); |
| | | QString audit_workload = QString("select kpi_name,code,num from %2 where com_id=%1 limit 1").arg(comId).arg("audit_workload"); |
| | | QString case_clue = QString("select kpi_name,code,unit,num from %2 where com_id=%1 limit 2").arg(comId).arg("case_clue"); |
| | | QString problem_count = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_count"); |
| | | QString problem_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 11").arg(comId).arg("problem_money"); |
| | | QString problem_no_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 5").arg(comId).arg("problem_no_money"); |
| | | QString problem_rectification = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_rectification"); |
| | | QString punish = QString("select kpi_name,code,num from %2 where com_id=%1 limit 4").arg(comId).arg("punish"); |
| | | |
| | | QVector<QVector<QString>> audit_project_res = getResult(audit_project,3); |
| | | QVector<QVector<QString>> audit_workload_res = getResult(audit_workload,3); |
| | | QVector<QVector<QString>> case_clue_res = getResult(case_clue,4); |
| | | QVector<QVector<QString>> problem_count_res = getResult(problem_count,4); |
| | | QVector<QVector<QString>> problem_money_res = getResult(problem_money,4); |
| | | QVector<QVector<QString>> problem_no_money_res = getResult(problem_no_money,4); |
| | | QVector<QVector<QString>> problem_rectification_res = getResult(problem_rectification,4); |
| | | QVector<QVector<QString>> punish_res = getResult(punish,3); |
| | | qDebug()<<audit_project_res.size()<<punish_res.size(); |
| | | |
| | | // 操作excel |
| | | QAxObject* excel = new QAxObject("Excel.Application"); // 创建Excel对象 |
| | | excel->setProperty("Visible", false); // 设置Excel不可见 |
| | | QAxObject* workbooks = excel->querySubObject("Workbooks"); // 获取所有工作簿 |
| | | QAxObject* workbook = workbooks->querySubObject("Add"); // 添加新工作簿 |
| | | QAxObject* worksheets = workbook->querySubObject("Worksheets"); // 获取所有工作表 |
| | | QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1); // 获取第一个工作表 |
| | | for (int i = 1; i <= 5; i++) { |
| | | for (int j = 1; j <= 5; j++) { |
| | | QString cellValue = "Value"; // 设置要写入的单元格值 |
| | | worksheet->querySubObject("Cells(int, int)", i, j)->dynamicCall("SetValue(const QVariant&)", cellValue); // 写入单元格值 |
| | | } |
| | | } |
| | | QString path = QDir::currentPath(); |
| | | qDebug()<<"path:"<<path; |
| | | path += "/debug/Data/save2.xls"; |
| | | qDebug()<<"path:"<<path; |
| | | workbook->dynamicCall("SaveAs(const QString&)", path); // 保存工作簿 |
| | | workbook->dynamicCall("Close()"); // 关闭工作簿 |
| | | excel->dynamicCall("Quit()"); // 退出Excel应用程序 |
| | | |
| | | } |
| | | |
| | | void SearchInfo::on_comboBox_currentIndexChanged(const QString &arg1) |
| | | { |
| | | m_model->setHorizontalHeaderLabels(m_labels[arg1]); |
| | | } |