Перед доработкой удаления задач

This commit is contained in:
2025-05-27 09:49:45 +03:00
parent 25d11dc88f
commit 5a3ba9a75c
5 changed files with 89 additions and 2 deletions

View File

@@ -663,12 +663,32 @@ int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
malfanction.description,
QString::number(task_id));
int malfunction_id = queryExecInt(queryStr);
if(!malfunction_id)
{
resBool = db->rollback();
return 0;
}
//Sign
for(MalfunctionSign sign : malfanction.malfunctionSigns)
{
sign.description = sign.description.replace("'", "''"); //Задваиваем одинарные кавычки
queryStr = QString("INSERT INTO public.malf_sign (type, description, malf_malf_sign) "
"VALUES ('%1', '%2', %3) "
"RETURNING malf_sign.sign_id").arg(
QString::number(sign.type),
sign.description,
QString::number(malfunction_id));
if(!queryExecInt(queryStr))
{
resBool = db->rollback();
return 0;
}
}
}
resBool = db->commit();
return task_id;
@@ -831,11 +851,33 @@ QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
while (queryMalf.next())
{//Неисправность
Malfunction malfanction;
int malfunction_id = 0;
malfunction_id = queryMalf.value(0).toString().toInt();
malfanction.num = queryMalf.value(1).toString();
malfanction.dmCode = queryMalf.value(2).toString();
malfanction.description = queryMalf.value(3).toString();
//Выгребаем сигналы для этой неисправности
queryStr = QString("SELECT malf_sign.sign_id, malf_sign.type, malf_sign.description "
"FROM public.malf_sign "
"WHERE malf_malf_sign = %1 "
"ORDER BY malf_sign.sign_id ASC").arg(
QString::number(malfunction_id));
QSqlQuery querySign = QSqlQuery(*db);
if(queryExec(queryStr, &querySign))
{
while (querySign.next())
{//Сигналы
MalfunctionSign sign;
sign.type = querySign.value(1).toString().toInt();
sign.description = querySign.value(2).toString();
malfanction.malfunctionSigns.append(sign);
};
}
task.addMalfunction(malfanction);
};
}

View File

@@ -191,6 +191,15 @@ QByteArray DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id
xmlWriter.writeAttribute("dmCode", malfunction.dmCode);
xmlWriter.writeAttribute("num", malfunction.num);
xmlWriter.writeAttribute("description", malfunction.description);
for(MalfunctionSign sign : malfunction.malfunctionSigns)
{
xmlWriter.writeStartElement("malfunctionSign");
xmlWriter.writeAttribute("type", QString::number(sign.type));
xmlWriter.writeAttribute("description", sign.description);
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
}
}

View File

@@ -702,6 +702,19 @@ void RecognizeSystem::xmlParserQueryToDB(PacketType packetType, QByteArray array
malfunction.dmCode = malfOrReportNode.toElement().attribute("dmCode");
malfunction.description = malfOrReportNode.toElement().attribute("description");
for(int s = 0; s < malfOrReportNode.childNodes().count(); s++)
{
QDomNode signNode = malfOrReportNode.childNodes().at(s);
if(signNode.nodeName() == "malfunctionSign")
{
MalfunctionSign sign;
sign.type = signNode.toElement().attribute("type").toInt();
sign.description = signNode.toElement().attribute("description");
malfunction.malfunctionSigns.append(sign);
}
}
task.malfunctionList.append(malfunction);
}
else

View File

@@ -152,6 +152,14 @@ QByteArray DBAnswerParser::listTasksFIMofTrainee(bool result, QList<TaskAmmFim>
malfunctionNode.toElement().setAttribute("dmCode", malfunction.dmCode);
malfunctionNode.toElement().setAttribute("num", malfunction.num);
malfunctionNode.toElement().setAttribute("description", malfunction.description);
for(MalfunctionSign sign : malfunction.malfunctionSigns)
{//Сигналы
QDomNode signNode = commonDOM.createElement("malfunctionSign");
malfunctionNode.appendChild(signNode);
signNode.toElement().setAttribute("type", sign.type);
signNode.toElement().setAttribute("description", sign.description);
}
}

View File

@@ -240,6 +240,21 @@ TaskAmmFim ProcessParser::xmlParserQueryToDB_ASSIGN_TASK_FIM_TO_TRAINEE(QByteArr
malfunction.dmCode = malfunctionNode.toElement().attribute("dmCode");
malfunction.description = malfunctionNode.toElement().attribute("description");
//Сигналы
for(int j = 0; j < malfunctionNode.childNodes().count(); j++)
{
QDomNode signNode = malfunctionNode.childNodes().at(j);
if(signNode.nodeName() == "malfunctionSign")
{
MalfunctionSign sign;
sign.type = signNode.toElement().attribute("type").toInt();
sign.description = signNode.toElement().attribute("description");
malfunction.malfunctionSigns.append(sign);
}
}
task.malfunctionList.append(malfunction);
}
}