From e622dc24b7d459f5cef9334ae6a239ba2ca1703c Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 2 Apr 2025 02:04:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=B0=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D0=B1=D1=83=D1=82=20"=D0=A4=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BE=D0=B1=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D1=83=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B3=D0=BD=D0=BE?= =?UTF-8?q?=D0=B7=D0=B0"=20=D0=B4=D0=BB=D1=8F=20"=D0=92=D1=8B=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=BA=D0=B8=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BE=D1=80=D1=83=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20(=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D1=83=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EQUIPDS.pck | 68 ++++- db/UDO_PKG_EQUIPDS_BASE.pck | 44 ++- db/UDO_T_EQUIPDSCM.sql | 5 +- panels/eqs_tech_cond_forecast/admin_tab.js | 4 +- .../admin_tab_layout.js | 239 +++++++++------- .../eqs_tech_cond_forecast_layout.js | 6 +- panels/eqs_tech_cond_forecast/forecast_tab.js | 4 +- .../forecast_tab_layout.js | 270 +++++++++++------- 8 files changed, 414 insertions(+), 226 deletions(-) diff --git a/db/UDO_PKG_EQUIPDS.pck b/db/UDO_PKG_EQUIPDS.pck index 1a0fad9..d107dc3 100644 --- a/db/UDO_PKG_EQUIPDS.pck +++ b/db/UDO_PKG_EQUIPDS.pck @@ -37,6 +37,8 @@ create or replace package UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных ); @@ -72,6 +74,8 @@ create or replace package UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NRN out number -- Регистрационный номер ); @@ -91,7 +95,9 @@ create or replace package UDO_PKG_EQUIPDS as SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой - SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2 -- Функция обмена для публикации данных наработки оборудования при получении прогноза ); /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ @@ -325,6 +331,8 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных ) @@ -363,6 +371,10 @@ create or replace package body UDO_PKG_EQUIPDS as P_EXCEPTION(0, 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); end if; + if ((SEXSSERVICE_FRCST_MD is null) or (SEXSSERVICEFN_FRCST_MD is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для публикации данных наработки оборудования при получении прогноза.'); + end if; /* Проверим права доступа */ UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_MAKE'); /* Проверим наличие такой выборки */ @@ -395,6 +407,8 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + SEXSSERVICE_FRCST_MD => SEXSSERVICE_FRCST_MD, + SEXSSERVICEFN_FRCST_MD => SEXSSERVICEFN_FRCST_MD, NRN => NEQUIPDSCM); end if; end MAKE; @@ -429,7 +443,9 @@ create or replace package body UDO_PKG_EQUIPDS as SRQ.CODE SEXSSERVICE_SEND_RQ, SFRQ.CODE SEXSSERVICEFN_SEND_RQ, SRQCB.CODE SEXSSERVICE_SEND_RQCB, - SFRQCB.CODE SEXSSERVICEFN_SEND_RQCB + SFRQCB.CODE SEXSSERVICEFN_SEND_RQCB, + SFCMD.CODE SEXSSERVICE_FRCST_MD, + SFFCMD.CODE SEXSSERVICEFN_FRCST_MD from UDO_T_EQUIPDSCM T, EQOBJKIND OK, USERPROCS UP, @@ -443,6 +459,8 @@ create or replace package body UDO_PKG_EQUIPDS as EXSSERVICEFN SFRQ, EXSSERVICE SRQCB, EXSSERVICEFN SFRQCB, + EXSSERVICE SFCMD, + EXSSERVICEFN SFFCMD, DICMUNTS DM where T.RN = NEQUIPDSCM and T.EQOBJKIND = OK.RN @@ -456,7 +474,9 @@ create or replace package body UDO_PKG_EQUIPDS as and T.EXSSERVICEFN_SEND_RQ = SFRQ.RN and SFRQ.PRN = SRQ.RN and T.EXSSERVICEFN_SEND_RQCB = SFRQCB.RN - and SFRQCB.PRN = SRQCB.RN + and SFRQCB.PRN = SRQCB.RN + and T.EXSSERVICEFN_FRCST_MD = SFFCMD.RN + and SFFCMD.PRN = SFCMD.RN and T.DICMUNTS = DM.RN) loop /* Собираем карточку класса оборудования */ @@ -507,7 +527,13 @@ create or replace package body UDO_PKG_EQUIPDS as SVALUE => C.SEXSSERVICE_SEND_RQCB), RATTRIBUTE14 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SEXSSERVICEFN_SEND_RQCB', - SVALUE => C.SEXSSERVICEFN_SEND_RQCB))); + SVALUE => C.SEXSSERVICEFN_SEND_RQCB), + RATTRIBUTE15 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICE_FRCST_MD', + SVALUE => C.SEXSSERVICE_FRCST_MD), + RATTRIBUTE16 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_FRCST_MD', + SVALUE => C.SEXSSERVICEFN_FRCST_MD))); end loop; /* Формируем XML-представление ответа */ XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XEQUIPDSCM); @@ -622,6 +648,8 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NRN out number -- Регистрационный номер ) is @@ -634,6 +662,7 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD PKG_STD.TREF; -- Рег. номер функции обмена для публикации данных наработки оборудования при получении прогноза begin /* Проверим параметры */ if (NPRN is null) then @@ -667,6 +696,10 @@ create or replace package body UDO_PKG_EQUIPDS as P_EXCEPTION(0, 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); end if; + if ((SEXSSERVICE_FRCST_MD is null) or (SEXSSERVICEFN_FRCST_MD is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для публикации данных наработки оборудования при получении прогноза.'); + end if; /* Проверим права доступа */ UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_INSERT'); /* Разыменуем ссылки */ @@ -684,6 +717,8 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + SEXSSERVICE_FRCST_MD => SEXSSERVICE_FRCST_MD, + SEXSSERVICEFN_FRCST_MD => SEXSSERVICEFN_FRCST_MD, NEQOBJKIND => NEQOBJKIND, NDICMUNTS => NDICMUNTS, NUSERPROCS_DATA => NUSERPROCS_DATA, @@ -691,7 +726,8 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, - NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB, + NEXSSERVICEFN_FRCST_MD => NEXSSERVICEFN_FRCST_MD); /* Добавляем запись */ UDO_PKG_EQUIPDS_BASE.CM_INS(NPRN => NPRN, NEQOBJKIND => NEQOBJKIND, @@ -702,6 +738,7 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB, + NEXSSERVICEFN_FRCST_MD => NEXSSERVICEFN_FRCST_MD, NRN => NRN); end CM_INS; @@ -721,7 +758,9 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой - SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2 -- Функция обмена для публикации данных наработки оборудования при получении прогноза ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация @@ -733,6 +772,7 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD PKG_STD.TREF; -- Рег. номер функции обмена для публикации данных наработки оборудования при получении прогноза begin /* Проверим параметры */ if (NRN is null) then @@ -766,6 +806,10 @@ create or replace package body UDO_PKG_EQUIPDS as P_EXCEPTION(0, 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); end if; + if ((SEXSSERVICE_FRCST_MD is null) or (SEXSSERVICEFN_FRCST_MD is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для публикации данных наработки оборудования при получении прогноза.'); + end if; /* Проверим права доступа */ UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_UPDATE'); /* Разыменуем ссылки */ @@ -783,6 +827,8 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + SEXSSERVICE_FRCST_MD => SEXSSERVICE_FRCST_MD, + SEXSSERVICEFN_FRCST_MD => SEXSSERVICEFN_FRCST_MD, NEQOBJKIND => NEQOBJKIND, NDICMUNTS => NDICMUNTS, NUSERPROCS_DATA => NUSERPROCS_DATA, @@ -790,7 +836,8 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, - NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB, + NEXSSERVICEFN_FRCST_MD => NEXSSERVICEFN_FRCST_MD); /* Исправляем запись */ UDO_PKG_EQUIPDS_BASE.CM_UPD(NRN => NRN, NEQOBJKIND => NEQOBJKIND, @@ -800,7 +847,8 @@ create or replace package body UDO_PKG_EQUIPDS as NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, - NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB, + NEXSSERVICEFN_FRCST_MD => NEXSSERVICEFN_FRCST_MD); end CM_UPD; /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ @@ -1318,8 +1366,8 @@ create or replace package body UDO_PKG_EQUIPDS as where CM.EQOBJKIND = (select CF.OBJ_KIND from EQCONFIG CF where CF.RN = NEQCONFIG) and CM.RN = ML.PRN) loop - /* Модель есть */ - if (NRES < UDO_PKG_EQUIPDS_BASE.NCMML_STATUS_PROCESSED) then + /* Модель есть, но пока не видели обученных */ + if (NRES < 2) then NRES := 1; end if; /* Если она уже обучена */ diff --git a/db/UDO_PKG_EQUIPDS_BASE.pck b/db/UDO_PKG_EQUIPDS_BASE.pck index 86aa50e..d099b0f 100644 --- a/db/UDO_PKG_EQUIPDS_BASE.pck +++ b/db/UDO_PKG_EQUIPDS_BASE.pck @@ -117,7 +117,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой - SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NEQOBJKIND out number, -- Рег. номер класса оборудования NDICMUNTS out number, -- Рег. номер единицы измерения выборки NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования @@ -125,7 +127,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой - NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB out number, -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD out number -- Рег. номер функции обмена для публикации данных наработки оборудования при получении прогноза ); /* Базовое добавление "Выборки данных оборудования (классы оборудования)" */ @@ -140,6 +143,7 @@ create or replace package UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD in number, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NRN out number -- Регистрационный номер ); @@ -154,7 +158,8 @@ create or replace package UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой - NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD in number -- Функция обмена для публикации данных наработки оборудования при получении прогноза ); /* Базовое удаление "Выборки данных оборудования (классы оборудования)" */ @@ -549,7 +554,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой - SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICE_FRCST_MD in varchar2, -- Сервис обмена для публикации данных наработки оборудования при получении прогноза + SEXSSERVICEFN_FRCST_MD in varchar2, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NEQOBJKIND out number, -- Рег. номер класса оборудования NDICMUNTS out number, -- Рег. номер единицы измерения выборки NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования @@ -557,7 +564,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой - NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB out number, -- Рег. номер call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD out number -- Рег. номер функции обмена для публикации данных наработки оборудования при получении прогноза ) is NEXSSERVICE PKG_STD.TREF; -- Рег. номер сервиса обмена @@ -615,6 +623,13 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICE => NEXSSERVICE, SCODE => SEXSSERVICEFN_SEND_RQCB, NRN => NEXSSERVICEFN_SEND_RQCB); + /* Функция обмена для публикации данных наработки оборудования при получении прогноза */ + FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_FRCST_MD, NRN => NEXSSERVICE); + FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, + NFLAG_OPTION => 0, + NEXSSERVICE => NEXSSERVICE, + SCODE => SEXSSERVICEFN_FRCST_MD, + NRN => NEXSSERVICEFN_FRCST_MD); end CM_JOINS; /* Базовые проверки целостности и корректности "Выборки данных оборудования (классы оборудования)" */ @@ -675,6 +690,10 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as P_EXCEPTION(0, 'Функция обмена для обратной связи об обработке внешней системой должна иметь тип "Приём сообщений".'); end if; + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_FRCST_MD) <> PKG_EXS.NSRV_TYPE_RECIVE) then + P_EXCEPTION(0, + 'Функция обмена для публикации данных наработки оборудования при получении прогноза должна иметь тип "Приём сообщений".'); + end if; end EXSSERVICE_TYPE_CHECK; begin /* Работаем от режима */ @@ -727,6 +746,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD in number, -- Функция обмена для публикации данных наработки оборудования при получении прогноза NRN out number -- Регистрационный номер ) is @@ -742,6 +762,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB; RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ; RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB; + RREC.EXSSERVICEFN_FRCST_MD := NEXSSERVICEFN_FRCST_MD; /* Проверим возможность исполнения */ CM_CHECK(SMODE => 'I', RREC => RREC); /* Формируем рег. номер */ @@ -758,7 +779,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as EXSSERVICEFN_SEND_MD, EXSSERVICEFN_SEND_MDCB, EXSSERVICEFN_SEND_RQ, - EXSSERVICEFN_SEND_RQCB) + EXSSERVICEFN_SEND_RQCB, + EXSSERVICEFN_FRCST_MD) values (NRN, NPRN, @@ -770,7 +792,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MD, NEXSSERVICEFN_SEND_MDCB, NEXSSERVICEFN_SEND_RQ, - NEXSSERVICEFN_SEND_RQCB); + NEXSSERVICEFN_SEND_RQCB, + NEXSSERVICEFN_FRCST_MD); end CM_INS; /* Базовое исправление "Выборки данных оборудования (классы оборудования)" */ @@ -784,7 +807,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой - NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой + NEXSSERVICEFN_FRCST_MD in number -- Функция обмена для публикации данных наработки оборудования при получении прогноза ) is RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки @@ -799,6 +823,7 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB; RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ; RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB; + RREC.EXSSERVICEFN_FRCST_MD := NEXSSERVICEFN_FRCST_MD; /* Проверим возможность исполнения */ CM_CHECK(SMODE => 'U', RREC => RREC); /* Исправим данные */ @@ -810,7 +835,8 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as T.EXSSERVICEFN_SEND_MD = NEXSSERVICEFN_SEND_MD, T.EXSSERVICEFN_SEND_MDCB = NEXSSERVICEFN_SEND_MDCB, T.EXSSERVICEFN_SEND_RQ = NEXSSERVICEFN_SEND_RQ, - T.EXSSERVICEFN_SEND_RQCB = NEXSSERVICEFN_SEND_RQCB + T.EXSSERVICEFN_SEND_RQCB = NEXSSERVICEFN_SEND_RQCB, + T.EXSSERVICEFN_FRCST_MD = NEXSSERVICEFN_FRCST_MD where T.RN = NRN; end CM_UPD; diff --git a/db/UDO_T_EQUIPDSCM.sql b/db/UDO_T_EQUIPDSCM.sql index 866ab76..e3ece98 100644 --- a/db/UDO_T_EQUIPDSCM.sql +++ b/db/UDO_T_EQUIPDSCM.sql @@ -23,6 +23,8 @@ create table UDO_T_EQUIPDSCM EXSSERVICEFN_SEND_RQ number(17) not null, /* Call-back функции обмена для обработки внешней системой */ EXSSERVICEFN_SEND_RQCB number(17) not null, + /* Функция обмена для публикации данных наработки оборудования при получении прогноза */ + EXSSERVICEFN_FRCST_MD number(17) not null, /* Ключи */ constraint UDO_C_EQUIPDSCM_RN_PK primary key (RN), constraint UDO_C_EQUIPDSCM_PRN_FK foreign key (PRN) references UDO_T_EQUIPDS(RN), @@ -33,6 +35,7 @@ create table UDO_T_EQUIPDSCM constraint UDO_C_EQUIPDSCM_EXSFNSDMD_FK foreign key (EXSSERVICEFN_SEND_MD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDMDCB_FK foreign key (EXSSERVICEFN_SEND_MDCB) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_EXSFNSDRQ_FK foreign key (EXSSERVICEFN_SEND_RQ) references EXSSERVICEFN(RN), - constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN), + constraint UDO_C_EQUIPDSCM_EXSFNSDRQCB_FK foreign key (EXSSERVICEFN_SEND_RQCB) references EXSSERVICEFN(RN), + constraint UDO_C_EQUIPDSCM_EXSFNFCMD_FK foreign key (EXSSERVICEFN_FRCST_MD) references EXSSERVICEFN(RN), constraint UDO_C_EQUIPDSCM_UN unique (EQOBJKIND) ); diff --git a/panels/eqs_tech_cond_forecast/admin_tab.js b/panels/eqs_tech_cond_forecast/admin_tab.js index fc83ec1..56c921a 100644 --- a/panels/eqs_tech_cond_forecast/admin_tab.js +++ b/panels/eqs_tech_cond_forecast/admin_tab.js @@ -174,7 +174,9 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq, SEXSSERVICE_SEND_RQCB: values.exsServiceSendRqCb, - SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb + SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb, + SEXSSERVICE_FRCST_MD: values.exsServiceForecastMd, + SEXSSERVICEFN_FRCST_MD: values.exsServiceFnForecastMd }; if (dialogs.dataSelectionClassMachine) { await executeStored({ diff --git a/panels/eqs_tech_cond_forecast/admin_tab_layout.js b/panels/eqs_tech_cond_forecast/admin_tab_layout.js index 74861e5..9788c63 100644 --- a/panels/eqs_tech_cond_forecast/admin_tab_layout.js +++ b/panels/eqs_tech_cond_forecast/admin_tab_layout.js @@ -34,7 +34,9 @@ import { ButtonGroup, ClickAwayListener, Paper, - MenuList + MenuList, + Tabs, + Tab } from "@mui/material"; //Интерфейсные компоненты import { useTheme } from "@mui/material/styles"; //Темы оформления import { ApplicationСtx } from "../../context/application"; //Контекст приложения @@ -48,7 +50,8 @@ import { selectMeasureUnit, selectUserProcsData, selectServiceFn, - IUDFormTextField + IUDFormTextField, + TabPanel } from "./eqs_tech_cond_forecast_layout"; //Общие вспомогательные компоненты и вёрстка import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения @@ -97,7 +100,8 @@ const STYLES = { overflowY: "auto", ...SCROLL_STYLES }, - EQUIP_DSCM_DIALOG_CONTENT: { ...SCROLL_STYLES }, + EQUIP_DSCM_DIALOG_CONTENT: { minHeight: "40vh", maxHeight: "40vh", ...SCROLL_STYLES }, + EQUIP_DSCM_DIALOG_TABS_CONTAINER: { borderBottom: 1, borderColor: "divider" }, FL_ML_TABLE: { height: `200px`, ...SCROLL_STYLES @@ -316,6 +320,9 @@ const EquipDataSelectionClassMachineIU = ({ classMachine, onOk, onCancel }) => { //Подключение к контексту приложения const { pOnlineShowDictionary } = useContext(ApplicationСtx); + //Собственное состояние - активная закладка + const [selectedTab, setSelectedTab] = useState(0); + //Собственное состояние - значения формы const [values, setValues] = useState({ eqobjKind: "", @@ -330,7 +337,9 @@ const EquipDataSelectionClassMachineIU = ({ classMachine, onOk, onCancel }) => { exsServiceSendRq: "", exsServiceFnSendRq: "", exsServiceSendRqCb: "", - exsServiceFnSendRqCb: "" + exsServiceFnSendRqCb: "", + exsServiceForecastMd: "", + exsServiceFnForecastMd: "" }); //Карточка из базы @@ -352,109 +361,147 @@ const EquipDataSelectionClassMachineIU = ({ classMachine, onOk, onCancel }) => { exsServiceSendRq: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQ, exsServiceFnSendRq: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQ, exsServiceSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQCB, - exsServiceFnSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQCB + exsServiceFnSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQCB, + exsServiceForecastMd: equipDataSelectionClassMachineCard.SEXSSERVICE_FRCST_MD, + exsServiceFnForecastMd: equipDataSelectionClassMachineCard.SEXSSERVICEFN_FRCST_MD }); }, [equipDataSelectionClassMachineCard]); //Отработка воода значения в форму const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value })); + //Обработка смены закладки + const handleTabChange = (e, newValue) => setSelectedTab(newValue); + //Генерация содержимого return ( (onOk ? onCancel() : null)} maxWidth={"sm"} fullWidth={true}> Класс оборудования выборки данных - selectEqobjKind(pOnlineShowDictionary, "eqobjKind", callBack)} - /> - selectMeasureUnit(pOnlineShowDictionary, "measureUnit", callBack)} - /> - selectUserProcsData(pOnlineShowDictionary, "userprocsData", callBack)} - /> - - selectServiceFn(pOnlineShowDictionary, "exsServiceFnUpload", callBack)} - /> - - selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} - /> - - selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)} - /> - - selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} - /> - - selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)} - /> + + + + + + + + + + + selectEqobjKind(pOnlineShowDictionary, "eqobjKind", callBack)} + /> + selectMeasureUnit(pOnlineShowDictionary, "measureUnit", callBack)} + /> + + + selectUserProcsData(pOnlineShowDictionary, "userprocsData", callBack)} + /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnUpload", callBack)} + /> + + + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} + /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)} + /> + + + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} + /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)} + /> + + + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnForecastMd", callBack)} + /> + diff --git a/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js b/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js index 752a5e3..3b2e3e0 100644 --- a/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js +++ b/panels/eqs_tech_cond_forecast/eqs_tech_cond_forecast_layout.js @@ -130,7 +130,9 @@ const selectServiceFn = (showDictionary, name, callBack) => { ? "exsServiceSendMdCb" : name == "exsServiceFnSendRq" ? "exsServiceSendRq" - : "exsServiceSendRqCb", + : name == "exsServiceFnSendRqCb" + ? "exsServiceSendRqCb" + : "exsServiceForecastMd", value: res.outParameters.out_CODE } ] @@ -146,7 +148,7 @@ const TabPanel = ({ mode, value, children }) =>