Формирование запроса на прогнозирование - сохранение параметров запроса для дальнейшей интерпретации результатов
This commit is contained in:
parent
cbef150f5a
commit
108e01bf07
@ -325,13 +325,6 @@ create or replace package UDO_PKG_EQUIPDS_BASE as
|
||||
BFORECAST in blob -- Данные прогноза
|
||||
);
|
||||
|
||||
/* Базовая установка идентификатора очереди обмена "Выборки данных оборудования (классы оборудования, файлы данных, история запросов)" */
|
||||
procedure CMMLH_SET_EXSQUEUE
|
||||
(
|
||||
NRN in number, -- Регистрационный номер
|
||||
NEXSQUEUE in number -- Идентификатор очереди обмена
|
||||
);
|
||||
|
||||
end UDO_PKG_EQUIPDS_BASE;
|
||||
/
|
||||
create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
@ -1292,9 +1285,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
NRN := GEN_ID();
|
||||
/* Добавляем запись */
|
||||
insert into UDO_T_EQUIPDSCMMLH
|
||||
(RN, PRN, EQCONFIG, RQ_AUTHID, RQ_DATE, RQ, FORECAST, EXSQUEUE)
|
||||
(RN, PRN, EQCONFIG, RQ_AUTHID, RQ_DATE, RQ, FORECAST)
|
||||
values
|
||||
(NRN, NPRN, NEQCONFIG, SRQ_AUTHID, DRQ_DATE, BRQ, null, null);
|
||||
(NRN, NPRN, NEQCONFIG, SRQ_AUTHID, DRQ_DATE, BRQ, null);
|
||||
end CMMLH_INS;
|
||||
|
||||
/* Базовое удаление "Выборки данных оборудования (классы оборудования, модели, история запросов)" */
|
||||
@ -1320,17 +1313,5 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as
|
||||
update UDO_T_EQUIPDSCMMLH T set T.FORECAST = BFORECAST where T.RN = NRN;
|
||||
end CMMLH_SET_FORECAST;
|
||||
|
||||
/* Базовая установка идентификатора очереди обмена "Выборки данных оборудования (классы оборудования, файлы данных, история запросов)" */
|
||||
procedure CMMLH_SET_EXSQUEUE
|
||||
(
|
||||
NRN in number, -- Регистрационный номер
|
||||
NEXSQUEUE in number -- Идентификатор очереди обмена
|
||||
)
|
||||
is
|
||||
begin
|
||||
/* Установим идентификатор очереди обмена */
|
||||
update UDO_T_EQUIPDSCMMLH T set T.EXSQUEUE = NEXSQUEUE where T.RN = NRN;
|
||||
end CMMLH_SET_EXSQUEUE;
|
||||
|
||||
end UDO_PKG_EQUIPDS_BASE;
|
||||
/
|
||||
|
@ -61,14 +61,12 @@ create or replace package UDO_PKG_EQUIPTCF as
|
||||
COUT out clob -- Сериализованная карточка
|
||||
);
|
||||
|
||||
/* Подчистка после исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_EPLG
|
||||
/* Подчистка буферов после исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_BCLR
|
||||
(
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NEQCONFIG in number := null, -- Рег. номер технического объекта
|
||||
NEQUIPDSCMML in number := null, -- Рег. номер модели
|
||||
CFORECAST in clob := null -- Данные прогноза
|
||||
NREQUEST_CONFIG_IDENT in number -- Идентификатор буфера описания запроса
|
||||
);
|
||||
|
||||
/* Подготовка запроса на формирование прогноза технического объекта */
|
||||
@ -77,6 +75,7 @@ create or replace package UDO_PKG_EQUIPTCF as
|
||||
NEQUIPDSCMML in number, -- Рег. номер модели
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT in number, -- Идентификатор буфера описания запроса
|
||||
SURL out varchar2, -- Адрес для запроса
|
||||
SAUTH_TOKEN out varchar2, -- Токен аутентификации для запроса
|
||||
SDATASET_ID out varchar2, -- Идентификатор выборки данных запроса
|
||||
@ -86,6 +85,17 @@ create or replace package UDO_PKG_EQUIPTCF as
|
||||
STASK out varchar2 -- Задача для запроса (см. константы UDO_PKG_EQUIPDS_BASE.SCMML_TASK_*)
|
||||
);
|
||||
|
||||
/* Финализация исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_EPLG
|
||||
(
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT in number, -- Идентификатор буфера описания запроса
|
||||
NEQCONFIG in number := null, -- Рег. номер технического объекта
|
||||
NEQUIPDSCMML in number := null, -- Рег. номер модели
|
||||
CFORECAST in clob := null -- Данные прогноза
|
||||
);
|
||||
|
||||
/* Формирование цвета прогноза для технического объекта */
|
||||
function EQCONFIG_THOBJ_FORECAST_CLR
|
||||
(
|
||||
@ -726,40 +736,27 @@ text="Проверка прав доступа при формировании
|
||||
PKG_XMAKE.CLOSE_CURSOR(ICURSOR => NCUR);
|
||||
end EQCONFIG_THOBJ_CARD;
|
||||
|
||||
/* Подчистка после исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_EPLG
|
||||
/* Подчистка буферов после исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_BCLR
|
||||
(
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NEQCONFIG in number := null, -- Рег. номер технического объекта
|
||||
NEQUIPDSCMML in number := null, -- Рег. номер модели
|
||||
CFORECAST in clob := null -- Данные прогноза
|
||||
NREQUEST_CONFIG_IDENT in number -- Идентификатор буфера описания запроса
|
||||
)
|
||||
is
|
||||
NEQUIPDSCMMLH PKG_STD.TREF; -- Рег. номер истории запросов модели
|
||||
begin
|
||||
/* Очистим данные в файловом буфере */
|
||||
P_FILE_BUFFER_CLEAR(NIDENT => NDATASET_IDENT);
|
||||
P_FILE_BUFFER_CLEAR(NIDENT => NDATASET_CONFIG_IDENT);
|
||||
/* Если указаны данные технического объекта */
|
||||
if ((NEQCONFIG is not null) and (NEQUIPDSCMML is not null)) then
|
||||
/* Добавляем запись истории запросов */
|
||||
UDO_PKG_EQUIPDS_BASE.CMMLH_INS(NPRN => NEQUIPDSCMML,
|
||||
NEQCONFIG => NEQCONFIG,
|
||||
SRQ_AUTHID => UTILIZER(),
|
||||
DRQ_DATE => sysdate,
|
||||
BRQ => null,
|
||||
NRN => NEQUIPDSCMMLH);
|
||||
/* Сохраним данные прогноза */
|
||||
UDO_PKG_EQUIPDS_BASE.CMMLH_SET_FORECAST(NRN => NEQUIPDSCMMLH, BFORECAST => BASE64_DECODE(LCSRCE => CFORECAST));
|
||||
end if;
|
||||
end EQCONFIG_THOBJ_FORECAST_EPLG;
|
||||
P_FILE_BUFFER_CLEAR(NIDENT => NREQUEST_CONFIG_IDENT);
|
||||
end EQCONFIG_THOBJ_FORECAST_BCLR;
|
||||
|
||||
/* Подчистка после исполнения запроса на формирование прогноза технического объекта (в автономной транзакции) */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_EPLGAT
|
||||
/* Подчистка буферов после исполнения запроса на формирование прогноза технического объекта (в автономной транзакции) */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_BCLRAT
|
||||
(
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number -- Идентификатор буфера описания данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT in number -- Идентификатор буфера описания запроса
|
||||
)
|
||||
is
|
||||
RPROC_PARAMS PKG_CONTPRMLOC.TCONTAINER; -- Параметры процедуры
|
||||
@ -775,13 +772,17 @@ text="Проверка прав доступа при формировании
|
||||
SNAME => 'NDATASET_CONFIG_IDENT',
|
||||
NVALUE => NDATASET_CONFIG_IDENT,
|
||||
NIN_OUT => PKG_STD.PARAM_TYPE_IN());
|
||||
PKG_CONTPRMLOC.PUTN(RCONTAINER => RPROC_PARAMS,
|
||||
SNAME => 'NREQUEST_CONFIG_IDENT',
|
||||
NVALUE => NREQUEST_CONFIG_IDENT,
|
||||
NIN_OUT => PKG_STD.PARAM_TYPE_IN());
|
||||
/* Подчищаем (в автономной транзакции) */
|
||||
PKG_SQL_CALL.EXECUTE_STORED_AT(SSTORED_NAME => 'UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_FORECAST_EPLG',
|
||||
PKG_SQL_CALL.EXECUTE_STORED_AT(SSTORED_NAME => 'UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_FORECAST_BCLR',
|
||||
RPARAM_CONTAINER => RPROC_PARAMS,
|
||||
BOVERLOAD_ENV => true);
|
||||
/* Очищаем контейнер с параметрами */
|
||||
PKG_CONTPRMLOC.PURGE(RCONTAINER => RPROC_PARAMS);
|
||||
end EQCONFIG_THOBJ_FORECAST_EPLGAT;
|
||||
end EQCONFIG_THOBJ_FORECAST_BCLRAT;
|
||||
|
||||
/* Подготовка запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_PRLG
|
||||
@ -789,6 +790,7 @@ text="Проверка прав доступа при формировании
|
||||
NEQUIPDSCMML in number, -- Рег. номер модели
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT in number, -- Идентификатор буфера описания запроса
|
||||
SURL out varchar2, -- Адрес для запроса
|
||||
SAUTH_TOKEN out varchar2, -- Токен аутентификации для запроса
|
||||
SDATASET_ID out varchar2, -- Идентификатор выборки данных запроса
|
||||
@ -822,28 +824,45 @@ text="Проверка прав доступа при формировании
|
||||
and T.BDATA is not null;
|
||||
exception
|
||||
when others then
|
||||
P_EXCEPTION(0, 'Не удалось проверить выборку данных для прогноза.');
|
||||
P_EXCEPTION(0, 'Не удалось проверить набор данных о наработках.');
|
||||
end;
|
||||
if (NCNT > 1) then
|
||||
P_EXCEPTION(0,
|
||||
'Процедура формирования данных для прогноза вернула более одного набора сведений о наработках.');
|
||||
P_EXCEPTION(0, 'Набор данных о наработках определён неоднозначно.');
|
||||
end if;
|
||||
if (NCNT = 0) then
|
||||
P_EXCEPTION(0,
|
||||
'Процедура формирования данных для прогноза не вернула сведений о наработках.');
|
||||
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;
|
||||
/* Проверим данные конфигурации запроса */
|
||||
begin
|
||||
select count(T.RN)
|
||||
into NCNT
|
||||
from FILE_BUFFER T
|
||||
where T.IDENT = NREQUEST_CONFIG_IDENT
|
||||
and T.BDATA is not null;
|
||||
exception
|
||||
when others then
|
||||
P_EXCEPTION(0,
|
||||
'Процедура формирования данных для прогноза не вернула описания сведений о наработках.');
|
||||
'Не удалось проверить параметры запроса на прогнозирование.');
|
||||
end;
|
||||
if (NCNT > 1) then
|
||||
P_EXCEPTION(0,
|
||||
'Параметры запроса на прогнозирование определёны неоднозначно.');
|
||||
end if;
|
||||
if (NCNT = 0) then
|
||||
P_EXCEPTION(0,
|
||||
'Параметры запроса на прогнозирование не определёны.');
|
||||
end if;
|
||||
/* Читаем запись модели */
|
||||
REQUIPDSCMML := UDO_PKG_EQUIPDS_BASE.CMML_GET(NFLAG_SMART => 0, NRN => NEQUIPDSCMML);
|
||||
@ -895,11 +914,63 @@ text="Проверка прав доступа при формировании
|
||||
exception
|
||||
when others then
|
||||
/* Подчистим буферы */
|
||||
EQCONFIG_THOBJ_FORECAST_EPLGAT(NDATASET_IDENT => NDATASET_IDENT, NDATASET_CONFIG_IDENT => NDATASET_CONFIG_IDENT);
|
||||
EQCONFIG_THOBJ_FORECAST_BCLRAT(NDATASET_IDENT => NDATASET_IDENT,
|
||||
NDATASET_CONFIG_IDENT => NDATASET_CONFIG_IDENT,
|
||||
NREQUEST_CONFIG_IDENT => NREQUEST_CONFIG_IDENT);
|
||||
/* Пробросим ошибку */
|
||||
raise;
|
||||
end EQCONFIG_THOBJ_FORECAST_PRLG;
|
||||
|
||||
/* Финализация исполнения запроса на формирование прогноза технического объекта */
|
||||
procedure EQCONFIG_THOBJ_FORECAST_EPLG
|
||||
(
|
||||
NDATASET_IDENT in number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT in number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT in number, -- Идентификатор буфера описания запроса
|
||||
NEQCONFIG in number, -- Рег. номер технического объекта
|
||||
NEQUIPDSCMML in number, -- Рег. номер модели
|
||||
CFORECAST in clob -- Данные прогноза
|
||||
)
|
||||
is
|
||||
NEQUIPDSCMMLH PKG_STD.TREF; -- Рег. номер истории запросов модели
|
||||
BRQ blob; -- Описание параметров запроса на прогноз
|
||||
begin
|
||||
/* Считаем параметры сделанного запроса */
|
||||
begin
|
||||
select T.BDATA
|
||||
into BRQ
|
||||
from FILE_BUFFER T
|
||||
where T.IDENT = NREQUEST_CONFIG_IDENT
|
||||
and T.BDATA is not null;
|
||||
exception
|
||||
when NO_DATA_FOUND then
|
||||
P_EXCEPTION(0, 'Параметры запроса на прогнозирование не определёны.');
|
||||
when TOO_MANY_ROWS then
|
||||
P_EXCEPTION(0, 'Параметры запроса на прогнозирование определёны неоднозначно.');
|
||||
end;
|
||||
/* Добавляем запись истории запросов */
|
||||
UDO_PKG_EQUIPDS_BASE.CMMLH_INS(NPRN => NEQUIPDSCMML,
|
||||
NEQCONFIG => NEQCONFIG,
|
||||
SRQ_AUTHID => UTILIZER(),
|
||||
DRQ_DATE => sysdate,
|
||||
BRQ => BRQ,
|
||||
NRN => NEQUIPDSCMMLH);
|
||||
/* Сохраним данные прогноза */
|
||||
UDO_PKG_EQUIPDS_BASE.CMMLH_SET_FORECAST(NRN => NEQUIPDSCMMLH, BFORECAST => BASE64_DECODE(LCSRCE => CFORECAST));
|
||||
/* Подчистим буферы */
|
||||
EQCONFIG_THOBJ_FORECAST_BCLR(NDATASET_IDENT => NDATASET_IDENT,
|
||||
NDATASET_CONFIG_IDENT => NDATASET_CONFIG_IDENT,
|
||||
NREQUEST_CONFIG_IDENT => NREQUEST_CONFIG_IDENT);
|
||||
exception
|
||||
when others then
|
||||
/* Подчистим буферы */
|
||||
EQCONFIG_THOBJ_FORECAST_BCLRAT(NDATASET_IDENT => NDATASET_IDENT,
|
||||
NDATASET_CONFIG_IDENT => NDATASET_CONFIG_IDENT,
|
||||
NREQUEST_CONFIG_IDENT => NREQUEST_CONFIG_IDENT);
|
||||
/* Пробросим ошибку */
|
||||
raise;
|
||||
end EQCONFIG_THOBJ_FORECAST_EPLG;
|
||||
|
||||
/* Формирование цвета прогноза для технического объекта */
|
||||
function EQCONFIG_THOBJ_FORECAST_CLR
|
||||
(
|
||||
|
@ -5,7 +5,8 @@ create or replace procedure UDO_P_EQCONFIG_DATASET_MAKE
|
||||
DBEG in date, -- Дата "С"
|
||||
DEND in date, -- Дата "По"
|
||||
NDATASET_IDENT out number, -- Идентификатор буфера данных
|
||||
NDATASET_CONFIG_IDENT out number -- Идентификатор буфера описания данных
|
||||
NDATASET_CONFIG_IDENT out number, -- Идентификатор буфера описания данных
|
||||
NREQUEST_CONFIG_IDENT out number -- Идентификатор буфера описания запроса
|
||||
)
|
||||
is
|
||||
begin
|
||||
|
@ -15,13 +15,10 @@ create table UDO_T_EQUIPDSCMMLH
|
||||
RQ blob,
|
||||
/* Данные прогноза */
|
||||
FORECAST blob,
|
||||
/* Идентификатор очереди обмена */
|
||||
EXSQUEUE number(17) default null,
|
||||
/* Ключи */
|
||||
constraint UDO_C_EQUIPDSCMMLH_RN_PK primary key (RN),
|
||||
constraint UDO_C_EQUIPDSCMMLH_PRN_FK foreign key (PRN) references UDO_T_EQUIPDSCMML(RN),
|
||||
constraint UDO_C_EQUIPDSCMMLH_EQCONFIG_FK foreign key (EQCONFIG) references EQCONFIG(RN),
|
||||
constraint UDO_C_EQUIPDSCMMLH_RQAUTHID_NB check (rtrim(RQ_AUTHID) is not null),
|
||||
constraint UDO_C_EQUIPDSCMMLH_EXSQUEUE_FK foreign key (EXSQUEUE) references EXSQUEUE(RN),
|
||||
constraint UDO_C_EQUIPDSCMMLH_UN unique (PRN, RQ_AUTHID, RQ_DATE)
|
||||
);
|
||||
|
@ -179,13 +179,32 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
||||
callBack: async res => {
|
||||
//Данные подготовлены успешно
|
||||
if (res.success) {
|
||||
//Проверим наличие необходимых выходных параметров
|
||||
try {
|
||||
if (!res.outParameters.NDATASET_IDENT)
|
||||
throw new Error(
|
||||
'Процедура подготовки данных о наработках не вернула идентификатор буфера набора данных (проверьте наличие и значение выходного параметра "NDATASET_IDENT").'
|
||||
);
|
||||
if (!res.outParameters.NDATASET_CONFIG_IDENT)
|
||||
throw new Error(
|
||||
'Процедура подготовки данных о наработках не вернула идентификатор буфера описания набора данных (проверьте наличие и значение выходного параметра "NDATASET_CONFIG_IDENT").'
|
||||
);
|
||||
if (!res.outParameters.NREQUEST_CONFIG_IDENT)
|
||||
throw new Error(
|
||||
'Процедура подготовки данных о наработках не вернула идентификатор буфера параметров запроса на прогнозирование (проверьте наличие и значение выходного параметра "NREQUEST_CONFIG_IDENT").'
|
||||
);
|
||||
} catch (e) {
|
||||
showMsgErr(e.message);
|
||||
return;
|
||||
}
|
||||
//Подготовим запрос к фреймворку прогнозирования
|
||||
const forecastReqData = await executeStored({
|
||||
stored: "UDO_PKG_EQUIPTCF.EQCONFIG_THOBJ_FORECAST_PRLG",
|
||||
args: {
|
||||
NEQUIPDSCMML: model.NRN,
|
||||
NDATASET_IDENT: res.outParameters.NDATASET_IDENT,
|
||||
NDATASET_CONFIG_IDENT: res.outParameters.NDATASET_CONFIG_IDENT,
|
||||
NDATASET_IDENT: res.outParameters.NDATASET_IDENT
|
||||
NREQUEST_CONFIG_IDENT: res.outParameters.NREQUEST_CONFIG_IDENT
|
||||
},
|
||||
tagValueProcessor: (name, value) => (name === "VALUE" ? undefined : value)
|
||||
});
|
||||
@ -211,8 +230,7 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
||||
headers: {
|
||||
Authorization: `Basic ${forecastReqData.SAUTH_TOKEN}`,
|
||||
Accept: "*/*",
|
||||
"Content-Type": "application/json",
|
||||
"User-Agent": "Parus"
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
});
|
||||
//Обработаем результаты
|
||||
@ -221,7 +239,7 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
||||
try {
|
||||
responseJson = await response.json();
|
||||
} catch (e) {
|
||||
throw new Error("Неожиданный ответ системы прогнозирования: ответ неверного формата!");
|
||||
throw new Error("Неожиданный ответ системы прогнозирования: ответ неверного формата.");
|
||||
}
|
||||
if (response) {
|
||||
if (responseJson?.status && responseJson.status == "ERR")
|
||||
@ -232,6 +250,7 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
||||
args: {
|
||||
NDATASET_IDENT: res.outParameters.NDATASET_IDENT,
|
||||
NDATASET_CONFIG_IDENT: res.outParameters.NDATASET_CONFIG_IDENT,
|
||||
NREQUEST_CONFIG_IDENT: res.outParameters.NREQUEST_CONFIG_IDENT,
|
||||
NEQCONFIG: techObj.id,
|
||||
NEQUIPDSCMML: model.NRN,
|
||||
CFORECAST: {
|
||||
@ -243,9 +262,9 @@ const ForecastTab = ({ onGoToAdmin }) => {
|
||||
});
|
||||
hideLoader();
|
||||
setRefresh(pv => ({ ...pv, techObjForecastHistList: pv.techObjForecastHistList + 1 }));
|
||||
} else throw new Error("Неожиданный ответ системы прогнозирования: ответ не содержит данных прогноза!");
|
||||
} else throw new Error("Неожиданный ответ системы прогнозирования: ответ не содержит данных!");
|
||||
} else throw new Error(`Ошибка (${response.status}) при взаимодейтсвии с системой прогнозирования!`);
|
||||
} else throw new Error("Неожиданный ответ системы прогнозирования: ответ не содержит данных прогноза.");
|
||||
} else throw new Error("Неожиданный ответ системы прогнозирования: ответ не содержит данных.");
|
||||
} else throw new Error(`Ошибка (${response.status}) при взаимодейтсвии с системой прогнозирования.`);
|
||||
} catch (e) {
|
||||
hideLoader();
|
||||
showMsgErr(e.message);
|
||||
|
Loading…
x
Reference in New Issue
Block a user