"Класс оборудования" уникален вообще, а не только в рамках выборки, возможность указать процедуру подготовки данных для прогноза в модели

This commit is contained in:
Mikhail Chechnev 2025-03-18 11:19:49 +03:00
parent b43445491f
commit 277af55060
4 changed files with 113 additions and 34 deletions

View File

@ -156,6 +156,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_*)
NDATASET_ID in number, -- Идентификатор выборки NDATASET_ID in number, -- Идентификатор выборки
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
@ -373,7 +374,7 @@ create or replace package body UDO_PKG_EQUIPDS as
else else
/* Выборка есть - надо проверить в ней наличие класса оборудования */ /* Выборка есть - надо проверить в ней наличие класса оборудования */
UDO_PKG_EQUIPDS_BASE.CM_FIND_BY_EQOBJKIND(NFLAG_SMART => 1, UDO_PKG_EQUIPDS_BASE.CM_FIND_BY_EQOBJKIND(NFLAG_SMART => 1,
NPRN => NEQUIPDS, NCOMPANY => NCOMPANY,
SEQOBJKIND => SEQOBJKIND, SEQOBJKIND => SEQOBJKIND,
NRN => NEQUIPDSCM); NRN => NEQUIPDSCM);
end if; end if;
@ -1151,6 +1152,11 @@ create or replace package body UDO_PKG_EQUIPDS as
SNAME => 'SDATASET', SNAME => 'SDATASET',
SCAPTION => 'Выборка', SCAPTION => 'Выборка',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SUSERPROCS_FRCST_DATA',
SCAPTION => 'Процедура формирования',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SHINT => UDO_PKG_EQUIPDS_BASE.CMML_USERPROCS_FRCST_DATA_HINT());
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATUS', SNAME => 'NSTATUS',
SCAPTION => 'Состояние', SCAPTION => 'Состояние',
@ -1174,14 +1180,17 @@ create or replace package body UDO_PKG_EQUIPDS as
from UDO_T_EQUIPDSCMFL F from UDO_T_EQUIPDSCMFL F
where F.DATASET_ID = T.DATASET_ID where F.DATASET_ID = T.DATASET_ID
and ROWNUM <= 1) DDATASET_TS, and ROWNUM <= 1) DDATASET_TS,
UP.CODE SUSERPROCS_FRCST_DATA,
T.STATUS NSTATUS, T.STATUS NSTATUS,
T.ERR SERR T.ERR SERR
from UDO_T_EQUIPDSCMML T, from UDO_T_EQUIPDSCMML T,
UDO_T_EQUIPDSCM CM, UDO_T_EQUIPDSCM CM,
DICMUNTS DM DICMUNTS DM,
USERPROCS UP
where CM.RN = NEQUIPDSCM where CM.RN = NEQUIPDSCM
and T.PRN = CM.RN and T.PRN = CM.RN
and CM.DICMUNTS = DM.RN and CM.DICMUNTS = DM.RN
and T.USERPROCS_FRCST_DATA = UP.RN
order by T.RN) order by T.RN)
loop loop
/* Добавляем колонки с данными */ /* Добавляем колонки с данными */
@ -1193,6 +1202,9 @@ create or replace package body UDO_PKG_EQUIPDS as
SNAME => 'SDATASET', SNAME => 'SDATASET',
SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID, SVALUE => UDO_PKG_EQUIPDS_BASE.UTL_DATASET_MAKE_NAME(NDATASET_ID => C.NDATASET_ID,
DDATASET_TS => C.DDATASET_TS)); DDATASET_TS => C.DDATASET_TS));
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
SNAME => 'SUSERPROCS_FRCST_DATA',
SVALUE => C.SUSERPROCS_FRCST_DATA);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS'); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');
@ -1206,12 +1218,14 @@ create or replace package body UDO_PKG_EQUIPDS as
/* Клиентское добавление "Выборки данных оборудования (классы оборудования, модели)" */ /* Клиентское добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS procedure CMML_INS
( (
NPRN in number, -- Родитель NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*) STASK in varchar2, -- Задача (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
NDATASET_ID in number, -- Идентификатор выборки NDATASET_ID in number, -- Идентификатор выборки
NRN out number -- Регистрационный номер SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
NRN out number -- Регистрационный номер
) )
is is
NUSERPROCS_FRCST_DATA PKG_STD.TREF; -- Рег. номер пользовательской процедуры формирования данных для прогноза
begin begin
/* Проверим параметры */ /* Проверим параметры */
if (STASK is null) then if (STASK is null) then
@ -1220,13 +1234,21 @@ create or replace package body UDO_PKG_EQUIPDS as
if (NDATASET_ID is null) then if (NDATASET_ID is null) then
P_EXCEPTION(0, 'Не указана выборка.'); P_EXCEPTION(0, 'Не указана выборка.');
end if; end if;
if (SUSERPROCS_FRCST_DATA 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_JOINS(SUSERPROCS_FRCST_DATA => SUSERPROCS_FRCST_DATA,
NUSERPROCS_FRCST_DATA => NUSERPROCS_FRCST_DATA);
/* Добавляем запись */ /* Добавляем запись */
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN, UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN,
STASK => STASK, STASK => STASK,
NDATASET_ID => NDATASET_ID, NDATASET_ID => NDATASET_ID,
NRN => NRN); NUSERPROCS_FRCST_DATA => NUSERPROCS_FRCST_DATA,
NRN => NRN);
end CMML_INS; end CMML_INS;
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */ /* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
@ -1356,6 +1378,11 @@ 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,
BVISIBLE => false); BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SUSERPROCS_FRCST_DATA',
SCAPTION => 'Процедура формирования',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SHINT => UDO_PKG_EQUIPDS_BASE.CMML_USERPROCS_FRCST_DATA_HINT());
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATUS', SNAME => 'NSTATUS',
SCAPTION => 'Состояние', SCAPTION => 'Состояние',
@ -1375,6 +1402,7 @@ create or replace package body UDO_PKG_EQUIPDS as
T.PRN NEQUIPDSCM, T.PRN NEQUIPDSCM,
DS.NAME SNEQUIPDS, DS.NAME SNEQUIPDS,
T.TASK STASK, T.TASK STASK,
UP.CODE SUSERPROCS_FRCST_DATA,
T.PRECISION NPRECISION, T.PRECISION NPRECISION,
DM.MEAS_MNEMO SDICMUNTS, DM.MEAS_MNEMO SDICMUNTS,
T.STATUS NSTATUS, T.STATUS NSTATUS,
@ -1382,11 +1410,13 @@ create or replace package body UDO_PKG_EQUIPDS as
from UDO_T_EQUIPDSCMML T, from UDO_T_EQUIPDSCMML T,
UDO_T_EQUIPDSCM CM, UDO_T_EQUIPDSCM CM,
UDO_T_EQUIPDS DS, UDO_T_EQUIPDS DS,
DICMUNTS DM DICMUNTS DM,
USERPROCS UP
where T.PRN = CM.RN where T.PRN = CM.RN
and CM.PRN = DS.RN and CM.PRN = DS.RN
and CM.DICMUNTS = DM.RN and CM.DICMUNTS = DM.RN
and CM.EQOBJKIND = (select CF.OBJ_KIND from EQCONFIG CF where CF.RN = NEQCONFIG) and CM.EQOBJKIND = (select CF.OBJ_KIND from EQCONFIG CF where CF.RN = NEQCONFIG)
and T.USERPROCS_FRCST_DATA = UP.RN
order by T.RN) order by T.RN)
loop loop
/* Добавляем колонки с данными */ /* Добавляем колонки с данными */
@ -1397,6 +1427,7 @@ create or replace package body UDO_PKG_EQUIPDS as
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STASK', SVALUE => C.STASK); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STASK', SVALUE => C.STASK);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPRECISION', NVALUE => C.NPRECISION); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPRECISION', NVALUE => C.NPRECISION);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SDICMUNTS', SVALUE => C.SDICMUNTS); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SDICMUNTS', SVALUE => C.SDICMUNTS);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SUSERPROCS_FRCST_DATA', SVALUE => C.SUSERPROCS_FRCST_DATA);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATUS', NVALUE => C.NSTATUS);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SERR', SVALUE => C.SERR);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS'); PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SACTIONS');

