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.join(',')}) VALUES (${query.join(',')})`, value] }; const syncBudget = async function(budget, order) { try { const subProject = { id: uuid.v4(), project_id: budget.pid, tree_pid: '-1', tree_level: 1, tree_order: order, name: budget.name, user_id: budget.user_id, rela_tender: budget.rela_tender, is_folder: 0, budget_id: budget.id, }; const [subProjSql, subProjSqlParam] = getInsertSql('zh_sub_project', subProject); await querySql(subProjSql, subProjSqlParam); const permission = await querySql('SELECT * FROM zh_budget_permission WHERE bid = ?', [budget.id]); for (const p of permission) { const np = { id: uuid.v4(), spid: subProject.id, pid: budget.pid, uid: p.uid, budget_permission: p.permission, manage_permission: '1' }; const [pSql, pSqlParam] = getInsertSql('zh_sub_project_permission', np); await querySql(pSql, pSqlParam); } } catch (err) { console.log(err); } }; const doComplete = async function() { try { const project = await querySql('Select * From zh_project'); for (const p of project) { console.log(`Update Project ${p.code}(${p.id}):`); const budget = await querySql('SELECT * FROM zh_budget where pid = ?', [p.id]); for (const [i, b] of budget.entries()) { console.log(`Sync Budget ${b.name}(${b.id})`); await syncBudget(b, i + 1); } } } catch (err) { console.log(err); } BaseUtil.closePool(); }; const doCompleteTest = async function(code) { try { const project = await querySql('Select * From zh_project where code = ?', [code]); for (const p of project) { console.log(`Update Project ${p.code}(${p.id}):`); const budget = await querySql('SELECT * FROM zh_budget where pid = ?', [p.id]); for (const [i, b] of budget.entries()) { console.log(`Sync Budget ${b.name}(${b.id})`); await syncBudget(b, i + 1); } } } catch (err) { console.log(err); } BaseUtil.closePool(); }; const projectCode = process.argv[3]; if (projectCode) { doCompleteTest(projectCode); } else { doComplete() }