forked from CITKParus/P8-Panels
БД: Панель "Графики проектов" - добавлены проверки на наличие данных в портфеле проектов
This commit is contained in:
parent
bcf6c674ea
commit
61fabddaba
@ -1564,6 +1564,8 @@ text="Проверить, что для расчётных полей дата-
|
|||||||
from PROJECT P
|
from PROJECT P
|
||||||
where P.COMPANY = NCOMPANY
|
where P.COMPANY = NCOMPANY
|
||||||
and P.STATE in (0, 1, 4)
|
and P.STATE in (0, 1, 4)
|
||||||
|
and P.BEGPLAN is not null
|
||||||
|
and P.ENDPLAN is not null
|
||||||
union all
|
union all
|
||||||
select min(PS.BEGPLAN) DBEGPLAN,
|
select min(PS.BEGPLAN) DBEGPLAN,
|
||||||
max(PS.ENDPLAN) DENDPLAN
|
max(PS.ENDPLAN) DENDPLAN
|
||||||
@ -1573,110 +1575,119 @@ text="Проверить, что для расчётных полей дата-
|
|||||||
and P.STATE in (0, 1, 4)
|
and P.STATE in (0, 1, 4)
|
||||||
and P.RN = PS.PRN
|
and P.RN = PS.PRN
|
||||||
and PS.STATE in (0, 1, 3)
|
and PS.STATE in (0, 1, 3)
|
||||||
|
and PS.BEGPLAN is not null
|
||||||
|
and PS.ENDPLAN is not null
|
||||||
and PS.HRN is null);
|
and PS.HRN is null);
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
|
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
|
||||||
/* Формируем структуру заголовка */
|
/* Если есть данные о начале и окончании проектов в портфеле */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
if ((DFROM is not null) and (DTO is not null)) then
|
||||||
SNAME => 'NRN',
|
/* Формируем структуру заголовка */
|
||||||
SCAPTION => 'Рег. номер',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SNAME => 'NRN',
|
||||||
BVISIBLE => false);
|
SCAPTION => 'Рег. номер',
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
SNAME => 'SJOB',
|
BVISIBLE => false);
|
||||||
SCAPTION => 'Работы',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SNAME => 'SJOB',
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SCAPTION => 'Работы',
|
||||||
SNAME => 'SRESP',
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
SCAPTION => 'Ответственный',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SNAME => 'SRESP',
|
||||||
BVISIBLE => false);
|
SCAPTION => 'Ответственный',
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SNAME => 'NSTATE',
|
BVISIBLE => false);
|
||||||
SCAPTION => 'Состояние',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SNAME => 'NSTATE',
|
||||||
BVISIBLE => false);
|
SCAPTION => 'Состояние',
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
SNAME => 'DFROM',
|
BVISIBLE => false);
|
||||||
SCAPTION => 'Начало работы',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SNAME => 'DFROM',
|
||||||
BVISIBLE => false);
|
SCAPTION => 'Начало работы',
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
SNAME => 'DTO',
|
BVISIBLE => false);
|
||||||
SCAPTION => 'Окончание работы',
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
SNAME => 'DTO',
|
||||||
BVISIBLE => false);
|
SCAPTION => 'Окончание работы',
|
||||||
for Y in EXTRACT(year from DFROM) .. EXTRACT(year from DTO)
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||||
loop
|
BVISIBLE => false);
|
||||||
SYEAR_COL_NAME := TO_CHAR(Y);
|
for Y in EXTRACT(year from DFROM) .. EXTRACT(year from DTO)
|
||||||
if (Y = EXTRACT(year from sysdate)) then
|
|
||||||
BEXPANDED := true;
|
|
||||||
else
|
|
||||||
BEXPANDED := false;
|
|
||||||
end if;
|
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
||||||
SNAME => SYEAR_COL_NAME,
|
|
||||||
SCAPTION => TO_CHAR(Y),
|
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
|
||||||
BEXPANDABLE => true,
|
|
||||||
BEXPANDED => BEXPANDED);
|
|
||||||
for M in 1 .. 12
|
|
||||||
loop
|
loop
|
||||||
DFROM_CUR := TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y), 'dd.mm.yyyy');
|
SYEAR_COL_NAME := TO_CHAR(Y);
|
||||||
DTO_CUR := LAST_DAY(DFROM_CUR);
|
if (Y = EXTRACT(year from sysdate)) then
|
||||||
if ((DFROM_CUR >= DFROM) and (DTO_CUR <= DTO)) then
|
BEXPANDED := true;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
else
|
||||||
SNAME => SYEAR_COL_NAME || '_' || TO_CHAR(M),
|
BEXPANDED := false;
|
||||||
SCAPTION => LPAD(TO_CHAR(M), 2, '0'),
|
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
|
||||||
SPARENT => SYEAR_COL_NAME);
|
|
||||||
end if;
|
end if;
|
||||||
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
|
SNAME => SYEAR_COL_NAME,
|
||||||
|
SCAPTION => TO_CHAR(Y),
|
||||||
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
|
BEXPANDABLE => true,
|
||||||
|
BEXPANDED => BEXPANDED);
|
||||||
|
for M in 1 .. 12
|
||||||
|
loop
|
||||||
|
DFROM_CUR := TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y), 'dd.mm.yyyy');
|
||||||
|
DTO_CUR := LAST_DAY(DFROM_CUR);
|
||||||
|
if ((DFROM_CUR >= DFROM) and (DTO_CUR <= DTO)) then
|
||||||
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
|
SNAME => SYEAR_COL_NAME || '_' || TO_CHAR(M),
|
||||||
|
SCAPTION => LPAD(TO_CHAR(M), 2, '0'),
|
||||||
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
|
SPARENT => SYEAR_COL_NAME);
|
||||||
|
end if;
|
||||||
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
/* Обходим открытые проекты */
|
||||||
/* Обходим открытые проекты */
|
for PR in (select P.*
|
||||||
for PR in (select P.*
|
from PROJECT P
|
||||||
from PROJECT P
|
where P.COMPANY = NCOMPANY
|
||||||
where P.COMPANY = NCOMPANY
|
and P.STATE in (0, 1, 4)
|
||||||
and P.STATE in (0, 1, 4)
|
and P.BEGPLAN is not null
|
||||||
order by P.BEGPLAN)
|
and P.ENDPLAN is not null
|
||||||
loop
|
order by P.BEGPLAN)
|
||||||
/* Добвим группу для проекта */
|
|
||||||
SPRJ_GROUP_NAME := PR.RN;
|
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
|
||||||
SNAME => SPRJ_GROUP_NAME,
|
|
||||||
SCAPTION => PR.CODE || ' - ' || PR.NAME,
|
|
||||||
BEXPANDABLE => true,
|
|
||||||
BEXPANDED => true);
|
|
||||||
/* Обходим этапы проекта */
|
|
||||||
for ST in (select PS.RN NRN,
|
|
||||||
trim(PS.NUMB) || ' - ' || PS.NAME SJOB,
|
|
||||||
COALESCE(AG.AGNABBR, IND.NAME) SRESP,
|
|
||||||
PS.STATE NSTATE,
|
|
||||||
PS.BEGPLAN DFROM,
|
|
||||||
PS.ENDPLAN DTO
|
|
||||||
from PROJECTSTAGE PS,
|
|
||||||
AGNLIST AG,
|
|
||||||
INS_DEPARTMENT IND
|
|
||||||
where PS.PRN = PR.RN
|
|
||||||
and PS.STATE in (0, 1, 3)
|
|
||||||
and PS.HRN is null
|
|
||||||
and PS.RESPONSIBLE = AG.RN(+)
|
|
||||||
and PS.SUBDIV_RESP = IND.RN(+)
|
|
||||||
order by PS.NUMB)
|
|
||||||
loop
|
loop
|
||||||
/* Инициализируем строку */
|
/* Добвим группу для проекта */
|
||||||
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
SPRJ_GROUP_NAME := PR.RN;
|
||||||
/* Добавляем колонки с данными */
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => ST.NRN);
|
SNAME => SPRJ_GROUP_NAME,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SJOB', SVALUE => ST.SJOB);
|
SCAPTION => PR.CODE || ' - ' || PR.NAME,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SRESP', SVALUE => ST.SRESP);
|
BEXPANDABLE => true,
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATE', NVALUE => ST.NSTATE);
|
BEXPANDED => true);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DFROM', DVALUE => ST.DFROM);
|
/* Обходим этапы проекта */
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DTO', DVALUE => ST.DTO);
|
for ST in (select PS.RN NRN,
|
||||||
/* Добавим строку для этапа */
|
trim(PS.NUMB) || ' - ' || PS.NAME SJOB,
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
COALESCE(AG.AGNABBR, IND.NAME) SRESP,
|
||||||
|
PS.STATE NSTATE,
|
||||||
|
PS.BEGPLAN DFROM,
|
||||||
|
PS.ENDPLAN DTO
|
||||||
|
from PROJECTSTAGE PS,
|
||||||
|
AGNLIST AG,
|
||||||
|
INS_DEPARTMENT IND
|
||||||
|
where PS.PRN = PR.RN
|
||||||
|
and PS.STATE in (0, 1, 3)
|
||||||
|
and PS.BEGPLAN is not null
|
||||||
|
and PS.ENDPLAN is not null
|
||||||
|
and PS.HRN is null
|
||||||
|
and PS.RESPONSIBLE = AG.RN(+)
|
||||||
|
and PS.SUBDIV_RESP = IND.RN(+)
|
||||||
|
order by PS.NUMB)
|
||||||
|
loop
|
||||||
|
/* Инициализируем строку */
|
||||||
|
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
|
/* Добавляем колонки с данными */
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => ST.NRN);
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SJOB', SVALUE => ST.SJOB);
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SRESP', SVALUE => ST.SRESP);
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATE', NVALUE => ST.NSTATE);
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DFROM', DVALUE => ST.DFROM);
|
||||||
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DTO', DVALUE => ST.DTO);
|
||||||
|
/* Добавим строку для этапа */
|
||||||
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end if;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
||||||
end GRAPH;
|
end GRAPH;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user