From fd362fc8efbc739b79566f3497b899adffcc1ca6 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Sat, 28 Dec 2024 11:58:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B6=D0=B5=D1=82=20FIM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB_IaT/InstructorsAndTrainees/CMakeLists.txt | 5 + .../CMakeLists.txt.user | 2 +- .../docTasks/doctaskswidget.ui | 2 +- .../docTasks/fimtaskswidget.cpp | 122 ++++++++++++++++++ .../docTasks/fimtaskswidget.h | 33 +++++ .../docTasks/fimtaskswidget.ui | 102 +++++++++++++++ .../docTasks/tasksAmmFim.cpp | 38 ++++++ .../docTasks/tasksAmmFim.h | 102 +++++++++++++++ .../instructorsandtraineeswidget.cpp | 2 + .../instructorsandtraineeswidget.h | 2 + DB_LMS/DataBaseLMS/CMakeLists.txt.user | 2 +- .../GUIdataBaseLMS/CMakeLists.txt.user | 2 +- ServerLMS/ServerLMS/CMakeLists.txt.user | 2 +- .../TestServerLMS/CMakeLists.txt.user | 2 +- 14 files changed, 412 insertions(+), 6 deletions(-) create mode 100644 DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp create mode 100644 DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.h create mode 100644 DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.ui create mode 100644 DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.cpp create mode 100644 DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.h diff --git a/DB_IaT/InstructorsAndTrainees/CMakeLists.txt b/DB_IaT/InstructorsAndTrainees/CMakeLists.txt index dbcd49b..9cfa887 100644 --- a/DB_IaT/InstructorsAndTrainees/CMakeLists.txt +++ b/DB_IaT/InstructorsAndTrainees/CMakeLists.txt @@ -90,6 +90,11 @@ add_library(InstructorsAndTrainees SHARED messanger/msgwidget.ui messanger/tabdialogmessenger.cpp messanger/tabdialogmessenger.h + docTasks/fimtaskswidget.cpp + docTasks/fimtaskswidget.h + docTasks/fimtaskswidget.ui + docTasks/tasksAmmFim.cpp + docTasks/tasksAmmFim.h resources.qrc ) diff --git a/DB_IaT/InstructorsAndTrainees/CMakeLists.txt.user b/DB_IaT/InstructorsAndTrainees/CMakeLists.txt.user index 68de39f..238021c 100644 --- a/DB_IaT/InstructorsAndTrainees/CMakeLists.txt.user +++ b/DB_IaT/InstructorsAndTrainees/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.ui b/DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.ui index f71f8af..cefa158 100644 --- a/DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.ui +++ b/DB_IaT/InstructorsAndTrainees/docTasks/doctaskswidget.ui @@ -25,7 +25,7 @@ - Document + AMM diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp new file mode 100644 index 0000000..1e30cce --- /dev/null +++ b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.cpp @@ -0,0 +1,122 @@ +#include +#include +#include +#include "fimtaskswidget.h" +#include "ui_fimtaskswidget.h" +#include "tasksAmmFim.h" + +FIMtasksWidget::FIMtasksWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::FIMtasksWidget) +{ + ui->setupUi(this); + + loadTasksAmmFimFromXML(); + updateListWidget(); +} + +FIMtasksWidget::~FIMtasksWidget() +{ + delete ui; +} + +void FIMtasksWidget::loadTasksAmmFimFromXML() +{ + QDomDocument docTasksDOM; + QString xmlFileName = "./tasksFIM.xml"; + QFile xmlInFile(xmlFileName); + if (!xmlInFile.open(QFile::ReadOnly | QFile::Text)) + { + QMessageBox::critical(nullptr, tr("Attention!"), tr("The file could not be opened ") + xmlFileName); + return; + } + else + { + docTasksDOM.setContent(xmlInFile.readAll()); + xmlInFile.close(); + + QDomElement RRJTasksElement = docTasksDOM.firstChildElement("RRJTasks"); + if(RRJTasksElement.isNull()) + return; + + QDomElement taskElement = RRJTasksElement.firstChildElement(); + if(taskElement.isNull()) + return; + + do + {/*task*/ + QString name = taskElement.nodeName(); + QDomNamedNodeMap nodeMap = taskElement.attributes(); + + if(name == "task") + { + TaskAmmFim task; + + task.initialize(nodeMap.namedItem("id").nodeValue().toInt(), + nodeMap.namedItem("type").nodeValue(), + nodeMap.namedItem("title").nodeValue(), + nodeMap.namedItem("status").nodeValue(), + nodeMap.namedItem("created").nodeValue(), + nodeMap.namedItem("changed").nodeValue()); + + QDomElement malfunctionElement = taskElement.firstChildElement(); + if(malfunctionElement.isNull()) + break; + + do + {/*malfunction*/ + QString name = malfunctionElement.nodeName(); + QDomNamedNodeMap nodeMap = malfunctionElement.attributes(); + + if(name == "malfunction") + { + Malfunction malfunction; + + malfunction.initialize(nodeMap.namedItem("dmCode").nodeValue(), + nodeMap.namedItem("num").nodeValue(), + nodeMap.namedItem("description").nodeValue()); + + QDomElement signElement = malfunctionElement.firstChildElement(); + if(signElement.isNull()) + break; + + do + {/*malfunctionSign*/ + QString name = signElement.nodeName(); + QDomNamedNodeMap nodeMap = signElement.attributes(); + + if(name == "malfunctionSign") + { + MalfunctionSign sign; + + sign.initialize(nodeMap.namedItem("type").nodeValue().toInt(), + nodeMap.namedItem("description").nodeValue()); + + malfunction.addMalfunctionSign(sign); + } + + }while(! (signElement = signElement.nextSiblingElement()).isNull()); + + task.addMalfunction(malfunction); + } + + }while(! (malfunctionElement = malfunctionElement.nextSiblingElement()).isNull()); + + listTaskAmmFim.append(task); + } + }while (! (taskElement = taskElement.nextSiblingElement()).isNull()); + } +} + +void FIMtasksWidget::updateListWidget() +{ + for(TaskAmmFim taskFim : listTaskAmmFim) + { + addTaskFimToListWidget(taskFim); + } +} + +void FIMtasksWidget::addTaskFimToListWidget(TaskAmmFim taskFim) +{ + +} diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.h b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.h new file mode 100644 index 0000000..72f3b0d --- /dev/null +++ b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.h @@ -0,0 +1,33 @@ +#ifndef FIMTASKSWIDGET_H +#define FIMTASKSWIDGET_H + +#include +#include "tasksAmmFim.h" + +namespace Ui { +class FIMtasksWidget; +} + +class FIMtasksWidget : public QWidget +{ + Q_OBJECT + +public: + explicit FIMtasksWidget(QWidget *parent = nullptr); + ~FIMtasksWidget(); + +public: + void loadTasksAmmFimFromXML(); + void updateListWidget(); + void addTaskFimToListWidget(TaskAmmFim taskFim); + + +public: + QString userName; + QList listTaskAmmFim; + +private: + Ui::FIMtasksWidget *ui; +}; + +#endif // FIMTASKSWIDGET_H diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.ui b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.ui new file mode 100644 index 0000000..2170783 --- /dev/null +++ b/DB_IaT/InstructorsAndTrainees/docTasks/fimtaskswidget.ui @@ -0,0 +1,102 @@ + + + FIMtasksWidget + + + + 0 + 0 + 400 + 409 + + + + Form + + + + + + + + FIM + + + + + + + + ID + + + + + + + + + + Type + + + + + + + + + + + + List of tasks + + + + + + + + + + + + Title + + + + + + + + + + + + + + + + + + Signs + + + + + + + Malfunctions + + + + + + + + + + + + + diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.cpp b/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.cpp new file mode 100644 index 0000000..2ebb064 --- /dev/null +++ b/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.cpp @@ -0,0 +1,38 @@ +#include "tasksAmmFim.h" +#include +#include +#include + + +void TaskAmmFim::initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date) +{ + this->id = id; + this->type = type; + this->title = title; + this->status = status; + this->created_date = created_date; + this->changed_date = changed_date; +} + +void TaskAmmFim::addMalfunction(Malfunction malfunction) +{ + malfunctionList.append(malfunction); +} + +void Malfunction::initialize(QString dmCode, QString num, QString description) +{ + this->dmCode = dmCode; + this->num = num; + this->description = description; +} + +void Malfunction::addMalfunctionSign(MalfunctionSign sign) +{ + malfunctionSigns.append(sign); +} + +void MalfunctionSign::initialize(int type, QString description) +{ + this->type = type; + this->description = description; +} diff --git a/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.h b/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.h new file mode 100644 index 0000000..01ee7de --- /dev/null +++ b/DB_IaT/InstructorsAndTrainees/docTasks/tasksAmmFim.h @@ -0,0 +1,102 @@ +#ifndef TASKSAMMFIM_H +#define TASKSAMMFIM_H + +#include +#include + +class ProcedureID +{ +public: + ProcedureID(){}; + ~ProcedureID(){}; +public: + QString doc; // "amm", "fim" + QString dmCode; + QString title; + QString result; // "" - нет результата, "viewed" - процедура изучена (просмотрена при отсутствующем сценарии), "completed" - выполнена (в т.ч. режим "контроль" сценария) +}; + +class MalfunctionSign // признак неисправности +{ +public: + MalfunctionSign(){}; + ~MalfunctionSign(){}; +public: + void initialize(int type, QString description); +public: + int type; // "1" - аварийно-сигнальные сообщения, "2" - сообщения БСТО, + // "3" - сигнализация СЭИ, "4" - локальная сигнализация, "5" - наблюдаемая неисправность + QString description; // описание (напр. "ЭРРД, 25, DOOR_FAIL_TO_CLOSE" - для БСТО) +}; + +class Malfunction // неисправность +{ +public: + Malfunction(){}; + ~Malfunction(){}; +public: + void initialize(QString dmCode, QString num, QString description); + void addMalfunctionSign(MalfunctionSign sign); +public: + QString dmCode; // dmCode процедуры + QString num; // номер по-порядку в пункте "2. Возможные причины" процедуры + QString description; // описание + QList malfunctionSigns;// список соответствующих неисправности признаков +}; + +class FIMReportItem +{ +public: + FIMReportItem(){}; + ~FIMReportItem(){}; +public: + QString title; // текст, вводимый обучаемым + ProcedureID procedure; // ссылка на процедуру, при необходимости +}; + +class FIMReport +{ +public: + FIMReport(){}; + ~FIMReport(){}; +public: + QList itemList; +}; + +class TaskAmmFim +{ +public: + TaskAmmFim(){}; + ~TaskAmmFim(){}; +public: + void initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date); + void addMalfunction(Malfunction malfunction); +public: + + int id; // для идентификации в БД + + QString type; // "amm" - процедура из Руководства по технической эксплуатации + // "fim" - поиск и устранение неисправностей + + QString title; // название задания: + // для "amm" - берётся из титула процедуры + // для "fim" - вводится вручную + + QString status; // "new" - задание не выполнено + // "checkup" - выполнено, на проверке у инструктора (только для "fim") + // "failed" - инструктором проверено, выполнено неверно (только для "fim") + // "completed" - выполнено корректно + + QString created_date; // дата создания задания инструктором ("new") + // (при записи в базу, даты ставить по времени сервера, а не те, что присланы от клиента) + QString changed_date; // дата крайнего изменения статуса ("checkup", "failed", "completed") + + // amm: + ProcedureID ammProcedure; // ссылка на процедуру в AMM + + // fim: + QList malfunctionList; // список неисправностей + FIMReport report; // отчет по выполнению "fim" +}; + +#endif // TASKSAMMFIM_H diff --git a/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index 620c695..1a66ac1 100644 --- a/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -54,12 +54,14 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : docTasksWidget = new DocTasksWidget(this); + fIMtasksWidget = new FIMtasksWidget(this); ui->horizontalLayout_3->addWidget(viewerTrainees); ui->horizontalLayout_3->addWidget(messangerWidget); ui->verticalLayout_1->addWidget(viewerInstructors); ui->verticalLayout_2->addWidget(docTasksWidget); + ui->verticalLayout_2->addWidget(fIMtasksWidget); viewerTrainees->setMinimumHeight(800); viewerInstructors->setMinimumSize(1800, 300); diff --git a/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h b/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h index e8aa0ad..4f822da 100644 --- a/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -8,6 +8,7 @@ #include "viewerinstructors.h" #include "messangerwidget.h" #include "doctaskswidget.h" +#include "fimtaskswidget.h" #include "connectortoserver.h" Q_DECLARE_METATYPE(QList) @@ -76,6 +77,7 @@ private: ViewerInstructors* viewerInstructors; MessangerWidget* messangerWidget; DocTasksWidget* docTasksWidget; + FIMtasksWidget* fIMtasksWidget; bool adminMode; QString loginInstructorLoggedInLocal; diff --git a/DB_LMS/DataBaseLMS/CMakeLists.txt.user b/DB_LMS/DataBaseLMS/CMakeLists.txt.user index 304342f..c323c44 100644 --- a/DB_LMS/DataBaseLMS/CMakeLists.txt.user +++ b/DB_LMS/DataBaseLMS/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/GUIdataBaseLMS/GUIdataBaseLMS/CMakeLists.txt.user b/GUIdataBaseLMS/GUIdataBaseLMS/CMakeLists.txt.user index 7e85125..dcc7012 100644 --- a/GUIdataBaseLMS/GUIdataBaseLMS/CMakeLists.txt.user +++ b/GUIdataBaseLMS/GUIdataBaseLMS/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/ServerLMS/ServerLMS/CMakeLists.txt.user b/ServerLMS/ServerLMS/CMakeLists.txt.user index fb1c7af..90d3e3a 100644 --- a/ServerLMS/ServerLMS/CMakeLists.txt.user +++ b/ServerLMS/ServerLMS/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/TestServerLMS/TestServerLMS/CMakeLists.txt.user b/TestServerLMS/TestServerLMS/CMakeLists.txt.user index be2302b..9a0ba24 100644 --- a/TestServerLMS/TestServerLMS/CMakeLists.txt.user +++ b/TestServerLMS/TestServerLMS/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId