| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | // 计算调差建筑税金额const materialConst = require('../app/const/material');const BaseUtil = require('./baseUtils');const querySql = BaseUtil.querySql;const ZhCalc = BaseUtil.ZhCalc;const checkMaterial = async function(material) {    let rate_tp = 0;    material.decimal = material.decimal ? JSON.parse(material.decimal) : materialConst.decimal;    if (material.is_stage_self) {        const materialStages = await querySql('Select * From zh_material_stage Where mid = ?', [material.id]);        for (const ms of materialStages) {            const ms_rate_tp = ZhCalc.round(ZhCalc.mul(ms.m_tp, 1 + material.rate / 100), material.decimal.tp);            rate_tp = ZhCalc.add(rate_tp, ms_rate_tp);        }    } else {        rate_tp = ZhCalc.round(ZhCalc.mul(material.m_tp, 1 + material.rate / 100), material.decimal.tp);    }    await querySql('Update zh_material Set rate_tp = ? Where id = ?', [rate_tp, material.id]);    console.log(`Update Material ${material.id}`);};const doComplete = async function() {    try {        const tender = await querySql('Select * From zh_tender');        for (const t of tender) {            console.log(`Update Tender ${t.id}:`);            const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);            for (const m of materials) {                await checkMaterial(m);            }        }    } catch (err) {        console.log(err);    }    BaseUtil.closePool();};const doCompleteTest = async function(tid) {    try {        const tender = await querySql('Select * From zh_tender where id = ?', [tid]);        for (const t of tender) {            console.log(`Update Tender ${t.id}:`);            const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);            for (const m of materials) {                await checkMaterial(m);            }        }    } catch (err) {        console.log(err);    }    BaseUtil.closePool();};const tenderId = process.argv[3];if (tenderId) {    doCompleteTest(tenderId);} else {    doComplete();}
 |