rpt_tree_node.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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) {
  61. this.initSqlBuilder();
  62. this.sqlBuilder.setAndWhere('pid', {
  63. value: prjIdArr,
  64. operate: 'in',
  65. });
  66. this.sqlBuilder.setAndWhere('source_type', {
  67. value: sourceType,
  68. operate: '=',
  69. });
  70. this.sqlBuilder.columns = ['id', 'name', 'rpt_type', 'pid', 'items', 'last_update_time'];
  71. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
  72. const list = await this.db.query(sql, sqlParam);
  73. return list;
  74. }
  75. async createNode(prjId, name) {
  76. let rst = null;
  77. this.transaction = await this.db.beginTransaction();
  78. try {
  79. const data = {
  80. // id: 0,
  81. rpt_type: 0,
  82. name,
  83. pid: prjId,
  84. items: '[]',
  85. last_update_time: (new Date()).getTime().toString(),
  86. };
  87. console.log('createNode:');
  88. console.log(data);
  89. rst = await this.transaction.insert(this.tableName, data);
  90. await this.transaction.commit();
  91. } catch (ex) {
  92. console.log(ex);
  93. // 回滚
  94. await this.transaction.rollback();
  95. }
  96. return rst;
  97. }
  98. async updateTopNode(topNode) {
  99. try {
  100. this.transaction = await this.db.beginTransaction();
  101. await this.transaction.update(this.tableName, topNode);
  102. // const operate = await this.db.update(this.tableName, topNode);
  103. // console.log(operate.affectedRows);
  104. // return operate.affectedRows === 1;
  105. this.transaction.commit();
  106. return true;
  107. } catch (ex) {
  108. console.log(ex);
  109. this.transaction.rollback();
  110. return false;
  111. }
  112. }
  113. }
  114. return RptTreeNode;
  115. };