View File

@ -96,8 +96,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
procedure CM_FIND_BY_EQOBJKIND procedure CM_FIND_BY_EQOBJKIND
( (
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать) NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
NPRN in number, -- Родитель NCOMPANY in number, -- Организация
SEQOBJKIND in varchar2, -- Класс оборудования SEQOBJKIND in varchar2, -- Класс оборудования (полный иерархический код)
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
@ -227,20 +227,29 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
/* Разыменование словарей "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_JOINS
(
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
NUSERPROCS_FRCST_DATA out number -- Рег. номер пользовательской процедуры формирования данных для прогноза
);
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */ /* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS procedure CMML_INS
( (
NPRN in number, -- Родитель NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NDATASET_ID in number, -- Идентификатор выборки NDATASET_ID in number, -- Идентификатор выборки
NUSERPROCS_FRCST_DATA in number, -- Рег. номер пользовательской процедуры формирования данных для прогноза
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
); );
/* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */ /* Базовое исправление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_UPD procedure CMML_UPD
( (
NRN in number, -- Регистрационный номер NRN in number, -- Регистрационный номер
STASK in varchar2 -- Задача (см. константы SCMML_TASK_*) STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NUSERPROCS_FRCST_DATA in number -- Рег. номер пользовательской процедуры формирования данных для прогноза
); );
/* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */ /* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */
@ -275,6 +284,10 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
function CMML_TASK_HINT function CMML_TASK_HINT
return varchar2; -- Подсказка для задачи return varchar2; -- Подсказка для задачи
/* Формирование подсказки для процедуры формирования данных для прогноза "Выборки данных оборудования (классы оборудования, модели)" */
function CMML_USERPROCS_FRCST_DATA_HINT
return varchar2; -- Подсказка для процедуры формирования данных для прогноза
/* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */ /* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */
function CMML_RUL_BREAKDOWN_PROB function CMML_RUL_BREAKDOWN_PROB
( (
@ -495,28 +508,28 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
/* Поиск "Выборки данных оборудования (классы оборудования)" по классу оборудования */ /* Поиск "Выборки данных оборудования (классы оборудования)" по классу оборудования */
procedure CM_FIND_BY_EQOBJKIND procedure CM_FIND_BY_EQOBJKIND
( (
NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать) NFLAG_SMART in number, -- Признак выдачи сообщения об ошибке (0 - выдавать, 1 - не выдавать)
NPRN in number, -- Родитель NCOMPANY in number, -- Организация
SEQOBJKIND in varchar2, -- Класс оборудования SEQOBJKIND in varchar2, -- Класс оборудования (полный иерархический код)
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
) )
is is
NEQOBJKIND PKG_STD.TREF; -- Рег. номер класса оборудования
begin begin
/* Класс оборудования */
FIND_EQOBJKIND_FULLCODE(NFLAG_SMART => NFLAG_SMART,
NFLAG_OPTION => 0,
NCOMPANY => NCOMPANY,
SCODE => SEQOBJKIND,
NRN => NEQOBJKIND);
/* Поиск записи */ /* Поиск записи */
begin begin
select T.RN select T.RN into NRN from UDO_T_EQUIPDSCM T where T.EQOBJKIND = NEQOBJKIND;
into NRN
from UDO_T_EQUIPDSCM T,
EQOBJKIND OK
where T.PRN = NPRN
and T.EQOBJKIND = OK.RN
and OK.CODE = SEQOBJKIND;
exception exception
when NO_DATA_FOUND then when NO_DATA_FOUND then
P_EXCEPTION(NFLAG_SMART, P_EXCEPTION(NFLAG_SMART,
'Класс оборудования "%s" в выборке данных "%s" не определён.', 'Класс оборудования "%s" в выборках данных не определён.',
SEQOBJKIND, SEQOBJKIND);
TO_CHAR(NPRN));
end; end;
end CM_FIND_BY_EQOBJKIND; end CM_FIND_BY_EQOBJKIND;
@ -1012,12 +1025,30 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
end; end;
end CMML_FIND_BY_TASK; end CMML_FIND_BY_TASK;
/* Разыменование словарей "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_JOINS
(
SUSERPROCS_FRCST_DATA in varchar2, -- Пользовательская процедура формирования данных для прогноза
NUSERPROCS_FRCST_DATA out number -- Рег. номер пользовательской процедуры формирования данных для прогноза
)
is
begin
/* Процедура формирования данных для прогноза */
if (SUSERPROCS_FRCST_DATA is not null) then
FIND_USERPROCS_CODE(NFLAG_SMART => 0, SCODE => SUSERPROCS_FRCST_DATA, NRN => NUSERPROCS_FRCST_DATA);
else
P_EXCEPTION(0,
'Не указана процедура формирования данных для прогноза.');
end if;
end CMML_JOINS;
/* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */ /* Базовое добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS procedure CMML_INS
( (
NPRN in number, -- Родитель NPRN in number, -- Родитель
STASK in varchar2, -- Задача (см. константы SCMML_TASK_*) STASK in varchar2, -- Задача (см. константы SCMML_TASK_*)
NDATASET_ID in number, -- Идентификатор выборки NDATASET_ID in number, -- Идентификатор выборки
NUSERPROCS_FRCST_DATA in number, -- Рег. номер пользовательской процедуры формирования данных для прогноза
NRN out number -- Регистрационный номер NRN out number -- Регистрационный номер
) )
is is
@ -1044,16 +1075,17 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
NRN := GEN_ID(); NRN := GEN_ID();
/* Добавляем запись */ /* Добавляем запись */
insert into UDO_T_EQUIPDSCMML insert into UDO_T_EQUIPDSCMML
(RN, PRN, TASK, PRECISION, QUEUE_ID, STATUS, ERR, DATASET_ID) (RN, PRN, TASK, PRECISION, QUEUE_ID, STATUS, ERR, DATASET_ID, USERPROCS_FRCST_DATA)
values values
(NRN, NPRN, STASK, null, null, NCMML_STATUS_REGISTERED, null, NDATASET_ID); (NRN, NPRN, STASK, null, null, NCMML_STATUS_REGISTERED, null, NDATASET_ID, NUSERPROCS_FRCST_DATA);
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_*)
NUSERPROCS_FRCST_DATA in number -- Рег. номер пользовательской процедуры формирования данных для прогноза
) )
is is
RREC UDO_T_EQUIPDSCMML%rowtype; -- Обрабатываемая запись RREC UDO_T_EQUIPDSCMML%rowtype; -- Обрабатываемая запись
@ -1066,7 +1098,10 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
'Модель обрабатывается или уже успешно обработана, изменение невозможно.'); 'Модель обрабатывается или уже успешно обработана, изменение невозможно.');
end if; end if;
/* Исправим данные */ /* Исправим данные */
update UDO_T_EQUIPDSCMML T set T.TASK = STASK where T.RN = NRN; update UDO_T_EQUIPDSCMML T
set T.TASK = STASK,
T.USERPROCS_FRCST_DATA = NUSERPROCS_FRCST_DATA
where T.RN = NRN;
end CMML_UPD; end CMML_UPD;
/* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */ /* Базовое удаление "Выборки данных оборудования (классы оборудования, модели)" */
@ -1170,6 +1205,16 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
'<b>FP</b> - ' || CMML_TASK_NAME(STASK => SCMML_TASK_FP) || ' (<b>F</b>ailure <b>P</b>redict)'; '<b>FP</b> - ' || CMML_TASK_NAME(STASK => SCMML_TASK_FP) || ' (<b>F</b>ailure <b>P</b>redict)';
end CMML_TASK_HINT; end CMML_TASK_HINT;
/* Формирование подсказки для процедуры формирования данных для прогноза "Выборки данных оборудования (классы оборудования, модели)" */
function CMML_USERPROCS_FRCST_DATA_HINT
return varchar2 -- Подсказка для процедуры формирования данных для прогноза
is
begin
return 'Пользовательская процедура формирования данных для прогноза. Будет вызвана при запросе прогоза у модели.<br>' ||
'Должна иметь <b>входной параметр "NEQCONFIG"</b> - в него при вызове будет передан рег. номер единицы оборудования.<br>' ||
'Должна возвращать <b>выходные параметры "NDATASET_IDENT" и "NDATASET_CONFIG_IDENT"</b> - идентификаторы файлового буфера с подготовленными данными (CSV) и описанием структуры данных, соответственно.';
end CMML_USERPROCS_FRCST_DATA_HINT;
/* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */ /* Вычисление вероятности выхода из строя на дату по RUL-прогнозу */
function CMML_RUL_BREAKDOWN_PROB function CMML_RUL_BREAKDOWN_PROB
( (

View File

@ -34,5 +34,5 @@ create table UDO_T_EQUIPDSCM
constraint UDO_C_EQUIPDSCM_EXSFNSDMDCB_FK foreign key (EXSSERVICEFN_SEND_MDCB) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDMDCB_FK foreign key (EXSSERVICEFN_SEND_MDCB) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_UN unique (PRN, EQOBJKIND) constraint UDO_C_EQUIPDSCM_UN unique (EQOBJKIND)
); );

