| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | const fs = require('fs');const path = require('path');var util = require('util');var logPath = path.join(__dirname, 'recover_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 recoverLedgerHis = async function (id, countField, url) {    let File;    try {        File = await ossClient.get('undefined' + url);    } catch(err) {        if (err.status === 404) return;    }    if (File.res.status !== 200) {        await ossClient.put(options.hisOssPath + url, File.content);        // const result = JSON.parse(File.content);        // await querySql(`Update zh_ledger_history Set ${countField} = ? Where id = ?`, [result.length, l.id]);        // console.log(`LedgerHis: ${countField}-${result.length}`);    }};const checkLedgerHis = async function (his) {    await recoverLedgerHis(his.id, 'bills_count', his.bills_file);    await recoverLedgerHis(his.id, 'pos_count', his.pos_file);};const doComplete = async function() {    try {        const ledgerHis = await querySql('Select * From zh_ledger_history where tid = 5709');        for (const l of ledgerHis) {            await checkLedgerHis(l);        }    } catch (err) {        console.log(err);    }    pool.end();};doComplete();
 |