stage_stash.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 loadDataFromOss = async function(url) {
  51. const File = await ossClient.get('undefined' + url);
  52. if (File.res.status !== 200) return '获取修订台账有误';
  53. return File.content;
  54. };
  55. const doCompleteStashStash = async function(stash) {
  56. const data = await loadDataFromOss(stash.filepath);
  57. await ossClient.put(options.stashOssPath + stash.filepath, data);
  58. };
  59. const doComplete = async function() {
  60. try {
  61. const stash = await querySql('Select * From zh_stage_stash');
  62. for (const s of stash) {
  63. console.log(s);
  64. await doCompleteStashStash(s);
  65. }
  66. } catch (err) {
  67. console.log(err);
  68. }
  69. pool.end();
  70. };
  71. doComplete();