From add981dff71753fb943048be9746ab23a53cf370 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Fri, 15 Nov 2024 15:17:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=B0=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D0=B1=D1=83=D1=82=D1=8B=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B0=20-=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=80=D0=B0=D1=82=D0=BD=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B2=D1=8F=D0=B7=D0=B8,=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20=D0=BE=D0=B1=D0=BE=D1=80=D1=83?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F,=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=BA=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EQUIPDS.pck | 306 +++++++++++++++--- db/UDO_PKG_EQUIPDS_BASE.pck | 255 ++++++++++++--- db/UDO_T_EQUIPDSCM.sql | 6 + panels/eqs_tech_cond_forecast/admin_tab.js | 70 ++-- .../admin_tab_layout.js | 101 +++++- .../eqs_tech_cond_forecast_layout.js | 6 +- panels/eqs_tech_cond_forecast/forecast_tab.js | 6 +- .../forecast_tab_layout.js | 36 ++- 8 files changed, 664 insertions(+), 122 deletions(-) diff --git a/db/UDO_PKG_EQUIPDS.pck b/db/UDO_PKG_EQUIPDS.pck index 090f8a0..64656a2 100644 --- a/db/UDO_PKG_EQUIPDS.pck +++ b/db/UDO_PKG_EQUIPDS.pck @@ -31,8 +31,12 @@ create or replace package UDO_PKG_EQUIPDS as SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных ); @@ -62,11 +66,34 @@ create or replace package UDO_PKG_EQUIPDS as SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой NRN out number -- Регистрационный номер ); + /* Клиентское исправление "Выборки данных оборудования (классы оборудования)" */ + procedure CM_UPD + ( + NRN in number, -- Регистрационный номер + SEQOBJKIND in varchar2, -- Класс оборудования + SDICMUNTS in varchar2, -- Единица измерения выборки + SUSERPROCS_DATA in varchar2, -- Процедура формирования + SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных + SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных + SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе + SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой + SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + ); + /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ procedure CM_DEL ( @@ -292,8 +319,12 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой NEQUIPDS out number, -- Регистрационный номер выборки данных оборудования NEQUIPDSCM out number -- Регистрационный номер класса оборудования выборки данных ) @@ -320,10 +351,18 @@ create or replace package body UDO_PKG_EQUIPDS as P_EXCEPTION(0, 'Не указана функция обмена для передачи внешней системе.'); end if; + if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи о передече внешней системе.'); + end if; if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then P_EXCEPTION(0, 'Не указана функция обмена для обработки внешней системой.'); end if; + if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); + end if; /* Проверим права доступа */ UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDS', SACTION => 'UDO_EQUIPDS_MAKE'); /* Проверим наличие такой выборки */ @@ -342,17 +381,21 @@ create or replace package body UDO_PKG_EQUIPDS as /* Класса оборудования в выборке нет */ if (NEQUIPDSCM is null) then /* Добавляем запись класса оборудования */ - CM_INS(NPRN => NEQUIPDS, - SEQOBJKIND => SEQOBJKIND, - SDICMUNTS => SDICMUNTS, - SUSERPROCS_DATA => SUSERPROCS_DATA, - SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, - SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, - SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, - SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, - SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, - SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, - NRN => NEQUIPDSCM); + CM_INS(NPRN => NEQUIPDS, + SEQOBJKIND => SEQOBJKIND, + SDICMUNTS => SDICMUNTS, + SUSERPROCS_DATA => SUSERPROCS_DATA, + SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, + SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, + SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, + SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, + SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB, + SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB, + SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, + SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, + SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, + SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + NRN => NEQUIPDSCM); end if; end MAKE; @@ -373,11 +416,20 @@ create or replace package body UDO_PKG_EQUIPDS as NCUR := PKG_XMAKE.OPEN_CURSOR(); /* Обращаемся к данным класса оборудования */ for C in (select T.RN NRN, + FORMAT_HIER_NAME(null, null, OK.FULLCODE) SSEQOBJKIND, OK.NAME SNAME, + DM.MEAS_MNEMO SDICMUNTS, UP.CODE SUSERPROCS_DATA, - SU.CODE || '/' || SFU.CODE SEXSSERVICE_UPLOAD, - SMD.CODE || '/' || SFMD.CODE SEXSSERVICE_SEND_MD, - SRQ.CODE || '/' || SFRQ.CODE SEXSSERVICE_SEND_RQ + SU.CODE SEXSSERVICE_UPLOAD, + SFU.CODE SEXSSERVICEFN_UPLOAD, + SMD.CODE SEXSSERVICE_SEND_MD, + SFMD.CODE SEXSSERVICEFN_SEND_MD, + SMDCB.CODE SEXSSERVICE_SEND_MDCB, + SFMDCB.CODE SEXSSERVICEFN_SEND_MDCB, + SRQ.CODE SEXSSERVICE_SEND_RQ, + SFRQ.CODE SEXSSERVICEFN_SEND_RQ, + SRQCB.CODE SEXSSERVICE_SEND_RQCB, + SFRQCB.CODE SEXSSERVICEFN_SEND_RQCB from UDO_T_EQUIPDSCM T, EQOBJKIND OK, USERPROCS UP, @@ -385,8 +437,13 @@ create or replace package body UDO_PKG_EQUIPDS as EXSSERVICEFN SFU, EXSSERVICE SMD, EXSSERVICEFN SFMD, + EXSSERVICE SMDCB, + EXSSERVICEFN SFMDCB, EXSSERVICE SRQ, - EXSSERVICEFN SFRQ + EXSSERVICEFN SFRQ, + EXSSERVICE SRQCB, + EXSSERVICEFN SFRQCB, + DICMUNTS DM where T.RN = NEQUIPDSCM and T.EQOBJKIND = OK.RN and T.USERPROCS_DATA = UP.RN @@ -394,8 +451,13 @@ create or replace package body UDO_PKG_EQUIPDS as and SFU.PRN = SU.RN and T.EXSSERVICEFN_SEND_MD = SFMD.RN and SFMD.PRN = SMD.RN + and T.EXSSERVICEFN_SEND_MDCB = SFMDCB.RN + and SFMDCB.PRN = SMDCB.RN and T.EXSSERVICEFN_SEND_RQ = SFRQ.RN - and SFRQ.PRN = SRQ.RN) + and SFRQ.PRN = SRQ.RN + and T.EXSSERVICEFN_SEND_RQCB = SFRQCB.RN + and SFRQCB.PRN = SRQCB.RN + and T.DICMUNTS = DM.RN) loop /* Собираем карточку класса оборудования */ XEQUIPDSCM := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, @@ -405,20 +467,47 @@ create or replace package body UDO_PKG_EQUIPDS as SNAME => 'NRN', SVALUE => C.NRN), RATTRIBUTE01 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SSEQOBJKIND', + SVALUE => C.SSEQOBJKIND), + RATTRIBUTE02 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SNAME', SVALUE => C.SNAME), - RATTRIBUTE02 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + RATTRIBUTE03 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SDICMUNTS', + SVALUE => C.SDICMUNTS), + RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SUSERPROCS_DATA', SVALUE => C.SUSERPROCS_DATA), - RATTRIBUTE03 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SEXSSERVICE_UPLOAD', SVALUE => C.SEXSSERVICE_UPLOAD), - RATTRIBUTE04 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + RATTRIBUTE06 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_UPLOAD', + SVALUE => C.SEXSSERVICEFN_UPLOAD), + RATTRIBUTE07 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SEXSSERVICE_SEND_MD', SVALUE => C.SEXSSERVICE_SEND_MD), - RATTRIBUTE05 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + RATTRIBUTE08 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_SEND_MD', + SVALUE => C.SEXSSERVICEFN_SEND_MD), + RATTRIBUTE09 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICE_SEND_MDCB', + SVALUE => C.SEXSSERVICE_SEND_MDCB), + RATTRIBUTE10 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_SEND_MDCB', + SVALUE => C.SEXSSERVICEFN_SEND_MDCB), + RATTRIBUTE11 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, SNAME => 'SEXSSERVICE_SEND_RQ', - SVALUE => C.SEXSSERVICE_SEND_RQ))); + SVALUE => C.SEXSSERVICE_SEND_RQ), + RATTRIBUTE12 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_SEND_RQ', + SVALUE => C.SEXSSERVICEFN_SEND_RQ), + RATTRIBUTE13 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICE_SEND_RQCB', + SVALUE => C.SEXSSERVICE_SEND_RQCB), + RATTRIBUTE14 => PKG_XMAKE.ATTRIBUTE(ICURSOR => NCUR, + SNAME => 'SEXSSERVICEFN_SEND_RQCB', + SVALUE => C.SEXSSERVICEFN_SEND_RQCB))); end loop; /* Формируем XML-представление ответа */ XDOC := PKG_XMAKE.ELEMENT(ICURSOR => NCUR, SNAME => 'XDATA', RNODE00 => XEQUIPDSCM); @@ -527,8 +616,12 @@ create or replace package body UDO_PKG_EQUIPDS as SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой NRN out number -- Регистрационный номер ) is @@ -538,7 +631,9 @@ create or replace package body UDO_PKG_EQUIPDS as NUSERPROCS_DATA PKG_STD.TREF; -- Рег. номер процедуры формирования NEXSSERVICEFN_UPLOAD PKG_STD.TREF; -- Рег. номер функции обмена для выгрузки данных NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой begin /* Проверим параметры */ if (NPRN is null) then @@ -560,40 +655,154 @@ create or replace package body UDO_PKG_EQUIPDS as P_EXCEPTION(0, 'Не указана функция обмена для передачи внешней системе.'); end if; + if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи о передече внешней системе.'); + end if; if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then P_EXCEPTION(0, 'Не указана функция обмена для обработки внешней системой.'); end if; + if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); + end if; /* Проверим права доступа */ UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_INSERT'); /* Разыменуем ссылки */ - UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY, - SEQOBJKIND => SEQOBJKIND, - SDICMUNTS => SDICMUNTS, - SUSERPROCS_DATA => SUSERPROCS_DATA, - SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, - SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, - SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, - SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, - SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, - SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, - NEQOBJKIND => NEQOBJKIND, - NDICMUNTS => NDICMUNTS, - NUSERPROCS_DATA => NUSERPROCS_DATA, - NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, - NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, - NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ); + UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY, + SEQOBJKIND => SEQOBJKIND, + SDICMUNTS => SDICMUNTS, + SUSERPROCS_DATA => SUSERPROCS_DATA, + SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, + SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, + SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, + SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, + SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB, + SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB, + SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, + SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, + SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, + SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + NEQOBJKIND => NEQOBJKIND, + NDICMUNTS => NDICMUNTS, + NUSERPROCS_DATA => NUSERPROCS_DATA, + NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, + NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, + NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, + NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); /* Добавляем запись */ - UDO_PKG_EQUIPDS_BASE.CM_INS(NPRN => NPRN, - NEQOBJKIND => NEQOBJKIND, - NDICMUNTS => NDICMUNTS, - NUSERPROCS_DATA => NUSERPROCS_DATA, - NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, - NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, - NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, - NRN => NRN); + UDO_PKG_EQUIPDS_BASE.CM_INS(NPRN => NPRN, + NEQOBJKIND => NEQOBJKIND, + NDICMUNTS => NDICMUNTS, + NUSERPROCS_DATA => NUSERPROCS_DATA, + NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, + NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, + NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, + NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB, + NRN => NRN); end CM_INS; + /* Клиентское исправление "Выборки данных оборудования (классы оборудования)" */ + procedure CM_UPD + ( + NRN in number, -- Регистрационный номер + SEQOBJKIND in varchar2, -- Класс оборудования + SDICMUNTS in varchar2, -- Единица измерения выборки + SUSERPROCS_DATA in varchar2, -- Процедура формирования + SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных + SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных + SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе + SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой + SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2 -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + ) + is + NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация + NEQOBJKIND PKG_STD.TREF; -- Рег. номер класса оборудования + NDICMUNTS PKG_STD.TREF; -- Рег. номер единицы измерения выборки + NUSERPROCS_DATA PKG_STD.TREF; -- Рег. номер процедуры формирования + NEXSSERVICEFN_UPLOAD PKG_STD.TREF; -- Рег. номер функции обмена для выгрузки данных + NEXSSERVICEFN_SEND_MD PKG_STD.TREF; -- Рег. номер Функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ PKG_STD.TREF; -- Рег. номер функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB PKG_STD.TREF; -- Рег. номер call-back функции обмена для обработки внешней системой + begin + /* Проверим параметры */ + if (NRN is null) then + P_EXCEPTION(0, 'Не указан идентификатор исправляемого класса оборудования выборки данных.'); + end if; + if (SEQOBJKIND is null) then + P_EXCEPTION(0, 'Не указан класс оборудования.'); + end if; + if (SDICMUNTS is null) then + P_EXCEPTION(0, 'Не указана единица измерения выборки.'); + end if; + if (SUSERPROCS_DATA is null) then + P_EXCEPTION(0, 'Не указана процедура формирования данных выборки.'); + end if; + if ((SEXSSERVICE_UPLOAD is null) or (SEXSSERVICEFN_UPLOAD is null)) then + P_EXCEPTION(0, 'Не указана функция обмена для выгрузки данных.'); + end if; + if ((SEXSSERVICE_SEND_MD is null) or (SEXSSERVICEFN_SEND_MD is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для передачи внешней системе.'); + end if; + if ((SEXSSERVICE_SEND_MDCB is null) or (SEXSSERVICEFN_SEND_MDCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи о передече внешней системе.'); + end if; + if ((SEXSSERVICE_SEND_RQ is null) or (SEXSSERVICEFN_SEND_RQ is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для обработки внешней системой.'); + end if; + if ((SEXSSERVICE_SEND_RQCB is null) or (SEXSSERVICEFN_SEND_RQCB is null)) then + P_EXCEPTION(0, + 'Не указана функция обмена для приёма обратной связи об обработке внешней системой.'); + end if; + /* Проверим права доступа */ + UDO_PKG_EQUIPDS_BASE.UTL_ACCESS(STABLE => 'UDO_T_EQUIPDSCM', SACTION => 'UDO_EQUIPDSCM_UPDATE'); + /* Разыменуем ссылки */ + UDO_PKG_EQUIPDS_BASE.CM_JOINS(NCOMPANY => NCOMPANY, + SEQOBJKIND => SEQOBJKIND, + SDICMUNTS => SDICMUNTS, + SUSERPROCS_DATA => SUSERPROCS_DATA, + SEXSSERVICE_UPLOAD => SEXSSERVICE_UPLOAD, + SEXSSERVICEFN_UPLOAD => SEXSSERVICEFN_UPLOAD, + SEXSSERVICE_SEND_MD => SEXSSERVICE_SEND_MD, + SEXSSERVICEFN_SEND_MD => SEXSSERVICEFN_SEND_MD, + SEXSSERVICE_SEND_MDCB => SEXSSERVICE_SEND_MDCB, + SEXSSERVICEFN_SEND_MDCB => SEXSSERVICEFN_SEND_MDCB, + SEXSSERVICE_SEND_RQ => SEXSSERVICE_SEND_RQ, + SEXSSERVICEFN_SEND_RQ => SEXSSERVICEFN_SEND_RQ, + SEXSSERVICE_SEND_RQCB => SEXSSERVICE_SEND_RQCB, + SEXSSERVICEFN_SEND_RQCB => SEXSSERVICEFN_SEND_RQCB, + NEQOBJKIND => NEQOBJKIND, + NDICMUNTS => NDICMUNTS, + NUSERPROCS_DATA => NUSERPROCS_DATA, + NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, + NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, + NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, + NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); + /* Исправляем запись */ + UDO_PKG_EQUIPDS_BASE.CM_UPD(NRN => NRN, + NEQOBJKIND => NEQOBJKIND, + NDICMUNTS => NDICMUNTS, + NUSERPROCS_DATA => NUSERPROCS_DATA, + NEXSSERVICEFN_UPLOAD => NEXSSERVICEFN_UPLOAD, + NEXSSERVICEFN_SEND_MD => NEXSSERVICEFN_SEND_MD, + NEXSSERVICEFN_SEND_MDCB => NEXSSERVICEFN_SEND_MDCB, + NEXSSERVICEFN_SEND_RQ => NEXSSERVICEFN_SEND_RQ, + NEXSSERVICEFN_SEND_RQCB => NEXSSERVICEFN_SEND_RQCB); + end CM_UPD; + /* Клиентское удаление "Выборки данных оборудования (классы оборудования)" */ procedure CM_DEL ( @@ -760,11 +969,11 @@ create or replace package body UDO_PKG_EQUIPDS as DDATASET_TS PKG_STD.TLDATE; -- Буфер для времени формирования данных выборки begin /* Проверим параметры */ - if (COALESCE(NDATASET_IDENT, 0) = 0) then + if (NDATASET_IDENT is null) then P_EXCEPTION(0, 'Пользовательская процедура формирования данных не вернула идентификатор буфера выборки.'); end if; - if (COALESCE(NDATASET_CONFIG_IDENT, 0) = 0) then + if (NDATASET_CONFIG_IDENT is null) then P_EXCEPTION(0, 'Пользовательская процедура формирования данных не вернула идентификатор буфера описания выборки.'); end if; @@ -1056,6 +1265,7 @@ create or replace package body UDO_PKG_EQUIPDS as into NCOUNT from UDO_T_EQUIPDSCMFL T where T.PRN = RCMML.PRN + and T.DATASET_ID = RCMML.DATASET_ID and T.STATUS = UDO_PKG_EQUIPDS_BASE.NCMFL_STATUS_SENT; exception when others then @@ -1064,7 +1274,7 @@ create or replace package body UDO_PKG_EQUIPDS as end; if (NCOUNT = 0) then P_EXCEPTION(0, - 'У класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.'); + 'У выборки класса оборудования нет файлов данных, переданных фреймворку - обучение невозможно.'); end if; /* Отправим запрос на обучение */ UDO_PKG_EQUIPDS_DATAPROCESS.SEND_RQ(NCOMPANY => NCOMPANY, NEQUIPDSCMML => RCMML.RN); diff --git a/db/UDO_PKG_EQUIPDS_BASE.pck b/db/UDO_PKG_EQUIPDS_BASE.pck index 754c121..0aa2934 100644 --- a/db/UDO_PKG_EQUIPDS_BASE.pck +++ b/db/UDO_PKG_EQUIPDS_BASE.pck @@ -112,14 +112,20 @@ create or replace package UDO_PKG_EQUIPDS_BASE as SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой NEQOBJKIND out number, -- Рег. номер класса оборудования NDICMUNTS out number, -- Рег. номер единицы измерения выборки NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе - NEXSSERVICEFN_SEND_RQ out number -- Рег. номер функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой ); /* Базовое добавление "Выборки данных оборудования (классы оборудования)" */ @@ -131,7 +137,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as NUSERPROCS_DATA in number, -- Процедура формирования NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой NRN out number -- Регистрационный номер ); @@ -144,7 +152,9 @@ create or replace package UDO_PKG_EQUIPDS_BASE as NUSERPROCS_DATA in number, -- Процедура формирования NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе - NEXSSERVICEFN_SEND_RQ in number -- Функция обмена для обработки внешней системой + NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой ); /* Базовое удаление "Выборки данных оборудования (классы оборудования)" */ @@ -516,22 +526,28 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as /* Разыменование словарей "Выборки данных оборудования (классы оборудования)" */ procedure CM_JOINS ( - NCOMPANY in number, -- Организация - SEQOBJKIND in varchar2, -- Класс оборудования - SDICMUNTS in varchar2, -- Единица измерения выборки - SUSERPROCS_DATA in varchar2, -- Процедура формирования - SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных - SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных - SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе - SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе - SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой - SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой - NEQOBJKIND out number, -- Рег. номер класса оборудования - NDICMUNTS out number, -- Рег. номер единицы измерения выборки - NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования - NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных - NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе - NEXSSERVICEFN_SEND_RQ out number -- Рег. номер функции обмена для обработки внешней системой + NCOMPANY in number, -- Организация + SEQOBJKIND in varchar2, -- Класс оборудования + SDICMUNTS in varchar2, -- Единица измерения выборки + SUSERPROCS_DATA in varchar2, -- Процедура формирования + SEXSSERVICE_UPLOAD in varchar2, -- Сервис обмена для выгрузки данных + SEXSSERVICEFN_UPLOAD in varchar2, -- Функция обмена для выгрузки данных + SEXSSERVICE_SEND_MD in varchar2, -- Сервис обмена для передачи внешней системе + SEXSSERVICEFN_SEND_MD in varchar2, -- Функция обмена для передачи внешней системе + SEXSSERVICE_SEND_MDCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICEFN_SEND_MDCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами передачи внешней системе + SEXSSERVICE_SEND_RQ in varchar2, -- Сервис обмена для обработки внешней системой + SEXSSERVICEFN_SEND_RQ in varchar2, -- Функция обмена для обработки внешней системой + SEXSSERVICE_SEND_RQCB in varchar2, -- Сервис обмена для приёма Call-back запросов с результатами обработки внешней системой + SEXSSERVICEFN_SEND_RQCB in varchar2, -- Функция сервиса обмена для приёма Call-back запросов с результатами обработки внешней системой + NEQOBJKIND out number, -- Рег. номер класса оборудования + NDICMUNTS out number, -- Рег. номер единицы измерения выборки + NUSERPROCS_DATA out number, -- Рег. номер процедуры формирования + NEXSSERVICEFN_UPLOAD out number, -- Рег. номер функции обмена для выгрузки данных + NEXSSERVICEFN_SEND_MD out number, -- Рег. номер Функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB out number, -- Рег. номер call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ out number, -- Рег. номер функции обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB out number -- Рег. номер call-back функции обмена для обработки внешней системой ) is NEXSSERVICE PKG_STD.TREF; -- Рег. номер сервиса обмена @@ -568,6 +584,13 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICE => NEXSSERVICE, SCODE => SEXSSERVICEFN_SEND_MD, NRN => NEXSSERVICEFN_SEND_MD); + /* Call-back функции обмена для передачи внешней системе */ + FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_MDCB, NRN => NEXSSERVICE); + FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, + NFLAG_OPTION => 0, + NEXSSERVICE => NEXSSERVICE, + SCODE => SEXSSERVICEFN_SEND_MDCB, + NRN => NEXSSERVICEFN_SEND_MDCB); /* Функция обмена для обработки внешней системой */ FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_RQ, NRN => NEXSSERVICE); FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, @@ -575,25 +598,145 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NEXSSERVICE => NEXSSERVICE, SCODE => SEXSSERVICEFN_SEND_RQ, NRN => NEXSSERVICEFN_SEND_RQ); + /* Call-back функции обмена для обработки внешней системой */ + FIND_EXSSERVICE_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, SCODE => SEXSSERVICE_SEND_RQCB, NRN => NEXSSERVICE); + FIND_EXSSERVICEFN_CODE(NFLAG_SMART => 0, + NFLAG_OPTION => 0, + NEXSSERVICE => NEXSSERVICE, + SCODE => SEXSSERVICEFN_SEND_RQCB, + NRN => NEXSSERVICEFN_SEND_RQCB); end CM_JOINS; + /* Базовые проверки целостности и корректности "Выборки данных оборудования (классы оборудования)" */ + procedure CM_CHECK + ( + SMODE in varchar2, -- 'I' - добавление, 'U' - исправление, 'D' - удаление + RREC in UDO_T_EQUIPDSCM%rowtype -- Запись с новыми значения класса оборудования выборки данных + ) + is + /* Локальные переменные */ + RREC_OLD UDO_T_EQUIPDSCM%rowtype; -- Предыдущие значения записи класса оборудования выборки данных + + /* Считывание типа сервиса обмена */ + function EXSSERVICE_TYPE + ( + NEXSSERVICEFN in number -- Рег. номер функции обмена + ) return number -- Тип сервиса обмена (см. константы PKG_EXS.NSRV_TYPE_*) + is + begin + /* Найдем тип серсива обмена */ + for C in (select S.SRV_TYPE + from EXSSERVICE S, + EXSSERVICEFN F + where F.RN = NEXSSERVICEFN + and F.PRN = S.RN) + loop + /* Нашли - вернём */ + return C.SRV_TYPE; + end loop; + /* Ничего не нашли */ + return null; + end EXSSERVICE_TYPE; + + /* Проверка типов сервисов обмена */ + procedure EXSSERVICE_TYPE_CHECK + ( + RREC in UDO_T_EQUIPDSCM%rowtype -- Проверяемая запись + ) + is + begin + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_UPLOAD) <> PKG_EXS.NSRV_TYPE_SEND) then + P_EXCEPTION(0, + 'Функция обмена для выгрузки данных должна иметь тип "Отправка сообщений".'); + end if; + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_MD) <> PKG_EXS.NSRV_TYPE_SEND) then + P_EXCEPTION(0, + 'Функция обмена для передачи данных внешней системе должна иметь тип "Отправка сообщений".'); + end if; + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_MDCB) <> PKG_EXS.NSRV_TYPE_RECIVE) then + P_EXCEPTION(0, + 'Функция обмена для обратной связи о передаче данных внешней системе должна иметь тип "Приём сообщений".'); + end if; + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_RQ) <> PKG_EXS.NSRV_TYPE_SEND) then + P_EXCEPTION(0, + 'Функция обмена для обработки внешней системой должна иметь тип "Отправка сообщений".'); + end if; + if (EXSSERVICE_TYPE(NEXSSERVICEFN => RREC.EXSSERVICEFN_SEND_RQCB) <> PKG_EXS.NSRV_TYPE_RECIVE) then + P_EXCEPTION(0, + 'Функция обмена для обратной связи об обработке внешней системой должна иметь тип "Приём сообщений".'); + end if; + end EXSSERVICE_TYPE_CHECK; + begin + /* Работаем от режима */ + case SMODE + /* Добавление */ + when 'I' then + begin + /* Проверим корректность типов серсовисов обмена */ + EXSSERVICE_TYPE_CHECK(RREC => RREC); + end; + /* Исправление */ + when 'U' then + begin + /* Считывание текущей записи */ + RREC_OLD := CM_GET(NFLAG_SMART => 0, NRN => RREC.RN); + /* Если изменяются кличевые атрибуты, влияющие на выборку */ + if ((RREC.EQOBJKIND <> RREC_OLD.EQOBJKIND) or (RREC.DICMUNTS <> RREC_OLD.DICMUNTS)) then + /* Проверим отсутствие файлов данных */ + for C in (select T.RN from UDO_T_EQUIPDSCMFL T where T.PRN = RREC.RN) + loop + /* Они есть - изменения недопустимы */ + P_EXCEPTION(0, + 'Изменение ключевых атрибутов ("Класс оборудования", "Единица измерения выборки") недопустимо - для данного класса оборудования уже зарегистрированы файлы данных.'); + end loop; + end if; + /* Проверим корректность типов серсовисов обмена */ + EXSSERVICE_TYPE_CHECK(RREC => RREC); + end; + /* Удаление */ + when 'D' then + begin + /* Специальных проверок нет, проверки на возможность удаления файлов и моделей класса оборудования запустятся автоматически при их удалении по связям */ + null; + end; + /* Неизвестный режим работы */ + else + P_EXCEPTION(0, 'Режим проверки "%s" не поддерживается.', SMODE); + end case; + end CM_CHECK; + /* Базовое добавление "Выборки данных оборудования (классы оборудования)" */ procedure CM_INS ( - NPRN in number, -- Родитель - NEQOBJKIND in number, -- Класс оборудования - NDICMUNTS in number, -- Единица измерения выборки - NUSERPROCS_DATA in number, -- Процедура формирования - NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных - NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе - NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой - NRN out number -- Регистрационный номер + NPRN in number, -- Родитель + NEQOBJKIND in number, -- Класс оборудования + NDICMUNTS in number, -- Единица измерения выборки + NUSERPROCS_DATA in number, -- Процедура формирования + NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных + NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number, -- Call-back функции обмена для обработки внешней системой + NRN out number -- Регистрационный номер ) is + RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки begin + /* Соберём запись */ + RREC.PRN := NPRN; + RREC.EQOBJKIND := NEQOBJKIND; + RREC.DICMUNTS := NDICMUNTS; + RREC.USERPROCS_DATA := NUSERPROCS_DATA; + RREC.EXSSERVICEFN_UPLOAD := NEXSSERVICEFN_UPLOAD; + RREC.EXSSERVICEFN_SEND_MD := NEXSSERVICEFN_SEND_MD; + RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB; + RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ; + RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB; + /* Проверим возможность исполнения */ + CM_CHECK(SMODE => 'I', RREC => RREC); /* Формируем рег. номер */ NRN := GEN_ID(); - /* Добавляем запись */ + /* Добавляем запись */ insert into UDO_T_EQUIPDSCM (RN, PRN, @@ -603,7 +746,9 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as USERPROCS_DATA, EXSSERVICEFN_UPLOAD, EXSSERVICEFN_SEND_MD, - EXSSERVICEFN_SEND_RQ) + EXSSERVICEFN_SEND_MDCB, + EXSSERVICEFN_SEND_RQ, + EXSSERVICEFN_SEND_RQCB) values (NRN, NPRN, @@ -613,40 +758,64 @@ create or replace package body UDO_PKG_EQUIPDS_BASE as NUSERPROCS_DATA, NEXSSERVICEFN_UPLOAD, NEXSSERVICEFN_SEND_MD, - NEXSSERVICEFN_SEND_RQ); + NEXSSERVICEFN_SEND_MDCB, + NEXSSERVICEFN_SEND_RQ, + NEXSSERVICEFN_SEND_RQCB); end CM_INS; /* Базовое исправление "Выборки данных оборудования (классы оборудования)" */ procedure CM_UPD ( - NRN in number, -- Регистрационный номер - NEQOBJKIND in number, -- Класс оборудования - NDICMUNTS in number, -- Единица измерения выборки - NUSERPROCS_DATA in number, -- Процедура формирования - NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных - NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе - NEXSSERVICEFN_SEND_RQ in number -- Функция обмена для обработки внешней системой + NRN in number, -- Регистрационный номер + NEQOBJKIND in number, -- Класс оборудования + NDICMUNTS in number, -- Единица измерения выборки + NUSERPROCS_DATA in number, -- Процедура формирования + NEXSSERVICEFN_UPLOAD in number, -- Функция обмена для выгрузки данных + NEXSSERVICEFN_SEND_MD in number, -- Функция обмена для передачи внешней системе + NEXSSERVICEFN_SEND_MDCB in number, -- Call-back функции обмена для передачи внешней системе + NEXSSERVICEFN_SEND_RQ in number, -- Функция обмена для обработки внешней системой + NEXSSERVICEFN_SEND_RQCB in number -- Call-back функции обмена для обработки внешней системой ) is + RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки begin + /* Соберём запись */ + RREC := CM_GET(NFLAG_SMART => 0, NRN => NRN); + RREC.EQOBJKIND := NEQOBJKIND; + RREC.DICMUNTS := NDICMUNTS; + RREC.USERPROCS_DATA := NUSERPROCS_DATA; + RREC.EXSSERVICEFN_UPLOAD := NEXSSERVICEFN_UPLOAD; + RREC.EXSSERVICEFN_SEND_MD := NEXSSERVICEFN_SEND_MD; + RREC.EXSSERVICEFN_SEND_MDCB := NEXSSERVICEFN_SEND_MDCB; + RREC.EXSSERVICEFN_SEND_RQ := NEXSSERVICEFN_SEND_RQ; + RREC.EXSSERVICEFN_SEND_RQCB := NEXSSERVICEFN_SEND_RQCB; + /* Проверим возможность исполнения */ + CM_CHECK(SMODE => 'U', RREC => RREC); /* Исправим данные */ update UDO_T_EQUIPDSCM T - set T.EQOBJKIND = NEQOBJKIND, - T.DICMUNTS = NDICMUNTS, - T.USERPROCS_DATA = NUSERPROCS_DATA, - T.EXSSERVICEFN_UPLOAD = NEXSSERVICEFN_UPLOAD, - T.EXSSERVICEFN_SEND_MD = NEXSSERVICEFN_SEND_MD, - T.EXSSERVICEFN_SEND_RQ = NEXSSERVICEFN_SEND_RQ + set T.EQOBJKIND = NEQOBJKIND, + T.DICMUNTS = NDICMUNTS, + T.USERPROCS_DATA = NUSERPROCS_DATA, + T.EXSSERVICEFN_UPLOAD = NEXSSERVICEFN_UPLOAD, + 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 where T.RN = NRN; end CM_UPD; /* Базовое удаление "Выборки данных оборудования (классы оборудования)" */ procedure CM_DEL ( - NRN in number -- Регистрационный номер + NRN in number -- Регистрационный номер ) is + RREC UDO_T_EQUIPDSCM%rowtype; -- Запись с новыми значениями для проверки begin + /* Соберём запись */ + RREC := CM_GET(NFLAG_SMART => 0, NRN => NRN); + /* Проверим возможность исполнения */ + CM_CHECK(SMODE => 'D', RREC => RREC); /* Удалим файлы */ for C in (select T.RN from UDO_T_EQUIPDSCMFL T where T.PRN = NRN) loop diff --git a/db/UDO_T_EQUIPDSCM.sql b/db/UDO_T_EQUIPDSCM.sql index 3574f7e..1639d2b 100644 --- a/db/UDO_T_EQUIPDSCM.sql +++ b/db/UDO_T_EQUIPDSCM.sql @@ -17,8 +17,12 @@ create table UDO_T_EQUIPDSCM EXSSERVICEFN_UPLOAD number(17) not null, /* Функция обмена для передачи внешней системе */ EXSSERVICEFN_SEND_MD number(17) not null, + /* Call-back функции обмена для передачи внешней системе */ + EXSSERVICEFN_SEND_MDCB number(17) not null, /* Функция обмена для обработки внешней системой */ EXSSERVICEFN_SEND_RQ number(17) not null, + /* Call-back функции обмена для обработки внешней системой */ + EXSSERVICEFN_SEND_RQCB 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), @@ -27,6 +31,8 @@ create table UDO_T_EQUIPDSCM 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), + 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_UN unique (PRN, EQOBJKIND) ); diff --git a/panels/eqs_tech_cond_forecast/admin_tab.js b/panels/eqs_tech_cond_forecast/admin_tab.js index ad98a59..f4f1c5d 100644 --- a/panels/eqs_tech_cond_forecast/admin_tab.js +++ b/panels/eqs_tech_cond_forecast/admin_tab.js @@ -47,6 +47,7 @@ const REFRESH_INITIAL = { const DIALOGS_INITIAL = { dataSelectionIU: false, dataSelectionClassMachineIU: false, + dataSelectionClassMachine: null, dataSelectionClassMachineFileSendMD: false, dataSelectionClassMachineModelIU: false }; @@ -139,7 +140,13 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n const handleDataSelectionClassMachineClick = value => setDataSelectionClassMachine(value); //При нажатии на "Добавить класс оборудования" - const handleAddEquipDataSelectionClassMachine = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true })); + const handleAddEquipDataSelectionClassMachine = () => + setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true, dataSelectionClassMachine: null })); + + //При нажатии на "Изменить класс оборудования" + const handleEditEquipDataSelectionClassMachine = equipDSCM => { + setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: true, dataSelectionClassMachine: equipDSCM })); + }; //При нажатии на "Удалить класс оборудования" const handleDeleteEquipDataSelectionClassMachine = async equipDSCM => { @@ -153,24 +160,39 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n //При сохранении диалога IU класса оборудования const handleEquipDataSelectionClassMachineIUOk = async values => { - const data = await executeStored({ - stored: "UDO_PKG_EQUIPDS.CM_INS", - args: { - NPRN: equipDataSelection, - SEQOBJKIND: values.eqobjKind, - SDICMUNTS: values.measureUnit, - SUSERPROCS_DATA: values.userprocsData, - SEXSSERVICE_UPLOAD: values.exsServiceUpload, - SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload, - SEXSSERVICE_SEND_MD: values.exsServiceSendMd, - SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd, - SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, - SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq - } - }); - setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: false })); + let dataSelectionClassMachine = null; + const args = { + SEQOBJKIND: values.eqobjKind, + SDICMUNTS: values.measureUnit, + SUSERPROCS_DATA: values.userprocsData, + SEXSSERVICE_UPLOAD: values.exsServiceUpload, + SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload, + SEXSSERVICE_SEND_MD: values.exsServiceSendMd, + SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd, + SEXSSERVICE_SEND_MDCB: values.exsServiceSendMdCb, + SEXSSERVICEFN_SEND_MDCB: values.exsServiceFnSendMdCb, + SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, + SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq, + SEXSSERVICE_SEND_RQCB: values.exsServiceSendRqCb, + SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb + }; + if (dialogs.dataSelectionClassMachine) { + await executeStored({ + stored: "UDO_PKG_EQUIPDS.CM_UPD", + args: { NRN: dialogs.dataSelectionClassMachine, ...args } + }); + dataSelectionClassMachine = dialogs.dataSelectionClassMachine; + setRefresh(pv => ({ ...pv, dataSelectionClassMachineCard: pv.dataSelectionClassMachineCard + 1 })); + } else { + const data = await executeStored({ + stored: "UDO_PKG_EQUIPDS.CM_INS", + args: { NPRN: equipDataSelection, ...args } + }); + dataSelectionClassMachine = data.NRN; + } + setDialogs(pv => ({ ...pv, dataSelectionClassMachineIU: false, dataSelectionClassMachine: null })); setRefresh(pv => ({ ...pv, dataSelectionClassMachine: pv.dataSelectionClassMachine + 1 })); - setDataSelectionClassMachine(data.NRN); + setDataSelectionClassMachine(dataSelectionClassMachine); }; //Отработка результатов выполнения пользовательской процедуры формирования данных выборки @@ -187,6 +209,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 })); }; + //При нажатии "Обновить" в списке файлов карточки класса оборудования + const handleRefreshEquipDataSelectionClassMachineFiles = () => + setRefresh(pv => ({ ...pv, dataSelectionClassMachineFilesList: pv.dataSelectionClassMachineFilesList + 1 })); + //При нажатии "Сформировать" в списке файлов карточки класса оборудования const handleMakeEquipDataSelectionClassMachineFiles = (equipDSCM, procedure, clear) => { pOnlineUserProcedure({ @@ -219,6 +245,10 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n //При нажатии "Передать внешней системе" в списке файлов карточки класса оборудования const handleSendMdEquipDataSelectionClassMachineFiles = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineFileSendMD: true })); + //При нажатии на "Обновить модели класса оборудования" + const handleRefreshEquipDataSelectionClassMachineModel = () => + setRefresh(pv => ({ ...pv, dataSelectionClassMachineModelsList: pv.dataSelectionClassMachineModelsList + 1 })); + //При нажатии на "Добавить модель класса оборудования" const handleAddEquipDataSelectionClassMachineModel = () => setDialogs(pv => ({ ...pv, dataSelectionClassMachineModelIU: true })); @@ -285,6 +315,7 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n ) : null} {dialogs.dataSelectionClassMachineIU ? ( @@ -351,11 +382,14 @@ const AdminTab = ({ dataSelection = DS_RN_DEFAULT, dataSelectionClassMachine = n card={equipDataSelectionClassMachineCard} filesList={equipDataSelectionClassMachineFilesList} modelsList={equipDataSelectionClassMachineModelsList} + onCardEdit={handleEditEquipDataSelectionClassMachine} onCardDelete={handleDeleteEquipDataSelectionClassMachine} + onClassMachineFilesRefresh={handleRefreshEquipDataSelectionClassMachineFiles} onClassMachineFilesMake={handleMakeEquipDataSelectionClassMachineFiles} onClassMachineFilesDelete={handleDeleteEquipDataSelectionClassMachineFiles} onClassMachineFilesUpload={handleUploadEquipDataSelectionClassMachineFiles} onClassMachineFilesSendMd={handleSendMdEquipDataSelectionClassMachineFiles} + onClassMachineModelRefresh={handleRefreshEquipDataSelectionClassMachineModel} onClassMachineModelAdd={handleAddEquipDataSelectionClassMachineModel} onClassMachineModelDelete={handleDeleteEquipDataSelectionClassMachineModel} onClassMachineModelSendRq={handleSendRqEquipDataSelectionClassMachineModel} diff --git a/panels/eqs_tech_cond_forecast/admin_tab_layout.js b/panels/eqs_tech_cond_forecast/admin_tab_layout.js index e3410c9..4fc2183 100644 --- a/panels/eqs_tech_cond_forecast/admin_tab_layout.js +++ b/panels/eqs_tech_cond_forecast/admin_tab_layout.js @@ -7,7 +7,7 @@ //Подключение библиотек //--------------------- -import React, { useState, useContext, useRef } from "react"; //Классы React +import React, { useState, useContext, useRef, useEffect } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Box, @@ -53,7 +53,7 @@ import { import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"; //Таблица данных import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения import { DS_RN_DEFAULT, TASK_LIST } from "./eqs_tech_cond_forecast_hooks"; //Общие вспомогательные хуки -import { useEquipDataSelectionClassMachineDataSetsList } from "./admin_tab_hooks"; //Вспомогательные хуки +import { useEquipDataSelectionClassMachineDataSetsList, useEquipDataSelectionClassMachineCard } from "./admin_tab_hooks"; //Вспомогательные хуки //--------- //Константы @@ -97,6 +97,7 @@ const STYLES = { overflowY: "auto", ...SCROLL_STYLES }, + EQUIP_DSCM_DIALOG_CONTENT: { ...SCROLL_STYLES }, FL_ML_TABLE: { height: `200px`, ...SCROLL_STYLES @@ -305,7 +306,7 @@ EquipDataSelectionIU.propTypes = { }; //Диалог IU класса оборудования выборки данных -const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => { +const EquipDataSelectionClassMachineIU = ({ classMachine, onOk, onCancel }) => { //Подключение к контексту приложения const { pOnlineShowDictionary } = useContext(ApplicationСtx); @@ -318,18 +319,45 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => { exsServiceFnUpload: "", exsServiceSendMd: "", exsServiceFnSendMd: "", + exsServiceSendMdCb: "", + exsServiceFnSendMdCb: "", exsServiceSendRq: "", - exsServiceFnSendRq: "" + exsServiceFnSendRq: "", + exsServiceSendRqCb: "", + exsServiceFnSendRqCb: "" }); + //Карточка из базы + const { equipDataSelectionClassMachineCard } = useEquipDataSelectionClassMachineCard(classMachine, 0); + + //При загрузке карточки из базы + useEffect(() => { + if (equipDataSelectionClassMachineCard.NRN) + setValues({ + eqobjKind: equipDataSelectionClassMachineCard.SSEQOBJKIND, + measureUnit: equipDataSelectionClassMachineCard.SDICMUNTS, + userprocsData: equipDataSelectionClassMachineCard.SUSERPROCS_DATA, + exsServiceUpload: equipDataSelectionClassMachineCard.SEXSSERVICE_UPLOAD, + exsServiceFnUpload: equipDataSelectionClassMachineCard.SEXSSERVICEFN_UPLOAD, + exsServiceSendMd: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_MD, + exsServiceFnSendMd: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_MD, + exsServiceSendMdCb: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_MDCB, + exsServiceFnSendMdCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_MDCB, + exsServiceSendRq: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQ, + exsServiceFnSendRq: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQ, + exsServiceSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICE_SEND_RQCB, + exsServiceFnSendRqCb: equipDataSelectionClassMachineCard.SEXSSERVICEFN_SEND_RQCB + }); + }, [equipDataSelectionClassMachineCard]); + //Отработка воода значения в форму const handleValueChanged = (name, value) => setValues(pv => ({ ...pv, [name]: value })); //Генерация содержимого return ( - (onOk ? onCancel() : null)}> + (onOk ? onCancel() : null)} maxWidth={"sm"} fullWidth={true}> Класс оборудования выборки данных - + { onChange={handleValueChanged} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)} + /> { onChange={handleValueChanged} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)} + /> @@ -404,6 +460,7 @@ const EquipDataSelectionClassMachineIU = ({ onOk, onCancel }) => { //Контроль свойств - Диалог IU класса оборудования выборки данных EquipDataSelectionClassMachineIU.propTypes = { + classMachine: PropTypes.number, onOk: PropTypes.func, onCancel: PropTypes.func }; @@ -588,11 +645,14 @@ const EquipDataSelectionClassMachineCard = ({ card, filesList, modelsList, + onCardEdit, onCardDelete, + onClassMachineFilesRefresh, onClassMachineFilesMake, onClassMachineFilesDelete, onClassMachineFilesUpload, onClassMachineFilesSendMd, + onClassMachineModelRefresh, onClassMachineModelAdd, onClassMachineModelDelete, onClassMachineModelSendRq @@ -600,9 +660,15 @@ const EquipDataSelectionClassMachineCard = ({ //Подключаемся к теме const theme = useTheme(); + //При нажатии на "Исправить" для карточки + const handleCardEditClick = () => (onCardEdit ? onCardEdit(card.NRN) : null); + //При нажатии на "Удалить" для карточки const handleCardDeleteClick = () => (onCardDelete ? onCardDelete(card.NRN) : null); + //При нажатии на "Обновить" для файлов данных + const handleClassMachineFilesRefreshClick = () => (onClassMachineFilesRefresh ? onClassMachineFilesRefresh() : null); + //При нажатии на "Сформировать" для файлов данных const handleClassMachineFilesMakeClick = option => onClassMachineFilesMake ? onClassMachineFilesMake(card.NRN, card.SUSERPROCS_DATA, option.code === "CLEAR_AND_MAKE" ? 1 : 0) : null; @@ -616,6 +682,9 @@ const EquipDataSelectionClassMachineCard = ({ //При нажатии на "Удалить" для файлов данных const handleClassMachineFilesDeleteClick = equipDSCMFL => (onClassMachineFilesDelete ? onClassMachineFilesDelete(equipDSCMFL) : null); + //При нажатии на "Обновить" для моделей + const handleClassMachineModelRefreshClick = () => (onClassMachineModelRefresh ? onClassMachineModelRefresh() : null); + //При нажатии на "Добавить" для моделей const handleClassMachineModelAddClick = () => (onClassMachineModelAdd ? onClassMachineModelAdd() : null); @@ -634,6 +703,9 @@ const EquipDataSelectionClassMachineCard = ({ {card.SNAME} + + edit + delete @@ -645,6 +717,9 @@ const EquipDataSelectionClassMachineCard = ({ Файлы данных + + refresh + Модели - - add - + + + refresh + + + add + + { ? "exsServiceUpload" : name == "exsServiceFnSendMd" ? "exsServiceSendMd" - : "exsServiceSendRq", + : name == "exsServiceFnSendMdCb" + ? "exsServiceSendMdCb" + : name == "exsServiceFnSendRq" + ? "exsServiceSendRq" + : "exsServiceSendRqCb", value: res.outParameters.out_CODE } ] diff --git a/panels/eqs_tech_cond_forecast/forecast_tab.js b/panels/eqs_tech_cond_forecast/forecast_tab.js index 914d85d..52a7497 100644 --- a/panels/eqs_tech_cond_forecast/forecast_tab.js +++ b/panels/eqs_tech_cond_forecast/forecast_tab.js @@ -254,8 +254,12 @@ const ForecastTab = ({ onGoToAdmin }) => { SEXSSERVICEFN_UPLOAD: values.exsServiceFnUpload, SEXSSERVICE_SEND_MD: values.exsServiceSendMd, SEXSSERVICEFN_SEND_MD: values.exsServiceFnSendMd, + SEXSSERVICE_SEND_MDCB: values.exsServiceSendMdCb, + SEXSSERVICEFN_SEND_MDCB: values.exsServiceFnSendMdCb, SEXSSERVICE_SEND_RQ: values.exsServiceSendRq, - SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq + SEXSSERVICEFN_SEND_RQ: values.exsServiceFnSendRq, + SEXSSERVICE_SEND_RQCB: values.exsServiceSendRqCb, + SEXSSERVICEFN_SEND_RQCB: values.exsServiceFnSendRqCb } }); setDialogs(pv => ({ ...pv, makeEqDataSet: false })); diff --git a/panels/eqs_tech_cond_forecast/forecast_tab_layout.js b/panels/eqs_tech_cond_forecast/forecast_tab_layout.js index 29d9ae6..c96ab3b 100644 --- a/panels/eqs_tech_cond_forecast/forecast_tab_layout.js +++ b/panels/eqs_tech_cond_forecast/forecast_tab_layout.js @@ -654,8 +654,12 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => { exsServiceFnUpload: "Загрузка_на_SCP", exsServiceSendMd: "Загрузка_на_Фреймворк", exsServiceFnSendMd: "Передача данных", + exsServiceSendMdCb: "Поучение_от_Фреймворка", + exsServiceFnSendMdCb: "Состояние загрузки данных", exsServiceSendRq: "Загрузка_на_Фреймворк", - exsServiceFnSendRq: "Запрос на обучение" + exsServiceFnSendRq: "Запрос на обучение", + exsServiceSendRqCb: "Поучение_от_Фреймворка", + exsServiceFnSendRqCb: "Состояние обучения модели" }); //Отработка воода значения в форму @@ -663,7 +667,7 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => { //Генерация содержимого return ( - (onOk ? onCancel() : null)}> + (onOk ? onCancel() : null)} maxWidth={"sm"} fullWidth={true}> Регистрация выборки данных класса технического объекта {equipDataSelectionListIsLoading ? null : equipDataSelectionListAccess ? ( @@ -725,6 +729,20 @@ const TechObjMakeDataSet = ({ eqobjKind, measureUnit, onOk, onCancel }) => { onChange={handleValueChanged} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMd", callBack)} /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendMdCb", callBack)} + /> { onChange={handleValueChanged} dictionary={callBack => selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRq", callBack)} /> + + selectServiceFn(pOnlineShowDictionary, "exsServiceFnSendRqCb", callBack)} + /> ) : (