БД: BASE, MECHREC, SAMPLES - совместимость с PG, в BASE удалена трассировка
This commit is contained in:
parent
7ef89565de
commit
12bb34b0e2
@ -168,7 +168,9 @@ create or replace package body PKG_P8PANELS_BASE as
|
|||||||
SRES := SDATA_TYPE_CLOB;
|
SRES := SDATA_TYPE_CLOB;
|
||||||
/* Неизвестный тип данных */
|
/* Неизвестный тип данных */
|
||||||
else
|
else
|
||||||
P_EXCEPTION(0, 'Тип данных "%s" не поддерживается.', TO_CHAR(NSTD_DATA_TYPE));
|
P_EXCEPTION(0,
|
||||||
|
'Тип данных "%s" не поддерживается.',
|
||||||
|
COALESCE(TO_CHAR(NSTD_DATA_TYPE), '<НЕ ОПРЕДЕЛЁН>'));
|
||||||
end case;
|
end case;
|
||||||
/* Возвращаем результат */
|
/* Возвращаем результат */
|
||||||
return SRES;
|
return SRES;
|
||||||
@ -753,7 +755,7 @@ create or replace package body PKG_P8PANELS_BASE as
|
|||||||
RNODE02 => PKG_XMAKE.ELEMENT(ICURSOR => XRESP,
|
RNODE02 => PKG_XMAKE.ELEMENT(ICURSOR => XRESP,
|
||||||
SNAME => SRESP_TAG_SDATA_TYPE,
|
SNAME => SRESP_TAG_SDATA_TYPE,
|
||||||
RVALUE00 => PKG_XMAKE.VALUE(ICURSOR => XRESP,
|
RVALUE00 => PKG_XMAKE.VALUE(ICURSOR => XRESP,
|
||||||
SVALUE => STD_DATA_TYPE_TO_STR(NSTD_DATA_TYPE => RARG_VAL.DATA_TYPE)))));
|
SVALUE => STD_DATA_TYPE_TO_STR(NSTD_DATA_TYPE => RARG.DATA_TYPE)))));
|
||||||
end if;
|
end if;
|
||||||
/* Считываем наименование следующего параметра */
|
/* Считываем наименование следующего параметра */
|
||||||
SARG_NAME := PKG_CONTPRMLOC.NEXT_(RCONTAINER => ARGS_VALS, SNAME => SARG_NAME);
|
SARG_NAME := PKG_CONTPRMLOC.NEXT_(RCONTAINER => ARGS_VALS, SNAME => SARG_NAME);
|
||||||
@ -796,7 +798,6 @@ create or replace package body PKG_P8PANELS_BASE as
|
|||||||
XRQ_ROOT PKG_XPATH.TNODE; -- Корневой элемент тела документа запроса
|
XRQ_ROOT PKG_XPATH.TNODE; -- Корневой элемент тела документа запроса
|
||||||
SRQ_ACTION PKG_STD.TSTRING; -- Код действия из запроса
|
SRQ_ACTION PKG_STD.TSTRING; -- Код действия из запроса
|
||||||
begin
|
begin
|
||||||
PKG_TRACE.REGISTER(SDATA => 'P8PANELS', SDATA1 => CIN);
|
|
||||||
/* Разбираем запрос */
|
/* Разбираем запрос */
|
||||||
XRQ_ROOT := RQ_ROOT_GET(CRQ => CIN);
|
XRQ_ROOT := RQ_ROOT_GET(CRQ => CIN);
|
||||||
/* Считываем код действия из запроса */
|
/* Считываем код действия из запроса */
|
||||||
|
@ -123,14 +123,14 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
||||||
UR.ROLEID
|
UR.ROLEID
|
||||||
from USERROLES UR
|
from USERROLES UR
|
||||||
where UR.AUTHID = UTILIZER)
|
where UR.AUTHID = UTILIZER())
|
||||||
union all
|
union all
|
||||||
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
||||||
null
|
null
|
||||||
from USERPRIV UP
|
from USERPRIV UP
|
||||||
where UP.JUR_PERS = P.JUR_PERS
|
where UP.JUR_PERS = P.JUR_PERS
|
||||||
and UP.UNITCODE = 'CostProductPlans'
|
and UP.UNITCODE = 'CostProductPlans'
|
||||||
and UP.AUTHID = UTILIZER)
|
and UP.AUTHID = UTILIZER())
|
||||||
and T.PRN = P.RN) TMP
|
and T.PRN = P.RN) TMP
|
||||||
connect by prior TMP.RN = TMP.UP_LEVEL
|
connect by prior TMP.RN = TMP.UP_LEVEL
|
||||||
start with TMP.UP_LEVEL is null;
|
start with TMP.UP_LEVEL is null;
|
||||||
@ -203,26 +203,7 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
NTASK_PROGRESS PKG_STD.TNUMBER; -- Прогресс выполнения задачи
|
NTASK_PROGRESS PKG_STD.TNUMBER; -- Прогресс выполнения задачи
|
||||||
DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации
|
DDATE_FROM PKG_STD.TLDATE; -- Дата запуска спецификации
|
||||||
DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации
|
DDATE_TO PKG_STD.TLDATE; -- Дата выпуска спецификации
|
||||||
STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте
|
STASK_CAPTION PKG_STD.TSTRING; -- Описание задачи в Ганте
|
||||||
CSQL clob; -- Буфер для запроса
|
|
||||||
ICURSOR integer; -- Курсор для исполнения запроса
|
|
||||||
/* Значения спецификации */
|
|
||||||
NTASK_RN PKG_STD.TREF; -- Рег. номер спецификации
|
|
||||||
NTASK_PRN PKG_STD.TREF; -- Рег. номер родителя спецификации
|
|
||||||
STASK_PROD_ORDER PKG_STD.TSTRING; -- Заказ
|
|
||||||
DTASK_REP_DATE PKG_STD.TLDATE; -- Дата запуска
|
|
||||||
DTASK_REP_DATE_TO PKG_STD.TLDATE; -- Дата выпуска
|
|
||||||
DTASK_INCL_DATE PKG_STD.TLDATE; -- Дата включения в план
|
|
||||||
STASK_ROUTE PKG_STD.TSTRING; -- Маршрут
|
|
||||||
STASK_NOMEN_NAME PKG_STD.TSTRING; -- Наименование номенклатуры
|
|
||||||
NTASK_DEFRESLIZ number; -- Дефицит запуска
|
|
||||||
NTASK_REL_FACT number; -- Выпуск факт
|
|
||||||
NTASK_DEFSTART number; -- Дефицит выпуска
|
|
||||||
NTASK_MAIN_QUANT number; -- Выпуск
|
|
||||||
STASK_SUBDIV_DLVR PKG_STD.TSTRING; -- Сдающее подразделение
|
|
||||||
NTASK_HAVE_LINK PKG_STD.TNUMBER; -- Наличие ссылок (0 - нет, 1 - да)
|
|
||||||
NTASK_UP_LEVEL PKG_STD.TREF; -- Рег. номер родительской записи в иерархии
|
|
||||||
NTASK_LEVEL PKG_STD.TNUMBER; -- Уровень в иерархии
|
|
||||||
|
|
||||||
/* Объединение значений в строковое представление */
|
/* Объединение значений в строковое представление */
|
||||||
function MAKE_INFO
|
function MAKE_INFO
|
||||||
@ -356,190 +337,134 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
/* Определяем максимальный уровень иерархии */
|
/* Определяем максимальный уровень иерархии */
|
||||||
NMAX_LEVEL := PRODPLAN_MAX_LEVEL_GET(NCRN => NCRN);
|
NMAX_LEVEL := PRODPLAN_MAX_LEVEL_GET(NCRN => NCRN);
|
||||||
/* Обходим данные */
|
/* Обходим данные */
|
||||||
begin
|
for C in (select TMP.*,
|
||||||
CSQL := 'select TMP.*,
|
level NTASK_LEVEL
|
||||||
level NTASK_LEVEL
|
from (select T.RN NRN,
|
||||||
from (select T.RN NRN,
|
T.PRN NPRN,
|
||||||
T.PRN NPRN,
|
(select PORD.NUMB from FACEACC PORD where PORD.RN = T.PROD_ORDER) SPROD_ORDER,
|
||||||
(select PORD.NUMB from FACEACC PORD where PORD.RN = T.PROD_ORDER) SPROD_ORDER,
|
T.REP_DATE DREP_DATE,
|
||||||
T.REP_DATE DREP_DATE,
|
T.REP_DATE_TO DREP_DATE_TO,
|
||||||
T.REP_DATE_TO DREP_DATE_TO,
|
T.INCL_DATE DINCL_DATE,
|
||||||
T.INCL_DATE DINCL_DATE,
|
T.ROUTE SROUTE,
|
||||||
T.ROUTE SROUTE,
|
D.NOMEN_NAME SNOMEN_NAME,
|
||||||
D.NOMEN_NAME SNOMEN_NAME,
|
(T.QUANT_REST - T.START_FACT) NDEFRESLIZ,
|
||||||
(T.QUANT_REST - T.START_FACT) NDEFRESLIZ,
|
T.REL_FACT NREL_FACT,
|
||||||
T.REL_FACT NREL_FACT,
|
(T.MAIN_QUANT - T.REL_FACT) NDEFSTART,
|
||||||
(T.MAIN_QUANT - T.REL_FACT) NDEFSTART,
|
T.MAIN_QUANT NMAIN_QUANT,
|
||||||
T.MAIN_QUANT NMAIN_QUANT,
|
(select IDD.CODE from INS_DEPARTMENT IDD where IDD.RN = T.SUBDIV_DLVR) SSUBDIV_DLVR,
|
||||||
(select IDD.CODE from INS_DEPARTMENT IDD where IDD.RN = T.SUBDIV_DLVR) SSUBDIV_DLVR,
|
(select 1
|
||||||
(select 1
|
from DUAL
|
||||||
from DUAL
|
where exists (select null
|
||||||
where exists
|
from DOCLINKS L
|
||||||
(select null
|
where L.IN_DOCUMENT = T.RN
|
||||||
from DOCLINKS L
|
and L.IN_UNITCODE = 'CostProductPlansSpecs'
|
||||||
where L.IN_DOCUMENT = T.RN
|
and (L.OUT_UNITCODE = 'CostRouteLists' or L.OUT_UNITCODE = 'IncomFromDeps')
|
||||||
and L.IN_UNITCODE = ''CostProductPlansSpecs''
|
and ROWNUM = 1)) NHAVE_LINK,
|
||||||
and (L.OUT_UNITCODE = ''CostRouteLists'' or L.OUT_UNITCODE = ''IncomFromDeps'')
|
T.UP_LEVEL NUP_LEVEL,
|
||||||
and ROWNUM = 1)) NHAVE_LINK,
|
case SSORT_FIELD
|
||||||
T.UP_LEVEL NUP_LEVEL
|
when 'DREP_DATE_TO' then
|
||||||
from FCPRODPLAN P,
|
T.REP_DATE_TO
|
||||||
FINSTATE FS,
|
else
|
||||||
FCPRODPLANSP T,
|
T.REP_DATE
|
||||||
FCMATRESOURCE FM,
|
end DORDER_DATE
|
||||||
DICNOMNS D
|
from FCPRODPLAN P,
|
||||||
where P.CRN = :NCRN
|
FINSTATE FS,
|
||||||
and P.CATEGORY = :NFCPRODPLAN_CATEGORY
|
FCPRODPLANSP T,
|
||||||
and P.STATUS = :NFCPRODPLAN_STATUS
|
FCMATRESOURCE FM,
|
||||||
and FS.RN = P.TYPE
|
DICNOMNS D
|
||||||
and FS.CODE = :SFCPRODPLAN_TYPE
|
where P.CRN = NCRN
|
||||||
and exists
|
and P.CATEGORY = NFCPRODPLAN_CATEGORY
|
||||||
(select /*+ INDEX(UP I_USERPRIV_JUR_PERS_ROLEID) */
|
and P.STATUS = NFCPRODPLAN_STATUS
|
||||||
null
|
and FS.RN = P.TYPE
|
||||||
from USERPRIV UP
|
and FS.CODE = SFCPRODPLAN_TYPE
|
||||||
where UP.JUR_PERS = P.JUR_PERS
|
and exists
|
||||||
and UP.UNITCODE = ''CostProductPlans''
|
(select /*+ INDEX(UP I_USERPRIV_JUR_PERS_ROLEID) */
|
||||||
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
null
|
||||||
UR.ROLEID
|
from USERPRIV UP
|
||||||
from USERROLES UR
|
where UP.JUR_PERS = P.JUR_PERS
|
||||||
where UR.AUTHID = UTILIZER)
|
and UP.UNITCODE = 'CostProductPlans'
|
||||||
union all
|
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
||||||
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
UR.ROLEID
|
||||||
null
|
from USERROLES UR
|
||||||
from USERPRIV UP
|
where UR.AUTHID = UTILIZER())
|
||||||
where UP.JUR_PERS = P.JUR_PERS
|
union all
|
||||||
and UP.UNITCODE = ''CostProductPlans''
|
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
||||||
and UP.AUTHID = UTILIZER)
|
null
|
||||||
and T.PRN = P.RN
|
from USERPRIV UP
|
||||||
and ((T.REP_DATE is not null) or (T.REP_DATE_TO is not null) or (T.INCL_DATE is not null))
|
where UP.JUR_PERS = P.JUR_PERS
|
||||||
and FM.RN = T.MATRES
|
and UP.UNITCODE = 'CostProductPlans'
|
||||||
and D.RN = FM.NOMENCLATURE) TMP
|
and UP.AUTHID = UTILIZER())
|
||||||
where ((:NLEVEL is null) or ((:NLEVEL is not null) and (level <= :NLEVEL)))
|
and T.PRN = P.RN
|
||||||
connect by prior TMP.NRN = TMP.NUP_LEVEL
|
and ((T.REP_DATE is not null) or (T.REP_DATE_TO is not null) or (T.INCL_DATE is not null))
|
||||||
start with TMP.NUP_LEVEL is null
|
and FM.RN = T.MATRES
|
||||||
order siblings by TMP.%SORT_FIELD% asc';
|
and D.RN = FM.NOMENCLATURE) TMP
|
||||||
/* Подставляем поле сортировки */
|
where ((NLEVEL is null) or ((NLEVEL is not null) and (level <= NLEVEL)))
|
||||||
CSQL := replace(CSQL, '%SORT_FIELD%', SSORT_FIELD);
|
connect by prior TMP.NRN = TMP.NUP_LEVEL
|
||||||
/* Разбираем его */
|
start with TMP.NUP_LEVEL is null
|
||||||
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
order siblings by TMP.DORDER_DATE asc)
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
loop
|
||||||
/* Делаем подстановку параметров */
|
/* Формируем описание задачи в Ганте */
|
||||||
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NCRN', NVALUE => NCRN);
|
STASK_CAPTION := MAKE_INFO(SPROD_ORDER => C.SPROD_ORDER,
|
||||||
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR,
|
SNOMEN_NAME => C.SNOMEN_NAME,
|
||||||
SNAME => 'NFCPRODPLAN_CATEGORY',
|
SSUBDIV_DLVR => C.SSUBDIV_DLVR,
|
||||||
NVALUE => NFCPRODPLAN_CATEGORY);
|
NMAIN_QUANT => C.NMAIN_QUANT);
|
||||||
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NFCPRODPLAN_STATUS', NVALUE => NFCPRODPLAN_STATUS);
|
/* Инициализируем даты и цвет (если необходимо) */
|
||||||
PKG_SQL_DML.BIND_VARIABLE_STR(ICURSOR => ICURSOR, SNAME => 'SFCPRODPLAN_TYPE', SVALUE => SFCPRODPLAN_TYPE);
|
FCPRODPLANSP_DATES_GET(DREP_DATE => C.DREP_DATE,
|
||||||
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NLEVEL', NVALUE => NLEVEL);
|
DREP_DATE_TO => C.DREP_DATE_TO,
|
||||||
/* Описываем структуру записи курсора */
|
DINCL_DATE => C.DINCL_DATE,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 1);
|
NHAVE_LINK => COALESCE(C.NHAVE_LINK, 0),
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 2);
|
DDATE_FROM => DDATE_FROM,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 3);
|
DDATE_TO => DDATE_TO,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 4);
|
STASK_BG_COLOR => STASK_BG_COLOR,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 5);
|
STASK_TEXT_COLOR => STASK_TEXT_COLOR,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 6);
|
NTASK_PROGRESS => NTASK_PROGRESS);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 7);
|
/* Если цвет изначально не указан и требуется анализирование */
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 8);
|
if (STASK_BG_COLOR is null) then
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 9);
|
/* Формирование характеристик элемента ганта */
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 10);
|
MAKE_GANT_ITEM(NDEFRESLIZ => C.NDEFRESLIZ,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 11);
|
NREL_FACT => C.NREL_FACT,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 12);
|
NDEFSTART => C.NDEFSTART,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 13);
|
STASK_BG_COLOR => STASK_BG_COLOR,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 14);
|
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 15);
|
NTASK_PROGRESS => NTASK_PROGRESS);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 16);
|
|
||||||
/* Делаем выборку */
|
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
|
||||||
null;
|
|
||||||
end if;
|
end if;
|
||||||
/* Обходим выбранные записи */
|
/* Сформируем основную спецификацию */
|
||||||
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
|
RGT := PKG_P8PANELS_VISUAL.TGANTT_TASK_MAKE(NRN => C.NRN,
|
||||||
|
SNUMB => COALESCE(C.SROUTE, 'Отсутствует'),
|
||||||
|
SCAPTION => STASK_CAPTION,
|
||||||
|
SNAME => C.SNOMEN_NAME,
|
||||||
|
DSTART => DDATE_FROM,
|
||||||
|
DEND => DDATE_TO,
|
||||||
|
NPROGRESS => NTASK_PROGRESS,
|
||||||
|
SBG_COLOR => STASK_BG_COLOR,
|
||||||
|
STEXT_COLOR => STASK_TEXT_COLOR,
|
||||||
|
SBG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
||||||
|
BREAD_ONLY => true,
|
||||||
|
BREAD_ONLY_DATES => true,
|
||||||
|
BREAD_ONLY_PROGRESS => true);
|
||||||
|
/* Заполним значение динамических атрибутов */
|
||||||
|
FILL_TASK_ATTRS(RG => RG,
|
||||||
|
RGT => RGT,
|
||||||
|
SPROD_ORDER => C.SPROD_ORDER,
|
||||||
|
SSUBDIV_DLVR => C.SSUBDIV_DLVR,
|
||||||
|
NMAIN_QUANT => C.NMAIN_QUANT,
|
||||||
|
NDEFRESLIZ => C.NDEFRESLIZ,
|
||||||
|
NREL_FACT => C.NREL_FACT,
|
||||||
|
NDEFSTART => C.NDEFSTART,
|
||||||
|
NLEVEL => C.NTASK_LEVEL);
|
||||||
|
/* Собираем зависимости */
|
||||||
|
for LINK in (select T.RN
|
||||||
|
from FCPRODPLANSP T
|
||||||
|
where T.PRN = C.NPRN
|
||||||
|
and T.UP_LEVEL = C.NRN
|
||||||
|
and ((NLEVEL is null) or ((NLEVEL is not null) and (NLEVEL >= C.NTASK_LEVEL + 1))))
|
||||||
loop
|
loop
|
||||||
/* Читаем данные из курсора */
|
/* Добавляем зависимости */
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NTASK_RN);
|
PKG_P8PANELS_VISUAL.TGANTT_TASK_ADD_DEPENDENCY(RTASK => RGT, NDEPENDENCY => LINK.RN);
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 2, NVALUE => NTASK_PRN);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 3, SVALUE => STASK_PROD_ORDER);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => 4, DVALUE => DTASK_REP_DATE);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => 5, DVALUE => DTASK_REP_DATE_TO);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => 6, DVALUE => DTASK_INCL_DATE);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 7, SVALUE => STASK_ROUTE);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 8, SVALUE => STASK_NOMEN_NAME);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 9, NVALUE => NTASK_DEFRESLIZ);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 10, NVALUE => NTASK_REL_FACT);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 11, NVALUE => NTASK_DEFSTART);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 12, NVALUE => NTASK_MAIN_QUANT);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 13, SVALUE => STASK_SUBDIV_DLVR);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 14, NVALUE => NTASK_HAVE_LINK);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 15, NVALUE => NTASK_UP_LEVEL);
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 16, NVALUE => NTASK_LEVEL);
|
|
||||||
/* Формируем описание задачи в Ганте */
|
|
||||||
STASK_CAPTION := MAKE_INFO(SPROD_ORDER => STASK_PROD_ORDER,
|
|
||||||
SNOMEN_NAME => STASK_NOMEN_NAME,
|
|
||||||
SSUBDIV_DLVR => STASK_SUBDIV_DLVR,
|
|
||||||
NMAIN_QUANT => NTASK_MAIN_QUANT);
|
|
||||||
/* Инициализируем даты и цвет (если необходимо) */
|
|
||||||
FCPRODPLANSP_DATES_GET(DREP_DATE => DTASK_REP_DATE,
|
|
||||||
DREP_DATE_TO => DTASK_REP_DATE_TO,
|
|
||||||
DINCL_DATE => DTASK_INCL_DATE,
|
|
||||||
NHAVE_LINK => COALESCE(NTASK_HAVE_LINK, 0),
|
|
||||||
DDATE_FROM => DDATE_FROM,
|
|
||||||
DDATE_TO => DDATE_TO,
|
|
||||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
|
||||||
STASK_TEXT_COLOR => STASK_TEXT_COLOR,
|
|
||||||
NTASK_PROGRESS => NTASK_PROGRESS);
|
|
||||||
/* Если цвет изначально не указан и требуется анализирование */
|
|
||||||
if (STASK_BG_COLOR is null) then
|
|
||||||
/* Формирование характеристик элемента ганта */
|
|
||||||
MAKE_GANT_ITEM(NDEFRESLIZ => NTASK_DEFRESLIZ,
|
|
||||||
NREL_FACT => NTASK_REL_FACT,
|
|
||||||
NDEFSTART => NTASK_DEFSTART,
|
|
||||||
STASK_BG_COLOR => STASK_BG_COLOR,
|
|
||||||
STASK_BG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
|
||||||
NTASK_PROGRESS => NTASK_PROGRESS);
|
|
||||||
end if;
|
|
||||||
/* Сформируем основную спецификацию */
|
|
||||||
RGT := PKG_P8PANELS_VISUAL.TGANTT_TASK_MAKE(NRN => NTASK_RN,
|
|
||||||
SNUMB => COALESCE(STASK_ROUTE, 'Отсутствует'),
|
|
||||||
SCAPTION => STASK_CAPTION,
|
|
||||||
SNAME => STASK_NOMEN_NAME,
|
|
||||||
DSTART => DDATE_FROM,
|
|
||||||
DEND => DDATE_TO,
|
|
||||||
NPROGRESS => NTASK_PROGRESS,
|
|
||||||
SBG_COLOR => STASK_BG_COLOR,
|
|
||||||
STEXT_COLOR => STASK_TEXT_COLOR,
|
|
||||||
SBG_PROGRESS_COLOR => STASK_BG_PROGRESS_COLOR,
|
|
||||||
BREAD_ONLY => true,
|
|
||||||
BREAD_ONLY_DATES => true,
|
|
||||||
BREAD_ONLY_PROGRESS => true);
|
|
||||||
/* Заполним значение динамических атрибутов */
|
|
||||||
FILL_TASK_ATTRS(RG => RG,
|
|
||||||
RGT => RGT,
|
|
||||||
SPROD_ORDER => STASK_PROD_ORDER,
|
|
||||||
SSUBDIV_DLVR => STASK_SUBDIV_DLVR,
|
|
||||||
NMAIN_QUANT => NTASK_MAIN_QUANT,
|
|
||||||
NDEFRESLIZ => NTASK_DEFRESLIZ,
|
|
||||||
NREL_FACT => NTASK_REL_FACT,
|
|
||||||
NDEFSTART => NTASK_DEFSTART,
|
|
||||||
NLEVEL => NTASK_LEVEL);
|
|
||||||
/* Собираем зависимости */
|
|
||||||
for LINK in (select T.RN
|
|
||||||
from FCPRODPLANSP T
|
|
||||||
where T.PRN = NTASK_PRN
|
|
||||||
and T.UP_LEVEL = NTASK_RN
|
|
||||||
and ((NLEVEL is null) or ((NLEVEL is not null) and (NLEVEL >= NTASK_LEVEL + 1))))
|
|
||||||
loop
|
|
||||||
/* Добавляем зависимости */
|
|
||||||
PKG_P8PANELS_VISUAL.TGANTT_TASK_ADD_DEPENDENCY(RTASK => RGT, NDEPENDENCY => LINK.RN);
|
|
||||||
end loop;
|
|
||||||
/* Добавляем основную спецификацию в диаграмму */
|
|
||||||
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK(RGANTT => RG, RTASK => RGT);
|
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
/* Добавляем основную спецификацию в диаграмму */
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
PKG_P8PANELS_VISUAL.TGANTT_ADD_TASK(RGANTT => RG, RTASK => RGT);
|
||||||
exception
|
end loop;
|
||||||
when others then
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
|
||||||
raise;
|
|
||||||
end;
|
|
||||||
/* Формируем список */
|
/* Формируем список */
|
||||||
COUT := PKG_P8PANELS_VISUAL.TGANTT_TO_XML(RGANTT => RG);
|
COUT := PKG_P8PANELS_VISUAL.TGANTT_TO_XML(RGANTT => RG);
|
||||||
end FCPRODPLANSP_GET;
|
end FCPRODPLANSP_GET;
|
||||||
@ -575,14 +500,14 @@ create or replace package body PKG_P8PANELS_MECHREC as
|
|||||||
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
||||||
UR.ROLEID
|
UR.ROLEID
|
||||||
from USERROLES UR
|
from USERROLES UR
|
||||||
where UR.AUTHID = UTILIZER)
|
where UR.AUTHID = UTILIZER())
|
||||||
union all
|
union all
|
||||||
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
select /*+ INDEX(UP I_USERPRIV_JUR_PERS_AUTHID) */
|
||||||
null
|
null
|
||||||
from USERPRIV UP
|
from USERPRIV UP
|
||||||
where UP.JUR_PERS = P.JUR_PERS
|
where UP.JUR_PERS = P.JUR_PERS
|
||||||
and UP.UNITCODE = 'CostProductPlans'
|
and UP.UNITCODE = 'CostProductPlans'
|
||||||
and UP.AUTHID = UTILIZER)) as NCOUNT_DOCS
|
and UP.AUTHID = UTILIZER())) as NCOUNT_DOCS
|
||||||
from ACATALOG T,
|
from ACATALOG T,
|
||||||
UNITLIST UL
|
UNITLIST UL
|
||||||
where T.DOCNAME = 'CostProductPlans'
|
where T.DOCNAME = 'CostProductPlans'
|
||||||
|
@ -74,28 +74,30 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
NVERSION := GET_SESSION_VERSION(SUNITCODE => 'AGNLIST');
|
NVERSION := GET_SESSION_VERSION(SUNITCODE => 'AGNLIST');
|
||||||
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||||
PKG_XFAST.DOWN_NODE(SNAME => 'DATA');
|
PKG_XFAST.DOWN_NODE(SNAME => 'DATA');
|
||||||
for C in (select D.*
|
for C in (select TMP.*
|
||||||
from (select T.RN NRN,
|
from (select D.*,
|
||||||
T.AGNABBR SAGNABBR,
|
ROWNUM NROWNUM
|
||||||
T.AGNNAME SAGNNAME
|
from (select T.RN NRN,
|
||||||
from AGNLIST T
|
T.AGNABBR SAGNABBR,
|
||||||
where T.VERSION = NVERSION
|
T.AGNNAME SAGNNAME
|
||||||
and exists (select /*+ INDEX(UP I_USERPRIV_CATALOG_ROLEID) */
|
from AGNLIST T
|
||||||
null
|
where T.VERSION = NVERSION
|
||||||
from USERPRIV UP
|
and exists (select /*+ INDEX(UP I_USERPRIV_CATALOG_ROLEID) */
|
||||||
where UP.CATALOG = T.CRN
|
null
|
||||||
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
from USERPRIV UP
|
||||||
UR.ROLEID
|
where UP.CATALOG = T.CRN
|
||||||
from USERROLES UR
|
and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */
|
||||||
where UR.AUTHID = UTILIZER)
|
UR.ROLEID
|
||||||
union all
|
from USERROLES UR
|
||||||
select /*+ INDEX(UP I_USERPRIV_CATALOG_AUTHID) */
|
where UR.AUTHID = UTILIZER)
|
||||||
null
|
union all
|
||||||
from USERPRIV UP
|
select /*+ INDEX(UP I_USERPRIV_CATALOG_AUTHID) */
|
||||||
where UP.CATALOG = T.CRN
|
null
|
||||||
and UP.AUTHID = UTILIZER)
|
from USERPRIV UP
|
||||||
order by T.RN desc) D
|
where UP.CATALOG = T.CRN
|
||||||
where ROWNUM <= 10)
|
and UP.AUTHID = UTILIZER)
|
||||||
|
order by T.RN desc) D) TMP
|
||||||
|
where TMP.NROWNUM <= 10)
|
||||||
loop
|
loop
|
||||||
PKG_XFAST.DOWN_NODE(SNAME => 'AGENTS');
|
PKG_XFAST.DOWN_NODE(SNAME => 'AGENTS');
|
||||||
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => C.NRN);
|
PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => C.NRN);
|
||||||
@ -301,16 +303,22 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
/* Собираем запрос */
|
/* Собираем запрос */
|
||||||
CSQL := 'select *
|
CSQL := 'select *
|
||||||
from (select D.*,
|
from (select D.*,
|
||||||
ROWNUM NROW
|
%ROWNUM% NROW
|
||||||
from (select AG.AGNABBR SAGNABBR,
|
from (select AG.AGNABBR SAGNABBR,
|
||||||
AG.AGNNAME SAGNNAME,
|
AG.AGNNAME SAGNNAME,
|
||||||
AG.AGNTYPE NAGNTYPE
|
AG.AGNTYPE NAGNTYPE
|
||||||
from AGNLIST AG
|
from AGNLIST AG
|
||||||
where exists (select /*+ INDEX(UP I_USERPRIV_CATALOG_ROLEID) */ null from USERPRIV UP where UP.CATALOG = AG.CRN and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */ UR.ROLEID from USERROLES UR where UR.AUTHID = UTILIZER)
|
where exists (select /*+ INDEX(UP I_USERPRIV_CATALOG_ROLEID) */ null from USERPRIV UP where UP."CATALOG" = AG.CRN and UP.ROLEID in (select /*+ INDEX(UR I_USERROLES_AUTHID_FK) */ UR.ROLEID from USERROLES UR where UR.AUTHID = UTILIZER())
|
||||||
union all
|
union all
|
||||||
select /*+ INDEX(UP I_USERPRIV_CATALOG_AUTHID) */ null from USERPRIV UP where UP.CATALOG = AG.CRN and UP.AUTHID = UTILIZER)
|
select /*+ INDEX(UP I_USERPRIV_CATALOG_AUTHID) */ null from USERPRIV UP where UP."CATALOG" = AG.CRN and UP.AUTHID = UTILIZER())
|
||||||
and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F
|
and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F
|
||||||
where F.NROW between :NROW_FROM and :NROW_TO';
|
where F.NROW between :NROW_FROM and :NROW_TO';
|
||||||
|
/* Корректировка запроса под СУБД */
|
||||||
|
if (PKG_COMPATIBLE.DATABASE_() = 0) then
|
||||||
|
CSQL := replace(csql, '%ROWNUM%', 'ROWNUM');
|
||||||
|
else
|
||||||
|
CSQL := replace(csql, '%ROWNUM%', '(row_number() over())::numeric');
|
||||||
|
end if;
|
||||||
/* Учтём сортировки */
|
/* Учтём сортировки */
|
||||||
PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
|
PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
|
||||||
/* Учтём фильтры */
|
/* Учтём фильтры */
|
||||||
@ -331,6 +339,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as
|
|||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 1);
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 1);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 3);
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 3);
|
||||||
|
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 4);
|
||||||
/* Делаем выборку */
|
/* Делаем выборку */
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
||||||
null;
|
null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user