Поддержка уникального dataset_id для каждой группы файлов данных обучающей выборки и связь модели с группой файлов данных

This commit is contained in:
Mikhail Chechnev 2024-11-01 13:02:28 +03:00
parent f35d39fefa
commit 5f1aeddf6c
10 changed files with 406 additions and 94 deletions

View File

@ -33,8 +33,6 @@ create or replace package UDO_PKG_EQUIPDS as
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
);
@ -75,6 +73,14 @@ create or replace package UDO_PKG_EQUIPDS as
NRN in number -- Регистрационный номер
);
/* Клиентское получение списка доступных выборок данных "Выборки данных оборудования (классы оборудования)" */
procedure CM_DATASET_LIST
(
NRN in number, -- Регистрационный номер
NSTATUS in number := null, -- Статус (null - все, см. константы UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_*)
COUT out clob -- Сериализованный список
);
/* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_LIST
(
@ -106,7 +112,8 @@ create or replace package UDO_PKG_EQUIPDS as
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_SEND_MD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
NDATASET_ID in number -- Идентификатор выборки
);
/* Список "Выборки данных оборудования (классы оборудования, модели)" */
@ -122,6 +129,7 @@ create or replace package UDO_PKG_EQUIPDS as
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NDATASET_ID in number, -- Идентификатор выборки
NRN out number -- Регистрационный номер
);
@ -246,6 +254,13 @@ create or replace package body UDO_PKG_EQUIPDS as
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
begin
/* Проверим параметры */
if (SCODE is null) then
P_EXCEPTION(0, 'Не указан мнемокод.');
end if;
if (SNAME is null) then
P_EXCEPTION(0, 'Не указано наименование.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_INSERT');
/* Добавляем запись */
@ -279,15 +294,36 @@ create or replace package body UDO_PKG_EQUIPDS as
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
NEQUIPDSCMML PKG_STD.TREF; -- Рег. номер модели
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
begin
/* Проверим параметры */
if (SEQUIPDS is null) then
P_EXCEPTION(0, 'Не указана выборка данных.');
end if;
if (SEQOBJKIND is null) then
P_EXCEPTION(0, 'Не указан класс оборудования.');
end if;
if (SDICMUNTS is null) then
P_EXCEPTION(0, 'Не указана единица измерения выборки.');
end if;
if (SUSERPROCS_DATA is null) then
P_EXCEPTION(0, 'Не указана процедура формирования данных выборки.');
end if;
if ((SEXSSERVICE_UPLOAD is null) or (SEXSSERVICEFN_UPLOAD is null)) then
P_EXCEPTION(0, 'Не указана функция обмена для выгрузки данных.');
end if;
if ((SEXSSERVICE_SEND_MD is null) or (SEXSSERVICEFN_SEND_MD is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для передачи внешней системе.');
end if;
if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для обработки внешней системой.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_MAKE');
/* Проверим наличие такой выборки */
@ -318,17 +354,6 @@ create or replace package body UDO_PKG_EQUIPDS as
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ,
NRN => NEQUIPDSCM);
end if;
/* Проверим наличие такой модели */
UDO_PKG_EQUIPDS_BASE.CMML_FIND_BY_TASK(NFLAG_SMART => 1,
NPRN => NEQUIPDSCM,
STASK => STASK,
NPRECISION_P => NPRECISION_P,
NRN => NEQUIPDSCMML);
/* Модели нет */
if (NEQUIPDSCMML is null) then
/* Добавим модель */
CMML_INS(NPRN => NEQUIPDSCM, STASK => STASK, NPRECISION_P => NPRECISION_P, NRN => NEQUIPDSCMML);
end if;
end MAKE;
/* Карточка "Выборки данных оборудования (классы оборудования)" */
@ -515,6 +540,30 @@ create or replace package body UDO_PKG_EQUIPDS as
NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе
NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой
begin
/* Проверим параметры */
if (NPRN is null) then
P_EXCEPTION(0, 'Не указана родительская выборка данных.');
end if;
if (SEQOBJKIND is null) then
P_EXCEPTION(0, 'Не указан класс оборудования.');
end if;
if (SDICMUNTS is null) then
P_EXCEPTION(0, 'Не указана единица измерения выборки.');
end if;
if (SUSERPROCS_DATA is null) then
P_EXCEPTION(0, 'Не указана процедура формирования данных выборки.');
end if;
if ((SEXSSERVICE_UPLOAD is null) or (SEXSSERVICEFN_UPLOAD is null)) then
P_EXCEPTION(0, 'Не указана функция обмена для выгрузки данных.');
end if;
if ((SEXSSERVICE_SEND_MD is null) or (SEXSSERVICEFN_SEND_MD is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для передачи внешней системе.');
end if;
if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then
P_EXCEPTION(0,
'Не указана функция обмена для обработки внешней системой.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_INSERT');
/* Разыменуем ссылки */
@ -558,6 +607,56 @@ create or replace package body UDO_PKG_EQUIPDS as
UDO_PKG_EQUIPDS_BASE.CM_DEL(NRN => NRN);
end CM_DEL;
/* Клиентское получение списка доступных выборок данных "Выборки данных оборудования (классы оборудования)" */
procedure CM_DATASET_LIST
(
NRN in number, -- Регистрационный номер
NSTATUS in number := null, -- Статус (null - все, см. константы UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_*)
COUT out clob -- Сериализованный список
)
is
NCUR integer; -- Курсор документа для результата
XDOC PKG_XMAKE.TNODE; -- Документ для результата
XDSCM_DATASET PKG_XMAKE.TNODE; -- Элемент для выборки данных
begin
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_SELECT');
/* Открываем документ */
NCUR := PKG_XMAKE.OPEN_CURSOR();
/* Обходим выборки, зафиксированные в файлах данных */
for C in (select distinct T.DATASET_ID NDATASET_ID,
T.DATASET_TS DDATASET_TS
from UDO_T_EQUIPDSCMFL T
where T.PRN = NRN
and ((NSTATUS is null) or ((NSTATUS is not null) and (T.STATUS = NSTATUS)))
order by T.DATASET_TS)
loop
XDSCM_DATASET := PKG_XMAKE.CONCAT(ICURSOR => NCUR,
RNODE00 => XDSCM_DATASET,
RNODE01 => PKG_XMAKE.ELEMENT(ICURSOR => NCUR,
SNAME => 'XDSCM_DATASET',
RATTRIBUTES => PKG_XMAKE.ATTRIBUTES(ICURSOR => NCUR,
RATTRIBUTE00 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'value',
SVALUE => C.NDATASET_ID),
RATTRIBUTE01 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'name',
SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID,
DDATASET_TS => C.DDATASET_TS)))));
end loop;
/* Формируем XML-представление ответа */
XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XDSCM_DATASET);
/* Конвертируем в CLOB */
COUT := PKG_XMAKE.SERIALIZE_TO_CLOB(ICURSOR => NCUR,
ITYPE => PKG_XMAKE.CONTENT_,
RNODE => XDOC,
RHEADER => PKG_XHEADER.WRAP_ALL(SVERSION => PKG_XHEADER.VERSION_1_0_,
SENCODING => PKG_XHEADER.ENCODING_UTF_,
SSTANDALONE => PKG_XHEADER.STANDALONE_YES_));
/* Закрываем документ */
PKG_XMAKE.CLOSE_CURSOR(ICURSOR => NCUR);
end CM_DATASET_LIST;
/* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_LIST
(
@ -578,6 +677,10 @@ create or replace package body UDO_PKG_EQUIPDS as
SCAPTION => 'Рег. номер',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDATASET',
SCAPTION => 'Выборка',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SFILE_NAME',
SCAPTION => 'Имя',
@ -598,19 +701,25 @@ create or replace package body UDO_PKG_EQUIPDS as
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SACTIONS',
SCAPTION => 'Действия',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
/* Обходим данные */
for C in (select T.RN NRN,
T.FILE_NAME SFILE_NAME,
T.DESCR SDESCR,
T.STATUS NSTATUS,
T.ERR SERR
for C in (select T.RN NRN,
T.DATASET_ID NDATASET_ID,
T.DATASET_TS DDATASET_TS,
T.FILE_NAME SFILE_NAME,
T.DESCR SDESCR,
T.STATUS NSTATUS,
T.ERR SERR
from UDO_T_EQUIPDSCMFL T
where T.PRN = NEQUIPDSCM
order by T.RN)
loop
/* Добавляем колонки с данными */
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => C.NRN, BCLEAR => true);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW,
SNAME => 'SDATASET',
SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID,
DDATASET_TS => C.DDATASET_TS));
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SFILE_NAME', SVALUE => C.SFILE_NAME);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SDESCR', SVALUE => C.SDESCR);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
@ -648,6 +757,7 @@ create or replace package body UDO_PKG_EQUIPDS as
NCMFL PKG_STD.TREF; -- Рег. номер добавленного файла данных
NFILES_CNT PKG_STD.TNUMBER := 0; -- Количество найденных файлов выборки
NCONFIG_CNT PKG_STD.TNUMBER := 0; -- Количество найденных описаний выборки
DDATASET_TS PKG_STD.TLDATE; -- Буфер для времени формирования данных выборки
begin
/* Проверим параметры */
if (COALESCE(NDATASET_IDENT, 0) = 0) then
@ -665,6 +775,8 @@ create or replace package body UDO_PKG_EQUIPDS as
UDO_PKG_EQUIPDS_BASE.CMFL_DEL(NRN => C.RN);
end loop;
end if;
/* Зафиксируем время формирования */
DDATASET_TS := sysdate;
/* Добавим новые файлы выборки */
for C in (select F.*
from FILE_BUFFER F
@ -674,11 +786,13 @@ create or replace package body UDO_PKG_EQUIPDS as
and F.FILENAME is not null)
loop
NFILES_CNT := NFILES_CNT + 1;
UDO_PKG_EQUIPDS_BASE.CMFL_INS(NPRN => NEQUIPDSCM,
SFILE_NAME => C.FILENAME,
SDESCR => C.DATA,
BDATASET => C.BDATA,
NRN => NCMFL);
UDO_PKG_EQUIPDS_BASE.CMFL_INS(NPRN => NEQUIPDSCM,
SFILE_NAME => C.FILENAME,
SDESCR => C.DATA,
BDATASET => C.BDATA,
NDATASET_ID => NDATASET_IDENT,
DDATASET_TS => DDATASET_TS,
NRN => NCMFL);
end loop;
/* Добавим описание выборки */
for C in (select F.*
@ -751,19 +865,25 @@ create or replace package body UDO_PKG_EQUIPDS as
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_SEND_MD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
NDATASET_ID in number -- Идентификатор выборки
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
NIDENT PKG_STD.TREF; -- Идентификатор выбранных файлов
NTMP PKG_STD.TREF; -- Рег. номер записи буфера
begin
/* Проверим параметры */
if (NDATASET_ID is null) then
P_EXCEPTION(0, 'Не указана выборка.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCMFL', SACTION => 'UDO_EQUIPDSCMFL_SEND_MD');
/* Обходим файлы данных для передаче внешней системе */
for C in (select T.RN NRN
from UDO_T_EQUIPDSCMFL T
where T.PRN = NEQUIPDSCM
and T.DATASET_ID = NDATASET_ID
and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_UPLOADED)
loop
/* Сформируем идентификатор выборки, если ещё не делали этого */
@ -779,7 +899,7 @@ create or replace package body UDO_PKG_EQUIPDS as
'Нет данных для передачи внешней системе. Сначала необходимо выполнить передачу данных на сервер.');
end if;
/* Ставим задачу на передачу внешней системе */
UDO_PKG_EQUIPDS_DATAPROCESS.SEND_MD(NCOMPANY => NCOMPANY, NIDENT=> NIDENT, NEQUIPDSCM => NEQUIPDSCM);
UDO_PKG_EQUIPDS_DATAPROCESS.SEND_MD(NCOMPANY => NCOMPANY, NIDENT => NIDENT, NEQUIPDSCM => NEQUIPDSCM);
/* Очищаем выборку */
P_SELECTLIST_CLEAR(NIDENT => NIDENT);
end CMFL_SEND_MD;
@ -808,7 +928,8 @@ create or replace package body UDO_PKG_EQUIPDS as
SNAME => 'STASK',
SCAPTION => 'Задача',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SHINT => 'Алгоритм прогонозирования модели:<br>' || UDO_PKG_EQUIPDS_BASE.CMML_TASK_HINT());
SHINT => 'Алгоритм прогонозирования модели:<br>' ||
UDO_PKG_EQUIPDS_BASE.CMML_TASK_HINT());
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NPRECISION_P',
SCAPTION => 'Точность (план)',
@ -817,6 +938,10 @@ create or replace package body UDO_PKG_EQUIPDS as
SNAME => 'NPRECISION_F',
SCAPTION => 'Точность (факт)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB);
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDATASET',
SCAPTION => 'Выборка',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATUS',
SCAPTION => 'Состояние',
@ -831,12 +956,17 @@ create or replace package body UDO_PKG_EQUIPDS as
SCAPTION => 'Действия',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
/* Обходим данные */
for C in (select T.RN NRN,
T.TASK STASK,
for C in (select T.RN NRN,
T.TASK STASK,
T.PRECISION_P NPRECISION_P,
T.PRECISION_F NPRECISION_F,
T.STATUS NSTATUS,
T.ERR SERR
T.DATASET_ID NDATASET_ID,
(select F.DATASET_TS
from UDO_T_EQUIPDSCMFL F
where F.DATASET_ID = T.DATASET_ID
and ROWNUM <= 1) DDATASET_TS,
T.STATUS NSTATUS,
T.ERR SERR
from UDO_T_EQUIPDSCMML T
where T.PRN = NEQUIPDSCM
order by T.RN)
@ -846,6 +976,10 @@ create or replace package body UDO_PKG_EQUIPDS as
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STASK', SVALUE => C.STASK);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPRECISION_P', NVALUE => C.NPRECISION_P);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPRECISION_F', NVALUE => C.NPRECISION_F);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW,
SNAME => 'SDATASET',
SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID,
DDATASET_TS => C.DDATASET_TS));
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR);
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');
@ -862,14 +996,29 @@ create or replace package body UDO_PKG_EQUIPDS as
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NDATASET_ID in number, -- Идентификатор выборки
NRN out number -- Регистрационный номер
)
is
begin
/* Проверим параметры */
if (STASK is null) then
P_EXCEPTION(0, 'Не указана задача.');
end if;
if (NPRECISION_P is null) then
P_EXCEPTION(0, 'Не указана точность.');
end if;
if (NDATASET_ID is null) then
P_EXCEPTION(0, 'Не указана выборка.');
end if;
/* Проверим права доступа */
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCMML', SACTION => 'UDO_EQUIPDSCMML_INSERT');
/* Добавляем запись */
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN, STASK => STASK, NPRECISION_P => NPRECISION_P, NRN => NRN);
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN,
STASK => STASK,
NPRECISION_P => NPRECISION_P,
NDATASET_ID => NDATASET_ID,
NRN => NRN);
end CMML_INS;
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
@ -918,7 +1067,7 @@ create or replace package body UDO_PKG_EQUIPDS as
'У класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.');
end if;
/* Отправим запрос на обучение */
--UDO_PKG_EQUIPDS_DATAPROCESS.SEND_RQ(NCOMPANY => NCOMPANY, NEQUIPDSCMML => RCMML.RN);
UDO_PKG_EQUIPDS_DATAPROCESS.SEND_RQ(NCOMPANY => NCOMPANY, NEQUIPDSCMML => RCMML.RN);
end CMML_SEND_RQ;
/* Состояние "Выборки данных оборудования (классы оборудования, модели)" по единице оборудования */

