| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | /* 修改脚本,请现在指定项目测试 例如: node db_script/sub_project local T201711273363 没有意外再全部执行 所有修改均应考虑脚本二次执行时的兼容,应检查是否已执行过,避免在生产环境运行时出现问题后需要二次执行,参见自定义分类脚本  */const BaseUtil = require('./baseUtils');const querySql = BaseUtil.querySql;const _ = require('lodash');const ZhCalc = BaseUtil.ZhCalc;const calcPreHbTP = async function(subProject) {    const ftList = await querySql('SELECT * FROM zh_financial_transfer where spid = ? ORDER BY id DESC', [subProject.id]);    if (ftList.length > 0) {        const updateFtList = [];        const updateFttList = [];        const fttList = await querySql('SELECT * FROM zh_financial_transfer_tender where spid = ? ORDER BY trid DESC, id ASC', [subProject.id]);        if (fttList.length > 0) {            for (const ftt of fttList) {                const ftts = _.filter(fttList, function(item) {                    return item.tid === ftt.tid && item.trid < ftt.trid;                });                let pre_hb_tp = 0;                if (ftts.length > 0) {                    pre_hb_tp = ZhCalc.sum(_.map(ftts, 'hb_tp'));                }                if (pre_hb_tp !== ftt.pre_hb_tp) {                    ftt.pre_hb_tp = pre_hb_tp;                    updateFttList.push({ id: ftt.id, pre_hb_tp });                }            }            for (const ft of ftList) {                const fts = _.filter(ftList, function(item) {                    return item.tid === ft.tid && item.id < ft.id;                });                let pre_hb_tp = 0;                if (fts.length > 0) {                    pre_hb_tp = ZhCalc.sum(_.map(fts, 'total_price'));                }                if (pre_hb_tp !== ft.pre_hb_tp) {                    ft.pre_hb_tp = pre_hb_tp;                    updateFtList.push({ id: ft.id, pre_hb_tp });                }            }        }        if (updateFtList.length > 0) {            const sql = 'UPDATE zh_financial_transfer SET pre_hb_tp = ? WHERE id = ?';            for (const ft of updateFtList) {                await querySql(sql, [ft.pre_hb_tp, ft.id]);            }        }        if (updateFttList.length > 0) {            const sql = 'UPDATE zh_financial_transfer_tender SET pre_hb_tp = ? WHERE id = ?';            for (const ftt of updateFttList) {                await querySql(sql, [ftt.pre_hb_tp, ftt.id]);            }        }    }};const doComplete = async function(code) {    try {        const filter = code ? ` where code = '${code}'` : '';        const project = await querySql('Select * From zh_project' + filter);        for (const p of project) {            console.log(`Update Project ${p.code}(${p.id}):`);            const subProj = await querySql('SELECT * FROM zh_sub_project where project_id = ? and is_folder = 0 and is_delete = 0;', [p.id]);            for (const sp of subProj) {                await calcPreHbTP(sp);            }            console.log('END Update;');        }    } catch (err) {        console.log(err);    }    BaseUtil.closePool();};const projectCode = process.argv[3];doComplete(projectCode);
 |