View File

@ -17,6 +17,8 @@ create table UDO_T_EQUIPDSCMML
ERR varchar2(4000) default null, ERR varchar2(4000) default null,
/* Идентификатор данных */ /* Идентификатор данных */
DATASET_ID number(17) not null, DATASET_ID number(17) not null,
/* Процедура формирования данных для прогнозирования */
USERPROCS_FRCST_DATA 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),
@ -28,6 +30,7 @@ create table UDO_T_EQUIPDSCMML
constraint UDO_C_EQUIPDSCMML_STATUS_CH check (STATUS in (0, 1, 2, 3)), constraint UDO_C_EQUIPDSCMML_STATUS_CH check (STATUS in (0, 1, 2, 3)),
constraint UDO_C_EQUIPDSCMML_ERR_NB check ((ERR is null) or (rtrim(ERR) is not null)), constraint UDO_C_EQUIPDSCMML_ERR_NB check ((ERR is null) or (rtrim(ERR) is not null)),
constraint UDO_C_EQUIPDSCMML_ERR_CH check (((STATUS in (3)) and (ERR is not null)) or ((STATUS not in (3)) and (ERR is null))), constraint UDO_C_EQUIPDSCMML_ERR_CH check (((STATUS in (3)) and (ERR is not null)) or ((STATUS not in (3)) and (ERR is null))),
constraint UDO_C_EQUIPDSCMML_USRPFD_FK foreign key (USERPROCS_FRCST_DATA) references USERPROCS(RN),
constraint UDO_C_EQUIPDSCMML_UN unique (PRN, TASK), constraint UDO_C_EQUIPDSCMML_UN unique (PRN, TASK),
constraint UDO_C_EQUIPDSCMML_QID_UN unique (QUEUE_ID) constraint UDO_C_EQUIPDSCMML_QID_UN unique (QUEUE_ID)
); );