| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const fs = require('fs');
 
- const path = require('path');
 
- var util = require('util');
 
- var logPath = path.join(__dirname, 'update_revise.log');
 
- var logFile = fs.createWriteStream(logPath, { flags: 'a' });
 
- console.log = function() {
 
-     logFile.write(util.format.apply(null, arguments) + '\n');
 
-     process.stdout.write(util.format.apply(null, arguments) + '\n');
 
- };
 
- const audit = require('../app/const/audit');
 
- const measureType = require('../app/const/tender').measureType;
 
- const mysql = require('mysql');
 
- const oss = require('ali-oss');
 
- const config = process.argv.splice(2)[0];
 
- if (['local', 'uat', 'default'].indexOf(config) < 0) throw `参数错误: ${config}`;
 
- const options = require(`../config/config.${config}`)({ baseDir: __dirname + '/app', root: __dirname, name: 'calc' });
 
- const pool = mysql.createPool(options.mysql.client);
 
- const ossOption = {
 
-     bucket: options.oss.clients.his.bucket,
 
-     accessKeyId: options.oss.default.accessKeyId,
 
-     accessKeySecret: options.oss.default.accessKeySecret,
 
-     endpoint: options.oss.default.endpoint,
 
-     timeout: options.oss.default.timeout,
 
- };
 
- const ossClient = new oss(ossOption);
 
- const querySql = async function(sql, sqlParam) {
 
-     return new Promise(function(resolve, reject) {
 
-         pool.getConnection(function(err, conn) {
 
-             if (err) {
 
-                 if (err) console.log(err);
 
-                 reject(err);
 
-             } else {
 
-                 conn.query(sql, sqlParam, function(err, rows, fields) {
 
-                     if (err) console.log(err);
 
-                     // 释放连接
 
-                     conn.release();
 
-                     // 传递Promise回调对象
 
-                     resolve(rows);
 
-                 });
 
-             }
 
-         });
 
-     });
 
- };
 
- const getTableName = function(tender, table) {
 
-     // switch(table) {
 
-     //     case 'ledger': return 'zh_ledger_' + (tender.id % 10);
 
-     //     case 'pos': return 'zh_pos_' + (tender.id % 20);
 
-     //     case 'revise_bills': return 'zh_revise_bills_' + (tender.id % 10);
 
-     //     case 'revise_pos': return 'zh_revise_pos_' + (tender.id % 20);
 
-     // }
 
-     return table.indexOf('pos') > 0 ? `zh_${table}_${tender.id % 20}` : `zh_${table}_${tender.id % 10}`;
 
- };
 
- const saveLedgerHis = async function(tender) {
 
-     const now = new Date();
 
-     const timestamp = (now).getTime();
 
-     const billsHis = `${tender.project_id}/${tender.id}/ledger/bills${timestamp}.json`;
 
-     const bills = await querySql('Select * From ?? where tender_id = ?', [getTableName(tender, 'ledger'), tender.id]);
 
-     console.log(`saveBillsFile: ${billsHis}(${bills.length})`);
 
-     await ossClient.put(options.hisOssPath + billsHis, Buffer.from(JSON.stringify(bills), 'utf8'));
 
-     const posHis = `${tender.project_id}/${tender.id}/ledger/pos${timestamp}.json`;
 
-     const pos = await querySql('Select * From ?? where tid = ?', [getTableName(tender, 'pos'), tender.id]);
 
-     console.log(`savePosFile: ${posHis}(${pos.length})`);
 
-     await ossClient.put(options.hisOssPath + posHis, Buffer.from(JSON.stringify(pos), 'utf8'));
 
-     const result = await querySql('Insert Into zh_ledger_history(pid, tid, in_time, bills_file, pos_file) Values(?, ?, ?, ?, ?)',
 
-         [tender.project_id, tender.id, now, billsHis, posHis]);
 
-     if (!result) throw 'err';
 
-     return result.insertId;
 
- };
 
- const saveReviseLedgerHis = async function (tender, revise) {
 
-     const now = new Date();
 
-     const billsHis = revise.bills_file;
 
-     const posHis = revise.pos_file;
 
-     const result = await querySql('Insert Into zh_ledger_history(pid, tid, in_time, bills_file, pos_file, rid, rorder, valid) Values(?, ?, ?, ?, ?, ?, ?, ?)',
 
-         [tender.project_id, tender.id, now, billsHis, posHis, revise.id, revise.corder, revise.valid]);
 
-     if (!result) throw 'err';
 
-     return result.insertId;
 
- };
 