View File

@ -37,6 +37,13 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
NDOCUMENT in number :=null -- Регистрационный номер документа
);
/* Формирование наименования выборки данных по идентификатору и времени формирования */
function UTL_DATASET_MAKE_NAME
(
NDATASET_ID in number, -- Идентификатор данных
DDATASET_TS in date -- Время формирования данных
) return varchar2; -- Наименование выборки
/* Считывание записи "Выборки данных оборудования" по регистрационному номеру */
function GET
(
@ -167,6 +174,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
SFILE_NAME in varchar2, -- Имя файла
SDESCR in varchar2, -- Описание
BDATASET in blob, -- Данные выборки
NDATASET_ID in number, -- Идентификатор данных
DDATASET_TS in date, -- Время формирования данных
NRN out number -- Регистрационный номер
);
@ -204,7 +213,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
(
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NRN out number -- Регистрационный номер
);
@ -213,8 +222,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
procedure CMML_INS
(
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NDATASET_ID in number, -- Идентификатор выборки
NRN out number -- Регистрационный номер
);
@ -222,7 +232,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
procedure CMML_UPD
(
NRN in number, -- Регистрационный номер
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number -- Точность (план)
);
@ -251,7 +261,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
function CMML_TASK_NAME
(
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
) return varchar2; -- Наименование задачи
/* Формирование подсказки для задачи "Выборки данных оборудования (классы оборудования, модели)" */
@ -351,6 +361,17 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
end if;
end UTL_ACCESS;
/* Формирование наименования выборки данных по идентификатору и времени формирования */
function UTL_DATASET_MAKE_NAME
(
NDATASET_ID in number, -- Идентификатор данных
DDATASET_TS in date -- Время формирования данных
) return varchar2 -- Наименование выборки
is
begin
return '' || TO_CHAR(NDATASET_ID) || ' от ' || TO_CHAR(DDATASET_TS, 'dd.mm.yyyy hh24:mi:ss');
end UTL_DATASET_MAKE_NAME;
/* Считывание записи "Выборки данных оборудования" по регистрационному номеру */
function GET
(
@ -679,6 +700,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
SFILE_NAME in varchar2, -- Имя файла
SDESCR in varchar2, -- Описание
BDATASET in blob, -- Данные выборки
NDATASET_ID in number, -- Идентификатор данных
DDATASET_TS in date, -- Время формирования данных
NRN out number -- Регистрационный номер
)
is
@ -687,9 +710,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
NRN := GEN_ID();
/* Добавляем запись */
insert into UDO_T_EQUIPDSCMFL
(RN, PRN, FILE_NAME, DESCR, QUEUE_ID, STATUS, ERR, DATASET)
(RN, PRN, FILE_NAME, DESCR, QUEUE_ID, STATUS, ERR, DATASET, DATASET_ID, DATASET_TS)
values
(NRN, NPRN, SFILE_NAME, SDESCR, null, NCMFL_STATUS_REGISTERED, null, BDATASET);
(NRN, NPRN, SFILE_NAME, SDESCR, null, NCMFL_STATUS_REGISTERED, null, BDATASET, NDATASET_ID, DDATASET_TS);
end CMFL_INS;
/* Базовое удаление "Выборки данных оборудования (классы оборудования, файлы данных)" */
@ -703,10 +726,27 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
/* Считаем запись */
RREC := CMFL_GET(NFLAG_SMART => 0, NRN => NRN);
/* Можно удалять только в статусах: зарегистрирован, успешно загружен на сервер, ошибка загрузки на сервер, успешно загружен во внешнюю систему, при загрузке во внешнюю систему произошла ошибка */
if (RREC.STATUS not in
(NCMFL_STATUS_REGISTERED, NCMFL_STATUS_UPLOADED, NCMFL_STATUS_UPLOAD_ERR, NCMFL_STATUS_SENT, NCMFL_STATUS_SEND_ERR)) then
if (RREC.STATUS not in (NCMFL_STATUS_REGISTERED,
NCMFL_STATUS_UPLOADED,
NCMFL_STATUS_UPLOAD_ERR,
NCMFL_STATUS_SENT,
NCMFL_STATUS_SEND_ERR)) then
P_EXCEPTION(0, 'Файл данных обрабатывается, удаление невозможно.');
end if;
/* Проверим, что нет связанных обученных/обучающихся моделей, иначе - сначала следует удалить модель вручную */
for C in (select T.RN
from UDO_T_EQUIPDSCMML T
where T.DATASET_ID = RREC.DATASET_ID
and T.STATUS <> NCMML_STATUS_REGISTERED)
loop
P_EXCEPTION(0,
'Файлы имеют связанные модели, находящиеся в состоянии отличном от "Зарегистрирована". Сначала необходимо удалить их.');
end loop;
/* Попробуем удалить связанные модели */
for C in (select T.RN from UDO_T_EQUIPDSCMML T where T.DATASET_ID = RREC.DATASET_ID)
loop
CMML_DEL(NRN => C.RN);
end loop;
/* Удалим запись */
delete from UDO_T_EQUIPDSCMFL T where T.RN = NRN;
end CMFL_DEL;
@ -785,7 +825,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
(
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NRN out number -- Регистрационный номер
)
@ -812,27 +852,46 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS
(
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
NPRECISION_P in number, -- Точность (план)
NRN out number -- Регистрационный номер
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number, -- Точность (план)
NDATASET_ID in number, -- Идентификатор выборки
NRN out number -- Регистрационный номер
)
is
NCNT PKG_STD.TNUMBER; -- Счетчик файлов данных выборки
begin
/* Проверим наличие идентификатора выборки в файлах данных */
begin
select count(T.RN)
into NCNT
from UDO_T_EQUIPDSCMFL T
where T.PRN = NPRN
and T.DATASET_ID = NDATASET_ID;
exception
when others then
P_EXCEPTION(0,
'Не удалось проверить корректность идентификатора выборки.');
end;
if (NCNT = 0) then
P_EXCEPTION(0,
'Неверно указан идентификатор выборки (%s).',
COALESCE(TO_CHAR(NDATASET_ID), '<НЕ УКАЗАН>'));
end if;
/* Формируем рег. номер */
NRN := GEN_ID();
/* Добавляем запись */
insert into UDO_T_EQUIPDSCMML
(RN, PRN, TASK, PRECISION_P, PRECISION_F, QUEUE_ID, STATUS, ERR)
(RN, PRN, TASK, PRECISION_P, PRECISION_F, QUEUE_ID, STATUS, ERR, DATASET_ID)
values
(NRN, NPRN, STASK, NPRECISION_P, null, null, NCMML_STATUS_REGISTERED, null);
(NRN, NPRN, STASK, NPRECISION_P, null, null, NCMML_STATUS_REGISTERED, null, NDATASET_ID);
end CMML_INS;
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_UPD
(
NRN in number, -- Регистрационный номер
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NPRECISION_P in number -- Точность (план)
)
is
@ -927,7 +986,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
function CMML_TASK_NAME
(
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*) */
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
) return varchar2 -- Наименование задачи
is
begin

