change_audit_order.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. const BaseUtil = require('./baseUtils');
  2. const querySql = BaseUtil.querySql;
  3. const change_type = {
  4. changeProject: {
  5. table_name: 'zh_change_project',
  6. audit_table_name: 'zh_change_project_audit',
  7. tb_id: 'cpid',
  8. },
  9. changeApply: {
  10. table_name: 'zh_change_apply',
  11. audit_table_name: 'zh_change_apply_audit',
  12. tb_id: 'caid',
  13. },
  14. changePlan: {
  15. table_name: 'zh_change_plan',
  16. audit_table_name: 'zh_change_plan_audit',
  17. tb_id: 'cpid',
  18. },
  19. };
  20. const errorChangeTimes = [];
  21. const updateChangeTimes = async function(change, times, type) {
  22. const auditData = await querySql('SELECT * FROM ?? WHERE ' + change_type[type].tb_id + ' = ? AND times = ? ORDER BY `order`', [change_type[type].audit_table_name, change.id, times]);
  23. if (auditData.length === 0) return;
  24. const auditIds = [], filterIds = [];
  25. for (const ad of auditData) {
  26. if (ad.audit_order) {
  27. if (filterIds.indexOf(ad.aid) < 0) filterIds.push(ad.aid);
  28. } else {
  29. const auditId = auditIds.find(x => { return x.aid === ad.aid; });
  30. if (auditId) {
  31. auditId.ids.push(ad.id);
  32. } else {
  33. auditIds.push({ aid: ad.aid, ids: [ad.id] });
  34. }
  35. }
  36. }
  37. if (auditIds.length === 0) return;
  38. if (filterIds.length > 0 && auditIds.length > 0) {
  39. const object = { tid: change.tid, times };
  40. object[change_type[type].tb_id] = change.id;
  41. errorChangeTimes.push(object);
  42. }
  43. for (const [i, aid] of auditIds.entries()) {
  44. for (const id of aid.ids) {
  45. await querySql('UPDATE ?? SET audit_order = ? WHERE id = ?', [change_type[type].audit_table_name, i + 1, id]);
  46. }
  47. }
  48. };
  49. const updateChange = async function(change, type) {
  50. for (let i = 1; i <= change.times; i++) {
  51. await updateChangeTimes(change, i, type);
  52. }
  53. };
  54. const doCompleteTest = async function(id) {
  55. try {
  56. const tender = await querySql('Select * From zh_tender where id > ?', [id]);
  57. for (const t of tender) {
  58. console.log(`Update Tender ${t.name}(${t.id}):`);
  59. for (const type in change_type) {
  60. const changes = await querySql('Select * From ?? where tid = ?', [change_type[type].table_name, t.id]);
  61. for (const c of changes) {
  62. await updateChange(c, type);
  63. }
  64. }
  65. }
  66. } catch (err) {
  67. console.log(err);
  68. }
  69. BaseUtil.closePool();
  70. if (errorChangeTimes.length > 0) {
  71. console.log('ERROR change info: ');
  72. console.log(errorChangeTimes);
  73. }
  74. };
  75. const doComplete = async function() {
  76. try {
  77. const tenders = await querySql('Select * From zh_tender');
  78. for (const t of tenders) {
  79. console.log(`Update Tender ${t.name}(${t.id}):`);
  80. for (const type in change_type) {
  81. const changes = await querySql('Select * From ?? where tid = ?', [change_type[type].table_name, t.id]);
  82. for (const c of changes) {
  83. await updateChange(c, type);
  84. }
  85. }
  86. }
  87. } catch (err) {
  88. console.log(err);
  89. }
  90. BaseUtil.closePool();
  91. if (errorChangeTimes.length > 0) {
  92. console.log('ERROR change info: ');
  93. console.log(errorChangeTimes);
  94. }
  95. };
  96. const tenderId = process.argv[3];
  97. if (tenderId) {
  98. doCompleteTest(tenderId);
  99. } else {
  100. doComplete();
  101. }