recover_ledger_his.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const fs = require('fs');
  2. const path = require('path');
  3. var util = require('util');
  4. var logPath = path.join(__dirname, 'recover_ledger_his.log');
  5. var logFile = fs.createWriteStream(logPath, { flags: 'a' });
  6. console.log = function() {
  7. logFile.write(util.format.apply(null, arguments) + '\n');
  8. process.stdout.write(util.format.apply(null, arguments) + '\n');
  9. };
  10. const mysql = require('mysql');
  11. const oss = require('ali-oss');
  12. const config = process.argv.splice(2)[0];
  13. if (['local', 'uat', 'default'].indexOf(config) < 0) throw `参数错误: ${config}`;
  14. const options = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' });
  15. const pool = mysql.createPool(options.mysql.client);
  16. const ossOption = {
  17. bucket: options.oss.clients.his.bucket,
  18. accessKeyId: options.oss.default.accessKeyId,
  19. accessKeySecret: options.oss.default.accessKeySecret,
  20. endpoint: options.oss.default.endpoint,
  21. timeout: options.oss.default.timeout,
  22. };
  23. const ossClient = new oss(ossOption);
  24. const querySql = async function(sql, sqlParam) {
  25. return new Promise(function(resolve, reject) {
  26. pool.getConnection(function(err, conn) {
  27. if (err) {
  28. if (err) console.log(err);
  29. reject(err);
  30. } else {
  31. conn.query(sql, sqlParam, function(err, rows, fields) {
  32. if (err) console.log(err);
  33. // 释放连接
  34. conn.release();
  35. // 传递Promise回调对象
  36. resolve(rows);
  37. });
  38. }
  39. });
  40. });
  41. };
  42. const recoverLedgerHis = async function (id, countField, url) {
  43. let File;
  44. try {
  45. File = await ossClient.get('undefined' + url);
  46. } catch(err) {
  47. if (err.status === 404) return;
  48. }
  49. if (File.res.status !== 200) {
  50. await ossClient.put(options.hisOssPath + url, File.content);
  51. // const result = JSON.parse(File.content);
  52. // await querySql(`Update zh_ledger_history Set ${countField} = ? Where id = ?`, [result.length, l.id]);
  53. // console.log(`LedgerHis: ${countField}-${result.length}`);
  54. }
  55. };
  56. const checkLedgerHis = async function (his) {
  57. await recoverLedgerHis(his.id, 'bills_count', his.bills_file);
  58. await recoverLedgerHis(his.id, 'pos_count', his.pos_file);
  59. };
  60. const doComplete = async function() {
  61. try {
  62. const ledgerHis = await querySql('Select * From zh_ledger_history where tid = 5709');
  63. for (const l of ledgerHis) {
  64. await checkLedgerHis(l);
  65. }
  66. } catch (err) {
  67. console.log(err);
  68. }
  69. pool.end();
  70. };
  71. doComplete();