Обновлён серверный пакет
This commit is contained in:
parent
a799856410
commit
ae7121ac98
@ -1,48 +1,80 @@
|
|||||||
create or replace package PKG_P8PANELS_EQUIPSRV as
|
create or replace package PKG_P8PANELS_EQUIPSRV as
|
||||||
|
|
||||||
/* Получение значения системного параметра "JuridicalPerson" */
|
/* Получение параметров фильтра по умолчанию */
|
||||||
procedure GET_JUR_PERS_PRM
|
procedure GET_DEFAULT_FP
|
||||||
(
|
(
|
||||||
CRES out clob -- Значение параметра "JuridicalPerson" (null - если не нашли)
|
COUT out clob -- XML с параметрами фильтра по умолчанию
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Формирование строки с кол-вом часов */
|
||||||
function HOURS_STR
|
function HOURS_STR
|
||||||
(
|
(
|
||||||
NHOURS in number -- Кол-во часов
|
NHOURS in number -- Кол-во часов
|
||||||
) return varchar2;
|
) return varchar2; -- Результат работы
|
||||||
|
|
||||||
|
/* Отбор документов (ТОиР или Графики ремонтов) по дате */
|
||||||
|
procedure SELECT_EQUIPSRV
|
||||||
|
(
|
||||||
|
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
||||||
|
SPRODOBJ in varchar2, -- Производственный объект
|
||||||
|
STECHSERV in varchar2 := null, -- Техническая служба
|
||||||
|
SRESPDEP in varchar2 := null, -- Ответственное подразделение
|
||||||
|
STECHNAME in varchar2, -- Наименование объекта ремонта
|
||||||
|
SSRVKIND in varchar2, -- Код вида ремонта
|
||||||
|
NYEAR in number, -- Год
|
||||||
|
NMONTH in number, -- Месяц
|
||||||
|
NDAY in number := null, -- День
|
||||||
|
NWORKTYPE in number, -- Тип работы (0 - план, 1 - факт)
|
||||||
|
NIDENT out number -- Идентификатор буфера подобранных (списка отмеченных записей, null - не найдено)
|
||||||
|
);
|
||||||
|
|
||||||
/* Выполнение работ по ТОиР */
|
/* Выполнение работ по ТОиР */
|
||||||
procedure EQUIPSRV_GRID
|
procedure EQUIPSRV_GRID
|
||||||
(
|
(
|
||||||
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
||||||
SPRODOBJ in varchar2, -- Производственный объект
|
SPRODOBJ in varchar2, -- Производственный объект
|
||||||
STECHSERV in varchar2, -- Техническая служба
|
STECHSERV in varchar2 := null, -- Техническая служба
|
||||||
SRESPDEP in varchar2, -- Ответственное подразделение
|
SRESPDEP in varchar2 := null, -- Ответственное подразделение
|
||||||
NFROMMONTH in number, -- Месяц начала периода
|
NFROMMONTH in number, -- Месяц начала периода
|
||||||
NFROMYEAR in number, -- Год начала периода
|
NFROMYEAR in number, -- Год начала периода
|
||||||
NTOMONTH in number, -- Месяц окончания периода
|
NTOMONTH in number, -- Месяц окончания периода
|
||||||
NTOYEAR in number, -- Год окончания периода
|
NTOYEAR in number, -- Год окончания периода
|
||||||
COUT out clob -- График проектов
|
COUT out clob -- График проектов
|
||||||
);
|
);
|
||||||
|
|
||||||
end PKG_P8PANELS_EQUIPSRV;
|
end PKG_P8PANELS_EQUIPSRV;
|
||||||
/
|
/
|
||||||
create or replace package body PKG_P8PANELS_EQUIPSRV as
|
create or replace package body PKG_P8PANELS_EQUIPSRV as
|
||||||
|
|
||||||
/* Получение значения системного параметра "JuridicalPerson" */
|
/* Получение параметров фильтра по умолчанию */
|
||||||
procedure GET_JUR_PERS_PRM
|
procedure GET_DEFAULT_FP
|
||||||
(
|
(
|
||||||
CRES out clob -- Значение параметра "JuridicalPerson" (null - если не нашли)
|
COUT out clob -- XML с параметрами фильтра по умолчанию
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
SPARAMCODE PKG_STD.TSTRING := 'JuridicalPerson'; -- Код параметра
|
SJUR_PERS PKG_STD.TSTRING := null; -- Юр. лицо (наименование)
|
||||||
|
NJUR_PERS PKG_STD.TREF := null; -- Юр. лицо (идентификатор)
|
||||||
begin
|
begin
|
||||||
CRES := GET_OPTIONS_STR(SCODE => SPARAMCODE,
|
/* Находим юр. лицо */
|
||||||
NCOMP_VERS => NCOMPANY);
|
FIND_JURPERSONS_MAIN(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, SJUR_PERS => SJUR_PERS, NJUR_PERS => NJUR_PERS);
|
||||||
if (CRES is null) then
|
/* Формируем XML */
|
||||||
P_EXCEPTION(0, 'Пользовательский параметр не указан.');
|
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||||
end if;
|
PKG_XFAST.DOWN_NODE(SNAME => 'DATA');
|
||||||
end GET_JUR_PERS_PRM;
|
PKG_XFAST.DOWN_NODE(SNAME => 'JURPERS');
|
||||||
|
PKG_XFAST.VALUE(SVALUE => SJUR_PERS);
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => 'MONTH');
|
||||||
|
PKG_XFAST.VALUE(NVALUE => EXTRACT(month from sysdate));
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
PKG_XFAST.DOWN_NODE(SNAME => 'YEAR');
|
||||||
|
PKG_XFAST.VALUE(NVALUE => EXTRACT(year from sysdate));
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
PKG_XFAST.UP();
|
||||||
|
/* Сериализуем в clob */
|
||||||
|
COUT := PKG_XFAST.SERIALIZE_TO_CLOB();
|
||||||
|
PKG_XFAST.EPILOGUE();
|
||||||
|
end GET_DEFAULT_FP;
|
||||||
|
|
||||||
/* Формирование строки с кол-вом часов */
|
/* Формирование строки с кол-вом часов */
|
||||||
function HOURS_STR
|
function HOURS_STR
|
||||||
@ -50,28 +82,136 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
NHOURS in number -- Кол-во часов
|
NHOURS in number -- Кол-во часов
|
||||||
) return varchar2 -- Строка с кол-вом часов
|
) return varchar2 -- Строка с кол-вом часов
|
||||||
is
|
is
|
||||||
SRESULT PKG_STD.tSTRING; -- Строка результат
|
SRESULT PKG_STD.TSTRING; -- Строка результат
|
||||||
begin
|
begin
|
||||||
if (MOD(NHOURS, 10) = 1 and MOD(NHOURS, 100) != 11) then
|
if ((mod(NHOURS, 10) = 1) and (mod(NHOURS, 100) != 11)) then
|
||||||
SRESULT := NHOURS || ' час';
|
SRESULT := NHOURS || ' час';
|
||||||
elsif ((MOD(NHOURS, 10) = 2 and MOD(NHOURS, 100) != 12)
|
elsif (((mod(NHOURS, 10) = 2) and (mod(NHOURS, 100) != 12)) or ((mod(NHOURS, 10) = 3) and (mod(NHOURS, 100) != 13)) or
|
||||||
or (MOD(NHOURS, 10) = 3 and MOD(NHOURS, 100) != 13)
|
((mod(NHOURS, 10) = 4) and (mod(NHOURS, 100) != 14))) then
|
||||||
or (MOD(NHOURS, 10) = 4 and MOD(NHOURS, 100) != 14)) then
|
|
||||||
SRESULT := NHOURS || ' часа';
|
SRESULT := NHOURS || ' часа';
|
||||||
else
|
else
|
||||||
SRESULT := NHOURS || ' часов';
|
SRESULT := NHOURS || ' часов';
|
||||||
end if;
|
end if;
|
||||||
/* Возвращаем результат */
|
|
||||||
return SRESULT;
|
return SRESULT;
|
||||||
end HOURS_STR;
|
end HOURS_STR;
|
||||||
|
|
||||||
|
/* Отбор документов (ТОиР или Графики ремонтов) по дате */
|
||||||
|
procedure SELECT_EQUIPSRV
|
||||||
|
(
|
||||||
|
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
||||||
|
SPRODOBJ in varchar2, -- Производственный объект
|
||||||
|
STECHSERV in varchar2 := null, -- Техническая служба
|
||||||
|
SRESPDEP in varchar2 := null, -- Ответственное подразделение
|
||||||
|
STECHNAME in varchar2, -- Наименование объекта ремонта
|
||||||
|
SSRVKIND in varchar2, -- Код вида ремонта
|
||||||
|
NYEAR in number, -- Год
|
||||||
|
NMONTH in number, -- Месяц
|
||||||
|
NDAY in number := null, -- День
|
||||||
|
NWORKTYPE in number, -- Тип работы (0 - план, 1 - факт)
|
||||||
|
NIDENT out number -- Идентификатор буфера подобранных (списка отмеченных записей, null - не найдено)
|
||||||
|
)
|
||||||
|
is
|
||||||
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
|
NSELECTLIST PKG_STD.TREF; -- Рег. номер добавленной записи буфера подобранных
|
||||||
|
SDATE PKG_STD.TSTRING; -- Строка даты
|
||||||
|
begin
|
||||||
|
/* Проверка на дату с днём */
|
||||||
|
if (NDAY is not null) then
|
||||||
|
SDATE := LPAD(TO_CHAR(NDAY), 2, '0') || '.' || LPAD(TO_CHAR(NMONTH), 2, '0') || '.' || NYEAR;
|
||||||
|
else
|
||||||
|
SDATE := LPAD(TO_CHAR(NMONTH), 2, '0') || '.' || NYEAR;
|
||||||
|
end if;
|
||||||
|
/* Если графики ТОиР */
|
||||||
|
if (NWORKTYPE = 0) then
|
||||||
|
for C in (select T.RN,
|
||||||
|
T.COMPANY
|
||||||
|
from EQTCHSRV T,
|
||||||
|
JURPERSONS J,
|
||||||
|
EQTECSRVKIND SK,
|
||||||
|
EQCONFIG C1,
|
||||||
|
EQCONFIG C2,
|
||||||
|
INS_DEPARTMENT DS,
|
||||||
|
INS_DEPARTMENT DR
|
||||||
|
where T.STATE in (1, 2)
|
||||||
|
and T.COMPANY = NCOMPANY
|
||||||
|
and T.JUR_PERS = J.RN
|
||||||
|
and J.CODE = SBELONG
|
||||||
|
and T.EQCONFIG = C1.RN
|
||||||
|
and C1.CODE = SPRODOBJ
|
||||||
|
and T.DEPTTCSRV = DS.RN
|
||||||
|
and (DS.CODE = STECHSERV or STECHSERV is null)
|
||||||
|
and T.DEPTRESP = DR.RN
|
||||||
|
and (DR.CODE = SRESPDEP or SRESPDEP is null)
|
||||||
|
and T.EQCONFIG_TECH = C2.RN
|
||||||
|
and C2.NAME = STECHNAME
|
||||||
|
and T.EQTECSRVKIND = SK.RN
|
||||||
|
and SK.CODE = SSRVKIND
|
||||||
|
and ((NDAY is not null and TO_DATE(SDATE, 'dd.mm.yyyy') between TRUNC(T.DATEPRD_BEG) and
|
||||||
|
TRUNC(T.DATEPRD_END)) or (NDAY is null and (SDATE = TO_CHAR(T.DATEPRD_BEG, 'mm.yyyy') or
|
||||||
|
SDATE = TO_CHAR(T.DATEPRD_END, 'mm.yyyy')))))
|
||||||
|
loop
|
||||||
|
/* Сформируем идентификатор буфера */
|
||||||
|
if (NIDENT is null) then
|
||||||
|
NIDENT := GEN_IDENT();
|
||||||
|
end if;
|
||||||
|
/* Добавим подобранное в список отмеченных записей */
|
||||||
|
P_SELECTLIST_BASE_INSERT(NIDENT => NIDENT,
|
||||||
|
NCOMPANY => C.COMPANY,
|
||||||
|
NDOCUMENT => C.RN,
|
||||||
|
SUNITCODE => 'EquipTechServices',
|
||||||
|
SACTIONCODE => null,
|
||||||
|
NCRN => null,
|
||||||
|
NDOCUMENT1 => null,
|
||||||
|
SUNITCODE1 => null,
|
||||||
|
SACTIONCODE1 => null,
|
||||||
|
NRN => NSELECTLIST);
|
||||||
|
end loop;
|
||||||
|
/* Иначе ремонтные ведомости */
|
||||||
|
else
|
||||||
|
for C in (select T.RN,
|
||||||
|
T.COMPANY
|
||||||
|
from EQRPSHEETS T,
|
||||||
|
JURPERSONS J,
|
||||||
|
EQTECSRVKIND SK,
|
||||||
|
EQCONFIG C
|
||||||
|
where T.STATE in (0, 2, 3)
|
||||||
|
and T.COMPANY = NCOMPANY
|
||||||
|
and T.JURPERSONS = J.RN
|
||||||
|
and J.CODE = SBELONG
|
||||||
|
and T.EQCONFIG = C.RN
|
||||||
|
and C.NAME = STECHNAME
|
||||||
|
and T.TECSRVKIND = SK.RN
|
||||||
|
and SK.CODE = SSRVKIND
|
||||||
|
and ((NDAY is not null and TO_DATE(SDATE, 'dd.mm.yyyy') between TRUNC(T.DATEFACT_BEG) and
|
||||||
|
TRUNC(T.DATEFACT_END)) or (NDAY is null and (SDATE = TO_CHAR(T.DATEFACT_BEG, 'mm.yyyy') or
|
||||||
|
SDATE = TO_CHAR(T.DATEFACT_END, 'mm.yyyy')))))
|
||||||
|
loop
|
||||||
|
/* Сформируем идентификатор буфера */
|
||||||
|
if (NIDENT is null) then
|
||||||
|
NIDENT := GEN_IDENT();
|
||||||
|
end if;
|
||||||
|
/* Добавим подобранное в список отмеченных записей */
|
||||||
|
P_SELECTLIST_BASE_INSERT(NIDENT => NIDENT,
|
||||||
|
NCOMPANY => C.COMPANY,
|
||||||
|
NDOCUMENT => C.RN,
|
||||||
|
SUNITCODE => 'EquipRepairSheets',
|
||||||
|
SACTIONCODE => null,
|
||||||
|
NCRN => null,
|
||||||
|
NDOCUMENT1 => null,
|
||||||
|
SUNITCODE1 => null,
|
||||||
|
SACTIONCODE1 => null,
|
||||||
|
NRN => NSELECTLIST);
|
||||||
|
end loop;
|
||||||
|
end if;
|
||||||
|
end SELECT_EQUIPSRV;
|
||||||
|
|
||||||
/* Выполнение работ по ТОиР */
|
/* Выполнение работ по ТОиР */
|
||||||
procedure EQUIPSRV_GRID
|
procedure EQUIPSRV_GRID
|
||||||
(
|
(
|
||||||
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
SBELONG in varchar2, -- Принадлежность к Юр. лицу
|
||||||
SPRODOBJ in varchar2, -- Производственный объект
|
SPRODOBJ in varchar2, -- Производственный объект
|
||||||
STECHSERV in varchar2, -- Техническая служба
|
STECHSERV in varchar2 := null, -- Техническая служба
|
||||||
SRESPDEP in varchar2, -- Ответственное подразделение
|
SRESPDEP in varchar2 := null, -- Ответственное подразделение
|
||||||
NFROMMONTH in number, -- Месяц начала периода
|
NFROMMONTH in number, -- Месяц начала периода
|
||||||
NFROMYEAR in number, -- Год начала периода
|
NFROMYEAR in number, -- Год начала периода
|
||||||
NTOMONTH in number, -- Месяц окончания периода
|
NTOMONTH in number, -- Месяц окончания периода
|
||||||
@ -86,41 +226,36 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
RDG_ROW0 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы0
|
RDG_ROW0 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы0
|
||||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
||||||
RDG_ROW2 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы2
|
RDG_ROW2 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы2
|
||||||
NCURYEAR PKG_STD.tNUMBER; -- Текущий год
|
NCURYEAR PKG_STD.TNUMBER; -- Текущий год
|
||||||
NCURMONTH PKG_STD.tNUMBER; -- Текущий месяц
|
NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц
|
||||||
NTOTALDAYS PKG_STD.tNUMBER; -- Дней в текущем месяце
|
NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце
|
||||||
SCURTECHOBJ PKG_STD.TSTRING := null; -- Текущий технический объект
|
SCURTECHOBJ PKG_STD.TSTRING := null; -- Текущий технический объект
|
||||||
SCURTSKCODE PKG_STD.TSTRING := null; -- Текущий вид ремонта
|
SCURTSKCODE PKG_STD.TSTRING := null; -- Текущий вид ремонта
|
||||||
NFROMDATE date := TO_DATE('01.'
|
NFROMDATE PKG_STD.TLDATE; -- Дата начала периода
|
||||||
|| LPAD(TO_CHAR(NFROMMONTH), 2, '0')
|
NTODATE PKG_STD.TLDATE; -- Дата конца периода
|
||||||
|| '.' || TO_CHAR(NFROMYEAR),
|
NMS PKG_STD.TNUMBER; -- Месяц начала в цикле года
|
||||||
'dd.mm.yyyy'); -- Дата начала периода
|
NME PKG_STD.TNUMBER; -- Месяц окончания в цикле года
|
||||||
NTODATE date := LAST_DAY(TO_DATE('01.'
|
NYEAR_PLAN PKG_STD.TNUMBER; -- Год план
|
||||||
|| LPAD(TO_CHAR(NTOMONTH), 2, '0')
|
NMONTH_PLAN PKG_STD.TNUMBER; -- Месяц план
|
||||||
|| '.' || TO_CHAR(NTOYEAR),
|
NDAY_PLAN PKG_STD.TNUMBER; -- День план
|
||||||
'dd.mm.yyyy')); -- Дата конца периода
|
NYEAR_FACT PKG_STD.TNUMBER; -- Год факт
|
||||||
NMS PKG_STD.tNUMBER; -- Месяц начала в цикле года
|
NMONTH_FACT PKG_STD.TNUMBER; -- Месяц факт
|
||||||
NME PKG_STD.tNUMBER; -- Месяц окончания в цикле года
|
NDAY_FACT PKG_STD.TNUMBER; -- День факт
|
||||||
NYEAR_PLAN PKG_STD.tNUMBER; -- Год план
|
|
||||||
NMONTH_PLAN PKG_STD.tNUMBER; -- Месяц план
|
|
||||||
NDAY_PLAN PKG_STD.tNUMBER; -- День план
|
|
||||||
NYEAR_FACT PKG_STD.tNUMBER; -- Год факт
|
|
||||||
NMONTH_FACT PKG_STD.tNUMBER; -- Месяц факт
|
|
||||||
NDAY_FACT PKG_STD.tNUMBER; -- День факт
|
|
||||||
SPERIODNAME PKG_STD.TSTRING; -- Имя периода
|
SPERIODNAME PKG_STD.TSTRING; -- Имя периода
|
||||||
SFACT_CLR PKG_STD.TSTRING; -- Цвет закрашивания фактических дат
|
SFACT_CLR PKG_STD.TSTRING; -- Цвет закрашивания фактических дат
|
||||||
NROWS PKG_STD.tNUMBER := 0; -- Кол-во строк в курсоре
|
NROWS PKG_STD.TNUMBER := 0; -- Кол-во строк в курсоре
|
||||||
NWORKPERDAY PKG_STD.tNUMBER(17,2) := null; -- Работы в день
|
NWORKPERDAY PKG_STD.TNUMBER(17,2) := null; -- Работы в день
|
||||||
CR PKG_STD.TSTRING;
|
SGROUP_FILLED PKG_STD.TLSTRING; -- Группы, заполненные строками план/факт
|
||||||
SGROUP_FILLED PKG_STD.tLSTRING; -- Группы, заполненные строками план/факт
|
SCOLS PKG_STD.TLSTRING; -- Заполнение периодов работ
|
||||||
SCOLS PKG_STD.tLSTRING; -- Заполнение периодов работ
|
YM PKG_CONTVALLOC1S.TCONTAINER; -- Коллекция для подсчёта работ за месяц
|
||||||
YM PKG_CONTVALLOC1S.tCONTAINER; -- Коллекция для подсчёта работ за месяц
|
MCLR PKG_CONTVALLOC1S.TCONTAINER; -- Коллекция для закрашивания месяцев
|
||||||
MCLR PKG_CONTVALLOC1S.tCONTAINER; -- Коллекция для закрашивания месяцев
|
CR PKG_STD.TSTRING; -- Текущий ключ коллекции MCLR
|
||||||
|
|
||||||
|
/* Курсор с работами ТОиР */
|
||||||
cursor C1 is
|
cursor C1 is
|
||||||
select TT.NEQV_RN,
|
select TT.NEQV_RN,
|
||||||
TT.NEQS_RN,
|
TT.NEQS_RN,
|
||||||
TT.NWRK_RN NRN,
|
TT.NWRK_RN NRN,
|
||||||
TT.COMPANY NCOMPANY,
|
TT.COMPANY NCOMPANY,
|
||||||
TT.NAME_WORK SWORKNAME,
|
TT.NAME_WORK SWORKNAME,
|
||||||
EC2.CODE STECHOBJCODE,
|
EC2.CODE STECHOBJCODE,
|
||||||
@ -135,63 +270,60 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
EQJ.DATEFACT_END DDATEFACTEND,
|
EQJ.DATEFACT_END DDATEFACTEND,
|
||||||
EK.CODE STECSRVKINDCODE,
|
EK.CODE STECSRVKINDCODE,
|
||||||
EK.NAME STECSRVKINDNAME,
|
EK.NAME STECSRVKINDNAME,
|
||||||
coalesce(EW.NSUM,
|
COALESCE(EW.NSUM, (TT.DATEPRD_END - TT.DATEPRD_BEG) * 24) NSUMWORKPLAN,
|
||||||
(TT.DATEPRD_END - TT.DATEPRD_BEG) * 24) NSUMWORKPLAN,
|
COALESCE(EWJ.NSUMF, (EQJ.DATEFACT_END - EQJ.DATEFACT_BEG) * 24) NSUMWORKFACT
|
||||||
coalesce(EWJ.NSUMF,
|
from (select B.*,
|
||||||
(EQJ.DATEFACT_END - EQJ.DATEFACT_BEG) * 24) NSUMWORKFACT
|
C.RN NWRK_RN,
|
||||||
from
|
C.PRN NWRK_PRN,
|
||||||
(select B.*,
|
C.NAME_WORK,
|
||||||
C.RN nWRK_RN,
|
C.DATEPLAN_BEG,
|
||||||
C.PRN nWRK_PRN,
|
C.DATEPLAN_END,
|
||||||
C.NAME_WORK,
|
C.TECSRVKIND,
|
||||||
C.DATEPLAN_BEG,
|
C.EQCONFIG,
|
||||||
C.DATEPLAN_END,
|
C.DEPTPERF,
|
||||||
C.TECSRVKIND,
|
C.DEPTTCSRV,
|
||||||
C.EQCONFIG,
|
C.RESP_AGN
|
||||||
C.DEPTPERF,
|
from (select EQV.RN NEQV_RN,
|
||||||
C.DEPTTCSRV,
|
EQV.COMPANY,
|
||||||
C.RESP_AGN
|
EQV.JUR_PERS,
|
||||||
from (select EQV.RN nEQV_RN,
|
EQV.STATE,
|
||||||
EQV.COMPANY,
|
EQV.DATEPRD_BEG,
|
||||||
EQV.JUR_PERS,
|
EQV.DATEPRD_END,
|
||||||
EQV.STATE,
|
EQS.RN NEQS_RN
|
||||||
EQV.DATEPRD_BEG,
|
from EQTCHSRV EQV,
|
||||||
EQV.DATEPRD_END,
|
DOCLINKS DL,
|
||||||
EQS.RN nEQS_RN
|
EQRPSHEETS EQS
|
||||||
from EQTCHSRV EQV, -- Графики ТОиР
|
where EQV.RN = DL.IN_DOCUMENT(+)
|
||||||
DOCLINKS DL,
|
and DL.OUT_UNITCODE(+) = 'EquipRepairSheets'
|
||||||
EQRPSHEETS EQS -- Ремонтные ведомости
|
and DL.OUT_DOCUMENT = EQS.RN(+)) B,
|
||||||
where EQV.RN = DL.IN_DOCUMENT (+)
|
|
||||||
and DL.OUT_UNITCODE (+) = 'EquipRepairSheets'
|
|
||||||
and DL.OUT_DOCUMENT = EQS.RN (+)) B,
|
|
||||||
EQTCHSRWRK C
|
EQTCHSRWRK C
|
||||||
where B.nEQV_RN = C.PRN (+)
|
where B.NEQV_RN = C.PRN(+)
|
||||||
union all
|
union all
|
||||||
select B.*,
|
select B.*,
|
||||||
C.RN nWRK_RN,
|
C.RN NWRK_RN,
|
||||||
C.PRN nWRK_PRN,
|
C.PRN NWRK_PRN,
|
||||||
C.NAME_WORK,
|
C.NAME_WORK,
|
||||||
C.DATEPLAN_BEG,
|
C.DATEPLAN_BEG,
|
||||||
C.DATEPLAN_END,
|
C.DATEPLAN_END,
|
||||||
C.TECSRVKIND,
|
C.TECSRVKIND,
|
||||||
C.EQCONFIG,
|
C.EQCONFIG,
|
||||||
C.DEPTPERF,
|
C.DEPTPERF,
|
||||||
null DEPTTCSRV,
|
null DEPTTCSRV,
|
||||||
C.RESP_AGN
|
C.RESP_AGN
|
||||||
from (select null nEQV_RN,
|
from (select null NEQV_RN,
|
||||||
EQS.COMPANY,
|
EQS.COMPANY,
|
||||||
EQS.JURPERSONS JUR_PERS,
|
EQS.JURPERSONS JUR_PERS,
|
||||||
EQS.STATE,
|
EQS.STATE,
|
||||||
EQS.DATEPLAN_BEG,
|
EQS.DATEPLAN_BEG,
|
||||||
EQS.DATEPLAN_END,
|
EQS.DATEPLAN_END,
|
||||||
EQS.RN nEQS_RN
|
EQS.RN NEQS_RN
|
||||||
from EQRPSHEETS EQS -- Ремонтные ведомости
|
from EQRPSHEETS EQS
|
||||||
where not exists (select 1
|
where not exists (select 1
|
||||||
from DOCLINKS DL
|
from DOCLINKS DL
|
||||||
where DL.OUT_DOCUMENT = EQS.RN
|
where DL.OUT_DOCUMENT = EQS.RN
|
||||||
and DL.IN_UNITCODE = 'EquipTechServices')) B,
|
and DL.IN_UNITCODE = 'EquipTechServices')) B,
|
||||||
EQRPSHWRK C
|
EQRPSHWRK C
|
||||||
where B.nEQS_RN = C.PRN (+)) TT,
|
where B.NEQS_RN = C.PRN(+)) TT,
|
||||||
EQTECSRVKIND EK,
|
EQTECSRVKIND EK,
|
||||||
JURPERSONS JP,
|
JURPERSONS JP,
|
||||||
EQCONFIG EC1,
|
EQCONFIG EC1,
|
||||||
@ -200,49 +332,55 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
INS_DEPARTMENT DR,
|
INS_DEPARTMENT DR,
|
||||||
DOCLINKS DL,
|
DOCLINKS DL,
|
||||||
EQTECSRVJRNL EQJ,
|
EQTECSRVJRNL EQJ,
|
||||||
(select t.prn,
|
(select T.PRN,
|
||||||
sum(t.Worktimeplan * t.perform_quant) NSUM
|
sum(T.WORKTIMEPLAN * T.PERFORM_QUANT) NSUM
|
||||||
from EQTCHSRWRC t
|
from EQTCHSRWRC T
|
||||||
group by t.prn) EW,
|
group by T.PRN) EW,
|
||||||
(select t.prn,
|
(select T.PRN,
|
||||||
sum(t.worktimefact * t.quantfact) NSUMF
|
sum(T.WORKTIMEFACT * T.QUANTFACT) NSUMF
|
||||||
from EQTCHSRJRNLWRC t
|
from EQTCHSRJRNLWRC T
|
||||||
group by t.prn) EWJ
|
group by T.PRN) EWJ
|
||||||
where TT.COMPANY = NCOMPANY
|
where TT.COMPANY = NCOMPANY
|
||||||
and ((TT.state in (1,2) and nEQV_RN is not null) or (TT.state in (0,2,3) and nEQV_RN is null))
|
and ((TT.STATE in (1, 2) and NEQV_RN is not null) or (TT.STATE in (0, 2, 3) and NEQV_RN is null))
|
||||||
and TT.DATEPRD_BEG >= NFROMDATE
|
and TT.DATEPRD_BEG >= NFROMDATE
|
||||||
and TT.DATEPRD_END <= NTODATE
|
and TT.DATEPRD_END <= NTODATE
|
||||||
and JP.CODE = SBELONG
|
and JP.CODE = SBELONG
|
||||||
and EC1.CODE = SPRODOBJ
|
and EC1.CODE = SPRODOBJ
|
||||||
and (DS.CODE = STECHSERV or STECHSERV is null)
|
and (DS.CODE = STECHSERV or STECHSERV is null)
|
||||||
and (DR.CODE = SRESPDEP or SRESPDEP is null)
|
and (DR.CODE = SRESPDEP or SRESPDEP is null)
|
||||||
and TT.EQCONFIG = EC2.RN (+)
|
and TT.EQCONFIG = EC2.RN(+)
|
||||||
and TT.DEPTPERF = DR.RN (+)
|
and TT.DEPTPERF = DR.RN(+)
|
||||||
and TT.DEPTTCSRV = DS.RN (+)
|
and TT.DEPTTCSRV = DS.RN(+)
|
||||||
and TT.NWRK_RN = EW.PRN (+)
|
and TT.NWRK_RN = EW.PRN(+)
|
||||||
and EQJ.RN = EWJ.PRN (+)
|
and EQJ.RN = EWJ.PRN(+)
|
||||||
and TT.TECSRVKIND = EK.RN (+)
|
and TT.TECSRVKIND = EK.RN(+)
|
||||||
and TT.NWRK_RN = DL.IN_DOCUMENT (+)
|
and TT.NWRK_RN = DL.IN_DOCUMENT(+)
|
||||||
and ((DL.OUT_UNITCODE = 'EquipTechServiceJournal' and DL.RN is not null) or (DL.OUT_UNITCODE is null and DL.RN is null))
|
and ((DL.OUT_UNITCODE = 'EquipTechServiceJournal' and DL.RN is not null) or
|
||||||
and DL.OUT_DOCUMENT = EQJ.RN (+)
|
(DL.OUT_UNITCODE is null and DL.RN is null))
|
||||||
order by EC2.NAME, EK.CODE;
|
and DL.OUT_DOCUMENT = EQJ.RN(+)
|
||||||
|
order by EC2.NAME,
|
||||||
|
EK.CODE;
|
||||||
begin
|
begin
|
||||||
|
/* Определим дату начала периода */
|
||||||
|
NFROMDATE := TO_DATE('01.' || LPAD(TO_CHAR(NFROMMONTH), 2, '0') || '.' || TO_CHAR(NFROMYEAR), 'dd.mm.yyyy');
|
||||||
|
/* Определим дату конца периода */
|
||||||
|
NTODATE := LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(NTOMONTH), 2, '0') || '.' || TO_CHAR(NTOYEAR), 'dd.mm.yyyy'));
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
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,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'STEST',
|
SNAME => 'STEST',
|
||||||
SCAPTION => 'ТЕСТ',
|
SCAPTION => 'ТЕСТ',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SINFO',
|
SNAME => 'SINFO',
|
||||||
SCAPTION => 'Информация',
|
SCAPTION => 'Объект ремонта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR);
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SINFO2',
|
SNAME => 'SINFO2',
|
||||||
SCAPTION => 'Объект ремонта',
|
SCAPTION => 'Объект ремонта',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SPARENT => 'SINFO');
|
SPARENT => 'SINFO');
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NRN',
|
SNAME => 'NRN',
|
||||||
SCAPTION => 'Рег. номер',
|
SCAPTION => 'Рег. номер',
|
||||||
@ -317,15 +455,15 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
SNAME => 'STECSRVKINDNAME',
|
SNAME => 'STECSRVKINDNAME',
|
||||||
SCAPTION => 'Наименование типа работы',
|
SCAPTION => 'Наименование типа работы',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Очистка коллекций */
|
/* Очистка коллекций */
|
||||||
PKG_CONTVALLOC1S.PURGE(YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
PKG_CONTVALLOC1S.PURGE(MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
|
/* Текущий год */
|
||||||
NCURYEAR := EXTRACT(year from sysdate);
|
NCURYEAR := EXTRACT(year from sysdate);
|
||||||
NCURMONTH := EXTRACT(month from sysdate);
|
/* Текущий месяц */
|
||||||
|
NCURMONTH := EXTRACT(month from sysdate);
|
||||||
/* Цикл по годам периода */
|
/* Цикл по годам периода */
|
||||||
for Y in NFROMYEAR .. NTOYEAR
|
for Y in NFROMYEAR .. NTOYEAR
|
||||||
loop
|
loop
|
||||||
if (NFROMYEAR = NTOYEAR) then
|
if (NFROMYEAR = NTOYEAR) then
|
||||||
@ -335,220 +473,249 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
if (Y = NFROMYEAR) then
|
if (Y = NFROMYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (NFROMYEAR < Y and Y < NTOYEAR) then
|
elsif ((NFROMYEAR < Y) and (Y < NTOYEAR)) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (Y = NTOYEAR) then
|
elsif (Y = NTOYEAR) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := NTOMONTH;
|
NME := NTOMONTH;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
/* Цикл по месяцам года */
|
/* Цикл по месяцам года */
|
||||||
for M in NMS .. NME
|
for M in NMS .. NME
|
||||||
loop
|
loop
|
||||||
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_P', NVALUE => 0);
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_P', 0);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_F', NVALUE => 0);
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_F', 0);
|
/* Находим текущий месяц и делаем его развёрнутым по дням */
|
||||||
|
if ((Y = NCURYEAR) and (M = NCURMONTH)) then
|
||||||
if (Y = NCURYEAR and M = NCURMONTH) then
|
|
||||||
BEXPANDED := true;
|
BEXPANDED := true;
|
||||||
else
|
else
|
||||||
BEXPANDED := false;
|
BEXPANDED := false;
|
||||||
end if;
|
end if;
|
||||||
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M),
|
||||||
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M),
|
SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y),
|
||||||
SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y),
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
|
||||||
BEXPANDABLE => true,
|
BEXPANDABLE => true,
|
||||||
BEXPANDED => BEXPANDED);
|
BEXPANDED => BEXPANDED);
|
||||||
NTOTALDAYS := to_number(to_char(LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y), 'dd.mm.yyyy')),'dd'), '99');
|
/* Подсчёт кол-ва дней в месяце */
|
||||||
|
NTOTALDAYS := TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y),
|
||||||
|
'dd.mm.yyyy')),
|
||||||
|
'dd'),
|
||||||
|
'99');
|
||||||
/* Цикл по дням месяца */
|
/* Цикл по дням месяца */
|
||||||
for D in 1 .. NTOTALDAYS
|
for D in 1 .. NTOTALDAYS
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' || TO_CHAR(D),
|
SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' ||
|
||||||
|
TO_CHAR(D),
|
||||||
SCAPTION => TO_CHAR(D, '99'),
|
SCAPTION => TO_CHAR(D, '99'),
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M));
|
SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M));
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
|
/* Подсчёт кол-ва записей в курсоре */
|
||||||
/* Подсчёт кол-ва записей в курсоре */
|
|
||||||
for Q1 in C1
|
for Q1 in C1
|
||||||
loop
|
loop
|
||||||
NROWS := NROWS + 1;
|
NROWS := NROWS + 1;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
/* Цикл по курсору */
|
/* Цикл по курсору */
|
||||||
for QQ in C1
|
for QQ in C1
|
||||||
loop
|
loop
|
||||||
NROWS := NROWS - 1;
|
NROWS := NROWS - 1;
|
||||||
if (SCURTECHOBJ != QQ.STECHOBJNAME or SCURTECHOBJ is null) then
|
/* Если новый объект ремонта */
|
||||||
|
if ((SCURTECHOBJ != QQ.STECHOBJNAME) or (SCURTECHOBJ is null)) then
|
||||||
|
/* Если строка с трудоёмкостью по объекту ремонта сформирована */
|
||||||
if (RDG_ROW0.RCOLS is not null) then
|
if (RDG_ROW0.RCOLS is not null) then
|
||||||
/* Цикл по годам периода */
|
/* Цикл по годам периода */
|
||||||
for Y in NFROMYEAR .. NTOYEAR
|
for Y in NFROMYEAR .. NTOYEAR
|
||||||
loop
|
loop
|
||||||
|
/* Если отчёт в пределах года */
|
||||||
if (NFROMYEAR = NTOYEAR) then
|
if (NFROMYEAR = NTOYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
NME := NTOMONTH;
|
NME := NTOMONTH;
|
||||||
|
/* Иначе вычисляем кол-во месяцев в каждом году периода отчёта*/
|
||||||
else
|
else
|
||||||
if (Y = NFROMYEAR) then
|
if (Y = NFROMYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (NFROMYEAR < Y and Y < NTOYEAR) then
|
elsif ((NFROMYEAR < Y) and (Y < NTOYEAR)) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (Y = NTOYEAR) then
|
elsif (Y = NTOYEAR) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := NTOMONTH;
|
NME := NTOMONTH;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
/* Цикл по месяцам года, заполнение трудоёмкости с привязкой к месяцу */
|
||||||
/* Цикл по месяцам года */
|
|
||||||
for M in NMS .. NME
|
for M in NMS .. NME
|
||||||
loop
|
loop
|
||||||
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0,
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_P')) || ' факт: ' || HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F')));
|
SVALUE => 'план: ' ||
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, SPERIODNAME || '_P', 0);
|
HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_P')) ||
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, SPERIODNAME || '_F', 0);
|
' факт: ' ||
|
||||||
end loop;
|
HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F')));
|
||||||
|
/* Добавление в коллекцию трудоёмкость план */
|
||||||
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0);
|
||||||
|
/* Добавление в коллекцию трудоёмкость факт */
|
||||||
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_F', NVALUE => 0);
|
||||||
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
|
/* Добавление строки с трудоёмкостью */
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW0);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW0);
|
||||||
end if;
|
end if;
|
||||||
SCURTECHOBJ := QQ.STECHOBJNAME;
|
/* Добавление группы с объектом ремонта */
|
||||||
|
SCURTECHOBJ := QQ.STECHOBJNAME;
|
||||||
SPRJ_GROUP_NAME := SCURTECHOBJ;
|
SPRJ_GROUP_NAME := SCURTECHOBJ;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SPRJ_GROUP_NAME,
|
SNAME => SPRJ_GROUP_NAME,
|
||||||
SCAPTION => QQ.STECHOBJNAME,
|
SCAPTION => QQ.STECHOBJNAME,
|
||||||
BEXPANDABLE => false);
|
BEXPANDABLE => false);
|
||||||
RDG_ROW0 := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW0 := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0, SNAME => 'STEST', SVALUE => SCURTECHOBJ);
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0, SNAME => 'STEST', SVALUE => SCURTECHOBJ);
|
||||||
end if;
|
end if;
|
||||||
/* Формируем имя группы для вида ремонта */
|
/* Формируем имя группы для вида ремонта */
|
||||||
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
||||||
/* Если по данной группе еще нет строк плана и факта */
|
/* Если по данной группе еще нет строк плана и факта */
|
||||||
if (STRIN(sSUBSTR => SCURTSKCODE, sSOURCE => SGROUP_FILLED, sDELIM => ';') = 0) then
|
if (STRIN(SSUBSTR => SCURTSKCODE, SSOURCE => SGROUP_FILLED, SDELIM => ';') = 0) then
|
||||||
/* Добавляем строку плана */
|
/* Добавляем строку плана */
|
||||||
if (RDG_ROW.RCOLS is not null) then
|
if (RDG_ROW.RCOLS is not null) then
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
end if;
|
end if;
|
||||||
/* Добавляем строку факта */
|
/* Добавляем строку факта */
|
||||||
if (RDG_ROW2.RCOLS is not null) then
|
if (RDG_ROW2.RCOLS is not null) then
|
||||||
CR := PKG_CONTVALLOC1S.FIRST_(MCLR);
|
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
||||||
/* Цикл по коллекции для закрашивания месяцев */
|
/* Цикл по коллекции для закрашивания месяцев */
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2, SNAME => CR, SVALUE => PKG_CONTVALLOC1S.GETS(MCLR, CR));
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2,
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(MCLR, CR);
|
SNAME => CR,
|
||||||
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
|
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
||||||
end loop;
|
end loop;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW2);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW2);
|
||||||
end if;
|
end if;
|
||||||
PKG_CONTVALLOC1S.PURGE(MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
/* Добвим группу для вида ремонта */
|
/* Добвим группу для вида ремонта */
|
||||||
SPRJ_GROUP_NAME := SCURTSKCODE;
|
SPRJ_GROUP_NAME := SCURTSKCODE;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG,
|
||||||
SNAME => SPRJ_GROUP_NAME,
|
SNAME => SPRJ_GROUP_NAME,
|
||||||
SCAPTION => QQ.STECSRVKINDCODE,
|
SCAPTION => QQ.STECSRVKINDCODE,
|
||||||
BEXPANDABLE => false);
|
BEXPANDABLE => false);
|
||||||
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
/* Строка плана */
|
||||||
|
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STEST', SVALUE => QQ.STECSRVKINDCODE);
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'STEST', SVALUE => QQ.STECSRVKINDCODE);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SINFO2', SVALUE => 'План');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SINFO2', SVALUE => 'План');
|
||||||
RDG_ROW2 := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
/* Строка факта */
|
||||||
|
RDG_ROW2 := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2, SNAME => 'SINFO2', SVALUE => 'Факт');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2, SNAME => 'SINFO2', SVALUE => 'Факт');
|
||||||
/* Добавляем в заполненные группы */
|
/* Добавляем в заполненные группы */
|
||||||
SGROUP_FILLED := SGROUP_FILLED || SPRJ_GROUP_NAME || ';';
|
SGROUP_FILLED := SGROUP_FILLED || SPRJ_GROUP_NAME || ';';
|
||||||
|
|
||||||
end if;
|
end if;
|
||||||
/* Плановые работы */
|
/* Плановые работы */
|
||||||
if (QQ.NEQV_RN is not null) then
|
if (QQ.NEQV_RN is not null) then
|
||||||
for x in 0 .. trunc(QQ.DDATEPLANEND) - trunc(QQ.DDATEPLANBEG)
|
/* Цикл по периоду */
|
||||||
|
for X in 0 .. TRUNC(QQ.DDATEPLANEND) - TRUNC(QQ.DDATEPLANBEG)
|
||||||
loop
|
loop
|
||||||
NYEAR_PLAN := EXTRACT(year from QQ.DDATEPLANBEG + x);
|
NYEAR_PLAN := EXTRACT(year from QQ.DDATEPLANBEG + X);
|
||||||
NMONTH_PLAN := EXTRACT(month from QQ.DDATEPLANBEG + x);
|
NMONTH_PLAN := EXTRACT(month from QQ.DDATEPLANBEG + X);
|
||||||
NDAY_PLAN := EXTRACT(day from QQ.DDATEPLANBEG + x);
|
NDAY_PLAN := EXTRACT(day from QQ.DDATEPLANBEG + X);
|
||||||
|
/* Если первый день периода */
|
||||||
if (x = 0) then
|
if (X = 0) then
|
||||||
SPERIODNAME := '_' || TO_CHAR(NYEAR_PLAN) || '_' || NMONTH_PLAN;
|
SPERIODNAME := '_' || TO_CHAR(NYEAR_PLAN) || '_' || NMONTH_PLAN;
|
||||||
|
/* Подсчёт трудоёмкости за месяц */
|
||||||
if (QQ.NSUMWORKPLAN is not null) then
|
if (QQ.NSUMWORKPLAN is not null) then
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, SPERIODNAME || '_P', PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_P') + QQ.NSUMWORKPLAN);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_P',
|
||||||
|
NVALUE => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P') +
|
||||||
|
QQ.NSUMWORKPLAN);
|
||||||
end if;
|
end if;
|
||||||
|
/* Закрашивание месяца плана синим */
|
||||||
if (STRIN(sSUBSTR => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', sSOURCE => SCOLS, sDELIM => ';') = 0) then
|
if (STRIN(SSUBSTR => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', SSOURCE => SCOLS, SDELIM => ';') = 0) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
SCOLS := SCOLS || SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN;';
|
SCOLS := SCOLS || SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN;';
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
SPERIODNAME := '_' || TO_CHAR(NYEAR_PLAN) || '_' || TO_CHAR(NMONTH_PLAN) || '_' || TO_CHAR(NDAY_PLAN);
|
SPERIODNAME := '_' || TO_CHAR(NYEAR_PLAN) || '_' || TO_CHAR(NMONTH_PLAN) || '_' || TO_CHAR(NDAY_PLAN);
|
||||||
if (STRIN(sSUBSTR => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', sSOURCE => SCOLS, sDELIM => ';') = 0) then
|
/* Закрашивание дня плана синим */
|
||||||
|
if (STRIN(SSUBSTR => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', SSOURCE => SCOLS, SDELIM => ';') = 0) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
SCOLS := SCOLS || SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN;';
|
SCOLS := SCOLS || SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN;';
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
/* Фактические и внеплановые работы */
|
/* Фактические и внеплановые работы */
|
||||||
if (QQ.DDATEFACTEND is not null and QQ.DDATEFACTBEG is not null) then
|
if ((QQ.DDATEFACTEND is not null) and (QQ.DDATEFACTBEG is not null)) then
|
||||||
if (QQ.nEQV_RN is not null) then
|
/* Фактические - зелёный, внеплановые - красный */
|
||||||
|
if (QQ.NEQV_RN is not null) then
|
||||||
SFACT_CLR := 'green';
|
SFACT_CLR := 'green';
|
||||||
else
|
else
|
||||||
SFACT_CLR := 'red';
|
SFACT_CLR := 'red';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
NWORKPERDAY := null;
|
NWORKPERDAY := null;
|
||||||
|
/* Если период не в одном месяце, то считаем трудоёмкость в день */
|
||||||
if (EXTRACT(month from QQ.DDATEFACTBEG) != EXTRACT(month from QQ.DDATEFACTEND)) then
|
if (EXTRACT(month from QQ.DDATEFACTBEG) != EXTRACT(month from QQ.DDATEFACTEND)) then
|
||||||
NWORKPERDAY := QQ.NSUMWORKFACT/(round(QQ.DDATEFACTEND - QQ.DDATEFACTBEG) + 1);
|
NWORKPERDAY := QQ.NSUMWORKFACT / (ROUND(QQ.DDATEFACTEND - QQ.DDATEFACTBEG) + 1);
|
||||||
NCURMONTH := EXTRACT(month from QQ.DDATEFACTBEG);
|
NCURMONTH := EXTRACT(month from QQ.DDATEFACTBEG);
|
||||||
end if;
|
end if;
|
||||||
|
/* Цикл по периоду */
|
||||||
for x in 0 .. trunc(QQ.DDATEFACTEND) - trunc(QQ.DDATEFACTBEG)
|
for X in 0 .. TRUNC(QQ.DDATEFACTEND) - TRUNC(QQ.DDATEFACTBEG)
|
||||||
loop
|
loop
|
||||||
NYEAR_FACT := EXTRACT(year from QQ.DDATEFACTBEG + x);
|
NYEAR_FACT := EXTRACT(year from QQ.DDATEFACTBEG + X);
|
||||||
NMONTH_FACT := EXTRACT(month from QQ.DDATEFACTBEG + x);
|
NMONTH_FACT := EXTRACT(month from QQ.DDATEFACTBEG + X);
|
||||||
NDAY_FACT := EXTRACT(day from QQ.DDATEFACTBEG + x);
|
NDAY_FACT := EXTRACT(day from QQ.DDATEFACTBEG + X);
|
||||||
|
/* Если первый день периода или следующий месяц периода */
|
||||||
if (x = 0 or NCURMONTH != NMONTH_FACT) then
|
if ((X = 0) or (NCURMONTH != NMONTH_FACT)) then
|
||||||
|
/* Обновляется текущий месяц */
|
||||||
if (NCURMONTH != NMONTH_FACT) then
|
if (NCURMONTH != NMONTH_FACT) then
|
||||||
NCURMONTH := NMONTH_FACT;
|
NCURMONTH := NMONTH_FACT;
|
||||||
end if;
|
end if;
|
||||||
SPERIODNAME := '_' || TO_CHAR(NYEAR_FACT) || '_' || NMONTH_FACT;
|
SPERIODNAME := '_' || TO_CHAR(NYEAR_FACT) || '_' || NMONTH_FACT;
|
||||||
|
/* Подсчёт трудоёмкости за месяц если период в одном месяце */
|
||||||
if (QQ.NSUMWORKFACT is not null and NWORKPERDAY is null) then
|
if ((QQ.NSUMWORKFACT is not null) and (NWORKPERDAY is null)) then
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, SPERIODNAME || '_F', PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F') + QQ.NSUMWORKFACT);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_F',
|
||||||
|
NVALUE => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, SROWID => SPERIODNAME || '_F') +
|
||||||
|
QQ.NSUMWORKFACT);
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
/* Добавление в коллекцию окрашивания месяца */
|
/* Добавление в коллекцию окрашивания месяца */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(rCONTAINER => MCLR, sROWID => SPERIODNAME) = false) then
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => MCLR, SROWID => SPERIODNAME) = false) then
|
||||||
PKG_CONTVALLOC1S.PUTS(MCLR, SPERIODNAME, SFACT_CLR);
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => MCLR, SROWID => SPERIODNAME, SVALUE => SFACT_CLR);
|
||||||
else
|
else
|
||||||
|
/* Если второй цвет для месяца */
|
||||||
if (STRIN(trim(SFACT_CLR), trim(PKG_CONTVALLOC1S.GETS(MCLR, SPERIODNAME))) = 0) then
|
if (STRIN(trim(SFACT_CLR), trim(PKG_CONTVALLOC1S.GETS(MCLR, SPERIODNAME))) = 0) then
|
||||||
PKG_CONTVALLOC1S.PUTS(MCLR, SPERIODNAME, PKG_CONTVALLOC1S.GETS(MCLR, SPERIODNAME) || ' ' || SFACT_CLR);
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => MCLR,
|
||||||
|
SROWID => SPERIODNAME,
|
||||||
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => SPERIODNAME) || ' ' ||
|
||||||
|
SFACT_CLR);
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
/* Подсчёт трудоёмкости за месяц если период не в одном месяце */
|
||||||
if (NWORKPERDAY is not null) then
|
if (NWORKPERDAY is not null) then
|
||||||
PKG_CONTVALLOC1S.PUTN(YM, SPERIODNAME || '_F', PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F') + NWORKPERDAY);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_F',
|
||||||
|
NVALUE => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, SROWID => SPERIODNAME || '_F') +
|
||||||
|
NWORKPERDAY);
|
||||||
end if;
|
end if;
|
||||||
SPERIODNAME := '_' || TO_CHAR(NYEAR_FACT) || '_' || TO_CHAR(NMONTH_FACT) || '_' || TO_CHAR(NDAY_FACT);
|
SPERIODNAME := '_' || TO_CHAR(NYEAR_FACT) || '_' || TO_CHAR(NMONTH_FACT) || '_' || TO_CHAR(NDAY_FACT);
|
||||||
/* Добавление окрашивания дней факта */
|
/* Добавление в коллекцию окрашивания дней факта */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(rCONTAINER => MCLR, sROWID => SPERIODNAME) = false) then
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => MCLR, SROWID => SPERIODNAME) = false) then
|
||||||
PKG_CONTVALLOC1S.PUTS(MCLR, SPERIODNAME, SFACT_CLR);
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => MCLR, SROWID => SPERIODNAME, SVALUE => SFACT_CLR);
|
||||||
else
|
else
|
||||||
if (trim(PKG_CONTVALLOC1S.GETS(MCLR, SPERIODNAME)) = 'green' and trim(SFACT_CLR) = 'red') then
|
/* Если второй цвет для месяца */
|
||||||
PKG_CONTVALLOC1S.PUTS(MCLR, SPERIODNAME, SFACT_CLR);
|
if ((trim(PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => SPERIODNAME)) = 'green') and
|
||||||
|
(trim(SFACT_CLR) = 'red')) then
|
||||||
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => MCLR, SROWID => SPERIODNAME, SVALUE => SFACT_CLR);
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
|
if ((RDG_ROW0.RCOLS is not null) and (NROWS = 0)) then
|
||||||
if (RDG_ROW0.RCOLS is not null and NROWS = 0) then
|
/* Цикл по годам периода */
|
||||||
/* Цикл по годам периода */
|
|
||||||
for Y in NFROMYEAR .. NTOYEAR
|
for Y in NFROMYEAR .. NTOYEAR
|
||||||
loop
|
loop
|
||||||
if (NFROMYEAR = NTOYEAR) then
|
if (NFROMYEAR = NTOYEAR) then
|
||||||
@ -558,45 +725,51 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
if (Y = NFROMYEAR) then
|
if (Y = NFROMYEAR) then
|
||||||
NMS := NFROMMONTH;
|
NMS := NFROMMONTH;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (NFROMYEAR < Y and Y < NTOYEAR) then
|
elsif ((NFROMYEAR < Y) and (Y < NTOYEAR)) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := 12;
|
NME := 12;
|
||||||
elsif (Y = NTOYEAR) then
|
elsif (Y = NTOYEAR) then
|
||||||
NMS := 1;
|
NMS := 1;
|
||||||
NME := NTOMONTH;
|
NME := NTOMONTH;
|
||||||
end if;
|
end if;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
/* Цикл по месяцам года */
|
/* Цикл по месяцам года */
|
||||||
for M in NMS .. NME
|
for M in NMS .. NME
|
||||||
loop
|
loop
|
||||||
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0,
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_P')) || ' факт: ' || HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F')));
|
SVALUE => 'план: ' ||
|
||||||
end loop;
|
HOURS_STR(NHOURS => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_P')) ||
|
||||||
|
' факт: ' ||
|
||||||
|
HOURS_STR(NHOURS => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_F')));
|
||||||
|
end loop;
|
||||||
end loop;
|
end loop;
|
||||||
|
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW0);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW0);
|
||||||
end if;
|
end if;
|
||||||
/* План для последней записи */
|
/* План для последней записи */
|
||||||
if (RDG_ROW.RCOLS is not null and NROWS = 0) then
|
if ((RDG_ROW.RCOLS is not null) and (NROWS = 0)) then
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
end if;
|
end if;
|
||||||
/* Факт для последней записи */
|
/* Факт для последней записи */
|
||||||
if (RDG_ROW2.RCOLS is not null and NROWS = 0) then
|
if ((RDG_ROW2.RCOLS is not null) and (NROWS = 0)) then
|
||||||
CR := PKG_CONTVALLOC1S.FIRST_(MCLR);
|
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2, SNAME => CR, SVALUE => PKG_CONTVALLOC1S.GETS(MCLR, CR));
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2,
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(MCLR, cr);
|
SNAME => CR,
|
||||||
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
|
CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR);
|
||||||
end loop;
|
end loop;
|
||||||
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW2);
|
PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW2);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
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);
|
||||||
PKG_CONTVALLOC1S.PURGE(YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
end EQUIPSRV_GRID;
|
end EQUIPSRV_GRID;
|
||||||
|
|
||||||
end PKG_P8PANELS_EQUIPSRV;
|
end PKG_P8PANELS_EQUIPSRV;
|
||||||
/
|
/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user