wumu
2024-11-15 3742570d134bf007c454413fc834e15b4f8843e8
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
#include "searchinfo.h"
#include "ui_searchinfo.h"
#include <QAxObject>
#include <QDebug>
#include <QDir>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
#include <QFileDialog>
#include <QCalendarWidget>
 
#pragma execution_character_set("utf-8")
 
SearchInfo::SearchInfo(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::SearchInfo)
{
    ui->setupUi(this);
//    ui->label_2->hide();
//    ui->label_3->hide();
//    ui->dateTimeEdit->hide();
//    ui->dateTimeEdit_2->hide();
    ui->dateEdit_begin->calendarWidget()->setStyleSheet("background-color:#deab8a");
    ui->dateEdit_end->calendarWidget()->setStyleSheet("background-color:pink");
    ui->dateEdit_end->setDate(QDate::currentDate());
 
    m_model = new QStandardItemModel(this);
    ui->tableView->setModel(m_model);
    ui->tableView->verticalHeader()->setVisible(false); // 隐藏行头
    m_model->setColumnCount(5);
    QStringList labels;
    labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"<<"审计时间";
    m_model->setHorizontalHeaderLabels(labels);
    if(QSqlDatabase::contains("qt_sql_default_connection")){
        m_db = QSqlDatabase::addDatabase("qt_sql_default_connection");
    }else{
        m_db = QSqlDatabase::addDatabase("QSQLITE");
    }
    m_db.setDatabaseName("sqlData.db");
    if(m_db.open()){
        qDebug()<<"db open ok";
        createSqlite();
        //m_db.close();
        searchComName(); // 查询公司名
    }else{
        qDebug()<<"db open fail";
    }
    // 设置表格列标签
    setLabels();
 
}
 
SearchInfo::~SearchInfo()
{
    m_db.close();
    delete ui;
}
 
void SearchInfo::createSqlite()
{
    // 建表
    QString sql = "create table Internal_1 (id int primary key, name varchar(30), _020100 int)";
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<"create Internal_1 ok...";
    }else{
        qDebug()<<"create Internal_1 fail..."<<query.lastError().text();
    }
 
    sql = "CREATE TABLE file_up_info (\
            id      INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name    VARCHAR (30),\
            code    TEXT,\
            up_time TEXT\
        )";
    if(query.exec(sql))
    {
        qDebug()<<"create file_up_info ok...";
    }else{
        qDebug()<<"create file_up_info fail..."<<query.lastError().text();
    }
 
    sql = "CREATE TABLE company_info (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            code     VARCHAR (30),\
            机构类型     TEXT,\
            主要业务活动   TEXT,\
            行业代码     TEXT,\
            单位注册地及区域 TEXT,\
            区域代码     TEXT,\
            城乡代码     TEXT,\
            单位规模     TEXT,\
            从业期末人数   TEXT,\
            法定代表人    TEXT,\
            执行会记标准类别 TEXT,\
            长途区号     TEXT,\
            固定电话     TEXT,\
            邮政编码     TEXT,\
            电子邮箱     TEXT,\
            网址       TEXT\
        )";
    if(query.exec(sql))
    {
        qDebug()<<"create company_info ok...";
    }else{
        qDebug()<<"create company_info fail..."<<query.lastError().text();
    }
 
    // 审计项目表
    createTableNoEvidences("audit_project");
    m_itemAndTable["审计项目"] = "audit_project";
 
    // 内审工作量表
    createTableNoEvidences("audit_workload");
    m_itemAndTable["内审工作量"] = "audit_workload";
 
    // 问题金额表
    createTableHasEvidences("problem_money");
    m_itemAndTable["问题金额"] = "problem_money";
 
    // 问题个数表
    createTableHasEvidences("problem_count");
    m_itemAndTable["问题个数"] = "problem_count";
    // 问题整改表
    createTableHasEvidences("problem_rectification");
    m_itemAndTable["问题整改"] = "problem_rectification";
 
    // 问题整改--非金额表
    createTableHasEvidences("problem_no_money");
    m_itemAndTable["问题整改--非金额"] = "problem_no_money";
 
    // 处分表
    createTableNoEvidences("punish");
    m_itemAndTable["处分"] = "punish";
 
    // 案件线索表
    createTableHasUnit("case_clue");
    m_itemAndTable["案件线索"] = "case_clue";
 
    // 单位的所有信息表  创建
    createTableAllComInfo("all_company_info");
 
    // 整改结果信息表 创建
    createTableRectifyResultInfo("rectify_result_info");
 
    // 问题清单信息表 创建
    createTableProblemListInfo("problem_list_info");
 
    // 综合录入信息表 创建
    createTableComprehensiveEntryInfo("comprehensive_entry_info");
 
    // 整改台账信息表 创建
    createTableStandingBook("standing_book_info");
 
}
 
