forked from CITKParus/P8-Panels
ЦИТК-832 - Панель "Выполнение работ" ТОиР - оптимизация времени отклика и косметика
This commit is contained in:
commit
c1d2bfa5aa
@ -54,18 +54,6 @@ const EqsPrfrm = () => {
|
|||||||
// Состояние информации о трудоёмкости
|
// Состояние информации о трудоёмкости
|
||||||
const [info, setInfo] = useState({ cntP: 0, sumP: 0, cntF: 0, sumF: 0 });
|
const [info, setInfo] = useState({ cntP: 0, sumP: 0, cntF: 0, sumF: 0 });
|
||||||
|
|
||||||
// Состояние фильтра (для отладки)
|
|
||||||
// const [filter, setFilter] = useState({
|
|
||||||
// belong: "Демопример",
|
|
||||||
// prodObj: "Карьер",
|
|
||||||
// techServ: "",
|
|
||||||
// respDep: "",
|
|
||||||
// fromMonth: 1,
|
|
||||||
// fromYear: 2024,
|
|
||||||
// toMonth: 12,
|
|
||||||
// toYear: 2024
|
|
||||||
// });
|
|
||||||
|
|
||||||
// Состояние фильтра
|
// Состояние фильтра
|
||||||
const [filter, setFilter] = useState({
|
const [filter, setFilter] = useState({
|
||||||
belong: "",
|
belong: "",
|
||||||
@ -79,7 +67,7 @@ const EqsPrfrm = () => {
|
|||||||
});
|
});
|
||||||
// Состояние открытия фильтра
|
// Состояние открытия фильтра
|
||||||
const [filterOpen, setFilterOpen] = useState(true);
|
const [filterOpen, setFilterOpen] = useState(true);
|
||||||
// Состояние данных по умолчанию для фильтра (true - для отладки)
|
// Состояние данных по умолчанию для фильтра
|
||||||
const [defaultLoaded, setDefaultLoaded] = useState(false);
|
const [defaultLoaded, setDefaultLoaded] = useState(false);
|
||||||
// Состояние хранения копии фильтра
|
// Состояние хранения копии фильтра
|
||||||
const [filterCopy, setFilterCopy] = useState({ ...filter });
|
const [filterCopy, setFilterCopy] = useState({ ...filter });
|
||||||
@ -177,19 +165,10 @@ const EqsPrfrm = () => {
|
|||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
|
|
||||||
setFilter(pv => ({ ...pv, belong: data.JURPERS, fromMonth: data.MONTH, fromYear: data.YEAR, toMonth: data.MONTH, 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]);
|
||||||
|
|
||||||
//пользовательский параметр JuridicalPerson системы
|
|
||||||
// const getJurPers = useCallback(async () => {
|
|
||||||
// const data = await executeStored({
|
|
||||||
// stored: "PKG_P8PANELS_EQUIPSRV.GET_JUR_PERS_PRM",
|
|
||||||
// respArg: "CRES"
|
|
||||||
// });
|
|
||||||
// setFilter(pv => ({ ...pv, belong: data }));
|
|
||||||
// }, [executeStored]);
|
|
||||||
|
|
||||||
// Отбор документа (ТОиР или Ремонтных ведомостей) по ячейке даты
|
// Отбор документа (ТОиР или Ремонтных ведомостей) по ячейке даты
|
||||||
const showEquipSrv = async ({ date, workType, info }) => {
|
const showEquipSrv = async ({ date, workType, info }) => {
|
||||||
const [techName, servKind] = info.split("_");
|
const [techName, servKind] = info.split("_");
|
||||||
@ -279,7 +258,6 @@ const EqsPrfrm = () => {
|
|||||||
if (!refIsDeprecated) {
|
if (!refIsDeprecated) {
|
||||||
if (activeRef) {
|
if (activeRef) {
|
||||||
var cellRect = activeRef.getBoundingClientRect();
|
var cellRect = activeRef.getBoundingClientRect();
|
||||||
//console.log(window.scrollX + cellRect.left + activeRef.clientWidth / 2 - window.innerWidth / 2);
|
|
||||||
window.scrollTo(window.scrollX + cellRect.left + activeRef.clientWidth / 2 - window.innerWidth / 2, 0);
|
window.scrollTo(window.scrollX + cellRect.left + activeRef.clientWidth / 2 - window.innerWidth / 2, 0);
|
||||||
setRidFlag(true);
|
setRidFlag(true);
|
||||||
}
|
}
|
||||||
|
@ -54,53 +54,13 @@ export const headCellRender = ({ columnDef }, hClick, podr, cntP, sumP, cntF, su
|
|||||||
|
|
||||||
stackStyle = { flexDirection: "column" };
|
stackStyle = { flexDirection: "column" };
|
||||||
}
|
}
|
||||||
if (columnDef.name == "STEST") cellStyle = { display: "none" };
|
if (columnDef.name == "SOBJINFO") cellStyle = { display: "none" };
|
||||||
if (columnDef.name == "SINFO" || columnDef.name == "SINFO2") {
|
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 == "SINFO") {
|
|
||||||
//cellStyle = { display: "none" };
|
|
||||||
// cellStyle = { ...cellStyle, padding: "unset" };
|
|
||||||
// data = (
|
|
||||||
// <Stack sx={{ justifyContent: "center" }} direction="row" width={300}>
|
|
||||||
// <Grid container>
|
|
||||||
// <Grid item xs={4}>
|
|
||||||
// Подразделение:
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={8}>
|
|
||||||
// {podr}
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={4}>
|
|
||||||
// Кол-во ремонтов, план:
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={2}>
|
|
||||||
// {cntP}
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={4}>
|
|
||||||
// Трудоемкость, час. план:
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={2}>
|
|
||||||
// {sumP}
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={4}>
|
|
||||||
// Кол-во ремонтов, факт:
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={2}>
|
|
||||||
// {cntF}
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={4}>
|
|
||||||
// Трудоемкость, час. факт:
|
|
||||||
// </Grid>
|
|
||||||
// <Grid item xs={2}>
|
|
||||||
// {sumF}
|
|
||||||
// </Grid>
|
|
||||||
// </Grid>
|
|
||||||
// </Stack>
|
|
||||||
// );
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (columnDef.name == "SINFO2") cellStyle = { 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, padding: "5px", minWidth: "25px", maxWidth: "25px" };
|
||||||
@ -119,16 +79,16 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
let cellProps = {};
|
let cellProps = {};
|
||||||
let data = " ";
|
let data = " ";
|
||||||
|
|
||||||
if (row["SINFO2"] == undefined) {
|
if (row["SWRKTYPE"] == undefined) {
|
||||||
if (columnDef.name == "STEST") {
|
if (columnDef.name == "SOBJINFO") {
|
||||||
cellProps = { colSpan: 2 };
|
cellProps = { colSpan: 2 };
|
||||||
cellStyle = { ...cellStyle, textAlign: "right", fontWeight: "bold" };
|
cellStyle = { ...cellStyle, textAlign: "right", fontWeight: "bold" };
|
||||||
}
|
}
|
||||||
if (columnDef.name == "SINFO2") cellStyle = { display: "none" };
|
if (columnDef.name == "SWRKTYPE") cellStyle = { 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 };
|
||||||
} else if (columnDef.name != "SINFO2" && columnDef.parent != "" && columnDef.expandable == false && columnDef.expanded == true) {
|
} else if (columnDef.name != "SWRKTYPE" && columnDef.parent != "" && columnDef.expandable == false && columnDef.expanded == true) {
|
||||||
if (columnDef.name.endsWith("_1")) {
|
if (columnDef.name.endsWith("_1")) {
|
||||||
curParent = columnDef.parent;
|
curParent = columnDef.parent;
|
||||||
const [year, month] = curParent.substring(1).split("_");
|
const [year, month] = curParent.substring(1).split("_");
|
||||||
@ -141,39 +101,39 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (columnDef.name == "STEST" && row["SINFO2"] == "План") {
|
if (columnDef.name == "SOBJINFO" && row["SWRKTYPE"] == "План") {
|
||||||
cellStyle = { ...cellStyle };
|
cellStyle = { ...cellStyle };
|
||||||
cellProps = { rowSpan: 2 };
|
cellProps = { rowSpan: 2 };
|
||||||
}
|
}
|
||||||
if (columnDef.name == "STEST" && row["SINFO2"] == "Факт") {
|
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, backgroundColor: "lightblue", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...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: () => {
|
||||||
showEquipSrv({ date: columnDef.name, workType: row["SINFO2"], info: row["groupName"] });
|
showEquipSrv({ date: columnDef.name, workType: row["SWRKTYPE"], info: row["groupName"] });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return { cellStyle, cellProps, data };
|
return { cellStyle, cellProps, data };
|
||||||
case "green":
|
case "green":
|
||||||
cellStyle = { ...cellStyle, backgroundColor: "green", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...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: () => {
|
||||||
showEquipSrv({ date: columnDef.name, workType: row["SINFO2"], info: row["groupName"] });
|
showEquipSrv({ date: columnDef.name, workType: row["SWRKTYPE"], info: row["groupName"] });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return { cellStyle, cellProps, data };
|
return { cellStyle, cellProps, data };
|
||||||
case "red":
|
case "red":
|
||||||
cellStyle = { ...cellStyle, backgroundColor: "crimson", border: "1px solid rgba(0, 0, 0) !important" };
|
cellStyle = { ...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: () => {
|
||||||
showEquipSrv({ date: columnDef.name, workType: row["SINFO2"], info: row["groupName"] });
|
showEquipSrv({ date: columnDef.name, workType: row["SWRKTYPE"], info: row["groupName"] });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return { cellStyle, cellProps, data };
|
return { cellStyle, cellProps, data };
|
||||||
@ -187,16 +147,16 @@ export const dataCellRender = ({ row, columnDef }, showEquipSrv) => {
|
|||||||
<Grid
|
<Grid
|
||||||
item
|
item
|
||||||
xs={6}
|
xs={6}
|
||||||
sx={{ backgroundColor: "green" }}
|
sx={{ cursor: "pointer", backgroundColor: "green" }}
|
||||||
onClick={() => showEquipSrv({ date: columnDef.name, workType: row["SINFO2"], info: row["groupName"] })}
|
onClick={() => showEquipSrv({ date: columnDef.name, workType: row["SWRKTYPE"], info: row["groupName"] })}
|
||||||
>
|
>
|
||||||
<p style={{ display: "none" }}>g</p>
|
<p style={{ display: "none" }}>g</p>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid
|
<Grid
|
||||||
item
|
item
|
||||||
xs={6}
|
xs={6}
|
||||||
sx={{ backgroundColor: "crimson" }}
|
sx={{ cursor: "pointer", backgroundColor: "crimson" }}
|
||||||
onClick={() => showEquipSrv({ date: columnDef.name, workType: row["SINFO2"], info: row["groupName"] })}
|
onClick={() => showEquipSrv({ date: columnDef.name, workType: row["SWRKTYPE"], info: row["groupName"] })}
|
||||||
>
|
>
|
||||||
<p style={{ display: "none" }}>r</p>
|
<p style={{ display: "none" }}>r</p>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -5,13 +5,13 @@ create or replace package PKG_P8PANELS_EQUIPSRV as
|
|||||||
(
|
(
|
||||||
COUT out clob -- XML с параметрами фильтра по умолчанию
|
COUT out clob -- XML с параметрами фильтра по умолчанию
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Формирование строки с кол-вом часов */
|
/* Формирование строки с кол-вом часов */
|
||||||
function HOURS_STR
|
function HOURS_STR
|
||||||
(
|
(
|
||||||
NHOURS in number -- Кол-во часов
|
NHOURS in number -- Кол-во часов
|
||||||
) return varchar2; -- Результат работы
|
) return varchar2; -- Результат работы
|
||||||
|
|
||||||
/* Отбор документов (ТОиР или Графики ремонтов) по дате */
|
/* Отбор документов (ТОиР или Графики ремонтов) по дате */
|
||||||
procedure SELECT_EQUIPSRV
|
procedure SELECT_EQUIPSRV
|
||||||
(
|
(
|
||||||
@ -27,7 +27,7 @@ create or replace package PKG_P8PANELS_EQUIPSRV as
|
|||||||
NWORKTYPE in number, -- Тип работы (0 - план, 1 - факт)
|
NWORKTYPE in number, -- Тип работы (0 - план, 1 - факт)
|
||||||
NIDENT out number -- Идентификатор буфера подобранных (списка отмеченных записей, null - не найдено)
|
NIDENT out number -- Идентификатор буфера подобранных (списка отмеченных записей, null - не найдено)
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Выполнение работ по ТОиР */
|
/* Выполнение работ по ТОиР */
|
||||||
procedure EQUIPSRV_GRID
|
procedure EQUIPSRV_GRID
|
||||||
(
|
(
|
||||||
@ -54,10 +54,9 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
SJUR_PERS PKG_STD.TSTRING := null; -- Юр. лицо (наименование)
|
SJUR_PERS PKG_STD.TSTRING := null; -- Юр. лицо (наименование)
|
||||||
NJUR_PERS PKG_STD.TREF := null; -- Юр. лицо (идентификатор)
|
|
||||||
begin
|
begin
|
||||||
/* Находим юр. лицо */
|
/* Находим юр. лицо */
|
||||||
FIND_JURPERSONS_MAIN(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, SJUR_PERS => SJUR_PERS, NJUR_PERS => NJUR_PERS);
|
SJUR_PERS := GET_OPTIONS_STR(SCODE => 'JuridicalPerson', NCOMP_VERS => NCOMPANY);
|
||||||
/* Формируем XML */
|
/* Формируем XML */
|
||||||
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||||
PKG_XFAST.DOWN_NODE(SNAME => 'DATA');
|
PKG_XFAST.DOWN_NODE(SNAME => 'DATA');
|
||||||
@ -75,7 +74,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
COUT := PKG_XFAST.SERIALIZE_TO_CLOB();
|
COUT := PKG_XFAST.SERIALIZE_TO_CLOB();
|
||||||
PKG_XFAST.EPILOGUE();
|
PKG_XFAST.EPILOGUE();
|
||||||
end GET_DEFAULT_FP;
|
end GET_DEFAULT_FP;
|
||||||
|
|
||||||
/* Формирование строки с кол-вом часов */
|
/* Формирование строки с кол-вом часов */
|
||||||
function HOURS_STR
|
function HOURS_STR
|
||||||
(
|
(
|
||||||
@ -84,17 +83,18 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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(TRUNC(NHOURS), 10) = 1) and (mod(TRUNC(NHOURS), 100) != 11)) then
|
||||||
SRESULT := NHOURS || ' час';
|
SRESULT := NHOURS || ' час';
|
||||||
elsif (((mod(NHOURS, 10) = 2) and (mod(NHOURS, 100) != 12)) or ((mod(NHOURS, 10) = 3) and (mod(NHOURS, 100) != 13)) or
|
elsif (((mod(TRUNC(NHOURS), 10) = 2) and (mod(TRUNC(NHOURS), 100) != 12)) or
|
||||||
((mod(NHOURS, 10) = 4) and (mod(NHOURS, 100) != 14))) then
|
((mod(TRUNC(NHOURS), 10) = 3) and (mod(TRUNC(NHOURS), 100) != 13)) or
|
||||||
|
((mod(TRUNC(NHOURS), 10) = 4) and (mod(TRUNC(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
|
procedure SELECT_EQUIPSRV
|
||||||
(
|
(
|
||||||
@ -113,7 +113,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
NSELECTLIST PKG_STD.TREF; -- Рег. номер добавленной записи буфера подобранных
|
NSELECTLIST PKG_STD.TREF; -- Рег. номер добавленной записи буфера подобранных
|
||||||
SDATE PKG_STD.TSTRING; -- Строка даты
|
SDATE PKG_STD.TSTRING; -- Строка даты
|
||||||
begin
|
begin
|
||||||
/* Проверка на дату с днём */
|
/* Проверка на дату с днём */
|
||||||
if (NDAY is not null) then
|
if (NDAY is not null) then
|
||||||
@ -138,17 +138,19 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
and J.CODE = SBELONG
|
and J.CODE = SBELONG
|
||||||
and T.EQCONFIG = C1.RN
|
and T.EQCONFIG = C1.RN
|
||||||
and C1.CODE = SPRODOBJ
|
and C1.CODE = SPRODOBJ
|
||||||
and T.DEPTTCSRV = DS.RN
|
and T.DEPTTCSRV = DS.RN(+)
|
||||||
and (DS.CODE = STECHSERV or STECHSERV is null)
|
and (DS.CODE = STECHSERV or STECHSERV is null)
|
||||||
and T.DEPTRESP = DR.RN
|
and T.DEPTRESP = DR.RN(+)
|
||||||
and (DR.CODE = SRESPDEP or SRESPDEP is null)
|
and (DR.CODE = SRESPDEP or SRESPDEP is null)
|
||||||
and T.EQCONFIG_TECH = C2.RN
|
and T.EQCONFIG_TECH = C2.RN
|
||||||
and C2.NAME = STECHNAME
|
and C2.NAME = STECHNAME
|
||||||
and T.EQTECSRVKIND = SK.RN
|
and T.EQTECSRVKIND = SK.RN
|
||||||
and SK.CODE = SSRVKIND
|
and SK.CODE = SSRVKIND
|
||||||
and ((NDAY is not null and TO_DATE(SDATE, 'dd.mm.yyyy') between TRUNC(T.DATEPRD_BEG) and
|
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
|
TRUNC(T.DATEPRD_END)) or
|
||||||
SDATE = TO_CHAR(T.DATEPRD_END, 'mm.yyyy')))))
|
(NDAY is null and TRUNC(T.DATEPRD_BEG, 'MONTH') <= TRUNC(TO_DATE(SDATE, 'mm.yyyy'), 'MONTH') and
|
||||||
|
TRUNC(TO_DATE(SDATE, 'mm.yyyy'), 'MONTH') <= TRUNC(LAST_DAY(T.DATEPRD_END)))))
|
||||||
|
|
||||||
loop
|
loop
|
||||||
/* Сформируем идентификатор буфера */
|
/* Сформируем идентификатор буфера */
|
||||||
if (NIDENT is null) then
|
if (NIDENT is null) then
|
||||||
@ -183,8 +185,9 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
and T.TECSRVKIND = SK.RN
|
and T.TECSRVKIND = SK.RN
|
||||||
and SK.CODE = SSRVKIND
|
and SK.CODE = SSRVKIND
|
||||||
and ((NDAY is not null and TO_DATE(SDATE, 'dd.mm.yyyy') between TRUNC(T.DATEFACT_BEG) and
|
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
|
TRUNC(T.DATEFACT_END)) or
|
||||||
SDATE = TO_CHAR(T.DATEFACT_END, 'mm.yyyy')))))
|
(NDAY is null and TRUNC(T.DATEFACT_BEG, 'MONTH') <= TRUNC(TO_DATE(SDATE, 'mm.yyyy'), 'MONTH') and
|
||||||
|
TRUNC(TO_DATE(SDATE, 'mm.yyyy'), 'MONTH') <= TRUNC(LAST_DAY(T.DATEFACT_END)))))
|
||||||
loop
|
loop
|
||||||
/* Сформируем идентификатор буфера */
|
/* Сформируем идентификатор буфера */
|
||||||
if (NIDENT is null) then
|
if (NIDENT is null) then
|
||||||
@ -243,85 +246,107 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
NDAY_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; -- Работы в день
|
||||||
SGROUP_FILLED 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
|
CR PKG_STD.TSTRING; -- Текущий ключ коллекции MCLR
|
||||||
|
GF PKG_CONTVALLOC1S.TCONTAINER; -- Коллекция заполнения групп по объекту ремонта
|
||||||
|
COLS PKG_CONTVALLOC1S.TCONTAINER; -- Коллекция закрашивания колонок
|
||||||
|
|
||||||
/* Курсор с работами ТОиР */
|
/* Курсор с работами ТОиР */
|
||||||
cursor C1 is
|
cursor C1 is
|
||||||
select TT.NEQV_RN,
|
select TT.NEQV_RN NEQV_RN,
|
||||||
TT.NEQS_RN,
|
TT.NEQS_RN NEQS_RN,
|
||||||
TT.NWRK_RN NRN,
|
TT.NWRK_RN NRN,
|
||||||
TT.COMPANY NCOMPANY,
|
TT.NCOMPANY NCOMPANY,
|
||||||
TT.NAME_WORK SWORKNAME,
|
TT.SNAME_WORK SWORKNAME,
|
||||||
EC2.CODE STECHOBJCODE,
|
EC2.CODE STECHOBJCODE,
|
||||||
EC2.NAME STECHOBJNAME,
|
EC2.NAME STECHOBJNAME,
|
||||||
JP.CODE SBELONG,
|
JP.CODE SBELONG,
|
||||||
EC1.CODE SPRODOBJ,
|
EC1.CODE SPRODOBJ,
|
||||||
DS.CODE STECHSERV,
|
DS.CODE STECHSERV,
|
||||||
DR.CODE SRESPDEP,
|
DR.CODE SRESPDEP,
|
||||||
TT.DATEPRD_BEG DDATEPLANBEG,
|
TT.DDATEPRD_BEG DDATEPLANBEG,
|
||||||
TT.DATEPRD_END DDATEPLANEND,
|
TT.DDATEPRD_END DDATEPLANEND,
|
||||||
EQJ.DATEFACT_BEG DDATEFACTBEG,
|
EQJ.DATEFACT_BEG DDATEFACTBEG,
|
||||||
EQJ.DATEFACT_END 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.DATEPRD_END - TT.DATEPRD_BEG) * 24) NSUMWORKPLAN,
|
COALESCE(EW.NSUM, (TT.DDATEPRD_END - TT.DDATEPRD_BEG) * 24) NSUMWORKPLAN,
|
||||||
COALESCE(EWJ.NSUMF, (EQJ.DATEFACT_END - EQJ.DATEFACT_BEG) * 24) NSUMWORKFACT
|
COALESCE(EWJ.NSUMF, (EQJ.DATEFACT_END - EQJ.DATEFACT_BEG) * 24) NSUMWORKFACT
|
||||||
from (select B.*,
|
from (select B.NEQV_RN NEQV_RN,
|
||||||
C.RN NWRK_RN,
|
B.NCOMPANY NCOMPANY,
|
||||||
C.PRN NWRK_PRN,
|
B.NJUR_PERS NJUR_PERS,
|
||||||
C.NAME_WORK,
|
B.NSTATE NSTATE,
|
||||||
C.DATEPLAN_BEG,
|
B.DDATEPRD_BEG DDATEPRD_BEG,
|
||||||
C.DATEPLAN_END,
|
B.DDATEPRD_END DDATEPRD_END,
|
||||||
C.TECSRVKIND,
|
B.NEQS_RN NEQS_RN,
|
||||||
C.EQCONFIG,
|
C.RN NWRK_RN,
|
||||||
C.DEPTPERF,
|
C.PRN NWRK_PRN,
|
||||||
C.DEPTTCSRV,
|
C.NAME_WORK SNAME_WORK,
|
||||||
C.RESP_AGN
|
C.DATEPLAN_BEG DDATEPLAN_BEG,
|
||||||
from (select EQV.RN NEQV_RN,
|
C.DATEPLAN_END DDATEPLAN_END,
|
||||||
EQV.COMPANY,
|
COALESCE(C.TECSRVKIND, B.NEQTECSRVKIND) NTECSRVKIND,
|
||||||
EQV.JUR_PERS,
|
COALESCE(C.EQCONFIG, B.NEQCONFIG_TECH) NEQCONFIG,
|
||||||
EQV.STATE,
|
C.DEPTPERF NDEPTPERF,
|
||||||
EQV.DATEPRD_BEG,
|
C.DEPTTCSRV NDEPTTCSRV,
|
||||||
EQV.DATEPRD_END,
|
C.RESP_AGN NRESP_AGN
|
||||||
EQS.RN NEQS_RN
|
from (select EQV.RN NEQV_RN,
|
||||||
|
EQV.COMPANY NCOMPANY,
|
||||||
|
EQV.JUR_PERS NJUR_PERS,
|
||||||
|
EQV.STATE NSTATE,
|
||||||
|
EQV.DATEPRD_BEG DDATEPRD_BEG,
|
||||||
|
EQV.DATEPRD_END DDATEPRD_END,
|
||||||
|
EQV.EQTECSRVKIND NEQTECSRVKIND,
|
||||||
|
EQV.EQCONFIG_TECH NEQCONFIG_TECH,
|
||||||
|
EQS.RN NEQS_RN
|
||||||
from EQTCHSRV EQV,
|
from EQTCHSRV EQV,
|
||||||
|
JURPERSONS J,
|
||||||
DOCLINKS DL,
|
DOCLINKS DL,
|
||||||
EQRPSHEETS EQS
|
EQRPSHEETS EQS
|
||||||
where EQV.RN = DL.IN_DOCUMENT(+)
|
where EQV.JUR_PERS = J.RN
|
||||||
|
and J.CODE = SBELONG
|
||||||
|
and EQV.RN = DL.IN_DOCUMENT(+)
|
||||||
and DL.OUT_UNITCODE(+) = 'EquipRepairSheets'
|
and DL.OUT_UNITCODE(+) = 'EquipRepairSheets'
|
||||||
and DL.OUT_DOCUMENT = EQS.RN(+)) B,
|
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.NEQV_RN NEQV_RN,
|
||||||
C.RN NWRK_RN,
|
B.NCOMPANY NCOMPANY,
|
||||||
C.PRN NWRK_PRN,
|
B.NJUR_PERS NJUR_PERS,
|
||||||
C.NAME_WORK,
|
B.NSTATE NSTATE,
|
||||||
C.DATEPLAN_BEG,
|
B.DDATEPLAN_BEG DDATEPLAN_BEG,
|
||||||
C.DATEPLAN_END,
|
B.DDATEPLAN_END DDATEPLAN_END,
|
||||||
C.TECSRVKIND,
|
B.NEQS_RN NEQS_RN,
|
||||||
C.EQCONFIG,
|
C.RN NWRK_RN,
|
||||||
C.DEPTPERF,
|
C.PRN NWRK_PRN,
|
||||||
null DEPTTCSRV,
|
C.NAME_WORK SNAME_WORK,
|
||||||
C.RESP_AGN
|
C.DATEPLAN_BEG DDATEPLAN_BEG,
|
||||||
|
C.DATEPLAN_END DDATEPLAN_END,
|
||||||
|
COALESCE(C.TECSRVKIND, B.NTECSRVKIND) NTECSRVKIND,
|
||||||
|
COALESCE(C.EQCONFIG, B.NEQCONFIG) NEQCONFIG,
|
||||||
|
C.DEPTPERF NDEPTPERF,
|
||||||
|
null NDEPTTCSRV,
|
||||||
|
C.RESP_AGN NRESP_AGN
|
||||||
from (select null NEQV_RN,
|
from (select null NEQV_RN,
|
||||||
EQS.COMPANY,
|
EQS.COMPANY NCOMPANY,
|
||||||
EQS.JURPERSONS JUR_PERS,
|
EQS.JURPERSONS NJUR_PERS,
|
||||||
EQS.STATE,
|
EQS.STATE NSTATE,
|
||||||
EQS.DATEPLAN_BEG,
|
EQS.DATEPLAN_BEG DDATEPLAN_BEG,
|
||||||
EQS.DATEPLAN_END,
|
EQS.DATEPLAN_END DDATEPLAN_END,
|
||||||
EQS.RN NEQS_RN
|
EQS.RN NEQS_RN,
|
||||||
from EQRPSHEETS EQS
|
EQS.EQCONFIG NEQCONFIG,
|
||||||
|
EQS.TECSRVKIND NTECSRVKIND
|
||||||
|
from EQRPSHEETS EQS,
|
||||||
|
JURPERSONS J
|
||||||
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')
|
||||||
|
and EQS.JURPERSONS = J.RN
|
||||||
|
and J.CODE = SBELONG) B,
|
||||||
EQRPSHWRK C
|
EQRPSHWRK C
|
||||||
where B.NEQS_RN = C.PRN(+)) TT,
|
where B.NEQS_RN = C.PRN(+)) TT,
|
||||||
EQTECSRVKIND EK,
|
EQTECSRVKIND EK,
|
||||||
@ -332,28 +357,28 @@ 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 NPRN,
|
||||||
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 NPRN,
|
||||||
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.NCOMPANY = 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.NSTATE in (1, 2) and TT.NEQV_RN is not null) or (TT.NSTATE in (0, 2, 3) and TT.NEQV_RN is null))
|
||||||
and TT.DATEPRD_BEG >= NFROMDATE
|
and TT.DDATEPRD_BEG >= NFROMDATE
|
||||||
and TT.DATEPRD_END <= NTODATE
|
and TT.DDATEPRD_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.NEQCONFIG = EC2.RN(+)
|
||||||
and TT.DEPTPERF = DR.RN(+)
|
and TT.NDEPTPERF = DR.RN(+)
|
||||||
and TT.DEPTTCSRV = DS.RN(+)
|
and TT.NDEPTTCSRV = DS.RN(+)
|
||||||
and TT.NWRK_RN = EW.PRN(+)
|
and TT.NWRK_RN = EW.NPRN(+)
|
||||||
and EQJ.RN = EWJ.PRN(+)
|
and EQJ.RN = EWJ.NPRN(+)
|
||||||
and TT.TECSRVKIND = EK.RN(+)
|
and TT.NTECSRVKIND = 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
|
and ((DL.OUT_UNITCODE = 'EquipTechServiceJournal' and DL.RN is not null) or
|
||||||
(DL.OUT_UNITCODE is null and DL.RN is null))
|
(DL.OUT_UNITCODE is null and DL.RN is null))
|
||||||
@ -369,16 +394,16 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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 => 'SOBJINFO',
|
||||||
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 => 'SWRKTYPE',
|
||||||
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,
|
||||||
@ -459,6 +484,8 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
/* Очистка коллекций */
|
/* Очистка коллекций */
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => GF);
|
||||||
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => COLS);
|
||||||
/* Текущий год */
|
/* Текущий год */
|
||||||
NCURYEAR := EXTRACT(year from sysdate);
|
NCURYEAR := EXTRACT(year from sysdate);
|
||||||
/* Текущий месяц */
|
/* Текущий месяц */
|
||||||
@ -554,10 +581,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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 => 'план: ' ||
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_P')) ||
|
SROWID => SPERIODNAME || '_P'),
|
||||||
' факт: ' ||
|
1)) || ' факт: ' ||
|
||||||
HOURS_STR(PKG_CONTVALLOC1S.GETN(YM, SPERIODNAME || '_F')));
|
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
|
SROWID => SPERIODNAME || '_F'),
|
||||||
|
1)));
|
||||||
/* Добавление в коллекцию трудоёмкость план */
|
/* Добавление в коллекцию трудоёмкость план */
|
||||||
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0);
|
PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0);
|
||||||
/* Добавление в коллекцию трудоёмкость факт */
|
/* Добавление в коллекцию трудоёмкость факт */
|
||||||
@ -575,12 +604,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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 => 'SOBJINFO', 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 (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) 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);
|
||||||
@ -607,13 +636,13 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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 => 'SOBJINFO', 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 => 'SWRKTYPE', 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 => 'SWRKTYPE', SVALUE => 'Факт');
|
||||||
/* Добавляем в заполненные группы */
|
/* Добавляем в заполненные группы */
|
||||||
SGROUP_FILLED := SGROUP_FILLED || SPRJ_GROUP_NAME || ';';
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => '');
|
||||||
end if;
|
end if;
|
||||||
/* Плановые работы */
|
/* Плановые работы */
|
||||||
if (QQ.NEQV_RN is not null) then
|
if (QQ.NEQV_RN is not null) then
|
||||||
@ -634,16 +663,22 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
QQ.NSUMWORKPLAN);
|
QQ.NSUMWORKPLAN);
|
||||||
end if;
|
end if;
|
||||||
/* Закрашивание месяца плана синим */
|
/* Закрашивание месяца плана синим */
|
||||||
if (STRIN(SSUBSTR => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', SSOURCE => SCOLS, SDELIM => ';') = 0) then
|
if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
|
false) 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;';
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
|
SVALUE => '');
|
||||||
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 (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') =
|
||||||
|
false) 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;';
|
PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS,
|
||||||
|
SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN',
|
||||||
|
SVALUE => '');
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
end if;
|
end if;
|
||||||
@ -739,12 +774,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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 => 'план: ' ||
|
SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
HOURS_STR(NHOURS => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SROWID => SPERIODNAME || '_P'),
|
||||||
SROWID => SPERIODNAME || '_P')) ||
|
1)) || ' факт: ' ||
|
||||||
' факт: ' ||
|
HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
||||||
HOURS_STR(NHOURS => PKG_CONTVALLOC1S.GETN(RCONTAINER => YM,
|
SROWID => SPERIODNAME || '_F'),
|
||||||
SROWID => SPERIODNAME || '_F')));
|
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_ROW0);
|
||||||
@ -768,7 +803,11 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as
|
|||||||
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(RCONTAINER => YM);
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM);
|
||||||
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR);
|
||||||
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => GF);
|
||||||
|
PKG_CONTVALLOC1S.PURGE(RCONTAINER => COLS);
|
||||||
end EQUIPSRV_GRID;
|
end EQUIPSRV_GRID;
|
||||||
|
|
||||||
end PKG_P8PANELS_EQUIPSRV;
|
end PKG_P8PANELS_EQUIPSRV;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user