wumu
2025-04-27 20ffcfb5507daf34f81346ca3dfa4c031e7b2fe3
internal_system_v1/converinfo2.cpp
@@ -100,9 +100,66 @@
{
    if(m_curItem==nullptr)return;
    qDebug()<<"删除公司信息,节点:"<<m_curItem->text(0);
    auto resList = m_curItem->takeChildren();
    //auto resList = m_curItem->takeChildren();
    qDebug()<<"删除数量:"<<resList.size();
    //qDebug()<<"删除数量:"<<resList.size();
    // 删除数据库表里面对应的公司信息,并且再次刷新下拉框和树状图
        // 数据库表有:封面信息表 all_company_info      综合信息表 comprehensive_entry_info    三合一的表 standing_book_info
    QString name = m_curItem->text(0);
    QStringList sp = name.split("(本级)");
    QStringList sp2 = name.split("下级数");
    qDebug()<<"拆开:"<<sp<<"汇总:"<<sp2;
    if(sp.size() == 2){
        name = sp.at(0);
    }
    if(sp2.size() == 2){ // 得递归删除底下的所有单位
        name = sp2.at(0);
    }
    // 删除所有表中这个名字
    deleteAllByName(name);
    // 删除完了,还得去刷新下拉框
    for(auto it=m_nameAndComInfos.begin();it!=m_nameAndComInfos.end();){
        if(it.key() == name){
            m_nameAndComInfos.erase(it++);
            break;
        }else{
            it++;
        }
    }
    // 去刷新树形图
    for(auto it=m_treeNodes.begin();it!=m_treeNodes.end();){
        // 如果等于键,那么要删除对应的所有的值
        if(it.key() == name){
            // 把所有的值对应的单位信息都删掉
            for(auto str:it.value()){
                auto p = m_nameAndComInfos.find(str);
                if(p != m_nameAndComInfos.end()){
                    deleteAllByName(str); // 还得再删掉数据库中的内容
                    m_nameAndComInfos.erase(p);
                }
            }
            m_treeNodes.erase(it++);
            break;
        }
        // 只是某个值,只删除一个即可,遍历值里面的迭代器,找到删除即可
        else{
            auto p = it.value().find(name);
            if(p != it.value().end()){
                it.value().erase(p);
            }
            it++;
        }
    }
    emit updateComboListSignal(m_nameAndComInfos);
    createTreeNode();
}
void ConverInfo2::saveInfo()
@@ -777,11 +834,13 @@
                if(upName.isValid()){
                    if(name.isValid()){
                        m_treeNodes[upName.toString()].push_back(name.toString());
                        //m_treeNodes[upName.toString()].push_back(name.toString());
                        m_treeNodes[upName.toString()].insert(name.toString());
                    }
                }else{
                    if(name.isValid()){
                        m_treeNodes[name.toString()].push_back(name.toString());
                        //m_treeNodes[name.toString()].push_back(name.toString());
                        m_treeNodes[name.toString()].insert(name.toString());
                    }
                }
@@ -1650,6 +1709,9 @@
}
void ConverInfo2::createTreeNode(){
    // 先清除当前树上的所有节点
    ui->treeWidget->clear();
    qDebug()<<"构建树形列表"<<m_treeNodes.size();
    for(auto iter=m_treeNodes.begin();iter != m_treeNodes.end();iter++)
    {
@@ -1916,9 +1978,15 @@
            // 存名字到单位树map
            QString upName = query.value(21).toString();
            if(!upName.isEmpty()){
                m_treeNodes[upName].push_back(name);
                //m_treeNodes[upName].push_back(name);
                m_treeNodes[upName].insert(name);
            }else{
                m_treeNodes[name].push_back(name);
                //m_treeNodes[name].push_back(name);
                //m_treeNodes[upName].insert(name);
                if(!name.isEmpty()){
                    //m_treeNodes[name.toString()].push_back(name.toString());
                    m_treeNodes[name].insert(name);
                }
            }
            qDebug()<<"name"<<name<<"upName"<<upName;
@@ -1926,6 +1994,40 @@
        qDebug()<<"rowCnt:"<<rowCnt;
    }
}
void ConverInfo2::deleteAllByName(QString name)
{
    // 数据库表有:封面信息表 all_company_info
    // 综合信息表 comprehensive_entry_info
    // 三合一的表 standing_book_info
    QString first_sql = QString("delete from all_company_info where name='%1'").arg(name);
    qDebug()<<"first_sql:"<<first_sql;
    QString second_sql = QString("delete from comprehensive_entry_info where name='%1'").arg(name);
    qDebug()<<"second_sql:"<<second_sql;
    QString three_sql = QString("delete from standing_book_info where 责任主体名称='%1'").arg(name);
    qDebug()<<"three_sql:"<<three_sql;
    QSqlQuery query;
    if(query.exec(first_sql))
    {
        qDebug()<<"first_sql run ok";
    }
    if(query.exec(second_sql))
    {
        qDebug()<<"second_sql run ok";
    }
    if(query.exec(three_sql))
    {
        qDebug()<<"three_sql run ok";
    }
}
void ConverInfo2::addTreeWidgetNode(QVariant upName,QVariant name){
    // 添加左边树形图相关
    // 菜单相关  当上级公司为空上级时,自己当自己的上级,并且罗列进去当 本级