|
@@ -0,0 +1,77 @@
|
|
|
+const BaseUtil = require('./baseUtils');
|
|
|
+const querySql = BaseUtil.querySql;
|
|
|
+
|
|
|
+const recoverStagePayOrder = async function (pays, stage) {
|
|
|
+ const timesOrder = await querySql('SELECT stimes, sorder FROM zh_stage_pay WHERE sid = ? GROUP BY stimes, sorder', [stage.id]);
|
|
|
+ for (const to of timesOrder) {
|
|
|
+ const stagePays = await querySql('SELECT * FROM zh_stage_pay WHERE sid = ? and stimes = ? and sorder = ? and porder > 0 ORDER BY porder', [stage.id, to.stimes, to.sorder]);
|
|
|
+ if (stagePays.length === 0) continue;
|
|
|
+
|
|
|
+ const maxOrder = stagePays[stagePays.length - 1].porder;
|
|
|
+ let activeMaxOrder = 0;
|
|
|
+ for (let i = 1; i <= maxOrder; i++) {
|
|
|
+ const relaPays = stagePays.filter(x => { return x.porder === i; });
|
|
|
+ if (i > activeMaxOrder + 1) {
|
|
|
+ for (const rp of relaPays) {
|
|
|
+ await querySql('UPDATE zh_stage_pay SET porder = 0 WHERE id = ?', [rp.id]);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (relaPays.length > 0) activeMaxOrder = i;
|
|
|
+ if (relaPays.length === 1) continue;
|
|
|
+ const recoverPays = [];
|
|
|
+ for (const rp of relaPays) {
|
|
|
+ const pay = pays.find(x => { return x.id === rp.pid; });
|
|
|
+ if (!pay.valid) recoverPays.push(rp);
|
|
|
+ }
|
|
|
+ if (recoverPays.length === relaPays.length) recoverPays.shift();
|
|
|
+ for (const rp of recoverPays) {
|
|
|
+ await querySql('UPDATE zh_stage_pay SET porder = 0 WHERE id = ?', [rp.id]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (const [i, pay] of pays.entries()) {
|
|
|
+ if (pay.order !== i + 1) await querySql('Update zh_pay Set `order` = ? Where id = ?', [i+1, pay.id]);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const recoverTender = async function(tid) {
|
|
|
+ const pays = await querySql('SELECT * FROM zh_pay WHERE tid = ? order by `order`', [tid]);
|
|
|
+ const stages = await querySql('SELECT * FROM zh_stage WHERE tid = ?', [tid]);
|
|
|
+ for (const s of stages) {
|
|
|
+ await recoverStagePayOrder(pays, s);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const doComplete = async function() {
|
|
|
+ try {
|
|
|
+ const tender = await querySql('Select * From zh_tender');
|
|
|
+ for (const t of tender) {
|
|
|
+ console.log(`Update Tender ${t.id}`);
|
|
|
+ await recoverTender(t.id);
|
|
|
+ }
|
|
|
+ } 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}`);
|
|
|
+ await recoverTender(t.id);
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err);
|
|
|
+ }
|
|
|
+ BaseUtil.closePool();
|
|
|
+};
|
|
|
+
|
|
|
+const tenderId = process.argv[3];
|
|
|
+if (tenderId) {
|
|
|
+ console.log(tenderId);
|
|
|
+ doCompleteTest(tenderId);
|
|
|
+} else {
|
|
|
+ doComplete()
|
|
|
+}
|