View File

@ -82,7 +82,7 @@ create or replace package UDO_PKG_EQUIPTCF as
DFORECAST_DATE in date, -- Дата получения прогноза
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
SDICMUNTS in varchar2, -- Единица измерения выборки
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*)
COUT out clob -- Данные детальной карточки прогноза
);
@ -785,7 +785,7 @@ text="Проверка прав доступа при формировании
DFORECAST_DATE in date, -- Дата получения прогноза
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
SDICMUNTS in varchar2, -- Единица измерения выборки
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*) */
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*)
COUT out clob -- Данные детальной карточки прогноза
)
is

View File

@ -17,6 +17,10 @@ create table UDO_T_EQUIPDSCMFL
ERR varchar2(4000) default null,
/* Данные */
DATASET blob,
/* Идентификатор данных */
DATASET_ID number(17) not null,
/* Время формирования данных */
DATASET_TS date not null,
/* Ключи */
constraint UDO_C_EQUIPDSCMFL_RN_PK primary key (RN),
constraint UDO_C_EQUIPDSCMFL_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),

View File

@ -17,6 +17,8 @@ create table UDO_T_EQUIPDSCMML
STATUS number(1) default 0 not null,
/* Сообщение об ошибке */
ERR varchar2(4000) default null,
/* Идентификатор данных */
DATASET_ID number(17) not null,
/* Ключи */
constraint UDO_C_EQUIPDSCMML_RN_PK primary key (RN),
constraint UDO_C_EQUIPDSCMML_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),

