434 lines
23 KiB
JavaScript
434 lines
23 KiB
JavaScript
/*
|
||
Сервис интеграции ПП Парус 8 с WEB API
|
||
Дополнительный модуль: Интеграция с ГАР (GAR) - парсеры
|
||
*/
|
||
|
||
//------------------------------
|
||
// Подключаем внешние библиотеки
|
||
//------------------------------
|
||
|
||
const oracledb = require("oracledb"); //Работа с СУБД Oracle
|
||
|
||
//--------------------------
|
||
// Глобальные идентификаторы
|
||
//--------------------------
|
||
|
||
//Модели (привязка парсера к файлу данных)
|
||
const MODELS = [
|
||
{ fileNameMask: /AS_ADDR_OBJ_PARAMS_(\d{8})_(.*)/i, parser: "PARAMS" },
|
||
{ fileNameMask: /AS_ADDR_OBJ_(\d{8})_(.*)/i, parser: "ADDR_OBJ" },
|
||
{ fileNameMask: /AS_ADM_HIERARCHY_(\d{8})_(.*)/i, parser: "ADM_HIERARCHY" },
|
||
{ fileNameMask: /AS_CHANGE_HISTORY_(\d{8})_(.*)/i, parser: "CHANGE_HISTORY" },
|
||
{ fileNameMask: /AS_HOUSES_PARAMS_(\d{8})_(.*)/i, parser: "PARAMS", insertProcedureName: "PKG_EXS_EXT_GAR.HOUSES_PARAMS_INSERT" },
|
||
{ fileNameMask: /AS_HOUSES_(\d{8})_(.*)/i, parser: "HOUSES" },
|
||
{ fileNameMask: /AS_MUN_HIERARCHY_(\d{8})_(.*)/i, parser: "MUN_HIERARCHY" },
|
||
{ fileNameMask: /AS_REESTR_OBJECTS_(\d{8})_(.*)/i, parser: "REESTR_OBJECTS" },
|
||
{ fileNameMask: /AS_STEADS_PARAMS_(\d{8})_(.*)/i, parser: "PARAMS", insertProcedureName: "PKG_EXS_EXT_GAR.STEADS_PARAMS_INSERT" },
|
||
{ fileNameMask: /AS_STEADS_(\d{8})_(.*)/i, parser: "STEADS" },
|
||
{ fileNameMask: /AS_HOUSE_TYPES_(\d{8})_(.*)/i, parser: "HOUSE_TYPES" },
|
||
{ fileNameMask: /AS_ADDHOUSE_TYPES_(\d{8})_(.*)/i, parser: "HOUSE_TYPES", insertProcedureName: "PKG_EXS_EXT_GAR.ADDHOUSE_TYPES_INSERT" },
|
||
{ fileNameMask: /AS_ADDR_OBJ_TYPES_(\d{8})_(.*)/i, parser: "ADDR_OBJ_TYPES" }
|
||
];
|
||
|
||
//Парсеры
|
||
const PARSERS = {
|
||
ADDR_OBJ_TYPES: {
|
||
element: "ADDRESSOBJECTTYPE",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NTYPE_ID: Number(item.attributes.ID),
|
||
STYPE_LEVEL: item.attributes.LEVEL,
|
||
SSHORTNAME: item.attributes.SHORTNAME,
|
||
STYPE_NAME: item.attributes.NAME,
|
||
STYPE_DESC: item.attributes.DESC,
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTIVE: item.attributes.ISACTIVE == "true" ? 1 : 0
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.ADDR_OBJ_TYPES_INSERT(:NIDENT, :NTYPE_ID, :STYPE_LEVEL, :SSHORTNAME, :STYPE_NAME, :STYPE_DESC, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NTYPE_ID: { type: oracledb.NUMBER },
|
||
STYPE_LEVEL: { type: oracledb.STRING, maxSize: 10 },
|
||
SSHORTNAME: { type: oracledb.STRING, maxSize: 50 },
|
||
STYPE_NAME: { type: oracledb.STRING, maxSize: 250 },
|
||
STYPE_DESC: { type: oracledb.STRING, maxSize: 250 },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
HOUSE_TYPES: {
|
||
element: "HOUSETYPE",
|
||
async save(connection, ident, items, insertProcedureName) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NTYPE_ID: Number(item.attributes.ID),
|
||
STYPE_NAME: item.attributes.NAME,
|
||
SSHORTNAME: item.attributes.SHORTNAME,
|
||
STYPE_DESC: item.attributes.DESC,
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTIVE: item.attributes.ISACTIVE == "true" ? 1 : 0
|
||
}));
|
||
const sql = `begin ${
|
||
insertProcedureName ? insertProcedureName : "PKG_EXS_EXT_GAR.HOUSE_TYPES_INSERT"
|
||
}(:NIDENT, :NTYPE_ID, :STYPE_NAME, :SSHORTNAME, :STYPE_DESC, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NTYPE_ID: { type: oracledb.NUMBER },
|
||
STYPE_NAME: { type: oracledb.STRING, maxSize: 250 },
|
||
SSHORTNAME: { type: oracledb.STRING, maxSize: 50 },
|
||
STYPE_DESC: { type: oracledb.STRING, maxSize: 250 },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
PARAMS: {
|
||
element: "PARAM",
|
||
async save(connection, ident, items, insertProcedureName) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NPARAM_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
NCHANGEID: item.attributes.CHANGEID == undefined || item.attributes.CHANGEID == null ? null : Number(item.attributes.CHANGEID),
|
||
NCHANGEIDEND:
|
||
item.attributes.CHANGEIDEND == undefined || item.attributes.CHANGEIDEND == null ? null : Number(item.attributes.CHANGEIDEND),
|
||
NPARAM_TYPEID: Number(item.attributes.TYPEID),
|
||
SPARAM_VALUE: item.attributes.VALUE.substring(0, 4000),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE)
|
||
}));
|
||
const sql = `begin ${
|
||
insertProcedureName ? insertProcedureName : "PKG_EXS_EXT_GAR.ADDR_OBJ_PARAMS_INSERT"
|
||
}(:NIDENT, :NPARAM_ID, :NOBJECTID, :NCHANGEID, :NCHANGEIDEND, :NPARAM_TYPEID, :SPARAM_VALUE, :DUPDATEDATE, :DSTARTDATE, :DENDDATE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NPARAM_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
NCHANGEIDEND: { type: oracledb.NUMBER },
|
||
NPARAM_TYPEID: { type: oracledb.NUMBER },
|
||
SPARAM_VALUE: { type: oracledb.STRING, maxSize: 4000 },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
MUN_HIERARCHY: {
|
||
element: "ITEM",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NMUN_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
NPARENTOBJID:
|
||
item.attributes.PARENTOBJID == undefined || item.attributes.PARENTOBJID == null ? null : Number(item.attributes.PARENTOBJID),
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
SOKTMO: item.attributes.OKTMO,
|
||
NPREVID: item.attributes.PREVID == undefined || item.attributes.PREVID == null ? null : Number(item.attributes.PREVID),
|
||
NNEXTID: item.attributes.NEXTID == undefined || item.attributes.NEXTID == null ? null : Number(item.attributes.NEXTID),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.MUN_HIERARCHY_INSERT(:NIDENT, :NMUN_ID, :NOBJECTID, :NPARENTOBJID, :NCHANGEID, :SOKTMO, :NPREVID, :NNEXTID, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NMUN_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
NPARENTOBJID: { type: oracledb.NUMBER },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
SOKTMO: { type: oracledb.STRING, maxSize: 11 },
|
||
NPREVID: { type: oracledb.NUMBER },
|
||
NNEXTID: { type: oracledb.NUMBER },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
ADM_HIERARCHY: {
|
||
element: "ITEM",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NADM_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
NPARENTOBJID:
|
||
item.attributes.PARENTOBJID == undefined || item.attributes.PARENTOBJID == null ? null : Number(item.attributes.PARENTOBJID),
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
SREGIONCODE: item.attributes.REGIONCODE,
|
||
SAREACODE: item.attributes.AREACODE,
|
||
SCITYCODE: item.attributes.CITYCODE,
|
||
SPLACECODE: item.attributes.PLACECODE,
|
||
SPLANCODE: item.attributes.PLANCODE,
|
||
SSTREETCODE: item.attributes.STREETCODE,
|
||
NPREVID: item.attributes.PREVID == undefined || item.attributes.PREVID == null ? null : Number(item.attributes.PREVID),
|
||
NNEXTID: item.attributes.NEXTID == undefined || item.attributes.NEXTID == null ? null : Number(item.attributes.NEXTID),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.ADM_HIERARCHY_INSERT(:NIDENT, :NADM_ID, :NOBJECTID, :NPARENTOBJID, :NCHANGEID, :SREGIONCODE, :SAREACODE, :SCITYCODE, :SPLACECODE, :SPLANCODE, :SSTREETCODE, :NPREVID, :NNEXTID, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NADM_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
NPARENTOBJID: { type: oracledb.NUMBER },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
SREGIONCODE: { type: oracledb.STRING, maxSize: 4 },
|
||
SAREACODE: { type: oracledb.STRING, maxSize: 4 },
|
||
SCITYCODE: { type: oracledb.STRING, maxSize: 4 },
|
||
SPLACECODE: { type: oracledb.STRING, maxSize: 4 },
|
||
SPLANCODE: { type: oracledb.STRING, maxSize: 4 },
|
||
SSTREETCODE: { type: oracledb.STRING, maxSize: 4 },
|
||
NPREVID: { type: oracledb.NUMBER },
|
||
NNEXTID: { type: oracledb.NUMBER },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
CHANGE_HISTORY: {
|
||
element: "ITEM",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
SADROBJECTID: item.attributes.ADROBJECTID,
|
||
NOPERTYPEID: Number(item.attributes.OPERTYPEID),
|
||
NNDOCID: item.attributes.NDOCID == undefined || item.attributes.NDOCID == null ? null : Number(item.attributes.NDOCID),
|
||
DCHANGEDATE: new Date(item.attributes.CHANGEDATE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.CHANGE_HISTORY_INSERT(:NIDENT, :NCHANGEID, :NOBJECTID, :SADROBJECTID, :NOPERTYPEID, :NNDOCID, :DCHANGEDATE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
SADROBJECTID: { type: oracledb.STRING, maxSize: 36 },
|
||
NOPERTYPEID: { type: oracledb.NUMBER },
|
||
NNDOCID: { type: oracledb.NUMBER },
|
||
DCHANGEDATE: { type: oracledb.DATE }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
REESTR_OBJECTS: {
|
||
element: "OBJECT",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
SOBJECTGUID: item.attributes.OBJECTGUID,
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE),
|
||
NLEVELID: Number(item.attributes.LEVELID),
|
||
DCREATEDATE: new Date(item.attributes.CREATEDATE),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.REESTR_OBJECTS_INSERT(:NIDENT, :NOBJECTID, :SOBJECTGUID, :NCHANGEID, :NISACTIVE, :NLEVELID, :DCREATEDATE, :DUPDATEDATE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
SOBJECTGUID: { type: oracledb.STRING, maxSize: 36 },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
NISACTIVE: { type: oracledb.NUMBER },
|
||
NLEVELID: { type: oracledb.NUMBER },
|
||
DCREATEDATE: { type: oracledb.DATE },
|
||
DUPDATEDATE: { type: oracledb.DATE }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
ADDR_OBJ: {
|
||
element: "OBJECT",
|
||
async save(connection, ident, items, insertProcedureName, region) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
SREGIONCODE: region,
|
||
NADDR_OBJ_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
SOBJECTGUID: item.attributes.OBJECTGUID,
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
SADDR_OBJ_NAME: item.attributes.NAME,
|
||
STYPENAME: item.attributes.TYPENAME,
|
||
NADDR_OBJ_LEVEL: Number(item.attributes.LEVEL),
|
||
SOPERTYPEID: item.attributes.OPERTYPEID,
|
||
NPREVID: item.attributes.PREVID == undefined || item.attributes.PREVID == null ? null : Number(item.attributes.PREVID),
|
||
NNEXTID: item.attributes.NEXTID == undefined || item.attributes.NEXTID == null ? null : Number(item.attributes.NEXTID),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTUAL: Number(item.attributes.ISACTUAL),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.ADDR_OBJ_INSERT(:NIDENT, :SREGIONCODE, :NADDR_OBJ_ID, :NOBJECTID, :SOBJECTGUID, :NCHANGEID, :SADDR_OBJ_NAME, :STYPENAME, :NADDR_OBJ_LEVEL, :SOPERTYPEID, :NPREVID, :NNEXTID, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTUAL, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
SREGIONCODE: { type: oracledb.STRING, maxSize: 2 },
|
||
NADDR_OBJ_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
SOBJECTGUID: { type: oracledb.STRING, maxSize: 36 },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
SADDR_OBJ_NAME: { type: oracledb.STRING, maxSize: 250 },
|
||
STYPENAME: { type: oracledb.STRING, maxSize: 50 },
|
||
NADDR_OBJ_LEVEL: { type: oracledb.NUMBER },
|
||
SOPERTYPEID: { type: oracledb.STRING, maxSize: 2 },
|
||
NPREVID: { type: oracledb.NUMBER },
|
||
NNEXTID: { type: oracledb.NUMBER },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTUAL: { type: oracledb.NUMBER },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
HOUSES: {
|
||
element: "HOUSE",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NHOUSES_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
SOBJECTGUID: item.attributes.OBJECTGUID,
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
SHOUSENUM: item.attributes.HOUSENUM,
|
||
SADDNUM1: item.attributes.ADDNUM1,
|
||
SADDNUM2: item.attributes.ADDNUM2,
|
||
NHOUSETYPE: item.attributes.HOUSETYPE == undefined || item.attributes.HOUSETYPE == null ? null : Number(item.attributes.HOUSETYPE),
|
||
NADDTYPE1: item.attributes.ADDTYPE1 == undefined || item.attributes.ADDTYPE1 == null ? null : Number(item.attributes.ADDTYPE1),
|
||
NADDTYPE2: item.attributes.ADDTYPE2 == undefined || item.attributes.ADDTYPE2 == null ? null : Number(item.attributes.ADDTYPE2),
|
||
NOPERTYPEID: Number(item.attributes.OPERTYPEID),
|
||
NPREVID: item.attributes.PREVID == undefined || item.attributes.PREVID == null ? null : Number(item.attributes.PREVID),
|
||
NNEXTID: item.attributes.NEXTID == undefined || item.attributes.NEXTID == null ? null : Number(item.attributes.NEXTID),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTUAL: Number(item.attributes.ISACTUAL),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.HOUSES_INSERT(:NIDENT, :NHOUSES_ID, :NOBJECTID, :SOBJECTGUID, :NCHANGEID, :SHOUSENUM, :SADDNUM1, :SADDNUM2, :NHOUSETYPE, :NADDTYPE1, :NADDTYPE2, :NOPERTYPEID, :NPREVID, :NNEXTID, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTUAL, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NHOUSES_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
SOBJECTGUID: { type: oracledb.STRING, maxSize: 36 },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
SHOUSENUM: { type: oracledb.STRING, maxSize: 50 },
|
||
SADDNUM1: { type: oracledb.STRING, maxSize: 50 },
|
||
SADDNUM2: { type: oracledb.STRING, maxSize: 50 },
|
||
NHOUSETYPE: { type: oracledb.NUMBER },
|
||
NADDTYPE1: { type: oracledb.NUMBER },
|
||
NADDTYPE2: { type: oracledb.NUMBER },
|
||
NOPERTYPEID: { type: oracledb.NUMBER },
|
||
NPREVID: { type: oracledb.NUMBER },
|
||
NNEXTID: { type: oracledb.NUMBER },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTUAL: { type: oracledb.NUMBER },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
},
|
||
STEADS: {
|
||
element: "STEAD",
|
||
async save(connection, ident, items) {
|
||
const binds = items.map(item => ({
|
||
NIDENT: ident,
|
||
NSTEADS_ID: Number(item.attributes.ID),
|
||
NOBJECTID: Number(item.attributes.OBJECTID),
|
||
SOBJECTGUID: item.attributes.OBJECTGUID,
|
||
NCHANGEID: Number(item.attributes.CHANGEID),
|
||
SSTEADS_NUMBER: item.attributes.NUMBER,
|
||
NOPERTYPEID: Number(item.attributes.OPERTYPEID),
|
||
NPREVID: item.attributes.PREVID == undefined || item.attributes.PREVID == null ? null : Number(item.attributes.PREVID),
|
||
NNEXTID: item.attributes.NEXTID == undefined || item.attributes.NEXTID == null ? null : Number(item.attributes.NEXTID),
|
||
DUPDATEDATE: new Date(item.attributes.UPDATEDATE),
|
||
DSTARTDATE: new Date(item.attributes.STARTDATE),
|
||
DENDDATE: new Date(item.attributes.ENDDATE),
|
||
NISACTUAL: Number(item.attributes.ISACTUAL),
|
||
NISACTIVE: Number(item.attributes.ISACTIVE)
|
||
}));
|
||
const sql = `begin PKG_EXS_EXT_GAR.STEADS_INSERT(:NIDENT, :NSTEADS_ID, :NOBJECTID, :SOBJECTGUID, :NCHANGEID, :SSTEADS_NUMBER, :NOPERTYPEID, :NPREVID, :NNEXTID, :DUPDATEDATE, :DSTARTDATE, :DENDDATE, :NISACTUAL, :NISACTIVE); end;`;
|
||
await connection.executeMany(sql, binds, {
|
||
autoCommit: true,
|
||
bindDefs: {
|
||
NIDENT: { type: oracledb.NUMBER },
|
||
NSTEADS_ID: { type: oracledb.NUMBER },
|
||
NOBJECTID: { type: oracledb.NUMBER },
|
||
SOBJECTGUID: { type: oracledb.STRING, maxSize: 36 },
|
||
NCHANGEID: { type: oracledb.NUMBER },
|
||
SSTEADS_NUMBER: { type: oracledb.STRING, maxSize: 250 },
|
||
NOPERTYPEID: { type: oracledb.NUMBER },
|
||
NPREVID: { type: oracledb.NUMBER },
|
||
NNEXTID: { type: oracledb.NUMBER },
|
||
DUPDATEDATE: { type: oracledb.DATE },
|
||
DSTARTDATE: { type: oracledb.DATE },
|
||
DENDDATE: { type: oracledb.DATE },
|
||
NISACTUAL: { type: oracledb.NUMBER },
|
||
NISACTIVE: { type: oracledb.NUMBER }
|
||
}
|
||
});
|
||
}
|
||
}
|
||
};
|
||
|
||
//------------
|
||
// Тело модуля
|
||
//------------
|
||
|
||
//Поиск модели по имени файла
|
||
const findModelByFileName = fileName => MODELS.find(item => (fileName.match(item.fileNameMask) ? true : false));
|
||
|
||
//-----------------
|
||
// Интерфейс модуля
|
||
//-----------------
|
||
|
||
exports.MODELS = MODELS;
|
||
exports.PARSERS = PARSERS;
|
||
exports.findModelByFileName = findModelByFileName;
|