tpl_tree_node.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * Created by Tony on 2017/5/31.
  3. */
  4. var mongoose = require('mongoose');
  5. var dbm = require("../../../config/db/db_manager");
  6. var db = dbm.getCfgConnection("Reports");
  7. var async = require("async");
  8. var rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
  9. var Schema = mongoose.Schema;
  10. var TreeNodeSchema = new Schema({
  11. ID:Number,
  12. ParentID:Number,
  13. NextSiblingID:Number,
  14. grpType: Number, //建筑(const : 1)/公路(const 2)/其他 etc...
  15. nodeType: Number,//节点类型:树节点(枝) 或 模板节点(叶)
  16. tplType: Number, //概算、预算、招投标 etc...
  17. userId: String, //用户自定义模板用
  18. refId: Number, //
  19. name: String,
  20. isDeleted: Boolean
  21. });
  22. var TreeNodeModel = db.model("rpt_tpl_tree", TreeNodeSchema, "rpt_tpl_tree");
  23. var counter = require('../../../public/counter/counter');
  24. var RplTplTreeDAO = function(){};
  25. RplTplTreeDAO.prototype.getTplTreeNodes = function(grpType, userId, tplType, callback) {
  26. var filter = {"grpType": grpType};
  27. if (userId) {
  28. filter.userId = userId;
  29. }
  30. if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
  31. filter.tplType = tplType;
  32. }
  33. TreeNodeModel.find(filter, '-_id', function(err, data){
  34. if (err) {
  35. callback(true, null);
  36. } else callback(false,data);
  37. });
  38. };
  39. RplTplTreeDAO.prototype.updateTreeNodes = function(nodes, callback) {
  40. var functions = [];
  41. for (var i=0; i < nodes.length; i++) {
  42. //var md = new rationChapterTreeModel(nodes[i]);
  43. //md.isNew = false;
  44. functions.push((function(doc) {
  45. return function(cb) {
  46. TreeNodeModel.update({ID: doc.ID}, doc, cb);
  47. };
  48. })(nodes[i]));
  49. }
  50. async.parallel(functions, function(err, results) {
  51. callback(err, results);
  52. });
  53. };
  54. RplTplTreeDAO.prototype.createTplTreeNode = function(nodeData, lastNodeId, callback) {
  55. counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
  56. nodeData.ID = result.value.sequence_value;
  57. var node = new TreeNodeModel(nodeData);
  58. node.save(function (err, result) {
  59. if (err) {
  60. callback("树节点错误!", false);
  61. } else {
  62. if (lastNodeId > 0) {
  63. TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
  64. if (err) {
  65. callback("树节点错误!", false);
  66. } else {
  67. callback(false, result);
  68. }
  69. });
  70. } else callback(false, result);
  71. }
  72. });
  73. });
  74. };
  75. module.exports = new RplTplTreeDAO();