// 计算变更令,计价不计价金额数 const defaultInfo = require('../app/const/tender_info'); const BaseUtil = require('./baseUtils'); const status = require('../app/const/audit').change.status; const querySql = BaseUtil.querySql; const ZhCalc = BaseUtil.ZhCalc; const checkChange = async function(change, decimal) { const changeBills = await querySql('Select * From zh_change_audit_list where cid = ?', [change.cid]); let valuation_tp = 0; let unvaluation_tp = 0; for (const cb of changeBills) { cb.tp = ZhCalc.mul(cb.spamount, cb.unit_price, change.tp_decimal || decimal.tp); if (cb.is_valuation) { valuation_tp = ZhCalc.add(valuation_tp, cb.tp); } else { unvaluation_tp = ZhCalc.add(unvaluation_tp, cb.tp); } } await querySql('Update zh_change Set valuation_tp = ?, unvaluation_tp = ? Where cid = ?', [valuation_tp, unvaluation_tp, change.cid]); console.log(`Update Change ${change.cid}`); }; 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 info = await querySql('Select * From zh_tender_info where tid = ?', [t.id]); const decimal = info.length > 0 && info[0].decimal ? JSON.parse(info[0].decimal) : defaultInfo.defaultInfo.decimal; const changes = await querySql('Select * From zh_change where tid = ?', [t.id]); for (const c of changes) { await checkChange(c, decimal); } } } 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 info = await querySql('Select * From zh_tender_info where tid = ?', [t.id]); const decimal = info.length > 0 && info[0].decimal ? JSON.parse(info[0].decimal) : defaultInfo.defaultInfo.decimal; const changes = await querySql('Select * From zh_change where tid = ?', [t.id]); for (const c of changes) { await checkChange(c, decimal); } } } catch (err) { console.log(err); } BaseUtil.closePool(); }; const tenderId = process.argv[3]; if (tenderId) { doCompleteTest(tenderId); } else { doComplete(); }