rpt_tree_node.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  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, sourceType = 1) {
  35. this.initSqlBuilder();
  36. this.sqlBuilder.setAndWhere('pid', {
  37. value: prjIdArr,
  38. operate: 'in',
  39. });
  40. this.sqlBuilder.setAndWhere('source_type', {
  41. value: sourceType,
  42. operate: '=',
  43. });
  44. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  45. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  46. const list = await this.db.query(sql, sqlParam);
  47. return list;
  48. }
  49. async getNodeById(id) {
  50. this.initSqlBuilder();
  51. this.sqlBuilder.setAndWhere('id', {
  52. value: id,
  53. operate: '=',
  54. });
  55. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  56. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  57. const list = await this.db.query(sql, sqlParam);
  58. return list;
  59. }
  60. async getNodesBySourceType(prjIdArr, sourceType = null) {
  61. this.initSqlBuilder();
  62. this.sqlBuilder.setAndWhere('pid', {
  63. value: prjIdArr,
  64. operate: 'in',
  65. });
  66. if (sourceType) {
  67. if (sourceType instanceof Array) {
  68. this.sqlBuilder.setAndWhere('source_type', {
  69. value: sourceType,
  70. operate: 'in',
  71. });
  72. } else {
  73. this.sqlBuilder.setAndWhere('source_type', {
  74. value: sourceType,
  75. operate: '=',
  76. });
  77. }
  78. }
  79. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  80. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  81. const list = await this.db.query(sql, sqlParam);
  82. return list;
  83. }
  84. async getAllNodes(prjIdArr) {
  85. this.initSqlBuilder();
  86. this.sqlBuilder.setAndWhere('pid', {
  87. value: prjIdArr,
  88. operate: 'in',
  89. });
  90. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time', 'source_type'];
  91. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  92. const list = await this.db.query(sql, sqlParam);
  93. return list;
  94. }
  95. async createNode(prjId, name) {
  96. let rst = null;
  97. this.transaction = await this.db.beginTransaction();
  98. try {
  99. const data = {
  100. // id: 0,
  101. rpt_type: 0,
  102. name,
  103. pid: prjId,
  104. items: '[]',
  105. last_update_time: (new Date()).getTime().toString(),
  106. };
  107. console.log('createNode:');
  108. console.log(data);
  109. rst = await this.transaction.insert(this.tableName, data);
  110. await this.transaction.commit();
  111. } catch (ex) {
  112. console.log(ex);
  113. // 回滚
  114. await this.transaction.rollback();
  115. }
  116. return rst;
  117. }
  118. async updateTopNode(topNode) {
  119. try {
  120. this.transaction = await this.db.beginTransaction();
  121. await this.transaction.update(this.tableName, topNode);
  122. // const operate = await this.db.update(this.tableName, topNode);
  123. // console.log(operate.affectedRows);
  124. // return operate.affectedRows === 1;
  125. await this.transaction.commit();
  126. return true;
  127. } catch (ex) {
  128. console.log(ex);
  129. await this.transaction.rollback();
  130. return false;
  131. }
  132. }
  133. }
  134. return RptTreeNode;
  135. };