ЦИТК-878 - "Доски задач" - доработана под логику смены статуса события с релиза "июнь 2025", исправлена ошибка инициализации клиента с пустым хранилищем, купирована ошибка с отсутствием профиля настроек
This commit is contained in:
parent
fe1e3ba04f
commit
9cbc52cff2
@ -95,7 +95,7 @@ const useColorRules = () => {
|
||||
const [colorRules, setColorRules] = useState({
|
||||
loaded: false,
|
||||
rules: [],
|
||||
selectedColorRule: JSON.parse(getLocalStorageValue("settingsColorRule") || {})
|
||||
selectedColorRule: JSON.parse(getLocalStorageValue("settingsColorRule")) || {}
|
||||
});
|
||||
|
||||
//Подключение к контексту взаимодействия с сервером
|
||||
|
||||
@ -160,7 +160,7 @@ const useTasksFunctions = () => {
|
||||
callBack: sendPrms => {
|
||||
const mainArgs = {
|
||||
NIDENT: pointInfo.NIDENT,
|
||||
NSTEP: 3,
|
||||
NSTEP: 4,
|
||||
NEVENT: nEvent,
|
||||
SEVENT_STAT: pointInfo.SEVENT_STAT,
|
||||
SSEND_CLIENT: sendPrms.outParameters.out_CLIENT_CODE,
|
||||
@ -182,7 +182,7 @@ const useTasksFunctions = () => {
|
||||
//Общие аргументы
|
||||
const mainArgs = {
|
||||
NIDENT: pointInfo.NIDENT,
|
||||
NSTEP: 3,
|
||||
NSTEP: 4,
|
||||
NEVENT: nEvent,
|
||||
SEVENT_STAT: pointInfo.SEVENT_STAT
|
||||
};
|
||||
@ -193,46 +193,71 @@ const useTasksFunctions = () => {
|
||||
[handleEventRoutesPointExecutersOpen, handleStateChange]
|
||||
);
|
||||
|
||||
//При выполнении третьего шага
|
||||
const handleMakeThirdStep = useCallback(
|
||||
async ({ nEvent, pointInfo, onReload = null, onNoteOpen = null }) => {
|
||||
//Выполняем переход на следующий шаг
|
||||
await executeStored({
|
||||
stored: "PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE",
|
||||
args: {
|
||||
NIDENT: pointInfo.NIDENT,
|
||||
NSTEP: 3,
|
||||
NPASS: pointInfo.NPASS
|
||||
}
|
||||
});
|
||||
//Выполняем выбор исполнителя
|
||||
handleExecuterSelect({
|
||||
nEvent,
|
||||
pointInfo,
|
||||
onReload,
|
||||
onNoteOpen
|
||||
});
|
||||
},
|
||||
[executeStored, handleExecuterSelect]
|
||||
);
|
||||
|
||||
//При выполнении второго шага
|
||||
const handleMakeSecondStep = useCallback(
|
||||
async ({ nIdent, nPass }) => {
|
||||
async ({ nEvent, pointInfo, onReload = null, onNoteOpen = null }) => {
|
||||
//Состояние параметров текущего действия
|
||||
let currentPointInfo = { ...pointInfo };
|
||||
//Выполняем переход на следующий шаг
|
||||
const secondStep = await executeStored({
|
||||
stored: "PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE",
|
||||
args: {
|
||||
NIDENT: nIdent,
|
||||
NIDENT: currentPointInfo.NIDENT,
|
||||
NSTEP: 2,
|
||||
NPASS: nPass
|
||||
NPASS: currentPointInfo.NPASS
|
||||
}
|
||||
});
|
||||
//Возвращаем параметры выполнения
|
||||
return secondStep;
|
||||
//Устанавливаем признак необходимости выбора исполнителя
|
||||
currentPointInfo.NSELECT_EXEC = secondStep.NSELECT_EXEC;
|
||||
//Выполняем третий шаг
|
||||
handleMakeThirdStep({ nEvent, pointInfo: currentPointInfo, onReload, onNoteOpen });
|
||||
},
|
||||
[executeStored]
|
||||
[executeStored, handleMakeThirdStep]
|
||||
);
|
||||
|
||||
//При выборе следующей точки события
|
||||
const handleNextPointSelect = useCallback(
|
||||
({ nEvent, pointInfo, onReload = null, onNoteOpen = null }) => {
|
||||
//Состояние параметров текущего действия
|
||||
let currentPointInfo = { ...pointInfo };
|
||||
//Открываем раздел "Маршруты событий (точки перехода)" для выбора следующей точки
|
||||
handleEventRoutesPointsPassessOpen({
|
||||
sEventType: pointInfo.SEVENT_TYPE,
|
||||
sEventStatus: pointInfo.SEVENT_STAT,
|
||||
nPoint: pointInfo.NPOINT,
|
||||
sEventType: currentPointInfo.SEVENT_TYPE,
|
||||
sEventStatus: currentPointInfo.SEVENT_STAT,
|
||||
nPoint: currentPointInfo.NPOINT,
|
||||
callBack: async point => {
|
||||
//Устанавливаем полученную точку перехода
|
||||
currentPointInfo.NPASS = point.outParameters.out_RN;
|
||||
currentPointInfo.SEVENT_STAT = point.outParameters.out_NEXT_POINT;
|
||||
//Выполняем второй шаг
|
||||
let secondStep = await handleMakeSecondStep({ nIdent: pointInfo.NIDENT, nPass: point.outParameters.out_RN });
|
||||
//Выполняем выбор исполнителя
|
||||
handleExecuterSelect({
|
||||
nEvent,
|
||||
pointInfo: { ...pointInfo, SEVENT_STAT: point.outParameters.out_NEXT_POINT, NSELECT_EXEC: secondStep.NSELECT_EXEC },
|
||||
onReload,
|
||||
onNoteOpen
|
||||
});
|
||||
handleMakeSecondStep({ nEvent, pointInfo: currentPointInfo, onReload, onNoteOpen });
|
||||
}
|
||||
});
|
||||
},
|
||||
[handleEventRoutesPointsPassessOpen, handleMakeSecondStep, handleExecuterSelect]
|
||||
[handleEventRoutesPointsPassessOpen, handleMakeSecondStep]
|
||||
);
|
||||
|
||||
//По нажатию действия "Перейти"
|
||||
@ -259,17 +284,12 @@ const useTasksFunctions = () => {
|
||||
onNoteOpen
|
||||
});
|
||||
} else {
|
||||
//Выполняем перехода без выбора точки
|
||||
handleExecuterSelect({
|
||||
nEvent,
|
||||
pointInfo: eventInfo,
|
||||
onReload,
|
||||
onNoteOpen
|
||||
});
|
||||
//Выполняем второй шаг
|
||||
handleMakeSecondStep({ nEvent, pointInfo: eventInfo, onReload, onNoteOpen });
|
||||
}
|
||||
}
|
||||
},
|
||||
[executeStored, handleExecuterSelect, handleNextPointSelect]
|
||||
[executeStored, handleMakeSecondStep, handleNextPointSelect]
|
||||
);
|
||||
|
||||
return { handleTaskStateChange, handleTaskSend };
|
||||
|
||||
@ -183,9 +183,7 @@ export const formatSqlDate = timeStamp => {
|
||||
};
|
||||
|
||||
//Считывание значений из локального хранилища
|
||||
export const getLocalStorageValue = (sName, defaultValue = null) => {
|
||||
return localStorage.getItem(sName) ? localStorage.getItem(sName) : defaultValue;
|
||||
};
|
||||
export const getLocalStorageValue = (sName, defaultValue = null) => localStorage.getItem(sName) || defaultValue;
|
||||
|
||||
//Форматирование фильтра в массив для отбора
|
||||
export const convertFilterValuesToArray = filterValues => {
|
||||
|
||||
@ -94,7 +94,7 @@ create or replace package PKG_P8PANELS_CLNTTSKBRD as
|
||||
SCLIENT_CLIENT in out varchar2, -- Клиент–организация, для отбора исполнителей
|
||||
SCLIENT_PERSON in out varchar2, -- Клиент–сотрудник, для отбора исполнителей
|
||||
NPOINT in out number, -- Текущая точка маршрута
|
||||
NPASS in number, -- Точка перехода
|
||||
NPASS in out number, -- Точка перехода
|
||||
NSELECT_EXEC out number, -- Признак необходимости выбора исполнителя
|
||||
SEXECUTEMETHOD out varchar2, -- Мнемокод метода
|
||||
SSEND_CLIENT in varchar2, -- Направить – организация
|
||||
@ -1770,7 +1770,7 @@ create or replace package body PKG_P8PANELS_CLNTTSKBRD as
|
||||
SCLIENT_CLIENT in out varchar2, -- Клиент–организация, для отбора исполнителей
|
||||
SCLIENT_PERSON in out varchar2, -- Клиент–сотрудник, для отбора исполнителей
|
||||
NPOINT in out number, -- Текущая точка маршрута
|
||||
NPASS in number, -- Точка перехода
|
||||
NPASS in out number, -- Точка перехода
|
||||
NSELECT_EXEC out number, -- Признак необходимости выбора исполнителя
|
||||
SEXECUTEMETHOD out varchar2, -- Мнемокод метода
|
||||
SSEND_CLIENT in varchar2, -- Направить – организация
|
||||
@ -1882,43 +1882,17 @@ create or replace package body PKG_P8PANELS_CLNTTSKBRD as
|
||||
NSEND_PREDEFINED_PROC => NSEND_PREDEFINED_PROC);
|
||||
/* Если это первый шаг и уже известен следующий статус */
|
||||
if ((NSTEP_CURRENT = 1) and (SNEXT_STAT is not null)) then
|
||||
/* Сразу выполняем следующее действие */
|
||||
P_CLNEVENTS_CHANGE_STATE_WEB(NCOMPANY => NCOMPANY,
|
||||
NIDENT => NIDENT,
|
||||
NSTEP => NSTEP,
|
||||
NEVENT => NEVENT,
|
||||
SEVENT => SEVENT,
|
||||
SEVENT_TYPE => SEVENT_TYPE,
|
||||
SEVENT_STAT => SEVENT_STAT,
|
||||
SINIT_PERSON => SINIT_PERSON,
|
||||
SINIT_AUTHNAME => SINIT_AUTHNAME,
|
||||
SCLIENT_CLIENT => SCLIENT_CLIENT,
|
||||
SCLIENT_PERSON => SCLIENT_PERSON,
|
||||
NPOINT => NPOINT,
|
||||
NPASS => EVRTPTPASS_NEXT_GET(NCOMPANY => NCOMPANY,
|
||||
/* Определим точку перехода */
|
||||
NPASS := EVRTPTPASS_NEXT_GET(NCOMPANY => NCOMPANY,
|
||||
SEVENT_TYPE => SEVENT_TYPE,
|
||||
NPOINT => NPOINT,
|
||||
SEVENT_STAT => SEVENT_STAT,
|
||||
SNEXT_STAT => SNEXT_STAT),
|
||||
NSELECT_EXEC => NSELECT_EXEC,
|
||||
NCONFIRM_REQUIRED => NCONFIRM_REQUIRED,
|
||||
SCONFIRM_TEXT => SCONFIRM_TEXT,
|
||||
SEXECUTEMETHOD => SEXECUTEMETHOD,
|
||||
SSEND_CLIENT => SSEND_CLIENT,
|
||||
SSEND_DIVISION => SSEND_DIVISION,
|
||||
SSEND_POST => SSEND_POST,
|
||||
SSEND_PERFORM => SSEND_PERFORM,
|
||||
SSEND_PERSON => SSEND_PERSON,
|
||||
SSEND_STAFFGRP => SSEND_STAFFGRP,
|
||||
SSEND_USER_GROUP => SSEND_USER_GROUP,
|
||||
SSEND_USER_NAME => SSEND_USER_NAME,
|
||||
NSEND_PREDEFINED_EXEC => NSEND_PREDEFINED_EXEC,
|
||||
NSEND_PREDEFINED_PROC => NSEND_PREDEFINED_PROC);
|
||||
SNEXT_STAT => SNEXT_STAT);
|
||||
/* Указываем следующий статус */
|
||||
SEVENT_STAT := SNEXT_STAT;
|
||||
end if;
|
||||
/* Если это последний шаг */
|
||||
if (NSTEP_CURRENT = 3) then
|
||||
if (NSTEP_CURRENT = 4) then
|
||||
/* Если добавлено примечание */
|
||||
if (SNOTE is not null) then
|
||||
P_CLNEVNOTES_INSERT(NCOMPANY => NCOMPANY,
|
||||
@ -2351,9 +2325,7 @@ create or replace package body PKG_P8PANELS_CLNTTSKBRD as
|
||||
and U.UNITCODE = SUNIT_CLNEVENTS;
|
||||
exception
|
||||
when others then
|
||||
P_EXCEPTION(0,
|
||||
'Профиль пользователя "%s" для раздела "События" не найден.',
|
||||
SAUTHID);
|
||||
return null;
|
||||
end;
|
||||
/* Возвращаем результат */
|
||||
return BRESULT;
|
||||
@ -2361,6 +2333,11 @@ create or replace package body PKG_P8PANELS_CLNTTSKBRD as
|
||||
begin
|
||||
/* Считываем профиль пользователя для раздела "События" */
|
||||
BXML := USERPROFILES_GET(NCOMPANY => NCOMPANY, SAUTHID => SAUTHID);
|
||||
/* Проверим, что профиль не пустой */
|
||||
if (BXML is null) then
|
||||
return;
|
||||
end if;
|
||||
/* Данные в профиле есть - будем разбирать */
|
||||
begin
|
||||
/* Формируем XML данных */
|
||||
PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user