'use strict'; /** * * * @author Mai * @date * @version */ const audit = require('../app/const/audit'); const mysql = require('mysql'); const config = process.argv[2]; console.log(config); const mysqlOptions = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' }).mysql; console.log(mysqlOptions); const pool = mysql.createPool(mysqlOptions.client); const querySql = async function (sql, sqlParam) { return new Promise(function (resolve, reject) { pool.getConnection(function (err, conn) { if (err) { reject(err); } else { conn.query(sql, sqlParam, function (err, rows, fields) { //释放连接 conn.release(); //传递Promise回调对象 resolve({"err": err, "rows": rows, "fields": fields}); }); } }); }); }; const doComplete = async function () { try { const tenders = await querySql('Select * From zh_tender where ledger_status = ?', [audit.ledger.status.checked]); for (const t of tenders.rows) { const stages = await querySql('Select * From zh_stage where tid = ?', [t.id]); for (const s of stages.rows) { console.log('处理标段: ' + t.name + ' 期: ' + s.order); const auditors = await querySql('Select * From zh_stage_audit where sid = ? and times = ? order by `order`', [s.id, s.times ? s.times : 1]); const curAuditor = auditors.rows.find(x => { return x.status === audit.stage.status.checking}); const order = curAuditor ? curAuditor.order : (auditors.rows.length > 0 ? auditors.rows.length : 0); const latestStagePay = await querySql('Select * From zh_stage_pay where sid = ? and stimes = ? and sorder = ?', [s.id, s.times ? s.times : 1, order]); const insertData = []; for (const lsp of latestStagePay.rows) { if (!lsp.attachment) continue; const attachment = JSON.parse(lsp.attachment); for (const a of attachment) { insertData.unshift([t.id, s.id, lsp.pid, a.uid, a.filename, a.fileext, a.filesize, a.filepath, a.in_time, a.username || '']); } } const result = await querySql('Insert Into zh_pay_attachment (tid, sid, pid, uid, filename, fileext, filesize, filepath, in_time, username ) Values ?', [insertData]); } } await querySql("Update zh_pay_attachment att Left Join zh_project_account acc On att.uid = acc.id Set att.username = acc.name Where att.username = ''"); pool.end(); } catch(err) { console.log(err); } }; doComplete();