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;