rpt_tpl_controller.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /**
  2. * Created by Tony on 2017/6/1.
  3. */
  4. let async = require("async");
  5. let counter = require('../../../public/counter/counter');
  6. let RptTplModel = require('../models/rpt_template');
  7. let TreeNodeModel = require('../models/tpl_tree_node');
  8. let rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
  9. let stringUtil = require("../../../public/stringUtil");
  10. //统一回调函数
  11. let callback = function(req, res, err, message, data){
  12. res.json({error: err, message: message, data: data});
  13. }
  14. module.exports = {
  15. getRptTplTree: function(req, res) {
  16. let params = JSON.parse(req.body.params),
  17. grpType = params.grpType,
  18. userId = params.userId,
  19. tplType = params.tplType;
  20. let filter = {"grpType": grpType, "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
  21. if (userId) {
  22. filter.userId = userId;
  23. }
  24. if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
  25. filter.tplType = tplType;
  26. }
  27. TreeNodeModel.find(filter, '-_id', function(err, data){
  28. if (err) {
  29. callback(req,res, true,"", null);
  30. } else callback(req,res,false,"", data);
  31. });
  32. },
  33. updateTreeNodes: function(req, res) {
  34. let params = JSON.parse(req.body.params),
  35. nodes = params.nodes;
  36. let functions = [];
  37. for (let node of nodes) {
  38. functions.push((function(doc) {
  39. return function(cb) {
  40. TreeNodeModel.update({ID: doc.ID}, doc, cb);
  41. };
  42. })(node));
  43. }
  44. async.parallel(functions, function(err, results) {
  45. callback(req,res, err, "", results);
  46. });
  47. },
  48. deleteRptTplNodes: function(req, res){
  49. let params = JSON.parse(req.body.params),
  50. nodeIds = params.nodeIds,
  51. preNodeId = params.preNodeId,
  52. preNodeNextId = params.preNodeNextId;
  53. let functions = [];
  54. if (preNodeId !== -1) {
  55. functions.push((function(nodeId, nextId) {
  56. return function(cb) {
  57. TreeNodeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
  58. };
  59. })(preNodeId, preNodeNextId));
  60. }
  61. for (let nId of nodeIds) {
  62. functions.push((function(nodeId) {
  63. return function(cb) {
  64. TreeNodeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
  65. };
  66. })(nId));
  67. }
  68. async.parallel(functions, function(err, results) {
  69. callback(req,res, err, "", results);
  70. });
  71. },
  72. createTplTreeNode: function(req, res){
  73. let params = JSON.parse(req.body.params),
  74. lastNodeId = params.lastNodeId,
  75. nodeData = params.rawNodeData;
  76. counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
  77. nodeData.ID = result.value.sequence_value;
  78. let node = new TreeNodeModel(nodeData);
  79. node.save(function (err, result) {
  80. if (err) {
  81. callback(req,res, "树节点错误!", "", null);
  82. } else {
  83. if (lastNodeId > 0) {
  84. TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
  85. if (err) {
  86. callback(req,res, "树节点错误!", "", null);
  87. } else {
  88. callback(req,res, false, "", result);
  89. }
  90. });
  91. } else callback(req,res, false, "", result);
  92. }
  93. });
  94. });
  95. },
  96. createDftRptTpl: function(req, res) {
  97. let params = JSON.parse(req.body.params),
  98. treeNodeId = params.treeNodeId,
  99. //grpChars = stringUtil.getPinYinFullChars(params.grpChars),
  100. rptDftTplId = params.rptDftTplId;
  101. let filter = {"ID": rptDftTplId};
  102. RptTplModel.findOne(filter, '-_id').exec().then(function(dftTplRst) {
  103. if (dftTplRst) {
  104. dftTplRst["ID"] = treeNodeId;
  105. dftTplRst["GROUP_KEY"] = "";
  106. dftTplRst["ID_KEY"] = "";
  107. let rptTpl = new RptTplModel(dftTplRst);
  108. rptTpl.save(function (err, actTplRst) {
  109. if (err) {
  110. callback(req,res, "报表模板创建错误", "", null);
  111. } else {
  112. //TreeNodeModel.update();
  113. TreeNodeModel.update({ID: treeNodeId}, {"refId": treeNodeId}, function(err, rst){
  114. if (err) {
  115. callback(req,res, "报表模板创建错误", "", null);
  116. } else {
  117. callback(req,res, false, "", actTplRst);
  118. }
  119. });
  120. }
  121. });
  122. } else {
  123. callback(req, res, 'Create report template failed!', null);
  124. }
  125. })
  126. }
  127. }