1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /**
- * Created by Tony on 2017/5/31.
- */
- var mongoose = require('mongoose');
- var dbm = require("../../../config/db/db_manager");
- var db = dbm.getCfgConnection("Reports");
- var async = require("async");
- var rptTplDef = require("../../../public/rpt_tpl_def").getUtil();
- var Schema = mongoose.Schema;
- var TreeNodeSchema = new Schema({
- ID:Number,
- ParentID:Number,
- NextSiblingID:Number,
- grpType: Number, //建筑(const : 1)/公路(const 2)/其他 etc...
- nodeType: Number,//节点类型:树节点(枝) 或 模板节点(叶)
- tplType: Number, //概算、预算、招投标 etc...
- userId: String, //用户自定义模板用
- refId: Number, //
- name: String,
- isDeleted: Boolean
- });
- var TreeNodeModel = db.model("rpt_tpl_tree", TreeNodeSchema, "rpt_tpl_tree");
- var counter = require('../../../public/counter/counter');
- //var RplTplTreeDAO = function(){};
- class RplTplTreeDAO{
- getTplTreeNodes(grpType, userId, tplType, callback) {
- var filter = {"grpType": grpType, "$or": [{"isDeleted": null}, {"isDeleted": false} ]};
- if (userId) {
- filter.userId = userId;
- }
- if ((tplType && tplType !== rptTplDef.TplType.ALL)) {
- filter.tplType = tplType;
- }
- TreeNodeModel.find(filter, '-_id', function(err, data){
- if (err) {
- callback(true, null);
- } else callback(false,data);
- });
- };
- updateTreeNodes(nodes, callback) {
- var functions = [];
- for (let node of nodes) {
- functions.push((function(doc) {
- return function(cb) {
- TreeNodeModel.update({ID: doc.ID}, doc, cb);
- };
- })(node));
- }
- async.parallel(functions, function(err, results) {
- callback(err, results);
- });
- };
- removeNodes(nodeIds, preNodeId, preNodeNextId, callback) {
- var functions = [];
- if (preNodeId != -1) {
- functions.push((function(nodeId, nextId) {
- return function(cb) {
- TreeNodeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
- };
- })(preNodeId, preNodeNextId));
- }
- for (let nId of nodeIds) {
- functions.push((function(nodeId) {
- return function(cb) {
- TreeNodeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
- };
- })(nId));
- }
- async.parallel(functions, function(err, results) {
- callback(err, results);
- });
- };
- createTplTreeNode(nodeData, lastNodeId, callback) {
- counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){
- nodeData.ID = result.value.sequence_value;
- var node = new TreeNodeModel(nodeData);
- node.save(function (err, result) {
- if (err) {
- callback("树节点错误!", false);
- } else {
- if (lastNodeId > 0) {
- TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
- if (err) {
- callback("树节点错误!", false);
- } else {
- callback(false, result);
- }
- });
- } else callback(false, result);
- }
- });
- });
- };
- }
- module.exports = new RplTplTreeDAO();
|