// 综合录入信息表 以编码作为指标名
void SearchInfo::createTableComprehensiveEntryInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            _030000     TEXT,\
            _030001     TEXT,\
            _030100     TEXT,\
            _030101     TEXT,\
            _030200     TEXT,\
            _030210     TEXT,\
            _030220     TEXT,\
            _030221     TEXT,\
            _030222     TEXT,\
            _030223     TEXT,\
            _030230     TEXT,\
            _030231     TEXT,\
            _030232     TEXT,\
            _030233     TEXT,\
            _030234     TEXT,\
            _030240     TEXT,\
            _030241     TEXT,\
            _030242     TEXT,\
            _030243     TEXT,\
            _030250     TEXT,\
            _030251     TEXT,\
            _030252     TEXT,\
            _030253     TEXT,\
            _030254     TEXT,\
            _030255     TEXT,\
            _030256     TEXT,\
            _030257     TEXT,\
            _030258     TEXT,\
            _030260     TEXT,\
            _030300     TEXT,\
            _030301     TEXT,\
            _030302     TEXT,\
            _030303     TEXT,\
            _030304     TEXT,\
            _030305     TEXT,\
            _030306     TEXT,\
            _030307     TEXT,\
            _030308     TEXT,\
            _030310     TEXT,\
            _030400     TEXT,\
            _030500     TEXT,\
            _030510     TEXT,\
            _030520     TEXT,\
            _030521     TEXT,\
            _030522     TEXT,\
            _030523     TEXT,\
            _030524     TEXT,\
            _030525     TEXT,\
            _030526     TEXT,\
            _030527     TEXT,\
            _030528     TEXT,\
          _030600     TEXT,\
          _030610     TEXT,\
          _030620     TEXT,\
          _030621     TEXT,\
          _030622     TEXT,\
          _030623     TEXT,\
          _030624     TEXT,\
          _030700     TEXT,\
          _030701     TEXT,\
          _030702     TEXT,\
          _030703     TEXT,\
          _030704     TEXT,\
          _030705     TEXT,\
          _030706     TEXT,\
          _030800     TEXT,\
          _030801     TEXT,\
          _030802     TEXT,\
          _030803     TEXT,\
          _030804     TEXT,\
            _030900     TEXT,\
            _030901     TEXT,\
            _030902     TEXT,\
            _030903     TEXT,\
            _031000     TEXT,\
            _031001     TEXT,\
            company_type     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
 
// 整改结果信息表
void SearchInfo::createTableRectifyResultInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            修订制度     TEXT,\
            新增制度     TEXT,\
            挽回损失     TEXT,\
            剔除     TEXT,\
            审减     TEXT,\
            处理人     TEXT,\
            宣贯培训     TEXT,\
            其他     TEXT,\
            审核结果     TEXT,\
            注销     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
 
}
 
// 问题清单信息表
void SearchInfo::createTableProblemListInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            序号     TEXT,\
            摘要     TEXT,\
            检查时间     TEXT,\
            检查方式     TEXT,\
            纠正问题     TEXT,\
            完善制度     TEXT,\
            完成时间     TEXT,\
            主要原因     TEXT,\
            完成时限     TEXT,\
            主要原因1     TEXT,\
            责任部门或责任人     TEXT,\
            完成时限1     TEXT,\
            是否销号     TEXT,\
            销号时间     TEXT)").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
      qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
      qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
 
}
 
