Browse Source

'导出资源包'

zsf 1 year ago
parent
commit
e11699e772

+ 31 - 0
QFD/dbService/CNodeDataService.cpp

@@ -112,6 +112,37 @@ bool CNodeDataService::QueryAll(QList<CNodeData> &cNodeDataList, int projectId,
     return ret;
 }
 
+bool CNodeDataService::QueryAllByProjectId(QList<CNodeData> &cNodeDataList, int projectId)
+{
+    QSqlDatabase db = SqlDBHelper::getDatabase();
+    QSqlQuery query(db);
+    bool ret = false;
+    QString selectSql =
+            QString("SELECT id,project_id, eval_type,number,p_number,name,remark,dimension FROM t_node_data WHERE "
+                    "project_id = %1 ")
+                    .arg(projectId);
+    if (query.exec(selectSql)) {
+        while (query.next()) {
+            if (query.isNull(0) == false) {
+                CNodeData cNodeData;
+                cNodeData.id        = query.value(0).toInt();
+                cNodeData.projectId = query.value(1).toInt();
+                cNodeData.indexType = query.value(2).toInt();
+                cNodeData.number    = query.value(3).toInt();
+                cNodeData.pNumber   = query.value(4).toInt();
+                cNodeData.name      = query.value(5).toString();
+                cNodeData.remark    = query.value(6).toString();
+                cNodeData.dimension = query.value(7).toString();
+                cNodeDataList.append(cNodeData);
+            }
+        }
+        ret = true;
+    } else {
+        qDebug() << query.lastError();
+    }
+    return ret;
+}
+
 //根据id删除
 bool CNodeDataService::DeleteCNodeDataById(int id)
 {

+ 7 - 4
QFD/dbService/CNodeDataService.h

@@ -1,6 +1,6 @@
-#ifndef CNODEDATASERVICE_H
+#ifndef CNODEDATASERVICE_H
 #define CNODEDATASERVICE_H
-#include<CCanvas/CMind.h>
+#include <CCanvas/CMind.h>
 
 class CNodeDataService
 {
@@ -15,10 +15,13 @@ public:
     bool QueryCNodeDataById(CNodeData &cNodeData, int id);
 
     //查询所有
-    bool QueryAll(QList<CNodeData> &cNodeDataList,int projectId,int evalType);
+    bool QueryAll(QList<CNodeData> &cNodeDataList, int projectId, int evalType);
+
+    //根据工程id获取到节点信息
+    bool QueryAllByProjectId(QList<CNodeData> &cNodeDataList, int projectId);
 
     //根据id删除
     bool DeleteCNodeDataById(int id);
 };
 
-#endif // CNODEDATASERVICE_H
+#endif  // CNODEDATASERVICE_H

+ 16 - 16
QFD/dbService/UserService.cpp

@@ -168,7 +168,7 @@ bool UserService::QueryUserInfoByUnserInfo(const QFUser &paramInfo, QFUser &quer
     return ret;
 }
 /*获取到用户列表*/
-bool UserService::QueryUserListByEngineerId(QList<QFUser *> *userInfoList, int engineerId)
+bool UserService::QueryUserListByEngineerId(QList<QFUser> &userInfoList, int engineerId)
 {
     QSqlDatabase db = SqlDBHelper::getDatabase();
     QSqlQuery query(db);
@@ -184,21 +184,21 @@ bool UserService::QueryUserListByEngineerId(QList<QFUser *> *userInfoList, int e
     if (query.exec(selectSql)) {
         while (query.next()) {
             if (query.isNull(0) == false) {
-                QFUser *userInfo          = new QFUser();
-                userInfo->id              = query.value(0).toInt();
-                userInfo->userName        = query.value(1).toString();
-                userInfo->userNo          = query.value(2).toString();
-                userInfo->password        = query.value(3).toString();
-                userInfo->role            = static_cast<QFUser::Role>(query.value(4).toInt());
-                userInfo->post            = query.value(5).toString();
-                userInfo->major           = query.value(6).toString();
-                userInfo->workPosition    = query.value(7).toString();
-                userInfo->educationDegree = query.value(8).toString();
-                userInfo->phone           = query.value(9).toString();
-                userInfo->remark          = query.value(10).toString();
-                userInfo->projectId       = query.value(11).toString();
-                userInfo->writeTime       = query.value(12).toString();
-                userInfoList->append(userInfo);
+                QFUser userInfo;
+                userInfo.id              = query.value(0).toInt();
+                userInfo.userName        = query.value(1).toString();
+                userInfo.userNo          = query.value(2).toString();
+                userInfo.password        = query.value(3).toString();
+                userInfo.role            = static_cast<QFUser::Role>(query.value(4).toInt());
+                userInfo.post            = query.value(5).toString();
+                userInfo.major           = query.value(6).toString();
+                userInfo.workPosition    = query.value(7).toString();
+                userInfo.educationDegree = query.value(8).toString();
+                userInfo.phone           = query.value(9).toString();
+                userInfo.remark          = query.value(10).toString();
+                userInfo.projectId       = query.value(11).toString();
+                userInfo.writeTime       = query.value(12).toString();
+                userInfoList.append(userInfo);
             }
             ret = true;
         }

+ 1 - 1
QFD/dbService/UserService.h

@@ -25,7 +25,7 @@ public:
     bool QueryUserByNoAndPassword(QFUser *userInfo, QString userNo, QString password);
     bool QueryUserByNo(QFUser *userInfo, QString userNo);
     /*获取工程用户列表*/
-    bool QueryUserListByEngineerId(QList<QFUser *> *userInfoList, int engineerId);
+    bool QueryUserListByEngineerId(QList<QFUser> &userInfoList, int engineerId);
 
     //删除除管理管外的所有用户
     bool DeleteUserByRole(int roleType);

+ 24 - 0
QFD/helper/FileUtil.cpp

@@ -56,6 +56,30 @@ bool FileUtil::copyDirectoryFiles(QString &srcFilePath, QString &tgtFilePath, bo
     return true;
 }
 
+bool FileUtil::copyFileToPath(QString sourceDir, QString toDir, bool coverFileIfExist)
+{
+    toDir.replace("\\", "/");
+    if (sourceDir == toDir) {
+        return true;
+    }
+    if (!QFile::exists(sourceDir)) {
+        return false;
+    }
+    QDir *createfile = new QDir;
+    bool exist       = createfile->exists(toDir);
+    if (exist) {
+        if (coverFileIfExist) {
+            createfile->remove(toDir);
+        }
+
+    }  // end if
+
+    if (!QFile::copy(sourceDir, toDir)) {
+        return false;
+    }
+    return true;
+}
+
 bool FileUtil::importEngineerFile()
 {
     QFileDialog::Options options;

+ 1 - 0
QFD/helper/FileUtil.h

@@ -9,6 +9,7 @@ public:
     FileUtil();
     bool copyDirectoryFiles(QString &srcFilePath, QString &tgtFilePath, bool coverFileIfExist);
     bool importEngineerFile();
+    bool copyFileToPath(QString sourceDir, QString toDir, bool coverFileIfExist);
 };
 
 #endif  // FILEUTIL_H

+ 116 - 11
QFD/view/HomeView.cpp

@@ -7,15 +7,23 @@
 #include "QFDIcon.h"
 #include "ProjectListWidget.h"
 #include "QFDConfig.h"
-
+#include "FileUtil.h"
 #include <Widgets/Button.h>
 #include <Widgets/LineEdit.h>
 #include <DialogBox/Dialog.h>
+#include <QFileDialog>
+#include <QPushButton>
+#include <QMessageBox>
 
 #include <QBoxLayout>
 #include <QLabel>
-
+#include <QApplication>
 #include <QDebug>
+#include <QSettings>
+#include "dbService/ClassSet.h"
+#include "dbService/CNodeDataService.h"
+#include "dbService/UserService.h"
+#include "dbService/ClassSet.h"
 
 HomeView::HomeView(QWidget *parent) : QWidget(parent) { }
 
@@ -218,17 +226,114 @@ void HomeView::slotDeleteProject(ProjectInfo *proj)
 
 void HomeView::slotExportProject(ProjectInfo *proj)
 {
-    QString title = "删除工程 “" + proj->projectName + "” ?";
-    MessageBox *m = new MessageBox(title, "删除后无法恢复", this);
-
-    if (m->exec()) {
-        int code = ProjectManager::deleteProject(proj->id);
-        QFDAlert::showAlertWithCode(code, this);
-        if (code == QF_CODE_SUCCEEDED) {
-            m_projList.removeOne(proj);
-            m_projListWidget->removeProject(proj);
+    //判断方案是否填写完整TODO
+    //判断是否配置过专家TODO
+
+    QFileDialog::Options options;
+    options |= QFileDialog::DontUseNativeDialog;
+    //文件夹路径
+    QString srcDirPath = QFileDialog::getExistingDirectory(nullptr, "导出资源包", "/", options);
+    if (srcDirPath.isEmpty()) {
+        return;
+    }
+    srcDirPath += "/";
+    srcDirPath.append(proj->projectName).append(".ini");
+    qDebug() << "srcDirPath---" << srcDirPath;
+    QSettings exportData("exportData.ini", QSettings::IniFormat);
+    exportData.setIniCodec("UTF-8");
+    //获取到需要导出数据
+    QString projectInfo = "";
+    QString nodeDate    = "";
+    QString userInfo    = "";
+    projectInfo.append(QString::number(proj->id))
+            .append(",")
+            .append(proj->remark)
+            .append(",")
+            .append(proj->estimateTime)
+            .append(",")
+            .append(proj->estimateObjective)
+            .append(",")
+            .append(proj->estimateDept)
+            .append(",")
+            .append(proj->estimatePerson)
+            .append(",")
+            .append(proj->estimateType)
+            .append(",")
+            .append(proj->positionalTitles)
+            .append(",")
+            .append(proj->createTime)
+            .append(",")
+            .append(proj->updateTime);
+    //节点
+    QList<CNodeData> nodeList;
+    bool nodeRet = CNodeDataService().QueryAllByProjectId(nodeList, proj->id);
+    if (nodeRet && nodeList.size() > 0) {
+        foreach (CNodeData node, nodeList) {
+            QString nodeValue = QString::number(node.id)
+                                        .append(",")
+                                        .append(QString::number(node.projectId))
+                                        .append(",")
+                                        .append(QString::number(node.indexType))
+                                        .append(",")
+                                        .append(QString::number(node.number))
+                                        .append(",")
+                                        .append(QString::number(node.pNumber))
+                                        .append(",")
+                                        .append(node.name)
+                                        .append(",")
+                                        .append(node.remark)
+                                        .append(",")
+                                        .append(node.dimension);
+            nodeDate.append(nodeValue).append(";");
+        }
+    }
+    //获取人员信息
+    QList<QFUser> userInfoList;
+    bool retUser = UserService().QueryUserListByEngineerId(userInfoList, proj->id);
+    if (retUser && userInfoList.size() > 0) {
+        foreach (QFUser user, userInfoList) {
+            QString userValue = QString::number(user.id)
+                                        .append(",")
+                                        .append(user.userName)
+                                        .append(",")
+                                        .append(user.userNo)
+                                        .append(",")
+                                        .append(user.password)
+                                        .append(",")
+                                        .append(QString::number(user.role))
+                                        .append(",")
+                                        .append(user.post)
+                                        .append(",")
+                                        .append(user.major)
+                                        .append(",")
+                                        .append(user.workPosition)
+                                        .append(",")
+                                        .append(user.educationDegree)
+                                        .append(",")
+                                        .append(user.phone)
+                                        .append(",")
+                                        .append(user.remark)
+                                        .append(",")
+                                        .append(user.projectId)
+                                        .append(",")
+                                        .append(user.writeTime);
+            userInfo.append(userValue).append(";");
         }
     }
+
+    exportData.setValue("EXPORTDATA/projectInfo", projectInfo);
+    exportData.setValue("EXPORTDATA/nodeDate", nodeDate);
+    exportData.setValue("EXPORTDATA/userInfo", userInfo);
+
+    QString sysDbPath = QCoreApplication::applicationDirPath();
+    sysDbPath += "/exportData.ini";
+    qDebug() << "filePath---" << sysDbPath;
+    bool result = FileUtil().copyFileToPath(sysDbPath, srcDirPath, false);
+    if (result) {
+        QMessageBox::information(this, "成功", tr("导出成功"));
+    } else {
+        QMessageBox::warning(this, "失败", tr("导出失败"));
+    }
 }
 
 void HomeView::slotPreviousClicked()