Исправлено расположение панелей, перекомпоновка графика в гаражке

This commit is contained in:
Dollerino 2026-04-14 19:58:46 +03:00
parent a277d780bf
commit 8606eac4aa
25 changed files with 2689 additions and 17 deletions

View File

@ -0,0 +1,19 @@
/*
Ïàðóñ 8 - Ïàíåëè ìîíèòîðèíãà
Òàáëèöà íàñòðîåê ïàíåëåé äëÿ ïîëüçîâàòåëåé
*/
create table UDO_P8PANELS_USETTING
(
/* Ðåã. íîìåð çàïèñè */
RN number( 17 ) not null,
/* Ðåã. íîìåð îðãàíèçàöèè */
COMPANY number( 17 ) not null,
/* Èäåíòèôèêàòîð ïîëüçîâàòåëÿ */
AUTHID varchar2( 30 ) not null,
/* Ïàíåëü */
PANEL varchar2( 100 ) not null,
/* Íàñòðîéêè */
PANEL_SETTINGS clob,
constraint C_UDO_P8PANELS_USETTING_PK primary key( RN ),
constraint C_UDO_P8PANELS_USETTING_UK unique( COMPANY, AUTHID, PANEL )
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,881 @@
create or replace package UDO_PKG_P8PANELS_RPR_ANL as
/* ‘÷èòûâàíèå íàèìåíîâàíèß ïîäðàçäåëåíèß ïî ìíåìîêîäó */
procedure GET_INS_DEPARTMENT_NAME
(
SCODE in varchar2, -- Œíåìîêîä ïîäðàçäåëåíèß
SNAME out varchar2 -- <20>àèìåíîâàíèå ïîäðàçäåëåíèß
);
/* ƒðàôèê ñîñòîßíèé ðåìîíòíûõ âåäîìîñòåé */
procedure CHART_STATUSES
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- „àííûå ãðàôèêà
);
/* ƒðàôèê òðóäîâûõ çàâòðàò */
procedure CHART_SPENDINGS
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
);
/* ’àáëèöà ñòðîê ðåìîíòíûõ âåäîìîñòåé */
procedure DATA_GRID
(
NPAGE_NUMBER in number, -- <20>îìåð ñòðàíèöû (èãíîðèðóåòñß ïðè NPAGE_SIZE=0)
NPAGE_SIZE in number, -- Šîëè÷åñòâî çàïèñåé íà ñòðàíèöå (0 - âñå)
CFILTERS in clob, -- ”èëüòðû
CORDERS in clob, -- ‘îðòèðîâêè
NINCLUDE_DEF in number, -- <20>ðèçíàê âêëþ÷åíèß îïèñàíèß êîëîíîê òàáëèöû â îòâåò
COUT out clob -- ‘åðèàëèçîâàííàß òàáëèöà äàííûõ
);
/* <20>àçîâîå ôîðìèðîâàíèå óñëîâèé îòáîðà ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_BASE_COND;
end UDO_PKG_P8PANELS_RPR_ANL;
/
create or replace package body UDO_PKG_P8PANELS_RPR_ANL as
/* ‘÷èòûâàíèå íàèìåíîâàíèß ïîäðàçäåëåíèß ïî ìíåìîêîäó */
procedure GET_INS_DEPARTMENT_NAME
(
SCODE in varchar2, -- Œíåìîêîä ïîäðàçäåëåíèß
SNAME out varchar2 -- <20>àèìåíîâàíèå ïîäðàçäåëåíèß
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
begin
/* ‘÷èòûâàåì íàèìåíîâàíèå ïîäðàçäåëåíèß */
begin
select T.NAME
into SNAME
from INS_DEPARTMENT T
where T.CODE = SCODE
and T.COMPANY = NCOMPANY;
exception
when others then
SNAME := '<27>å îïðåäåëåíî';
end;
end GET_INS_DEPARTMENT_NAME;
/* <20>àçðåøåíèå ññûëîê ïàðàìåòðîâ */
procedure PARAMS_JOINS
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NDEPTCUSTOMER out number, -- <20>åã. íîìåð ïîäðàçäåëåíèß-çàêàç÷èêà
NTYPEWRK out number, -- <20>åã. íîìåð òèïîâîé ðàáîòû ñïåöèôèêàöèè
NEQWRKKIND out number -- <20>åã. íîìåð âèäà òèïîâîé ðàáîòû ñïåöèôèêàöèè
)
is
begin
/* <20>åã. íîìåð ïîäðàçäåëåíèß-çàêàç÷èêà */
FIND_SUBDIVS_CODE_EX(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SINS_DEPARTMENT,
NRN => NDEPTCUSTOMER);
/* <20>åã. íîìåð òèïîâîé ðàáîòû ñïåöèôèêàöèè */
FIND_EQTYPEWRK_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SEQTYPEWRK,
NRN => NTYPEWRK);
/* <20>åã. íîìåð âèäà òèïîâîé ðàáîòû ñïåöèôèêàöèè */
FIND_EQWRKKIND_CODE(NFLAG_SMART => 0,
NFLAG_OPTION => 1,
NCOMPANY => NCOMPANY,
SCODE => SEQWRKKIND,
NRN => NEQWRKKIND);
end PARAMS_JOINS;
/* ”îðìèðîâàíèå óñëîâèé äëß îòáîðà çàïèñåé ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_COND_SET
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
NIDENT out number -- ˆäåíòèôèêàòîð äàííûõ
)
is
begin
/* ƒåíåðèðóåì èäåíòèôèêàòîð */
NIDENT := GEN_IDENT();
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - <20>ðîëîã */
PKG_COND_BROKER.PROLOGUE(IMODE => PKG_COND_BROKER.MODE_SMART_, NIDENT => NIDENT);
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà ïðîöåäóðû ñåðâåðíîãî îòáîðà */
PKG_COND_BROKER.SET_PROCEDURE(SPROCEDURE_NAME => 'UDO_PKG_P8PANELS_RPR_ANL.EQRPSHEETS_BASE_COND');
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà ðàçäåëà */
PKG_COND_BROKER.SET_UNIT(SUNITCODE => 'EquipRepairSheets');
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - “ñòàíîâêà îðãàíèçàöèè */
PKG_COND_BROKER.SET_COMPANY(NCOMPANY => NCOMPANY);
/* „àòà íà÷àëà ôàêòè÷åñêàß ñ */
PKG_COND_BROKER.SET_CONDITION_DATE('EDREPAIRFACTBEGINFrom', DDATE_FROM);
/* „àòà íà÷àëà ôàêòè÷åñêàß ïî */
PKG_COND_BROKER.SET_CONDITION_DATE('EDREPAIRFACTBEGINTo', DDATE_TO);
/* <20>îäðàçäåëåíèå-çàêàç÷èê */
PKG_COND_BROKER.SET_CONDITION_STR('CUSTOMERDEPTEDIT', SINS_DEPARTMENT, 0);
/* ’èïîâàß ðàáîòà */
PKG_COND_BROKER.SET_CONDITION_STR('EQTYPEWRKCOMP', SEQTYPEWRK, 0);
/* ‚èä òèïîâîé ðàáîòû */
PKG_COND_BROKER.SET_CONDITION_STR('EQWRKKINDCOMP', SEQWRKKIND, 0);
/* ‘îñòîßíèå */
PKG_COND_BROKER.SET_CONDITION_NUM('STATETYPE', NSTATE);
/* ’ðóäîâûå çàòðàòû */
PKG_COND_BROKER.SET_CONDITION_NUM('TYPESPEND', NTYPESPEND);
/* ”îðìèðîâàíèå óñëîâèé îòáîðà - <20>ïèëîã */
PKG_COND_BROKER.EPILOGUE();
end EQRPSHEETS_COND_SET;
/* ƒðàôèê ñîñòîßíèé ðåìîíòíûõ âåäîìîñòåé */
procedure CHART_STATUSES
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
RCH PKG_P8PANELS_VISUAL.TCHART; -- ƒðàôèê
RCH_DS PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
NCOMPLETED PKG_STD.TNUMBER; -- Šîëè÷åñòâî çàâåðøåííûõ
NUNCOMPLETED PKG_STD.TNUMBER; -- Šîëè÷åñòâî íåçàâåðøåííûõ
NIDENT PKG_STD.TREF; -- ˆäåíòèôèêàòîð îòîáðàííûõ çàïèñåé
NCOMPLETED_SUM EQRPSHEETS.COASTFACT%type; -- ‘óììà ïî çàâåðøåííûì
NUNCOMPLETED_SUM EQRPSHEETS.COASTFACT%type; -- ‘óììà ïî íåçàâåðøåííûì
begin
/* ‘ôîðìèðóåì çàãîëîâîê ãðàôèêà */
RCH := PKG_P8PANELS_VISUAL.TCHART_MAKE(STYPE => PKG_P8PANELS_VISUAL.SCHART_TYPE_PIE,
STITLE => '<27>åìîíòû',
SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT);
/* ‘ôîðìèðóåì íàáîð äàííûõ */
RCH_DS := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '<27>åìîíòû');
/* Žòáåðåì ðåìîíòíûå âåäîìîñòè */
EQRPSHEETS_COND_SET(NCOMPANY => NCOMPANY,
DDATE_FROM => TRUNC(DDATE_FROM),
DDATE_TO => TRUNC(DDATE_TO),
SINS_DEPARTMENT => SINS_DEPARTMENT,
SEQTYPEWRK => SEQTYPEWRK,
SEQWRKKIND => SEQWRKKIND,
NSTATE => NSTATE,
NTYPESPEND => NTYPESPEND,
NIDENT => NIDENT);
/* ‘÷èòûâàåì êîëè÷åñòâà ïî ñòàòóñàì */
begin
select COALESCE(sum(case
when T.STATE = 3 then
1
else
0
end), 0) COMPLETED,
COALESCE(sum(case
when T.STATE = 3 then
T.COASTFACT
else
0
end), 0) COMPLETED_SUM,
COALESCE(sum(case
when T.STATE in (0, 2) then
1
else
0
end), 0) UNCOMPLETED,
COALESCE(sum(case
when T.STATE in (0, 2) then
T.COASTFACT
else
0
end), 0) UNCOMPLETED_SUM
into NCOMPLETED,
NCOMPLETED_SUM,
NUNCOMPLETED,
NUNCOMPLETED_SUM
from EQRPSHEETS T
where T.RN in (select ID from COND_BROKER_IDSMART where IDENT = NIDENT)
and T.STATE in (0,2,3);
exception
when NO_DATA_FOUND then
NCOMPLETED := 0;
NUNCOMPLETED := 0;
when others then
P_EXCEPTION(0, 'Žøèáêà ñ÷èòûâàíèß ãðàôèêà ñòàòóñîâ.');
end;
/* „îáàâèì ìåòêó äëß çàâåðøåííûõ */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => '‡àâåðøåííûå (' || TRIM(TO_CHAR(NCOMPLETED_SUM, '999G999G999G999G999G990D99', 'nls_numeric_characters=''. ''')) || ')');
/* ‘ôîðìèðóåì äîïîëíèòåëüíûå àòðèáóòû äëß êëèåíòñêîãî ïðèëîæåíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NSTATE',
SVALUE => '1',
BCLEAR => true);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS, NVALUE => NCOMPLETED, RATTR_VALS => RATTR_VALS);
/* „îáàâèì ìåòêó äëß íåçàâåðøåííûõ */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => '<27>å çàâåðøåííûå (' || TRIM(TO_CHAR(NUNCOMPLETED_SUM, '999G999G999G999G999G990D99', 'nls_numeric_characters=''. ''')) || ')');
/* ‘ôîðìèðóåì äîïîëíèòåëüíûå àòðèáóòû äëß êëèåíòñêîãî ïðèëîæåíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NSTATE',
SVALUE => '0',
BCLEAR => true);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS, NVALUE => NUNCOMPLETED, RATTR_VALS => RATTR_VALS);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS);
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TCHART_TO_XML(RCHART => RCH, NINCLUDE_DEF => 1);
end CHART_STATUSES;
/* ƒðàôèê òðóäîâûõ çàâòðàò */
procedure CHART_SPENDINGS
(
DDATE_FROM in date, -- „àòà ñ
DDATE_TO in date, -- „àòà ïî
SINS_DEPARTMENT in varchar2, -- Œíåìîêîä òðàíñïîðòíîãî ó÷àñòêà
SEQTYPEWRK in varchar2, -- Œíåìîêîä òèïîâîé ðàáîòû
SEQWRKKIND in varchar2, -- Œíåìîêîä âèäà òèïîâûõ ðàáîò
NSTATE in number, -- ‘îñòîßíèå (null, 0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå)
NTYPESPEND in number, -- ’ðóäîâûå çàòðàòû (null, 0 - âíóòðåííèå, 1 - âíåøíèå)
COUT out clob -- ‘åðèàëèçîâàííûé ãðàôèê
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
RCH PKG_P8PANELS_VISUAL.TCHART; -- ƒðàôèê
RCH_DS_MTR PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ çàòðàò íà Œ<C592>
RCH_DS_LABOR PKG_P8PANELS_VISUAL.TCHART_DATASET; -- <20>àáîð äàííûõ òðóäîâûõ çàòðàò
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
NINTERNAL_MTR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî çàòðàò íà Œ<C592> (âíóòðåííèå)
NINTERNAL_LABOR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî òðóäîâûõ çàòðàò (âíóòðåííèå)
NEXTERNAL_MTR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî çàòðàò íà Œ<C592> (âíåøíèå)
NEXTERNAL_LABOR PKG_STD.TLNUMBER; -- Šîëè÷åñòâî òðóäîâûõ çàòðàò (âíåøíèå)
NIDENT PKG_STD.TREF; -- ˆäåíòèôèêàòîð îòîáðàííûõ çàïèñåé
/* ”îðìèðîâàíèå ýëåìåíòà ãðàôèêà */
procedure MAKE_CHART_ELEMENT
(
RCH in out nocopy PKG_P8PANELS_VISUAL.TCHART, -- ƒðàôèê
RCH_DS_MTR in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- <20>àáîð äàííûõ çàòðàò íà Œ<C592>
RCH_DS_LABOR in out nocopy PKG_P8PANELS_VISUAL.TCHART_DATASET, -- <20>àáîð äàííûõ òðóäîâûõ çàòðàò
SELEMENT_NAME in varchar2, -- <20>àèìåíîâàíèå ýëåìåíòà
NTYPE in number, -- ’èï ýëåìåíòà
NMTR_VALUE in number, -- ‡íà÷åíèå çàòðàò íà Œ<C592>
NLABOR_VALUE in number -- ‡íà÷åíèå òðóäîâûõ çàòðàò
)
is
RATTR_VALS PKG_P8PANELS_VISUAL.TCHART_DATASET_ITEM_ATTR_VALS; -- €òðèáóòû ýëåìåíòà íàáîðà äàííûõ
begin
/* „îáàâèì ìåòêó */
PKG_P8PANELS_VISUAL.TCHART_ADD_LABEL(RCHART => RCH, SLABEL => SELEMENT_NAME);
/* ‘ôîðìèðóåì äîï. àòðèáóò òèïà */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NTYPE',
SVALUE => TO_CHAR(NTYPE),
BCLEAR => true);
/* „îï. àòðèáóò ñõëîïûâàíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'stack',
SVALUE => SELEMENT_NAME);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS_MTR, NVALUE => NMTR_VALUE, RATTR_VALS => RATTR_VALS);
/* ‘ôîðìèðóåì äîï. àòðèáóò òèïà */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'NTYPE',
SVALUE => '0',
BCLEAR => true);
/* „îïîëíèòåëüíûé àòðèáóò ñõëîïûâàíèß */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ITM_ATTR_VL_ADD(RATTR_VALS => RATTR_VALS,
SNAME => 'stack',
SVALUE => SELEMENT_NAME);
/* „îáàâèì çàâåðøåííûå â íàáîð äàííûõ */
PKG_P8PANELS_VISUAL.TCHART_DATASET_ADD_ITEM(RDATASET => RCH_DS_LABOR, NVALUE => NLABOR_VALUE, RATTR_VALS => RATTR_VALS);
end MAKE_CHART_ELEMENT;
begin
/* ‘ôîðìèðóåì çàãîëîâîê ãðàôèêà */
RCH := PKG_P8PANELS_VISUAL.TCHART_MAKE(STYPE => PKG_P8PANELS_VISUAL.SCHART_TYPE_BAR,
STITLE => '‡àòðàòû íà ðåìîíòû',
SLGND_POS => PKG_P8PANELS_VISUAL.SCHART_LGND_POS_RIGHT);
/* ‘ôîðìèðóåì íàáîð äàííûõ çàòðàò íà Œ<C592> */
RCH_DS_MTR := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '‡àòðàòû íà Œ<C592>');
/* ‘ôîðìèðóåì íàáîð äàííûõ òðóäîâûõ çàòðàò */
RCH_DS_LABOR := PKG_P8PANELS_VISUAL.TCHART_DATASET_MAKE(SCAPTION => '’ðóäîâûå çàòðàòû');
/* Žòáåðåì ðåìîíòíûå âåäîìîñòè */
EQRPSHEETS_COND_SET(NCOMPANY => NCOMPANY,
DDATE_FROM => TRUNC(DDATE_FROM),
DDATE_TO => TRUNC(DDATE_TO),
SINS_DEPARTMENT => SINS_DEPARTMENT,
SEQTYPEWRK => SEQTYPEWRK,
SEQWRKKIND => SEQWRKKIND,
NSTATE => NSTATE,
NTYPESPEND => NTYPESPEND,
NIDENT => NIDENT);
/* ‘÷èòûâàåì êîëè÷åñòâà ïî âíóòðåííèì/âíåøíèì */
begin
select /*COALESCE(sum(case when T.DEPTPERF is not null then 1 else 0 end), 0) INTERNAL_MTR,
COALESCE(sum(case when T.DEPTPERF is not null then 2 else 0 end), 0) INTERNAL_LABOR,
COALESCE(sum(case when T.PERFORM_AGN is not null then 1 else 0 end), 0) EXTERNAL_MTR,
COALESCE(sum(case when T.PERFORM_AGN is not null then 2 else 0 end), 0) EXTERNAL_LABOR*/
/* „ëß …Œ<E280A6>Ž */
COALESCE(sum(case when T.DEPTPERF is not null then UDO_F_EQRP_SHMRC_SHOVH_SUM(T.COMPANY, T.RN) else 0 end), 0) INTERNAL_MTR,
COALESCE(sum(case when T.DEPTPERF is not null then UDO_F_ERS_EQRPSHWRK_SUM(T.COMPANY, T.RN) else 0 end), 0) INTERNAL_LABOR,
COALESCE(sum(case when T.PERFORM_AGN is not null then UDO_F_EQRP_SHMRC_SHOVH_SUM(T.COMPANY, T.RN) else 0 end), 0) EXTERNAL_MTR,
COALESCE(sum(case when T.PERFORM_AGN is not null then UDO_F_ERS_EQRPSHWRK_SUM(T.COMPANY, T.RN) else 0 end), 0) EXTERNAL_LABOR
into NINTERNAL_MTR,
NINTERNAL_LABOR,
NEXTERNAL_MTR,
NEXTERNAL_LABOR
from EQRPSHEETS T
where T.RN in (select ID from COND_BROKER_IDSMART where IDENT = NIDENT)
and T.STATE in (0,2,3);
exception
when NO_DATA_FOUND then
NINTERNAL_MTR := 0;
NINTERNAL_LABOR := 0;
NEXTERNAL_MTR := 0;
NEXTERNAL_LABOR := 0;
when others then
P_EXCEPTION(0, 'Žøèáêà ñ÷èòûâàíèß ãðàôèêà òðóäîâûõ çàòðàò.');
end;
/* ”îðìèðîâàíèå âíóòðåííèõ */
MAKE_CHART_ELEMENT(RCH => RCH,
RCH_DS_MTR => RCH_DS_MTR,
RCH_DS_LABOR => RCH_DS_LABOR,
SELEMENT_NAME => '‚íóòðåííèå',
NTYPE => 0,
NMTR_VALUE => NINTERNAL_MTR,
NLABOR_VALUE => NINTERNAL_LABOR);
/* ”îðìèðîâàíèå âíåøíèõ */
MAKE_CHART_ELEMENT(RCH => RCH,
RCH_DS_MTR => RCH_DS_MTR,
RCH_DS_LABOR => RCH_DS_LABOR,
SELEMENT_NAME => '‚íåøíèå',
NTYPE => 1,
NMTR_VALUE => NEXTERNAL_MTR,
NLABOR_VALUE => NEXTERNAL_LABOR);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_MTR);
/* „îáàâèì íàáîð äàííûõ â ãðàôèê */
PKG_P8PANELS_VISUAL.TCHART_ADD_DATASET(RCHART => RCH, RDATASET => RCH_DS_LABOR);
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TCHART_TO_XML(RCHART => RCH, NINCLUDE_DEF => 1);
end CHART_SPENDINGS;
/* ’àáëèöà ñòðîê ðåìîíòíûõ âåäîìîñòåé */
procedure DATA_GRID
(
NPAGE_NUMBER in number, -- <20>îìåð ñòðàíèöû (èãíîðèðóåòñß ïðè NPAGE_SIZE=0)
NPAGE_SIZE in number, -- Šîëè÷åñòâî çàïèñåé íà ñòðàíèöå (0 - âñå)
CFILTERS in clob, -- ”èëüòðû
CORDERS in clob, -- ‘îðòèðîâêè
NINCLUDE_DEF in number, -- <20>ðèçíàê âêëþ÷åíèß îïèñàíèß êîëîíîê òàáëèöû â îòâåò
COUT out clob -- ‘åðèàëèçîâàííàß òàáëèöà äàííûõ
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
NIDENT PKG_STD.TREF := GEN_IDENT(); -- ˆäåíòèôèêàòîð îòáîðà
RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- ”èëüòðû
RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- ‘îðòèðîâêè
RDG PKG_P8PANELS_VISUAL.TDG; -- Žïèñàíèå òàáëèöû
RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- ‘òðîêà òàáëèöû
NROW_FROM PKG_STD.TREF; -- <20>îìåð ñòðîêè ñ
NROW_TO PKG_STD.TREF; -- <20>îìåð ñòðîêè ïî
CSQL clob; -- <20>óôåð äëß çàïðîñà
ICURSOR integer; -- Šóðñîð äëß èñïîëíåíèß çàïðîñà
begin
/* —èòàåì ôèëüòðû */
RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS);
/* —èòåì ñîðòèðîâêè */
RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS);
/* <20>ðåîáðàçóåì íîìåð è ðàçìåð ñòðàíèöû â íîìåð ñòðîê ñ è ïî */
PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
NPAGE_SIZE => NPAGE_SIZE,
NROW_FROM => NROW_FROM,
NROW_TO => NROW_TO);
/* ˆíèöèàëèçèðóåì òàáëèöó äàííûõ */
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true);
/* Žïèñûâàåì êîëîíêè òàáëèöû äàííûõ */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NRN',
SCAPTION => '<27>åã. íîìåð',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BVISIBLE => false);
/* Žòîáðàæàåìûå êîëîíêè òàáëèöû */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDOCTYPES',
SCAPTION => '’èï äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDDOCTYPE',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPREF',
SCAPTION => '<27>ðåôèêñ äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDPREFFrom',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SNUMB',
SCAPTION => '<27>îìåð äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EDNUMBFrom',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDOCDATE',
SCAPTION => '„àòà äîêóìåíòà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
SCOND_FROM => 'EDDATEFrom',
SCOND_TO => 'EDDATETo',
BORDER => true,
BFILTER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATE',
SCAPTION => '‘îñòîßíèå',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEFACT_BEG',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî íà÷àëà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEFACT_END',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî îêîí÷àíèß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTCUSTOMER_CODE',
SCAPTION => '<27>îäðàçäåëåíèå çàêàç÷èê',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTCUSTOMER_NAME',
SCAPTION => '<27>àèìåíîâàíèå ïîäðàçäåëåíèß çàêàç÷èêà',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTPERF_CODE',
SCAPTION => '<27>îäðàçäåëåíèå èñïîëíèòåëü',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SDEPTPERF_NAME',
SCAPTION => '<27>àèìåíîâàíèå ïîäðàçäåëåíèß èñïîëíèòåëß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPERFORM_AGN_CODE',
SCAPTION => '‚íåøíèé èñïîëíèòåëü',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SPERFORM_AGN_NAME',
SCAPTION => '<27>àèìåíîâàíèå âíåøíåãî èñïîëíèòåëß',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NLABORIOUSNESS_PLAN',
SCAPTION => '’ðóäîåìêîñòü, ÷àñ (ïëàí)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NLABORIOUSNESS_FACT',
SCAPTION => '’ðóäîåìêîñòü, ÷àñ (ôàêò)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NNORMH_COST',
SCAPTION => '#‘òîèìîñòü í/÷',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NWORK_COST',
SCAPTION => '#‘òîèìîñòü ðàáîò',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NMTR_COST',
SCAPTION => '#‘òîèìîñòü ‡/—',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NCOASTFACT',
SCAPTION => '‘òîèìîñòü ïî ôàêòó',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
BORDER => true);
/* ‘êðûòûå êîëîíêè òàáëèöû (äëß äîï. ôèëüòðîâ) */
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'DDATEBEGIN_FILTER',
SCAPTION => '„àòà è âðåìß ôàêòè÷åñêîãî îêîí÷àíèß (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
SCOND_FROM => 'EDREPAIRFACTBEGINFrom',
SCOND_TO => 'EDREPAIRFACTBEGINTo',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SCUSTOMERDEPT_FILTER',
SCAPTION => '<27>îäðàçäåëåíèå çàêàç÷èê (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'CUSTOMERDEPTEDIT',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SWORKTYPE_FILTER',
SCAPTION => '’èïîâàß ðàáîòà (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EQTYPEWRKCOMP',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'SWORKKIND_FILTER',
SCAPTION => '‚èä òèïîâûõ ðàáîò (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
SCOND_FROM => 'EQWRKKINDCOMP',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NSTATE_FILTER',
SCAPTION => '‘îñòîßíèå (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
SCOND_FROM => 'STATETYPE',
BFILTER => true,
BVISIBLE => false);
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
SNAME => 'NTYPESPEND_FILTER',
SCAPTION => '’ðóäîâûå çàòðàòû (ôèëüòð)',
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
SCOND_FROM => 'TYPESPEND',
BFILTER => true,
BVISIBLE => false);
begin
/* „îáàâëßåì ïîäñêàçêó ñîâìåñòèìîñòè */
CSQL := PKG_SQL_BUILD.COMPATIBLE(SSQL => CSQL);
/* ”îðìèðóåì çàïðîñ */
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => 'select *');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select D.*,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.SQLROWNUM() || ' NROW');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from (select A.RN as NRN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' B.DOCCODE as SDOCTYPES,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(A.PREF) as SPREF,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' TRIM(A.NUMB) as SNUMB,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DOCDATE as DDOCDATE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.STATE as NSTATE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DATEFACT_BEG as DDATEFACT_BEG,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.DATEFACT_END as DDATEFACT_END,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DP.CODE as SDEPTCUSTOMER_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DP.NAME as SDEPTCUSTOMER_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' E.CODE as SDEPTPERF_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' E.NAME as SDEPTPERF_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.AGNABBR as SPERFORM_AGN_CODE,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.AGNNAME as SPERFORM_AGN_NAME,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select NVL(sum(ES.WORKTIMEPLAN * DECODE(ES.TIME_MEAS,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(24) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ') * ES.PERFORM_QUANT),');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(0) || ')');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHWRK W,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHWRC ES');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ES.PRN = W.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and W.PRN = A.RN) as NLABORIOUSNESS_PLAN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' (select NVL(sum(ES.WORKTIMEFACT * DECODE(ES.TIME_MEAS,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(24) || ',');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(1) ||') * ES.QUANTFACT),');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ' || PKG_SQL_BUILD.WRAP_NUM(0) || ')');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHWRK W,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' EQRPSHWRC ES');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where ES.PRN = W.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and W.PRN = A.RN) as NLABORIOUSNESS_FACT,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_ERS_EQRPSHWRK_AVG_PRICE') || '(A.COMPANY, A.RN) NNORMH_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_ERS_EQRPSHWRK_SUM') || '(A.COMPANY, A.RN) NWORK_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => PKG_SQL_BUILD.PERFORM('UDO_F_EQRP_SHMRC_SHOVH_SUM') || '(A.COMPANY, A.RN) NMTR_COST,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' A.COASTFACT as NCOASTFACT');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from EQRPSHEETS A');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join AGNLIST C on A.PERFORM_AGN = C.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join INS_DEPARTMENT E on A.DEPTPERF = E.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join AGNLIST AGN on A.CUSTOMER_AGN = AGN.RN');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' left outer join INS_DEPARTMENT DP on A.DEPTCUSTOMER = DP.RN,');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' DOCTYPES B');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where A.COMPANY = :NCOMPANY');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.STATE in (0,2,3)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.DOCTYPES = B.RN');
/*PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (select null from V_USERPRIV UP where UP.CATALOG = A.CRN)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and exists (select null');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from V_USERPRIV UP');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where UP.JUR_PERS = A.JURPERSONS');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and UP.UNITCODE = ' || PKG_SQL_BUILD.WRAP_STR('EquipRepairSheets') || ')');*/
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and A.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT)');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F');
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where F.NROW between :NROW_FROM and :NROW_TO');
/* “÷òÞì ñîðòèðîâêè */
PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG,
RORDERS => RO,
SPATTERN => '%ORDER_BY%',
CSQL => CSQL);
/* “÷òÞì ôèëüòðû */
PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT,
NCOMPANY => NCOMPANY,
SUNIT => 'EquipRepairSheets',
SPROCEDURE => 'UDO_PKG_P8PANELS_RPR_ANL.EQRPSHEETS_BASE_COND',
RDATA_GRID => RDG,
RFILTERS => RF);
/* <20>àçáèðàåì åãî */
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
/* „åëàåì ïîäñòàíîâêó ïàðàìåòðîâ */
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NCOMPANY', NVALUE => NCOMPANY);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NIDENT', NVALUE => NIDENT);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_FROM', NVALUE => NROW_FROM);
PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_TO', NVALUE => NROW_TO);
/* Žïèñûâàåì ñòðóêòóðó çàïèñè êóðñîðà */
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 1);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 3);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 4);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 5);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 7);
PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 8);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 9);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 10);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 11);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 12);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 13);
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 14);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 15);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 16);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 17);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 18);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 19);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 20);
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 21);
/* „åëàåì âûáîðêó */
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
null;
end if;
/* Žáõîäèì âûáðàííûå çàïèñè */
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
loop
/* „îáàâëßåì êîëîíêè ñ äàííûìè */
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NRN',
ICURSOR => ICURSOR,
NPOSITION => 1,
BCLEAR => true);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDOCTYPES',
ICURSOR => ICURSOR,
NPOSITION => 2);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPREF',
ICURSOR => ICURSOR,
NPOSITION => 3);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SNUMB',
ICURSOR => ICURSOR,
NPOSITION => 4);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDOCDATE',
ICURSOR => ICURSOR,
NPOSITION => 5);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NSTATE',
ICURSOR => ICURSOR,
NPOSITION => 6);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDATEFACT_BEG',
ICURSOR => ICURSOR,
NPOSITION => 7);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW,
SNAME => 'DDATEFACT_END',
ICURSOR => ICURSOR,
NPOSITION => 8);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTCUSTOMER_CODE',
ICURSOR => ICURSOR,
NPOSITION => 9);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTCUSTOMER_NAME',
ICURSOR => ICURSOR,
NPOSITION => 10);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTPERF_CODE',
ICURSOR => ICURSOR,
NPOSITION => 11);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SDEPTPERF_NAME',
ICURSOR => ICURSOR,
NPOSITION => 12);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPERFORM_AGN_CODE',
ICURSOR => ICURSOR,
NPOSITION => 13);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW,
SNAME => 'SPERFORM_AGN_NAME',
ICURSOR => ICURSOR,
NPOSITION => 14);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NLABORIOUSNESS_PLAN',
ICURSOR => ICURSOR,
NPOSITION => 15);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NLABORIOUSNESS_FACT',
ICURSOR => ICURSOR,
NPOSITION => 16);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NNORMH_COST',
ICURSOR => ICURSOR,
NPOSITION => 17);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NWORK_COST',
ICURSOR => ICURSOR,
NPOSITION => 18);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NMTR_COST',
ICURSOR => ICURSOR,
NPOSITION => 19);
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW,
SNAME => 'NCOASTFACT',
ICURSOR => ICURSOR,
NPOSITION => 20);
/* „îáàâëßåì ñòðîêó â òàáëèöó */
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
end loop;
/* Žñâîáîæäàåì êóðñîð */
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
exception
when others then
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
raise;
end;
/* ‘åðèàëèçóåì îïèñàíèå */
COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
end DATA_GRID;
/* <20>àçîâîå ôîðìèðîâàíèå óñëîâèé îòáîðà ðåìîíòíûõ âåäîìîñòåé */
procedure EQRPSHEETS_BASE_COND
as
SPREF PKG_STD.TSTRING;
SNUMB PKG_STD.TSTRING;
SWORK_TYPE PKG_STD.TSTRING;
SWORK_KIND PKG_STD.TSTRING;
SCLAUSE PKG_STD.TSTRING;
NSTATE PKG_STD.TNUMBER;
NTYPESPEND PKG_STD.TNUMBER;
begin
/* “ñòàíîâêà ãëàâíîé òàáëèöû */
PKG_COND_BROKER.SET_TABLE( 'EQRPSHEETS' );
/* ”îðìèðîâàíèå óñëîâèé òàáëèöû */
-- <20>åêâèçèòû/„îêóìåíò/’èï
PKG_COND_BROKER.ADD_CONDITION_CODE( 'DOCCODE','EDDOCTYPE','DOCTYPES <- RN;DOCTYPES' );
-- <20>åêâèçèòû/„îêóìåíò/<2F>ðåôèêñ
if (PKG_COND_BROKER.CONDITION_EXISTS('EDPREFFrom') = 1) then
/* ‘÷èòûâàåì ïðåôèêñ ñ ó÷åòîì trim */
SPREF := UPPER(TRIMNUMB(PKG_COND_BROKER.GET_CONDITION_STR('EDPREFFrom') ,10));
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE('UPPER(PREF) = ''' || SPREF || '''');
end if;
-- <20>åêâèçèòû/„îêóìåíò/<2F>îìåð
if (PKG_COND_BROKER.CONDITION_EXISTS('EDNUMBFrom') = 1) then
/* ‘÷èòûâàåì íîìåð ñ ó÷åòîì trim */
SNUMB := UPPER(TRIMNUMB(PKG_COND_BROKER.GET_CONDITION_STR('EDNUMBFrom') ,10));
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE('UPPER(NUMB) = ''' || SNUMB || '''');
end if;
-- <20>åêâèçèòû/„îêóìåíò/„àòà ñ..ïî
PKG_COND_BROKER.ADD_CONDITION_BETWEEN( 'DOCDATE','EDDATEFrom','EDDATETo' );
/* …ñëè ñîñòîßíèå óêàçàíî */
if (PKG_COND_BROKER.CONDITION_EXISTS('STATETYPE') = 1) then
/* ‘÷èòûâàåì ôèëüòð ñîñòîßíèß (0 - íå çàâåðøåííûå, 1 - çàâåðøåííûå) */
NSTATE := PKG_COND_BROKER.GET_CONDITION_NUM('STATETYPE');
/* …ñëè ñîñòîßíèå - çàâåðøåííûå */
if (NSTATE = 1) then
/* “ñòàíàâëèâàåì òîëüêî ñ ñîñòîßíèåì "‡àêðûò" */
PKG_COND_BROKER.SET_CONDITION_ENUM('CGSTATE', '3');
else
/* “ñòàíàâëèâàåì òîëüêî ñ ñîñòîßíèåì "<22>å óòâåðæäÞí", "“òâåðæäÞí" */
PKG_COND_BROKER.SET_CONDITION_ENUM('CGSTATE', '0;2', ';');
end if;
-- ‘îñòîßíèå/‘îñòîßíèå
PKG_COND_BROKER.ADD_CONDITION_ENUM( 'STATE','CGSTATE' );
end if;
/* …ñëè óêàçàíû òðóäîâûå çàòðàòû */
if (PKG_COND_BROKER.CONDITION_EXISTS('TYPESPEND') = 1) then
/* ‘÷èòûâàåì ôèëüòð òðóäîâûõ çàòðàò (0 - âíóòðåííèå, 1 - âíåøíèå) */
NTYPESPEND := PKG_COND_BROKER.GET_CONDITION_NUM('TYPESPEND');
/* …ñëè òðóäîâûå çàòðàòû - âíóòðåííèå */
if (NTYPESPEND = 0) then
PKG_COND_BROKER.ADD_NOT_NULL('DEPTPERF');
else
PKG_COND_BROKER.ADD_NOT_NULL('PERFORM_AGN');
end if;
end if;
/* ”îðìèðîâàíèå óñëîâèé ïàíåëè */
-- „îïîëíèòåëüíî/‡àêàç÷èê, ˆñïîëíèòåëü/<2F>îäðàçäåëåíèå-çàêàç÷èê
PKG_COND_BROKER.ADD_CONDITION_CODE( 'CODE','CUSTOMERDEPTEDIT','DEPTCUSTOMER <- RN;INS_DEPARTMENT' );
-- „îïîëíèòåëüíî/<2F>åêâèçèòû ðåìîíòà/„àòà íà÷àëà ôàêòè÷åñêàß ñ..ïî
PKG_COND_BROKER.ADD_CONDITION_BETWEEN( 'DATEFACT_BEG','EDREPAIRFACTBEGINFrom','EDREPAIRFACTBEGINTo' );
-- …ñëè åñòü óñëîâèå íà òèïîâóþ ðàáîòó èëè âèä òèïîâîé ðàáîòû
if ((PKG_COND_BROKER.CONDITION_EXISTS('EQTYPEWRKCOMP') = 1) or (PKG_COND_BROKER.CONDITION_EXISTS('EQWRKKINDCOMP') = 1)) then
/* ‘÷èòûâàåì òèïîâóþ ðàáîòó */
SWORK_TYPE := PKG_COND_BROKER.GET_CONDITION_STR('EQTYPEWRKCOMP');
/* ‘÷èòûâàåì âèä òèïîâîé ðàáîòû */
SWORK_KIND := PKG_COND_BROKER.GET_CONDITION_STR('EQWRKKINDCOMP');
/* ”îðìèðîâàíèå äîï. óñëîâèß */
SCLAUSE := ' exists (select null';
SCLAUSE := SCLAUSE || ' from EQRPSHWRK SW,';
SCLAUSE := SCLAUSE || ' EQTYPEWRK TW';
/* …ñëè óêàçàí âèä òèïîâîé ðàáîòû */
if (SWORK_KIND is not null) then
SCLAUSE := SCLAUSE || ' left outer join EQWRKKIND WK on TW.KIND = WK.RN';
end if;
SCLAUSE := SCLAUSE || ' where SW.PRN = T.RN';
SCLAUSE := SCLAUSE || ' and TW.RN = SW.TYPEWRK';
/* …ñëè óêàçàíà òèïîâàß ðàáîòà */
if (SWORK_TYPE is not null) then
SCLAUSE := SCLAUSE || ' and TW.CODE = ''' || SWORK_TYPE || '''';
end if;
/* …ñëè óêàçàí âèä òèïîâîé ðàáîòû */
if (SWORK_KIND is not null) then
SCLAUSE := SCLAUSE || ' and WK.CODE = ''' || SWORK_KIND || '''';
end if;
SCLAUSE := SCLAUSE || ')';
/* “ñòàíàâëèâàåì îòáîð */
PKG_COND_BROKER.ADD_CLAUSE(SCLAUSE);
end if;
-- ‘îñòîßíèå/‘îñòîßíèå
--PKG_COND_BROKER.ADD_CONDITION_ENUM( 'STATE','CGSTATE' );
end EQRPSHEETS_BASE_COND;
end UDO_PKG_P8PANELS_RPR_ANL;
/

View File

@ -0,0 +1,233 @@
create or replace package UDO_PKG_P8PANELS_USETTINGS as
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
procedure SETTINGS_SET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
);
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
COUT out clob -- <20>àñòðîéêè ïàíåëè
);
end UDO_PKG_P8PANELS_USETTINGS;
/
create or replace package body UDO_PKG_P8PANELS_USETTINGS as
/* Šîíñòàíòû - îáùèå */
XRQ_SETTINGS constant PKG_STD.TSTRING := 'XSETTINGS'; -- ˆìß óçëà íàñòðîåê ïàíåëè
/* „îáàâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_INSERT
(
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CPANEL_SETTINGS in clob, -- <20>àñòðîéêè ïàíåëè
NRN out number -- <20>åã. íîìåð çàïèñè
)
is
begin
/* ƒåíåðàöèß ðåãèñòðàöèîííîãî íîìåðà çàïèñè */
NRN := GEN_IDENT();
/* „îáàâëßåì çàïèñü â òàáëèöó */
insert into UDO_P8PANELS_USETTING
(RN, COMPANY, authid, PANEL, PANEL_SETTINGS)
values
(NRN, NCOMPANY, SAUTHID, SPANEL, CPANEL_SETTINGS);
end P8PANELS_USETTING_INSERT;
/* Žáíîâëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_UPDATE
(
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CPANEL_SETTINGS in clob -- <20>àñòðîéêè ïàíåëè
)
is
begin
/* ˆñïðàâëåíèå çàïèñè â òàáëèöå */
update UDO_P8PANELS_USETTING T
set T.AUTHID = SAUTHID,
T.PANEL = SPANEL,
T.PANEL_SETTINGS = CPANEL_SETTINGS
where T.RN = NRN
and T.COMPANY = NCOMPANY;
if (sql%notfound) then
P_EXCEPTION(0,
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
TO_CHAR(NRN));
end if;
end P8PANELS_USETTING_UPDATE;
/* “äàëåíèå çàïèñè íàñòðîéêè ïàíåëè */
procedure P8PANELS_USETTING_DELETE
(
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
)
is
begin
/* “äàëåíèå çàïèñè èç òàáëèöû */
delete from UDO_P8PANELS_USETTING
where RN = NRN
and COMPANY = NCOMPANY;
if (sql%notfound) then
P_EXCEPTION(0,
'‡àïèñü íàñòðîåê ïàíåëè ñ ðåã. íîìåðîì "%s" íå íàéäåíà.',
TO_CHAR(NRN));
end if;
end P8PANELS_USETTING_DELETE;
/* ‘÷èòûâàíèå çàïèñè íàñòðîéêè ïàíåëè */
function P8PANELS_USETTING_GET
(
NFLAG_SMART in number, -- <20>ðèçíàê âûäà÷è ñîîáùåíèß îá îøèáêå
NRN in number, -- <20>åã. íîìåð çàïèñè
NCOMPANY in number -- <20>åã. íîìåð îðãàíèçàöèè
) return UDO_P8PANELS_USETTING%rowtype -- ‡àïèñü íàñòðîéêè ïàíåëè
is
RRESULT UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
begin
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè ïàíåëè */
begin
select T.*
into RRESULT
from UDO_P8PANELS_USETTING T
where T.RN = NRN
and T.COMPANY = NCOMPANY;
exception
when NO_DATA_FOUND then
P_EXCEPTION(NFLAG_SMART, 'Žøèáêà ñ÷èòûâàíèß çàïèñè íàñòðîéêè ïàíåëè ñ ðåã. íîìåðîì "%s".');
end;
/* ‚îçâðàùàåì ðåçóëüòàò */
return RRESULT;
end P8PANELS_USETTING_GET;
/* ‘÷èòûâàíèå ðåã. íîìåðà çàïèñè íàñòðîéêè ïàíåëè òåêóùåãî ïîëüçîâàòåëß ïî íàèìåíîâàíèþ ïàíåëè */
procedure P8PANELS_USETTING_FIND
(
NFLAG_SMART in number, -- <20>ðèçíàê ãåíåðàöèè èñêëþ÷åíèß (0 - äà, 1 - íåò)
NCOMPANY in number, -- <20>åã. íîìåð îðãàíèçàöèè
SAUTHID in varchar2, -- <20>îëüçîâàòåëü
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
NRN out number -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
)
is
begin
/* …ñëè íàèìåíîâàíèå ïàíåëè íå çàäàíî */
if (RTRIM(SPANEL) is null) then
/* ƒåíåðàöèß èñêëþ÷åíèß */
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàíî íàèìåíîâàíèå íàñòðîéêè íàñòðîéêè.');
/* ‚ûõîäèì */
return;
end if;
/* …ñëè ïîëüçîâàòåëü íå çàäàí */
if (RTRIM(SAUTHID) is null) then
/* ƒåíåðàöèß èñêëþ÷åíèß */
P_EXCEPTION(NFLAG_SMART, '<27>å çàäàí ïîëüçîâàòåëü íàñòðîéêè ïàíåëè.');
/* ‚ûõîäèì */
return;
end if;
/* <20>îèñê çàïèñè */
begin
select T.RN
into NRN
from UDO_P8PANELS_USETTING T
where T.PANEL = SPANEL
and T.AUTHID = SAUTHID
and T.COMPANY = NCOMPANY;
exception
when NO_DATA_FOUND then
P_EXCEPTION(NFLAG_SMART,
'<27>àñòðîéêà ïàíåëè ñ íàèìåíîâàíèåì "%s" íå îïðåäåëÞíà.',
SPANEL);
end;
end P8PANELS_USETTING_FIND;
/* “ñòàíîâêà íàñòðîéêè ïàíåëè */
procedure SETTINGS_SET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
CSETTINGS in clob -- <20>àñòðîéêè ïàíåëè
)
is
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
CDATA clob; -- „àííûå íàñòðîéêè ïàíåëè
begin
/* …ñëè íå çàäàíî íàèìåíîâàíèå ïàíåëè */
if (RTRIM(SPANEL) is null) then
P_EXCEPTION(0,
'<27>àèìåíîâàíèå ïàíåëè ïðè ñîõðàíåíèè íàñòðîåê ïàíåëè íå îïðåäåëåíî.');
end if;
/* ”îðìàòèðóåì äàííûå íàñòðîéêè ïàíåëè */
CDATA := '<' || XRQ_SETTINGS || '>' ||
BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CSETTINGS), SCHARSET => PKG_CHARSET.CHARSET_UTF_()) || '</' ||
XRQ_SETTINGS || '>';
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
NRN => NUDO_P8PANELS_USETTING);
/* …ñëè ó ïîëüçîâàòåëß óæå åñòü íàñòðîéêà */
if (NUDO_P8PANELS_USETTING is not null) then
/* Žáíîâëßåì íàñòðîéêè ïàíåëè */
P8PANELS_USETTING_UPDATE(NRN => NUDO_P8PANELS_USETTING,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
CPANEL_SETTINGS => CDATA);
else
/* ‘îçäàåì çàïèñü íàñòðîéêè ïàíåëè */
P8PANELS_USETTING_INSERT(NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
CPANEL_SETTINGS => CDATA,
NRN => NUDO_P8PANELS_USETTING);
end if;
end SETTINGS_SET;
/* ‘÷èòûâàíèå íàñòðîéêè ïàíåëè */
procedure SETTINGS_GET
(
SPANEL in varchar2, -- <20>àèìåíîâàíèå ïàíåëè
COUT out clob -- <20>àñòðîéêè ïàíåëè
)
is
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Žðãàíèçàöèß ñåàíñà
SAUTHID PKG_STD.TSTRING := UTILIZER(); -- ’åêóùèé ïîëüçîâàòåëü
NUDO_P8PANELS_USETTING PKG_STD.TREF; -- <20>åã. íîìåð íàñòðîéêè ïàíåëè
RUDO_P8PANELS_USETTING UDO_P8PANELS_USETTING%rowtype; -- ‡àïèñü íàñòðîéêè ïàíåëè
begin
/* <20>ðîâåðßåì ñóùåñòâîâàíèå íàñòðîåê äëß ýòîãî ïîëüçîâàòåëß ïîä òåêóùåé îðãàíèçàöèåé */
P8PANELS_USETTING_FIND(NFLAG_SMART => 1,
NCOMPANY => NCOMPANY,
SAUTHID => SAUTHID,
SPANEL => SPANEL,
NRN => NUDO_P8PANELS_USETTING);
/* …ñëè íàñòðîéêà ñ÷èòàíà */
if (NUDO_P8PANELS_USETTING is not null) then
/* ‘÷èòûâàåì çàïèñü íàñòðîéêè */
RUDO_P8PANELS_USETTING := P8PANELS_USETTING_GET(NFLAG_SMART => 1,
NRN => NUDO_P8PANELS_USETTING,
NCOMPANY => NCOMPANY);
/* “ñòàíàâëèâàåì íàñòðîéêè ïàíåëè */
COUT := RUDO_P8PANELS_USETTING.PANEL_SETTINGS;
else
/* <20>óñòîå çíà÷åíèå */
COUT := '<XSETTINGS></XSETTINGS>';
end if;
end SETTINGS_GET;
end UDO_PKG_P8PANELS_USETTINGS;
/

4
db/grants.sql Normal file
View File

@ -0,0 +1,4 @@
grant select on UDO_P8PANELS_USETTING to public;
grant execute on UDO_PKG_P8PANELS_USETTINGS to public;
grant execute on UDO_PKG_P8PANELS_HAULER_ANL to public;
grant execute on UDO_PKG_P8PANELS_RPR_ANL to public;

File diff suppressed because one or more lines are too long

View File

@ -17,7 +17,7 @@
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsPrfrm" caption="Выполнение работ по ТОиР" panelName="EqsPrfrm"/>
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsRepairAnlATC" caption="Аналитика по ремонтам АТС" panelName="RepairAnlATC"/>
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsHaulerAnl" caption="Гаражка" panelName="HaulerAnl"/>
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" name="ShowEqsHaulerAnl" caption="Гаражка" panelName="EqsHaulerAnl"/>
</App>
<App name="MechanicalRecords">
<MenuItem parent="{BA073333-DFBC-4BA3-8EA7-172F3F6B4FEE}" separator="true"/>
@ -205,18 +205,18 @@
showInPanelsList="true"
preview="./img/clnt_task_board.jpg"/>
<Panel
name="RepairAnlATC"
name="EqsHaulerAnl"
group="Управление техническим обслуживанием и ремонтами"
caption="Аналитика по ремонтам АТС"
desc="Аналитика по ремонтам АТС"
url="repair_anl_atc"
path="repair_anl_atc"
icon="home_repair_service"
caption="Гаражка"
desc="Гаражка"
url="hauler_eqs_anl"
path="hauler_anl"
icon="warehouse"
showInPanelsList="true"
preview="./img/default_preview.png"/>
<Panel
name="HaulerAnl"
group="Управление техническим обслуживанием и ремонтами"
group="Управление автотранспортом"
caption="Гаражка"
desc="Гаражка"
url="hauler_anl"

View File

@ -148,7 +148,7 @@ const FilterDialog = ({ initial, isFiltersInit, onCancel, onOk }) => {
fullWidth
/>
<Box sx={STYLES.BOX_WITH_LEGEND} component="fieldset">
<legend style={STYLES.LEGEND}>Расчет КОА</legend>
<legend style={STYLES.LEGEND}>Расчет КТГ/КОА</legend>
<TextField
name="dDateKOAFrom"
type="datetime-local"

View File

@ -80,7 +80,7 @@ const HaulerAnl = () => {
}, [filterValues, filterInfo, filterCalcs]);
//Состояние графика информации АТС
const { chartInfo, handleReload: handleChartInfoReload } = useChartInfo({ storedArgs: allFilters });
const { chartInfo, handleReload: handleChartInfoReload, loading: chartInfoLoading } = useChartInfo({ storedArgs: allFilters });
//Состояние графика расчетов
const { chartCalcs, handleReload: handleChartCalcsReload } = useChartCalcs({ storedArgs: allFilters });
@ -159,7 +159,7 @@ const HaulerAnl = () => {
{hasValue(filterInfo.nState) ? (
<ChartFilter chartName={CHART_NAMES.info} filter={filterInfo} onFilterChange={handleChartFilterChange} />
) : null}
{chartInfo.loaded ? (
{chartInfo.loaded && !chartInfoLoading ? (
<P8PChart {...chartInfo} style={STYLES.CHART} onClick={handleChartInfoClick} legendPosition={"top"} />
) : null}
</Paper>

View File

@ -9,7 +9,7 @@
import { useState, useContext, useCallback, useEffect } from "react"; //Классы React
import { BackEndСtx } from "../../../context/backend"; //Контекст взаимодействия с сервером
import { object2Base64XML, formatDateRF } from "../../../core/utils";
import { object2Base64XML, formatDateRF } from "../../../core/utils"; //Вспомогательные функции
//--------------------------
//Вспомогательные компоненты
@ -24,6 +24,9 @@ const useChartInfo = ({ storedArgs = {} }) => {
//Собственное состояние - график
const [chartInfo, setChartInfo] = useState({ loaded: false, reload: false });
//Собственное состояние - загрузка данных
const [loading, setLoading] = useState(false);
//Подключение к контексту взаимодействия с сервером
const { executeStored } = useContext(BackEndСtx);
@ -35,6 +38,7 @@ const useChartInfo = ({ storedArgs = {} }) => {
//Загрузка данных графика с сервера
const loadChart = async () => {
try {
setLoading(true);
const chart = await executeStored({
stored: "UDO_PKG_P8PANELS_HAULER_ANL.CHART_ATC_INFO",
args: {
@ -47,6 +51,8 @@ const useChartInfo = ({ storedArgs = {} }) => {
setChartInfo(pv => ({ ...pv, loaded: true, reload: false, ...chart.XCHART }));
} catch (e) {
setChartInfo(pv => ({ ...pv, loaded: false, reload: false }));
} finally {
setLoading(false);
}
};
//При необходимости перезагрузить
@ -55,7 +61,7 @@ const useChartInfo = ({ storedArgs = {} }) => {
}, [chartInfo.reload, executeStored]);
//Возвращаем график
return { chartInfo, handleReload };
return { chartInfo, handleReload, loading };
};
//Хук графика КГТ/КОА