From 20ffcfb5507daf34f81346ca3dfa4c031e7b2fe3 Mon Sep 17 00:00:00 2001
From: wumu <mayi@mayi.com>
Date: 星期日, 27 四月 2025 22:13:53 +0800
Subject: [PATCH] 0427

---
 internal_system_v1/clientmainwindow.cpp |  386 +++++++++++++++++++++++++++++++++++++
 internal_system_v1/searchinfo.cpp       |    3 
 internal_system_v1/clientmainwindow.ui  |   91 ++++++++
 internal_system_v1/clientmainwindow.h   |    6 
 internal_system_v1/converinfo2.h        |    2 
 internal_system_v1/converinfo2.cpp      |   57 +++++
 internal_system_v1/exporttofile.cpp     |    4 
 7 files changed, 527 insertions(+), 22 deletions(-)

diff --git a/internal_system_v1/clientmainwindow.cpp b/internal_system_v1/clientmainwindow.cpp
index 6ec89c0..f3a0e77 100644
--- a/internal_system_v1/clientmainwindow.cpp
+++ b/internal_system_v1/clientmainwindow.cpp
@@ -548,8 +548,10 @@
     for(int i=1;i<ui->tableWidget->rowCount();++i){
         qDebug()<<"data:"<<ui->tableWidget->item(i,1)->text()<<" "<<ui->tableWidget->item(i,3)->text();
     }
-    // 鍏堝垽鏂叕鍙稿湪涓嶅湪锛屼笉鍦ㄥ垯鏂板锛屽湪鍒欎慨鏀�
-    QString sql = QString("select name from comprehensive_entry_info where name='%1'").arg(ui->comboBox_company->currentText());
+    // 鍏堝垽鏂叕鍙搞�佸勾浠藉湪涓嶅湪锛屼笉鍦ㄥ垯鏂板锛屽湪鍒欎慨鏀�
+    QString year = ui->dateEdit_year->text();
+    QString name = ui->comboBox_company->currentText();
+    QString sql = QString("select name from comprehensive_entry_info where name='%1' and year='%2'").arg(name).arg(year);
     qDebug()<<"sql select:"<<sql;
     QSqlQuery query;
     bool nameExsit = false;
@@ -633,11 +635,12 @@
                     _030903,\
                     _031000,\
                     _031001,\
-                company_type\
+                company_type,\
+                year\
                       ) values ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14','%15','%16','%17','%18','%19','%20','%21','%22','%23','%24','%25','%26'"
                               ",'%27','%28','%29','%30','%31','%32','%33','%34','%35','%36','%37','%38','%39','%40','%41','%42','%43','%44','%45','%46','%47','%48','%49','%50','%51'"
                               ",'%52','%53','%54','%55','%56','%57','%58','%59','%60','%61','%62','%63','%64','%65','%66','%67','%68','%69','%70','%71','%72','%73','%74','%75','%76'"
-                              ",'%77','%78')").arg(ui->comboBox_company->currentText()).arg(ui->tableWidget->item(1,3)->text())
+                              ",'%77','%78','%79')").arg(ui->comboBox_company->currentText()).arg(ui->tableWidget->item(1,3)->text())
                 .arg(ui->tableWidget->item(2,3)->text()).arg(ui->tableWidget->item(3,3)->text()).arg(ui->tableWidget->item(4,3)->text()).arg(ui->tableWidget->item(5,3)->text()).arg(ui->tableWidget->item(6,3)->text())
                 .arg(ui->tableWidget->item(7,3)->text()).arg(ui->tableWidget->item(8,3)->text()).arg(ui->tableWidget->item(9,3)->text()).arg(ui->tableWidget->item(10,3)->text()).arg(ui->tableWidget->item(11,3)->text())
                 .arg(ui->tableWidget->item(12,3)->text()).arg(ui->tableWidget->item(13,3)->text()).arg(ui->tableWidget->item(14,3)->text()).arg(ui->tableWidget->item(15,3)->text()).arg(ui->tableWidget->item(16,3)->text())
@@ -653,7 +656,7 @@
                 .arg(ui->tableWidget->item(62,3)->text()).arg(ui->tableWidget->item(63,3)->text()).arg(ui->tableWidget->item(64,3)->text()).arg(ui->tableWidget->item(65,3)->text()).arg(ui->tableWidget->item(66,3)->text())
                 .arg(ui->tableWidget->item(67,3)->text()).arg(ui->tableWidget->item(68,3)->text()).arg(ui->tableWidget->item(69,3)->text()).arg(ui->tableWidget->item(70,3)->text()).arg(ui->tableWidget->item(71,3)->text())
                 .arg(ui->tableWidget->item(72,3)->text()).arg(ui->tableWidget->item(73,3)->text()).arg(ui->tableWidget->item(74,3)->text()).arg(ui->tableWidget->item(75,3)->text()).arg(ui->tableWidget->item(76,3)->text())
