material_audit_order.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const BaseUtil = require('./baseUtils');
  2. const querySql = BaseUtil.querySql;
  3. const errorStageTimes = [];
  4. const updateMaterialTimes = async function(material, times) {
  5. const auditData = await querySql('SELECT * FROM zh_material_audit WHERE mid = ? AND times = ? ORDER BY `order`', [material.id, times]);
  6. if (auditData.length === 0) return;
  7. const auditIds = [], filterIds = [];
  8. for (const ad of auditData) {
  9. if (ad.audit_order) {
  10. if (filterIds.indexOf(ad.aid) < 0) filterIds.push(ad.aid);
  11. } else {
  12. const auditId = auditIds.find(x => { return x.aid === ad.aid});
  13. if (auditId) {
  14. auditId.ids.push(ad.id);
  15. } else {
  16. auditIds.push({ aid: ad.aid, ids: [ad.id] });
  17. }
  18. }
  19. }
  20. if (auditIds.length === 0) return;
  21. if (filterIds.length > 0 && auditIds.length > 0) errorStageTimes.push({ tid: material.tid, mid: material.id, times });
  22. for (const [i, aid] of auditIds.entries()) {
  23. for (const id of aid.ids) {
  24. await querySql('UPDATE zh_material_audit SET audit_order = ? WHERE id = ?', [i+1, id]);
  25. }
  26. }
  27. };
  28. const updateMaterial = async function (material) {
  29. for (let i = 1; i <= material.times; i++) {
  30. await updateMaterialTimes(material, i);
  31. }
  32. };
  33. const doCompleteTest = async function(id) {
  34. try {
  35. const tender = await querySql('Select * From zh_tender where id > ?', [id]);
  36. for (const t of tender) {
  37. console.log(`Update Tender ${t.name}(${t.id}):`);
  38. const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);
  39. for (const s of materials) {
  40. await updateMaterial(s);
  41. }
  42. }
  43. } catch (err) {
  44. console.log(err);
  45. }
  46. BaseUtil.closePool();
  47. if (errorStageTimes.length > 0) {
  48. console.log('ERROR material info: ');
  49. console.log(errorStageTimes);
  50. }
  51. };
  52. const doComplete = async function() {
  53. try {
  54. const tenders = await querySql('Select * From zh_tender');
  55. for (const t of tenders) {
  56. console.log(`Update Tender ${t.name}(${t.id}):`);
  57. const materials = await querySql('Select * From zh_material where tid = ?', [t.id]);
  58. for (const s of materials) {
  59. await updateMaterial(s);
  60. }
  61. }
  62. } catch (err) {
  63. console.log(err);
  64. }
  65. BaseUtil.closePool();
  66. if (errorStageTimes.length > 0) {
  67. console.log('ERROR material info: ');
  68. console.log(errorStageTimes);
  69. }
  70. };
  71. const tenderId = process.argv[3];
  72. if (tenderId) {
  73. doCompleteTest(tenderId);
  74. } else {
  75. doComplete();
  76. }