Поддержка уникального dataset_id для каждой группы файлов данных обучающей выборки и связь модели с группой файлов данных
This commit is contained in:
parent
f35d39fefa
commit
5f1aeddf6c
@ -33,8 +33,6 @@ create or replace package UDO_PKG_EQUIPDS as
|
|||||||
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
|
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
|
||||||
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
|
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
|
||||||
SEXSSERVICEFN_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, -- Регистрационный номер выборки данных оборудования
|
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
|
||||||
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
|
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
|
||||||
);
|
);
|
||||||
@ -75,6 +73,14 @@ create or replace package UDO_PKG_EQUIPDS as
|
|||||||
NRN in number -- Регистрационный номер
|
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
|
procedure CMFL_LIST
|
||||||
(
|
(
|
||||||
@ -106,7 +112,8 @@ create or replace package UDO_PKG_EQUIPDS as
|
|||||||
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
|
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
|
||||||
procedure CMFL_SEND_MD
|
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, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
|
NDATASET_ID in number, -- Идентификатор выборки
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -246,6 +254,13 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
|
||||||
begin
|
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');
|
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, -- Функция обмена для передачи внешней системе
|
SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе
|
||||||
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
|
SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой
|
||||||
SEXSSERVICEFN_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, -- Регистрационный номер выборки данных оборудования
|
NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования
|
||||||
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
|
NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
|
||||||
NEQUIPDSCMML PKG_STD.TREF; -- Рег. номер модели
|
|
||||||
begin
|
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');
|
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,
|
SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ,
|
||||||
NRN => NEQUIPDSCM);
|
NRN => NEQUIPDSCM);
|
||||||
end if;
|
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;
|
end MAKE;
|
||||||
|
|
||||||
/* Карточка "Выборки данных оборудования (классы оборудования)" */
|
/* Карточка "Выборки данных оборудования (классы оборудования)" */
|
||||||
@ -515,6 +540,30 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе
|
NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе
|
||||||
NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой
|
NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой
|
||||||
begin
|
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');
|
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);
|
UDO_PKG_EQUIPDS_BASE.CM_DEL(NRN => NRN);
|
||||||
end CM_DEL;
|
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
|
procedure CMFL_LIST
|
||||||
(
|
(
|
||||||
@ -578,6 +677,10 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
SCAPTION => 'Рег. номер',
|
SCAPTION => 'Рег. номер',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
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,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SFILE_NAME',
|
SNAME => 'SFILE_NAME',
|
||||||
SCAPTION => 'Имя',
|
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,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SACTIONS',
|
SNAME => 'SACTIONS',
|
||||||
SCAPTION => 'Действия',
|
SCAPTION => 'Действия',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
for C in (select T.RN NRN,
|
for C in (select T.RN NRN,
|
||||||
T.FILE_NAME SFILE_NAME,
|
T.DATASET_ID NDATASET_ID,
|
||||||
T.DESCR SDESCR,
|
T.DATASET_TS DDATASET_TS,
|
||||||
T.STATUS NSTATUS,
|
T.FILE_NAME SFILE_NAME,
|
||||||
T.ERR SERR
|
T.DESCR SDESCR,
|
||||||
|
T.STATUS NSTATUS,
|
||||||
|
T.ERR SERR
|
||||||
from UDO_T_EQUIPDSCMFL T
|
from UDO_T_EQUIPDSCMFL T
|
||||||
where T.PRN = NEQUIPDSCM
|
where T.PRN = NEQUIPDSCM
|
||||||
order by T.RN)
|
order by T.RN)
|
||||||
loop
|
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 => '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 => '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 => 'SDESCR', SVALUE => C.SDESCR);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
|
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; -- Рег. номер добавленного файла данных
|
NCMFL PKG_STD.TREF; -- Рег. номер добавленного файла данных
|
||||||
NFILES_CNT PKG_STD.TNUMBER := 0; -- Количество найденных файлов выборки
|
NFILES_CNT PKG_STD.TNUMBER := 0; -- Количество найденных файлов выборки
|
||||||
NCONFIG_CNT PKG_STD.TNUMBER := 0; -- Количество найденных описаний выборки
|
NCONFIG_CNT PKG_STD.TNUMBER := 0; -- Количество найденных описаний выборки
|
||||||
|
DDATASET_TS PKG_STD.TLDATE; -- Буфер для времени формирования данных выборки
|
||||||
begin
|
begin
|
||||||
/* Проверим параметры */
|
/* Проверим параметры */
|
||||||
if (COALESCE(NDATASET_IDENT, 0) = 0) then
|
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);
|
UDO_PKG_EQUIPDS_BASE.CMFL_DEL(NRN => C.RN);
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
|
/* Зафиксируем время формирования */
|
||||||
|
DDATASET_TS := sysdate;
|
||||||
/* Добавим новые файлы выборки */
|
/* Добавим новые файлы выборки */
|
||||||
for C in (select F.*
|
for C in (select F.*
|
||||||
from FILE_BUFFER F
|
from FILE_BUFFER F
|
||||||
@ -674,11 +786,13 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
and F.FILENAME is not null)
|
and F.FILENAME is not null)
|
||||||
loop
|
loop
|
||||||
NFILES_CNT := NFILES_CNT + 1;
|
NFILES_CNT := NFILES_CNT + 1;
|
||||||
UDO_PKG_EQUIPDS_BASE.CMFL_INS(NPRN => NEQUIPDSCM,
|
UDO_PKG_EQUIPDS_BASE.CMFL_INS(NPRN => NEQUIPDSCM,
|
||||||
SFILE_NAME => C.FILENAME,
|
SFILE_NAME => C.FILENAME,
|
||||||
SDESCR => C.DATA,
|
SDESCR => C.DATA,
|
||||||
BDATASET => C.BDATA,
|
BDATASET => C.BDATA,
|
||||||
NRN => NCMFL);
|
NDATASET_ID => NDATASET_IDENT,
|
||||||
|
DDATASET_TS => DDATASET_TS,
|
||||||
|
NRN => NCMFL);
|
||||||
end loop;
|
end loop;
|
||||||
/* Добавим описание выборки */
|
/* Добавим описание выборки */
|
||||||
for C in (select F.*
|
for C in (select F.*
|
||||||
@ -751,19 +865,25 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
|
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
|
||||||
procedure CMFL_SEND_MD
|
procedure CMFL_SEND_MD
|
||||||
(
|
(
|
||||||
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
|
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
|
||||||
|
NDATASET_ID in number -- Идентификатор выборки
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
NIDENT PKG_STD.TREF; -- Идентификатор выбранных файлов
|
NIDENT PKG_STD.TREF; -- Идентификатор выбранных файлов
|
||||||
NTMP PKG_STD.TREF; -- Рег. номер записи буфера
|
NTMP PKG_STD.TREF; -- Рег. номер записи буфера
|
||||||
begin
|
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');
|
UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCMFL', SACTION => 'UDO_EQUIPDSCMFL_SEND_MD');
|
||||||
/* Обходим файлы данных для передаче внешней системе */
|
/* Обходим файлы данных для передаче внешней системе */
|
||||||
for C in (select T.RN NRN
|
for C in (select T.RN NRN
|
||||||
from UDO_T_EQUIPDSCMFL T
|
from UDO_T_EQUIPDSCMFL T
|
||||||
where T.PRN = NEQUIPDSCM
|
where T.PRN = NEQUIPDSCM
|
||||||
|
and T.DATASET_ID = NDATASET_ID
|
||||||
and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_UPLOADED)
|
and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_UPLOADED)
|
||||||
loop
|
loop
|
||||||
/* Сформируем идентификатор выборки, если ещё не делали этого */
|
/* Сформируем идентификатор выборки, если ещё не делали этого */
|
||||||
@ -779,7 +899,7 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
'Нет данных для передачи внешней системе. Сначала необходимо выполнить передачу данных на сервер.');
|
'Нет данных для передачи внешней системе. Сначала необходимо выполнить передачу данных на сервер.');
|
||||||
end if;
|
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);
|
P_SELECTLIST_CLEAR(NIDENT => NIDENT);
|
||||||
end CMFL_SEND_MD;
|
end CMFL_SEND_MD;
|
||||||
@ -808,7 +928,8 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
SNAME => 'STASK',
|
SNAME => 'STASK',
|
||||||
SCAPTION => 'Задача',
|
SCAPTION => 'Задача',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
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,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NPRECISION_P',
|
SNAME => 'NPRECISION_P',
|
||||||
SCAPTION => 'Точность (план)',
|
SCAPTION => 'Точность (план)',
|
||||||
@ -817,6 +938,10 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
SNAME => 'NPRECISION_F',
|
SNAME => 'NPRECISION_F',
|
||||||
SCAPTION => 'Точность (факт)',
|
SCAPTION => 'Точность (факт)',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB);
|
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,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NSTATUS',
|
SNAME => 'NSTATUS',
|
||||||
SCAPTION => 'Состояние',
|
SCAPTION => 'Состояние',
|
||||||
@ -831,12 +956,17 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
SCAPTION => 'Действия',
|
SCAPTION => 'Действия',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
for C in (select T.RN NRN,
|
for C in (select T.RN NRN,
|
||||||
T.TASK STASK,
|
T.TASK STASK,
|
||||||
T.PRECISION_P NPRECISION_P,
|
T.PRECISION_P NPRECISION_P,
|
||||||
T.PRECISION_F NPRECISION_F,
|
T.PRECISION_F NPRECISION_F,
|
||||||
T.STATUS NSTATUS,
|
T.DATASET_ID NDATASET_ID,
|
||||||
T.ERR SERR
|
(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
|
from UDO_T_EQUIPDSCMML T
|
||||||
where T.PRN = NEQUIPDSCM
|
where T.PRN = NEQUIPDSCM
|
||||||
order by T.RN)
|
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 => '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_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 => '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 => '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 => 'SERR', SVALUE => C.SERR);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');
|
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, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
|
NDATASET_ID in number, -- Идентификатор выборки
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
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.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;
|
end CMML_INS;
|
||||||
|
|
||||||
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
@ -918,7 +1067,7 @@ create or replace package body UDO_PKG_EQUIPDS as
|
|||||||
'У класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.');
|
'У класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.');
|
||||||
end if;
|
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;
|
end CMML_SEND_RQ;
|
||||||
|
|
||||||
/* Состояние "Выборки данных оборудования (классы оборудования, модели)" по единице оборудования */
|
/* Состояние "Выборки данных оборудования (классы оборудования, модели)" по единице оборудования */
|
||||||
|
@ -37,6 +37,13 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
NDOCUMENT in number :=null -- Регистрационный номер документа
|
NDOCUMENT in number :=null -- Регистрационный номер документа
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Формирование наименования выборки данных по идентификатору и времени формирования */
|
||||||
|
function UTL_DATASET_MAKE_NAME
|
||||||
|
(
|
||||||
|
NDATASET_ID in number, -- Идентификатор данных
|
||||||
|
DDATASET_TS in date -- Время формирования данных
|
||||||
|
) return varchar2; -- Наименование выборки
|
||||||
|
|
||||||
/* Считывание записи "Выборки данных оборудования" по регистрационному номеру */
|
/* Считывание записи "Выборки данных оборудования" по регистрационному номеру */
|
||||||
function GET
|
function GET
|
||||||
(
|
(
|
||||||
@ -167,6 +174,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
SFILE_NAME in varchar2, -- Имя файла
|
SFILE_NAME in varchar2, -- Имя файла
|
||||||
SDESCR in varchar2, -- Описание
|
SDESCR in varchar2, -- Описание
|
||||||
BDATASET in blob, -- Данные выборки
|
BDATASET in blob, -- Данные выборки
|
||||||
|
NDATASET_ID in number, -- Идентификатор данных
|
||||||
|
DDATASET_TS in date, -- Время формирования данных
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -204,7 +213,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
(
|
(
|
||||||
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
||||||
NPRN in number, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
);
|
);
|
||||||
@ -213,8 +222,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
procedure CMML_INS
|
procedure CMML_INS
|
||||||
(
|
(
|
||||||
NPRN in number, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
|
NDATASET_ID in number, -- Идентификатор выборки
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -222,7 +232,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
procedure CMML_UPD
|
procedure CMML_UPD
|
||||||
(
|
(
|
||||||
NRN in number, -- Регистрационный номер
|
NRN in number, -- Регистрационный номер
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number -- Точность (план)
|
NPRECISION_P in number -- Точность (план)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -251,7 +261,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
|||||||
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
function CMML_TASK_NAME
|
function CMML_TASK_NAME
|
||||||
(
|
(
|
||||||
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
|
||||||
) return varchar2; -- Наименование задачи
|
) return varchar2; -- Наименование задачи
|
||||||
|
|
||||||
/* Формирование подсказки для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Формирование подсказки для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
@ -351,6 +361,17 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
end if;
|
end if;
|
||||||
end UTL_ACCESS;
|
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
|
function GET
|
||||||
(
|
(
|
||||||
@ -679,6 +700,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
SFILE_NAME in varchar2, -- Имя файла
|
SFILE_NAME in varchar2, -- Имя файла
|
||||||
SDESCR in varchar2, -- Описание
|
SDESCR in varchar2, -- Описание
|
||||||
BDATASET in blob, -- Данные выборки
|
BDATASET in blob, -- Данные выборки
|
||||||
|
NDATASET_ID in number, -- Идентификатор данных
|
||||||
|
DDATASET_TS in date, -- Время формирования данных
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
@ -687,9 +710,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
NRN := GEN_ID();
|
NRN := GEN_ID();
|
||||||
/* Добавляем запись */
|
/* Добавляем запись */
|
||||||
insert into UDO_T_EQUIPDSCMFL
|
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
|
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;
|
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);
|
RREC := CMFL_GET(NFLAG_SMART => 0, NRN => NRN);
|
||||||
/* Можно удалять только в статусах: зарегистрирован, успешно загружен на сервер, ошибка загрузки на сервер, успешно загружен во внешнюю систему, при загрузке во внешнюю систему произошла ошибка */
|
/* Можно удалять только в статусах: зарегистрирован, успешно загружен на сервер, ошибка загрузки на сервер, успешно загружен во внешнюю систему, при загрузке во внешнюю систему произошла ошибка */
|
||||||
if (RREC.STATUS not in
|
if (RREC.STATUS not in (NCMFL_STATUS_REGISTERED,
|
||||||
(NCMFL_STATUS_REGISTERED, NCMFL_STATUS_UPLOADED, NCMFL_STATUS_UPLOAD_ERR, NCMFL_STATUS_SENT, NCMFL_STATUS_SEND_ERR)) then
|
NCMFL_STATUS_UPLOADED,
|
||||||
|
NCMFL_STATUS_UPLOAD_ERR,
|
||||||
|
NCMFL_STATUS_SENT,
|
||||||
|
NCMFL_STATUS_SEND_ERR)) then
|
||||||
P_EXCEPTION(0, 'Файл данных обрабатывается, удаление невозможно.');
|
P_EXCEPTION(0, 'Файл данных обрабатывается, удаление невозможно.');
|
||||||
end if;
|
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;
|
delete from UDO_T_EQUIPDSCMFL T where T.RN = NRN;
|
||||||
end CMFL_DEL;
|
end CMFL_DEL;
|
||||||
@ -785,7 +825,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
(
|
(
|
||||||
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
|
||||||
NPRN in number, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
NRN out number -- Регистрационный номер
|
NRN out number -- Регистрационный номер
|
||||||
)
|
)
|
||||||
@ -812,27 +852,46 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
procedure CMML_INS
|
procedure CMML_INS
|
||||||
(
|
(
|
||||||
NPRN in number, -- Родитель
|
NPRN in number, -- Родитель
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number, -- Точность (план)
|
NPRECISION_P in number, -- Точность (план)
|
||||||
NRN out number -- Регистрационный номер
|
NDATASET_ID in number, -- Идентификатор выборки
|
||||||
|
NRN out number -- Регистрационный номер
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
NCNT PKG_STD.TNUMBER; -- Счетчик файлов данных выборки
|
||||||
begin
|
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();
|
NRN := GEN_ID();
|
||||||
/* Добавляем запись */
|
/* Добавляем запись */
|
||||||
insert into UDO_T_EQUIPDSCMML
|
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
|
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;
|
end CMML_INS;
|
||||||
|
|
||||||
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
procedure CMML_UPD
|
procedure CMML_UPD
|
||||||
(
|
(
|
||||||
NRN in number, -- Регистрационный номер
|
NRN in number, -- Регистрационный номер
|
||||||
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
|
||||||
NPRECISION_P in number -- Точность (план)
|
NPRECISION_P in number -- Точность (план)
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
@ -927,7 +986,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
|||||||
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
/* Формирование наименования для задачи "Выборки данных оборудования (классы оборудования, модели)" */
|
||||||
function CMML_TASK_NAME
|
function CMML_TASK_NAME
|
||||||
(
|
(
|
||||||
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*) */
|
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*)
|
||||||
) return varchar2 -- Наименование задачи
|
) return varchar2 -- Наименование задачи
|
||||||
is
|
is
|
||||||
begin
|
begin
|
||||||
|
@ -82,7 +82,7 @@ create or replace package UDO_PKG_EQUIPTCF as
|
|||||||
DFORECAST_DATE in date, -- Дата получения прогноза
|
DFORECAST_DATE in date, -- Дата получения прогноза
|
||||||
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
|
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
|
||||||
SDICMUNTS in varchar2, -- Единица измерения выборки
|
SDICMUNTS in varchar2, -- Единица измерения выборки
|
||||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*)
|
||||||
COUT out clob -- Данные детальной карточки прогноза
|
COUT out clob -- Данные детальной карточки прогноза
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -785,7 +785,7 @@ text="Проверка прав доступа при формировании
|
|||||||
DFORECAST_DATE in date, -- Дата получения прогноза
|
DFORECAST_DATE in date, -- Дата получения прогноза
|
||||||
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
|
NFORECAST in number, -- Прогнозное значение, полученное от фреймворка
|
||||||
SDICMUNTS in varchar2, -- Единица измерения выборки
|
SDICMUNTS in varchar2, -- Единица измерения выборки
|
||||||
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*) */
|
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.CMML_TASK_*)
|
||||||
COUT out clob -- Данные детальной карточки прогноза
|
COUT out clob -- Данные детальной карточки прогноза
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
|
@ -17,6 +17,10 @@ create table UDO_T_EQUIPDSCMFL
|
|||||||
ERR varchar2(4000) default null,
|
ERR varchar2(4000) default null,
|
||||||
/* Данные */
|
/* Данные */
|
||||||
DATASET blob,
|
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_RN_PK primary key (RN),
|
||||||
constraint UDO_C_EQUIPDSCMFL_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
|
constraint UDO_C_EQUIPDSCMFL_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
|
||||||
|
@ -17,6 +17,8 @@ create table UDO_T_EQUIPDSCMML
|
|||||||
STATUS number(1) default 0 not null,
|
STATUS number(1) default 0 not null,
|
||||||
/* Сообщение об ошибке */
|
/* Сообщение об ошибке */
|
||||||
ERR varchar2(4000) default 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_RN_PK primary key (RN),
|
||||||
constraint UDO_C_EQUIPDSCMML_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
|
constraint UDO_C_EQUIPDSCMML_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCM(RN),
|
||||||
|
@ -20,6 +20,7 @@ import {
|
|||||||
EquipDataSelectionClassMachineIU,
|
EquipDataSelectionClassMachineIU,
|
||||||
EquipDataSelectionClassMachineList,
|
EquipDataSelectionClassMachineList,
|
||||||
EquipDataSelectionClassMachineCard,
|
EquipDataSelectionClassMachineCard,
|
||||||
|
EquipDataSelectionClassMachineFileSendMDDialog,
|
||||||
EquipDataSelectionClassMachineModelIU
|
EquipDataSelectionClassMachineModelIU
|
||||||
} from "./admin_tab_layout"; //Вспомогательные компоненты и вёрстка
|
} from "./admin_tab_layout"; //Вспомогательные компоненты и вёрстка
|
||||||
import {
|
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 = {
|
const STYLES = {
|
||||||
@ -102,10 +108,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
|
|||||||
);
|
);
|
||||||
|
|
||||||
//При смене выборки данных
|
//При смене выборки данных
|
||||||
const handleDataSelectionChange = value => {
|
const handleDataSelectionChange = (value, resetRefresh = true) => {
|
||||||
setDataSelection(value);
|
setDataSelection(value);
|
||||||
setDataSelectionClassMachine(null);
|
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 () => {
|
const handleDeleteEquipDataSelection = async () => {
|
||||||
await executeStored({ stored: "UDO_PKG_EQUIPDS.DEL", args: { NRN: equipDataSelection } });
|
await executeStored({ stored: "UDO_PKG_EQUIPDS.DEL", args: { NRN: equipDataSelection } });
|
||||||
setRefresh(pv => ({ ...pv, dataSelection: pv.dataSelection + 1 }));
|
setRefresh(pv => ({ ...pv, dataSelection: pv.dataSelection + 1 }));
|
||||||
setDataSelection(DS_RN_DEFAULT);
|
handleDataSelectionChange(DS_RN_DEFAULT, false);
|
||||||
};
|
};
|
||||||
|
|
||||||
//При отмене диалога IU выборки
|
//При отмене диалога 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 } });
|
const data = await executeStored({ stored: "UDO_PKG_EQUIPDS.INS", args: { SCODE: values.code, SNAME: values.name } });
|
||||||
setDialogs(pv => ({ ...pv, dataSelectionIU: false }));
|
setDialogs(pv => ({ ...pv, dataSelectionIU: false }));
|
||||||
setRefresh(pv => ({ ...pv, dataSelection: pv.dataSelection + 1 }));
|
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)
|
if (res.success)
|
||||||
processMakeEquipDataSelectionClassMachineFilesResults(
|
processMakeEquipDataSelectionClassMachineFilesResults(
|
||||||
equipDSCM,
|
equipDSCM,
|
||||||
res.outParameters.NDATASET_IDENT,
|
res.outParameters?.NDATASET_IDENT,
|
||||||
res.outParameters.NDATASET_CONFIG_IDENT,
|
res.outParameters?.NDATASET_CONFIG_IDENT,
|
||||||
clear
|
clear
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -211,10 +217,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
|
|||||||
};
|
};
|
||||||
|
|
||||||
//При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования
|
//При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования
|
||||||
const handleSendMdEquipDataSelectionClassMachineFiles = async equipDSCM => {
|
const handleSendMdEquipDataSelectionClassMachineFiles = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: true }));
|
||||||
await executeStored({ stored: "UDO_PKG_EQUIPDS.CMFL_SEND_MD", args: { NEQUIPDSCM: equipDSCM } });
|
|
||||||
setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 }));
|
|
||||||
};
|
|
||||||
|
|
||||||
//При нажатии на "Добавить модель класса оборудования"
|
//При нажатии на "Добавить модель класса оборудования"
|
||||||
const handleAddEquipDataSelectionClassMachineModel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: 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 }));
|
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 модели класса оборудования
|
//При отмене диалога IU модели класса оборудования
|
||||||
const handleEquipDataSelectionClassMachineModelIUCancel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: false }));
|
const handleEquipDataSelectionClassMachineModelIUCancel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: false }));
|
||||||
|
|
||||||
@ -235,7 +251,8 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
|
|||||||
args: {
|
args: {
|
||||||
NPRN: equipDataSelectionClassMachine,
|
NPRN: equipDataSelectionClassMachine,
|
||||||
STASK: values.task,
|
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 }));
|
setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: false }));
|
||||||
@ -272,8 +289,16 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n
|
|||||||
onCancel={handleEquipDataSelectionClassMachineIUCancel}
|
onCancel={handleEquipDataSelectionClassMachineIUCancel}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
|
{dialogs.dataSelectionClassMachineFileSendMD ? (
|
||||||
|
<EquipDataSelectionClassMachineFileSendMDDialog
|
||||||
|
classMachine={equipDataSelectionClassMachine}
|
||||||
|
onOk={handleEquipDataSelectionClassMachineFileSendMDOk}
|
||||||
|
onCancel={handleEquipDataSelectionClassMachineFileSendMDCancel}
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
{dialogs.dataSelectionClassMachineModelIU ? (
|
{dialogs.dataSelectionClassMachineModelIU ? (
|
||||||
<EquipDataSelectionClassMachineModelIU
|
<EquipDataSelectionClassMachineModelIU
|
||||||
|
classMachine={equipDataSelectionClassMachine}
|
||||||
onOk={handleEquipDataSelectionClassMachineModelIUOk}
|
onOk={handleEquipDataSelectionClassMachineModelIUOk}
|
||||||
onCancel={handleEquipDataSelectionClassMachineModelIUCancel}
|
onCancel={handleEquipDataSelectionClassMachineModelIUCancel}
|
||||||
/>
|
/>
|
||||||
|
@ -26,7 +26,7 @@ const useEquipDataSelectionClassMachineList = (dataSelection, refresh) => {
|
|||||||
//Подключение к контексту взаимодействия с сервером
|
//Подключение к контексту взаимодействия с сервером
|
||||||
const { executeStored } = useContext(BackEndСtx);
|
const { executeStored } = useContext(BackEndСtx);
|
||||||
|
|
||||||
//Загрузка данных при изменении зависимостейuse
|
//Загрузка данных при изменении зависимостей
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadData = async () => {
|
const loadData = async () => {
|
||||||
try {
|
try {
|
||||||
@ -171,6 +171,41 @@ const useEquipDataSelectionClassMachineModelsList = (classMachine, refresh) => {
|
|||||||
return { equipDataSelectionClassMachineModelsList: data, equipDataSelectionClassMachineModelsListIsLoading: isLoading };
|
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,
|
useEquipDataSelectionClassMachineList,
|
||||||
useEquipDataSelectionClassMachineCard,
|
useEquipDataSelectionClassMachineCard,
|
||||||
useEquipDataSelectionClassMachineFilesList,
|
useEquipDataSelectionClassMachineFilesList,
|
||||||
useEquipDataSelectionClassMachineModelsList
|
useEquipDataSelectionClassMachineModelsList,
|
||||||
|
useEquipDataSelectionClassMachineDataSetsList
|
||||||
};
|
};
|
||||||
|
@ -53,6 +53,7 @@ import {
|
|||||||
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных
|
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных
|
||||||
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
|
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
|
||||||
import { DS_RN_DEFAULT, TASK_LIST } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки
|
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
|
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 модели класса оборудования выборки данных
|
//Диалог IU модели класса оборудования выборки данных
|
||||||
const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
|
const EquipDataSelectionClassMachineModelIU = ({ classMachine, onOk, onCancel }) => {
|
||||||
//Собственное состояние - значения формы
|
//Собственное состояние - значения формы
|
||||||
const [values, setValues] = useState({
|
const [values, setValues] = useState({
|
||||||
task: "RUL",
|
task: "RUL",
|
||||||
precisionP: null
|
precisionP: null,
|
||||||
|
dataset: null
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Доступные выборки данных
|
||||||
|
const { equipDataSelectionClassMachineDataSetsList } = useEquipDataSelectionClassMachineDataSetsList(classMachine);
|
||||||
|
|
||||||
//Отработка воода значения в форму
|
//Отработка воода значения в форму
|
||||||
const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value }));
|
const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value }));
|
||||||
|
|
||||||
@ -437,6 +483,13 @@ const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
|
|||||||
onChange={handleValueChanged}
|
onChange={handleValueChanged}
|
||||||
type={"number"}
|
type={"number"}
|
||||||
/>
|
/>
|
||||||
|
<IUDFormTextField
|
||||||
|
elementCode={"dataset"}
|
||||||
|
elementValue={values.dataset}
|
||||||
|
labelText={"Выборка"}
|
||||||
|
onChange={handleValueChanged}
|
||||||
|
list={equipDataSelectionClassMachineDataSetsList}
|
||||||
|
/>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
<Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button>
|
<Button onClick={() => (onOk ? onOk(values) : null)}>{BUTTONS.OK}</Button>
|
||||||
@ -448,6 +501,7 @@ const EquipDataSelectionClassMachineModelIU = ({ onOk, onCancel }) => {
|
|||||||
|
|
||||||
//Контроль свойств - Диалог IU модели класса оборудования выборки данных
|
//Контроль свойств - Диалог IU модели класса оборудования выборки данных
|
||||||
EquipDataSelectionClassMachineModelIU.propTypes = {
|
EquipDataSelectionClassMachineModelIU.propTypes = {
|
||||||
|
classMachine: PropTypes.number.isRequired,
|
||||||
onOk: PropTypes.func,
|
onOk: PropTypes.func,
|
||||||
onCancel: PropTypes.func
|
onCancel: PropTypes.func
|
||||||
};
|
};
|
||||||
@ -675,6 +729,7 @@ EquipDataSelectionClassMachineCard.propTypes = {
|
|||||||
export {
|
export {
|
||||||
EquipDataSelectionIU,
|
EquipDataSelectionIU,
|
||||||
EquipDataSelectionClassMachineIU,
|
EquipDataSelectionClassMachineIU,
|
||||||
|
EquipDataSelectionClassMachineFileSendMDDialog,
|
||||||
EquipDataSelectionClassMachineModelIU,
|
EquipDataSelectionClassMachineModelIU,
|
||||||
EquipDataSelectionList,
|
EquipDataSelectionList,
|
||||||
EquipDataSelectionClassMachineList,
|
EquipDataSelectionClassMachineList,
|
||||||
|
@ -255,9 +255,7 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
|||||||
SEXSSERVICE_SEND_MD: values.exsServiceSendMd,
|
SEXSSERVICE_SEND_MD: values.exsServiceSendMd,
|
||||||
SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd,
|
SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd,
|
||||||
SEXSSERVICE_SEND_RQ: values.exsServiceSendRq,
|
SEXSSERVICE_SEND_RQ: values.exsServiceSendRq,
|
||||||
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq,
|
SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq
|
||||||
STASK: values.task,
|
|
||||||
NPRECISION_P: parseFloat(values.precisionP)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setDialogs(pv => ({ ...pv, makeEqDataSet: false }));
|
setDialogs(pv => ({ ...pv, makeEqDataSet: false }));
|
||||||
|
@ -27,7 +27,7 @@ import {
|
|||||||
selectServiceFn,
|
selectServiceFn,
|
||||||
IUDFormTextField
|
IUDFormTextField
|
||||||
} from "./eqs_tech_cond_forecast_layout"; //Общие вспомогательные компоненты и вёрстка
|
} 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"; //График
|
import { P8PChart } from "../../components/p8p_chart"; //График
|
||||||
|
|
||||||
//---------
|
//---------
|
||||||
@ -655,9 +655,7 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
|
|||||||
exsServiceSendMd: "Загрузка_на_Фреймворк",
|
exsServiceSendMd: "Загрузка_на_Фреймворк",
|
||||||
exsServiceFnSendMd: "Передача данных",
|
exsServiceFnSendMd: "Передача данных",
|
||||||
exsServiceSendRq: "Загрузка_на_Фреймворк",
|
exsServiceSendRq: "Загрузка_на_Фреймворк",
|
||||||
exsServiceFnSendRq: "Запрос на обучение",
|
exsServiceFnSendRq: "Запрос на обучение"
|
||||||
task: "RUL",
|
|
||||||
precisionP: 99
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//Отработка воода значения в форму
|
//Отработка воода значения в форму
|
||||||
@ -741,20 +739,6 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => {
|
|||||||
onChange={handleValueChanged}
|
onChange={handleValueChanged}
|
||||||
dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)}
|
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="У вас нет прав доступа для обучения моделей. Обратитесь к администратору." />
|
<P8PAppInlineError text="У вас нет прав доступа для обучения моделей. Обратитесь к администратору." />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user