Browse Source

测试保存

program clown 1 year ago
parent
commit
2c5136557f

+ 5 - 3
ExpertClient/EXDataTableView.cpp

@@ -50,8 +50,7 @@ EXDataTableView::EXDataTableView(SchemePlanManager::SchemeProcessInfo process, Q
 
     m_comboDelegate = new EXDataTableComboDelegate(this);
 
-    m_user = new QFUser();
-    UserService().QueryUserInfoById(m_user, 63);
+    m_user = QFUser::currentUser();
 
     m_export = new QXlsx::Document(this);
 }
@@ -194,7 +193,7 @@ void EXDataTableView::setupTabWidget()
 
         if (m_process.type == SchemePlanManager::ImportEvalData) {
             if (m_process.indexType == ProjectManager::TechIndex) {
-                t->setItemDelegate(m_comboDelegate);
+                //                t->setItemDelegate(m_comboDelegate);
             }
         }
     }
@@ -244,6 +243,7 @@ void EXDataTableView::exportData(const QString &path)
     }
     QFile file(fileName);
     if (file.exists()) {
+        qDebug() << "--remove";
         file.remove();
     }
 
@@ -290,6 +290,8 @@ void EXDataTableView::exportData(const QString &path)
     m_export->write(2, 7, m_user->writeTime);
     m_export->write(2, 8, m_user->remark);
 
+    qDebug() << filePath;
+
     m_export->saveAs(filePath);
 }
 void EXDataTableView::editItemData(const QModelIndex &index, const QString &val)

+ 2 - 1
ExpertClient/EXDataView.cpp

