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/threemergeproblemlist.cpp | 1123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,123 insertions(+), 0 deletions(-)

diff --git a/internal_system_v1/threemergeproblemlist.cpp b/internal_system_v1/threemergeproblemlist.cpp
index 8cc2e65..72b25cd 100644
--- a/internal_system_v1/threemergeproblemlist.cpp
+++ b/internal_system_v1/threemergeproblemlist.cpp
@@ -4,27 +4,472 @@
 #include <QSqlQuery>
 #include <QSqlError>
 #include <QMessageBox>
+#include <QDir>
+#include <QFileDevice>
+#include <QDesktopServices>
+#include <QFileDialog>
+
+#include "noedititemdelegate.h"
+
+#pragma execution_character_set("utf-8")
 
 ThreeMergeProblemList::ThreeMergeProblemList(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::ThreeMergeProblemList)
 {
     ui->setupUi(this);
+
+    m_fdd = new FileDialogDelegate;
+    //m_noEdit = new ThreeComboBox;
+
     ui->statusbar->hide();
     ui->menubar->hide();
     initUi(); // 鍒濆鍖栨墍鏈夌晫闈�
+
+    // 闅愯棌
+    //ui->comboBox_company->hide();
+
+    ui->tableWidget_2->hide();
+    ui->pushButton_save->hide();
+    ui->pushButton_addRow->hide();
+    ui->label_5->hide();
+    ui->label->hide();
+
+
+    ui->tableWidget_3->hide();
+    ui->pushButton_save_2->hide();
+    ui->pushButton_addRow_2->hide();
+    ui->label_6->hide();
+    ui->label_2->hide();
+
+    ui->line->hide();
+    ui->line_2->hide();
+
+    ui->groupBox->hide(); // 棣栨鍏堥殣钘�
+
+    // pdf鏂囦欢鐩稿叧
+    //m_pdfView = new QWebEngineView();
+
 
 }
 
 ThreeMergeProblemList::~ThreeMergeProblemList()
 {
+    //delete m_noEdit;
     delete ui;
 }
 
