forked from CITKParus/P8-Panels
ЦИТК-839 ч1
This commit is contained in:
parent
06f0b35f92
commit
67905adaf2
@ -51,9 +51,6 @@ const EqsPrfrm = () => {
|
|||||||
reload: false
|
reload: false
|
||||||
});
|
});
|
||||||
|
|
||||||
// Состояние информации о трудоёмкости
|
|
||||||
const [info, setInfo] = useState({ cntP: 0, sumP: 0, cntF: 0, sumF: 0 });
|
|
||||||
|
|
||||||
// Состояние фильтра
|
// Состояние фильтра
|
||||||
const [filter, setFilter] = useState({
|
const [filter, setFilter] = useState({
|
||||||
belong: "",
|
belong: "",
|
||||||
@ -65,17 +62,22 @@ const EqsPrfrm = () => {
|
|||||||
toMonth: 1,
|
toMonth: 1,
|
||||||
toYear: 1990
|
toYear: 1990
|
||||||
});
|
});
|
||||||
|
|
||||||
// Состояние открытия фильтра
|
// Состояние открытия фильтра
|
||||||
const [filterOpen, setFilterOpen] = useState(true);
|
const [filterOpen, setFilterOpen] = useState(true);
|
||||||
|
|
||||||
// Состояние данных по умолчанию для фильтра
|
// Состояние данных по умолчанию для фильтра
|
||||||
const [defaultLoaded, setDefaultLoaded] = useState(false);
|
const [defaultLoaded, setDefaultLoaded] = useState(false);
|
||||||
|
|
||||||
// Состояние хранения копии фильтра
|
// Состояние хранения копии фильтра
|
||||||
const [filterCopy, setFilterCopy] = useState({ ...filter });
|
const [filterCopy, setFilterCopy] = useState({ ...filter });
|
||||||
|
|
||||||
// Состояние ограничения редактирования фильтра
|
// Состояние ограничения редактирования фильтра
|
||||||
const [filterLock, setFilterLock] = useState(false);
|
const [filterLock, setFilterLock] = useState(false);
|
||||||
|
|
||||||
// Состояние ячейки заголовка даты (по раскрытию/скрытию)
|
// Состояние ячейки заголовка даты (по раскрытию/скрытию)
|
||||||
const [activeRef, setActiveRef] = useState();
|
const [activeRef, setActiveRef] = useState();
|
||||||
|
|
||||||
// Состояние актуальности ссылки на ячейку
|
// Состояние актуальности ссылки на ячейку
|
||||||
const [refIsDeprecated, setRidFlag] = useState(true);
|
const [refIsDeprecated, setRidFlag] = useState(true);
|
||||||
|
|
||||||
@ -146,7 +148,6 @@ const EqsPrfrm = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
setInfo({ cntP: cP, sumP: sP, cntF: cF, sumF: sF });
|
|
||||||
setDataGrid(pv => ({
|
setDataGrid(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,
|
||||||
@ -164,7 +165,6 @@ const EqsPrfrm = () => {
|
|||||||
stored: "PKG_P8PANELS_EQUIPSRV.GET_DEFAULT_FP",
|
stored: "PKG_P8PANELS_EQUIPSRV.GET_DEFAULT_FP",
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
|
|
||||||
setFilter(pv => ({ ...pv, belong: data.JURPERS, fromMonth: 1, fromYear: data.YEAR, toMonth: 12, toYear: data.YEAR }));
|
setFilter(pv => ({ ...pv, belong: data.JURPERS, fromMonth: 1, fromYear: data.YEAR, toMonth: 12, toYear: data.YEAR }));
|
||||||
setDefaultLoaded(true);
|
setDefaultLoaded(true);
|
||||||
}, [executeStored]);
|
}, [executeStored]);
|
||||||
@ -173,14 +173,9 @@ const EqsPrfrm = () => {
|
|||||||
const showEquipSrv = async ({ date, workType, info }) => {
|
const showEquipSrv = async ({ date, workType, info }) => {
|
||||||
const [techName, servKind] = info.split("_");
|
const [techName, servKind] = info.split("_");
|
||||||
let type;
|
let type;
|
||||||
|
|
||||||
if (workType == "План") type = 0;
|
if (workType == "План") type = 0;
|
||||||
else type = 1;
|
else type = 1;
|
||||||
|
|
||||||
let [year, month, day] = date.substring(1).split("_");
|
let [year, month, day] = date.substring(1).split("_");
|
||||||
|
|
||||||
//if (day == undefined) day = null;
|
|
||||||
|
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_EQUIPSRV.SELECT_EQUIPSRV",
|
stored: "PKG_P8PANELS_EQUIPSRV.SELECT_EQUIPSRV",
|
||||||
args: {
|
args: {
|
||||||
@ -544,7 +539,6 @@ const EqsPrfrm = () => {
|
|||||||
</DialogContent>
|
</DialogContent>
|
||||||
<DialogActions>
|
<DialogActions>
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
|
||||||
disabled={
|
disabled={
|
||||||
filter.belong && filter.prodObj && filter.fromMonth && filter.fromYear && filter.toMonth && filter.toYear ? false : true
|
filter.belong && filter.prodObj && filter.fromMonth && filter.fromYear && filter.toMonth && filter.toYear ? false : true
|
||||||
}
|
}
|
||||||
@ -556,11 +550,8 @@ const EqsPrfrm = () => {
|
|||||||
>
|
>
|
||||||
Сформировать
|
Сформировать
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="contained" onClick={clearFilter}>
|
<Button onClick={clearFilter}>Очистить</Button>
|
||||||
Очистить
|
|
||||||
</Button>
|
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setFilter(filterCopy);
|
setFilter(filterCopy);
|
||||||
}}
|
}}
|
||||||
@ -592,9 +583,7 @@ const EqsPrfrm = () => {
|
|||||||
rows={dataGrid.rows}
|
rows={dataGrid.rows}
|
||||||
size={P8P_DATA_GRID_SIZE.LARGE}
|
size={P8P_DATA_GRID_SIZE.LARGE}
|
||||||
reloading={dataGrid.reload}
|
reloading={dataGrid.reload}
|
||||||
headCellRender={prms =>
|
headCellRender={prms => headCellRender({ ...prms }, handleClick)}
|
||||||
headCellRender({ ...prms }, handleClick, filter.techServ, info.cntP, info.sumP, info.cntF, info.sumF)
|
|
||||||
}
|
|
||||||
dataCellRender={prms => dataCellRender({ ...prms }, showEquipSrv)}
|
dataCellRender={prms => dataCellRender({ ...prms }, showEquipSrv)}
|
||||||
groupCellRender={prms => groupCellRender({ ...prms })}
|
groupCellRender={prms => groupCellRender({ ...prms })}
|
||||||
showCellRightBorder={true}
|
showCellRightBorder={true}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Парус 8 -
|
Парус 8 - Панели мониторинга - ТОиР - Выполнение работ
|
||||||
Дополнительная разметка и вёрстка клиентских элементов
|
Дополнительная разметка и вёрстка клиентских элементов
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -19,6 +19,17 @@ export const DIGITS_REG_EXP = /\d+,?\d*/g;
|
|||||||
export const MONTH_NAME_REG_EXP = /_\d{4}_\d{1,2}/;
|
export const MONTH_NAME_REG_EXP = /_\d{4}_\d{1,2}/;
|
||||||
export const DAY_NAME_REG_EXP = /_\d{4}_\d{1,2}_\d{1,2}/;
|
export const DAY_NAME_REG_EXP = /_\d{4}_\d{1,2}_\d{1,2}/;
|
||||||
|
|
||||||
|
export const STYLES = {
|
||||||
|
HIDE_CELL_STYLE: { display: "none" },
|
||||||
|
HCR_MAIN_STYLE: { border: "1px solid rgba(0, 0, 0)", textAlign: "center" },
|
||||||
|
HCR_DATE_STYLE: { padding: "5px", minWidth: "25px", maxWidth: "25px" },
|
||||||
|
DCR_MAIN_STYLE: { padding: "2px", border: "1px solid rgba(0, 0, 0) !important", textAlign: "center" },
|
||||||
|
DCR_OBJECT_INFO_STYLE: { textAlign: "right", fontWeight: "bold" },
|
||||||
|
DCR_PLAN_CELL_STYLE: { cursor: "pointer", backgroundColor: "lightblue", border: "1px solid rgba(0, 0, 0) !important" },
|
||||||
|
DCR_FACT_RELATED_CELL_STYLE: { cursor: "pointer", backgroundColor: "green", border: "1px solid rgba(0, 0, 0) !important" },
|
||||||
|
DCR_FACT_NOT_REALATED_CELL_STYLE: { cursor: "pointer", backgroundColor: "crimson", border: "1px solid rgba(0, 0, 0) !important" }
|
||||||
|
};
|
||||||
|
|
||||||
let curParent = "";
|
let curParent = "";
|
||||||
let x = 0;
|
let x = 0;
|
||||||
|
|
||||||
@ -34,13 +45,11 @@ const formatDate = date => {
|
|||||||
return nd;
|
return nd;
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
export const headCellRender = ({ columnDef }, hClick) => {
|
||||||
export const headCellRender = ({ columnDef }, hClick, podr, cntP, sumP, cntF, sumF) => {
|
let cellStyle = STYLES.HCR_MAIN_STYLE; //{ border: "1px solid rgba(0, 0, 0)", textAlign: "center" };
|
||||||
let cellStyle = { border: "1px solid rgba(0, 0, 0)", textAlign: "center" };
|
|
||||||
let cellProps = {};
|
let cellProps = {};
|
||||||
let stackStyle = {};
|
let stackStyle = {};
|
||||||
let data = columnDef.caption;
|
let data = columnDef.caption;
|
||||||
|
|
||||||
if (columnDef.expandable) {
|
if (columnDef.expandable) {
|
||||||
const ref = createRef();
|
const ref = createRef();
|
||||||
cellStyle = { ...cellStyle, padding: "5px" };
|
cellStyle = { ...cellStyle, padding: "5px" };
|
||||||
@ -51,40 +60,35 @@ export const headCellRender = ({ columnDef }, hClick, podr, cntP, sumP, cntF, su
|
|||||||
hClick(e, ref);
|
hClick(e, ref);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
stackStyle = { flexDirection: "column" };
|
stackStyle = { flexDirection: "column" };
|
||||||
}
|
}
|
||||||
if (columnDef.name == "SOBJINFO") cellStyle = { display: "none" };
|
if (columnDef.name == "SOBJINFO" || columnDef.name == "SWRKTYPE") cellStyle = STYLES.HIDE_CELL_STYLE; //{ display: "none" };
|
||||||
if (columnDef.name == "SINFO" || columnDef.name == "SWRKTYPE") {
|
if (columnDef.name == "SINFO" || columnDef.name == "SWRKTYPE") {
|
||||||
cellProps = { colSpan: 2 };
|
cellProps = { colSpan: 2 };
|
||||||
if (columnDef.name == "SINFO") cellProps = { ...cellProps, rowSpan: 2 };
|
if (columnDef.name == "SINFO") cellProps = { ...cellProps, rowSpan: 2 };
|
||||||
}
|
}
|
||||||
|
//if (columnDef.name == "SWRKTYPE") cellStyle = STYLES.HIDE_CELL_STYLE; //{ display: "none" };
|
||||||
if (columnDef.name == "SWRKTYPE") cellStyle = { display: "none" };
|
|
||||||
|
|
||||||
if (columnDef.visible && DAY_NAME_REG_EXP.test(columnDef.name)) {
|
if (columnDef.visible && DAY_NAME_REG_EXP.test(columnDef.name)) {
|
||||||
cellStyle = { ...cellStyle, padding: "5px", minWidth: "25px", maxWidth: "25px" };
|
cellStyle = { ...cellStyle, ...STYLES.HCR_DATE_STYLE }; //{ ...cellStyle, padding: "5px", minWidth: "25px", maxWidth: "25px" };
|
||||||
stackStyle = { justifyContent: "center" };
|
stackStyle = { justifyContent: "center" };
|
||||||
}
|
}
|
||||||
|
|
||||||
return { cellStyle, cellProps, stackStyle, data };
|
return { cellStyle, cellProps, stackStyle, data };
|
||||||
};
|
};
|
||||||
|
|
||||||
export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
||||||
let cellStyle = {
|
let cellStyle = STYLES.DCR_MAIN_STYLE; /*{
|
||||||
padding: "2px",
|
padding: "2px",
|
||||||
border: "1px solid rgba(0, 0, 0) !important",
|
border: "1px solid rgba(0, 0, 0) !important",
|
||||||
textAlign: "center"
|
textAlign: "center"
|
||||||
};
|
};*/
|
||||||
let cellProps = {};
|
let cellProps = {};
|
||||||
let data = " ";
|
let data = " ";
|
||||||
|
|
||||||
if (row["SWRKTYPE"] == undefined) {
|
if (row["SWRKTYPE"] == undefined) {
|
||||||
if (columnDef.name == "SOBJINFO") {
|
if (columnDef.name == "SOBJINFO") {
|
||||||
cellProps = { colSpan: 2 };
|
cellProps = { colSpan: 2 };
|
||||||
cellStyle = { ...cellStyle, textAlign: "right", fontWeight: "bold" };
|
cellStyle = { ...cellStyle, ...STYLES.DCR_OBJECT_INFO_STYLE }; //{ ...cellStyle, textAlign: "right", fontWeight: "bold" };
|
||||||
}
|
}
|
||||||
if (columnDef.name == "SWRKTYPE") cellStyle = { display: "none" };
|
if (columnDef.name == "SWRKTYPE") cellStyle = STYLES.HIDE_CELL_STYLE; //{ display: "none" };
|
||||||
if (columnDef.parent == "" && columnDef.expandable == true && columnDef.expanded == false) {
|
if (columnDef.parent == "" && columnDef.expandable == true && columnDef.expanded == false) {
|
||||||
curParent = columnDef.name;
|
curParent = columnDef.name;
|
||||||
return { cellStyle: { ...cellStyle, height: "25px" }, data };
|
return { cellStyle: { ...cellStyle, height: "25px" }, data };
|
||||||
@ -108,10 +112,9 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
if (columnDef.name == "SOBJINFO" && row["SWRKTYPE"] == "Факт") {
|
if (columnDef.name == "SOBJINFO" && row["SWRKTYPE"] == "Факт") {
|
||||||
cellStyle = { display: "none" };
|
cellStyle = { display: "none" };
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (row[columnDef.name]) {
|
switch (row[columnDef.name]) {
|
||||||
case "blue":
|
case "blue":
|
||||||
cellStyle = { ...cellStyle, cursor: "pointer", backgroundColor: "lightblue", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...cellStyle, ...STYLES.DCR_PLAN_CELL_STYLE }; //{ ...cellStyle, cursor: "pointer", backgroundColor: "lightblue", border: "1px solid rgba(0, 0, 0) !important" };
|
||||||
cellProps = {
|
cellProps = {
|
||||||
title: formatDate(columnDef.name),
|
title: formatDate(columnDef.name),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
@ -120,7 +123,7 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
};
|
};
|
||||||
return { cellStyle, cellProps, data };
|
return { cellStyle, cellProps, data };
|
||||||
case "green":
|
case "green":
|
||||||
cellStyle = { ...cellStyle, cursor: "pointer", backgroundColor: "green", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...cellStyle, ...STYLES.DCR_FACT_RELATED_CELL_STYLE }; //{ ...cellStyle, cursor: "pointer", backgroundColor: "green", border: "1px solid rgba(0, 0, 0) !important" };
|
||||||
cellProps = {
|
cellProps = {
|
||||||
title: formatDate(columnDef.name),
|
title: formatDate(columnDef.name),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
@ -129,7 +132,7 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
};
|
};
|
||||||
return { cellStyle, cellProps, data };
|
return { cellStyle, cellProps, data };
|
||||||
case "red":
|
case "red":
|
||||||
cellStyle = { ...cellStyle, cursor: "pointer", backgroundColor: "crimson", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...cellStyle, ...STYLES.DCR_FACT_NOT_RELATED_CELL_STYLE }; //{ ...cellStyle, cursor: "pointer", backgroundColor: "crimson", border: "1px solid rgba(0, 0, 0) !important" };
|
||||||
cellProps = {
|
cellProps = {
|
||||||
title: formatDate(columnDef.name),
|
title: formatDate(columnDef.name),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
@ -168,6 +171,6 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const groupCellRender = () => {
|
export const groupCellRender = () => {
|
||||||
let cellStyle = { display: "none" };
|
let cellStyle = STYLES.HIDE_CELL_STYLE; //{ display: "none" };
|
||||||
return { cellStyle };
|
return { cellStyle };
|
||||||
};
|
};
|
||||||
|
@ -226,9 +226,9 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта
|
SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта
|
||||||
BEXPANDED boolean; -- Флаг раскрытости уровня
|
BEXPANDED boolean; -- Флаг раскрытости уровня
|
||||||
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
|
||||||
RDG_ROW0 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы0
|
RDG_ROW_INFO PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с информацией по объекту ремонта
|
||||||
RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
|
RDG_ROW_PLAN PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с планом по объекту ремонта
|
||||||
RDG_ROW2 PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы2
|
RDG_ROW_FACT PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с фактом по объекту ремонта
|
||||||
NCURYEAR PKG_STD.TNUMBER; -- Текущий год
|
NCURYEAR PKG_STD.TNUMBER; -- Текущий год
|
||||||
NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц
|
NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц
|
||||||
NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце
|
NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце
|
||||||
@ -270,7 +270,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
TT.DDATEPRD_BEG DDATEPLANBEG,
|
TT.DDATEPRD_BEG DDATEPLANBEG,
|
||||||
TT.DDATEPRD_END DDATEPLANEND,
|
TT.DDATEPRD_END DDATEPLANEND,
|
||||||
EQJ.DATEFACT_BEG DDATEFACTBEG,
|
EQJ.DATEFACT_BEG DDATEFACTBEG,
|
||||||
COALESCE(EQJ.DATEFACT_END, EQJ.DATEFACT_BEG) DDATEFACTEND, --
|
COALESCE(EQJ.DATEFACT_END, EQJ.DATEFACT_BEG) DDATEFACTEND,
|
||||||
EK.CODE STECSRVKINDCODE,
|
EK.CODE STECSRVKINDCODE,
|
||||||
EK.NAME STECSRVKINDNAME,
|
EK.NAME STECSRVKINDNAME,
|
||||||
COALESCE(EW.NSUM, (TT.DDATEPRD_END - TT.DDATEPRD_BEG) * 24) NSUMWORKPLAN,
|
COALESCE(EW.NSUM, (TT.DDATEPRD_END - TT.DDATEPRD_BEG) * 24) NSUMWORKPLAN,
|
||||||
@ -554,7 +554,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Если новый объект ремонта */
|
/* Если новый объект ремонта */
|
||||||
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_ROW_INFO.RCOLS is not null) then
|
||||||
/* Цикл по годам периода */
|
/* Цикл по годам периода */
|
||||||
for Y in NFROMYEAR .. NTOYEAR
|
for Y in NFROMYEAR .. NTOYEAR
|
||||||
loop
|
loop
|
||||||
@ -562,7 +562,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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;
|
||||||
@ -579,7 +579,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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_ROW_INFO,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_P'),
|
SROWID => SPERIODNAME || '_P'),
|
||||||
@ -594,7 +594,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
end loop;
|
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_ROW_INFO);
|
||||||
end if;
|
end if;
|
||||||
/* Добавление группы с объектом ремонта */
|
/* Добавление группы с объектом ремонта */
|
||||||
SCURTECHOBJ := QQ.STECHOBJNAME;
|
SCURTECHOBJ := QQ.STECHOBJNAME;
|
||||||
@ -603,29 +603,29 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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_ROW_INFO := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW0, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ);
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ);
|
||||||
end if;
|
end if;
|
||||||
/* Формируем имя группы для вида ремонта */
|
/* Формируем имя группы для вида ремонта */
|
||||||
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE;
|
||||||
/* Если по данной группе еще нет строк плана и факта */
|
/* Если по данной группе еще нет строк плана и факта */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) then
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) then
|
||||||
/* Добавляем строку плана */
|
/* Добавляем строку плана */
|
||||||
if (RDG_ROW.RCOLS is not null) then
|
if (RDG_ROW_PLAN.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_PLAN);
|
||||||
end if;
|
end if;
|
||||||
/* Добавляем строку факта */
|
/* Добавляем строку факта */
|
||||||
if (RDG_ROW2.RCOLS is not null) then
|
if (RDG_ROW_FACT.RCOLS is not null) then
|
||||||
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
||||||
/* Цикл по коллекции для закрашивания месяцев */
|
/* Цикл по коллекции для закрашивания месяцев */
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2,
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT,
|
||||||
SNAME => CR,
|
SNAME => CR,
|
||||||
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(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_ROW_FACT);
|
||||||
end if;
|
end if;
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
/* Добвим группу для вида ремонта */
|
/* Добвим группу для вида ремонта */
|
||||||
@ -635,12 +635,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
SCAPTION => QQ.STECSRVKINDCODE,
|
SCAPTION => QQ.STECSRVKINDCODE,
|
||||||
BEXPANDABLE => false);
|
BEXPANDABLE => false);
|
||||||
/* Строка плана */
|
/* Строка плана */
|
||||||
RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW_PLAN := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE);
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SWRKTYPE', SVALUE => 'План');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SWRKTYPE', SVALUE => 'План');
|
||||||
/* Строка факта */
|
/* Строка факта */
|
||||||
RDG_ROW2 := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
RDG_ROW_FACT := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME);
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2, SNAME => 'SWRKTYPE', SVALUE => 'Факт');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT, SNAME => 'SWRKTYPE', SVALUE => 'Факт');
|
||||||
/* Добавляем в заполненные группы */
|
/* Добавляем в заполненные группы */
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => '');
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => '');
|
||||||
end if;
|
end if;
|
||||||
@ -665,7 +665,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Закрашивание месяца плана синим */
|
/* Закрашивание месяца плана синим */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
false) then
|
false) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
SVALUE => '');
|
SVALUE => '');
|
||||||
@ -675,7 +675,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Закрашивание дня плана синим */
|
/* Закрашивание дня плана синим */
|
||||||
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
false) then
|
false) then
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => SPERIODNAME, SVALUE => 'blue');
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue');
|
||||||
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
SVALUE => '');
|
SVALUE => '');
|
||||||
@ -749,7 +749,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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_ROW_INFO.RCOLS is not null) and (NROWS = 0)) then
|
||||||
/* Цикл по годам периода */
|
/* Цикл по годам периода */
|
||||||
for Y in NFROMYEAR .. NTOYEAR
|
for Y in NFROMYEAR .. NTOYEAR
|
||||||
loop
|
loop
|
||||||
@ -772,7 +772,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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_ROW_INFO,
|
||||||
SNAME => SPERIODNAME,
|
SNAME => SPERIODNAME,
|
||||||
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
SROWID => SPERIODNAME || '_P'),
|
SROWID => SPERIODNAME || '_P'),
|
||||||
@ -782,23 +782,23 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
1)));
|
1)));
|
||||||
end loop;
|
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_ROW_INFO);
|
||||||
end if;
|
end if;
|
||||||
/* План для последней записи */
|
/* План для последней записи */
|
||||||
if ((RDG_ROW.RCOLS is not null) and (NROWS = 0)) then
|
if ((RDG_ROW_PLAN.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_PLAN);
|
||||||
end if;
|
end if;
|
||||||
/* Факт для последней записи */
|
/* Факт для последней записи */
|
||||||
if ((RDG_ROW2.RCOLS is not null) and (NROWS = 0)) then
|
if ((RDG_ROW_FACT.RCOLS is not null) and (NROWS = 0)) then
|
||||||
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR);
|
||||||
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR)
|
||||||
loop
|
loop
|
||||||
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW2,
|
PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT,
|
||||||
SNAME => CR,
|
SNAME => CR,
|
||||||
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR));
|
||||||
CR := PKG_CONTVALLOC1S.NEXT_(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_ROW_FACT);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user