const BaseUtil = require('./baseUtils'); const querySql = BaseUtil.querySql; const uuid = require('node-uuid'); const getInsertSql = function (tableName, data) { const column = [], query = [], value = []; for (const prop in data) { column.push(prop); query.push('?'); value.push(data[prop]); } return [`INSERT INTO ${tableName} (${column.map(c => { return '`' + c + '`'}).join(',')}) VALUES (${query.join(',')})`, value] }; const initBudgetZb = async function(budget) { let budgetStd = await querySql('SELECT * From zh_budget_std where id = ?', [budget.std_id]); budgetStd = budgetStd[0]; if (!budgetStd) { console.log(`【Error】Budget-${budget.name}(${budget.id}): 未定义概预算标准`); return; } if (!budgetStd.zb_template_id) { console.log(`【Error】概预算标准-${budgetStd.name}: 招标预算模板未定义`); return; } const template = await querySql('SELECT * FROM zh_bills_template WHERE list_id = ?', [budgetStd.zb_template_id]); for (const tmp of template) { const initB = { id: uuid.v4(), bid: budget.id, tree_id: tmp.template_id, tree_pid: tmp.pid, level: tmp.level, order: tmp.order, full_path: tmp.full_path, is_leaf: tmp.is_leaf, code: tmp.code, name: tmp.name, unit: tmp.unit, node_type: tmp.node_type, }; const [initSql, initSqlParam] = getInsertSql('zh_budget_zb', initB); await querySql(initSql, initSqlParam); } }; const checkBudgetZb = async function(budget) { const data = await querySql('SELECT * From zh_budget_zb where bid = ?', [budget.id]); if (data.length > 0) { console.log(`Exit Budget ${budget.name}(${budget.id}):`); return; } await initBudgetZb(budget); console.log(`Done Budget ${budget.name}(${budget.id}):`); }; const doComplete = async function() { try { const budget = await querySql('Select * From zh_budget'); for (const b of budget) { console.log(`Update Budget ${b.name}(${b.id}):`); await checkBudgetZb(b); } } catch (err) { console.log(err); } BaseUtil.closePool(); }; const doCompleteTest = async function(tid) { try { const budget = await querySql('Select * From zh_budget where id = ?', [tid]); for (const b of budget) { console.log(`Update Budget ${b.name}(${b.id}):`); await checkBudgetZb(b); } } catch (err) { console.log(err); } BaseUtil.closePool(); }; const tenderId = process.argv[3]; if (tenderId) { doCompleteTest(tenderId); } else { doComplete() }