ledger_his_count.js 2.5 KB

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