-                .arg(ui->comboBox->currentText());
+                .arg(ui->comboBox->currentText()).arg(ui->dateEdit_year->text());
 
         qDebug()<<"comprehensive_entry_info insert sql:"<<sql;
         if(query.exec(sql)){
@@ -674,7 +677,7 @@
                       ",_030510='%42',_030520='%43',_030521='%44',_030522='%45',_030523='%46',_030524='%47',_030525='%48',_030526='%49',_030527='%50',_030528='%51'"
                       ",_030600='%52',_030610='%53',_030620='%54',_030621='%55',_030622='%56',_030623='%57',_030624='%58',_030700='%59',_030701='%60',_030702='%61'"
                       ",_030703='%62',_030704='%63',_030705='%64',_030706='%65',_030800='%66',_030801='%67',_030802='%68',_030803='%69',_030804='%70',_030900='%71'"
-                      ",_030901='%72',_030902='%73',_030903='%74',_031000='%75',_031001='%76',company_type='%77' where name='%78'").arg(ui->tableWidget->item(1,3)->text())
+                      ",_030901='%72',_030902='%73',_030903='%74',_031000='%75',_031001='%76',company_type='%77' where name='%78' and year='%79'").arg(ui->tableWidget->item(1,3)->text())
                 .arg(ui->tableWidget->item(2,3)->text()).arg(ui->tableWidget->item(3,3)->text()).arg(ui->tableWidget->item(4,3)->text()).arg(ui->tableWidget->item(5,3)->text()).arg(ui->tableWidget->item(6,3)->text())
                 .arg(ui->tableWidget->item(7,3)->text()).arg(ui->tableWidget->item(8,3)->text()).arg(ui->tableWidget->item(9,3)->text()).arg(ui->tableWidget->item(10,3)->text()).arg(ui->tableWidget->item(11,3)->text())
                 .arg(ui->tableWidget->item(12,3)->text()).arg(ui->tableWidget->item(13,3)->text()).arg(ui->tableWidget->item(14,3)->text()).arg(ui->tableWidget->item(15,3)->text()).arg(ui->tableWidget->item(16,3)->text())
@@ -690,7 +693,7 @@
                 .arg(ui->tableWidget->item(62,3)->text()).arg(ui->tableWidget->item(63,3)->text()).arg(ui->tableWidget->item(64,3)->text()).arg(ui->tableWidget->item(65,3)->text()).arg(ui->tableWidget->item(66,3)->text())
                 .arg(ui->tableWidget->item(67,3)->text()).arg(ui->tableWidget->item(68,3)->text()).arg(ui->tableWidget->item(69,3)->text()).arg(ui->tableWidget->item(70,3)->text()).arg(ui->tableWidget->item(71,3)->text())
                 .arg(ui->tableWidget->item(72,3)->text()).arg(ui->tableWidget->item(73,3)->text()).arg(ui->tableWidget->item(74,3)->text()).arg(ui->tableWidget->item(75,3)->text()).arg(ui->tableWidget->item(76,3)->text())