// 单位信息表 全
void SearchInfo::createTableAllComInfo(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            name     VARCHAR (30),\
            code     VARCHAR (30),\
            机构类型     TEXT,\
            主要业务活动   TEXT,\
            行业代码     TEXT,\
            单位注册地及区域 TEXT,\
            区域代码     TEXT,\
            城乡代码     TEXT,\
            单位规模     TEXT,\
            从业期末人数   TEXT,\
            法定代表人    TEXT,\
            执行会记标准类别 TEXT,\
            长途区号     TEXT,\
            固定电话     TEXT,\
            邮政编码     TEXT,\
            电子邮箱     TEXT,\
            网址       TEXT,\
            是否有上一级法人       TEXT,\
            上一级统信代码       TEXT,\
            原组织代码       TEXT,\
            上级单位名称       TEXT,\
            是否设置总审计师       TEXT,\
            总审计师职位层级       TEXT,\
            总审任职方式       TEXT,\
            是否设置内审机构       TEXT,\
            内审机构名称       TEXT,\
            领导机构       TEXT,\
            是否独立设置内审机构       TEXT,\
            财务部门       INTEGER,\
            法务部门       INTEGER,\
            内部控制部门       INTEGER,\
            纪检部门       INTEGER,\
            其他部门       INTEGER,\
            内审层级       TEXT,\
            编制数量       INTEGER,\
            实有人数量       INTEGER,\
            专职人员数量       INTEGER,\
            拥有CIA人数       INTEGER,\
            硕士学历以上人数       INTEGER,\
            本科人数       INTEGER,\
            专科及以下人数       INTEGER,\
            高级职称人数       INTEGER,\
            中级职称人数       INTEGER,\
            初级职称人数       INTEGER,\
            无职称人数       INTEGER,\
            五十岁以上人数       INTEGER,\
            三十至五十岁岁人数       INTEGER,\
            三十岁以下人数       INTEGER,\
            审计数量       INTEGER,\
            会计数量       INTEGER,\
            经济数量       INTEGER,\
            法律数量       INTEGER,\
            管理数量       INTEGER,\
            信息技术数量       INTEGER,\
            工程数量       INTEGER,\
            其他数量       INTEGER,\
            统计负责人       TEXT,\
            填表人       TEXT,\
            联系电话       TEXT,\
            填报日期       TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
// 整改台账
void SearchInfo::createTableStandingBook(QString tableName){
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER      PRIMARY KEY AUTOINCREMENT,\
            审计类别     TEXT,\
            审计年度     TEXT,\
            审计单位     TEXT,\
            审计方式     TEXT,\
            责任主体名称     TEXT,\
            审计项目     TEXT,\
            审计项目名称     TEXT,\
            问题类别     TEXT,\
            问题定性     TEXT,\
            问题描述     TEXT,\
            问题定性法规依据     TEXT,\
            涉及金额     REAL,\
            问题描述佐证资料     TEXT,\
            审计期间已整改     TEXT,\
            整改金额     REAL,\
            整改情况1     TEXT,\
            整改情况佐证资料1     TEXT,\
            整改结果     TEXT,\
            整改完成时间     TEXT,\
            尚未整改到位的原因     TEXT,\
            整改预计完成时间     TEXT,\
            整改情况2     TEXT,\
            整改情况佐证资料2     TEXT,\
            整改检查结果_检查时间     TEXT,\
            整改检查结果_检查方式     TEXT,\
            整改检查结果_检查结果     TEXT,\
            已整改_纠正问题     TEXT,\
            已整改_完善制度     TEXT,\
            已整改_完成时间     TEXT,\
            正在整改_主要原因     TEXT,\
            正在整改_完成时限     TEXT,\
            尚未整改_主要原因     TEXT,\
            尚未整改_责任部门或责任人     TEXT,\
            尚未整改_完成时限     TEXT,\
            制度建设_修订制度     TEXT,\
            制度建设_新增制度     TEXT,\
            资金收回_挽回损失     TEXT,\
            资金收回_其他     TEXT,\
            资金收回_审减     TEXT,\
            log_time  TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
void SearchInfo::createTableHasEvidences(QString tableName)
{
    QString sql =QString( "CREATE TABLE %1 ( \
            id        INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name  TEXT,\
            code      TEXT,\
            num       INTEGER,\
            evidences TEXT,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
void SearchInfo::createTableNoEvidences(QString tableName)
{
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name TEXT,\
            code     TEXT,\
            num      INTEGER,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
void SearchInfo::createTableHasUnit(QString tableName)
{
    QString sql = QString("CREATE TABLE %1 (\
            id       INTEGER PRIMARY KEY AUTOINCREMENT,\
            kpi_name TEXT,\
            code     TEXT,\
            unit     TEXT,\
            num      INTEGER,\
            com_id  INTEGER,\
            time     TEXT\
        )").arg(tableName);
    QSqlQuery query;
    if(query.exec(sql))
    {
        qDebug()<<QString("create %1 ok...").arg(tableName);
    }else{
        qDebug()<<QString("create %1 fail...").arg(tableName)<<query.lastError().text();
    }
}
 
void SearchInfo::searchComName()
{
    QSqlQuery query;
    QString sql = QString("select id,name,code from company_info");
    if(query.exec(sql)){
        qDebug()<<"size:"<<query.numRowsAffected();
        while(query.next()){
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            QString code = query.value(2).toString();
            qDebug()<<"com select:"<<id<<name;
            m_comInfo[name] = id;
            m_comCode[name] = code;
            ui->comboBox_company->addItem(name);
        }
    }
}
 
QVector<QVector<QString>> SearchInfo::getResult(QString &sql,int colCnt)
{
    QVector<QVector<QString>> resultSet;
    QSqlQuery query;
    qDebug()<<sql;
    if(query.exec(sql)){
        while (query.next()) {
            QVector<QString> tmp;
            for(int i=0;i<colCnt;++i){
                tmp.push_back(query.value(i).toString());
            }
            resultSet.append(tmp);
        }
    }
    return resultSet;
}
 
void SearchInfo::setLabels()
{
    QStringList labels,labels2,labels3;
    labels<<"ID"<<"指标名称"<<"代码"<<"数量"<<"公司编号"<<"审计时间"<<" ";
    labels2<<"ID"<<"指标名称"<<"代码"<<"单位"<<"数量"<<"公司编号"<<"审计时间";
    labels3<<"ID"<<"指标名称"<<"代码"<<"数量"<<"佐证"<<"公司编号"<<"审计时间";
    m_labels["审计项目"] = labels;
    m_labels["内审工作量"] = labels;
    m_labels["问题金额"] = labels3;
    m_labels["问题个数"] = labels3;
    m_labels["问题整改"] = labels3;
    m_labels["问题整改--非金额"] = labels3;
    m_labels["处分"] = labels;
    m_labels["案件线索"] = labels2;
}
 
void SearchInfo::on_pushButton_search_clicked()
{
    // 获取信息,然后查询
    QString item = ui->comboBox->currentText();
    QString comName = ui->comboBox_company->currentText();
    QString sql = QString("select * from %1 where com_id=%2").arg(m_itemAndTable[item]).arg(m_comInfo[comName]);
    if(ui->checkBox->isChecked()){ // 勾选之后
        sql = QString("select * from %1 where com_id=%2 and time between '%3' and '%4'").arg(m_itemAndTable[item]).arg(m_comInfo[comName])
                .arg(ui->dateEdit_begin->date().toString("yyyy-MM-dd"))
                .arg(ui->dateEdit_end->date().toString("yyyy-MM-dd"));
    }
    qDebug()<<__FUNCTION__<<sql;
    QSqlQuery query;
    if(query.exec(sql)){
        qDebug()<<"size:"<<query.size();
        m_model->setRowCount(0);
        int rowCnt = 0;
        while (query.next()) {
            rowCnt++;
            m_model->setRowCount(rowCnt);
            qDebug()<<query.value(0).toInt();
            for(int i=0;i<7;++i){
                if(query.value(i).isValid()){
                    m_model->setItem(rowCnt-1,i,new QStandardItem(query.value(i).toString()));
                }
            }
 
        }
    }
 
}
 
void SearchInfo::on_pushButton_export_clicked()
{
    if(ui->comboBox_company->currentText() == "公司名称"){
        QMessageBox::information(this,"导出错误","请选择一个公司名再导出");
        return;
    }
    if(ui->label_excel_path->text().size() < 5){
        QMessageBox::information(this,"导出设置错误","请先在“导出设置”选择模板及保存文件的路径信息");
        return;
    }
    // 每一张表拿最新的那一批数据即可,然后保存到电子表格中
    int comId = m_comInfo[ui->comboBox_company->currentText()];
    QString audit_project = QString("select kpi_name,code,num from %2 where com_id=%1 limit 10").arg(comId).arg("audit_project");
    QString audit_workload = QString("select kpi_name,code,num from %2 where com_id=%1 limit 1").arg(comId).arg("audit_workload");
    QString case_clue = QString("select kpi_name,code,unit,num from %2 where com_id=%1 limit 2").arg(comId).arg("case_clue");
    QString problem_count = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_count");
    QString problem_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 11").arg(comId).arg("problem_money");
    QString problem_no_money = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 5").arg(comId).arg("problem_no_money");
    QString problem_rectification = QString("select kpi_name,code,num,evidences from %2 where com_id=%1 limit 7").arg(comId).arg("problem_rectification");
    QString punish = QString("select kpi_name,code,num from %2 where com_id=%1 limit 4").arg(comId).arg("punish");
 
    QVector<QVector<QString>> audit_project_res = getResult(audit_project,3);
    QVector<QVector<QString>> audit_workload_res = getResult(audit_workload,3);
    QVector<QVector<QString>> case_clue_res = getResult(case_clue,4);
    QVector<QVector<QString>> problem_count_res = getResult(problem_count,4);
    QVector<QVector<QString>> problem_money_res = getResult(problem_money,4);
    QVector<QVector<QString>> problem_no_money_res = getResult(problem_no_money,4);
    QVector<QVector<QString>> problem_rectification_res = getResult(problem_rectification,4);
    QVector<QVector<QString>> punish_res = getResult(punish,3);
    qDebug()<<audit_project_res.size()<<punish_res.size();
 
    // 操作excel
    // 创建新的电子表格
//    QAxObject* excel = new QAxObject("Excel.Application");  // 创建Excel对象
//    excel->setProperty("Visible", false);  // 设置Excel不可见
//    QAxObject* workbooks = excel->querySubObject("Workbooks");  // 获取所有工作簿
//    QAxObject* workbook = workbooks->querySubObject("Add");  // 添加新工作簿
//    QAxObject* worksheets = workbook->querySubObject("Worksheets");  // 获取所有工作表
//    QAxObject* worksheet = worksheets->querySubObject("Item(int)", 1);  // 获取第一个工作表
 //   for (int i = 1; i <= 61; i++) {
 
//        for (int j = 1; j <= 5; j++) {
//            QString cellValue = "Value";  // 设置要写入的单元格值
//            worksheet->querySubObject("Cells(int, int)", i, j)->dynamicCall("SetValue(const QVariant&)", cellValue);  // 写入单元格值
//        }
    //}
 
 
    // 构建一张表:
//    QString cellValue = "单位内部审计业务情况表";  // 设置要写入的单元格值
//    worksheet->querySubObject("Cells(int, int)", 1, 1)->dynamicCall("SetValue(const QVariant&)", cellValue);  // 写入单元格值
//    worksheet->querySubObject("Cells(int, int)", 3, 4)->dynamicCall("SetValue(const QVariant&)", "表  号:");
//    worksheet->querySubObject("Cells(int, int)", 3, 5)->dynamicCall("SetValue(const QVariant&)", "内审统02表");
 
//    QString path = QDir::currentPath();
//    qDebug()<<"path:"<<path;
//    path += "/debug/Data/save2.xls";
//    qDebug()<<"path:"<<path;
//    workbook->dynamicCall("SaveAs(const QString&)", path);  // 保存工作簿
//    workbook->dynamicCall("Close()");  // 关闭工作簿
//    excel->dynamicCall("Quit()");  // 退出Excel应用程序
//    QMessageBox::information(this,"导出路径信息",path);
 
    // 打开已存在的电子表格,然后往里写入数据
    // :/mayi/附件3_内审统02表_单位内部审计业务情况表.xls
 
    QAxObject excel("Excel.Application");
    excel.setProperty("Visible",false);
    excel.setProperty("DisplayAlerts",false);
    //QString str = "D:/Qt/QtP/build-internal_system_v1-Desktop_Qt_5_9_4_MinGW_32bit-Debug/debug/Data/附件3_内审统02表_单位内部审计业务情况表.xls";
    QString str = ui->label_excel_path->text();
    qDebug()<<"open:"<<str;
    qDebug()<<"excel:"<<excel.className();
    QAxObject * wbs = excel.querySubObject("WorkBooks");
    QAxObject * wb = wbs->querySubObject("Open(QString&)",str);
    QAxObject * shs = wb->querySubObject("Sheets"); // WorkSheets 也可以
    int cnt = shs->property("Count").toInt();
    qDebug()<<"cnt="<<cnt;
    for(int i=0;i<cnt;++i){
        QAxObject * sheet = shs->querySubObject("Item(int)", i+1);
        QString sheetName = sheet->property("Name").toString();
        qDebug()<<"sh name:"<<sheetName;
        // 然后再操作表内的数据
        QAxObject *usedRange = sheet->querySubObject("UsedRange");
        int rows = usedRange->querySubObject("Rows")->property("Count").toInt();
        int columns = usedRange->querySubObject("Columns")->property("Count").toInt();
        qDebug()<<"r--c:"<<rows<<columns;
        QVariant  val = usedRange->dynamicCall("Value"); // 拿到二维表格
        QVariantList valRows = val.toList();
        qDebug()<<valRows[11].toList().at(4);
        sheet->querySubObject("Cells(int, int)", 7, 2)->dynamicCall("SetValue(const QVariant&)", ui->comboBox_company->currentText());
        sheet->querySubObject("Cells(int, int)", 6, 2)->dynamicCall("SetValue(const QVariant&)", m_comCode[ui->comboBox_company->currentText()]);
 
        // 写入审计项目 一
        qDebug()<<"size:"<<audit_project_res.size();
        QString it = audit_project_res[0][2];
        //sheet->querySubObject("Cells(int, int)", 13, 5)->dynamicCall("SetValue(doubule)", 4.5);
        for(int i=0;i<audit_project_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 11+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_project_res[i][2].toDouble());
        }
 
        // 写入审计工作量 二
        for(int i=0;i<audit_workload_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 21+i, 5)->dynamicCall("SetValue(const QVariant&)", audit_workload_res[i][2].toDouble());
        }
        // 写入问题金额 三
        for(int i=0;i<problem_money_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 22+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_money_res[i][2].toDouble());
        }
        // 写入问题个数 四
        for(int i=0;i<problem_count_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 33+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_count_res[i][2].toDouble());
        }
        // 写入问题整改(金额) 五
        for(int i=0;i<problem_rectification_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 40+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_rectification_res[i][2].toDouble());
        }
        // 写入问题整改(非金额) 六
        for(int i=0;i<problem_no_money_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 47+i, 5)->dynamicCall("SetValue(const QVariant&)", problem_no_money_res[i][2].toDouble());
        }
        // 写入处分 七
        for(int i=0;i<punish_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 52+i, 5)->dynamicCall("SetValue(const QVariant&)", punish_res[i][2].toDouble());
        }
        // 写入案件线索 八
        for(int i=0;i<case_clue_res.size();++i){
            sheet->querySubObject("Cells(int, int)", 56+i, 5)->dynamicCall("SetValue(const QVariant&)", case_clue_res[i][2].toDouble());
        }
 
 
    }
    //wb->dynamicCall("Save()");  // 若文件已存在,则直接保存
    //wb->dynamicCall("SaveAs(const QString&)", str);  // 保存工作簿,若文件不存在,则带名字保存
    if(ui->lineEdit_excel_save->text().size() > 1){
        wb->dynamicCall("SaveAs(const QString&)", ui->lineEdit_excel_save->text());  // 保存工作簿,若文件不存在,则带名字保存
        qDebug()<<"保存到新文件中";
    }else{
        wb->dynamicCall("Save()"); // 直接保存到模板文件中
        qDebug()<<"保存到老文件中";
    }
 
    wbs->dynamicCall("Close()");
    excel.dynamicCall("Quit(void)");
    QMessageBox::information(this,"导出成功",QString("导出成功,文件路径为:%1").arg(ui->lineEdit_excel_save->text()));
 
 
}
 
