rpt_tree_node.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. 'use strict';
  2. /**
  3. * 报表模板组织架构模型
  4. *
  5. * @author TonyKang
  6. * @date 2019/05/05
  7. * @version
  8. */
  9. const BaseService = require('../base/base_service');
  10. module.exports = app => {
  11. class RptTreeNode extends BaseService {
  12. /**
  13. * 构造函数
  14. *
  15. * @param {Object} ctx - egg全局变量
  16. * @return {void}
  17. */
  18. constructor(ctx) {
  19. super(ctx);
  20. this.tableName = 'rpt_tree_node';
  21. this.dataId = 'id';
  22. }
  23. async getNodesByType(typeArr) {
  24. this.initSqlBuilder();
  25. this.sqlBuilder.setAndWhere('rpt_type', {
  26. value: typeArr,
  27. operate: 'in',
  28. });
  29. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  30. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  31. const list = await this.db.query(sql, sqlParam);
  32. return list;
  33. }
  34. async getNodesByProjectId(prjIdArr) {
  35. this.initSqlBuilder();
  36. this.sqlBuilder.setAndWhere('pid', {
  37. value: prjIdArr,
  38. operate: 'in',
  39. });
  40. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  41. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  42. const list = await this.db.query(sql, sqlParam);
  43. return list;
  44. }
  45. async getNodeById(id) {
  46. this.initSqlBuilder();
  47. this.sqlBuilder.setAndWhere('id', {
  48. value: id,
  49. operate: '=',
  50. });
  51. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  52. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  53. const list = await this.db.query(sql, sqlParam);
  54. return list;
  55. }
  56. async getNodesBySourceType(prjIdArr, sourceType) {
  57. this.initSqlBuilder();
  58. this.sqlBuilder.setAndWhere('pid', {
  59. value: prjIdArr,
  60. operate: 'in',
  61. });
  62. this.sqlBuilder.setAndWhere('source_type', {
  63. value: sourceType,
  64. operate: '=',
  65. });
  66. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  67. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  68. const list = await this.db.query(sql, sqlParam);
  69. return list;
  70. }
  71. async createNode(prjId, name) {
  72. let rst = null;
  73. this.transaction = await this.db.beginTransaction();
  74. try {
  75. const data = {
  76. // id: 0,
  77. rpt_type: 0,
  78. name,
  79. pid: prjId,
  80. items: '[]',
  81. last_update_time: (new Date()).getTime().toString(),
  82. };
  83. console.log('createNode:');
  84. console.log(data);
  85. rst = await this.transaction.insert(this.tableName, data);
  86. await this.transaction.commit();
  87. } catch (ex) {
  88. console.log(ex);
  89. // 回滚
  90. await this.transaction.rollback();
  91. }
  92. return rst;
  93. }
  94. async updateTopNode(topNode) {
  95. try {
  96. this.transaction = await this.db.beginTransaction();
  97. await this.transaction.update(this.tableName, topNode);
  98. // const operate = await this.db.update(this.tableName, topNode);
  99. // console.log(operate.affectedRows);
  100. // return operate.affectedRows === 1;
  101. this.transaction.commit();
  102. return true;
  103. } catch (ex) {
  104. console.log(ex);
  105. this.transaction.rollback();
  106. return false;
  107. }
  108. }
  109. }
  110. return RptTreeNode;
  111. };