-                .arg(ui->comboBox->currentText()).arg(ui->comboBox_company->currentText());
+                .arg(ui->comboBox->currentText()).arg(ui->comboBox_company->currentText()).arg(ui->dateEdit_year->text());
 
         qDebug()<<"update sql:"<<sql;
         if(query.exec(sql)){
@@ -707,6 +710,15 @@
 
 void ClientMainWindow::on_comboBox_currentIndexChanged(const QString &arg1)
 {
+    // 鏄惁鑷姩娓呴櫎
+    if(ui->checkBox->isChecked()){
+        qDebug()<<"鑷姩娓呴櫎鍊�";
+        for(int i=30;i<ui->tableWidget->rowCount();++i){
+            for(int j=4;j<ui->tableWidget->columnCount();++j){
+                ui->tableWidget->setItem(i,j,new QTableWidgetItem("0"));
+            }
+        }
+    }
     qDebug()<<"褰撳墠"<<arg1;
     if(arg1 == "浼佷笟(涓嶅惈閲戣瀺浼佷笟)"){
         ui->tableWidget->setItemDelegateForColumn(4,m_editDelegate);
@@ -969,3 +981,363 @@
     ExportToFile etf(this);
     etf.saveToExcelFromNeiShenZonghe(name,nszh);
 }
+
+void ClientMainWindow::on_comboBox_company_currentTextChanged(const QString &arg1)
+{
+    qDebug()<<"鍏徃鍚嶅瓧鍙戠敓浜嗗彉鍖�:"<<arg1;
+    // 鏍规嵁鍏徃鍚嶆潵銆佸勾浠芥煡璇㈡墍鏈夌殑鏁版嵁锛屾牴鎹煡璇㈠埌鐨勪紒涓氱被鍨嬫潵缁欐寚瀹氱殑鍒楀啓鍏ユ暟鎹�
+    QString year = ui->dateEdit_year->text();
+    QString sql = QString("select * from comprehensive_entry_info where name='%1' and year='%2'").arg(arg1).arg(year);
+
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+        qDebug()<<"鏌ヨ鍒扮患鍚堣〃淇℃伅:"<<arg1;
+        int row=0;
+        while(query.next()){ // 娣诲姞缁撴灉闆�
+            row++;
+            QString com_type = query.value(78).toString();
+            int column_index = 4;
+            if(com_type == "浼佷笟(涓嶅惈閲戣瀺浼佷笟)"){
+                column_index = 4;
+            }else if(com_type == "閲戣瀺浼佷笟"){
+                column_index = 5;
+            }else if(com_type == "鏈哄叧"){
+                column_index = 6;
+            }else if(com_type == "浜嬩笟鍗曚綅"){
+                column_index = 7;
+            }else if(com_type == "鍏朵粬"){
+                column_index = 8;
+            }
+            // 缁欐瘡椤硅祴鍊�
+            for(int i=31;i<78;++i){
+                ui->tableWidget->setItem(i-1,column_index,new QTableWidgetItem(query.value(i).toString()));
+            }
+        }
+        qDebug()<<"row:"<<row;
+        if(row == 0){
+            // 灏辫娓呯┖鐩墠鎵�鏈夌殑鍐呭锛岄兘缃负0
+            for(int i=4;i<9;++i){
+                for(int j=30;j<78;++j){
+                    ui->tableWidget->setItem(j,i,new QTableWidgetItem("0"));
+                }
+            }
+        }
+    }else{
+        qDebug()<<"娌℃湁鏌ヨ鍒扮患鍚堣〃淇℃伅:"<<arg1;
+    }
+}
+
+void ClientMainWindow::on_pushButton_merge_3And1_clicked()
+{
+    // 鎸夊勾搴﹀拰鍏徃鍚嶏紝杩涜鍏ㄩ儴鐨勫悎骞讹紝鍚堝苟鐨勬椂鍊欓渶瑕佹煡璇㈠嚭瀛楁鏉ワ紝鎸夊瓧娈靛悎骞�
+    // 鏌ヨ涓夊悎涓�鐨勮〃锛屽悎骞跺埌缁煎悎琛紝鍚堝苟涔嬪墠鎶婂唴瀹瑰叏閮ㄩ兘瀛樺偍涓�閬嶏紝鐒跺悗鍐嶇粺涓�鎻掑叆鎴栬�呮洿鏂拌繘琛ㄦ牸涓�
+    QString name = ui->comboBox_company->currentText();
+    QString year = ui->dateEdit_year->text();
+
+    qDebug()<<"name:"<<ui->comboBox_company->currentText()<<" year:"<<ui->dateEdit_year->text();
+
+    QString sql = QString("select * from standing_book_info where 璐d换涓讳綋鍚嶇О='%1' and 瀹¤骞村害='%2'").arg(name).arg(year);
+
+    qDebug()<<"sql:"<<sql;
+
+    // 鍑嗗閿�煎锛屾潵淇濆瓨瀛楁鍚嶅拰涓夊悎涓�鐨勭粨鏋滐紝閫氳繃缁撴灉鎷垮瓧娈靛悕锛屾帴鐫�鍐嶆嬁鍑哄搴旂殑鍊兼潵缁剆ql璇彞
+    QMap<QString,QString> names_map;
+    QMap<QString,double> infos_map;
+    // 鍥� 瀹¤椤圭洰
+    names_map["璐交钀藉疄鍥藉閲嶅ぇ鏀跨瓥鎺柦瀹¤"] = "_030301";
+    names_map["璐㈡斂璐㈠姟鏀舵敮瀹¤"] = "_030302";
+    names_map["鍥哄畾璧勪骇鎶曡祫瀹¤"] = "_030303";
+    names_map["鍐呴儴鎺у埗鍜岄闄╃鐞嗗璁�"] = "_030304";
+    names_map["缁忔祹璐d换瀹¤"] = "_030305";
+    names_map["淇℃伅璐d换瀹¤"] = "_030306";
+    names_map["澧冨瀹¤"] = "_030307";
+    names_map["鍏朵粬"] = "_030308";
+    names_map["澶栨嫇澶栧寘椤圭洰"] = "_030310";
+
+    // 鍏� 瀹¤鍙戠幇闂閲戦
+    names_map["鍏朵腑锛氱哗鏁堢被闂閲戦"] = "_030510";
+    names_map["鍚堣鎬ч棶棰橀噾棰�"] = "_030520";
+    names_map["鍏朵腑锛氫細璁℃牳绠楁柟闈�"] = "_030521";
+    names_map["杩濊浣跨敤璧勯噾"] = "_030522";
+    names_map["鎴暀銆佹矇娣�璧勯噾"] = "_030523";
+    names_map["鎹熷け娴垂"] = "_030524";
+    names_map["鎸敤璧勯噾"] = "_030525";
+    names_map["閫忔紡绋庤垂"] = "_030526";
+    names_map["杩濊鍙栧緱鏀跺叆"] = "_030527";
+    names_map["鍏朵粬"] = "_030528";
+
+    // 涓� 瀹¤鍙戠幇闂涓暟
+    names_map["鍏朵腑锛氶噾棰濈被闂涓暟"] = "_030610";
+    names_map["闈為噾棰濈被闂涓暟"] = "_030620";
+    names_map["鍏朵腑锛氬浗瀹舵斂绛栨帾鏂借惤瀹炴柟闈�"] = "_030621";
+    names_map["鍙戝睍瑙勫垝涓庢垬鐣ュ喅绛栨柟闈�"] = "_030622";
+    names_map["鍐呴儴鎺у埗涓庨闄╃鐞嗘柟闈�"] = "_030623";
+    names_map["鍏朵粬"] = "_030624";
+
+    // 鍏� 瀹¤鍙戠幇闂鏁存敼(閲戦绫�)
+    names_map["鍏朵腑锛氳皟鏁翠細璁¤处鐩�"] = "_030701";
+    names_map["鏀跺洖璧勯噾"] = "_030702";
+    names_map["鎸藉洖鎹熷け"] = "_030703";
+    names_map["褰掕繕鍘熻祫閲戞笭閬�"] = "_030704";
+    names_map["琛ョ即绋庤垂"] = "_030705";
+    names_map["鍏朵粬"] = "_030706";
+
+    // 涔� 瀹¤鍙戠幇闂鏁存敼(闈為噾棰濈被)
+    names_map["鍏朵腑锛氭柊鍒跺畾鍒跺害"] = "_030801";
+    names_map["淇瀹屽杽鍒跺害"] = "_030802";
+    names_map["浼樺寲瀹屽杽涓氬姟娴佺▼"] = "_030803";
+    names_map["鍏朵粬"] = "_030804";
+
+    // 鍗� 鏍规嵁瀹¤寤鸿鍩轰簬鍏氱邯銆佹斂鍔″拰鍐呴儴绾緥澶勫垎
+    names_map["鍏朵腑锛氬厷绾鍒�"] = "_030901";
+    names_map["鏀垮姟澶勫垎"] = "_030902";
+    names_map["鍐呴儴绾緥澶勫垎"] = "_030903";
+
+    // 鍗佷竴 鍚戝徃娉曟満鍏崇Щ閫佹垨鎶ュ憡妗堜欢绾跨储
+    names_map["鍚戝徃娉曟満鍏崇Щ閫佹垨鎶ュ憡妗堜欢绾跨储"] = "_031000";
+    names_map["娑夋浜哄憳"] = "_031001";
+
+
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+        // 鑾峰彇瀛楁淇℃伅
+        int row=0;
+        while(query.next()){
+            // 鍙栫壒瀹氬瓧娈�
+            for(int i=0;i<47;++i){
+                qDebug()<<"i="<< i <<query.record().fieldName(i) <<"鍐呭:"<<query.value(i);
+            }
+            // 瀹¤椤圭洰
+            infos_map[names_map[query.value(6).toString()]]++;
+            // 瀹¤鍙戠幇闂閲戦
+            infos_map[names_map[query.value(12).toString()]] += query.value(14).toDouble();
+            // 瀹¤鍙戠幇闂涓暟
+            infos_map[names_map[query.value(13).toString()]] ++;
+            // 鏁存敼鎴愭灉鈥旈棶棰樻暣鏀癸紙閲戦绫伙級
+            infos_map[names_map[query.value(42).toString()]] += query.value(43).toDouble();
+            // 鏁存敼鎴愭灉鈥斺�旈棶棰樻暣鏀癸紙闈為噾棰濈被锛�
+            infos_map[names_map[query.value(44).toString()]] += query.value(45).toLongLong();
+            // 绉婚�佷俊鎭�-澶勫垎缁撴灉
+            infos_map[names_map[query.value(26).toString()]] += query.value(27).toLongLong();
+
+            // 绉婚�佷俊鎭�-娑夋浜哄憳锛堝崟浣嶏細浜猴級
+            infos_map["_031001"] += query.value(30).toLongLong();
+
+
+            row++;
+
+        }
+        qDebug()<<"row:"<<row<<" infos_map size:"<<infos_map.size();
+
+        // 杈撳嚭璁板綍淇℃伅
+        for(auto it = infos_map.begin();it != infos_map.end();++it){
+            qDebug()<<it.key()<<it.value();
+        }
+
+        // 濡傛灉缁熻涓嶅埌鏁版嵁锛岀洿鎺ヨ烦杩�
+        if(row==0){
+            qDebug()<<"鍚堝苟鏁版嵁鏃狅紝鐩存帴杩斿洖";
+            return;
+        }
+
+        // 鍐欏埌鏁版嵁搴撲腑
+            // 鍏堣幏鍙栨満鏋勭被鍨�
+        QString typeSql = QString("select 鏈烘瀯绫诲瀷 from all_company_info where name='%1'").arg(name);
+        qDebug()<<"typeSql:"<<typeSql;
+        QString comType;
+        if(query.exec(typeSql)){
+            while (query.next()) {
+                comType = query.value(0).toString();
+                qDebug()<<"find type:"<<comType;
+            }
+        }
+        int typeIndex=0;
+        QStringList typeList = comType.split(" ");
+        if(typeList.size() > 1){
+            if(typeList.at(0) == "30"){
+                typeIndex = 2;
+            }else if(typeList.at(0) == "20"){
+                typeIndex = 3;
+            }else if(typeList.at(0) == "10"){
+                typeIndex = 0;
+            }else{
+                typeIndex = 4;
+            }
+        }
+        ui->comboBox->setCurrentIndex(typeIndex); // 璁剧疆鍗曚綅绫诲瀷涓哄彲缂栬緫
+            // 鎺ョ潃寰�琛ㄦ牸閲岄潰鍐欏叆鏁翠綋鏁版嵁
+        comType = ui->comboBox->currentText();
+        QString mergeSQLSearch = QString("select * from comprehensive_entry_info where name='%1' and year='%2' and company_type='%3'").arg(name).arg(year).arg(comType);
+        qDebug()<<"mergeSQLSearch"<<mergeSQLSearch;
+        if(query.exec(mergeSQLSearch)){
+            int row = 0;
+            while (query.next()) {
+                row++;
+            }
+            qDebug()<<"search row:"<<row;
+            if(row == 0){
+                //杩樻病鏈夋暟鎹紝鎻掑叆鍗冲彲
+                QString mergeSQLInser = QString("insert into comprehensive_entry_info (name,\
+                        _030300,\
+                        _030301,\
+                        _030302,\
+                        _030303,\
+                        _030304,\
+                        _030305,\
+                        _030306,\
+                        _030307,\
+                        _030308,\
+                        _030310,\
+                        _030400,\
+                        _030500,\
+                        _030510,\
+                        _030520,\
+                        _030521,\
+                        _030522,\
+                        _030523,\
+                        _030524,\
+                        _030525,\
+                      _030526,\
+                      _030527,\
+                      _030528,\
+                      _030600,\
+                      _030610,\
+                      _030620,\
+                      _030621,\
+                      _030622,\
+                      _030623,\
+                      _030624,\
+                      _030700,\
+                      _030701,\
+                      _030702,\
+                      _030703,\
+                      _030704,\
+                      _030705,\
+                      _030706,\
+                      _030800,\
+                      _030801,\
+                      _030802,\
+                      _030803,\
+                      _030804,\
+                      _030900,\
+                      _030901,\
+                      _030902,\
+                      _030903,\
+                      _031000,\
+                      _031001,\
+                  company_type,\
+                  year\
+                        ) values ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14','%15','%16','%17','%18','%19','%20','%21','%22','%23','%24','%25','%26'"
+                                ",'%27','%28','%29','%30','%31','%32','%33','%34','%35','%36','%37','%38','%39','%40','%41','%42','%43','%44','%45','%46','%47','%48','%49','%50')").arg(name).arg(QString::number(infos_map["_030300"]))
+                        .arg(QString::number(infos_map["_030301"])).arg(QString::number(infos_map["_030302"])).arg(QString::number(infos_map["_030303"])).arg(QString::number(infos_map["_030304"])).arg(QString::number(infos_map["_030305"]))
+                        .arg(QString::number(infos_map["_030306"])).arg(QString::number(infos_map["_030307"])).arg(QString::number(infos_map["_030308"])).arg(QString::number(infos_map["_030310"])).arg(QString::number(infos_map["_030400"]))
+                        .arg(QString::number(infos_map["_030500"])).arg(QString::number(infos_map["_030510"])).arg(QString::number(infos_map["_030520"])).arg(QString::number(infos_map["_030521"])).arg(QString::number(infos_map["_030522"]))
+                        .arg(QString::number(infos_map["_030523"])).arg(QString::number(infos_map["_030524"])).arg(QString::number(infos_map["_030525"])).arg(QString::number(infos_map["_030526"])).arg(QString::number(infos_map["_030527"]))
+                        .arg(QString::number(infos_map["_030528"])).arg(QString::number(infos_map["_030600"])).arg(QString::number(infos_map["_030610"])).arg(QString::number(infos_map["_030620"])).arg(QString::number(infos_map["_030621"]))
+                        .arg(QString::number(infos_map["_030622"])).arg(QString::number(infos_map["_030623"])).arg(QString::number(infos_map["_030624"])).arg(QString::number(infos_map["_030700"])).arg(QString::number(infos_map["_030701"]))
+                        .arg(QString::number(infos_map["_030702"])).arg(QString::number(infos_map["_030703"])).arg(QString::number(infos_map["_030704"])).arg(QString::number(infos_map["_030705"])).arg(QString::number(infos_map["_030706"]))
+                        .arg(QString::number(infos_map["_030800"])).arg(QString::number(infos_map["_030801"])).arg(QString::number(infos_map["_030802"])).arg(QString::number(infos_map["_030803"])).arg(QString::number(infos_map["_030804"]))
+                        .arg(QString::number(infos_map["_030900"])).arg(QString::number(infos_map["_030901"])).arg(QString::number(infos_map["_030902"])).arg(QString::number(infos_map["_030903"])).arg(QString::number(infos_map["_031000"]))
+                        .arg(QString::number(infos_map["_031001"])).arg(comType).arg(year);
+
+                qDebug()<<"mergeSQLInser:"<<mergeSQLInser;
+
+                if(query.exec(mergeSQLInser)){
+                    qDebug()<<"mergeSQLInser 鎴愬姛";
+                    // 鎴愬姛浜嗭紝璋冪敤鏌ヨ鏉ュ埛鏂拌〃鏍兼煡鐪�
+                    on_pushButton_search_clicked();
+                }else{
+                    qDebug()<<"mergeSQLInser 澶辫触";
+                }
+
+            }else{
+                // 宸茬粡鏈夋暟鎹簡锛岄渶瑕佹洿鏂�
+                QString mergeSQLUpdate = QString("update comprehensive_entry_info set _030300='%1',_030301='%2'"
+                                                 ",_030302='%3',_030303='%4',_030304='%5',_030305='%6',_030306='%7',_030307='%8',_030308='%9',_030310='%10',_030400='%11',_030500='%12'"
+                                                 ",_030510='%13',_030520='%14',_030521='%15',_030522='%16',_030523='%17',_030524='%18',_030525='%19',_030526='%20',_030527='%21',_030528='%22'"
+                                                 ",_030600='%23',_030610='%24',_030620='%25',_030621='%26',_030622='%27',_030623='%28',_030624='%29',_030700='%30',_030701='%31',_030702='%32'"
+                                                 ",_030703='%33',_030704='%34',_030705='%35',_030706='%36',_030800='%37',_030801='%38',_030802='%39',_030803='%40',_030804='%41',_030900='%42'"
+                                                 ",_030901='%43',_030902='%44',_030903='%45',_031000='%46',_031001='%47' where name='%48' and year='%49' and company_type='%50'").arg(QString::number(infos_map["_030300"]))
+                        .arg(QString::number(infos_map["_030301"])).arg(QString::number(infos_map["_030302"])).arg(QString::number(infos_map["_030303"])).arg(QString::number(infos_map["_030304"])).arg(QString::number(infos_map["_030305"]))
+                        .arg(QString::number(infos_map["_030306"])).arg(QString::number(infos_map["_030307"])).arg(QString::number(infos_map["_030308"])).arg(QString::number(infos_map["_030310"])).arg(QString::number(infos_map["_030400"]))
+                        .arg(QString::number(infos_map["_030500"])).arg(QString::number(infos_map["_030510"])).arg(QString::number(infos_map["_030520"])).arg(QString::number(infos_map["_030521"])).arg(QString::number(infos_map["_030522"]))
+                        .arg(QString::number(infos_map["_030523"])).arg(QString::number(infos_map["_030524"])).arg(QString::number(infos_map["_030525"])).arg(QString::number(infos_map["_030526"])).arg(QString::number(infos_map["_030527"]))
+                        .arg(QString::number(infos_map["_030528"])).arg(QString::number(infos_map["_030600"])).arg(QString::number(infos_map["_030610"])).arg(QString::number(infos_map["_030620"])).arg(QString::number(infos_map["_030621"]))
+                        .arg(QString::number(infos_map["_030622"])).arg(QString::number(infos_map["_030623"])).arg(QString::number(infos_map["_030624"])).arg(QString::number(infos_map["_030700"])).arg(QString::number(infos_map["_030701"]))
+                        .arg(QString::number(infos_map["_030702"])).arg(QString::number(infos_map["_030703"])).arg(QString::number(infos_map["_030704"])).arg(QString::number(infos_map["_030705"])).arg(QString::number(infos_map["_030706"]))
+                        .arg(QString::number(infos_map["_030800"])).arg(QString::number(infos_map["_030801"])).arg(QString::number(infos_map["_030802"])).arg(QString::number(infos_map["_030803"])).arg(QString::number(infos_map["_030804"]))
+                        .arg(QString::number(infos_map["_030900"])).arg(QString::number(infos_map["_030901"])).arg(QString::number(infos_map["_030902"])).arg(QString::number(infos_map["_030903"])).arg(QString::number(infos_map["_031000"]))
+                        .arg(QString::number(infos_map["_031001"])).arg(name).arg(year).arg(comType);
+
+                qDebug()<<"mergeSQLUpdate:"<<mergeSQLUpdate;
+                if(query.exec(mergeSQLUpdate)){
+                    qDebug()<<"mergeSQLUpdate 鎴愬姛";
+                    // 鎴愬姛浜嗭紝璋冪敤鏌ヨ鏉ュ埛鏂拌〃鏍兼煡鐪�
+                    on_pushButton_search_clicked();
+                }else{
+                    qDebug()<<"mergeSQLUpdate 澶辫触";
+                }
+            }
+        }
+    }
+
+
+}
+
+void ClientMainWindow::on_pushButton_search_clicked()
+{
+    // 鏌ヨ缁煎悎琛紝杩涜灞曠ず 鏉′欢鏄� 鍚嶅瓧鍜屽勾浠�
+    // 鏍规嵁鍏徃鍚嶆潵銆佸勾浠芥煡璇㈡墍鏈夌殑鏁版嵁锛屾牴鎹煡璇㈠埌鐨勪紒涓氱被鍨嬫潵缁欐寚瀹氱殑鍒楀啓鍏ユ暟鎹�
+    QString name = ui->comboBox_company->currentText();
+    QString year = ui->dateEdit_year->text();
+    QString sql = QString("select * from comprehensive_entry_info where name='%1' and year='%2'").arg(name).arg(year);
+
+    // 鍏堟竻绌鸿〃鏍�
+    for(int i=4;i<9;++i){
+        for(int j=30;j<78;++j){
+            ui->tableWidget->setItem(j,i,new QTableWidgetItem("0"));
+        }
+    }
+
+    // 鍐嶆墽琛屾煡璇�
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+        qDebug()<<"鏌ヨ鍒扮患鍚堣〃淇℃伅:"<<name;
+        int row=0;
+        while(query.next()){ // 娣诲姞缁撴灉闆�
+            row++;
+            QString com_type = query.value(78).toString();
+            int column_index = 4;
+            if(com_type == "浼佷笟(涓嶅惈閲戣瀺浼佷笟)"){
+                column_index = 4;
+            }else if(com_type == "閲戣瀺浼佷笟"){
+                column_index = 5;
+            }else if(com_type == "鏈哄叧"){
+                column_index = 6;
+            }else if(com_type == "浜嬩笟鍗曚綅"){
+                column_index = 7;
+            }else if(com_type == "鍏朵粬"){
+                column_index = 8;
+            }
+            qDebug()<<"鎵�鍦ㄥ垪:"<<column_index;
+            // 缁欐瘡椤硅祴鍊�
+            for(int i=31;i<78;++i){
+                ui->tableWidget->setItem(i-1,column_index,new QTableWidgetItem(query.value(i).toString()));
+            }
+        }
+        qDebug()<<"row:"<<row;
+        if(row == 0){
+            // 灏辫娓呯┖鐩墠鎵�鏈夌殑鍐呭锛岄兘缃负0
+            for(int i=4;i<9;++i){
+                for(int j=30;j<78;++j){
+                    ui->tableWidget->setItem(j,i,new QTableWidgetItem("0"));
+                }
+            }
+        }
+    }else{
+        qDebug()<<"娌℃湁鏌ヨ鍒扮患鍚堣〃淇℃伅:"<<name;
+    }
+}
diff --git a/internal_system_v1/clientmainwindow.h b/internal_system_v1/clientmainwindow.h
index 3640fca..315aa15 100644
--- a/internal_system_v1/clientmainwindow.h
+++ b/internal_system_v1/clientmainwindow.h
@@ -94,6 +94,12 @@
 
     void on_pushButton_save_export_clicked();
 