- const doCompleteTender = async function(t) {
 
-     const revise = await querySql('Select * From zh_ledger_revise where tid = ? order By in_time asc', [t.id]);
 
-     if (revise.length > 0) {
 
-         let his_id, withoutHisRevise = [];
 
-         for (const r of revise) {
 
-             const preRevise = revise.find(x => { return x.status === audit.revise.status.checked && x.corder === r.corder - 1});
 
-             if (preRevise) {
 
-                 await querySql('Update zh_ledger_revise Set pre_his_id = ? Where id = ?', [preRevise.his_id, r.id]);
 
-             }
 
-             if (r.bills_file) {
 
-                 r.his_id = await saveReviseLedgerHis(t, r);
 
-                 if (r.valid) his_id = r.his_id;
 
-                 await querySql('Update zh_ledger_revise Set his_id = ? Where id = ?', [r.his_id, r.id]);
 
-             } else {
 
-                 if (r.status !== 1) withoutHisRevise.push(r);
 
-             }
 
-         }
 
-         if (!his_id || t.measure_type === measureType.gcl.value) his_id = await saveLedgerHis(t);
 
-         await querySql('Update zh_tender Set his_id = ? Where id = ?', [his_id, t.id]);
 
-         const stages = await querySql('Select * From zh_stage where tid = ? and status = ?', [t.id, audit.stage.status.checked]);
 
-         for (const s of stages) {
 
-             if (s.status === audit.stage.status.checked) {
 
-                 await querySql('Update zh_stage Set his_id = ? Where id = ?', [his_id, s.id]);
 
-             }
 
-         }
 
-         for (const r of withoutHisRevise) {
 
-             await querySql('Update zh_ledger_revise Set pre_his_id = ?, his_id = ? Where id = ?', [his_id, his_id, r.id]);
 
-         }
 
-     } else {
 
-         const ledgerHis = await saveLedgerHis(t);
 
-         console.log(`saveLedgerHis: ${t.name}(${t.id})`);
 
-         await querySql('Update zh_tender Set his_id = ? Where id = ?', [ledgerHis, t.id]);
 
-         const stages = await querySql('Select * From zh_stage where tid = ? and status = ?', [t.id, audit.stage.status.checked]);
 
-         for (const s of stages) {
 
-             if (s.status === audit.stage.status.checked) {
 
-                 await querySql('Update zh_stage Set his_id = ? Where id = ?', [ledgerHis, s.id]);
 
-             }
 
-         }
 
-     }
 
- };
 
- const doComplete = async function() {
 
-     try {
 
-         const tenders = await querySql('Select * From zh_tender where ledger_status <> ?', [audit.ledger.status.uncheck]);
 
-         for (const t of tenders) {
 
-             await doCompleteTender(t);
 
-         }
 
-     } catch (err) {
 
-         console.log(err);
 
-     }
 
-     pool.end();
 
- };
 
- doComplete();
 
- // const doCompleteTender2 = async function(t) {
 
- //     const revise = await querySql('Select * From zh_ledger_revise where tid = ? order By in_time asc', [t.id]);
 
- //     if (revise.length > 0) {
 
- //         for (const r of revise) {
 
- //             const preRevise = revise.find(x => { return x.status === audit.revise.status.checked && x.corder === r.corder - 1});
 
- //             if (!preRevise && !r.pre_his_id) {
 
- //                 await querySql('Update zh_ledger_revise Set pre_his_id = ? Where id = ?', [r.his_id, r.id]);
 
- //             }
 
- //         }
 
- //     }
 
- // };
 
- //
 
- // const doCompeletTest = async function() {
 
- //     try {
 
- //         const tenders = await querySql('Select * From zh_tender where ledger_status <> ?', [audit.ledger.status.uncheck]);
 
- //         //const tenders = await querySql('Select * From zh_tender where id = ?', [3863]);
 
- //         for (const t of tenders) {
 
- //             await doCompleteTender2(t);
 
- //         }
 
- //     } catch (err) {
 
- //         console.log(err);
 
- //     }
 
- //     pool.end();
 
- // };
 
- // doCompeletTest();
 
 
  |