| 
					
				 | 
			
			
				@@ -2,7 +2,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Created by Tony on 2017/6/1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let TplNode = require('../models/tpl_tree_node'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let async = require("async"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let counter = require('../../../public/counter/counter'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//let TplNode = require('../models/tpl_tree_node'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let TreeNodeModel = require('../models/tpl_tree_node'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let rptTplDef = require("../../../public/rpt_tpl_def").getUtil(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //统一回调函数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let callback = function(req, res, err, message, data){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,15 +20,32 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             grpType = params.grpType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             userId = params.userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tplType = params.tplType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TplNode.getTplTreeNodes(grpType, userId, tplType, function(err, data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            callback(req,res,err,"", data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let 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(req,res, true,"", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else callback(req,res,false,"", data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     updateTreeNodes: function(req, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let params = JSON.parse(req.body.params), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             nodes = params.nodes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TplNode.updateTreeNodes(nodes, function(err,results){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            callback(req,res, err, "", results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let 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(req,res, err, "", results); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     deleteTptTplNodes: function(req, res){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -31,16 +53,47 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             nodeIds = params.nodeIds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             preNodeId = params.preNodeId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             preNodeNextId = params.preNodeNextId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TplNode.removeNodes(nodeIds, preNodeId, preNodeNextId, function(err,results){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            callback(req,res, err, "", results) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let 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(req,res, err, "", results); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     createTplTreeNode: function(req, res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let params = JSON.parse(req.body.params), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             lastNodeId = params.lastNodeId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             nodeData = params.rawNodeData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TplNode.createTplTreeNode(nodeData, lastNodeId, function(err, data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            callback(req,res,err,"", data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        counter.counterDAO.getIDAfterCount(counter.moduleName.report, 1, function(err, result){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            nodeData.ID = result.value.sequence_value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let node = new TreeNodeModel(nodeData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            node.save(function (err, result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    callback(req,res, "树节点错误!", "", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (lastNodeId > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TreeNodeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                callback(req,res, "树节点错误!", "", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                callback(req,res, false, "", result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else callback(req,res, false, "", result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |