internal_system_v1/auditproject.cpp
@@ -65,3 +65,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void AuditProject::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/auditproject.h
@@ -2,6 +2,7 @@ #define AUDITPROJECT_H #include <QMainWindow> #include <QVariantList> namespace Ui { class AuditProject; @@ -15,11 +16,13 @@ explicit AuditProject(QWidget *parent = 0); ~AuditProject(); private slots: public slots: void on_tableWidget_clicked(const QModelIndex &index); void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::AuditProject *ui; int m_comId; internal_system_v1/auditworkload.cpp
@@ -37,3 +37,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void AuditWorkload::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/auditworkload.h
@@ -2,6 +2,7 @@ #define AUDITWORKLOAD_H #include <QMainWindow> #include <QVariantList> namespace Ui { class AuditWorkload; @@ -15,9 +16,12 @@ explicit AuditWorkload(QWidget *parent = 0); ~AuditWorkload(); private slots: public slots: void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::AuditWorkload *ui; int m_comId; internal_system_v1/caseclue.cpp
@@ -38,3 +38,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void CaseClue::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,3,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/caseclue.h
@@ -2,6 +2,7 @@ #define CASECLUE_H #include <QMainWindow> #include <QVariantList> namespace Ui { class CaseClue; @@ -18,6 +19,8 @@ private slots: void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::CaseClue *ui; int m_comId; internal_system_v1/clientmainwindow.cpp
@@ -2,6 +2,11 @@ #include "ui_clientmainwindow.h" #include <QDebug> #include <QFileDialog> #include <QMessageBox> #include <QSqlQuery> #include <QSqlRecord> extern int g_comId; ClientMainWindow::ClientMainWindow(QWidget *parent) : QMainWindow(parent), @@ -54,8 +59,118 @@ // 隐藏掉某个选项 ui->tabWidget->removeTab(3); // OK // 关联各个功能槽 connect(m_coverInfo,SIGNAL(sendComName(QString)),m_searchInfo,SLOT(addComName(QString))); connect(this,SIGNAL(sendDataToAuditProject(QVariantList)),m_auditPro,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToAuditWorkLoad(QVariantList)),m_auditworkload,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToProblemMoney(QVariantList)),m_problemMon,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToProblemCount(QVariantList)),m_problemCnt,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToProblemRectification(QVariantList)),m_probleRect,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToProblemNoMoney(QVariantList)),m_problemNotMon,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToPunish(QVariantList)),m_punish,SLOT(showData(QVariantList))); connect(this,SIGNAL(sendDataToCaseClue(QVariantList)),m_caseClue,SLOT(showData(QVariantList))); } void ClientMainWindow::readDataFromExcel(QString path) { QAxObject excel("Excel.Application"); excel.setProperty("Visible",false); excel.setProperty("DisplayAlerts",false); qDebug()<<"open:"<<path; qDebug()<<"excel:"<<excel.className(); QAxObject * wbs = excel.querySubObject("WorkBooks"); QAxObject * wb = wbs->querySubObject("Open(QString&)",path); //QAxObject* pWorkBook = excel.querySubObject("ActiveWorkBook"); //QAxObject* pWorkSheets = pWorkBook->querySubObject("Sheets");//获取工作表 QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 也可以 int cnt = shs->property("Count").toInt(); qDebug()<<"cnt="<<cnt; for(int i=0;i<cnt;++i){ QAxObject * sheet = shs->querySubObject("Item(int)", i+1); QString sheetName = sheet->property("Name").toString(); qDebug()<<"sh name:"<<sheetName; QAxObject *usedRange = sheet->querySubObject("UsedRange"); int rows = usedRange->querySubObject("Rows")->property("Count").toInt(); int columns = usedRange->querySubObject("Columns")->property("Count").toInt(); qDebug()<<"r--c:"<<rows<<columns; QVariant val = usedRange->dynamicCall("Value"); // 拿到二维表格 QVariantList valRows = val.toList(); // 公司名、统一信用代码 QVariant uniCode = valRows[5].toList().at(1); QVariant comName = valRows[6].toList().at(1); if(comName.isValid()){ if(!readDataFromSQL(comName.toString())){ QMessageBox::information(this,"导入中断","请确认公司基本信息已经存在"); return; } qDebug()<<comName<<g_comId; } // 审计项目 QVariantList audit_project; for(int i=10;i<20;++i){ audit_project.append(valRows[i].toList().at(4)); } qDebug()<<audit_project; // 审计工作量 QVariantList audit_workload; for(int i=20;i<21;++i){ audit_workload.append(valRows[i].toList().at(4)); } // 问题金额 QVariantList problem_money; for(int i=21;i<32;++i){ problem_money.append(valRows[i].toList().at(4)); } // 问题个数 QVariantList problem_count; for(int i=32;i<39;++i){ problem_count.append(valRows[i].toList().at(4)); } // 问题整改(金额类) QVariantList problem_rectification; for(int i=39;i<46;++i){ problem_rectification.append(valRows[i].toList().at(4)); } // 问题整改(非金额类) QVariantList problem_nomoney; for(int i=46;i<51;++i){ problem_nomoney.append(valRows[i].toList().at(4)); } // 处分 QVariantList punish; for(int i=51;i<55;++i){ punish.append(valRows[i].toList().at(4)); } // 案件线索 QVariantList case_clue; for(int i=55;i<57;++i){ case_clue.append(valRows[i].toList().at(4)); } qDebug()<<case_clue; emit sendDataToAuditProject(audit_project); emit sendDataToAuditWorkLoad(audit_workload); emit sendDataToProblemMoney(problem_money); emit sendDataToProblemCount(problem_count); emit sendDataToProblemRectification(problem_rectification); emit sendDataToProblemNoMoney(problem_nomoney); emit sendDataToPunish(punish); emit sendDataToCaseClue(case_clue); } wbs->dynamicCall("Close()"); excel.dynamicCall("Quit(void)"); } void ClientMainWindow::on_pushButton_auditPro_clicked() @@ -131,3 +246,37 @@ ui->listWidget->addItem(f); } } void ClientMainWindow::on_pushButton_importExcel_clicked() { QString path = QFileDialog::getOpenFileName(this,"选择表格:单位内部审计业务情况表","./","excel(*业务情况表*.xls)"); qDebug()<<"path:"<<path; if(path.size() > 1){ readDataFromExcel(path); } } bool ClientMainWindow::readDataFromSQL(QString name) { QSqlQuery query; QString sql; if(name.size() > 1){ sql = QString("select id,name from company_info where name='%1'").arg(name); qDebug()<<"查询公司sql:"<<sql; if(query.exec(sql)){ qDebug()<<"OK sql"<<__FUNCTION__; QSqlRecord res = query.record(); qDebug()<<query.size()<<query.numRowsAffected()<<res.count(); if(!query.next()){ QMessageBox::information(this,"导入失败","公司名不存在库中,请先导入基本信息表"); }else{ g_comId = query.value(0).toInt(); return true; } }else{ qDebug()<<"fail sql"<<__FUNCTION__; } } return false; } internal_system_v1/clientmainwindow.h
@@ -28,6 +28,8 @@ ~ClientMainWindow(); void initUi(); void readDataFromExcel(QString path); bool readDataFromSQL(QString name); private slots: void on_pushButton_auditPro_clicked(); @@ -51,6 +53,18 @@ void on_pushButton_openXlsxFile_clicked(); void on_pushButton_importExcel_clicked(); signals: void sendDataToAuditProject(QVariantList); void sendDataToAuditWorkLoad(QVariantList); void sendDataToProblemMoney(QVariantList); void sendDataToProblemCount(QVariantList); void sendDataToProblemRectification(QVariantList); void sendDataToProblemNoMoney(QVariantList); void sendDataToPunish(QVariantList); void sendDataToCaseClue(QVariantList); private: Ui::ClientMainWindow *ui; AuditProject *m_auditPro; internal_system_v1/clientmainwindow.ui
@@ -35,6 +35,16 @@ <item> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QPushButton" name="pushButton_importExcel"> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 170, 255);</string> </property> <property name="text"> <string>导入表格</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_auditPro"> <property name="minimumSize"> <size> internal_system_v1/coverinfo.cpp
@@ -2,6 +2,7 @@ #include "ui_coverinfo.h" #include <QDebug> #include <QDirIterator> #include <QFileDialog> #include <QSqlQuery> #include <QSqlRecord> @@ -30,6 +31,17 @@ // ui->label_creditCode->setText(cc); QString dirPath = "./debug/Data"; QString dirPathRelease = "./release/Data"; QString dirPathData = "./Data"; QDir dir(dirPathData); if(dir.exists()){ dirPath = dirPathData; // 存在则覆盖 } QDir dirRe(dirPathRelease); if(dirRe.exists()){ dirPath = dirPathRelease; } QStringList list; QDirIterator it(dirPath, {"*.xls","*.xlsx"}, QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); while(it.hasNext()) @@ -221,11 +233,145 @@ int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug()<<"com select:"<<id<<name; m_com[name] = id; ui->comboBox->addItem(name); bool isInBox = false; for(int i=0;i<ui->comboBox->count();++i){ if(ui->comboBox->itemText(i) == name){ isInBox = true; break; } } if(!isInBox){ m_com[name] = id; ui->comboBox->addItem(name); emit sendComName(name); ui->comboBox->setCurrentText(name); } } } } void CoverInfo::readExcelFromPath(QString path) { QAxObject excel("Excel.Application"); excel.setProperty("Visible",false); excel.setProperty("DisplayAlerts",false); qDebug()<<"open:"<<path; qDebug()<<"excel:"<<excel.className(); QAxObject * wbs = excel.querySubObject("WorkBooks"); QAxObject * wb = wbs->querySubObject("Open(QString&)",path); //QAxObject* pWorkBook = excel.querySubObject("ActiveWorkBook"); //QAxObject* pWorkSheets = pWorkBook->querySubObject("Sheets");//获取工作表 QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 也可以 int cnt = shs->property("Count").toInt(); qDebug()<<"cnt="<<cnt; for(int i=0;i<cnt;++i){ QAxObject * sheet = shs->querySubObject("Item(int)", i+1); QString sheetName = sheet->property("Name").toString(); qDebug()<<"sh name:"<<sheetName; QAxObject *usedRange = sheet->querySubObject("UsedRange"); int rows = usedRange->querySubObject("Rows")->property("Count").toInt(); int columns = usedRange->querySubObject("Columns")->property("Count").toInt(); qDebug()<<"r--c:"<<rows<<columns; QVariant val = usedRange->dynamicCall("Value"); // 拿到二维表格 QVariantList valRows = val.toList(); // 统一信用代码 QVariant uniCode = valRows[9].toList().at(3); if(uniCode.isValid()){ ui->label_creditCode->setText(uniCode.toString()); } // 单位名称 QVariant name = valRows[9].toList().at(8); if(name.isValid()){ ui->label_name->setText(name.toString()); } // 机构类型 QVariant comType = valRows[12].toList().at(3); if(comType.isValid()){ ui->label_comType->setText(comType.toString()); } // 主要业务活动 QString business; QVariant first = valRows[18].toList().at(2); if(first.isValid()){ business.append(first.toString()); } QVariant sec = valRows[18].toList().at(5); if(sec.isValid()){ business += "、"; business.append(sec.toString()); } QVariant third = valRows[18].toList().at(8); if(third.isValid()){ business += "、"; business.append(third.toString()); } if(business.size() > 0){ ui->label_business->setText(business); } // 业务代码 QVariant busCode = valRows[19].toList().at(4); if(busCode.isValid()){ ui->label_businessCode->setText(busCode.toString()); } // 注册地址 QString addr=""; QVariant province = valRows[21].toList().at(1); // 省份 QVariant city = valRows[21].toList().at(4); // 城市 QVariant district = valRows[21].toList().at(7); // 管辖区 QVariant village = valRows[22].toList().at(2); // 乡镇 QVariant street = valRows[22].toList().at(4); // 街道 QVariant Sub = valRows[23].toList().at(2); // 街道办事处 QVariant committee = valRows[25].toList().at(3); // 居委会 //qDebug()<<province<<city<<district<<village<<street<<Sub<<committee; if(province.isValid()) addr += province.toString(); if(city.isValid()) addr += city.toString(); if(district.isValid()) addr += district.toString(); if(village.isValid()) addr += village.toString(); if(street.isValid()) addr += street.toString(); if(Sub.isValid()) addr += Sub.toString(); if(committee.isValid()) addr += committee.toString(); if(addr.size()>10)ui->label_addr->setText(addr); // 区域代码 QVariant areaCode = valRows[24].toList().at(2); if(areaCode.isValid()) ui->label_areaCode->setText(areaCode.toString()); // 城乡代码 QVariant townCode = valRows[24].toList().at(6); if(townCode.isValid()) ui->label_townCode->setText(townCode.toString()); // 单位规模 QVariant scale = valRows[25].toList().at(3); if(scale.isValid()) ui->label_scale->setText(scale.toString()); // 从业人数 QVariant people = valRows[26].toList().at(6); if(people.isValid()) ui->label_people->setText(people.toString()); // 法人 QVariant representative = valRows[27].toList().at(4); if(representative.isValid()) ui->label_representative->setText(representative.toString()); // 会计标准类别 standardType QVariant standardType = valRows[27].toList().at(8); if(standardType.isValid()) ui->label_standardType->setText(standardType.toString()); // 长途区号 QVariant trunkCode = valRows[31].toList().at(2); if(trunkCode.isValid()) ui->label_trunkCode->setText(trunkCode.toString()); // 固定电话 QVariant fixedTel = valRows[32].toList().at(2); if(fixedTel.isValid()) ui->label_fixedTel->setText(fixedTel.toString()); // 邮政编码 QVariant postCode = valRows[33].toList().at(2); if(postCode.isValid()) ui->label_postCode->setText(postCode.toString()); // 电子邮箱 QVariant email = valRows[30].toList().at(5); if(email.isValid()) ui->label_email->setText(email.toString()); // 网址 QVariant webSite = valRows[32].toList().at(5); if(webSite.isValid()) ui->label_webSite->setText(webSite.toString()); // 如果单位是新增加的,得写入到数据库中保存起来 readDataFromSQL(); // 再次调用API 确认数据进到表中 } wbs->dynamicCall("Close()"); excel.dynamicCall("Quit(void)"); } void CoverInfo::on_comboBox_currentIndexChanged(const QString &arg1) @@ -260,3 +406,12 @@ qDebug()<<"切换查询失败:"<<arg1; } } void CoverInfo::on_pushButton_importExcel_clicked() { QString path = QFileDialog::getOpenFileName(this,"选择表格:单位及内部审计机构基本情况表","./","excel(*基本情况表*.xls)"); qDebug()<<"path:"<<path; if(path.size() > 1){ readExcelFromPath(path); } } internal_system_v1/coverinfo.h
@@ -18,9 +18,13 @@ ~CoverInfo(); void readInfo(); void readDataFromSQL(); void readExcelFromPath(QString path); private slots: void on_comboBox_currentIndexChanged(const QString &arg1); void on_pushButton_importExcel_clicked(); signals: void sendComName(QString); // 发送新增公司名给搜索界面 private: Ui::CoverInfo *ui; QMap<QString,int> m_com; internal_system_v1/coverinfo.ui
@@ -922,6 +922,22 @@ </property> </item> </widget> <widget class="QPushButton" name="pushButton_importExcel"> <property name="geometry"> <rect> <x>670</x> <y>70</y> <width>291</width> <height>28</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(0, 170, 255);</string> </property> <property name="text"> <string>手动导入</string> </property> </widget> </widget> <widget class="QMenuBar" name="menubar"> <property name="geometry"> internal_system_v1/problemcount.cpp
@@ -85,3 +85,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void ProblemCount::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/problemcount.h
@@ -2,6 +2,7 @@ #define PROBLEMCOUNT_H #include <QMainWindow> #include <QVariantList> namespace Ui { class ProblemCount; @@ -22,6 +23,8 @@ void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::ProblemCount *ui; int m_comId; internal_system_v1/problemmoney.cpp
@@ -51,3 +51,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void ProblemMoney::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/problemmoney.h
@@ -3,6 +3,7 @@ #include <QMainWindow> #include <QFileDialog> #include <QVariantList> namespace Ui { class ProblemMoney; @@ -19,6 +20,8 @@ private slots: void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::ProblemMoney *ui; int m_comId; internal_system_v1/problemnotmoney.cpp
@@ -65,3 +65,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void ProblemNotMoney::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/problemnotmoney.h
@@ -2,6 +2,7 @@ #define PROBLEMNOTMONEY_H #include <QMainWindow> #include <QVariantList> namespace Ui { class ProblemNotMoney; @@ -20,6 +21,8 @@ void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::ProblemNotMoney *ui; int m_comId; internal_system_v1/problemrectification.cpp
@@ -65,3 +65,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void ProblemRectification::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/problemrectification.h
@@ -2,6 +2,7 @@ #define PROBLEMRECTIFICATION_H #include <QMainWindow> #include <QVariantList> namespace Ui { class ProblemRectification; @@ -20,6 +21,8 @@ void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::ProblemRectification *ui; int m_comId; internal_system_v1/punish.cpp
@@ -50,3 +50,12 @@ qDebug()<<"fail sql"<<__FUNCTION__; } } void Punish::showData(QVariantList vlist) { for(int i=0;i<vlist.size();++i){ if(vlist.at(i).isValid()){ ui->tableWidget->setItem(i,2,new QTableWidgetItem(vlist.at(i).toString())); } } } internal_system_v1/punish.h
@@ -2,6 +2,7 @@ #define PUNISH_H #include <QMainWindow> #include <QVariantList> namespace Ui { class Punish; @@ -20,6 +21,8 @@ void on_pushButton_clicked(); void showData(QVariantList vlist); private: Ui::Punish *ui; int m_comId; internal_system_v1/searchinfo.cpp
@@ -403,7 +403,7 @@ } //wb->dynamicCall("Save()"); // 若文件已存在,则直接保存 //wb->dynamicCall("SaveAs(const QString&)", str); // 保存工作簿,若文件不存在,则带名字保存 if(ui->lineEdit_excel_save->text() > 1){ if(ui->lineEdit_excel_save->text().size() > 1){ wb->dynamicCall("SaveAs(const QString&)", ui->lineEdit_excel_save->text()); // 保存工作簿,若文件不存在,则带名字保存 qDebug()<<"保存到新文件中"; }else{ @@ -421,6 +421,7 @@ void SearchInfo::on_comboBox_currentIndexChanged(const QString &arg1) { m_model->setHorizontalHeaderLabels(m_labels[arg1]); } void SearchInfo::on_toolButton_seleceExcel_clicked() @@ -435,3 +436,17 @@ QString newPath = paths.at(0)+"_"+ui->comboBox_company->currentText()+"."+paths.at(1); ui->lineEdit_excel_save->setText(newPath); } void SearchInfo::on_comboBox_company_currentIndexChanged(const QString &arg1) { if(ui->lineEdit_excel_save->text().size() > 5){ QStringList paths = ui->label_excel_path->text().split("."); QString newPath = paths.at(0)+"_"+arg1+"."+paths.at(1); ui->lineEdit_excel_save->setText(newPath); } } void SearchInfo::addComName(QString name) { ui->comboBox_company->addItem(name); } internal_system_v1/searchinfo.h
@@ -35,6 +35,10 @@ void on_toolButton_seleceExcel_clicked(); void on_comboBox_company_currentIndexChanged(const QString &arg1); void addComName(QString name); private: Ui::SearchInfo *ui; QSqlDatabase m_db; internal_system_v1/searchinfo.ui
@@ -103,6 +103,9 @@ </item> <item> <widget class="QPushButton" name="pushButton_export"> <property name="styleSheet"> <string notr="true">background-color: rgb(170, 255, 127);</string> </property> <property name="text"> <string>导出表格</string> </property> @@ -141,6 +144,9 @@ <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QToolButton" name="toolButton_seleceExcel"> <property name="styleSheet"> <string notr="true">background-color: rgb(170, 255, 127);</string> </property> <property name="text"> <string>选择表格模板</string> </property>