+// 鎷跨粨鏋滈泦鐨剆ql
+int ThreeMergeProblemList::selectSQL(QString sql,QVector<QVector<QString>> &result)
+{
+    int rows = -1;
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+      qDebug()<<QString("selectSQL ok...");
+
+      while(query.next()){ // 娣诲姞缁撴灉闆�
+          int idx = 0;
+          QVariant var;
+          QVector<QString> lines;
+          while((var = query.value(idx++)).isValid()){
+              lines.append(var.toString());
+          }
+          result.append(lines);
+      }
+      rows = result.size();
+
+    }else{
+      qDebug()<<QString("selectSQL fail...")<<query.lastError().text();
+    }
+    return rows;
+}
+
+// 鎷夸慨鏀规潯鏁扮殑sql
+int ThreeMergeProblemList::changeSQL(QString sql)
+{
+    int rows = -1;
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+      qDebug()<<QString("changeSQL ok...");
+      rows = query.numRowsAffected();
+
+    }else{
+      qDebug()<<QString("changeSQL fail...")<<query.lastError().text();
+    }
+    return rows;
+}
+
+int ThreeMergeProblemList::saveDataLine(int row)
+{
+    if(ui->tableWidget->item(row,0)==nullptr) {
+        qDebug()<<"褰撳墠琛岄涓虹┖"<<row;
+        return 0;
+    }
+    // 澶勭悊涓虹┖鐨勯潪棣栧垪鍗曞厓锛岃嚜鍔ㄨˉ闆�
+    for(int i=3;i<ui->tableWidget->columnCount();++i){
+        if(ui->tableWidget->item(row,i) == nullptr){
+            qDebug()<<"鍙戠幇绌洪」:"<<row<<i;
+            ui->tableWidget->setItem(row,i,new QTableWidgetItem(" "));
+        }
+    }
+
+
+    // 鍙栧嚭绱㈠紩鍙锋潵鍒ゆ柇涓�涓�
+    QString sql = QString("select id from standing_book_info where id=%1").arg(ui->tableWidget->item(row,0)->text());
+    qDebug()<<"id sql:"<<sql;
+    QVector<QVector<QString>> res;
+    int rows = selectSQL(sql,res);
+    if( rows > 0){
+        // 瀛樺湪锛屽垯鏇存柊鍐呭鍗冲彲
+        qDebug()<<"id宸插瓨鍦紝闇�鏇存柊鏁版嵁鍗冲彲";
+        sql = QString("update standing_book_info set 瀹¤绫诲埆='%1',瀹¤骞村害='%2',瀹¤鍗曚綅='%3',瀹¤鏂瑰紡='%4',璐d换涓讳綋鍚嶇О='%5'"
+                      ",瀹¤椤圭洰='%6',瀹¤椤圭洰鍚嶇О='%7',闂绫诲埆='%8',闂瀹氭��='%9',闂鎻忚堪='%10',闂瀹氭�ф硶瑙勪緷鎹�='%11',瀹¤鍙戠幇闂閲戦瀹氭��='%12',瀹¤鍙戠幇闂涓暟瀹氭��='%13',娑夊強閲戦=%14,闂鎻忚堪浣愯瘉璧勬枡='%15'"
+                      ",瀹¤鏈熼棿宸叉暣鏀�='%16',鏁存敼閲戦=%17,鏁存敼鎯呭喌1='%18',鏁存敼鎯呭喌浣愯瘉璧勬枡1='%19',鏁存敼缁撴灉='%20',鏁存敼瀹屾垚鏃堕棿='%21',灏氭湭鏁存敼鍒颁綅鐨勫師鍥�='%22',鏁存敼棰勮瀹屾垚鏃堕棿='%23'"
+                      ",鏁存敼鎯呭喌2='%24',鏁存敼鎯呭喌浣愯瘉璧勬枡2='%25',澶勫垎绫诲瀷='%26',澶勫垎浜烘暟=%27,绉婚�佽缁嗕俊鎭�='%28',澶勭悊缁撴灉='%29',娑夋浜哄憳=%30,鏁存敼妫�鏌ョ粨鏋淿妫�鏌ユ椂闂�='%31',鏁存敼妫�鏌ョ粨鏋淿妫�鏌ユ柟寮�='%32',鏁存敼妫�鏌ョ粨鏋淿妫�鏌ョ粨鏋�='%33',宸叉暣鏀筥绾犳闂='%34',宸叉暣鏀筥瀹屽杽鍒跺害='%35',宸叉暣鏀筥瀹屾垚鏃堕棿='%36'"
+                      ",姝e湪鏁存敼_涓昏鍘熷洜='%37',姝e湪鏁存敼_瀹屾垚鏃堕檺='%38',灏氭湭鏁存敼_涓昏鍘熷洜='%39',灏氭湭鏁存敼_璐d换閮ㄩ棬鎴栬矗浠讳汉='%40',灏氭湭鏁存敼_瀹屾垚鏃堕檺='%41',鏁存敼鎴愭灉_閲戦绫绘暣鏀规垚鏋�='%42',鏁存敼鎴愭灉_閲戦=%43,鏁存敼鎴愭灉_闈為噾棰濈被鏁存敼鎴愭灉='%44'"
+                      ",鏁存敼鎴愭灉_鏁伴噺=%45 where id=%46").arg(ui->tableWidget->item(row,1)->text()).arg(ui->tableWidget->item(row,2)->text()).arg(ui->tableWidget->item(row,3)->text()).arg(ui->tableWidget->item(row,4)->text())
+                .arg(ui->tableWidget->item(row,5)->text()).arg(ui->tableWidget->item(row,6)->text()).arg(ui->tableWidget->item(row,7)->text()).arg(ui->tableWidget->item(row,8)->text()).arg(ui->tableWidget->item(row,9)->text()).arg(ui->tableWidget->item(row,10)->text())
+                .arg(ui->tableWidget->item(row,11)->text()).arg(ui->tableWidget->item(row,12)->text()).arg(ui->tableWidget->item(row,13)->text()).arg(ui->tableWidget->item(row,12+2)->text().toDouble()).arg(ui->tableWidget->item(row,13+2)->text()).arg(ui->tableWidget->item(row,14+2)->text()).arg(ui->tableWidget->item(row,15+2)->text().toDouble()).arg(ui->tableWidget->item(row,16+2)->text())
+                .arg(ui->tableWidget->item(row,17+2)->text()).arg(ui->tableWidget->item(row,18+2)->text()).arg(ui->tableWidget->item(row,19+2)->text()).arg(ui->tableWidget->item(row,20+2)->text()).arg(ui->tableWidget->item(row,21+2)->text()).arg(ui->tableWidget->item(row,22+2)->text())
+                .arg(ui->tableWidget->item(row,23+2)->text()).arg(ui->tableWidget->item(row,24+2)->text()).arg(ui->tableWidget->item(row,25+2)->text().toInt()).arg(ui->tableWidget->item(row,26+2)->text()).arg(ui->tableWidget->item(row,27+2)->text()).arg(ui->tableWidget->item(row,28+2)->text().toInt()).arg(ui->tableWidget->item(row,24+5+2)->text()).arg(ui->tableWidget->item(row,25+5+2)->text()).arg(ui->tableWidget->item(row,26+5+2)->text()).arg(ui->tableWidget->item(row,27+5+2)->text()).arg(ui->tableWidget->item(row,28+5+2)->text())
+                .arg(ui->tableWidget->item(row,29+5+2)->text()).arg(ui->tableWidget->item(row,30+5+2)->text()).arg(ui->tableWidget->item(row,31+5+2)->text()).arg(ui->tableWidget->item(row,32+5+2)->text()).arg(ui->tableWidget->item(row,33+5+2)->text()).arg(ui->tableWidget->item(row,34+5+2)->text())
+                .arg(ui->tableWidget->item(row,35+5+2)->text()).arg(ui->tableWidget->item(row,36+5+2)->text().toDouble()).arg(ui->tableWidget->item(row,37+5+2)->text()).arg(ui->tableWidget->item(row,38+5+2)->text().toInt()).arg(ui->tableWidget->item(row,0)->text());
+        qDebug()<<sql;
+        rows = changeSQL(sql);
+        if(rows > 0){
+            qDebug()<<"change ok";
+        }else{
+            qDebug()<<"change fail";
+        }
+    }else{
+        // rows涓�-1 璇存槑sql璇彞鏈夐棶棰�
+        if(rows == -1){
+            qDebug()<<"sql error";
+            return -1;
+        }
+        // 涓嶅瓨鍦紝鍒欓渶瑕佹柊澧炴彃鍏�
+        qDebug()<<"涓嶅瓨鍦╥d锛屾彃鍏ユ暟鎹�";
+        sql = QString("insert into standing_book_info (瀹¤绫诲埆,瀹¤骞村害,瀹¤鍗曚綅,瀹¤鏂瑰紡,璐d换涓讳綋鍚嶇О"
+                      ",瀹¤椤圭洰,瀹¤椤圭洰鍚嶇О,闂绫诲埆,闂瀹氭��,闂鎻忚堪,闂瀹氭�ф硶瑙勪緷鎹�,瀹¤鍙戠幇闂閲戦瀹氭��,瀹¤鍙戠幇闂涓暟瀹氭��,娑夊強閲戦,闂鎻忚堪浣愯瘉璧勬枡"
+                      ",瀹¤鏈熼棿宸叉暣鏀�,鏁存敼閲戦,鏁存敼鎯呭喌1,鏁存敼鎯呭喌浣愯瘉璧勬枡1,鏁存敼缁撴灉,鏁存敼瀹屾垚鏃堕棿,灏氭湭鏁存敼鍒颁綅鐨勫師鍥�,鏁存敼棰勮瀹屾垚鏃堕棿"
+                      ",鏁存敼鎯呭喌2,鏁存敼鎯呭喌浣愯瘉璧勬枡2,澶勫垎绫诲瀷,澶勫垎浜烘暟,绉婚�佽缁嗕俊鎭�,澶勭悊缁撴灉,娑夋浜哄憳,鏁存敼妫�鏌ョ粨鏋淿妫�鏌ユ椂闂�,鏁存敼妫�鏌ョ粨鏋淿妫�鏌ユ柟寮�,鏁存敼妫�鏌ョ粨鏋淿妫�鏌ョ粨鏋�,宸叉暣鏀筥绾犳闂,宸叉暣鏀筥瀹屽杽鍒跺害,宸叉暣鏀筥瀹屾垚鏃堕棿"
+                      ",姝e湪鏁存敼_涓昏鍘熷洜,姝e湪鏁存敼_瀹屾垚鏃堕檺,灏氭湭鏁存敼_涓昏鍘熷洜,灏氭湭鏁存敼_璐d换閮ㄩ棬鎴栬矗浠讳汉,灏氭湭鏁存敼_瀹屾垚鏃堕檺,鏁存敼鎴愭灉_閲戦绫绘暣鏀规垚鏋�,鏁存敼鎴愭灉_閲戦,鏁存敼鎴愭灉_闈為噾棰濈被鏁存敼鎴愭灉"
+                      ",鏁存敼鎴愭灉_鏁伴噺,log_time) 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')").arg(ui->tableWidget->item(row,1)->text()).arg(ui->tableWidget->item(row,2)->text()).arg(ui->tableWidget->item(row,3)->text()).arg(ui->tableWidget->item(row,4)->text())
+                .arg(ui->tableWidget->item(row,5)->text()).arg(ui->tableWidget->item(row,6)->text()).arg(ui->tableWidget->item(row,7)->text()).arg(ui->tableWidget->item(row,8)->text()).arg(ui->tableWidget->item(row,9)->text()).arg(ui->tableWidget->item(row,10)->text())
+                .arg(ui->tableWidget->item(row,11)->text()).arg(ui->tableWidget->item(row,12)->text()).arg(ui->tableWidget->item(row,13)->text()).arg(ui->tableWidget->item(row,12+2)->text().toDouble()).arg(ui->tableWidget->item(row,13+2)->text()).arg(ui->tableWidget->item(row,14+2)->text()).arg(ui->tableWidget->item(row,15+2)->text().toDouble()).arg(ui->tableWidget->item(row,16+2)->text())
+                .arg(ui->tableWidget->item(row,17+2)->text()).arg(ui->tableWidget->item(row,18+2)->text()).arg(ui->tableWidget->item(row,19+2)->text()).arg(ui->tableWidget->item(row,20+2)->text()).arg(ui->tableWidget->item(row,21+2)->text()).arg(ui->tableWidget->item(row,22+2)->text())
+                .arg(ui->tableWidget->item(row,23+2)->text()).arg(ui->tableWidget->item(row,24+2)->text()).arg(ui->tableWidget->item(row,25+2)->text().toInt()).arg(ui->tableWidget->item(row,26+2)->text()).arg(ui->tableWidget->item(row,27+2)->text()).arg(ui->tableWidget->item(row,28+2)->text().toInt()).arg(ui->tableWidget->item(row,24+5+2)->text()).arg(ui->tableWidget->item(row,25+5+2)->text()).arg(ui->tableWidget->item(row,26+5+2)->text()).arg(ui->tableWidget->item(row,27+5+2)->text()).arg(ui->tableWidget->item(row,28+5+2)->text())
+                .arg(ui->tableWidget->item(row,29+5+2)->text()).arg(ui->tableWidget->item(row,30+5+2)->text()).arg(ui->tableWidget->item(row,31+5+2)->text()).arg(ui->tableWidget->item(row,32+5+2)->text()).arg(ui->tableWidget->item(row,33+5+2)->text()).arg(ui->tableWidget->item(row,34+5+2)->text())
+                .arg(ui->tableWidget->item(row,35+5+2)->text()).arg(ui->tableWidget->item(row,36+5+2)->text().toDouble()).arg(ui->tableWidget->item(row,37+5+2)->text()).arg(ui->tableWidget->item(row,38+5+2)->text().toInt()).arg(QDateTime::currentDateTime().toString("yyyy/MM/dd HH:mm:ss"));
+        qDebug()<<sql;
+        rows = changeSQL(sql);
+        if(rows > 0){
+            qDebug()<<"insert ok";
+        }else{
+            qDebug()<<"insert fail";
+        }
+
+    }
+    return rows;
+}
+
+// path 涓烘枃浠跺畬鏁磋矾寰�
+// id涓哄瓙鐩綍鍚嶅瓧
+int ThreeMergeProblemList::saveFile(QString path, QString id,QString &absSavePath,QString proName)
+{
+    // 鏍规嵁id鏉ユ寚瀹氬瓙鐩綍杩涜鏂囦欢鐨勬嫹璐濆拰瀛樺偍
+    // 榛樿淇濆瓨鍒板綋鍓峞vidence鐩綍涓嬬殑id瀛愮洰褰曚腑
+    QFile sourceFile(path);
+    if(!sourceFile.exists()){
+        qDebug()<<"target file not exist:"<<path;
+        return -1;
+    }
+
+    QString curPath = QString("./evidence/%1_%2/").arg(id).arg(proName);
+    QDir dir;
+    if(!dir.exists(curPath)){
+        // 鍒欑洿鎺ュ垱寤�
+        if(!dir.mkpath(curPath)){
+            qDebug()<<"create path fail:"<<curPath;
+            return 0; // 鍒涘缓澶辫触
+        }
+    }
+    // 鎴愬姛
+    // 寮�濮嬫嫹璐濇枃浠跺埌鎸囧畾浣嶇疆
+    QFileInfo finfo(path);
+    QString distinationPath = curPath+finfo.fileName();
+    if(sourceFile.copy(distinationPath)){
+        qDebug()<<"copy ok:"<<distinationPath;
+        absSavePath = distinationPath;
+        return 1;
+    }else{
+        qDebug()<<"copy fail:"<<distinationPath<<sourceFile.errorString();
+        return -2;
+    }
+
+}
+
+// 浣跨敤web鎶�鏈� 鍔犺浇pdf鏂囦欢
+int ThreeMergeProblemList::loadPdfFile(QString path)
+{
+//    QString dirPath = QApplication::applicationDirPath();
+//    qDebug()<<"pdf:"<<path<<dirPath;
+//    qDebug()<<QDir::currentPath();
+//    qDebug()<<path.mid(1);
+//    QString pdfJS = "file://"+QDir::currentPath()+"/web/viewer.html";
+//    QString link = "?file=";
+//    QString fullPath = pdfJS+link+QDir::currentPath()+path.mid(1);
+//    qDebug()<<"fullPath"<<fullPath;
+//    m_pdfView->page()->load(QUrl::fromUserInput(fullPath));
+
+    return 0;
+}
 void ThreeMergeProblemList::initUi()
 {
+    initProblemRectBookUi(); // 鍒濆鍖栨暣鏀瑰彴璐�
     initProblemListUi(); // 鍒濆鍖栭棶棰樻竻鍗曠晫闈�
     initProblemResultUi(); // 鍒濆鍖栭棶棰樺鐞嗙粨鏋滅晫闈�
+
+    ui->tableWidget->setRowCount(4); // 璁剧疆鍒濆琛屾暟
+    ui->tableWidget->setMinimumHeight(500);  // 鏁存敼鍙拌处
+    ui->tableWidget_2->setMinimumHeight(500); // 鏁存敼缁撴灉
+    ui->tableWidget_3->setMinimumHeight(500); // 闂娓呭崟
+
+    ui->tableWidget->setItemDelegateForColumn(1,m_fdd);
+
+    // 鑷�傚簲鎿嶄綔
+    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
+    ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
+
+    ui->tableWidget->resizeColumnsToContents();
+    ui->tableWidget->resizeRowsToContents();
+
+    // 鎺у埗琛ㄥご棰滆壊
+        // 鑷畾涔夌殑鏂瑰紡鏈夌己闄锋槸瀹规槗璁╁搴旈」閿佹
+    //m_custonHV = new CustomHeaderView(Qt::Horizontal,ui->tableWidget);
+    //ui->tableWidget->setHorizontalHeader(m_custonHV);
+
+        // 缁欐寚瀹氶」鏀硅儗鏅鑹�
+    //ui->tableWidget->horizontalHeaderItem(1)->setBackground(QBrush(Qt::red));
+    //ui->tableWidget->horizontalHeaderItem(3)->setBackground(QBrush(Qt::blue));
+
+//    QTableWidgetItem *item_1 = new QTableWidgetItem("瀹¤绫诲埆");
+//    item_1->setForeground(QBrush(QColor("#FF1493")));
+//    ui->tableWidget->setHorizontalHeaderItem(1,item_1);
+
+    for(int i=0;i<14;++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item_1 = new QTableWidgetItem(label);
+        item_1->setForeground(QBrush(QColor("#ff00ff")));
+        ui->tableWidget->setHorizontalHeaderItem(i,item_1);
+        //ui->tableWidget->setItem(1,i,item_1);
+    }
+
+    for(int i=14;i<14+10;++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item_1 = new QTableWidgetItem(label);
+        item_1->setForeground(QBrush(QColor("#00aaff")));
+        ui->tableWidget->setHorizontalHeaderItem(i,item_1);
+    }
+
+    for(int i=24;i<24+3;++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item_1 = new QTableWidgetItem(label);
+        item_1->setForeground(QBrush(QColor("#00aa00")));
+        ui->tableWidget->setHorizontalHeaderItem(i,item_1);
+    }
+
+    for(int i=27;i<27+8;++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item_1 = new QTableWidgetItem(label);
+        item_1->setForeground(QBrush(QColor("#007a50")));
+        ui->tableWidget->setHorizontalHeaderItem(i,item_1);
+    }
+
+    for(int i=35;i<35+5;++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item_1 = new QTableWidgetItem(label);
+        item_1->setForeground(QBrush(QColor("#500a50")));
+        ui->tableWidget->setHorizontalHeaderItem(i,item_1);
+    }
+
+    // 澶勭悊鍏蜂綋鏌愬垪鐨勬儏鍐�
+        // 瀹¤绫诲埆
+    QStringList nwLabels;
+    nwLabels << "鍐呭"<<"澶栧";
+    m_cbb_nw = new ComboBoxDelegate(nwLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(1,m_cbb_nw);
+
+        // 瀹¤骞村害
+    m_date_year = new DateDelegate(this);
+    ui->tableWidget->setItemDelegateForColumn(2,m_date_year);
+
+        // 瀹¤鍗曚綅
+    QStringList comLabels;
+    comLabels << "瀹¤灞�"<<"瀹¤鍘�"<<"瀹¤缃�"<<"鍏朵粬";
+    m_cbb_company = new ComboBoxDelegate(comLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(3,m_cbb_company);
+
+        // 瀹¤鏂瑰紡
+    QStringList wayLabels;
+    wayLabels << "灏卞湴瀹¤"<<"鎶ラ�佸璁�";
+    m_cbb_way = new ComboBoxDelegate(wayLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(4,m_cbb_way);
+
+        // 瀹¤椤圭洰
+    QStringList proLabels;
+    proLabels <<"  "<< "璐交钀藉疄鍥藉閲嶅ぇ鏀跨瓥鎺柦瀹¤"<<"璐㈡斂璐㈠姟鏀舵敮瀹¤"<<"鍥哄畾璧勪骇鎶曡祫瀹¤"<<"鍐呴儴鎺у埗鍜岄闄╃鐞嗗璁�"
+              <<"缁忔祹璐d换瀹¤"<<"淇℃伅绯荤粺瀹¤"<<"澧冨瀹¤"<<"鍏朵粬";
+    m_cbb_way = new ComboBoxDelegate(proLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(6,m_cbb_way);
+
+        // 瀹¤鍙戠幇闂閲戦瀹氭��
+    QStringList moneyLabels;
+    moneyLabels<<"鍏朵腑锛氱哗鏁堢被闂閲戦"<<"鍚堣鎬ч棶棰橀噾棰�"<<"鍏朵腑锛氫細璁℃牳绠楁柟闈�"<<"杩濊浣跨敤璧勯噾"<<"鎴暀銆佹矇娣�璧勯噾"<<"鎹熷け娴垂"<<"鎸敤璧勯噾"<<"鍋锋紡绋庤垂"<<"杩濊鍙栧緱鏀跺叆"<<"鍏朵粬";
+    m_cbb_money = new ComboBoxDelegate(moneyLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(12,m_cbb_money);
+
+        // 瀹¤鍙戠幇闂涓暟瀹氭��
+    QStringList cntLabels;
+    cntLabels<<"鍏朵腑锛氶噾棰濈被闂涓暟"<<"闈為噾棰濈被闂涓暟"<<"鍏朵腑锛氬浗瀹舵斂绛栨帾鏂借惤瀹炴柟闈�"<<"鍙戝睍瑙勫垝涓庢垬鐣ュ喅绛栨柟闈�"<<"鍐呴儴鎺у埗涓庨闄╃鐞嗘柟闈�"<<"鍏朵粬";
+    m_cbb_cnt = new ComboBoxDelegate(cntLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(13,m_cbb_cnt);
+
+        // 鏁存敼缁撴灉
+    QStringList resLabels;
+    resLabels<<"绔嬭鏁存敼"<<"鍒嗛樁娈垫暣鏀�"<<"灏氭湭鏁存敼";
+    m_cbb_result = new ComboBoxDelegate(resLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(20,m_cbb_result);
+
+        // 澶勫垎绫诲瀷
+    QStringList typeLabels;
+    typeLabels<<"鍏朵腑锛氬厷绾鍒�"<<"鏀垮姟澶勫垎"<<"鍐呴儴绾緥澶勫垎"<<"鏃犲鍒�";
+    m_cbb_type = new ComboBoxDelegate(typeLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(26,m_cbb_type);
+
+
+
+        // 妫�鏌ョ粨鏋�
+    QStringList checkResLabels;
+    checkResLabels<<"宸插畬鎴�"<<"鏈畬鎴�";
+    m_cbb_check_res = new ComboBoxDelegate(checkResLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(33,m_cbb_check_res);
+
+        // 閲戦绫绘暣鏀规垚鏋�
+    QStringList moneyResLabels;
+    moneyResLabels<<"鍏朵腑锛氳皟鏁翠細璁¤处鐩�"<<"鏀跺洖璧勯噾"<<"鎸藉洖鎹熷け"<<"褰掕繕鍘熻祫閲戞笭閬�"<<"琛ョ即绋庤垂"<<"鍏朵粬";
+    m_cbb_money_res = new ComboBoxDelegate(moneyResLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(42,m_cbb_money_res);
+
+        // 闈為噾棰濈被鏁存敼鎴愭灉
+    QStringList noMoneyResLabels;
+    noMoneyResLabels<<"鍏朵腑锛氭柊鍒跺畾鍒跺害"<<"淇瀹屽杽鍒跺害"<<"浼樺寲瀹屽杽涓氬姟娴佺▼"<<"鍏朵粬";
+    m_cbb_no_money_res = new ComboBoxDelegate(noMoneyResLabels,this);
+    ui->tableWidget->setItemDelegateForColumn(44,m_cbb_no_money_res);
+
+
+        // 闂鎻忚堪浣愯瘉璧勬枡(涓婁紶鍙栬瘉鍗�) 褰曞叆鎴栬�呬笂浼�
+    //ui->tableWidget->setItemDelegateForColumn(13,m_fdd);
+    QStringList fwLabels;
+    fwLabels << "褰曞叆(鐩存帴杈撳叆鍚庡洖杞﹀嵆鍙�)"<<"涓婁紶";
+    m_cbb_file_wri = new ComboBoxDelegate(fwLabels,this,true);
+    ui->tableWidget->setItemDelegateForColumn(13+2,m_cbb_file_wri);
+    ui->tableWidget->setItemDelegateForColumn(17+2,m_cbb_file_wri);
+    ui->tableWidget->setItemDelegateForColumn(23+2,m_cbb_file_wri);
+
+        // 澶勭悊骞存湀鏃ユ椂闂�
+    m_date_ymd = new DateDelegate(this,"yyyy/MM/dd");
+    ui->tableWidget->setItemDelegateForColumn(19+2,m_date_ymd);
+    ui->tableWidget->setItemDelegateForColumn(21+2,m_date_ymd);
+    ui->tableWidget->setItemDelegateForColumn(24+2+5,m_date_ymd);
+    ui->tableWidget->setItemDelegateForColumn(29+2+5,m_date_ymd);
+    ui->tableWidget->setItemDelegateForColumn(31+2+5,m_date_ymd);
+    ui->tableWidget->setItemDelegateForColumn(34+2+5,m_date_ymd);
+
+
+    // 灏嗘爣棰樺鍏ョ涓夎
+    for(int i=0;i<ui->tableWidget->columnCount();++i){
+        QString label = ui->tableWidget->horizontalHeaderItem(i)->text();
+        QTableWidgetItem *item = new QTableWidgetItem(label);
+        if(i < 16){
+            item->setBackground(QBrush(QColor("#ff00ff")));
+        }else if(i < 16+10){
+            item->setBackground(QBrush(QColor("#00aaff")));
+        }
+
+        ui->tableWidget->setItem(2,i,item);
+    }
+
+    // 骞朵笖绂佺敤缂栬緫鍔熻兘
+    //ui->tableWidget->setItemDelegateForRow(1,m_noEdit);
+    //ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    m_noEdit = new TableItemDelegate;
+    ui->tableWidget->setItemDelegateForRow(0,m_noEdit);
+    ui->tableWidget->setItemDelegateForRow(1,m_noEdit);
+    ui->tableWidget->setItemDelegateForRow(2,m_noEdit);
+
+
+    // 鍚堝苟绗竴琛岀殑鎯呭喌锛岃繘琛屽垎绫�
+
+
+    ui->tableWidget->setItem(0,1,new QTableWidgetItem("鍙戠幇闂"));
+    ui->tableWidget->setItem(0,16,new QTableWidgetItem("鏁存敼鎯呭喌"));
+    // 澶勫垎缁撴灉锛堣兘鑷姩缁熻缁煎悎瀹¤缁熻琛ㄤ腑锛氭牴鎹璁″缓璁粰浜堝厷绾�佹斂鍔″拰鍐呴儴绾緥澶勫垎锛�
+    ui->tableWidget->setItem(0,26,new QTableWidgetItem("澶勫垎缁撴灉"));
+    // 绉婚�佷俊鎭紙鑳借嚜鍔ㄧ粺璁$患鍚堝璁$粺璁¤〃涓細鍚戝徃娉曟満鍏崇Щ閫佹垨鎶ュ憡妗堜欢绾跨储锛�
+    ui->tableWidget->setItem(0,28,new QTableWidgetItem("绉婚�佷俊鎭�"));
+    ui->tableWidget->setItem(0,31,new QTableWidgetItem("鏁存敼妫�鏌ョ粨鏋�"));
+    ui->tableWidget->setItem(0,34,new QTableWidgetItem("鏁存敼绫诲瀷"));
+    ui->tableWidget->setItem(1,34,new QTableWidgetItem("宸叉暣鏀�"));
+    ui->tableWidget->setItem(1,37,new QTableWidgetItem("姝e湪鏁存敼"));
+    ui->tableWidget->setItem(1,39,new QTableWidgetItem("灏氭湭鏁存敼"));
+    ui->tableWidget->setItem(0,42,new QTableWidgetItem("鏁存敼鎴愭灉"));
+    ui->tableWidget->setItem(1,42,new QTableWidgetItem("闂鏁存敼锛堥噾棰濈被锛�"));
+    ui->tableWidget->setItem(1,44,new QTableWidgetItem("闂鏁存敼锛堥潪閲戦绫伙級"));
+
+
+    ui->tableWidget->setSpan(0,1,2,15); // 鍙戠幇闂
+    ui->tableWidget->item(0,1)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,16,2,10); // 鏁存敼鎯呭喌
+    ui->tableWidget->item(0,16)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,26,2,2); // 澶勫垎缁撴灉
+    ui->tableWidget->item(0,26)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,28,2,3); // 绉婚�佷俊鎭�
+    ui->tableWidget->item(0,28)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,31,2,3); // 鏁存敼妫�鏌ョ粨鏋�
+    ui->tableWidget->item(0,31)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,34,1,8); // 鏁存敼绫诲瀷
+    ui->tableWidget->item(0,34)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(1,34,1,3); // 宸叉暣鏀�
+    ui->tableWidget->item(1,34)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(1,37,1,2); // 姝e湪鏁存敼
+    ui->tableWidget->item(1,37)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(1,39,1,3); // 灏氭湭鏁存敼
+    ui->tableWidget->item(1,39)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(0,42,1,4); // 鏁存敼鎴愭灉
+    ui->tableWidget->item(0,42)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(1,42,1,2); // 闂鏁存敼锛堥噾棰濈被锛�
+    ui->tableWidget->item(1,42)->setTextAlignment(Qt::AlignCenter);
+
+    ui->tableWidget->setSpan(1,44,1,2); // 闂鏁存敼锛堥潪閲戦绫伙級
+    ui->tableWidget->item(1,44)->setTextAlignment(Qt::AlignCenter);
+
+
+    // 闅愯棌鍒楁爣棰�
+    ui->tableWidget->horizontalHeader()->setVisible(false);
 
     // 鍔犺浇鍏徃鍚�
     readCompanyFromSQL();
@@ -135,6 +580,7 @@
         ui->tableWidget_2->setItemDelegateForRow(i,new TableItemDelegate());
     }
 
+
     // 鍙抽敭鑿滃崟
     m_menuResult = new QMenu(this);
     m_menuResult->addAction("鍒犻櫎褰撳墠琛�");
@@ -144,6 +590,23 @@
 
     // 鍔犺浇涓嬫媺妗嗙殑鍏徃鍚�
     //readCompanyFromSQL();
+}
+
+void ThreeMergeProblemList::initProblemRectBookUi()
+{
+    // 鍙抽敭鑿滃崟
+    m_menuRectBook = new QMenu(this);
+    m_menuRectBook->addAction("鍒犻櫎褰撳墠琛�");
+    m_menuRectBook->addAction("淇濆瓨褰撳墠琛�");
+    m_menuRectBook->addAction("鏌ョ湅宸插瓨浣愯瘉");
+
+    ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
+    connect(ui->tableWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(showMenuSlotRectBook(QPoint)));
+
+    connect(m_menuRectBook->actions().at(0),SIGNAL(triggered(bool)),this,SLOT(deleteActionRectBook()));
+    connect(m_menuRectBook->actions().at(1),SIGNAL(triggered(bool)),this,SLOT(saveActionRectBook()));
+    connect(m_menuRectBook->actions().at(2),SIGNAL(triggered(bool)),this,SLOT(showSaveFile()));
+
 }
 
 void ThreeMergeProblemList::readCompanyFromSQL()
@@ -165,6 +628,68 @@
 
     }
 }
+
+void ThreeMergeProblemList::loadDataFromSQL(const QString &arg1)
+{
+    // 闂鍙拌处
+
+
+    // 闂娓呭崟
+    // 瑕佹竻闄や笂涓�瀹跺叕鍙哥殑鏁版嵁
+    ui->tableWidget_3->setRowCount(4);
+    ui->tableWidget_3->setRowCount(7);
+    // 鍔犺浇琛ㄦ牸淇℃伅
+    qDebug()<<"current :"<<arg1;
+
+    QString sql = QString("select * from problem_list_info where name='%1'").arg(arg1);
+    QSqlQuery query;
+    if(query.exec(sql)){
+        qDebug()<<QString("select problem_list_info ok");
+        int row=0;
+        while(query.next()){ // 娣诲姞琛屾暟鎹�
+            for(int i=0;i<14;++i){
+                ui->tableWidget_3->setItem(row+4,i,new QTableWidgetItem(query.value(2+i).toString()));
+            }
+            row++;
+            ui->tableWidget_3->setRowCount(ui->tableWidget_3->rowCount()+1); // 澧炲姞涓�涓柊鐨勮
+        }
+        qDebug()<<"row:"<<row;
+
+    }else{
+        qDebug()<<QString("select problem_list_info fail...")<<query.lastError().text();
+
+    }
+
+    // 闂鏁存敼缁撴灉
+    // 瑕佹竻闄や笂涓�瀹跺叕鍙哥殑鏁版嵁
+    ui->tableWidget_2->setRowCount(3);
+    ui->tableWidget_2->setRowCount(6);
+    // 鍔犺浇琛ㄦ牸淇℃伅
+    //qDebug()<<"current :"<<arg1;
+
+    sql = QString("select * from rectify_result_info where name='%1'").arg(arg1);
+    //QString sql = QString("select * from rectify_result_info where name='%1'").arg(arg1);
+    //QSqlQuery query;
+    if(query.exec(sql)){
+        qDebug()<<QString("select rectify_result_info ok");
+        int row=0;
+        while(query.next()){ // 娣诲姞琛屾暟鎹�
+            for(int i=0;i<10;++i){
+                ui->tableWidget_2->setItem(row+3,i,new QTableWidgetItem(query.value(2+i).toString()));
+            }
+            row++;
+            ui->tableWidget_2->setRowCount(ui->tableWidget_2->rowCount()+1); // 澧炲姞涓�涓柊鐨勮
+        }
+        qDebug()<<"row:"<<row;
+
+    }else{
+        qDebug()<<QString("select rectify_result_info fail...")<<query.lastError().text();
+
+    }
+
+}
+
+
 
 void ThreeMergeProblemList::showMenuSlot(QPoint)
 {
@@ -198,6 +723,72 @@
     }
 }
 
+void ThreeMergeProblemList::showMenuSlotRectBook(QPoint)
+{
+    m_menuRectBook->exec(QCursor::pos());
+}
+
+void ThreeMergeProblemList::deleteActionRectBook()
+{
+    int row = ui->tableWidget->currentRow();
+    if(row>=0){
+        qDebug()<<"delete ok";
+        ui->tableWidget->removeRow(row);
+    }else{
+        qDebug()<<"delete fail";
+    }
+}
+
+void ThreeMergeProblemList::saveActionRectBook()
+{
+    // 鍗曡淇濆瓨锛屽厛鍒ゆ柇id鍙锋槸涓嶆槸瀛樺湪锛屽瓨鍦ㄥ垯鏄洿鏂帮紝涓嶅瓨鍦ㄥ垯鏄彃鍏�
+
+    int row = ui->tableWidget->currentRow();
+    auto item = ui->tableWidget->currentItem();
+    if(row>=0 && item){
+        qDebug()<<"save ok"<< row << item->row()<<item->column();
+        int rows = saveDataLine(row);
+        if(rows>0){
+            // 闇�瑕佸皢鏂囦欢鎷疯礉鍒癷d鐩綍
+            QString fpath = ui->tableWidget->item(row,13+2)->text();
+            QString spath = ui->tableWidget->item(row,17+2)->text();
+            QString tpath = ui->tableWidget->item(row,23+2)->text();
+            QString fid = ui->tableWidget->item(row,0)->text();
+            QString proName = ui->tableWidget->item(row,7)->text(); // 椤圭洰鍚嶇О
+            qDebug()<<"鎷疯礉鏂囦欢:"<<fid<<proName<<fpath;
+
+            QString absSavePath1,absSavePath2,absSavePath3;
+
+            int sflag1 = saveFile(fpath,fid,absSavePath1,proName); // 淇濆瓨绗竴涓�
+            if(sflag1==1){
+                ui->tableWidget->setItem(row,13+2,new QTableWidgetItem(absSavePath1));
+            }
+            int sflag2 = saveFile(spath,fid,absSavePath2,proName); // 淇濆瓨绗簩涓�
+            if(sflag2==1){
+                ui->tableWidget->setItem(row,17+2,new QTableWidgetItem(absSavePath2));
+            }
+            int sflag3 = saveFile(tpath,fid,absSavePath3,proName); // 淇濆瓨绗笁涓�
+            if(sflag3==1){
+                ui->tableWidget->setItem(row,23+2,new QTableWidgetItem(absSavePath3));
+            }
+            qDebug()<<"save falg:"<<sflag1<<sflag2<<sflag3;
+            if(sflag1 || sflag2 || sflag3){
+                saveDataLine(row);
+            }
+
+            QMessageBox::information(this,"淇濆瓨鎴愬姛","鏁版嵁鍐欏叆鎴愬姛");
+        }else{
+            QMessageBox::information(this,"淇濆瓨澶辫触","鏁版嵁鍐欏叆澶辫触锛岃妫�鏌ユ槸鍚︽瘡椤归兘鏈夋暟鎹簡");
+        }
+
+
+    }else{
+        qDebug()<<"save fail";
+        QMessageBox::information(this,"淇濆瓨澶辫触","娌℃湁鎸囧畾鐩爣琛屾垨鏈夌┖椤�...璇烽�夋嫨鏈夊唴瀹圭殑鐩爣琛屼繚瀛�");
+    }
+}
+
+
 // 澧炲姞鍒扮涓�涓〃鏍肩殑琛�
 void ThreeMergeProblemList::on_pushButton_addRow_3_clicked()
 {
@@ -213,3 +804,535 @@
 {
     ui->tableWidget_2->insertRow(ui->tableWidget_2->rowCount());
 }
+
+void ThreeMergeProblemList::on_comboBox_company_currentIndexChanged(const QString &arg1)
+{
+    loadDataFromSQL(arg1);
+}
+
+void ThreeMergeProblemList::on_pushButton_save_2_clicked()
+{
+    // 闂娓呭崟淇濆瓨
+
+    QString sql = QString("insert into problem_list_info (name,搴忓彿,鎽樿,妫�鏌ユ椂闂�,妫�鏌ユ柟寮�,绾犳闂,瀹屽杽鍒跺害\
+,瀹屾垚鏃堕棿,涓昏鍘熷洜,瀹屾垚鏃堕檺,涓昏鍘熷洜1,璐d换閮ㄩ棬鎴栬矗浠讳汉,瀹屾垚鏃堕檺1,鏄惁閿�鍙�,閿�鍙锋椂闂�) values ");
+    QString name = ui->comboBox_company->currentText();
+
+    for(int i=4;i<ui->tableWidget_3->rowCount();++i){
+        QStringList labels;
+
+        for(int j=0;j<ui->tableWidget_3->columnCount();++j){
+            QTableWidgetItem *item = ui->tableWidget_3->item(i,j);;
+            qDebug() <<i<<j <<item;
+            if(item){
+                qDebug()<<"OK";
+                labels<<item->data(Qt::EditRole).toString();
+            }else{
+                labels<<" ";
+            }
+        }
+        qDebug()<<labels;
+        if(labels.at(0)==" ")continue;
+        if(name.size()==0){
+            QMessageBox::information(this,"鍗曚綅淇℃伅涓虹┖ ","璇疯緭鍏ュ崟浣嶅悕绉�");
+            continue;
+        }
+        sql += QString("('%1',").arg(name);
+        for(int k=0;k<labels.size()-1;++k){
+            sql += QString("'%1',").arg(labels[k]);
+        }
+        sql += QString("'%1'),").arg(labels.back());
+    }
+    sql = sql.left(sql.size()-1); // 鍘绘帀鏈�鍚庝竴涓�楀彿
+    qDebug()<<"sql="<<sql;
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+      qDebug()<<QString("insert  problem_list_info ok...");
+      QMessageBox::information(this,"OK","娣诲姞鎴愬姛");
+    }else{
+      qDebug()<<QString("insert problem_list_info fail...")<<query.lastError().text();
+      QMessageBox::information(this,"娣诲姞澶辫触","鍙兘娣诲姞鐨勬暟鎹笉鍏ㄥ鑷寸殑锛屽緱纭姣忚鐨勯椤规湁鏁版嵁");
+    }
+}
+
+void ThreeMergeProblemList::on_pushButton_save_clicked()
+{
+    // 闂鏁存敼淇濆瓨
+
+    QString sql = QString("insert into rectify_result_info (name,淇鍒跺害,鏂板鍒跺害,鎸藉洖鎹熷け,鍓旈櫎,瀹″噺,澶勭悊浜�,瀹h疮鍩硅,鍏朵粬,瀹℃牳缁撴灉,娉ㄩ攢) values ");
+    QString name = ui->comboBox_company->currentText();
+
+    for(int i=3;i<ui->tableWidget_2->rowCount();++i){
+        QStringList labels;
+
+        for(int j=0;j<ui->tableWidget_2->columnCount();++j){
+            QTableWidgetItem *item = ui->tableWidget_2->item(i,j);;
+            qDebug() <<i<<j <<item;
+            if(item){
+                qDebug()<<"OK";
+                labels<<item->data(Qt::EditRole).toString();
+            }else{
+                labels<<" ";
+            }
+        }
+        qDebug()<<labels;
+        if(labels.at(0)==" ")continue;
+        if(name.size()==0){
+            QMessageBox::information(this,"鍗曚綅淇℃伅涓虹┖ ","璇疯緭鍏ュ崟浣嶅悕绉�");
+            continue;
+        }
+        sql += QString("('%1',").arg(name);
+        for(int k=0;k<labels.size()-1;++k){
+            sql += QString("'%1',").arg(labels[k]);
+        }
+        sql += QString("'%1'),").arg(labels.back());
+    }
+    sql = sql.left(sql.size()-1); // 鍘绘帀鏈�鍚庝竴涓�楀彿
+    qDebug()<<"sql="<<sql;
+    QSqlQuery query;
+    if(query.exec(sql))
+    {
+      qDebug()<<QString("insert  rectify_result_info ok...");
+      QMessageBox::information(this,"OK","娣诲姞鎴愬姛");
+    }else{
+      qDebug()<<QString("insert rectify_result_info fail...")<<query.lastError().text();
+      QMessageBox::information(this,"娣诲姞澶辫触","鍙兘娣诲姞鐨勬暟鎹笉鍏ㄥ鑷寸殑锛屽緱纭姣忚鐨勯椤规湁鏁版嵁");
+    }
+}
+
+void ThreeMergeProblemList::on_pushButton_search_clicked()
+{
+    QString curText = ui->comboBox_standing_book_condt->currentText();
+
+    QString sql = "select * from standing_book_info ";
+    QString condition = "";
+    if(curText == "鍏ㄩ儴" || strcmp(curText.toLocal8Bit().data(),"鍏ㄩ儴")==0){
+        qDebug()<<"鍏ㄩ儴";
+    }else if(curText == "瀹¤绫诲埆" || strcmp(curText.toLocal8Bit().data(),"瀹¤绫诲埆")==0){
+        qDebug()<<"瀹¤绫诲埆";
+        condition = QString(" where 瀹¤绫诲埆='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "瀹¤骞村害" || strcmp(curText.toLocal8Bit().data(),"瀹¤骞村害")==0){
+        qDebug()<<"瀹¤骞村害";
+        condition = QString(" where 瀹¤骞村害='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "闂绫诲埆" || strcmp(curText.toLocal8Bit().data(),"闂绫诲埆")==0){
+        qDebug()<<"闂绫诲埆";
+        condition = QString(" where 闂绫诲埆='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "瀹¤鏂瑰紡" || strcmp(curText.toLocal8Bit().data(),"瀹¤鏂瑰紡")==0){
+        qDebug()<<"瀹¤鏂瑰紡";
+        condition = QString(" where 瀹¤鏂瑰紡='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "璐d换涓讳綋鍚嶇О" || strcmp(curText.toLocal8Bit().data(),"璐d换涓讳綋鍚嶇О")==0){
+        qDebug()<<"璐d换涓讳綋鍚嶇О";
+        condition = QString(" where 璐d换涓讳綋鍚嶇О='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "瀹¤鍗曚綅" || strcmp(curText.toLocal8Bit().data(),"瀹¤鍗曚綅")==0){
+        qDebug()<<"瀹¤鍗曚綅";
+        condition = QString(" where 瀹¤鍗曚綅='%1'").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "娑夊強閲戦" || strcmp(curText.toLocal8Bit().data(),"娑夊強閲戦")==0){
+        qDebug()<<"娑夊強閲戦";
+        condition = QString(" where 娑夊強閲戦 <=%1").arg(ui->lineEdit_sbook_condition->text());
+
+    }else if(curText == "鏁撮】閲戦" || strcmp(curText.toLocal8Bit().data(),"鏁撮】閲戦")==0){
+        qDebug()<<"鏁撮】閲戦";
+        condition = QString(" where 鏁撮】閲戦 <=%1").arg(ui->lineEdit_sbook_condition->text());
+
+    }
+
+
+    sql += condition;
+    qDebug()<<sql;
+    QVector<QVector<QString>> res;
+    int rows = selectSQL(sql,res);
+    if(rows > 0){
+        ui->tableWidget->setRowCount(rows+3);
+        for(int i=0;i<res.size();++i){
+            for(int j=0;j<res.at(0).size()-1;++j){ // 鍘绘帀璁板綍鏃堕棿
+                ui->tableWidget->setItem(i+3,j,new QTableWidgetItem(res[i][j]));
+            }
+        }
+    }else{
+        QMessageBox::information(this,"鏌ヨ澶辫触","鍙兘鏌ヨ鐨勫唴瀹逛笉姝g‘鎴栬�呮病鏈夎褰曠浉搴旂殑鏁版嵁");
+    }
+
+}
+
+void ThreeMergeProblemList::on_pushButton_save_3_clicked()
+{
+    int hasContentRow=0;
+    for(int i=3;i<ui->tableWidget->rowCount();++i){
+        int row = saveDataLine(i);
+        if(row > 0) {
+            hasContentRow++;
+
+            // 闇�瑕佸皢鏂囦欢鎷疯礉鍒癷d鐩綍
+            QString fpath = ui->tableWidget->item(i,13+2)->text();
+            QString spath = ui->tableWidget->item(i,17+2)->text();
+            QString tpath = ui->tableWidget->item(i,23+2)->text();
+            QString fid = ui->tableWidget->item(i,0)->text();
+            QString proName = ui->tableWidget->item(i,7)->text(); // 椤圭洰鍚嶇О
+            qDebug()<<"鎷疯礉鏂囦欢:"<<fid<<proName<<fpath;
+
+            QString absSavePath1,absSavePath2,absSavePath3;
+
+            int sflag1 = saveFile(fpath,fid,absSavePath1,proName); // 淇濆瓨绗竴涓�
+            if(sflag1==1){
+                ui->tableWidget->setItem(i,13+2,new QTableWidgetItem(absSavePath1));
+            }
+            int sflag2 = saveFile(spath,fid,absSavePath2,proName); // 淇濆瓨绗簩涓�
+            if(sflag2==1){
+                ui->tableWidget->setItem(i,17+2,new QTableWidgetItem(absSavePath2));
+            }
+            int sflag3 = saveFile(tpath,fid,absSavePath3,proName); // 淇濆瓨绗笁涓�
+            if(sflag3==1){
+                ui->tableWidget->setItem(i,23+2,new QTableWidgetItem(absSavePath3));
+            }
+            qDebug()<<"save falg:"<<sflag1<<sflag2<<sflag3;
+            if(sflag1 || sflag2 || sflag3){
+                saveDataLine(i);
+            }
+
+        }
+    }
+    QMessageBox::information(this,"淇濆瓨鎻愮ず",QString("鎬昏鏁颁负%1,鎴愬姛%2琛岋紝澶辫触%3琛屻��").arg(ui->tableWidget->rowCount()-3)
+                             .arg(hasContentRow).arg(ui->tableWidget->rowCount()-3-hasContentRow));
+}
+
+void ThreeMergeProblemList::on_pushButton_moreSearch_clicked()
+{
+    QString sql = "select * from standing_book_info ";
+
+    QVector<QString> vecCon; // 淇濆瓨鎵�鏈夋潯浠�
+
+    if(ui->checkBox_type->isChecked()){
+        QString condition= QString(" 瀹¤绫诲埆='%1' ").arg(ui->comboBox_type->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_year->isChecked()){
+        QString condition= QString(" 瀹¤骞村害='%1' ").arg(ui->dateEdit_year->text());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_com->isChecked()){
+        QString condition= QString(" 瀹¤鍗曚綅='%1' ").arg(ui->comboBox_com->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_way->isChecked()){
+        QString condition= QString(" 瀹¤鏂瑰紡='%1' ").arg(ui->comboBox_way->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_mainCom->isChecked()){
+        QString condition= QString(" 璐d换涓讳綋鍚嶇О='%1' ").arg(ui->comboBox_mainCom->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_pro->isChecked()){
+        QString condition= QString(" 瀹¤椤圭洰='%1' ").arg(ui->comboBox_pro->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_proName->isChecked()){
+        QString condition= QString(" 瀹¤椤圭洰鍚嶇О='%1' ").arg(ui->comboBox_proName->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_qtype->isChecked()){
+        QString condition= QString(" 闂绫诲埆='%1' ").arg(ui->comboBox_qtype->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_qdx->isChecked()){
+        QString condition= QString(" 闂瀹氭��='%1'").arg(ui->comboBox_qdx->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_about_money->isChecked()){
+        QString condition= QString(" 娑夊強閲戦 >= %1 and 娑夊強閲戦 <= %2").arg(ui->comboBox_about_bgMonney->currentText()).arg(ui->comboBox_about_edMoney->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_changeMoney->isChecked()){
+        QString condition= QString(" 鏁存敼閲戦>=%1 and 鏁存敼閲戦<=%2").arg(ui->comboBox_change_bgMoney->currentText()).arg(ui->comboBox_change_edMoney->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_change_over_time->isChecked()){
+        QString condition= QString(" 鏁存敼瀹屾垚鏃堕棿='%1' ").arg(ui->dateEdit_change_over_time->text());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_change_expected_time->isChecked()){
+        QString condition= QString(" 鏁存敼棰勮瀹屾垚鏃堕棿='%1' ").arg(ui->dateEdit_change_expected_time->text());
+        vecCon.append(condition);
+    }
+
+    if(ui->checkBox_punish_type->isChecked()){
+        QString condition= QString(" 澶勫垎绫诲瀷='%1' ").arg(ui->comboBox_punish_type->currentText());
+        vecCon.append(condition);
+    }
+    if(ui->checkBox_transfer->isChecked()){
+        QString condition= QString(" 绉婚�佽缁嗕俊鎭�='%1' ").arg(ui->comboBox_transfer->currentText());
+        vecCon.append(condition);
+    }
+
+
+    QString condition;
+    if(vecCon.size() == 1){
+        condition += QString(" where %1").arg(vecCon.at(0));
+    }else if(vecCon.size() > 1){
+        condition += QString(" where %1").arg(vecCon.at(0));
+        for(int i=1;i<vecCon.size();++i){
+            condition += QString(" and %1 ").arg(vecCon.at(i));
+        }
+    }
+    sql += condition;
+    qDebug()<<sql;
+
+    QVector<QVector<QString>> res;
+    int rows = selectSQL(sql,res);
+    if(rows > 0){
+        ui->tableWidget->setRowCount(rows+3);
+        for(int i=0;i<res.size();++i){
+            for(int j=0;j<res.at(0).size()-1;++j){ // 鍘绘帀璁板綍鏃堕棿
+                ui->tableWidget->setItem(i+3,j,new QTableWidgetItem(res[i][j]));
+            }
+        }
+    }else{
+        QMessageBox::information(this,"鏌ヨ澶辫触","鍙兘鏌ヨ鐨勫唴瀹逛笉姝g‘鎴栬�呮病鏈夎褰曠浉搴旂殑鏁版嵁");
+    }
+
+}
+
+void ThreeMergeProblemList::on_pushButton_multiSearch_clicked()
+{
+    static int cnt=0;
+    if(cnt%2 == 1){
+        ui->groupBox->hide();
+        ui->pushButton_multiSearch->setText("澶氱淮搴︽暟鎹煡璇煈�");
+    }else{
+        ui->groupBox->show();
+        ui->pushButton_multiSearch->setText("澶氱淮搴︽暟鎹煡璇煈�");
+    }
+    cnt++;
+}
+
+void ThreeMergeProblemList::showSaveFile()
+{
+    int row = ui->tableWidget->currentRow();
+    auto item = ui->tableWidget->currentItem();
+    if(row>=0 && item){
+        qDebug()<<"row"<<row;
+        // 鍙栦笅鏍�  13  17  23
+        auto item_13 = ui->tableWidget->item(row,13+2);
+        auto item_17 = ui->tableWidget->item(row,17+2);
+        auto item_23 = ui->tableWidget->item(row,23+2);
+        if(item_13){
+            qDebug()<<item_13->text();
+            QString text = item_13->text();
+            QStringList listPath = text.split("/");
+            if(listPath.size() > 2){
+                qDebug()<<"鍙戠幇鏂囦欢"<<listPath.back();
+                QString type = listPath.back().split(".").back();
+                qDebug()<<"type"<<type;
+                if(type == "pdf"){
+                    loadPdfFile(text);
+                }
+            }
+        }
+        if(item_17){
+            qDebug()<<item_17->text();
+        }
+        if(item_23){
+            qDebug()<<item_23->text();
+        }
+    }
+
+    // 浠ョ郴缁熼粯璁ょ殑鏂瑰紡鎵撳紑鎸囧畾鐨勬枃浠�
+    QUrl file_path = QFileDialog::getOpenFileUrl();
+    if(QDesktopServices::openUrl(file_path)){
+        qDebug()<<"open ok:"<<file_path;
+    }else{
+        qDebug()<<"open fail:"<<file_path;
+    }
+}
+
+void ThreeMergeProblemList::updateComboList(QMap<QString, ComInfo> & nameAndComInfos)
+{
+    ui->comboBox_company->clear();
+
+    for(auto it = nameAndComInfos.begin();it != nameAndComInfos.end();++it){
+        ui->comboBox_company->addItem(it.key());
+    }
+}
+
+void ThreeMergeProblemList::on_pushButton_save_export_clicked()
+{
+    qDebug()<<"涓夊悎涓�瀵煎嚭淇濆瓨";
+    QVector<ThreeMergeInfo> infos;
+    QString name = ui->comboBox_company->currentText();
+
+    // 鑾峰彇琛ㄦ牸鏁版嵁锛屾坊鍔犲埌淇℃伅涓�
+    for(int i=3;i<ui->tableWidget->rowCount();++i){ // 浠庣涓夎寮�濮�
+
+        // 鍏堝绌洪」杩涜鐗规畩澶勭悊
+        for(int j=0;j<ui->tableWidget->columnCount();++j){
+            if(ui->tableWidget->item(i,j) == nullptr){
+                ui->tableWidget->setItem(i,j,new QTableWidgetItem(" "));
+                qDebug()<<"save find out empty:"<<i<<j;
+            }
+        }
+        ThreeMergeInfo rowInfo;
+        rowInfo.id = ui->tableWidget->item(i,0)->text().toInt();
+        // 鍙戠幇闂
+        strcpy(rowInfo.audit_type,ui->tableWidget->item(i,1)->text().toLocal8Bit().data());
+        strcpy(rowInfo.audit_year,ui->tableWidget->item(i,2)->text().toLocal8Bit().data());
+        strcpy(rowInfo.audit_unit,ui->tableWidget->item(i,3)->text().toLocal8Bit().data());
+        strcpy(rowInfo.audit_method,ui->tableWidget->item(i,4)->text().toLocal8Bit().data());
+        strcpy(rowInfo.responsible_subject_name,ui->tableWidget->item(i,5)->text().toLocal8Bit().data());
+        strcpy(rowInfo.audit_item,ui->tableWidget->item(i,6)->text().toLocal8Bit().data());
+        strcpy(rowInfo.audit_item_name,ui->tableWidget->item(i,7)->text().toLocal8Bit().data());
+        strcpy(rowInfo.pro_type,ui->tableWidget->item(i,8)->text().toLocal8Bit().data());
+        strcpy(rowInfo.problem_qualification,ui->tableWidget->item(i,9)->text().toLocal8Bit().data());
+        strcpy(rowInfo.problem_desript,ui->tableWidget->item(i,10)->text().toLocal8Bit().data());
+        strcpy(rowInfo.problem_qualifi_basis,ui->tableWidget->item(i,11)->text().toLocal8Bit().data());
+        strcpy(rowInfo.problem_money_basis,ui->tableWidget->item(i,12)->text().toLocal8Bit().data());
+        strcpy(rowInfo.problem_num_basis,ui->tableWidget->item(i,13)->text().toLocal8Bit().data());
+        rowInfo.money_involved = ui->tableWidget->item(i,14)->text().toDouble();
+        strcpy(rowInfo.problem_desript_evidence_material,ui->tableWidget->item(i,15)->text().toLocal8Bit().data());
+
+        // 鏁存敼鎯呭喌
+        strcpy(rowInfo.audit_rectified,ui->tableWidget->item(i,16)->text().toLocal8Bit().data());
+        rowInfo.rectify_money = ui->tableWidget->item(i,17)->text().toDouble();
+        strcpy(rowInfo.rectify_situation_1,ui->tableWidget->item(i,18)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_situation_evidence_mat_1,ui->tableWidget->item(i,19)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_res,ui->tableWidget->item(i,20)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_complete_time,ui->tableWidget->item(i,21)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_not_over_reason,ui->tableWidget->item(i,22)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_will_complete_time,ui->tableWidget->item(i,23)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_situation_2,ui->tableWidget->item(i,24)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_situation_evidence_mat_2,ui->tableWidget->item(i,25)->text().toLocal8Bit().data());
+
+        // 澶勫垎缁撴灉
+        strcpy(rowInfo.punish_type,ui->tableWidget->item(i,26)->text().toLocal8Bit().data());
+        rowInfo.punish_person_num = ui->tableWidget->item(i,27)->text().toInt();
+
+        // 绉婚�佷俊鎭�
+        strcpy(rowInfo.transfer_info,ui->tableWidget->item(i,28)->text().toLocal8Bit().data());
+        strcpy(rowInfo.punish_res,ui->tableWidget->item(i,29)->text().toLocal8Bit().data());
+        rowInfo.involved_person_num = ui->tableWidget->item(i,30)->text().toInt();
+
+        // 鏁翠釜妫�鏌ョ粨鏋�
+        strcpy(rowInfo.rectify_check_time,ui->tableWidget->item(i,31)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_check_mothod,ui->tableWidget->item(i,32)->text().toLocal8Bit().data());
+        strcpy(rowInfo.rectify_check_res,ui->tableWidget->item(i,33)->text().toLocal8Bit().data());
+
+        // 鏁存敼绫诲瀷-宸叉暣鏀�
+        strcpy(rowInfo.correct_problem,ui->tableWidget->item(i,34)->text().toLocal8Bit().data());
+        strcpy(rowInfo.improve_the_system,ui->tableWidget->item(i,35)->text().toLocal8Bit().data());
+        strcpy(rowInfo.complete_time,ui->tableWidget->item(i,36)->text().toLocal8Bit().data());
+
+        // 鏁存敼绫诲瀷-姝e湪鏁存敼
+        strcpy(rowInfo.during_main_reason,ui->tableWidget->item(i,37)->text().toLocal8Bit().data());
+        strcpy(rowInfo.during_end_complete_time,ui->tableWidget->item(i,38)->text().toLocal8Bit().data());
+
+        // 鏁存敼绫诲瀷-灏氭湭鏁存敼
+        strcpy(rowInfo.not_main_reason,ui->tableWidget->item(i,39)->text().toLocal8Bit().data());
+        strcpy(rowInfo.departen_or_person,ui->tableWidget->item(i,40)->text().toLocal8Bit().data());
+        strcpy(rowInfo.not_end_complete_time,ui->tableWidget->item(i,41)->text().toLocal8Bit().data());
+
+        // 鏁存敼缁撴灉-闂鏁存敼锛堥噾棰濈被锛�
+        strcpy(rowInfo.money_res,ui->tableWidget->item(i,42)->text().toLocal8Bit().data());
+        rowInfo.money_res_money = ui->tableWidget->item(i,43)->text().toDouble();
+
+        // 鏁存敼缁撴灉-闂鏁存敼锛堥潪閲戦绫伙級
+        strcpy(rowInfo.no_money_res,ui->tableWidget->item(i,44)->text().toLocal8Bit().data());
+        rowInfo.no_money_res_num = ui->tableWidget->item(i,45)->text().toInt();
+
+        // 鏀惧埌vector涓�
+        infos.append(rowInfo);
+
+    }
+
+
+    ExportToFile etf;
+    etf.saveToExcelFromThreeMergePro(name,infos);
+}
+
+void ThreeMergeProblemList::on_tableWidget_cellChanged(int row, int column)
+{
+    qDebug()<<"cellChanged:"<<row<<column;
+    QTableWidgetItem *item = ui->tableWidget->item(row,5);
+    if(row < 3 || !item) return; // 闃叉寮傚父
+    if(column == 26) // 琛ㄧず鏄鍒嗙被鍨嬭淇敼浜嗭紝閭e氨鍙互鑷姩鍘昏幏鍙栨暟鎹簱涓殑鏁版嵁鍑烘潵锛屽悓姝ュ埌鍚屼竴琛屽幓浜�
+    {
+        QString rectify_type = ui->tableWidget->item(row,column)->text();
+        QString name = ui->tableWidget->item(row,5)->text();
+        QMap<QString,QString> typeInfos;
+        typeInfos["鍏朵腑锛氬厷绾鍒�"] = "_030901";
+        typeInfos["鏀垮姟澶勫垎"] = "_030902";
+        typeInfos["鍐呴儴绾緥澶勫垎"] = "_030903";
+
+        QString sql = QString("select %1,_031001 from comprehensive_entry_info where name='%2'").arg(typeInfos[rectify_type]).arg(name);
+        qDebug()<<"sql:"<<sql;
+        QSqlQuery query;
+        if(query.exec(sql)){
+            qDebug()<<"鎵ц鎴愭灉锛岃褰曠粨鏋� 澶勫垎绫诲瀷:"<<rectify_type;
+            int cnt=0;
+            int involved_person_cnt = 0;
+            while(query.next()){
+                cnt += query.value(0).toInt();
+                involved_person_cnt += query.value(1).toInt();
+            }
+            qDebug()<<"鏌ュ埌cnt="<<cnt <<" 娑夋浜哄憳:"<<involved_person_cnt;
+            ui->tableWidget->setItem(row,27,new QTableWidgetItem(QString::number(cnt)));
+            ui->tableWidget->setItem(row,30,new QTableWidgetItem(QString::number(involved_person_cnt)));
+        }else {
+            qDebug()<<"鏌ヨ澶辫触 澶勫垎绫诲瀷"<<rectify_type;
+        }
+
+    }else if(column == 42) // 琛ㄧず鏄噾棰濈被鏁存敼鎴愭灉瑙﹀彂浜�
+    {
+        QMap<QString,QString> moneyInfos;
+        moneyInfos["鍏朵腑锛氳皟鏁翠細璁¤处鐩�"] = "_030701";
+        moneyInfos["鏀跺洖璧勯噾"] = "_030702";
+        moneyInfos["鎸藉洖鎹熷け"] = "_030703";
+        moneyInfos["褰掕繕鍘熻祫閲戞笭閬�"] = "_030704";
+        moneyInfos["琛ョ即绋庤垂"] = "_030705";
+        moneyInfos["鍏朵粬"] = "_030706";
+
+        QString currentText = ui->tableWidget->item(row,42)->text();
+        QString name = ui->tableWidget->item(row,5)->text();
+        QString sql = QString("select %1 from comprehensive_entry_info where name='%2'").arg(moneyInfos[currentText]).arg(name);
+        qDebug()<<"sql:"<<sql;
+        QSqlQuery query;
+        if(query.exec(sql)){
+            double cnt=0;
+            while (query.next()) {
+                cnt += query.value(0).toDouble();
+            }
+            ui->tableWidget->setItem(row,43,new QTableWidgetItem(QString::number(cnt)));
+        }else{
+            qDebug()<<"鎵цsql澶辫触 瀹¤鍙戠幇闂鏁存敼锛堥噾棰濈被锛�";
+        }
+
+
+    }else if(column == 44) // 琛ㄧず鏄潪閲戦绫绘暣鏀规垚鏋滆Е鍙戜簡
+    {
+
+        QMap<QString,QString> noMoneyInfos;
+        noMoneyInfos["鍏朵腑锛氭柊鍒跺畾鍒跺害"] = "_030801";
+        noMoneyInfos["淇瀹屽杽鍒跺害"] = "_030802";
+        noMoneyInfos["浼樺寲瀹屽杽涓氬姟娴佺▼"] = "_030803";
+        noMoneyInfos["鍏朵粬"] = "_030804";
+
+        QString currentText = ui->tableWidget->item(row,44)->text();
+        QString name = ui->tableWidget->item(row,5)->text();
+        QString sql = QString("select %1 from comprehensive_entry_info where name='%2'").arg(noMoneyInfos[currentText]).arg(name);
+        qDebug()<<"sql:"<<sql;
+        QSqlQuery query;
+        if(query.exec(sql)){
+            int cnt=0;
+            while (query.next()) {
+                cnt += query.value(0).toInt();
+            }
+            ui->tableWidget->setItem(row,45,new QTableWidgetItem(QString::number(cnt)));
+        }else{
+            qDebug()<<"鎵цsql澶辫触 瀹¤鍙戠幇闂鏁存敼锛堥噾棰濈被锛�";
+        }
+    }
+}

--
Gitblit v1.8.0