wumu
2024-10-14 e2d10e68e22310fdfcf3c6e13707d791c108ae1a
internal_system_v1/converinfo2.cpp
@@ -15,7 +15,7 @@
    ui->setupUi(this);
    m_menu = nullptr;
    //initUi();
    readInfo(); // 加载表格
    //readInfo(); // 加载表格
    addMenu(); // 增加菜单
    // 自适应处理
@@ -49,7 +49,7 @@
    it4->setCheckState(0,Qt::Checked);
    // 复选框状态处理
    connect(ui->treeWidget,QOverload<QTreeWidgetItem*,int>::of(QTreeWidget::itemClicked),this,[=](QTreeWidgetItem* it,int index){
    connect(ui->treeWidget,QOverload<QTreeWidgetItem*,int>::of(&QTreeWidget::itemClicked),this,[=](QTreeWidgetItem* it,int index){
        qDebug()<<it<<index;
        if(it == top1){
            qDebug()<<"点击了码蚁集团";
@@ -90,18 +90,28 @@
{
    if(m_curItem==nullptr)return;
    qDebug()<<"添加公司信息,在节点:"<<m_curItem->text(0);
    on_pushButton_laodFile_clicked();
}
void ConverInfo2::deleteInfo()
{
    if(m_curItem==nullptr)return;
    qDebug()<<"删除公司信息,节点:"<<m_curItem->text(0);
    auto resList = m_curItem->takeChildren();
    qDebug()<<"删除数量:"<<resList.size();
}
void ConverInfo2::on_treeWidget_doubleClicked(const QModelIndex &index)
{
    QString name = index.model()->data(index).toString();
    qDebug()<<"双击"<<index<<name;
    if(name.contains("(本级)")){
        QStringList sps = name.split("(本级)");
        name = sps.at(0);
    }else if(name.contains("(汇总)")){
        name = name.split("(汇总)").at(0);
    }
    ComInfo curCominfo = m_nameAndComInfos[name];
    // 一、单位基本情况
    ui->lineEdit_creditCode->setText(curCominfo.creditCode);
@@ -203,11 +213,15 @@
        it.next();
        list.append(it.fileInfo().absoluteFilePath());
    }
    int allSize = list.size();
    float cntIdx=1.0;
    foreach(QString str, list)
    {
        qDebug() << str;
        int index = str.indexOf("内审统01表");
        qDebug()<<"index:"<<index;
        if(index > 0){
            QAxObject excel("ket.Application");
            if(!excel.setControl("ket"
@@ -268,8 +282,8 @@
                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());
                    //QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
                    //top1->setText(0,name.toString());
                    strcpy(curComInfo.name,name.toString().toLocal8Bit().data());
                }else{
@@ -686,14 +700,37 @@
                // 最后存到map中
                m_nameAndComInfos[name.toString()]=curComInfo;
                // 添加树形列表节点
                //addTreeWidgetNode(upName,name);
                if(upName.isValid()){
                    if(name.isValid()){
                        m_treeNodes[upName.toString()].push_back(name.toString());
                    }
                }else{
                    if(name.isValid()){
                        m_treeNodes[name.toString()].push_back(name.toString());
                    }
                }
            }
            wbs->dynamicCall("Close()");
            excel.dynamicCall("Quit(void)");
            qDebug()<<"单位信息数量:"<<m_nameAndComInfos.size();
        }
        // 控制显示进度相关
        emit loadProgress((cntIdx/allSize)*100);
        cntIdx++;
    }
    createTreeNode(); // 构建树形节点
    // 发射 加载完成的信号
    emit loadFinished();
//    QAxObject excel("./debug/Data/附件2_内审统01表_单位及内部审计机构基本情况表-1.301版(1).xls");
//    excel.setProperty("Visible",true);
@@ -1484,42 +1521,17 @@
        // 添加左边树形图相关
        // 菜单相关  当上级公司为空上级时,自己当自己的上级,并且罗列进去当 本级
        addTreeWidgetNode(upName,name);
        if(upName.isValid()) // 有效
        {
            // 判断顶层树节点是否已经存在
            QTreeWidgetItem *top = nullptr;
            for(int k=0;k<ui->treeWidget->topLevelItemCount();++k){
                QTreeWidgetItem *tmp = ui->treeWidget->topLevelItem(k);
                qDebug()<<k<<tmp->text(0)<<upName.toString();
                if(upName.toString()+"(汇总)" == tmp->text(0)){
                    top = tmp;
                    break;
                }
            }
            if(name.isValid()){
                if(top){ // 存在,则添加到孩子列表中
                    QTreeWidgetItem *top1 = new QTreeWidgetItem(top);
                    top1->setText(0,name.toString());
                }else{ // 不存在,则新建一个列表
                    QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
                    top1->setText(0,name.toString()+"(汇总)");
                    QTreeWidgetItem *top2 = new QTreeWidgetItem(top1);
                    top2->setText(0,name.toString()+"(本级)");
                }
            }
        }else{
            qDebug()<<"没发现上一级,只能自己当"<<name;
            if(name.isValid()){
                QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
                top1->setText(0,name.toString()+"(汇总)");
                QTreeWidgetItem *top2 = new QTreeWidgetItem(top1);
                top2->setText(0,name.toString()+"(本级)");
            }
        }
//        if(upName.isValid()){
//            if(name.isValid()){
//                m_treeNodes[upName.toString()].push_back(name.toString());
//            }
//        }else{
//            if(name.isValid()){
//                m_treeNodes[name.toString()].push_back(name.toString());
//            }
//        }
    }
@@ -1529,6 +1541,65 @@
    qDebug()<<"单位信息数量:"<<m_nameAndComInfos.size();
}
void ConverInfo2::createTreeNode(){
    qDebug()<<"构建树形列表"<<m_treeNodes.size();
    for(auto iter=m_treeNodes.begin();iter != m_treeNodes.end();iter++)
    {
        // 先构建一个每级的父节点
        addTreeWidgetNode(iter.key(),iter.key());
        // 再添加孩子节点
        for(QString node:iter.value()){
            qDebug()<<iter.key()<<node;
            if(iter.key() != node){
                addTreeWidgetNode(iter.key(),node);
            }
        }
    }
}
void ConverInfo2::addTreeWidgetNode(QVariant upName,QVariant name){
    // 添加左边树形图相关
    // 菜单相关  当上级公司为空上级时,自己当自己的上级,并且罗列进去当 本级
    if(upName.isValid()) // 有效
    {
        // 判断顶层树节点是否已经存在
        QTreeWidgetItem *top = nullptr;
        for(int k=0;k<ui->treeWidget->topLevelItemCount();++k){
            QTreeWidgetItem *tmp = ui->treeWidget->topLevelItem(k);
            qDebug()<<k<<tmp->text(0)<<upName.toString();
            int pos = tmp->text(0).indexOf(upName.toString()+"(汇总)");
            if(upName.toString()+"(汇总)" == tmp->text(0) || pos != -1){
                top = tmp;
                break;
            }
        }
        if(name.isValid()){
            if(top){ // 存在,则添加到孩子列表中
                QTreeWidgetItem *top1 = new QTreeWidgetItem(top);
                top1->setText(0,name.toString());
                top->setText(0,upName.toString()+"(汇总)下级数:"+QString::number(top->childCount()-1));
            }else{ // 不存在,则新建一个列表
                QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
                top1->setText(0,name.toString()+"(汇总)");
                QTreeWidgetItem *top2 = new QTreeWidgetItem(top1);
                top2->setText(0,name.toString()+"(本级)");
                top1->setText(0,name.toString()+"(汇总)下级数:"+QString::number(top1->childCount()-1));
            }
        }
    }else{
        qDebug()<<"没发现上一级,只能自己当"<<name;
        if(name.isValid()){
            QTreeWidgetItem *top1 = new QTreeWidgetItem(ui->treeWidget);
            top1->setText(0,name.toString()+"(汇总)");
            QTreeWidgetItem *top2 = new QTreeWidgetItem(top1);
            top2->setText(0,name.toString()+"(本级)");
            top1->setText(0,name.toString()+"(汇总)下级数:"+QString::number(top1->childCount()-1));
        }
    }
}
void ConverInfo2::on_pushButton_laodFile_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,"选择表格:单位及内部审计机构基本情况表","./","excel(*基本情况表*.xls)");
@@ -1537,3 +1608,8 @@
        readExcelFromPath(path);
    }
}
void ConverInfo2::showExcelSlot()
{
    readInfo(); // 加载表格
}