From d93a5a61f94ac4cf795ba4a8970d9eeba037f4c3 Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期三, 09 十月 2024 09:06:30 +0800
Subject: [PATCH] 1008

---
 internal_system_v1/converinfo2.cpp |  146 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 107 insertions(+), 39 deletions(-)

diff --git a/internal_system_v1/converinfo2.cpp b/internal_system_v1/converinfo2.cpp
index a51a114..0ed41dc 100644
--- a/internal_system_v1/converinfo2.cpp
+++ b/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()<<"鐐瑰嚮浜嗙爜铓侀泦鍥�";
@@ -102,6 +102,12 @@
 {
     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 +209,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 +278,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 +696,37 @@
                 // 鏈�鍚庡瓨鍒癿ap涓�
                 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 +1517,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 +1537,61 @@
     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();
+            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()+"(鏈骇)");
+        }
+
+    }
+}
 void ConverInfo2::on_pushButton_laodFile_clicked()
 {
     QString path = QFileDialog::getOpenFileName(this,"閫夋嫨琛ㄦ牸:鍗曚綅鍙婂唴閮ㄥ璁℃満鏋勫熀鏈儏鍐佃〃","./","excel(*鍩烘湰鎯呭喌琛�*.xls)");
@@ -1537,3 +1600,8 @@
         readExcelFromPath(path);
     }
 }
+
+void ConverInfo2::showExcelSlot()
+{
+    readInfo(); // 鍔犺浇琛ㄦ牸
+}

--
Gitblit v1.8.0