diff --git a/core/db_connector.js b/core/db_connector.js index 78dac86..de47051 100644 --- a/core/db_connector.js +++ b/core/db_connector.js @@ -334,14 +334,13 @@ class DBConnector extends EventEmitter { ); //Если структура объекта в норме if (!sCheckResult) { + //Подготовим параметры + let putQueueData = _.cloneDeep(prms); + putQueueData.blMsg = prms.blMsg ? prms.blMsg : new Buffer(""); + putQueueData.connection = this.connection; //Исполняем действие в БД try { - let res = await this.connector.putQueue({ - nServiceFnId: prms.nServiceFnId, - blMsg: prms.blMsg ? prms.blMsg : new Buffer(""), - nQueueId: prms.nQueueId, - connection: this.connection - }); + let res = await this.connector.putQueue(putQueueData); //Валидируем полученный ответ sCheckResult = validateObject(res, objQueueSchema.Queue, "Добавленное сообщение очереди обмена"); if (sCheckResult) throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult); diff --git a/models/prms_db_connector.js b/models/prms_db_connector.js index 5a40a02..7bfb9f3 100644 --- a/models/prms_db_connector.js +++ b/models/prms_db_connector.js @@ -207,6 +207,15 @@ exports.putQueue = new Schema({ type: path => `Код связанного раздела (${path}) имеет некорректный тип данных (ожидалось - String)`, required: path => `Не указан код связанного раздела (${path})` } + }, + //Параметры сообщения + sOptions: { + type: String, + required: false, + message: { + type: path => `Параметры сообщения (${path}) имеют некорректный тип данных (ожидалось - String)`, + required: path => `Не указаны параметры сообщения (${path})` + } } }); diff --git a/modules/parus_oracle_db.js b/modules/parus_oracle_db.js index aa3003a..0f61fff 100644 --- a/modules/parus_oracle_db.js +++ b/modules/parus_oracle_db.js @@ -129,7 +129,7 @@ const getQueue = async prms => { const putQueue = async prms => { try { let res = await prms.connection.execute( - "BEGIN PKG_EXS.QUEUE_PUT(NEXSSERVICEFN => :NEXSSERVICEFN, BMSG => :BMSG, NEXSQUEUE => :NEXSQUEUE, NLNK_COMPANY => :NLNK_COMPANY, NLNK_DOCUMENT => :NLNK_DOCUMENT, SLNK_UNITCODE => :SLNK_UNITCODE, RCQUEUE => :RCQUEUE); END;", + "BEGIN PKG_EXS.QUEUE_PUT(NEXSSERVICEFN => :NEXSSERVICEFN, BMSG => :BMSG, NEXSQUEUE => :NEXSQUEUE, NLNK_COMPANY => :NLNK_COMPANY, NLNK_DOCUMENT => :NLNK_DOCUMENT, SLNK_UNITCODE => :SLNK_UNITCODE, SOPTIONS => :SOPTIONS, RCQUEUE => :RCQUEUE); END;", { NEXSSERVICEFN: prms.nServiceFnId, BMSG: prms.blMsg, @@ -137,6 +137,7 @@ const putQueue = async prms => { NLNK_COMPANY: prms.nLnkCompanyId, NLNK_DOCUMENT: prms.nLnkDocumentId, SLNK_UNITCODE: prms.sLnkUnitcode, + SOPTIONS: prms.sOptions, RCQUEUE: { type: oracledb.CURSOR, dir: oracledb.BIND_OUT } }, { outFormat: oracledb.OBJECT, autoCommit: true }