taskFIM записывается в базу с Malfunction

This commit is contained in:
krivoshein
2025-01-30 16:50:21 +03:00
parent baef585b46
commit e346757864
4 changed files with 80 additions and 7 deletions

View File

@@ -521,13 +521,43 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee) int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
{ {
QString queryStr = QString("INSERT INTO public.tasks_fim (title, trainee_task) " QString queryStr;
bool resBool = false;
resBool = db->transaction();
queryStr = QString("INSERT INTO public.tasks_fim (title, trainee_task) "
"VALUES ('%1', %2) " "VALUES ('%1', %2) "
"RETURNING tasks_fim.task_id").arg( "RETURNING tasks_fim.task_id").arg(
task.title, task.title,
QString::number(id_trainee)); QString::number(id_trainee));
return queryExecInt(queryStr); int task_id = queryExecInt(queryStr);
if(!task_id)
{
resBool = db->rollback();
return 0;
}
for(Malfunction malfanction : task.malfunctionList)
{
queryStr = QString("INSERT INTO public.malfunctions (num, dm_code, description, task_fim_malf) "
"VALUES ('%1', '%2', '%3', %4) "
"RETURNING malfunctions.malfunction_id").arg(
malfanction.num,
malfanction.dmCode,
malfanction.description,
QString::number(task_id));
if(!queryExecInt(queryStr))
{
resBool = db->rollback();
return 0;
}
}
resBool = db->commit();
return task_id;
} }
int DataBaseLMS::updateTaskFIM(TaskAmmFim task) int DataBaseLMS::updateTaskFIM(TaskAmmFim task)

View File

@@ -201,6 +201,11 @@ QByteArray DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id
xmlWriter.writeEndElement(); xmlWriter.writeEndElement();
xmlWriter.writeEndDocument(); xmlWriter.writeEndDocument();
QFile file("QueryToDB.xml");
file.open(QIODevice::WriteOnly);
file.write(array);
file.close();
return array; return array;
} }

View File

@@ -42,7 +42,7 @@ void ProcessParser::read(ClientHandler *client, QByteArray array)
else if(xmlReader.name() == "QueryToDB") else if(xmlReader.name() == "QueryToDB")
{//Запрос к базе данных от клиента {//Запрос к базе данных от клиента
queryToDb(xmlReader,client); queryToDb(xmlReader,client, array);
} }
else if(xmlReader.name() == "QueryTasksXML") else if(xmlReader.name() == "QueryTasksXML")
{//Запрос файла XML с задачами {//Запрос файла XML с задачами
@@ -92,6 +92,36 @@ void ProcessParser::clientDataInfo(QXmlStreamReader &xmlReader,ClientHandler *cl
processingSystem->setCurrentDataInfo(dataInfo); processingSystem->setCurrentDataInfo(dataInfo);
} }
TaskAmmFim ProcessParser::xmlParserQueryToDB_ASSIGN_TASK_FIM_TO_TRAINEE(QByteArray array)
{
TaskAmmFim task;
QDomDocument commonDOM;
commonDOM.setContent(array);
QDomNode mainNode = commonDOM.namedItem("QueryToDB");
task.title = mainNode.toElement().attribute("title");
for(int i = 0; i < mainNode.childNodes().count(); i++)
{
QDomNode malfunctionNode = mainNode.childNodes().at(i);
if(malfunctionNode.nodeName() == "malfunction")
{//Неисправность
Malfunction malfunction;
malfunction.num = malfunctionNode.toElement().attribute("num");
malfunction.dmCode = malfunctionNode.toElement().attribute("dmCode");
malfunction.description = malfunctionNode.toElement().attribute("description");
task.malfunctionList.append(malfunction);
}
}
return task;
}
void ProcessParser::clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client) void ProcessParser::clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client)
{ {
ClientAutorization clientAutorization; ClientAutorization clientAutorization;
@@ -156,7 +186,7 @@ void ProcessParser::toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *c
processingSystem->processingToClientMessage(client, toClientMessage); processingSystem->processingToClientMessage(client, toClientMessage);
} }
void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client) void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client, QByteArray array)
{ {
ClientQueryToDB queryToDB; ClientQueryToDB queryToDB;
int id = 0; int id = 0;
@@ -174,7 +204,13 @@ void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client)
//addTextToLogger(name + ": " + value); //addTextToLogger(name + ": " + value);
if(name == "TypeQuery") if(name == "TypeQuery")
{
queryToDB.typeQuery = (TypeQueryToDB)value.toInt(); queryToDB.typeQuery = (TypeQueryToDB)value.toInt();
if(queryToDB.typeQuery == TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE)
{
task = xmlParserQueryToDB_ASSIGN_TASK_FIM_TO_TRAINEE(array);
}
}
else if(name == "id") else if(name == "id")
id = value.toInt(); id = value.toInt();
else else
@@ -238,8 +274,8 @@ void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client)
task.ammProcedure.dmCode = value; task.ammProcedure.dmCode = value;
break; break;
case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE: case TypeQueryToDB::TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE:
if(name == "title") //if(name == "title")
task.title = value; //task.title = value;
break; break;
}; };
} }

View File

@@ -22,11 +22,13 @@ private:
void clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client); void clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientDeAuth(QXmlStreamReader &xmlReader,ClientHandler *client); void clientDeAuth(QXmlStreamReader &xmlReader,ClientHandler *client);
void toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client); void toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client);
void queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client); void queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client, QByteArray array = QByteArray());
void queryTasksXML(QXmlStreamReader &xmlReader,ClientHandler *client); void queryTasksXML(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client); void clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientNotify(QXmlStreamReader &xmlReader,ClientHandler *client); void clientNotify(QXmlStreamReader &xmlReader,ClientHandler *client);
void clientDataInfo(QXmlStreamReader &xmlReader, ClientHandler *client); void clientDataInfo(QXmlStreamReader &xmlReader, ClientHandler *client);
TaskAmmFim xmlParserQueryToDB_ASSIGN_TASK_FIM_TO_TRAINEE(QByteArray array);
}; };
#endif // PROCESSPARSER_H #endif // PROCESSPARSER_H