+    void on_comboBox_company_currentTextChanged(const QString &arg1);
+
+    void on_pushButton_merge_3And1_clicked();
+
+    void on_pushButton_search_clicked();
+
 signals:
     void sendDataToAuditProject(QVariantList);
     void sendDataToAuditWorkLoad(QVariantList);
diff --git a/internal_system_v1/clientmainwindow.ui b/internal_system_v1/clientmainwindow.ui
index 873e317..ad69ae9 100644
--- a/internal_system_v1/clientmainwindow.ui
+++ b/internal_system_v1/clientmainwindow.ui
@@ -209,11 +209,82 @@
        </attribute>
        <layout class="QGridLayout" name="gridLayout">
         <item row="0" column="0">
-         <widget class="QComboBox" name="comboBox_company">
-          <property name="editable">
-           <bool>true</bool>
-          </property>
-         </widget>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <item>
+           <widget class="QLabel" name="label_5">
+            <property name="text">
+             <string>涓讳綋鍚嶇О:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QComboBox" name="comboBox_company">
+            <property name="minimumSize">
+             <size>
+              <width>400</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="editable">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_4">
+            <property name="text">
+             <string>骞村害:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QDateEdit" name="dateEdit_year">
+            <property name="dateTime">
+             <datetime>
+              <hour>0</hour>
+              <minute>0</minute>
+              <second>0</second>
+              <year>2024</year>
+              <month>1</month>
+              <day>1</day>
+             </datetime>
+            </property>
+            <property name="displayFormat">
+             <string>yyyy</string>
+            </property>
+            <property name="calendarPopup">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButton_merge_3And1">
+            <property name="text">
+             <string>鍚堝苟</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButton_search">
+            <property name="text">
+             <string>鏌ヨ</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
         </item>
         <item row="1" column="0">
          <widget class="QTableWidget" name="tableWidget">
