forked from CITKParus/P8-ExchangeService
Функция поиска контактов менеджера для Алисы
This commit is contained in:
parent
bc346574d3
commit
9c39977e40
@ -24,6 +24,14 @@ create or replace package UDO_PKG_EXS_ALICE as
|
|||||||
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* Îáðàáîòêà çàïðîñà íà ïîèñê êîíòàêòíîé èíôîðìàöèè */
|
||||||
|
procedure FIND_CONTACT
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
/
|
/
|
||||||
create or replace package body UDO_PKG_EXS_ALICE as
|
create or replace package body UDO_PKG_EXS_ALICE as
|
||||||
@ -76,6 +84,10 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
end if;
|
end if;
|
||||||
/* Íàïîëíèì å¸ îáùèìè ïîèñêîâûìè âñïîìîãàòåëüíûìè ôðàçàìè */
|
/* Íàïîëíèì å¸ îáùèìè ïîèñêîâûìè âñïîìîãàòåëüíûìè ôðàçàìè */
|
||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ñêàæè';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ïîäñêàæè';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ðàññêàæè';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ðàññêàæè';
|
||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ïðî';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ïðî';
|
||||||
@ -98,6 +110,8 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'èíôó';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'èíôó';
|
||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'èíôà';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'äàé';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'äàé';
|
||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'íàðîé';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'íàðîé';
|
||||||
@ -125,6 +139,12 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'íîìåð%';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'íîìåð%';
|
||||||
HELPER_PATTERNS.EXTEND();
|
HELPER_PATTERNS.EXTEND();
|
||||||
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'çà';
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'çà';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'êàê';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ÿ';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ñ';
|
||||||
end UTL_HELPER_INIT_COMMON;
|
end UTL_HELPER_INIT_COMMON;
|
||||||
|
|
||||||
/* Ïîäãîòîâêà ïîèñêîâîé ôðàçû ê ó÷àñòèþ â âûáîðêå */
|
/* Ïîäãîòîâêà ïîèñêîâîé ôðàçû ê ó÷àñòèþ â âûáîðêå */
|
||||||
@ -140,7 +160,24 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
begin
|
begin
|
||||||
/* Îáõîäèì ñëîâà ïîèñêîâîé ôðàçû */
|
/* Îáõîäèì ñëîâà ïîèñêîâîé ôðàçû */
|
||||||
for W in (select REGEXP_SUBSTR(T.STR, '[^' || SDELIM || ']+', 1, level) SWRD
|
for W in (select REGEXP_SUBSTR(T.STR, '[^' || SDELIM || ']+', 1, level) SWRD
|
||||||
from (select replace(replace(SSEARCH_STR, ',', ''), '.', '') STR from DUAL) T
|
from (select replace(replace(replace(replace(replace(replace(replace(replace(replace(SSEARCH_STR, ',', ''),
|
||||||
|
'.',
|
||||||
|
''),
|
||||||
|
'/',
|
||||||
|
''),
|
||||||
|
'\',
|
||||||
|
''),
|
||||||
|
'''',
|
||||||
|
''),
|
||||||
|
'"',
|
||||||
|
''),
|
||||||
|
':',
|
||||||
|
''),
|
||||||
|
'?',
|
||||||
|
''),
|
||||||
|
'!',
|
||||||
|
'') STR
|
||||||
|
from DUAL) T
|
||||||
connect by INSTR(T.STR, SDELIM, 1, level - 1) > 0)
|
connect by INSTR(T.STR, SDELIM, 1, level - 1) > 0)
|
||||||
loop
|
loop
|
||||||
/* Åñëè ñëîâî íå â ñïèñêå âñïîìîãàòåëüíûõ */
|
/* Åñëè ñëîâî íå â ñïèñêå âñïîìîãàòåëüíûõ */
|
||||||
@ -194,23 +231,18 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
(select sum(CN.DOC_SUM) from CONTRACTS CN where CN.AGENT = T.RN) NSUM_CONTRACTS,
|
(select sum(CN.DOC_SUM) from CONTRACTS CN where CN.AGENT = T.RN) NSUM_CONTRACTS,
|
||||||
T.PHONE SPHONE,
|
T.PHONE SPHONE,
|
||||||
T.MAIL SMAIL,
|
T.MAIL SMAIL,
|
||||||
T.AGN_COMMENT SCONTACT_PERSON,
|
T.AGN_COMMENT SCONTACT_PERSON
|
||||||
NVL((select 1 from DUAL where LOWER(T.AGN_COMMENT) like LOWER(CTMP)), 0) NLINKED_SIGN
|
|
||||||
from AGNLIST T,
|
from AGNLIST T,
|
||||||
ACATALOG CAT
|
ACATALOG CAT
|
||||||
where ((LOWER(T.AGNABBR) like LOWER(CTMP)) or (LOWER(T.AGNNAME) like LOWER(CTMP)) or
|
where ((LOWER(T.AGNABBR) like LOWER(CTMP)) or (LOWER(T.AGNNAME) like LOWER(CTMP)) or
|
||||||
(LOWER(T.AGN_COMMENT) like LOWER(CTMP)))
|
(LOWER(T.AGNFAMILYNAME_AC) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_ABL) like LOWER(CTMP)) or
|
||||||
|
(LOWER(T.AGNFAMILYNAME_TO) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_FR) like LOWER(CTMP)))
|
||||||
and T.CRN = CAT.RN
|
and T.CRN = CAT.RN
|
||||||
and CAT.NAME = SSEARCH_CATALOG_NAME
|
and CAT.NAME = SSEARCH_CATALOG_NAME
|
||||||
and ROWNUM <= 1)
|
and ROWNUM <= 1)
|
||||||
loop
|
loop
|
||||||
/* Îñíîâíàÿ èíôîðìàöèÿ */
|
/* Îñíîâíàÿ èíôîðìàöèÿ */
|
||||||
if (C.NLINKED_SIGN = 1) then
|
CRESP := C.SAGENT;
|
||||||
CRESP := 'Íå ÿâëÿåòñÿ ñàìîñòîÿòåëüíûì, íàéäåí ïî ñîâïàäåíèþ â äîïîëíèòåëüíîé èíôîðìàöèè ê êîíòðàãåíòó:' ||
|
|
||||||
CHR(10) || CHR(10) || C.SAGENT;
|
|
||||||
else
|
|
||||||
CRESP := C.SAGENT;
|
|
||||||
end if;
|
|
||||||
/* Äàëåå - â çàâèñèìîñòè îò òèïà, äëÿ ÞË - ñâåäåíèÿ î äîãîâîðàõ è êîíòàêòíîì ëèöå */
|
/* Äàëåå - â çàâèñèìîñòè îò òèïà, äëÿ ÞË - ñâåäåíèÿ î äîãîâîðàõ è êîíòàêòíîì ëèöå */
|
||||||
if (C.NAGNTYPE = 0) then
|
if (C.NAGNTYPE = 0) then
|
||||||
if (C.NCNT_CONTRACTS = 0) then
|
if (C.NCNT_CONTRACTS = 0) then
|
||||||
@ -386,13 +418,14 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
where V.UNIT_RN = T.RN
|
where V.UNIT_RN = T.RN
|
||||||
and V.DOCS_PROP_RN = DP.RN
|
and V.DOCS_PROP_RN = DP.RN
|
||||||
and DP.CODE = 'ÑîñòîÿíèåÇàêàçàÏîòð') SSTATE,
|
and DP.CODE = 'ÑîñòîÿíèåÇàêàçàÏîòð') SSTATE,
|
||||||
CN.ALTNAME10 SCUR
|
CN.ALTNAME10 SCUR,
|
||||||
|
AG.AGNNAME SMANAGER
|
||||||
from CONSUMERORD T,
|
from CONSUMERORD T,
|
||||||
AGNLIST AG,
|
AGNLIST AG,
|
||||||
CURNAMES CN,
|
CURNAMES CN,
|
||||||
ACATALOG CAT
|
ACATALOG CAT
|
||||||
where (LOWER(trim(T.ORD_NUMB)) like LOWER(CTMP))
|
where (LOWER(trim(T.ORD_NUMB)) like LOWER(CTMP))
|
||||||
and T.AGENT = AG.RN
|
and T.ACC_AGENT = AG.RN
|
||||||
and T.CURRENCY = CN.RN
|
and T.CURRENCY = CN.RN
|
||||||
and T.CRN = CAT.RN
|
and T.CRN = CAT.RN
|
||||||
and CAT.NAME = SSEARCH_CATALOG_NAME
|
and CAT.NAME = SSEARCH_CATALOG_NAME
|
||||||
@ -404,7 +437,7 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
if (C.SSTATE is not null) then
|
if (C.SSTATE is not null) then
|
||||||
CRESP := CRESP || ', íàõîäèòñÿ â ñîñòîÿíèè "' || C.SSTATE || '"';
|
CRESP := CRESP || ', íàõîäèòñÿ â ñîñòîÿíèè "' || C.SSTATE || '"';
|
||||||
else
|
else
|
||||||
CRESP := CRESP || ', ê ñîæàëåíèþ íå óäàëîñü îïðåäåëèòü ñîñòîÿíèå çàêàçà, íî ìû ìîæíî ñêàçàòü ÷òî';
|
CRESP := CRESP || ', ê ñîæàëåíèþ íå óäàëîñü îïðåäåëèòü ñîñòîÿíèå çàêàçà, íî ìîæíî ñêàçàòü ÷òî';
|
||||||
end if;
|
end if;
|
||||||
/* Ñóììà çàçàçà */
|
/* Ñóììà çàçàçà */
|
||||||
if (C.NSUM <> 0) then
|
if (C.NSUM <> 0) then
|
||||||
@ -412,6 +445,10 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
end if;
|
end if;
|
||||||
/* Ïëàíîâûé ñðîê èñïîëíåíèÿ */
|
/* Ïëàíîâûé ñðîê èñïîëíåíèÿ */
|
||||||
CRESP := CRESP || ', ïëàíîâàÿ äàòà èñïîëíåíèÿ çàêàçà ' || TO_CHAR(C.DRELEASE_DATE, 'dd.mm.yyyy');
|
CRESP := CRESP || ', ïëàíîâàÿ äàòà èñïîëíåíèÿ çàêàçà ' || TO_CHAR(C.DRELEASE_DATE, 'dd.mm.yyyy');
|
||||||
|
/* Ìåíåäæåð */
|
||||||
|
if (C.SMANAGER is not null) then
|
||||||
|
CRESP := CRESP || ', ìåíåäæåð: ' || C.SMANAGER;
|
||||||
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
else
|
else
|
||||||
CRESP := 'Íå óêàçàí ïîèñêîâûé çàïðîñ';
|
CRESP := 'Íå óêàçàí ïîèñêîâûé çàïðîñ';
|
||||||
@ -421,6 +458,86 @@ create or replace package body UDO_PKG_EXS_ALICE as
|
|||||||
SARG => PKG_EXS.SCONT_FLD_BRESP,
|
SARG => PKG_EXS.SCONT_FLD_BRESP,
|
||||||
BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8'));
|
BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8'));
|
||||||
end FIND_CONSUMERORD;
|
end FIND_CONSUMERORD;
|
||||||
|
|
||||||
|
/* Îáðàáîòêà çàïðîñà íà ïîèñê êîíòàêòíîé èíôîðìàöèè */
|
||||||
|
procedure FIND_CONTACT
|
||||||
|
(
|
||||||
|
NIDENT in number, -- Èäåíòèôèêàòîð ïðîöåññà
|
||||||
|
NSRV_TYPE in number, -- Òèï ñåðâèñà (ñì. êîíñòàíòû PKG_EXS.NSRV_TYPE*)
|
||||||
|
NEXSQUEUE in number -- Ðåãèñòðàöèîííûé íîìåð îáðàáàòûâàåìîé ïîçèöèè î÷åðåäè îáìåíà
|
||||||
|
)
|
||||||
|
is
|
||||||
|
HELPER_PATTERNS THELPER_PATTERNS; -- Êîëëåêöèÿ øàáëîíîâ âñïîìîãàòåëüíûõ ñëîâ ïîèñêà
|
||||||
|
REXSQUEUE EXSQUEUE%rowtype; -- Çàïèñü ïîçèöèè î÷åðåäè
|
||||||
|
CTMP clob; -- Áóôåð äëÿ êîíâåðòàöèè
|
||||||
|
CRESP clob; -- Äàííûå äëÿ îòâåòà
|
||||||
|
RCTMP sys_refcursor; -- Áóôåð äëÿ èçìåíåííîé ïîçèöèè î÷åðåäè
|
||||||
|
begin
|
||||||
|
/* Ñ÷èòàåì çàïèñü î÷åðåäè */
|
||||||
|
REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE);
|
||||||
|
/* Èíèöèàëèçèðóåì êîëëåêöèþ ñëîâ-ïîìîøíèêîâ */
|
||||||
|
UTL_HELPER_INIT_COMMON(HELPER_PATTERNS => HELPER_PATTERNS);
|
||||||
|
/* Íàïîëíÿåì å¸ çíà÷åíèÿìè èíäèâèäóàëüíûìè äëÿ äàííîãî çàïðîñà */
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%çâîíèòü';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'êîíòàêò%';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ñâÿç%';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'íàéòè';
|
||||||
|
HELPER_PATTERNS.EXTEND();
|
||||||
|
HELPER_PATTERNS(HELPER_PATTERNS.LAST) := 'ìåíåäæåð%';
|
||||||
|
/* Çàáèðàåì äàííûå ñîîáùåíèÿ è êîíâåðòèðóåì â êîäèðîâêó ÁÄ */
|
||||||
|
CTMP := BLOB2CLOB(LBDATA => REXSQUEUE.MSG, SCHARSET => 'UTF8');
|
||||||
|
/* Êëàä¸ì êîíâåðòèðîâàííîå îáðàòíî (ïðîñòî äëÿ óäîáñòâà ìîíèòîðèíãà) */
|
||||||
|
PKG_EXS.QUEUE_MSG_SET(NEXSQUEUE => REXSQUEUE.RN, BMSG => CLOB2BLOB(LCDATA => CTMP), RCQUEUE => RCTMP);
|
||||||
|
/* Åñëè åñòü ÷òî èñêàòü */
|
||||||
|
if (CTMP is not null) then
|
||||||
|
/* Ïîäãîòîâèì ïîèñêîâóþ ôðàçó */
|
||||||
|
CTMP := UTL_SEARCH_STR_PREPARE(SSEARCH_STR => CTMP, SDELIM => ' ', HELPER_PATTERNS => HELPER_PATTERNS);
|
||||||
|
/* Èíèöèàëèçèðóåì îòâåò */
|
||||||
|
CRESP := 'Êîíòàêò íå íàéäåí';
|
||||||
|
/* Èùåì çàïðîøåííîãî êîíòðàãåíòà */
|
||||||
|
for C in (select T.AGNNAME SAGENT,
|
||||||
|
T.AGNTYPE NAGNTYPE,
|
||||||
|
T.PHONE SPHONE,
|
||||||
|
T.MAIL SMAIL,
|
||||||
|
T.AGN_COMMENT SCONTACT_PERSON
|
||||||
|
from AGNLIST T,
|
||||||
|
ACATALOG CAT
|
||||||
|
where ((LOWER(T.AGNABBR) like LOWER(CTMP)) or (LOWER(T.AGNNAME) like LOWER(CTMP)) or
|
||||||
|
(LOWER(T.AGNFAMILYNAME_AC) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_ABL) like LOWER(CTMP)) or
|
||||||
|
(LOWER(T.AGNFAMILYNAME_TO) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_FR) like LOWER(CTMP)))
|
||||||
|
and T.CRN = CAT.RN
|
||||||
|
and CAT.NAME = SSEARCH_CATALOG_NAME
|
||||||
|
and ROWNUM <= 1)
|
||||||
|
loop
|
||||||
|
/* Îñíîâíàÿ èíôîðìàöèÿ */
|
||||||
|
CRESP := C.SAGENT;
|
||||||
|
/* Äàëåå - â çàâèñèìîñòè îò òèïà, äëÿ ÞË - ñâåäåíèÿ î äîãîâîðàõ è êîíòàêòíîì ëèöå */
|
||||||
|
if (C.NAGNTYPE = 0) then
|
||||||
|
if (C.SCONTACT_PERSON is not null) then
|
||||||
|
CRESP := CRESP || ', êîíòàêòíîå ëèöî: ' || C.SCONTACT_PERSON;
|
||||||
|
end if;
|
||||||
|
end if;
|
||||||
|
/* Êîíòàêòû êîíòðàãåíòà - òåëåôîí */
|
||||||
|
if (C.SPHONE is not null) then
|
||||||
|
CRESP := CRESP || ', òåëåôîí: ' || C.SPHONE;
|
||||||
|
end if;
|
||||||
|
/* Êîíòàêòû êîíòðàãåíòà - e-mail */
|
||||||
|
if (C.SMAIL is not null) then
|
||||||
|
CRESP := CRESP || ',à ìîæíî íå çâîíèòü, à íàïèñàòü e-mail: ' || C.SMAIL;
|
||||||
|
end if;
|
||||||
|
end loop;
|
||||||
|
else
|
||||||
|
CRESP := 'Íå óêàçàí ïîèñêîâûé çàïðîñ';
|
||||||
|
end if;
|
||||||
|
/* Âîçâðàùàåì îòâåò */
|
||||||
|
PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT,
|
||||||
|
SARG => PKG_EXS.SCONT_FLD_BRESP,
|
||||||
|
BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8'));
|
||||||
|
end FIND_CONTACT;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
/
|
/
|
||||||
|
@ -25,6 +25,12 @@ const beforeFindConsumerOrd = async prms => {};
|
|||||||
//ПОСЛЕ функции "Алиса/Поиск заказа потребителя"
|
//ПОСЛЕ функции "Алиса/Поиск заказа потребителя"
|
||||||
const afterFindConsumerOrd = async prms => {};
|
const afterFindConsumerOrd = async prms => {};
|
||||||
|
|
||||||
|
//ДО функции "Алиса/Поиск контактной информации"
|
||||||
|
const beforeFindContact = async prms => {};
|
||||||
|
|
||||||
|
//ПОСЛЕ функции "Алиса/Поиск контактной информации"
|
||||||
|
const afterFindContact = async prms => {};
|
||||||
|
|
||||||
//-----------------
|
//-----------------
|
||||||
// Интерфейс модуля
|
// Интерфейс модуля
|
||||||
//-----------------
|
//-----------------
|
||||||
@ -35,3 +41,5 @@ exports.beforeFindContract = beforeFindContract;
|
|||||||
exports.afterFindContract = afterFindContract;
|
exports.afterFindContract = afterFindContract;
|
||||||
exports.beforeFindConsumerOrd = beforeFindConsumerOrd;
|
exports.beforeFindConsumerOrd = beforeFindConsumerOrd;
|
||||||
exports.afterFindConsumerOrd = afterFindConsumerOrd;
|
exports.afterFindConsumerOrd = afterFindConsumerOrd;
|
||||||
|
exports.beforeFindContact = beforeFindContact;
|
||||||
|
exports.afterFindContact = afterFindContact;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user