budget_zb.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const BaseUtil = require('./baseUtils');
  2. const querySql = BaseUtil.querySql;
  3. const uuid = require('node-uuid');
  4. const getInsertSql = function (tableName, data) {
  5. const column = [], query = [], value = [];
  6. for (const prop in data) {
  7. column.push(prop);
  8. query.push('?');
  9. value.push(data[prop]);
  10. }
  11. return [`INSERT INTO ${tableName} (${column.map(c => { return '`' + c + '`'}).join(',')}) VALUES (${query.join(',')})`, value]
  12. };
  13. const initBudgetZb = async function(budget) {
  14. let budgetStd = await querySql('SELECT * From zh_budget_std where id = ?', [budget.std_id]);
  15. budgetStd = budgetStd[0];
  16. if (!budgetStd) {
  17. console.log(`【Error】Budget-${budget.name}(${budget.id}): 未定义概预算标准`);
  18. return;
  19. }
  20. if (!budgetStd.zb_template_id) {
  21. console.log(`【Error】概预算标准-${budgetStd.name}: 招标预算模板未定义`);
  22. return;
  23. }
  24. const template = await querySql('SELECT * FROM zh_bills_template WHERE list_id = ?', [budgetStd.zb_template_id]);
  25. for (const tmp of template) {
  26. const initB = {
  27. id: uuid.v4(),
  28. bid: budget.id,
  29. tree_id: tmp.template_id,
  30. tree_pid: tmp.pid,
  31. level: tmp.level,
  32. order: tmp.order,
  33. full_path: tmp.full_path,
  34. is_leaf: tmp.is_leaf,
  35. code: tmp.code,
  36. name: tmp.name,
  37. unit: tmp.unit,
  38. node_type: tmp.node_type,
  39. };
  40. const [initSql, initSqlParam] = getInsertSql('zh_budget_zb', initB);
  41. await querySql(initSql, initSqlParam);
  42. }
  43. };
  44. const checkBudgetZb = async function(budget) {
  45. const data = await querySql('SELECT * From zh_budget_zb where bid = ?', [budget.id]);
  46. if (data.length > 0) {
  47. console.log(`Exit Budget ${budget.name}(${budget.id}):`);
  48. return;
  49. }
  50. await initBudgetZb(budget);
  51. console.log(`Done Budget ${budget.name}(${budget.id}):`);
  52. };
  53. const doComplete = async function() {
  54. try {
  55. const budget = await querySql('Select * From zh_budget');
  56. for (const b of budget) {
  57. console.log(`Update Budget ${b.name}(${b.id}):`);
  58. await checkBudgetZb(b);
  59. }
  60. } catch (err) {
  61. console.log(err);
  62. }
  63. BaseUtil.closePool();
  64. };
  65. const doCompleteTest = async function(tid) {
  66. try {
  67. const budget = await querySql('Select * From zh_budget where id = ?', [tid]);
  68. for (const b of budget) {
  69. console.log(`Update Budget ${b.name}(${b.id}):`);
  70. await checkBudgetZb(b);
  71. }
  72. } catch (err) {
  73. console.log(err);
  74. }
  75. BaseUtil.closePool();
  76. };
  77. const tenderId = process.argv[3];
  78. if (tenderId) {
  79. doCompleteTest(tenderId);
  80. } else {
  81. doComplete()
  82. }