From 6c1e35a324457631f79412d838b5ed9940648543 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Tue, 18 Mar 2025 20:08:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B3=D0=BD?= =?UTF-8?q?=D0=BE=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?(=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE,=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=86=D0=B5=D0=B4=D1=83=D1=80=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B3?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EQUIPTCF.pck | 92 ++++++++++++++++++++++++++++++ db/UDO_P_EQCONFIG_DATASET_MAKE.prc | 26 +++++++++ db/UDO_P_EQUIPDSCMFL_CREATE.prc | 2 +- db/grants.sql | 1 + 4 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 db/UDO_P_EQCONFIG_DATASET_MAKE.prc diff --git a/db/UDO_PKG_EQUIPTCF.pck b/db/UDO_PKG_EQUIPTCF.pck index 9134e97..da01359 100644 --- a/db/UDO_PKG_EQUIPTCF.pck +++ b/db/UDO_PKG_EQUIPTCF.pck @@ -68,6 +68,29 @@ create or replace package UDO_PKG_EQUIPTCF as NEQUIPDSCMML in number -- Рег. номер модели ); + /* Подготовка запроса на формирование прогноза технического объекта */ + procedure EQCONFIG_THOBJ_FORECAST_PRLG + ( + NEQCONFIG in number, -- Рег. номер технического объекта + NEQUIPDSCMML in number, -- Рег. номер модели + NDATASET_IDENT in number, -- Идентификатор буфера данных + NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных + SURL out varchar2, -- Адрес для запроса + SAUTH_TOKEN out varchar2, -- Токен аутентификации для запроса + SDATASET_ID out varchar2, -- Идентификатор выборки данных запроса + CDATASET_CONFIG out clob, -- Описание данных о наработках + SDATASET_URL out varchar2, -- Адрес для получения данных о наработках + SCLASS_MACHINE out varchar2, -- Код класса оборудования для запроса + STASK out varchar2 -- Задача для запроса (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*) + ); + + /* Подчистка после исполнения запроса на формирование прогноза технического объекта */ + procedure EQCONFIG_THOBJ_FORECAST_EPLG + ( + NDATASET_IDENT in number, -- Идентификатор буфера данных + NDATASET_CONFIG_IDENT in number -- Идентификатор буфера описания данных + ); + /* Формирование цвета прогноза для технического объекта */ function EQCONFIG_THOBJ_FORECAST_CLR ( @@ -736,6 +759,75 @@ text="Проверка прав доступа при формировании end loop; end EQCONFIG_THOBJ_FORECAST; + /* Подготовка запроса на формирование прогноза технического объекта */ + procedure EQCONFIG_THOBJ_FORECAST_PRLG + ( + NEQCONFIG in number, -- Рег. номер технического объекта + NEQUIPDSCMML in number, -- Рег. номер модели + NDATASET_IDENT in number, -- Идентификатор буфера данных + NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных + SURL out varchar2, -- Адрес для запроса + SAUTH_TOKEN out varchar2, -- Токен аутентификации для запроса + SDATASET_ID out varchar2, -- Идентификатор выборки данных запроса + CDATASET_CONFIG out clob, -- Описание данных о наработках + SDATASET_URL out varchar2, -- Адрес для получения данных о наработках + SCLASS_MACHINE out varchar2, -- Код класса оборудования для запроса + STASK out varchar2 -- Задача для запроса (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*) + ) + is + NCNT PKG_STD.TNUMBER; -- Буфер для количества файлов данных + begin + /* Проверим данные о наработках */ + begin + select count(T.RN) + into NCNT + from FILE_BUFFER T + where T.IDENT = NDATASET_IDENT + and T.BDATA is not null; + exception + when others then + P_EXCEPTION(0, 'Не удалось проверить выборку данных для прогноза.'); + end; + if (NCNT > 0) then + P_EXCEPTION(0, + 'Процедура формирования данных для прогноза вернула более одного набора сведений о наработках.'); + end if; + if (NCNT = 0) then + P_EXCEPTION(0, + 'Процедура формирования данных для прогноза не вернула сведений о наработках.'); + end if; + /* Читаем описание данных о наработках */ + for C in (select T.DATA CDATA from FILE_BUFFER T where T.IDENT = NDATASET_CONFIG_IDENT) + loop + if (CDATASET_CONFIG is not null) then + P_EXCEPTION(0, + 'Процедура формирования данных для прогноза вернула более одного описания сведений о наработках.'); + end if; + CDATASET_CONFIG := C.CDATA; + end loop; + if (CDATASET_CONFIG is null) then + P_EXCEPTION(0, + 'Процедура формирования данных для прогноза не вернула описания сведений о наработках.'); + end if; + /* Формируем URL для запроса */ + SURL := 'https://parus.cadred.ru/API/forecast/metadata'; + /* Формируем токен для аутентификации */ + SAUTH_TOKEN := to_char(base64_encode(clob2blob('parus_remote:CreateNewAccount_787898'))); + end EQCONFIG_THOBJ_FORECAST_PRLG; + + /* Подчистка после исполнения запроса на формирование прогноза технического объекта */ + procedure EQCONFIG_THOBJ_FORECAST_EPLG + ( + NDATASET_IDENT in number, -- Идентификатор буфера данных + NDATASET_CONFIG_IDENT in number -- Идентификатор буфера описания данных + ) + is + begin + /* Очистим данные в файловом буфере */ + P_FILE_BUFFER_CLEAR(NIDENT => NDATASET_IDENT); + P_FILE_BUFFER_CLEAR(NIDENT => NDATASET_CONFIG_IDENT); + end EQCONFIG_THOBJ_FORECAST_EPLG; + /* Формирование цвета прогноза для технического объекта */ function EQCONFIG_THOBJ_FORECAST_CLR ( diff --git a/db/UDO_P_EQCONFIG_DATASET_MAKE.prc b/db/UDO_P_EQCONFIG_DATASET_MAKE.prc new file mode 100644 index 0000000..b8b1a8a --- /dev/null +++ b/db/UDO_P_EQCONFIG_DATASET_MAKE.prc @@ -0,0 +1,26 @@ +create or replace procedure UDO_P_EQCONFIG_DATASET_MAKE +/* Формирование сведений о наработках единицы оборудования для прогноза */ +( + NEQCONFIG in number, -- Рег. номер единицы оборудования + DBEG in date, -- Дата "С" + DEND in date, -- Дата "По" + NDATASET_IDENT out number, -- Идентификатор буфера данных + NDATASET_CONFIG_IDENT out number -- Идентификатор буфера описания данных +) +is +begin + for C in (select T.COMPANY, + T.RN + from EQCONFIG T + where T.RN = NEQCONFIG) + loop + UDO_PKG_EQUIPDS_DATAPROCESS.DATASET_CONF_SET(NCOMPANY => C.COMPANY, + NEQCONFIG => C.RN, + DBEG => DBEG, + DEND => DEND, + NLENGTH_GB => 1, + NDATASET_IDENT => NDATASET_IDENT, + NDATASET_CONFIG_IDENT => NDATASET_CONFIG_IDENT); + end loop; +end UDO_P_EQCONFIG_DATASET_MAKE; +/ diff --git a/db/UDO_P_EQUIPDSCMFL_CREATE.prc b/db/UDO_P_EQUIPDSCMFL_CREATE.prc index b3ec9f2..0d9f52a 100644 --- a/db/UDO_P_EQUIPDSCMFL_CREATE.prc +++ b/db/UDO_P_EQUIPDSCMFL_CREATE.prc @@ -25,5 +25,5 @@ begin CFILENAME => null, CDATA => 'Описание структуры выборки', BLOBDATA => null); -end; +end UDO_P_EQUIPDSCMFL_CREATE; / diff --git a/db/grants.sql b/db/grants.sql index 63ea6a9..03ebab6 100644 --- a/db/grants.sql +++ b/db/grants.sql @@ -1,2 +1,3 @@ grant execute on UDO_PKG_EQUIPTCF to public; grant execute on UDO_PKG_EQUIPDS to public; +grant execute on UDO_P_EQCONFIG_DATASET_MAKE to public;