1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 'use strict';
- /**
- *
- *
- * @author Mai
- * @date
- * @version
- */
- const fs = require('fs');
- const path = require('path');
- var util = require('util');
- var logPath = path.join(__dirname, 'update_ledger_his.log');
- var logFile = fs.createWriteStream(logPath, { flags: 'a' });
- console.log = function() {
- logFile.write(util.format.apply(null, arguments) + '\n');
- process.stdout.write(util.format.apply(null, arguments) + '\n');
- };
- const mysql = require('mysql');
- const oss = require('ali-oss');
- const config = process.argv.splice(2)[0];
- if (['local', 'uat', 'default'].indexOf(config) < 0) throw `参数错误: ${config}`;
- const options = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' });
- const pool = mysql.createPool(options.mysql.client);
- const ossOption = {
- bucket: options.oss.clients.his.bucket,
- accessKeyId: options.oss.default.accessKeyId,
- accessKeySecret: options.oss.default.accessKeySecret,
- endpoint: options.oss.default.endpoint,
- timeout: options.oss.default.timeout,
- };
- const ossClient = new oss(ossOption);
- const querySql = async function(sql, sqlParam) {
- return new Promise(function(resolve, reject) {
- pool.getConnection(function(err, conn) {
- if (err) {
- if (err) console.log(err);
- reject(err);
- } else {
- conn.query(sql, sqlParam, function(err, rows, fields) {
- if (err) console.log(err);
- // 释放连接
- conn.release();
- // 传递Promise回调对象
- resolve(rows);
- });
- }
- });
- });
- };
- const loadLedgerDataFromOss = async function(url) {
- let File;
- try {
- File = await ossClient.get(options.hisOssPath + url);
- } catch(err) {
- if (err.status === 404) return 0;
- throw err;
- }
- if (File.res.status !== 200) return '获取修订台账有误';
- const result = JSON.parse(File.content);
- return result.length;
- };
- const doCompleteLedgerHis = async function(l) {
- const bills_count = await loadLedgerDataFromOss(l.bills_file);
- const pos_count = await loadLedgerDataFromOss(l.pos_file);
- await querySql('Update zh_ledger_history Set bills_count = ?, pos_count = ? Where id = ?', [bills_count, pos_count, l.id]);
- console.log(`ledgerHis-${l.id}(${l.tid}): billsCount(${bills_count}), posCount(${pos_count})`);
- };
- const doComplete = async function() {
- try {
- //const ledgerHis = await querySql('Select * From zh_ledger_history where bills_count = 0 order by id asc');
- const ledgerHis = await querySql('Select * From zh_ledger_history');
- for (const l of ledgerHis) {
- await doCompleteLedgerHis(l);
- }
- } catch (err) {
- console.log(err);
- }
- pool.end();
- };
- doComplete();
|