mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
передается список ПП в sendQueryToDB для отправки
This commit is contained in:
@@ -57,6 +57,8 @@ kanban-plugin: board
|
|||||||
- [ ] Зарефакторить databaselms_PostgreSQL.cpp
|
- [ ] Зарефакторить databaselms_PostgreSQL.cpp
|
||||||
(возможно, нужно использовать транзакции при восстановлении БД!)
|
(возможно, нужно использовать транзакции при восстановлении БД!)
|
||||||
- [ ] При долгой работе загибается главное окно (предположительно из-за лога)
|
- [ ] При долгой работе загибается главное окно (предположительно из-за лога)
|
||||||
|
- [ ] Отображать текущую версию data в статус баре
|
||||||
|
- [ ] Сделать крутилку на начальную загрузку Сервера
|
||||||
|
|
||||||
|
|
||||||
## GUI Messenger
|
## GUI Messenger
|
||||||
|
|||||||
@@ -5,6 +5,22 @@
|
|||||||
#include <QList>
|
#include <QList>
|
||||||
#include "DataBaseLMS_global.h"
|
#include "DataBaseLMS_global.h"
|
||||||
|
|
||||||
|
struct ModeList
|
||||||
|
{
|
||||||
|
bool demo = false;
|
||||||
|
bool train = false;
|
||||||
|
bool exam = false;
|
||||||
|
bool autoM = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SubProc
|
||||||
|
{
|
||||||
|
QString dmCode;
|
||||||
|
QString title;
|
||||||
|
|
||||||
|
ModeList modeList;
|
||||||
|
};
|
||||||
|
|
||||||
class DATABASELMS_EXPORT ProcedureID
|
class DATABASELMS_EXPORT ProcedureID
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -105,6 +121,8 @@ public:
|
|||||||
QList<Malfunction> malfunctionList; // список неисправностей
|
QList<Malfunction> malfunctionList; // список неисправностей
|
||||||
FIMReport report; // отчет по выполнению "fim"
|
FIMReport report; // отчет по выполнению "fim"
|
||||||
|
|
||||||
|
QList<SubProc> listSubProc;
|
||||||
|
|
||||||
static int lastID;
|
static int lastID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -362,10 +362,47 @@ void AMMtasksWidget::assignTaskAMMtoTrainee()
|
|||||||
|
|
||||||
if(taskNew.getID())
|
if(taskNew.getID())
|
||||||
{
|
{
|
||||||
emit signal_AssignedTask();
|
//QList<SubProc> listSubProc;
|
||||||
|
|
||||||
|
if(selectSubProcForAssignTaskAMM(taskNew, &taskNew.listSubProc))
|
||||||
|
{
|
||||||
|
if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &taskNew);
|
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE, idTraineeSelected, &taskNew);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AMMtasksWidget::selectSubProcForAssignTaskAMM(TaskAmmFim taskNew, QList<SubProc>* listSubProc)
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
dlgListSubProc = new DialogListSubProc(connectorToServer, this);
|
||||||
|
dlgListSubProc->setTask(&taskNew);
|
||||||
|
|
||||||
|
switch( dlgListSubProc->exec() )
|
||||||
|
{
|
||||||
|
case QDialog::Accepted:
|
||||||
|
{
|
||||||
|
//Здесь нужно забрать список отмеченных подпроцедур
|
||||||
|
result = dlgListSubProc->getListCheckedSubProc(listSubProc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case QDialog::Rejected:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dlgListSubProc)
|
||||||
|
{
|
||||||
|
delete dlgListSubProc;
|
||||||
|
dlgListSubProc = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void AMMtasksWidget::setCurrentTask(int id)
|
void AMMtasksWidget::setCurrentTask(int id)
|
||||||
{
|
{
|
||||||
@@ -433,7 +470,6 @@ void AMMtasksWidget::on_btnCheck_clicked()
|
|||||||
|
|
||||||
void AMMtasksWidget::on_btnAssignTask_clicked()
|
void AMMtasksWidget::on_btnAssignTask_clicked()
|
||||||
{
|
{
|
||||||
if(SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningYesNo, tr("Assign this task?")).exec() == QDialog::Accepted)
|
|
||||||
assignTaskAMMtoTrainee();
|
assignTaskAMMtoTrainee();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -464,24 +500,8 @@ void AMMtasksWidget::on_treeWidgetDoubleClicked(QTreeWidgetItem *item, int colum
|
|||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{//Отображаем перечень подпроцедур
|
|
||||||
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
|
|
||||||
|
|
||||||
if(!task.getID())
|
|
||||||
return;
|
|
||||||
|
|
||||||
dlgListSubProc = new DialogListSubProc(connectorToServer, this);
|
|
||||||
dlgListSubProc->setTask(&task);
|
|
||||||
dlgListSubProc->exec();
|
|
||||||
|
|
||||||
//if(dlgListSubProc->getFlChanged())
|
|
||||||
//waitAnimationWidget->showWithPlay();
|
|
||||||
|
|
||||||
if(dlgListSubProc)
|
|
||||||
{
|
{
|
||||||
delete dlgListSubProc;
|
assignTaskAMMtoTrainee();
|
||||||
dlgListSubProc = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,14 +65,14 @@ private:
|
|||||||
void loadTasksAMM(bool flRequestFirst = true);
|
void loadTasksAMM(bool flRequestFirst = true);
|
||||||
void assignTaskAMMtoTrainee();
|
void assignTaskAMMtoTrainee();
|
||||||
|
|
||||||
|
bool selectSubProcForAssignTaskAMM(TaskAmmFim taskNew, QList<SubProc>* listSubProc);
|
||||||
|
|
||||||
void setCurrentTask(int id);
|
void setCurrentTask(int id);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive, bool flRequestFirst);
|
void signal_prepareAMMListItems(QByteArray array, bool flOnlyActive, bool flRequestFirst);
|
||||||
void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask);
|
void signal_prepareAMMListItemsForTrainee(QList<TaskAmmFim> listTask);
|
||||||
|
|
||||||
void signal_AssignedTask();
|
|
||||||
|
|
||||||
void signal_stopParserPreparation();
|
void signal_stopParserPreparation();
|
||||||
|
|
||||||
void signal_countTasksAMMforTraineeChanged(int trainee_id, int count);
|
void signal_countTasksAMMforTraineeChanged(int trainee_id, int count);
|
||||||
|
|||||||
@@ -7,12 +7,13 @@ DialogListSubProc::DialogListSubProc(ConnectorToServer* connectorToServer, QWidg
|
|||||||
| Qt::WindowMaximizeButtonHint
|
| Qt::WindowMaximizeButtonHint
|
||||||
| Qt::WindowMinimizeButtonHint
|
| Qt::WindowMinimizeButtonHint
|
||||||
| Qt::WindowCloseButtonHint),
|
| Qt::WindowCloseButtonHint),
|
||||||
listSubProc(nullptr)
|
listSubProcCtrl(nullptr)
|
||||||
{
|
{
|
||||||
listSubProc = new ListSubProc(connectorToServer, this);
|
listSubProcCtrl = new ListSubProc(connectorToServer, this);
|
||||||
|
connect(listSubProcCtrl, &ListSubProc::signal_Accepted, this, &DialogListSubProc::slot_Accepted);
|
||||||
|
|
||||||
QHBoxLayout *layout = new QHBoxLayout(this);
|
QHBoxLayout *layout = new QHBoxLayout(this);
|
||||||
layout->addWidget(listSubProc);
|
layout->addWidget(listSubProcCtrl);
|
||||||
this->setWindowTitle(tr("List subprocedures"));
|
this->setWindowTitle(tr("List subprocedures"));
|
||||||
|
|
||||||
this->setMinimumSize(1400, 700);
|
this->setMinimumSize(1400, 700);
|
||||||
@@ -21,15 +22,25 @@ DialogListSubProc::DialogListSubProc(ConnectorToServer* connectorToServer, QWidg
|
|||||||
|
|
||||||
DialogListSubProc::~DialogListSubProc()
|
DialogListSubProc::~DialogListSubProc()
|
||||||
{
|
{
|
||||||
delete listSubProc;
|
delete listSubProcCtrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogListSubProc::closeEvent(QCloseEvent *event)
|
void DialogListSubProc::closeEvent(QCloseEvent *event)
|
||||||
{
|
{
|
||||||
listSubProc->close();
|
listSubProcCtrl->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DialogListSubProc::slot_Accepted()
|
||||||
|
{
|
||||||
|
this->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogListSubProc::setTask(TaskAmmFim *task)
|
void DialogListSubProc::setTask(TaskAmmFim *task)
|
||||||
{
|
{
|
||||||
listSubProc->setTask(task);
|
listSubProcCtrl->setTask(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DialogListSubProc::getListCheckedSubProc(QList<SubProc>* listSubProc)
|
||||||
|
{
|
||||||
|
return listSubProcCtrl->getListCheckedSubProc(listSubProc);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,15 @@ public:
|
|||||||
|
|
||||||
void closeEvent(QCloseEvent *event) override;
|
void closeEvent(QCloseEvent *event) override;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void slot_Accepted();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setTask(TaskAmmFim* task);
|
void setTask(TaskAmmFim* task);
|
||||||
|
bool getListCheckedSubProc(QList<SubProc>* listSubProcCtrl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ListSubProc* listSubProc;
|
ListSubProc* listSubProcCtrl;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DIALOGLISTSUBPROC_H
|
#endif // DIALOGLISTSUBPROC_H
|
||||||
|
|||||||
@@ -374,7 +374,6 @@ void FIMtasksWidget::assignTaskFIMtoTrainee()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
emit signal_AssignedTask();
|
|
||||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, idTraineeSelected, &taskNew);
|
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE, idTraineeSelected, &taskNew);
|
||||||
|
|
||||||
updateTaskItem(current);
|
updateTaskItem(current);
|
||||||
|
|||||||
@@ -64,8 +64,6 @@ Q_SIGNALS:
|
|||||||
void signal_prepareFIMListItems(QByteArray array);
|
void signal_prepareFIMListItems(QByteArray array);
|
||||||
void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask);
|
void signal_prepareFIMListItemsForTrainee(QList<TaskAmmFim> listTask);
|
||||||
|
|
||||||
void signal_AssignedTask();
|
|
||||||
|
|
||||||
void signal_stopParserPreparation();
|
void signal_stopParserPreparation();
|
||||||
|
|
||||||
void signal_countTasksFIMforTraineeChanged(int trainee_id, int count);
|
void signal_countTasksFIMforTraineeChanged(int trainee_id, int count);
|
||||||
|
|||||||
@@ -69,6 +69,25 @@ void ListSubProc::setTask(TaskAmmFim *task)
|
|||||||
waitAnimationWidget->hideWithStop();
|
waitAnimationWidget->hideWithStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ListSubProc::getListCheckedSubProc(QList<SubProc>* listSubProc)
|
||||||
|
{
|
||||||
|
//Заполнение списка отмеченных ПП
|
||||||
|
for (int i = 0; i < treeWidget->topLevelItemCount(); i++)
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = treeWidget->topLevelItem(i);
|
||||||
|
if(item->checkState(0) == Qt::Checked)
|
||||||
|
{
|
||||||
|
SubProc subProc;
|
||||||
|
subProc.dmCode = item->text(ColumnsTreeSubProc::clmnSP_code);
|
||||||
|
subProc.title = item->text(ColumnsTreeSubProc::clmnSP_title);
|
||||||
|
subProc.modeList = parseCanplay(item->text(ColumnsTreeSubProc::clmnSP_canplay));
|
||||||
|
listSubProc->append(subProc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void ListSubProc::preparationTreeWidget()
|
void ListSubProc::preparationTreeWidget()
|
||||||
{
|
{
|
||||||
treeWidget->setColumnCount(ColumnsTreeSubProc::clmnSP_count);
|
treeWidget->setColumnCount(ColumnsTreeSubProc::clmnSP_count);
|
||||||
@@ -131,6 +150,45 @@ QString ListSubProc::buildCanplay(ModeList modeList)
|
|||||||
return canplay;
|
return canplay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ModeList ListSubProc::parseCanplay(QString canplay)
|
||||||
|
{
|
||||||
|
ModeList modeList;
|
||||||
|
|
||||||
|
if(canplay == "")
|
||||||
|
{
|
||||||
|
modeList.demo = false;
|
||||||
|
modeList.train = false;
|
||||||
|
modeList.exam = false;
|
||||||
|
modeList.autoM = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QStringList list = canplay.split("/");
|
||||||
|
|
||||||
|
if(list.at(0) == "+")
|
||||||
|
modeList.demo = true;
|
||||||
|
else
|
||||||
|
modeList.demo = false;
|
||||||
|
|
||||||
|
if(list.at(1) == "+")
|
||||||
|
modeList.train = true;
|
||||||
|
else
|
||||||
|
modeList.train = false;
|
||||||
|
|
||||||
|
if(list.at(2) == "+")
|
||||||
|
modeList.exam = true;
|
||||||
|
else
|
||||||
|
modeList.exam = false;
|
||||||
|
|
||||||
|
if(list.at(3) == "+")
|
||||||
|
modeList.autoM = true;
|
||||||
|
else
|
||||||
|
modeList.autoM = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return modeList;
|
||||||
|
}
|
||||||
|
|
||||||
void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
|
void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
|
||||||
{
|
{
|
||||||
if(this->task.ammProcedure.dmCode == dmCode)
|
if(this->task.ammProcedure.dmCode == dmCode)
|
||||||
@@ -155,3 +213,8 @@ void ListSubProc::slot_UpdateSubProcForDMCode(QString dmCode)
|
|||||||
waitAnimationWidget->hideWithStop();
|
waitAnimationWidget->hideWithStop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ListSubProc::on_btnAssign_clicked()
|
||||||
|
{
|
||||||
|
emit signal_Accepted();
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,17 +30,25 @@ public:
|
|||||||
void changeEvent(QEvent * event) override;
|
void changeEvent(QEvent * event) override;
|
||||||
|
|
||||||
void setTask(TaskAmmFim* task);
|
void setTask(TaskAmmFim* task);
|
||||||
|
bool getListCheckedSubProc(QList<SubProc>* listSubProc);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void preparationTreeWidget();
|
void preparationTreeWidget();
|
||||||
void reSetHeadTreeWidget();
|
void reSetHeadTreeWidget();
|
||||||
void setWidthColumnsTree();
|
void setWidthColumnsTree();
|
||||||
int calculateWidth_0Column();
|
int calculateWidth_0Column();
|
||||||
QString buildCanplay(ModeList modeList);
|
QString buildCanplay(ModeList modeList); //TODO Дублируется в DocsUpdater (Server)!
|
||||||
|
ModeList parseCanplay(QString canplay); //TODO Дублируется в DocsUpdater (Server)!
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void slot_UpdateSubProcForDMCode(QString dmCode);
|
void slot_UpdateSubProcForDMCode(QString dmCode);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_btnAssign_clicked();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void signal_Accepted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ListSubProc *ui;
|
Ui::ListSubProc *ui;
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_SubProc">
|
<widget class="QLabel" name="label_SubProc">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Subprocedures</string>
|
<string>Select subprocedures allowed to run in Auto mode</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -48,10 +48,42 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_Btn">
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="btnAssign">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>50</width>
|
||||||
|
<height>50</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Assign</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../InstructorsAndTrainees.qrc">
|
||||||
|
<normaloff>:/resources/icons/circleGreen.png</normaloff>:/resources/icons/circleGreen.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>32</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextUnderIcon</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources>
|
||||||
|
<include location="../InstructorsAndTrainees.qrc"/>
|
||||||
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define MODULE_H
|
#define MODULE_H
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include "tasksAmmFim.h"
|
||||||
#include "instructorsAndTrainees_global.h"
|
#include "instructorsAndTrainees_global.h"
|
||||||
|
|
||||||
enum ModuleType
|
enum ModuleType
|
||||||
@@ -10,22 +11,6 @@ enum ModuleType
|
|||||||
TYPE_DM = 1
|
TYPE_DM = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ModeList
|
|
||||||
{
|
|
||||||
bool demo = false;
|
|
||||||
bool train = false;
|
|
||||||
bool exam = false;
|
|
||||||
bool autoM = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct SubProc
|
|
||||||
{
|
|
||||||
QString dmCode;
|
|
||||||
QString title;
|
|
||||||
|
|
||||||
ModeList modeList;
|
|
||||||
};
|
|
||||||
|
|
||||||
class INSTRUCTORSANDTRAINEES_EXPORT Module
|
class INSTRUCTORSANDTRAINEES_EXPORT Module
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
Reference in New Issue
Block a user