View File

@ -20,6 +20,7 @@ import {
EquipDataSelectionClassMachineIU,
EquipDataSelectionClassMachineList,
EquipDataSelectionClassMachineCard,
EquipDataSelectionClassMachineFileSendMDDialog,
EquipDataSelectionClassMachineModelIU
} from "./admin_tab_layout"; //Вспомогательные компоненты и вёрстка
import {
@ -43,7 +44,12 @@ const REFRESH_INITIAL = {
};
//Начальное состояние диалогов
const DIALOGS_INITIAL = { dataSelectionIU: false, dataSelectionClassMachineIU: false, dataSelectionClassMachineModelIU: false };
const DIALOGS_INITIAL = {
dataSelectionIU: false,
dataSelectionClassMachineIU: false,
dataSelectionClassMachineFileSendMD: false,
dataSelectionClassMachineModelIU: false
};
//Стили
const STYLES = {
@ -102,10 +108,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
);
//При смене выборки данных
const handleDataSelectionChange = value => {
const handleDataSelectionChange = (value, resetRefresh = true) => {
setDataSelection(value);
setDataSelectionClassMachine(null);
setRefresh(REFRESH_INITIAL);
if (resetRefresh) setRefresh(REFRESH_INITIAL);
};
//При нажатии на "Добавить выборку"
@ -115,7 +121,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
const handleDeleteEquipDataSelection = async () => {
await executeStored({ stored: "UDO_PKG_EQUIPDS.DEL", args: { NRN: equipDataSelection } });
setRefresh(pv => ({ ...pv, dataSelection: pv.dataSelection + 1 }));
setDataSelection(DS_RN_DEFAULT);
handleDataSelectionChange(DS_RN_DEFAULT, false);
};
//При отмене диалога IU выборки
@ -126,7 +132,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
const data = await executeStored({ stored: "UDO_PKG_EQUIPDS.INS", args: { SCODE: values.code, SNAME: values.name } });
setDialogs(pv => ({ ...pv, dataSelectionIU: false }));
setRefresh(pv => ({ ...pv, dataSelection: pv.dataSelection + 1 }));
setDataSelection(data.NRN);
handleDataSelectionChange(data.NRN, false);
};
//При нажатии на класс оборудования
@ -190,8 +196,8 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
if (res.success)
processMakeEquipDataSelectionClassMachineFilesResults(
equipDSCM,
res.outParameters.NDATASET_IDENT,
res.outParameters.NDATASET_CONFIG_IDENT,
res.outParameters?.NDATASET_IDENT,
res.outParameters?.NDATASET_CONFIG_IDENT,
clear
);
}
@ -211,10 +217,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
};
//При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования
const handleSendMdEquipDataSelectionClassMachineFiles = async equipDSCM => {
await executeStored({ stored: "UDO_PKG_EQUIPDS.CMFL_SEND_MD", args: { NEQUIPDSCM: equipDSCM } });
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
};
const handleSendMdEquipDataSelectionClassMachineFiles = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: true }));
//При нажатии на "Добавить модель класса оборудования"
const handleAddEquipDataSelectionClassMachineModel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: true }));
@ -225,6 +228,19 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
setRefresh(pv => ({ ...pv, dataSelectionClassMachineModelsList: pv.dataSelectionClassMachineModelsList + 1 }));
};
//При отмене диалога отправки файла данных фреймворку
const handleEquipDataSelectionClassMachineFileSendMDCancel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: false }));
//При сохранении диалога отправки файла данных фреймворку
const handleEquipDataSelectionClassMachineFileSendMDOk = async values => {
await executeStored({
stored: "UDO_PKG_EQUIPDS.CMFL_SEND_MD",
args: { NEQUIPDSCM: equipDataSelectionClassMachine, NDATASET_ID: values.dataset ? parseInt(values.dataset) : null }
});
setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: false }));
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
};
//При отмене диалога IU модели класса оборудования
const handleEquipDataSelectionClassMachineModelIUCancel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: false }));
@ -235,7 +251,8 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
args: {
NPRN: equipDataSelectionClassMachine,
STASK: values.task,
NPRECISION_P: parseInt(values.precisionP)
NPRECISION_P: values.precisionP ? parseInt(values.precisionP) : null,
NDATASET_ID: values.dataset ? parseInt(values.dataset) : null
}
});
setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: false }));
@ -272,8 +289,16 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
onCancel={handleEquipDataSelectionClassMachineIUCancel}
/>
) : null}
{dialogs.dataSelectionClassMachineFileSendMD ? (
<EquipDataSelectionClassMachineFileSendMDDialog
classMachine={equipDataSelectionClassMachine}
onOk={handleEquipDataSelectionClassMachineFileSendMDOk}
onCancel={handleEquipDataSelectionClassMachineFileSendMDCancel}
/>
) : null}
{dialogs.dataSelectionClassMachineModelIU ? (
<EquipDataSelectionClassMachineModelIU
classMachine={equipDataSelectionClassMachine}
onOk={handleEquipDataSelectionClassMachineModelIUOk}
onCancel={handleEquipDataSelectionClassMachineModelIUCancel}
/>

View File

@ -26,7 +26,7 @@ const useEquipDataSelectionClassMachineList = (dataSelection, refresh) => {
//Подключение к контексту взаимодействия с сервером
const { executeStored } = useContext(BackEndСtx);
//Загрузка данных при изменении зависимостейuse
//Загрузка данных при изменении зависимостей
useEffect(() => {
const loadData = async () => {
try {
@ -171,6 +171,41 @@ const useEquipDataSelectionClassMachineModelsList = (classMachine, refresh) => {
return { equipDataSelectionClassMachineModelsList: data, equipDataSelectionClassMachineModelsListIsLoading: isLoading };
};
//Загрузка выборок данных класса оборудования
const useEquipDataSelectionClassMachineDataSetsList = (classMachine, status = null) => {
//Собственное состояние - флаг загрузки
const [isLoading, setLoading] = useState(false);
//Собственное состояние - данные
const [data, setData] = useState([]);
//Подключение к контексту взаимодействия с сервером
const { executeStored } = useContext(BackEndСtx);
//Загрузка данных при изменении зависимостей
useEffect(() => {
const loadData = async () => {
try {
setLoading(true);
const data = await executeStored({
stored: "UDO_PKG_EQUIPDS.CM_DATASET_LIST",
args: { NRN: classMachine, NSTATUS: status },
respArg: "COUT",
isArray: name => ["XDSCM_DATASET"].includes(name),
loader: false
});
setData(data?.XDSCM_DATASET || []);
} finally {
setLoading(false);
}
};
if (classMachine) loadData();
}, [classMachine, status, executeStored]);
//Вернём данные
return { equipDataSelectionClassMachineDataSetsList: data, equipDataSelectionClassMachineDataSetsListIsLoading: isLoading };
};
//----------------
//Интерфейс модуля
//----------------
@ -179,5 +214,6 @@ export {
useEquipDataSelectionClassMachineList,
useEquipDataSelectionClassMachineCard,
useEquipDataSelectionClassMachineFilesList,
useEquipDataSelectionClassMachineModelsList
useEquipDataSelectionClassMachineModelsList,
useEquipDataSelectionClassMachineDataSetsList
};

View File

@ -53,6 +53,7 @@ import {
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
import { DS_RN_DEFAULT, TASK_LIST } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки
import { useEquipDataSelectionClassMachineDataSetsList } from "./admin_tab_hooks"; //Вспомогательные хуки
//---------
//Константы
@ -407,14 +408,59 @@ EquipDataSelectionClassMachineIU.propTypes = {
onCancel: PropTypes.func
};
//Диалог параметров передачи файлов данных класса оборудования фреймворку
const EquipDataSelectionClassMachineFileSendMDDialog = ({ classMachine, onOk, onCancel }) => {
//Собственное состояние - значения формы
const [values, setValues] = useState({
dataset: null
});
//Доступные выборки данных
const { equipDataSelectionClassMachineDataSetsList } = useEquipDataSelectionClassMachineDataSetsList(classMachine, 2);
//Отработка воода значения в форму
const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value }));
//Генерация содержимого
return (
<Dialog open={true} onClose={() => (onOk ? onCancel() : null)}>
<DialogTitle>Передать фреймворку</DialogTitle>
<DialogContent>
<IUDFormTextField
elementCode={"dataset"}
elementValue={values.dataset}
labelText={"Выборка"}
onChange={handleValueChanged}
list={equipDataSelectionClassMachineDataSetsList}
/>
</DialogContent>
<DialogActions>
<Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button>
<Button onClick={() => (onOk ? onCancel() : null)}>{BUTTONS.CANCEL}</Button>
</DialogActions>
</Dialog>
);
};
//Контроль свойств - Диалог параметров передачи файлов данных класса оборудования фреймворку
EquipDataSelectionClassMachineFileSendMDDialog.propTypes = {
classMachine: PropTypes.number.isRequired,
onOk: PropTypes.func,
onCancel: PropTypes.func
};
//Диалог IU модели класса оборудования выборки данных
const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
const EquipDataSelectionClassMachineModelIU = ({ classMachine, onOk, onCancel }) => {
//Собственное состояние - значения формы
const [values, setValues] = useState({
task: "RUL",
precisionP: null
precisionP: null,
dataset: null
});
//Доступные выборки данных
const { equipDataSelectionClassMachineDataSetsList } = useEquipDataSelectionClassMachineDataSetsList(classMachine);
//Отработка воода значения в форму
const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value }));
@ -437,6 +483,13 @@ const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
onChange={handleValueChanged}
type={"number"}
/>
<IUDFormTextField
elementCode={"dataset"}
elementValue={values.dataset}
labelText={"Выборка"}
onChange={handleValueChanged}
list={equipDataSelectionClassMachineDataSetsList}
/>
</DialogContent>
<DialogActions>
<Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button>
@ -448,6 +501,7 @@ const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
//Контроль свойств - Диалог IU модели класса оборудования выборки данных
EquipDataSelectionClassMachineModelIU.propTypes = {
classMachine: PropTypes.number.isRequired,
onOk: PropTypes.func,
onCancel: PropTypes.func
};
@ -675,6 +729,7 @@ EquipDataSelectionClassMachineCard.propTypes = {
export {
EquipDataSelectionIU,
EquipDataSelectionClassMachineIU,
EquipDataSelectionClassMachineFileSendMDDialog,
EquipDataSelectionClassMachineModelIU,
EquipDataSelectionList,
EquipDataSelectionClassMachineList,

View File

@ -255,9 +255,7 @@ const ForecastTab = ({ onGoToAdmin }) => {
SEXSSERVICE_SEND_MD: values.exsServiceSendMd,
SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd,
SEXSSERVICE_SEND_RQ: values.exsServiceSendRq,
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq,
STASK: values.task,
NPRECISION_P: parseFloat(values.precisionP)
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq
}
});
setDialogs(pv => ({ ...pv, makeEqDataSet: false }));

View File

@ -27,7 +27,7 @@ import {
selectServiceFn,
IUDFormTextField
} from "./eqs_tech_cond_forecast_layout"; //Общие вспомогательные компоненты и вёрстка
import { DS_RN_DEFAULT, TASK_LIST, useEquipDataSelectionList } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки
import { DS_RN_DEFAULT, useEquipDataSelectionList } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки
import { P8PChart } from "../../components/p8p_chart"; //График
//---------
@ -655,9 +655,7 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
exsServiceSendMd: "Загрузкаареймворк",
exsServiceFnSendMd: "Передача данных",
exsServiceSendRq: "Загрузкаареймворк",
exsServiceFnSendRq: "Запрос на обучение",
task: "RUL",
precisionP: 99
exsServiceFnSendRq: "Запрос на обучение"
});
//Отработка воода значения в форму
@ -741,20 +739,6 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
onChange={handleValueChanged}
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)}
/>
<IUDFormTextField
elementCode={"task"}
elementValue={values.task}
labelText={"Задача"}
onChange={handleValueChanged}
list={TASK_LIST}
/>
<IUDFormTextField
elementCode={"precisionP"}
elementValue={values.precisionP}
labelText={"Точность"}
onChange={handleValueChanged}
type={"number"}
/>
</>
) : (
<P8PAppInlineError text="У вас нет прав доступа для обучения моделей. Обратитесь к администратору." />