| 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();
 |