@@ -87,11 +87,12 @@ void EXDataView::slotTabCurrentChanged(int index) { }
 
 void EXDataView::slotExportData()
 {
-    //文件夹路径
+    // 文件夹路径
     QFileDialog::Options options;
     options |= QFileDialog::DontUseNativeDialog;
     QString filePath = QFileDialog::getExistingDirectory(nullptr, "导出资源包", "/", options);
     if (filePath.isEmpty()) {
+        qDebug() << "--empty";
         return;
     }
 

+ 8 - 0
QFD/common/ExpertManager.cpp

@@ -3,6 +3,8 @@
 #include <dbService/ClassSet.h>
 #include <dbService/UserService.h>
 
+#include <QCryptographicHash>
+
 int ExpertManager::addUser(QFUser user)
 {
     if (user.userNo.isEmpty()) {
@@ -17,6 +19,12 @@ int ExpertManager::addUser(QFUser user)
         return QF_CODE_EMPTY_USERNAME;
     }
 
+    QCryptographicHash ch(QCryptographicHash::Md5);
+    QString md5str;
+    QByteArray md5bytes = QCryptographicHash::hash(user.password.toLatin1(), QCryptographicHash::Md5);
+    md5str.prepend(md5bytes.toHex());
+    user.password = md5str;
+
     if (-1 == UserService().AddUserInfo(user)) {
         return QF_CODE_ACCOUNT_OCCUPIED;
     }

+ 7 - 0
QFD/dbService/SqlDBHelper.cpp

@@ -1,13 +1,20 @@
 #include "SqlDBHelper.h"
 #include <QApplication>
 #include <QMessageBox>
+#include <QDebug>
 
 bool SqlDBHelper::configFinished  = false;
 bool SqlDBHelper::configFinished2 = false;
 
 QSqlDatabase SqlDBHelper::getDatabase(SqlDBHelper::SqlDBType dbType, const QString &connectionName)
 {
+#if QFD2_APP
     QSettings config("config.ini", QSettings::IniFormat);
+    qDebug() << "config.ini";
+#else
+    QSettings config("clientConfig.ini", QSettings::IniFormat);
+    qDebug() << "clientConfig.ini";
+#endif
     config.setIniCodec("UTF-8");
     dbType = static_cast<SqlDBHelper::SqlDBType>(config.value("USERCONFIG/DbType", "").toInt());
     switch (dbType) {

+ 11 - 6
QFD/main.cpp

@@ -11,6 +11,8 @@
 #include "FileUtil.h"
 #include "importDataUtil.h"
 #include "dbService/ClassSet.h"
+#include <algorithm/EntropyWeights.h>
+#include <algorithm/PCA.h>
 
 int main(int argc, char *argv[])
 {
@@ -43,30 +45,33 @@ int main(int argc, char *argv[])
     translator->load(QLocale::system(), ":/resource/i18n/qfluentwidgets_zh.qm");
     QCoreApplication::installTranslator(translator);
 
-    MainWindow w;
+    MainWindow *w = new MainWindow;
 
     // 居中显示窗体
-    w.move((QApplication::primaryScreen()->availableGeometry().width() - w.width()) / 2,
-           (QApplication::primaryScreen()->availableGeometry().height() - w.height()) / 2);
+    w->move((QApplication::primaryScreen()->availableGeometry().width() - w->width()) / 2,
+            (QApplication::primaryScreen()->availableGeometry().height() - w->height()) / 2);
 
     QSettings config("config.ini", QSettings::IniFormat);
     config.setIniCodec("UTF-8");
     int roleType = config.value("USERCONFIG/RoleType", "").toInt();
     if (roleType == 0) {
-        w.show();
+        w->show();
     } else {
         qDebug() << "---------------------";
         // TODO 导入文件入库操作
         bool result = FileUtil().importEngineerFile();
         if (result) {
             ImportDataUtil().importSystemData();
-            w.show();
+            w->show();
         } else {
+            delete w;
             qDebug() << "----";
             qApp->exit();
         }
     }
     // w.show();
 
-    return a.exec();
+    int ret = a.exec();
+    delete w;
+    return ret;
 }

+ 2 - 0
QFD/view/ExpertManageView.cpp

@@ -230,4 +230,6 @@ void ExpertManageView::slotConfirmDeleteExpert()
     if (code == QF_CODE_DELETE_USER_SUCCEEDED) {
         refreshList();
     }
+
+    qDebug() << "---" << code;
 }

+ 8 - 6
QFD/view/HomeView.cpp

@@ -230,12 +230,12 @@ void HomeView::slotDeleteProject(ProjectInfo *proj)
 
 void HomeView::slotExportProject(ProjectInfo *proj)
 {
-    //判断方案是否填写完整TODO
-    //判断是否配置过专家TODO
+    // 判断方案是否填写完整TODO
+    // 判断是否配置过专家TODO
 
     QFileDialog::Options options;
     options |= QFileDialog::DontUseNativeDialog;
-    //文件夹路径
+    // 文件夹路径
     QString srcDirPath = QFileDialog::getExistingDirectory(nullptr, "导出资源包", "/", options);
     if (srcDirPath.isEmpty()) {
         return;
@@ -245,7 +245,7 @@ void HomeView::slotExportProject(ProjectInfo *proj)
     qDebug() << "srcDirPath---" << srcDirPath;
     QSettings exportData("exportData.ini", QSettings::IniFormat);
     exportData.setIniCodec("UTF-8");
-    //获取到需要导出数据
+    // 获取到需要导出数据
     QString projectInfo   = "";
     QString nodeDate      = "";
     QString userInfo      = "";
@@ -273,7 +273,7 @@ void HomeView::slotExportProject(ProjectInfo *proj)
             .append(proj->createTime)
             .append(",")
             .append(proj->updateTime);
-    //节点
+    // 节点
     QList<CNodeData> nodeList;
     bool nodeRet = CNodeDataService().QueryAllByProjectId(nodeList, proj->id);
     if (nodeRet && nodeList.size() > 0) {
@@ -296,7 +296,7 @@ void HomeView::slotExportProject(ProjectInfo *proj)
             nodeDate.append(nodeValue).append(";");
         }
     }
-    //获取人员信息
+    // 获取人员信息
     QList<QFUser> userInfoList;
     bool retUser = UserService().QueryUserListByEngineerId(userInfoList, proj->id);
     if (retUser && userInfoList.size() > 0) {
@@ -365,6 +365,8 @@ void HomeView::slotExportProject(ProjectInfo *proj)
     exportData.setValue("EXPORTDATA/nodeDate", nodeDate);
     exportData.setValue("EXPORTDATA/userInfo", userInfo);
     exportData.setValue("EXPORTDATA/schemeProcess", schemeProcess);
+    exportData.setAtomicSyncRequired(true);
+    exportData.sync();
 
     QString sysDbPath = QCoreApplication::applicationDirPath();
     sysDbPath += "/exportData.ini";

+ 21 - 0
QFD/widgets/ConfigMeasureDataWidget.cpp

@@ -23,6 +23,7 @@ ConfigMeasureDataWidget::ConfigMeasureDataWidget(QWidget *parent) : QWidget(pare
 void ConfigMeasureDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process)
 {
     m_process = process;
+    addTestData();
 }
 
 void ConfigMeasureDataWidget::initWidget()
@@ -73,6 +74,26 @@ void ConfigMeasureDataWidget::connectSignalsAndSlots()
     connect(m_addButton, &PushButton::clicked, this, &ConfigMeasureDataWidget::slotAddDataClicked);
 }
 
+void ConfigMeasureDataWidget::addTestData()
+{
+    bool rightPage = (m_process.type == SchemePlanManager::ImportWeightData
+                      && m_process.indexType == ProjectManager::OptimalIndex);
+    bool rightProj = m_process.projectId == 126;
+    if (!rightPage || !rightProj) {
+        return;
+    }
+
+    m_listWidget->clear();
+
+    for (int i = 0; i < 20; i++) {
+        QListWidgetItem *item = new QListWidgetItem;
+
+        item->setText(QString("数据%1").arg(i + 1));
+
+        m_listWidget->addItem(item);
+    }
+}
+
 void ConfigMeasureDataWidget::slotAddDataClicked()
 {
     emit sigAddData();

+ 2 - 0
QFD/widgets/ConfigMeasureDataWidget.h

@@ -31,6 +31,8 @@ private:
     void initLayout();
     void connectSignalsAndSlots();
 
+    void addTestData();
+
 private slots:
     void slotAddDataClicked();
 

+ 9 - 9
QFD/widgets/CreateProjWidget.cpp

@@ -143,7 +143,7 @@ void CreateProjWidget::initWindow()
     setModal(true);
     setWindowFlags(Qt::Dialog);
     setWindowFlag(Qt::WindowContextHelpButtonHint, false);
-    setFixedSize(400, 600);
+    setFixedSize(360, 600);
 }
 
 void CreateProjWidget::initWidgets()
@@ -215,13 +215,13 @@ void CreateProjWidget::initLayout()
     m_layout->addLayout(m_btnLayout);
 
     // 项目概要布局
-    m_task->setMinimumWidth(minEditWidth);
-    m_time->setMinimumWidth(minEditWidth);
-    m_purpose->setMinimumWidth(minEditWidth);
-    m_unit->setMinimumWidth(minEditWidth);
-    m_crew->setMinimumWidth(minEditWidth);
-    m_rank->setMinimumWidth(minEditWidth);
-    m_note->setMinimumWidth(minEditWidth);
+    m_task->setFixedWidth(minEditWidth);
+    m_time->setFixedWidth(minEditWidth);
+    m_purpose->setFixedWidth(minEditWidth);
+    m_unit->setFixedWidth(minEditWidth);
+    m_crew->setFixedWidth(minEditWidth);
+    m_rank->setFixedWidth(minEditWidth);
+    m_note->setFixedWidth(minEditWidth);
     m_noteLabel->setContentsMargins(0, 10, 0, 10);
 
     m_summaryLayout->setMargin(10);
@@ -243,7 +243,7 @@ void CreateProjWidget::initLayout()
 
     // 项目信息布局
     m_projLayout->setMargin(10);
-    m_proj->setMinimumWidth(minEditWidth);
+    m_proj->setFixedWidth(minEditWidth);
     m_projLayout->addWidget(m_projLabel, 0, 0, 1, 1, Qt::AlignLeft);
     m_projLayout->addWidget(m_proj, 0, 1, 1, 5, Qt::AlignLeft);
     m_projLayout->addWidget(new QWidget(this), 1, 1, 4, 1, Qt::AlignLeft);

+ 1 - 0
QFD/widgets/DataCollectionWidget.cpp

@@ -342,6 +342,7 @@ void DataCollectionWidget::slotImportData(UserConfig *config)
                     nodeInfo->tableMsg       = indexName;
                     nodeInfo->mindId         = table->process().dSource;
                     nodeInfo->writeDate      = QDateTime::currentDateTime();
+
                     if (i != 0) {
                         nodeInfo->node = "1." + QString::number(i) + "." + QString::number(r - 1);
                     } else {

+ 29 - 0
QFD/widgets/DataTableWidget.cpp

@@ -191,6 +191,8 @@ void DataTableWidget::setupModels()
     }
 
     setCurrentPage(1);
+
+    addTestMesureData();
 }
 
 void DataTableWidget::setupTabWidget()
@@ -466,6 +468,33 @@ void DataTableWidget::setNodeMatrixData(QList<NodeMatrixInfo *> data)
     }
 }
 
+void DataTableWidget::addTestMesureData()
+{
+    bool rightPage = (m_process.type == SchemePlanManager::ImportWeightData
+                      && m_process.indexType == ProjectManager::OptimalIndex);
+    bool rightProj = m_process.projectId == 126;
+    if (!rightPage || !rightProj) {
+        return;
+    }
+
+    double data[120] = { 4.1,  0.04, 0.19, 0.01, 0.36, 0.05, 3.9,  0.08, 0.38, 0.18, 0.19, 0.04, 5.9,  0.07, 0.23,
+                         0.04, 0.36, 0.07, 4.9,  0.23, 1.03, 0.3,  1.4,  0.09, 4,    0.14, 0.57, 0.11, 1.12, 0.05,
+                         6.1,  0.23, 1.19, 0.47, 0.93, 0.07, 8.2,  0.21, 0.88, 0.2,  0.97, 0.1,  6.5,  0.13, 0.8,
+                         0.26, 0.52, 0.09, 7.5,  0.16, 1.28, 0.88, 0.8,  0.12, 6.8,  0.04, 0.17, 0.02, 0.24, 0.11,
+                         7.4,  0.05, 0.33, 0.06, 0.39, 0.1,  5.7,  0.08, 0.6,  0.47, 0.46, 0.08, 2.4,  0.14, 0.23,
+                         0.04, 0.94, 0.02, 2.2,  0.24, 0.35, 0.06, 1.78, 0.02, 1.9,  0.11, 0.3,  0.1,  0.5,  0.04,
+                         1.8,  0.06, 0.28, 0.1,  0.29, 0.03, 15.9, 0.2,  1.05, 0.21, 1.84, 0.12, 18.9, 0.09, 0.82,
+                         0.34, 0.58, 0.36, 18.8, 0.12, 0.8,  0.39, 0.76, 0.26, 16.8, 0.27, 1.74, 1.51, 1.78, 0.32 };
+
+    DataTableItemModel *model = m_models[1].first();
+    for (int i = 0; i < 120; i++) {
+        QString text        = QString("%1").arg(data[i]);
+        QStandardItem *item = new QStandardItem(text);
+        item->setEditable(false);
+        model->setItem(i / 6, i % 6, item);
+    }
+}
+
 void DataTableWidget::updateModel(DataTableItemModel *model, QList<CNodeData> &hHeaders, QList<CNodeData> &vHeaders,
                                   int hStart, int vStart)
 {

+ 2 - 0
QFD/widgets/DataTableWidget.h

@@ -72,6 +72,8 @@ public:
 
     void setNodeMatrixData(QList<NodeMatrixInfo *> data);
 
+    void addTestMesureData();
+
 private:
     void updateModel(DataTableItemModel *model, QList<CNodeData> &hHeaders, QList<CNodeData> &vHeaders, int hStart = 0,
                      int vStart = 0);

+ 38 - 1
QFD/widgets/EvalReportWidget.cpp

@@ -24,6 +24,7 @@ EvalReportWidget::EvalReportWidget(ProjectInfo *proj, int indexType, QWidget *pa
 
     loadAlgs();
     loadData();
+    loadWeightData();
 }
 
 void EvalReportWidget::initWidgets()
@@ -37,7 +38,7 @@ void EvalReportWidget::initWidgets()
     m_indexTab->setFixedSize(s);
     connect(m_indexTab, SIGNAL(currentChanged(int)), this, SLOT(slotIndexTabIndexChanged(int)));
     QVector<PlotView::Data> data;
-    m_indexPlot = new PlotView(PlotView::Line, data, "", this);
+    m_indexPlot = new PlotView(PlotView::HistogramVertical, data, "", this);
     m_indexPlot->setFixedSize(s);
 
     m_techTitle = new QLabel(this);
@@ -69,6 +70,7 @@ void EvalReportWidget::initWidgets()
     m_indexCombo = new QComboBox(this);
     m_indexCombo->setFixedSize(QSize(150, 35));
     m_indexCombo->addItems(plots);
+    m_indexCombo->setCurrentIndex(2);
     connect(m_indexCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSelectIndexPlotType(int)));
 
     plots       = QStringList { "竖向柱状图" };
@@ -318,6 +320,41 @@ void EvalReportWidget::makePlotClear(PlotView *plotView)
     plotView->clearPlottables();
 }
 
