base_budget_service.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const TreeService = require('./base_tree_service');
  10. class BaseBudget extends TreeService {
  11. /**
  12. * 构造函数
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @param {String} tableName - 表名
  16. * @return {void}
  17. */
  18. constructor(ctx, setting, tablename) {
  19. super(ctx, {
  20. mid: 'bid',
  21. kid: 'tree_id',
  22. pid: 'tree_pid',
  23. order: 'order',
  24. level: 'level',
  25. isLeaf: 'is_leaf',
  26. fullPath: 'full_path',
  27. keyPre: setting.keyPre,
  28. uuid: true,
  29. });
  30. this.tableName = tablename;
  31. }
  32. async initByTemplate(conn, budgetId, templateId){
  33. if (!conn) throw '内部错误';
  34. if (budgetId <= 0) throw '概算项目id错误';
  35. const data = await this.ctx.service.tenderNodeTemplate.getData(templateId);
  36. if (!data.length) throw '模板数据有误';
  37. // 整理数据
  38. const insertData = [];
  39. for (const tmp of data) {
  40. insertData.push({
  41. id: this.uuid.v4(),
  42. bid: budgetId,
  43. tree_id: tmp.template_id,
  44. tree_pid: tmp.pid,
  45. level: tmp.level,
  46. order: tmp.order,
  47. full_path: tmp.full_path,
  48. is_leaf: tmp.is_leaf,
  49. code: tmp.code,
  50. name: tmp.name,
  51. node_type: tmp.node_type,
  52. });
  53. }
  54. const operate = await conn.insert(this.tableName, insertData);
  55. return operate.affectedRows === data.length;
  56. }
  57. }
  58. module.exports = BaseBudget;