From 71a5c750091b276917eb0bfb9c288e8b10419329 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Mon, 16 Dec 2024 14:12:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-907=20-=20=D0=94=D0=98?= =?UTF-8?q?=D0=90=D0=94=D0=9E=D0=9A=20-=20=D0=94=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D1=80=D0=BE=D1=81=20=D1=81=D1=82=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=81=D0=B0=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=9B=D0=9A=20=D0=AD=D0=94=D0=9E=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=20=D0=BD=D0=B8=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/diadoc.js | 60 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/modules/diadoc.js b/modules/diadoc.js index 505c34d..6b7f94b 100644 --- a/modules/diadoc.js +++ b/modules/diadoc.js @@ -482,10 +482,10 @@ const afterEvent = async prms => { //Получим список уникальных ящиков for (let i in resp.Events) { if (resp.Events[i]?.Message) { - if (!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.FromBoxId)) { + if ((!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.FromBoxId)) && (resp.Events[i]?.Message.FromBoxId)) { boxIds.boxIds.push({ boxId: resp.Events[i]?.Message.FromBoxId }); } - if (!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.ToBoxId)) { + if ((!boxIds.boxIds.find(box => box.boxId === resp.Events[i]?.Message.ToBoxId)) && (resp.Events[i]?.Message.ToBoxId)) { boxIds.boxIds.push({ boxId: resp.Events[i]?.Message.ToBoxId }); } } @@ -777,6 +777,60 @@ const afterDepartmentIdGet = async prms => { }; }; +//Обработчик "До" отправки запроса на получение списка документов в сообщении к сервису "ДИАДОК" +const beforeDocumentsByMessageIdGet = async prms => { + //Получим ключ разработчика + let sAPIClientId = getAPIClientId(prms.options.nCompany, prms.options.nJurPers); + //Проверим ключ разработчика + checkAPIClientId(sAPIClientId); + //Формируем запрос + try { + //Считаем токен доступа из контекста сервиса + let sToken = null; + if (prms.service.sCtx) { + sToken = prms.service.sCtx; + } + //Если не достали из контекста токен доступа - значит нет аутентификации на сервере + if (!sToken) return { bUnAuth: true }; + //Собираем и отдаём общий результат работы + return { + options: { + headers: buildHeaders(sAPIClientId, sToken), + simple: false + } + }; + } catch (e) { + throw Error(e); + } +}; + +//Обработчик "После" отправки запроса на получение списка документов в сообщении к сервису "ДИАДОК" +const afterDocumentsByMessageIdGet = async prms => { + let resu = null; + //Действие выполнено успешно + if (prms.optionsResp.statusCode == 200) { + try { + //Разберем ответ сервера + resp = JSON.parse(prms.queue.blResp.toString()); + //Преобразуем JSON ответ сервиса "ДИАДОК" в XML, понятный "Парус 8" + resu = toXML({ root: resp }); + } catch (e) { + throw new Error(`Неожиданный ответ сервера ЭДО "ДИАДОК". Ошибка интерпретации: ${e.message}`); + } + } else { + //Если пришел текст ошибки + if (prms.queue.blResp) { + throw new Error(`Неожиданный ответ сервера ЭДО "ДИАДОК": ${prms.queue.blResp.toString()}`); + } else { + throw new Error('Сервер ЭДО "ДИАДОК" не вернул ответ'); + } + } + //Возврат результата + return { + blResp: Buffer.from(resu) + }; +}; + //----------------- // Интерфейс модуля //----------------- @@ -794,3 +848,5 @@ exports.afterDocLoad = afterDocLoad; exports.beforeDocDelete = beforeDocDelete; exports.beforeDepartmentIdGet = beforeDepartmentIdGet; exports.afterDepartmentIdGet = afterDepartmentIdGet; +exports.beforeDocumentsByMessageIdGet = beforeDocumentsByMessageIdGet; +exports.afterDocumentsByMessageIdGet = afterDocumentsByMessageIdGet;