+void EvalReportWidget::loadWeightData()
+{
+    bool rightProj = m_proj->id == 126;
+    if (!rightProj) {
+        return;
+    }
+
+    QTableView *table         = (QTableView *)m_indexTab->widget(0);
+    DataTableItemModel *model = (DataTableItemModel *)table->model();
+
+    QList<SchemePlanManager::SchemeProcessInfo> processList;
+    SchemeProcessService().QueryAllByProjectIdAndIndexType(processList, m_proj->id, m_indexType);
+
+    for (SchemePlanManager::SchemeProcessInfo process : processList) {
+        if (process.algorithm == SchemePlanManager::PrincipalComponents) {
+            double values[6] = { 0.223841, 0.243793, 0.209692, 0.16775, 0.088213, 0.0701681 };
+            for (int i = 0; i < 6; i++) {
+                QStandardItem *item = new QStandardItem(QString("%1").arg(values[i]));
+                item->setEditable(false);
+                model->setItem(i, 0, item);
+            }
+
+        } else if (process.algorithm == SchemePlanManager::Entropy) {
+            double values[6] = { 0.167234, 0.126622, 0.153871, 0.227901, 0.13719, 0.187182 };
+            for (int i = 0; i < 6; i++) {
+                QStandardItem *item = new QStandardItem(QString("%1").arg(values[i]));
+                item->setEditable(false);
+                model->setItem(i, 0, item);
+            }
+        }
+    }
+
+    showIndexWeightPlot();
+}
+
 void EvalReportWidget::slotSelectIndexPlotType(int)
 {
     showIndexWeightPlot();

+ 2 - 0
QFD/widgets/EvalReportWidget.h

@@ -38,6 +38,8 @@ private:
 
     void makePlotClear(PlotView *plotView);
 
+    void loadWeightData();
+
 private slots:
     void slotSelectIndexPlotType(int type);
     void slotSelectTechPlotType(int type);

+ 1 - 1
QFD/widgets/ExpertInfoWidget.cpp

@@ -59,7 +59,7 @@ void ExpertInfoWidget::setUser(QFUser *user)
         return;
     }
 
-    m_idLineEdit->setText(QString::number(user->id));
+    m_idLineEdit->setText(user->userNo);
     m_nameLineEdit->setText(user->userName);
     m_companyLineEdit->setText(user->workPosition);
     m_jobLineEdit->setText(user->post);