wumu
2024-02-28 7dd76d103a351caae20261fc7bb67d01bd66e906
internal_system_v1/converinfo2.cpp
@@ -1,13 +1,22 @@
#include "converinfo2.h"
#include "ui_converinfo2.h"
#include <QDebug>
#include <QDirIterator>
#include <QFileDialog>
#include <QSqlQuery>
#include <QSqlRecord>
#pragma execution_character_set("utf-8")
ConverInfo2::ConverInfo2(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ConverInfo2)
{
    ui->setupUi(this);
    initUi();
    m_menu = nullptr;
    //initUi();
    readInfo(); // 加载表格
    addMenu(); // 增加菜单
}
ConverInfo2::~ConverInfo2()
@@ -88,5 +97,642 @@
void ConverInfo2::on_treeWidget_doubleClicked(const QModelIndex &index)
{
    qDebug()<<"双击"<<index;
    QString name = index.model()->data(index).toString();
    qDebug()<<"双击"<<index<<name;
    ComInfo curCominfo = m_nameAndComInfos[name];
    // 一、单位基本情况
    ui->lineEdit_creditCode->setText(curCominfo.creditCode);
    ui->lineEdit_name->setText(QString::fromLocal8Bit( curCominfo.name));
    qDebug()<<"name:"<<QString::fromLocal8Bit( curCominfo.name)<<QByteArray(curCominfo.name);
    ui->comboBox_comType->setCurrentText(QString::fromLocal8Bit(curCominfo.comType));
    ui->lineEdit_business->setText(QString::fromLocal8Bit(curCominfo.business));
    ui->lineEdit_businessCode->setText(curCominfo.businessCode);
    ui->lineEdit_addr->setText(QString::fromLocal8Bit(curCominfo.addr));
    ui->lineEdit_areaCode->setText(curCominfo.areaCode);
    ui->lineEdit_townCode->setText(curCominfo.townCode);
    ui->comboBox_scale->setCurrentText(QString::fromLocal8Bit(curCominfo.scale));
    ui->lineEdit_people->setText(QString::number(curCominfo.people));
    ui->lineEdit_representative->setText(QString::fromLocal8Bit(curCominfo.representative));
    ui->comboBox_standardType->setCurrentText(QString::fromLocal8Bit(curCominfo.standardType));
    ui->lineEdit_trunkCode->setText(curCominfo.trunkCode);
    ui->lineEdit_fixedTel->setText(curCominfo.fixedTel);
    ui->lineEdit_postCode->setText(curCominfo.postCode);
    ui->lineEdit_email->setText(curCominfo.email);
    ui->lineEdit_webSite->setText(curCominfo.webSite);
    // 二、单位组织结构情况
    ui->comboBox_hasUpLegal->setCurrentText(QString::fromLocal8Bit(curCominfo.hasUpLegal));
    ui->lineEdit_upCreditCode->setText(QString::fromLocal8Bit(curCominfo.upCreditCode));
    ui->lineEdit_oldCreditCode->setText(curCominfo.oldCreditCode);
    ui->lineEdit_upName->setText(QString::fromLocal8Bit(curCominfo.upName));
    // 三、总审计师与内审机构基本情况
    ui->comboBox_hasChiefDesigner->setCurrentText(QString::fromLocal8Bit(curCominfo.hasChiefDesigner));
    ui->comboBox_ChiefDesignerLevel->setCurrentText(QString::fromLocal8Bit(curCominfo.ChiefDesignerLevel));
    ui->comboBox_employmentMode->setCurrentText(QString::fromLocal8Bit(curCominfo.employmentMode));
    ui->comboBox_hasSetIntervalAudit->setCurrentText(QString::fromLocal8Bit(curCominfo.hasSetIntervalAudit));
    ui->lineEdit_internalName->setText(QString::fromLocal8Bit(curCominfo.internalName));
    ui->comboBox_leadingOrganization->setCurrentText(QString::fromLocal8Bit(curCominfo.leadingOrganization));
    ui->comboBox_hasSetSeparateIA->setCurrentText(QString::fromLocal8Bit(curCominfo.hasSetSeparateIA));
    ui->checkBox_financeDepartment->setChecked(curCominfo.financeDepartment);
    ui->checkBox_legalDepartment->setChecked(curCominfo.legalDepartment);
    ui->checkBox_internalConDepart->setChecked(curCominfo.internalConDepart);
    ui->checkBox_disceplineInDepart->setChecked(curCominfo.disceplineInDepart);
    ui->checkBox_otherDepart->setChecked(curCominfo.otherDepart);
    ui->comboBox_intavalAuditLeval->setCurrentText(QString::fromLocal8Bit(curCominfo.intavalAuditLeval));
    // 四、内审人员配备基本情况
    ui->lineEdit_organazationNum->setText(QString::number(curCominfo.organazationNum));
    ui->lineEdit_realNum->setText(QString::number(curCominfo.realNum));
    ui->lineEdit_professionalNum->setText(QString::number(curCominfo.professionalNum));
    ui->lineEdit_CIANum->setText(QString::number(curCominfo.CIANum));
    ui->lineEdit_masterNum->setText(QString::number(curCominfo.masterNum));
    ui->lineEdit_undergraduatesNum->setText(QString::number(curCominfo.undergraduatesNum));
    ui->lineEdit_juniorNum->setText(QString::number(curCominfo.juniorNum));
    ui->lineEdit_seniorNum->setText(QString::number(curCominfo.seniorNum));
    ui->lineEdit_intermediateNum->setText(QString::number(curCominfo.intermediateNum));
    ui->lineEdit_primaryNum->setText(QString::number(curCominfo.primaryNum));
    ui->lineEdit_noTitleNum->setText(QString::number(curCominfo.noTitleNum));
    ui->lineEdit_upFiftyOldNum->setText(QString::number(curCominfo.upFiftyOldNum));
    ui->lineEdit_upThirtyOldNum->setText(QString::number(curCominfo.upThirtyOldNum));
    ui->lineEdit_downThirtyOldNum->setText(QString::number(curCominfo.downThirtyOldNum));
    ui->lineEdit_auditNum->setText(QString::number(curCominfo.auditNum));
    ui->lineEdit_accountingNum->setText(QString::number(curCominfo.accountingNum));
    ui->lineEdit_economyNum->setText(QString::number(curCominfo.economyNum));
    ui->lineEdit_lawNum->setText(QString::number(curCominfo.lawNum));
    ui->lineEdit_managerNum->setText(QString::number(curCominfo.managerNum));
    ui->lineEdit_itNum->setText(QString::number(curCominfo.itNum));
    ui->lineEdit_engineeringNum->setText(QString::number(curCominfo.engineeringNum));
    ui->lineEdit_otherNum->setText(QString::number(curCominfo.otherNum));
    // 其他的4个信息
    ui->lineEdit_statisticalConOfficer->setText(QString::fromLocal8Bit(curCominfo.statisticalConOfficer));
    ui->lineEdit_personFilling->setText(QString::fromLocal8Bit(curCominfo.personFilling));
    ui->lineEdit_officerTel->setText(QString::fromLocal8Bit(curCominfo.officerTel));
    ui->lineEdit_fillingDateTime->setText(QString::fromLocal8Bit(curCominfo.fillingDateTime));
}
void ConverInfo2::readInfo()
{
//    QXlsx::Document doc("./debug/Data/test.xlsx");
//    QString cc = doc.read("A1").toString();
//    qDebug()<<"cc"<<cc;
//    ui->label_creditCode->setText(cc);
    extern QString g_dataRootPath;
    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;
    }
    g_dataRootPath = dirPath; // 将根目录保存起来
    QStringList list;
    QDirIterator it(dirPath, {"*.xls","*.xlsx"}, QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
    while(it.hasNext())
    {
        it.next();
        list.append(it.fileInfo().absoluteFilePath());
    }
    foreach(QString str, list)
    {
        qDebug() << str;
        int index = str.indexOf("内审统01表");
        qDebug()<<"index:"<<index;
        if(index > 0){
            QAxObject excel("Excel.Application");
            excel.setProperty("Visible",false);
            excel.setProperty("DisplayAlerts",false);
            qDebug()<<"open:"<<str;
            qDebug()<<"excel:"<<excel.className();
            QAxObject * wbs = excel.querySubObject("WorkBooks");
            QAxObject * wb = wbs->querySubObject("Open(QString&)",str);
            //QAxObject* pWorkBook = excel.querySubObject("ActiveWorkBook");
            //QAxObject* pWorkSheets = pWorkBook->querySubObject("Sheets");//获取工作表
            //QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 也可以
            QAxObject * shs = wb->querySubObject("WorkSheets"); // WorkSheets 也可以
//            // 指定单元格拿
//            QAxObject *cell = shs->querySubObject("Cells(int, int)",82,1);
//            qDebug()<<"Cells:82-0:"<<shs->querySubObject("Cells(int, int)",82,0)->dynamicCall("Value()").toString();
//            qDebug()<<"Cells:82-1:"<<cell->dynamicCall("Value()").toString();
            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();
                // 遍历每一项
                for(int i=0;i<rows;++i){
                    QVariantList valrow = valRows[i].toList();
                    for(int j=0;j<columns;++j){
                        QVariant valData = valrow[j];
                        if(valData.isValid()){
                            qDebug()<<"val:"<< i<< j << valData;
                        }
                    }
                }
                // 实例化结构体,然后挨个赋值
                ComInfo curComInfo;
                // 统一信用代码
                QVariant uniCode = valRows[9].toList().at(3);
                if(uniCode.isValid()){
                    ui->label_creditCode->setText(uniCode.toString());
                    strcpy(curComInfo.creditCode,uniCode.toString().toLocal8Bit().data());
                }
                // 单位名称
                QVariant name = valRows[9].toList().at(8);
                if(name.isValid()){
                    ui->label_name->setText(name.toString());
                    QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
                    top1->setText(0,name.toString());
                    strcpy(curComInfo.name,name.toString().toLocal8Bit().data());
                }else{
                    ui->label_name->setText("");
                }
                // 机构类型
                QVariant comType = valRows[12].toList().at(3);
                if(comType.isValid()){
                    ui->label_comType->setText(comType.toString());
                    strcpy(curComInfo.comType,comType.toString().toLocal8Bit().data());
                }else{
                    ui->label_comType->setText("");
                }
                // 主要业务活动
                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);
                    ui->label_business->setToolTip(business);
                    strcpy(curComInfo.business,business.toLocal8Bit().data());
                }else{
                    ui->label_business->setText("");
                }
                // 业务代码
                QVariant busCode = valRows[19].toList().at(4);
                if(busCode.isValid()){
                    ui->label_businessCode->setText(busCode.toString());
                    strcpy(curComInfo.businessCode,busCode.toString().toLocal8Bit().data());
                }else{
                    ui->label_businessCode->setText("");
                }
                // 注册地址
                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);
                    strcpy(curComInfo.addr,addr.toLocal8Bit().data());
                }else{
                    ui->label_addr->setText("");
                }
                // 区域代码
                QVariant areaCode = valRows[24].toList().at(2);
                if(areaCode.isValid()){
                    ui->label_areaCode->setText(areaCode.toString());
                    strcpy(curComInfo.areaCode,areaCode.toString().toLocal8Bit().data());
                }else{
                    ui->label_areaCode->setText("");
                }
                // 城乡代码
                QVariant townCode = valRows[24].toList().at(6);
                if(townCode.isValid()) {
                    ui->label_townCode->setText(townCode.toString());
                    strcpy(curComInfo.townCode,townCode.toString().toLocal8Bit().data());
                }else{
                    ui->label_townCode->setText("");
                }
                // 单位规模
                QVariant scale = valRows[25].toList().at(3);
                if(scale.isValid()){
                    ui->label_scale->setText(scale.toString());
                    strcpy(curComInfo.scale,scale.toString().toLocal8Bit().data());
                }else{
                    ui->label_scale->setText("");
                }
                // 从业人数
                QVariant people = valRows[26].toList().at(6);
                if(people.isValid()) {
                    ui->label_people->setText(people.toString());
                    //strcpy(curComInfo.people,people.toString().toLocal8Bit().data());
                    curComInfo.people = people.toInt();
                }else{
                    ui->label_people->setText("");
                }
                // 法人
                QVariant representative = valRows[27].toList().at(4);
                if(representative.isValid()) {
                    ui->label_representative->setText(representative.toString());
                    strcpy(curComInfo.representative,representative.toString().toLocal8Bit().data());
                }else{
                    ui->label_representative->setText("");
                }
                // 会计标准类别 standardType
                QVariant standardType = valRows[27].toList().at(8);
                if(standardType.isValid()){
                    ui->label_standardType->setText(standardType.toString());
                    strcpy(curComInfo.standardType,standardType.toString().toLocal8Bit());
                }else{
                    ui->label_standardType->setText("");
                }
                // 长途区号
                QVariant trunkCode = valRows[31].toList().at(2);
                if(trunkCode.isValid()){
                    ui->label_trunkCode->setText(trunkCode.toString());
                    strcpy(curComInfo.trunkCode,trunkCode.toString().toLocal8Bit().data());
                }else{
                    ui->label_trunkCode->setText("");
                }
                // 固定电话
                QVariant fixedTel = valRows[32].toList().at(2);
                if(fixedTel.isValid()) {
                    ui->label_fixedTel->setText(fixedTel.toString());
                    strcpy(curComInfo.fixedTel,fixedTel.toString().toLocal8Bit().data());
                }else{
                    ui->label_fixedTel->setText("");
                }
                // 邮政编码
                QVariant postCode = valRows[33].toList().at(2);
                if(postCode.isValid()){
                    ui->label_postCode->setText(postCode.toString());
                    strcpy(curComInfo.postCode,postCode.toString().toLocal8Bit().data());
                }else{
                    ui->label_postCode->setText("");
                }
                // 电子邮箱
                QVariant email = valRows[30].toList().at(5);
                if(email.isValid()) {
                    ui->label_email->setText(email.toString());
                    strcpy(curComInfo.email,email.toString().toLocal8Bit().data());
                }else{
                    ui->label_email->setText("");
                }
                // 网址
                QVariant webSite = valRows[32].toList().at(5);
                if(webSite.isValid()) {
                    ui->label_webSite->setText(webSite.toString());
                    strcpy(curComInfo.webSite,webSite.toString().toLocal8Bit().data());
                }else{
                    ui->label_webSite->setText("");
                }
                // 二、单位组织结构情况
                // 是否有上一级法人
                QVariant hasUpLegal = valRows[35].toList().at(4);
                if(hasUpLegal.isValid()){
                    strcpy(curComInfo.hasUpLegal,hasUpLegal.toString().toLocal8Bit().data());
                    qDebug()<<"has up legal"<<hasUpLegal;
                }
                // 上级法人单位统一社会信用代码
                QVariant upCreditCode = valRows[36].toList().at(7);
                if(upCreditCode.isValid()){
                    strcpy(curComInfo.upCreditCode,upCreditCode.toString().toLocal8Bit().data());
                    qDebug()<<"upCreditCode"<<upCreditCode;
                }else {
                    qDebug()<<"upCreditCode fail"<<name;
                }
                // 原组织机构代码
                QVariant oldCreditCode = valRows[37].toList().at(7);
                if(oldCreditCode.isValid()){
                    strcpy(curComInfo.oldCreditCode,oldCreditCode.toString().toLocal8Bit().data());
                    qDebug()<<"oldCreditCode"<<oldCreditCode;
                }
                // 上一级单位详细名称
                QVariant upName = valRows[38].toList().at(7);
                if(upName.isValid()){
                    strcpy(curComInfo.upName,upName.toString().toLocal8Bit().data());
                    qDebug()<<"upName"<<upName;
                }
                // 总审计师与内审机构基本情况
                // 是否设置总审计师
                QVariant hasChiefDesigner = valRows[40].toList().at(4);
                if(hasChiefDesigner.isValid()){
                    strcpy(curComInfo.hasChiefDesigner,hasChiefDesigner.toString().toLocal8Bit().data());
                    qDebug()<<"hasChiefDesigner"<<hasChiefDesigner;
                }
                // 总审计师职位层级
                QVariant ChiefDesignerLevel = valRows[41].toList().at(4);
                if(ChiefDesignerLevel.isValid()){
                    strcpy(curComInfo.ChiefDesignerLevel,ChiefDesignerLevel.toString().toLocal8Bit().data());
                    qDebug()<<"ChiefDesignerLevel"<<ChiefDesignerLevel;
                }
                // 总审计师任职方式
                QVariant employmentMode = valRows[44].toList().at(4);
                if(employmentMode.isValid()){
                    strcpy(curComInfo.employmentMode,employmentMode.toString().toLocal8Bit().data());
                    qDebug()<<"employmentMode"<<employmentMode;
                }
                // 是否设置内审机构
                QVariant hasSetIntervalAudit = valRows[47].toList().at(4);
                if(hasSetIntervalAudit.isValid()){
                    strcpy(curComInfo.hasSetIntervalAudit,hasSetIntervalAudit.toString().toLocal8Bit().data());
                    qDebug()<<"hasSetIntervalAudit"<<hasSetIntervalAudit;
                }
                // 内审机构名称
                QVariant internalName = valRows[48].toList().at(4);
                if(internalName.isValid()){
                    strcpy(curComInfo.internalName,internalName.toString().toLocal8Bit().data());
                    qDebug()<<"internalName"<<internalName;
                }
                // 内审工作的领导机构
                QVariant leadingOrganization = valRows[49].toList().at(4);
                if(leadingOrganization.isValid()){
                    strcpy(curComInfo.leadingOrganization,leadingOrganization.toString().toLocal8Bit().data());
                    qDebug()<<"leadingOrganization"<<leadingOrganization;
                }
                // 是否独立设置内审机构
                QVariant hasSetSeparateIA = valRows[53].toList().at(4);
                if(hasSetSeparateIA.isValid()){
                    strcpy(curComInfo.hasSetSeparateIA,hasSetSeparateIA.toString().toLocal8Bit().data());
                    qDebug()<<"hasSetSeparateIA"<<hasSetSeparateIA;
                }
                // 合并设置 财务部门   复选框
                QVariant financeDepartment = valRows[55].toList().at(1);
                if(financeDepartment.isValid()){
                    //strcpy(curComInfo.financeDepartment,financeDepartment.toString().toLocal8Bit().data());
                    curComInfo.financeDepartment = financeDepartment.toBool();
                    qDebug()<<"financeDepartment"<<financeDepartment;
                }
                // 法务部门、内部控制部门、纪检部门、其他部门
                // 内审机构层级
                QVariant intavalAuditLeval = valRows[56].toList().at(4);
                if(intavalAuditLeval.isValid()){
                    strcpy(curComInfo.intavalAuditLeval,intavalAuditLeval.toString().toLocal8Bit().data());
                    qDebug()<<"intavalAuditLeval"<<intavalAuditLeval;
                }
                // 四、内审人员配备基本情况
                // 编制数
                QVariant organazationNum = valRows[56].toList().at(4);
                if(organazationNum.isValid()){
                    curComInfo.organazationNum = organazationNum.toInt();
                    qDebug()<<"organazationNum"<<organazationNum;
                }
                // 实有人员数
                QVariant realNum = valRows[56].toList().at(4);
                if(realNum.isValid()){
                    curComInfo.realNum = realNum.toInt();
                    qDebug()<<"realNum"<<realNum;
                }
                // 专职人员数
                QVariant professionalNum = valRows[56].toList().at(4);
                if(professionalNum.isValid()){
                    curComInfo.professionalNum = professionalNum.toInt();
                    qDebug()<<"professionalNum"<<professionalNum;
                }
                // 拥有CIA人员数
                QVariant CIANum = valRows[56].toList().at(4);
                if(CIANum.isValid()){
                    curComInfo.CIANum = CIANum.toInt();
                    qDebug()<<"CIANum"<<CIANum;
                }
                // 学历:硕士及以上 人员数
                QVariant masterNum = valRows[56].toList().at(4);
                if(masterNum.isValid()){
                    curComInfo.masterNum = masterNum.toInt();
                    qDebug()<<"masterNum"<<masterNum;
                }
                // 大学本科
                QVariant undergraduatesNum = valRows[56].toList().at(4);
                if(undergraduatesNum.isValid()){
                    curComInfo.undergraduatesNum = undergraduatesNum.toInt();
                    qDebug()<<"undergraduatesNum"<<undergraduatesNum;
                }
                // 专科及以下
                QVariant juniorNum = valRows[56].toList().at(4);
                if(juniorNum.isValid()){
                    curComInfo.juniorNum = juniorNum.toInt();
                    qDebug()<<"juniorNum"<<juniorNum;
                }
                // 职称 高级职称
                QVariant seniorNum = valRows[56].toList().at(4);
                if(seniorNum.isValid()){
                    curComInfo.seniorNum = seniorNum.toInt();
                    qDebug()<<"seniorNum"<<seniorNum;
                }
                // 中级职称
                QVariant intermediateNum = valRows[56].toList().at(4);
                if(intermediateNum.isValid()){
                    curComInfo.intermediateNum = intermediateNum.toInt();
                    qDebug()<<"intermediateNum"<<intermediateNum;
                }
                // 初级职称
                QVariant primaryNum = valRows[56].toList().at(4);
                if(primaryNum.isValid()){
                    curComInfo.primaryNum = primaryNum.toInt();
                    qDebug()<<"primaryNum"<<primaryNum;
                }
                // 无职称
                QVariant noTitleNum = valRows[56].toList().at(4);
                if(noTitleNum.isValid()){
                    curComInfo.noTitleNum = noTitleNum.toInt();
                    qDebug()<<"noTitleNum"<<noTitleNum;
                }
                // 年龄结构 50岁以上
                QVariant upFiftyOldNum = valRows[56].toList().at(4);
                if(upFiftyOldNum.isValid()){
                    curComInfo.upFiftyOldNum = upFiftyOldNum.toInt();
                    qDebug()<<"upFiftyOldNum"<<upFiftyOldNum;
                }
                // 30-50岁
                QVariant upThirtyOldNum = valRows[56].toList().at(4);
                if(upThirtyOldNum.isValid()){
                    curComInfo.upThirtyOldNum = upThirtyOldNum.toInt();
                    qDebug()<<"upThirtyOldNum"<<upThirtyOldNum;
                }
                // 30岁以下
                QVariant downThirtyOldNum = valRows[56].toList().at(4);
                if(downThirtyOldNum.isValid()){
                    curComInfo.downThirtyOldNum = downThirtyOldNum.toInt();
                    qDebug()<<"downThirtyOldNum"<<downThirtyOldNum;
                }
                // 知识结构 审计
                QVariant auditNum = valRows[56].toList().at(4);
                if(auditNum.isValid()){
                    curComInfo.auditNum = auditNum.toInt();
                    qDebug()<<"auditNum"<<auditNum;
                }
                // 会计
                QVariant accountingNum = valRows[56].toList().at(4);
                if(accountingNum.isValid()){
                    curComInfo.accountingNum = accountingNum.toInt();
                    qDebug()<<"accountingNum"<<accountingNum;
                }
                // 经济
                QVariant economyNum = valRows[56].toList().at(4);
                if(economyNum.isValid()){
                    curComInfo.economyNum = economyNum.toInt();
                    qDebug()<<"economyNum"<<economyNum;
                }
                // 法律
                QVariant lawNum = valRows[56].toList().at(4);
                if(lawNum.isValid()){
                    curComInfo.lawNum = lawNum.toInt();
                    qDebug()<<"lawNum"<<lawNum;
                }
                // 管理
                QVariant managerNum = valRows[56].toList().at(4);
                if(managerNum.isValid()){
                    curComInfo.managerNum = managerNum.toInt();
                    qDebug()<<"managerNum"<<managerNum;
                }
                // 信息技术
                QVariant itNum = valRows[56].toList().at(4);
                if(itNum.isValid()){
                    curComInfo.itNum = itNum.toInt();
                    qDebug()<<"itNum"<<itNum;
                }
                // 工程
                QVariant engineeringNum = valRows[56].toList().at(4);
                if(engineeringNum.isValid()){
                    curComInfo.engineeringNum = engineeringNum.toInt();
                    qDebug()<<"engineeringNum"<<engineeringNum;
                }
                // 其他
                QVariant otherNum = valRows[56].toList().at(4);
                if(otherNum.isValid()){
                    curComInfo.otherNum = otherNum.toInt();
                    qDebug()<<"otherNum"<<otherNum;
                }
                // 后面的4个信息
                // 统计负责人
                QVariant statisticalConOfficer = valRows[81].toList().at(1);
                if(statisticalConOfficer.isValid()){
                    strcpy(curComInfo.statisticalConOfficer,statisticalConOfficer.toString().toLocal8Bit().data());
                    qDebug()<<"statisticalConOfficer"<<statisticalConOfficer;
                }else{
                    qDebug()<<"statisticalConOfficer fail:"<<name.toString();
                }
                // 填表人
                QVariant personFilling = valRows[81].toList().at(4);
                if(personFilling.isValid()){
                    strcpy(curComInfo.personFilling,personFilling.toString().toLocal8Bit().data());
                    qDebug()<<"personFilling"<<personFilling;
                }
                // 联系电话
                QVariant officerTel = valRows[82].toList().at(1);
                if(officerTel.isValid()){
                    strcpy(curComInfo.officerTel,officerTel.toString().toLocal8Bit().data());
                    qDebug()<<"officerTel"<<officerTel;
                }
                // 填报日期
                QVariant fillingDateTime = valRows[82].toList().at(4);
                if(fillingDateTime.isValid()){
                    strcpy(curComInfo.fillingDateTime,fillingDateTime.toString().toLocal8Bit().data());
                    qDebug()<<"fillingDateTime"<<fillingDateTime;
                }
                // 最后存到map中
                m_nameAndComInfos[name.toString()]=curComInfo;
            }
            wbs->dynamicCall("Close()");
            excel.dynamicCall("Quit(void)");
            qDebug()<<"单位信息数量:"<<m_nameAndComInfos.size();
        }
    }
