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);
|