@@ -4205,6 +4276,16 @@
            </widget>
           </item>
           <item>
+           <widget class="QCheckBox" name="checkBox">
+            <property name="text">
+             <string>鑷姩娓呴櫎</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
            <widget class="QLabel" name="label_2">
             <property name="text">
              <string>姹囨�讳慨鏀瑰畬鎴愮偣鍑绘寜閽�--&gt;</string>
diff --git a/internal_system_v1/converinfo2.cpp b/internal_system_v1/converinfo2.cpp
index 31a3900..b9e8c48 100644
--- a/internal_system_v1/converinfo2.cpp
+++ b/internal_system_v1/converinfo2.cpp
@@ -100,9 +100,9 @@
 {
     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();
 
     // 鍒犻櫎鏁版嵁搴撹〃閲岄潰瀵瑰簲鐨勫叕鍙镐俊鎭紝骞朵笖鍐嶆鍒锋柊涓嬫媺妗嗗拰鏍戠姸鍥�
 
@@ -121,9 +121,43 @@
     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();){
+        // 濡傛灉绛変簬閿紝閭d箞瑕佸垹闄ゅ搴旂殑鎵�鏈夌殑鍊�
+        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();
 
 
 }
@@ -800,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());
                     }
                 }
 
@@ -1673,6 +1709,9 @@
 }
 
 void ConverInfo2::createTreeNode(){
+    // 鍏堟竻闄ゅ綋鍓嶆爲涓婄殑鎵�鏈夎妭鐐�
+    ui->treeWidget->clear();
+
     qDebug()<<"鏋勫缓鏍戝舰鍒楄〃"<<m_treeNodes.size();
     for(auto iter=m_treeNodes.begin();iter != m_treeNodes.end();iter++)
     {
@@ -1939,9 +1978,15 @@
             // 瀛樺悕瀛楀埌鍗曚綅鏍憁ap
             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;
 
diff --git a/internal_system_v1/converinfo2.h b/internal_system_v1/converinfo2.h
index bbfe8f3..6bf7b02 100644
--- a/internal_system_v1/converinfo2.h
+++ b/internal_system_v1/converinfo2.h
@@ -65,7 +65,7 @@
     QMenu *m_menu;
     QTreeWidgetItem *m_curItem;
     QMap<QString,ComInfo> m_nameAndComInfos; // 鍗曚綅鏄犲皠淇℃伅琛�
-    QMap<QString,QVector<QString>> m_treeNodes; // 鍗曚綅鏍戝舰淇℃伅琛�
+    QMap<QString,QSet<QString>> m_treeNodes; // 鍗曚綅鏍戝舰淇℃伅琛�
 };
 
 #endif // CONVERINFO2_H
diff --git a/internal_system_v1/exporttofile.cpp b/internal_system_v1/exporttofile.cpp
index 252144e..366e933 100644
--- a/internal_system_v1/exporttofile.cpp
+++ b/internal_system_v1/exporttofile.cpp
@@ -381,8 +381,7 @@
 
     if(savePath.size() > 0){
         QAxObject excel("ket.Application");
-        if(!excel.setControl("ket"
-                             ".Application")){  // windows鍐呮牳
+        if(!excel.setControl("ket.Application")){  // windows鍐呮牳
             excel.setControl("Excel.Application"); // wps鍐呮牳
         }
 
@@ -390,6 +389,7 @@
         excel.setProperty("DisplayAlerts",false);
         QAxObject * wbs = excel.querySubObject("WorkBooks");
         qDebug()<<"wbs:"<<wbs->className();
+        //QAxObject * wb = wbs->querySubObject("Open(QString&)",demoPath);
         QAxObject * wb = wbs->querySubObject("Open(QString&)",demoPath);
         qDebug()<<"wb open ok";
         QAxObject * shs = wb->querySubObject("WorkSheets"); // WorkSheets 涔熷彲浠�
diff --git a/internal_system_v1/searchinfo.cpp b/internal_system_v1/searchinfo.cpp
index 7e42287..09ed7fd 100644
--- a/internal_system_v1/searchinfo.cpp
+++ b/internal_system_v1/searchinfo.cpp
@@ -237,7 +237,8 @@
             _030903     TEXT,\
             _031000     TEXT,\
             _031001     TEXT,\
-            company_type     TEXT)").arg(tableName);
+            company_type     TEXT,\
+            year     TEXT)").arg(tableName);
     QSqlQuery query;
     if(query.exec(sql))
     {

--
Gitblit v1.8.0