From acd2b6978e9cb37f2a67971042929bcd84a1efd4 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 8 Aug 2024 11:43:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83?= =?UTF-8?q?=D1=80=D1=8B=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?,=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20=D0=B8=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2=D0=BD=D0=B5?= =?UTF-8?q?=D1=88=D0=BD=D0=B5=D0=B9=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Доработка процедуры формирования карточки класса оборудования выборки данных --- db/UDO_PKG_EQUIPDS.pck | 222 +++++++++++++++++++++++++++++++++++++++-- db/UDO_T_EQUIPDSCM.sql | 1 + 2 files changed, 212 insertions(+), 11 deletions(-) diff --git a/db/UDO_PKG_EQUIPDS.pck b/db/UDO_PKG_EQUIPDS.pck index 27cc026..0ab68df 100644 --- a/db/UDO_PKG_EQUIPDS.pck +++ b/db/UDO_PKG_EQUIPDS.pck @@ -1,6 +1,6 @@ create or replace package UDO_PKG_EQUIPDS as - /* Список выборок данных */ + /* Список "Выборки данных оборудования" */ procedure LIST ( COUT out clob -- Сериализованная таблица данных @@ -17,10 +17,17 @@ create or replace package UDO_PKG_EQUIPDS as /* Клиентское удаление "Выборки данных оборудования" */ procedure DEL ( - NRN in number -- Регистрационный номер + NRN in number -- Регистрационный номер ); - /* Список классов оборудования выборки данных */ + /* Карточка "Выборки данных оборудования (классы оборудования)" */ + procedure CM_CARD + ( + NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных + COUT out clob -- Сериализованная карточка + ); + + /* Список "Выборки данных оборудования (классы оборудования)" */ procedure CM_LIST ( NEQUIPDS in number, -- Рег. номер выборки данных @@ -48,20 +55,53 @@ create or replace package UDO_PKG_EQUIPDS as NRN in number -- Регистрационный номер ); - /* Список файлов данных класса оборудования */ + /* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */ procedure CMFL_LIST ( NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных COUT out clob -- Сериализованная таблица данных ); - /* Список моделей класса оборудования */ + /* Загрузка на сервер "Выборки данных оборудования (классы оборудования, файлы данных)" */ + procedure CMFL_UPLOAD + ( + NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных + ); + + /* Передача внешней системе "Выборки данных оборудования (классы оборудования, файлы данных)" */ + procedure CMFL_SEND_MD + ( + NEQUIPDSCM in number -- Рег. номер класса оборудования выборки данных + ); + + /* Список "Выборки данных оборудования (классы оборудования, модели)" */ procedure CMML_LIST ( NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных 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 ( @@ -83,7 +123,7 @@ TODO: owner="root" created="06.08.2024" text="Проверка прав доступа на работу с ""Выборками данных""" */ - /* Список выборок данных */ + /* Список "Выборки данных оборудования" */ procedure LIST ( COUT out clob -- Сериализованная таблица данных @@ -150,11 +190,86 @@ text="Проверка прав доступа на работу с ""Выбор is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация begin - /* Добавляем запись */ + /* Удаляем запись */ UDO_PKG_EQUIPDS_BASE.DEL(NRN => NRN, NCOMPANY => NCOMPANY); 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 ( NEQUIPDS in number, -- Рег. номер выборки данных @@ -259,11 +374,11 @@ text="Проверка прав доступа на работу с ""Выбор ) is begin - /* Добавляем запись */ + /* Удаляем запись */ UDO_PKG_EQUIPDS_BASE.CM_DEL(NRN => NRN); end CM_DEL; - /* Список файлов данных класса оборудования */ + /* Список "Выборки данных оборудования (классы оборудования, файлы данных)" */ procedure CMFL_LIST ( NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных @@ -321,7 +436,43 @@ text="Проверка прав доступа на работу с ""Выбор COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); 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 ( NEQUIPDSCM in number, -- Рег. номер класса оборудования выборки данных @@ -385,6 +536,55 @@ text="Проверка прав доступа на работу с ""Выбор COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); 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 ( diff --git a/db/UDO_T_EQUIPDSCM.sql b/db/UDO_T_EQUIPDSCM.sql index 8af53ce..111fe67 100644 --- a/db/UDO_T_EQUIPDSCM.sql +++ b/db/UDO_T_EQUIPDSCM.sql @@ -20,6 +20,7 @@ create table UDO_T_EQUIPDSCM /* Ключи */ 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_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_EXSFNUPLD_FK foreign key (EXSSERVICEFN_UPLOAD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN),