rpt_tpl_controller.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * Created by Tony on 2017/6/1.
  3. */
  4. let async = require("async");
  5. let counter = require('../../../public/counter/counter');
  6. //let TplNode = require('../models/tpl_tree_node');
  7. let TreeNodeModel = require('../models/tpl_tree_node');
  8. let rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
  9. //统一回调函数
  10. let callback = function(req, res, err, message, data){
  11. res.json({error: err, message: message, data: data});
  12. }
  13. module.exports = {
  14. getRptTplTree: function(req, res) {
  15. let params = JSON.parse(req.body.params),
  16. grpType = params.grpType,
  17. userId = params.userId,
  18. tplType = params.tplType;
  19. let filter = {"grpType": grpType, "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
  20. if (userId) {
  21. filter.userId = userId;
  22. }
  23. if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
  24. filter.tplType = tplType;
  25. }
  26. TreeNodeModel.find(filter, '-_id', function(err, data){
  27. if (err) {
  28. callback(req,res, true,"", null);
  29. } else callback(req,res,false,"", data);
  30. });
  31. },
  32. updateTreeNodes: function(req, res) {
  33. let params = JSON.parse(req.body.params),
  34. nodes = params.nodes;
  35. let functions = [];
  36. for (let node of nodes) {
  37. functions.push((function(doc) {
  38. return function(cb) {
  39. TreeNodeModel.update({ID: doc.ID}, doc, cb);
  40. };
  41. })(node));
  42. }
  43. async.parallel(functions, function(err, results) {
  44. callback(req,res, err, "", results);
  45. });
  46. },
  47. deleteTptTplNodes: function(req, res){
  48. let params = JSON.parse(req.body.params),
  49. nodeIds = params.nodeIds,
  50. preNodeId = params.preNodeId,
  51. preNodeNextId = params.preNodeNextId;
  52. let functions = [];
  53. if (preNodeId !== -1) {
  54. functions.push((function(nodeId, nextId) {
  55. return function(cb) {
  56. TreeNodeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
  57. };
  58. })(preNodeId, preNodeNextId));
  59. }
  60. for (let nId of nodeIds) {
  61. functions.push((function(nodeId) {
  62. return function(cb) {
  63. TreeNodeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
  64. };
  65. })(nId));
  66. }
  67. async.parallel(functions, function(err, results) {
  68. callback(req,res, err, "", results);
  69. });
  70. },
  71. createTplTreeNode: function(req, res){
  72. let params = JSON.parse(req.body.params),
  73. lastNodeId = params.lastNodeId,
  74. nodeData = params.rawNodeData;
  75. counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
  76. nodeData.ID = result.value.sequence_value;
  77. let node = new TreeNodeModel(nodeData);
  78. node.save(function (err, result) {
  79. if (err) {
  80. callback(req,res, "树节点错误!", "", null);
  81. } else {
  82. if (lastNodeId > 0) {
  83. TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
  84. if (err) {
  85. callback(req,res, "树节点错误!", "", null);
  86. } else {
  87. callback(req,res, false, "", result);
  88. }
  89. });
  90. } else callback(req,res, false, "", result);
  91. }
  92. });
  93. });
  94. }
  95. }