'use strict'; /** * * * @author Mai * @date * @version */ const mysql = require('mysql'); const config = process.argv.splice(2)[0]; if (['local', 'uat', 'default'].indexOf(config) < 0) throw `参数错误: ${config}`; const options = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' }); const pool = mysql.createPool(options.mysql.client); const querySql = async function(sql, sqlParam) { return new Promise(function(resolve, reject) { pool.getConnection(function(err, conn) { if (err) { if (err) console.log(err); reject(err); } else { conn.query(sql, sqlParam, function(err, rows, fields) { if (err) console.log(err); // 释放连接 conn.release(); // 传递Promise回调对象 resolve(rows); }); } }); }); }; const doCompleteProject = async function(p) { const fun_rela = p.fun_rela ? JSON.parse(p.fun_rela) : {}; fun_rela.minusNoValue = false; await querySql(`Update zh_project Set fun_rela = '${JSON.stringify(fun_rela)}' Where id = ${p.id}`); }; const doCompleteTender = async function(t) { const info = await querySql('Select * From zh_tender_info Where tid = ?', [t.id]); if (info.length > 0) { const fun_rela = t.fun_rela ? JSON.parse(t.fun_rela) : {}; fun_rela.stage_chagne = { minusNoValue: false }; await querySql(`Update zh_tender_info Set fun_rela = '${JSON.stringify(fun_rela)}' Where tid = ${t.id}`); } else { const fun_rela = { stage_change: { minusNoValue: false } }; await querySql(`Insert Into zh_tender_info (pid, tid, fun_rela) Values(${t.project_id}, ${t.id}, '${JSON.stringify(fun_rela)}')`); } }; const doComplete = async function() { try { const project = await querySql('Select * From zh_project'); for (const p of project) { await doCompleteProject(p); } const tenders = await querySql('Select * From zh_tender'); for (const t of tenders) { await doCompleteTender(t); } } catch (err) { console.log(err); } pool.end(); }; doComplete();