forked from CITKParus/P8-Panels
БД: Новая панель ПУП - Графики проектов
This commit is contained in:
parent
88984a7804
commit
177b670ca9
@ -100,6 +100,12 @@ create or replace package PKG_P8PANELS_PROJECTS as
|
||||
COUT out clob -- Сериализованная таблица данных
|
||||
);
|
||||
|
||||
/* Сфодный график проектов */
|
||||
procedure GRAPH
|
||||
(
|
||||
COUT out clob -- График проектов
|
||||
);
|
||||
|
||||
/* График по данным проектов - "Топ проблем" */
|
||||
procedure CHART_PROBLEMS
|
||||
(
|
||||
@ -1517,6 +1523,150 @@ text="Проверить, что для расчётных полей дата-
|
||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
|
||||
end LIST;
|
||||
|
||||
/* Сфодный график проектов */
|
||||
procedure GRAPH
|
||||
(
|
||||
COUT out clob -- График проектов
|
||||
)
|
||||
is
|
||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||
DFROM PKG_STD.TLDATE; -- Дата начала всех работ
|
||||
DTO PKG_STD.TLDATE; -- Дата окончания всех работ
|
||||
DFROM_CUR PKG_STD.TLDATE; -- Дата начала текущая
|
||||
DTO_CUR PKG_STD.TLDATE; -- Дата окончания текущая
|
||||
SYEAR_COL_NAME PKG_STD.TSTRING; -- Наименование колонки для года
|
||||
SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта
|
||||
BEXPANDED boolean; -- Флаг раскрытости уровня
|
||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
||||
begin
|
||||
/* Определим даты начала и окончания проектов */
|
||||
select TRUNC(min(DBEGPLAN), 'mm'),
|
||||
LAST_DAY(max(DENDPLAN))
|
||||
into DFROM,
|
||||
DTO
|
||||
from (select min(P.BEGPLAN) DBEGPLAN,
|
||||
max(P.ENDPLAN) DENDPLAN
|
||||
from PROJECT P
|
||||
where P.COMPANY = NCOMPANY
|
||||
and P.STATE in (0, 1, 4)
|
||||
union all
|
||||
select min(PS.BEGPLAN) DBEGPLAN,
|
||||
max(PS.ENDPLAN) DENDPLAN
|
||||
from PROJECT P,
|
||||
PROJECTSTAGE PS
|
||||
where P.COMPANY = NCOMPANY
|
||||
and P.STATE in (0, 1, 4)
|
||||
and P.RN = PS.PRN
|
||||
and PS.STATE in (0, 1, 3)
|
||||
and PS.HRN is null);
|
||||
/* Инициализируем таблицу данных */
|
||||
RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
|
||||
/* Формируем структуру заголовка */
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'NRN',
|
||||
SCAPTION => 'Рег. номер',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||
BVISIBLE => false);
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'SJOB',
|
||||
SCAPTION => 'Работы',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'SRESP',
|
||||
SCAPTION => 'Ответственный',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||
BVISIBLE => false);
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'NSTATE',
|
||||
SCAPTION => 'Состояние',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||
BVISIBLE => false);
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'DFROM',
|
||||
SCAPTION => 'Начало работы',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||
BVISIBLE => false);
|
||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||
SNAME => 'DTO',
|
||||
SCAPTION => 'Окончание работы',
|
||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
|
||||
BVISIBLE => false);
|
||||
for Y in EXTRACT(year from DFROM) .. EXTRACT(year from DTO)
|
||||
loop
|
||||
SYEAR_COL_NAME := TO_CHAR(Y);
|
||||
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
|
||||
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;
|
||||
/* Обходим открытые проекты */
|
||||
for PR in (select P.*
|
||||
from PROJECT P
|
||||
where P.COMPANY = NCOMPANY
|
||||
and P.STATE in (0, 1, 4)
|
||||
order by P.BEGPLAN)
|
||||
loop
|
||||
/* Добвим группу для проекта */
|
||||
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
|
||||
/* Инициализируем строку */
|
||||
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;
|
||||
/* Сериализуем описание */
|
||||
COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
||||
end GRAPH;
|
||||
|
||||
/* График по данным проектов - "Топ проблем" */
|
||||
procedure CHART_PROBLEMS
|
||||
(
|
||||
|
Loading…
x
Reference in New Issue
Block a user