94 lines
3.2 KiB
JavaScript
94 lines
3.2 KiB
JavaScript
/*
|
||
Сервис интеграции ПП Парус 8 с WEB API
|
||
Дополнительный модуль: Интеграция с ГАР (GAR) - вспомогательные функции
|
||
*/
|
||
|
||
//--------------------------
|
||
// Глобальные идентификаторы
|
||
//--------------------------
|
||
|
||
//Типы сообщений
|
||
const LOG_ERR = "LOG_ERR"; //Ошибка
|
||
const LOG_WRN = "LOG_WRN"; //Предупреждение
|
||
const LOG_INF = "LOG_INF"; //Информация
|
||
|
||
//Типы сообщений обработчиков
|
||
const WRK_MSG_TYPE = {
|
||
TASK: "TASK",
|
||
RESULT: "RESULT",
|
||
STOP: "STOP"
|
||
};
|
||
|
||
//------------
|
||
// Тело модуля
|
||
//------------
|
||
|
||
//Протоколирование
|
||
const log = (type, message, module, stream) => {
|
||
let d = new Date();
|
||
if (stream)
|
||
stream.write(
|
||
`${d.toLocaleString("ru-RU")}${module ? ` (${module})` : ""}${
|
||
type === LOG_ERR ? " ОШИБКА" : type === LOG_WRN ? " ПРЕДУПРЕЖДЕНИЕ" : " ИНФОРМАЦИЯ"
|
||
}: ${message}\n`
|
||
);
|
||
};
|
||
|
||
//Протоколирование - ошибка
|
||
const logErr = (message, module, stream) => log(LOG_ERR, message, module, stream);
|
||
|
||
//Протоколирование - предупреждение
|
||
const logWrn = (message, module, stream) => log(LOG_WRN, message, module, stream);
|
||
|
||
//Протоколирование - информация
|
||
const logInf = (message, module, stream) => log(LOG_INF, message, module, stream);
|
||
|
||
//Формирование сообщения для останова
|
||
const makeStopMessage = () => ({ type: WRK_MSG_TYPE.STOP });
|
||
|
||
//Формирование сообщения с задачей
|
||
const makeTaskMessage = ({ payload }) => ({ type: WRK_MSG_TYPE.TASK, payload });
|
||
|
||
//Формирование ответа на задачу
|
||
const makeTaskResult = ({ err, payload }) => ({ type: WRK_MSG_TYPE.RESULT, err, payload });
|
||
|
||
//Формирование ответа на задачу (с успехом)
|
||
const makeTaskOKResult = payload => makeTaskResult({ err: null, payload });
|
||
|
||
//Формирование ответа на задачу (с ошибкой)
|
||
const makeTaskErrResult = err => makeTaskResult({ err, payload: null });
|
||
|
||
// Преобразование строки в дату в формате DD.MM.YYYY
|
||
const stringToDate = dateString => {
|
||
const dateStringSplit = dateString.split(".");
|
||
if (dateStringSplit.length == 3) {
|
||
try {
|
||
return new Date(+dateStringSplit[2], +dateStringSplit[1] - 1, +dateStringSplit[0] + 1);
|
||
} catch (e) {
|
||
return null;
|
||
}
|
||
} else {
|
||
return null;
|
||
}
|
||
};
|
||
|
||
// Преобразование даты в ISO строку в формате YYYY.MM.DD
|
||
const dateToISOString = date => {
|
||
return date.toISOString().substr(0, 10);
|
||
};
|
||
|
||
//-----------------
|
||
// Интерфейс модуля
|
||
//-----------------
|
||
|
||
exports.WRK_MSG_TYPE = WRK_MSG_TYPE;
|
||
exports.logErr = logErr;
|
||
exports.logWrn = logWrn;
|
||
exports.logInf = logInf;
|
||
exports.makeStopMessage = makeStopMessage;
|
||
exports.makeTaskMessage = makeTaskMessage;
|
||
exports.makeTaskOKResult = makeTaskOKResult;
|
||
exports.makeTaskErrResult = makeTaskErrResult;
|
||
exports.stringToDate = stringToDate;
|
||
exports.dateToISOString = dateToISOString;
|