Spaces:
Sleeping
Sleeping
| /** | |
| * Copyright (c) 2017~2020, OBCon Inc. | |
| * All rights reserved. | |
| */ | |
| /** | |
| * @file | |
| * @copyright 2017~2020, OBCon Inc. | |
| * @author gye hyun james kim [pnuskgh@gmail.com] | |
| */ | |
| let Sequelize = require('sequelize'); | |
| let Batch = utils.getClass('include', 'batch.js'); | |
| const Op = Sequelize.Op; | |
| //--- mysql -uobcon -p${PASSWD} -D obcondb < d:/zzbackup/CAProtec/obcondb_20200120_010001.sql | |
| class DataModify extends Batch { | |
| constructor() { | |
| super(); | |
| } | |
| batchJob(options = {}, callback) { | |
| let myPromise = new Promise(function(resolve, reject) { | |
| resolve({ code: 0, message: 'Start dataModify application' }); | |
| }); | |
| //--- statusDatetime가 잘못된 데이터를 확인하고 정리 한다. | |
| for (let idx = 1; idx <= 7; idx++) { | |
| myPromise = myPromise.then(function(value) { | |
| logger.info(`code: ${value.code}, message: ${value.message}`); | |
| return this.checkStatusDatetime(value, `devicedata${idx}s`); | |
| }.bind(this)); | |
| } | |
| myPromise = myPromise.then(function(value) { | |
| logger.info(`code: ${value.code}, message: ${value.message}`); | |
| callback(value.code, value.message); | |
| }); | |
| myPromise = myPromise.catch(function(err) { | |
| logger.info(`code: ${err.code}, message: ${err.message}`); | |
| callback(err.code, err.message); | |
| }); | |
| } | |
| ru | |
| //--- statusDatetime가 잘못된 데이터를 확인하고 정리 한다. | |
| checkStatusDatetime(value, tablename) { | |
| return new Promise(function(resolve, reject) { | |
| let query = { | |
| where: { | |
| [Op.or]: [ | |
| { statusDatetime: { [Op.lt]: '20180101' } }, | |
| { statusDatetime: { [Op.gt]: '21001231' } } | |
| ] | |
| } | |
| }; | |
| modules[tablename].model.table.count(query) | |
| .then(function(count) { | |
| resolve({ code: 0, message: `${tablename} count - ${count}` }); | |
| }).catch(function(err) { | |
| //--- err.name : 에러 이름 | |
| logger.error('error : ' + JSON.stringify(err)); | |
| reject({ code: 1, message: JSON.stringify(err) }); | |
| }); | |
| }); | |
| } | |
| // runStatusDatetime(value, tablename) { | |
| // return new Promise(function(resolve, reject) { | |
| // let query = { | |
| // where: { | |
| // [Op.or]: [ | |
| // { statusDatetime: { [Op.lt]: '20180101' } }, | |
| // { statusDatetime: { [Op.gt]: '21001231' } } | |
| // ] | |
| // } | |
| // }; | |
| // modules[tablename].model.table.destroy(query) | |
| // .then(function(count) { | |
| // resolve({ code: 0, message: `${tablename} delete count - ${count}` }); | |
| // }).catch(function(err) { | |
| // logger.error('error : ' + JSON.stringify(err)); | |
| // reject({ code: 1, message: JSON.stringify(err) }); | |
| // }); | |
| // }); | |
| // } | |
| // //--- 중복된 데이터를 삭제 한다. | |
| // checkDeleteMulti(value, tablename) { | |
| // return new Promise(function(resolve, reject) { | |
| // let query = { | |
| // attributes: ['id', 'siteKey', 'type', 'deviceKey', 'statusDatetime'], | |
| // order: [ ['siteKey', 'ASC'], ['type', 'ASC'], ['deviceKey', 'ASC'], ['statusDatetime', 'ASC'] ] | |
| // }; | |
| // let saveStatusDatetime = ''; | |
| // let count = 0; | |
| // modules[tablename].model.table.findAll(query) | |
| // .then(function(data) { | |
| // logger.info(`${tablename} read count - ${data.length}`); | |
| // for (let idx = 0; idx < data.length; idx++) { | |
| // let item = data[idx]; | |
| // let tmpStatusDatetime = `${item.siteKey}_${item.type}_${item.deviceKey}_${item.statusDatetime}`; | |
| // if (saveStatusDatetime == tmpStatusDatetime) { | |
| // count = count + 1; | |
| // } else { | |
| // saveStatusDatetime = tmpStatusDatetime; | |
| // } | |
| // } | |
| // resolve({ code: 0, message: `${tablename} multi count - ${count}` }) | |
| // }).catch(function(err) { | |
| // logger.error('error : ' + JSON.stringify(err)); | |
| // reject({ code: 1, message: JSON.stringify(err) }) | |
| // }); | |
| // }); | |
| // } | |
| // runDeleteMulti(value, tablename) { | |
| // return new Promise(function(resolve, reject) { | |
| // let query = { | |
| // attributes: ['id', 'siteKey', 'type', 'deviceKey', 'statusDatetime'], | |
| // order: [ ['siteKey', 'ASC'], ['type', 'ASC'], ['deviceKey', 'ASC'], ['statusDatetime', 'ASC'] ] | |
| // }; | |
| // let saveStatusDatetime = ''; | |
| // let count = 0; | |
| // let myOrCount = 0; | |
| // let myOr = []; | |
| // modules[tablename].model.table.findAll(query) | |
| // .then(function(data) { | |
| // logger.info(`${tablename} read count - ${data.length}`); | |
| // for (let idx = 0; idx < data.length; idx++) { | |
| // let item = data[idx]; | |
| // let tmpStatusDatetime = `${item.siteKey}_${item.type}_${item.deviceKey}_${item.statusDatetime}`; | |
| // if (saveStatusDatetime == tmpStatusDatetime) { | |
| // count = count + 1; | |
| // myOrCount = myOrCount + 1; | |
| // myOr.push({ id: item.id }); | |
| // if (myOrCount == 100) { | |
| // // query = { where: { id: item.id } }; | |
| // query = { where: { [Op.or]: myOr } }; | |
| // modules[tablename].model.table.destroy(query) | |
| // .then(function(count) { | |
| // }).catch(function(err) { | |
| // logger.error('error : ' + JSON.stringify(err)); | |
| // reject({ code: 1, message: JSON.stringify(err) }); | |
| // }); | |
| // myOrCount = 0; | |
| // myOr = []; | |
| // } | |
| // } else { | |
| // saveStatusDatetime = tmpStatusDatetime; | |
| // } | |
| // } | |
| // if (myOrCount == 0) { | |
| // resolve({ code: 0, message: `${tablename} delete count - ${count}` }); | |
| // } else { | |
| // query = { where: { [Op.or]: myOr } }; | |
| // modules[tablename].model.table.destroy(query) | |
| // .then(function(result) { | |
| // resolve({ code: 0, message: `${tablename} delete count - ${count}` }); | |
| // }).catch(function(err) { | |
| // logger.error('error : ' + JSON.stringify(err)); | |
| // reject({ code: 1, message: JSON.stringify(err) }); | |
| // }); | |
| // } | |
| // }).catch(function(err) { | |
| // logger.error('error : ' + JSON.stringify(err)); | |
| // reject({ code: 1, message: JSON.stringify(err) }) | |
| // }); | |
| // }); | |
| // } | |
| } | |
| module.exports = DataModify; | |