ledger_his_count.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. let File;
  52. try {
  53. File = await ossClient.get(options.hisOssPath + url);
  54. } catch(err) {
  55. if (err.status === 404) return 0;
  56. throw err;
  57. }
  58. if (File.res.status !== 200) return '获取修订台账有误';
  59. const result = JSON.parse(File.content);
  60. return result.length;
  61. };
  62. const doCompleteLedgerHis = async function(l) {
  63. const bills_count = await loadLedgerDataFromOss(l.bills_file);
  64. const pos_count = await loadLedgerDataFromOss(l.pos_file);
  65. await querySql('Update zh_ledger_history Set bills_count = ?, pos_count = ? Where id = ?', [bills_count, pos_count, l.id]);
  66. console.log(`ledgerHis-${l.id}(${l.tid}): billsCount(${bills_count}), posCount(${pos_count})`);
  67. };
  68. const doComplete = async function() {
  69. try {
  70. //const ledgerHis = await querySql('Select * From zh_ledger_history where bills_count = 0 order by id asc');
  71. const ledgerHis = await querySql('Select * From zh_ledger_history');
  72. for (const l of ledgerHis) {
  73. await doCompleteLedgerHis(l);
  74. }
  75. } catch (err) {
  76. console.log(err);
  77. }
  78. pool.end();
  79. };
  80. doComplete();