Клиентские процедуры выгрузки, передачи на сервер и отправки внешней системе файлов данных выборки

Доработка процедуры формирования карточки класса оборудования выборки данных
This commit is contained in:
Mikhail Chechnev 2024-08-08 11:43:55 +03:00
parent 4cb0775dc9
commit acd2b6978e
2 changed files with 212 additions and 11 deletions

View File

@ -1,6 +1,6 @@
create or replace package UDO_PKG_EQUIPDS as create or replace package UDO_PKG_EQUIPDS as
/* Список выборок данных */ /* Список "Выборки данных оборудования" */
procedure LIST procedure LIST
( (
COUT out clob -- Сериализованная таблица данных COUT out clob -- Сериализованная таблица данных
@ -17,10 +17,17 @@ create or replace package UDO_PKG_EQUIPDS as
/* Клиентское удаление "Выборки данных оборудования" */ /* Клиентское удаление "Выборки данных оборудования" */
procedure DEL procedure DEL
( (
NRN in number -- Регистрационный номер NRN in number -- Регистрационный номер
); );
/* Список классов оборудования выборки данных */ /* Карточка "Выборки данных оборудования (классы оборудования)" */
procedure CM_CARD
(
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
COUT out clob -- Сериализованная карточка
);
/* Список "Выборки данных оборудования (классы оборудования)" */
procedure CM_LIST procedure CM_LIST
( (
NEQUIPDS in number, -- Рег. номер выборки данных NEQUIPDS in number, -- Рег. номер выборки данных
@ -48,20 +55,53 @@ create or replace package UDO_PKG_EQUIPDS as
NRN in number -- Регистрационный номер NRN in number -- Регистрационный номер
); );
/* Список файлов данных класса оборудования */ /* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_LIST procedure CMFL_LIST
( (
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
COUT out clob -- Сериализованная таблица данных COUT out clob -- Сериализованная таблица данных
); );
/* Список моделей класса оборудования */ /* Загрузка на сервер "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_UPLOAD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
);
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_SEND_MD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
);
/* Список "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_LIST procedure CMML_LIST
( (
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
COUT out clob -- Сериализованная таблица данных COUT out clob -- Сериализованная таблица данных
); );
/* Клиентское добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS
(
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (TCF - оценка технического состояния (Technical Condition Forecast), RUL - прогнозирование остаточного ресурса (Remaining Useful Life), FP - Прогнозирование отказа (Failure Predict))
NPRECISION_P in number, -- Точность (план)
NRN out number -- Регистрационный номер
);
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_DEL
(
NRN in number -- Регистрационный номер
);
/* Обработка внешней системой "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_SEND_RQ
(
NEQUIPDSCMML in number -- Рег. номер модели класса оборудования выборки данных
);
/* Код доступного действия с моделью по единице оборудования */ /* Код доступного действия с моделью по единице оборудования */
function CMML_ACT_BY_EQCONFIG function CMML_ACT_BY_EQCONFIG
( (
@ -83,7 +123,7 @@ TODO: owner="root" created="06.08.2024"
text="Проверка прав доступа на работу с ""Выборками данных""" text="Проверка прав доступа на работу с ""Выборками данных"""
*/ */
/* Список выборок данных */ /* Список "Выборки данных оборудования" */
procedure LIST procedure LIST
( (
COUT out clob -- Сериализованная таблица данных COUT out clob -- Сериализованная таблица данных
@ -150,11 +190,86 @@ text="Проверка прав доступа на работу с ""Выбор
is is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация
begin begin
/* Добавляем запись */ /* Удаляем запись */
UDO_PKG_EQUIPDS_BASE.DEL(NRN => NRN, NCOMPANY => NCOMPANY); UDO_PKG_EQUIPDS_BASE.DEL(NRN => NRN, NCOMPANY => NCOMPANY);
end DEL; end DEL;
/* Список классов оборудования выборки данных */ /* Карточка "Выборки данных оборудования (классы оборудования)" */
procedure CM_CARD
(
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
COUT out clob -- Сериализованная карточка
)
is
NCUR integer; -- Курсор документа для результата
XDOC PKG_XMAKE.TNODE; -- Документ для результата
XEQUIPDSCM PKG_XMAKE.TNODE; -- Элемент для карточки
begin
/* Открываем документ */
NCUR := PKG_XMAKE.OPEN_CURSOR();
/* Обращаемся к данным класса оборудования */
for C in (select T.RN NRN,
OK.NAME SNAME,
UP.CODE SUSERPROCS_DATA,
SU.CODE || '/' || SFU.CODE SEXSSERVICE_UPLOAD,
SMD.CODE || '/' || SFMD.CODE SEXSSERVICE_SEND_MD,
SRQ.CODE || '/' || SFRQ.CODE SEXSSERVICE_SEND_RQ
from UDO_T_EQUIPDSCM T,
EQOBJKIND OK,
USERPROCS UP,
EXSSERVICE SU,
EXSSERVICEFN SFU,
EXSSERVICE SMD,
EXSSERVICEFN SFMD,
EXSSERVICE SRQ,
EXSSERVICEFN SFRQ
where T.RN = NEQUIPDSCM
and T.EQOBJKIND = OK.RN
and T.USERPROCS_DATA = UP.RN
and T.EXSSERVICEFN_UPLOAD = SFU.RN
and SFU.PRN = SU.RN
and T.EXSSERVICEFN_SEND_MD = SFMD.RN
and SFMD.PRN = SMD.RN
and T.EXSSERVICEFN_SEND_RQ = SFRQ.RN
and SFRQ.PRN = SRQ.RN)
loop
/* Собираем карточку класса оборудования */
XEQUIPDSCM := PKG_XMAKE.ELEMENT(ICURSOR => NCUR,
SNAME => 'XEQUIPDSCM',
RATTRIBUTES => PKG_XMAKE.ATTRIBUTES(ICURSOR => NCUR,
RATTRIBUTE00 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'NRN',
SVALUE => C.NRN),
RATTRIBUTE01 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SNAME',
SVALUE => C.SNAME),
RATTRIBUTE02 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SUSERPROCS_DATA',
SVALUE => C.SUSERPROCS_DATA),
RATTRIBUTE03 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_UPLOAD',
SVALUE => C.SEXSSERVICE_UPLOAD),
RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_MD',
SVALUE => C.SEXSSERVICE_SEND_MD),
RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR,
SNAME => 'SEXSSERVICE_SEND_RQ',
SVALUE => C.SEXSSERVICE_SEND_RQ)));
end loop;
/* Формируем XML-представление ответа */
XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XEQUIPDSCM);
/* Конвертируем в 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_CARD;
/* Список "Выборки данных оборудования (классы оборудования)" */
procedure CM_LIST procedure CM_LIST
( (
NEQUIPDS in number, -- Рег. номер выборки данных NEQUIPDS in number, -- Рег. номер выборки данных
@ -259,11 +374,11 @@ text="Проверка прав доступа на работу с ""Выбор
) )
is is
begin begin
/* Добавляем запись */ /* Удаляем запись */
UDO_PKG_EQUIPDS_BASE.CM_DEL(NRN => NRN); UDO_PKG_EQUIPDS_BASE.CM_DEL(NRN => NRN);
end CM_DEL; end CM_DEL;
/* Список файлов данных класса оборудования */ /* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_LIST procedure CMFL_LIST
( (
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
@ -321,7 +436,43 @@ text="Проверка прав доступа на работу с ""Выбор
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
end CMFL_LIST; end CMFL_LIST;
/* Список моделей класса оборудования */ /* Загрузка на сервер "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_UPLOAD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
)
is
begin
/*
TODO: owner="root" created="07.08.2024"
text="Реализовать проверку возможности выполнения действия и установки статусов"
*/
/* Выставим состояние файлам данных класса оборудования */
for C in (select T.RN NRN from UDO_T_EQUIPDSCMFL T where T.PRN = NEQUIPDSCM)
loop
UDO_PKG_EQUIPDS_BASE.CMFL_SET_STATUS(NRN => C.NRN, NSTATUS => 2, SQUEUE_ID => C.NRN, SERR => null);
end loop;
end CMFL_UPLOAD;
/* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */
procedure CMFL_SEND_MD
(
NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных
)
is
begin
/*
TODO: owner="root" created="07.08.2024"
text="Реализовать проверку возможности выполнения действия и установки статусов"
*/
/* Выставим состояние файлам данных класса оборудования */
for C in (select T.RN NRN from UDO_T_EQUIPDSCMFL T where T.PRN = NEQUIPDSCM)
loop
UDO_PKG_EQUIPDS_BASE.CMFL_SET_STATUS(NRN => C.NRN, NSTATUS => 5, SQUEUE_ID => C.NRN, SERR => null);
end loop;
end CMFL_SEND_MD;
/* Список "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_LIST procedure CMML_LIST
( (
NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных
@ -385,6 +536,55 @@ text="Проверка прав доступа на работу с ""Выбор
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
end CMML_LIST; end CMML_LIST;
/* Клиентское добавление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_INS
(
NPRN in number, -- Родитель
STASK in varchar2, -- Задача (TCF - оценка технического состояния (Technical Condition Forecast), RUL - прогнозирование остаточного ресурса (Remaining Useful Life), FP - Прогнозирование отказа (Failure Predict))
NPRECISION_P in number, -- Точность (план)
NRN out number -- Регистрационный номер
)
is
begin
/* Добавляем запись */
UDO_PKG_EQUIPDS_BASE.CMML_INS(NPRN => NPRN, STASK => STASK, NPRECISION_P => NPRECISION_P, NRN => NRN);
end CMML_INS;
/* Клиентское удаление "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_DEL
(
NRN in number -- Регистрационный номер
)
is
begin
/* Удаляем запись */
UDO_PKG_EQUIPDS_BASE.CMML_DEL(NRN => NRN);
end CMML_DEL;
/* Обработка внешней системой "Выборки данных оборудования (классы оборудования, модели)" */
procedure CMML_SEND_RQ
(
NEQUIPDSCMML in number -- Рег. номер модели класса оборудования выборки данных
)
is
begin
/*
TODO: owner="root" created="07.08.2024"
text="Реализовать проверку возможности выполнения действия и установки статусов"
*/
/* Обратимся к модели */
for C in (select T.RN NRN,
T.PRECISION_P NPRECISION_P
from UDO_T_EQUIPDSCMML T
where T.RN = NEQUIPDSCMML)
loop
/* Установим фактическую точность */
UDO_PKG_EQUIPDS_BASE.CMML_SET_PRECISION_F(NRN => C.NRN, NPRECISION_F => C.NPRECISION_P);
/* Установим состояние модели */
UDO_PKG_EQUIPDS_BASE.CMML_SET_STATUS(NRN => C.NRN, NSTATUS => 2, SQUEUE_ID => C.NRN, SERR => null);
end loop;
end CMML_SEND_RQ;
/* Код доступного действия с моделью по единице оборудования */ /* Код доступного действия с моделью по единице оборудования */
function CMML_ACT_BY_EQCONFIG function CMML_ACT_BY_EQCONFIG
( (

View File

@ -20,6 +20,7 @@ create table UDO_T_EQUIPDSCM
/* Ключи */ /* Ключи */
constraint UDO_C_EQUIPDSCM_RN_PK primary key (RN), constraint UDO_C_EQUIPDSCM_RN_PK primary key (RN),
constraint UDO_C_EQUIPDSCM_PRN_FK foreign key (PRN) references UDO_T_EQUIPDS(RN), constraint UDO_C_EQUIPDSCM_PRN_FK foreign key (PRN) references UDO_T_EQUIPDS(RN),
constraint UDO_C_EQUIPDSCM_EQOBJKIND_FK foreign key (EQOBJKIND) references EQOBJKIND(RN),
constraint UDO_C_EQUIPDSCM_USRPD_FK foreign key (USERPROCS_DATA) references USERPROCS(RN), constraint UDO_C_EQUIPDSCM_USRPD_FK foreign key (USERPROCS_DATA) references USERPROCS(RN),
constraint UDO_C_EQUIPDSCM_EXSFNUPLD_FK foreign key (EXSSERVICEFN_UPLOAD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNUPLD_FK foreign key (EXSSERVICEFN_UPLOAD) references EXSSERVICEFN(RN),
constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN),