| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 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()}
 |