//    QAxObject excel("./debug/Data/附件2_内审统01表_单位及内部审计机构基本情况表-1.301版(1).xls");
//    excel.setProperty("Visible",true);
//    excel.setProperty("DisplayAlerts",false);
}
void ConverInfo2::addMenu()
{
    // 设置菜单:添加单位、删除单位
    if(m_menu==nullptr){
        m_menu = new QMenu(this);
        qDebug()<<"init menu ok";
    }
    m_menu->addAction("删除");
    m_menu->addAction("增加");
    ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(ui->treeWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenu(QPoint)));
    connect(m_menu->actions().at(0),SIGNAL(triggered(bool)),this,SLOT(deleteInfo()));
    connect(m_menu->actions().at(1),SIGNAL(triggered(bool)),this,SLOT(addInfo()));
}
void ConverInfo2::on_pushButton_commit_clicked()
{
    // 将编辑框的数据更新到map中和数据库中,后期可以更新到文件中
    // 单位基本情况
    QString creditCode = ui->lineEdit_creditCode->text();
    QString name = ui->lineEdit_name->text();
    QString comType = ui->comboBox_comType->currentText();
    QString business = ui->lineEdit_business->text();
    QString businessCode = ui->lineEdit_businessCode->text();
    QString addr = ui->lineEdit_addr->text();
    QString areaCode = ui->lineEdit_areaCode->text();
    QString townCode = ui->lineEdit_townCode->text();
    QString scale = ui->comboBox_scale->currentText();
    QString people = ui->lineEdit_people->text();
    QString representative = ui->lineEdit_representative->text();
    QString standardType = ui->comboBox_standardType->currentText();
    QString trunkCode = ui->lineEdit_trunkCode->text();
    QString fixedTel = ui->lineEdit_fixedTel->text();
    QString postCode = ui->lineEdit_postCode->text();
    QString email = ui->lineEdit_email->text();
    QString webSite = ui->lineEdit_webSite->text();
    // 单位组织结构情况
}