void SearchInfo::on_comboBox_currentIndexChanged(const QString &arg1)
{
     m_model->setHorizontalHeaderLabels(m_labels[arg1]);
}
 
void SearchInfo::on_toolButton_seleceExcel_clicked()
{
    if(ui->comboBox_company->currentText() == "公司名称"){
        QMessageBox::information(this,"导出设置错误","请选择一个公司名再设置");
        return;
    }
    QString path = QFileDialog::getOpenFileName(this,"选择表格模板:单位内部审计业务情况表","./","excel(*单位内部审计业务情况表.xls)");
    if(path.isNull()) return;
    ui->label_excel_path->setText(path);
    QStringList paths = path.split(".");
    QString newPath = paths.at(0)+"_"+ui->comboBox_company->currentText()+"."+paths.at(1);
    ui->lineEdit_excel_save->setText(newPath);
}
 
void SearchInfo::on_comboBox_company_currentIndexChanged(const QString &arg1)
{
    if(ui->lineEdit_excel_save->text().size() > 5){
        QStringList paths = ui->label_excel_path->text().split(".");
        QString newPath = paths.at(0)+"_"+arg1+"."+paths.at(1);
        ui->lineEdit_excel_save->setText(newPath);
    }
}
 
void SearchInfo::addComName(QString name)
{
    ui->comboBox_company->addItem(name);
}
 
void SearchInfo::on_checkBox_clicked()
{
    if(ui->checkBox->isChecked()){
        ui->dateEdit_begin->setEnabled(true);
        ui->dateEdit_end->setEnabled(true);
    }else{
        ui->dateEdit_begin->setEnabled(false);
        ui->dateEdit_end->setEnabled(false);
    }
}