/** * Created by Tony on 2017/6/1. */ import mongoose from "mongoose"; import async from "async"; import counter from "../../../public/counter/counter"; let RptTplModel = mongoose.model('rpt_templates'); let TreeNodeModel = mongoose.model('rpt_tpl_tree'); let rptCustCfgFacade = require("../facade/rpt_cust_cfg_facade"); import JV from "../rpt_component/jpc_value_define"; import rttFacade from "../facade/rpt_tpl_tree_node_facade"; import CompilationModel from "../../users/models/compilation_model"; //统一回调函数 let callback = function(req, res, err, message, data){ res.json({error: err, message: message, data: data}); }; let mExport = { getCustomerCfg(req, res) { let params = JSON.parse(req.body.params) // userId = params.userId ; let userId = req.session.sessionUser.id; let userIds = []; userIds.push(userId); if (userId !== "-100") { userIds.push("-100"); } rptCustCfgFacade.getCustomizeCfg(userIds).then(function (custCfg) { if (custCfg) { //success let rst = null; if (custCfg.length > 0) { for (let itemCfg of custCfg) { rst = itemCfg; let doc = (itemCfg._doc)?itemCfg._doc:itemCfg; if (doc.userId !== "-100") { break; } } } callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "失败!", null); } }) }, getDftTemplates(req, res) { let filter = {"userId": "-100", "$or": [{"isDeleted": null}, {"isDeleted": false} ]}; TreeNodeModel.find(filter, '-_id', function(err, data){ if (err) { callback(req,res, true,"", null); } else { callback(req,res,false,"", data); } }); }, getCompilationList(req, res) { let compilationModel = new CompilationModel(); let compilationList = compilationModel.getCompilationList(); if (compilationList) { compilationList.then(function (rst) { callback(req,res,false,"", rst); }) } else { callback(req,res, true,"no result", null); } }, getRptTplTree: function(req, res) { let params = JSON.parse(req.body.params), compilationId = params.compilationId, // userId = params.userId, engineerId = params.engineerId; let userId = req.session.sessionUser.id; let userIds = []; userIds.push(userId); if (userId != "-100") { userIds.push("-100"); } if (!compilationId) { compilationId = req.session.sessionCompilation._id; } rttFacade.findTplTree(compilationId, engineerId, userIds).then(function(result) { if (result) { callback(req,res,false,"", result); } else { callback(req,res, true,"no result", null); } }); }, updateTreeNodes: function(req, res) { let params = JSON.parse(req.body.params), nodes = params.nodes; 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); }); }, deleteRptTplNodes: function(req, res){ let params = JSON.parse(req.body.params), nodeIds = params.nodeIds, preNodeId = params.preNodeId, preNodeNextId = params.preNodeNextId; 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); }); }, createTreeRootNode: function(req, res){ let params = JSON.parse(req.body.params), doc = params.doc; rttFacade.createNewTree(doc).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "创建失败!", null); } }) }, updateTreeRootNode: function(req, res){ let params = JSON.parse(req.body.params), doc = params.doc; rttFacade.updateTree(doc.compilationId, doc.engineerId, doc.userId, doc).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "更新失败!", null); } }) }, updateTopNodeName: function (req, res) { let params = JSON.parse(req.body.params), compilationId = params.compilationId, engineerId = params.engineerId, // userId = params.userId, nodeName = params.nodeName ; let userId = req.session.sessionUser.id; let filter = {"compilationId": compilationId, "engineerId": engineerId, "userId": userId, "$or": [{"isDeleted": null}, {"isDeleted": false}]}; let updateStatement = {"$set": {"name": nodeName}}; rttFacade.updateTreeInDetail(filter, updateStatement).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "更新失败!", null); } }); }, updateSubLevelOneNode: function (req, res) { let params = JSON.parse(req.body.params), compilationId = params.compilationId, engineerId = params.engineerId, // userId = params.userId, subNode = params.subNode ; let userId = req.session.sessionUser.id; let filter = {"compilationId": compilationId, "engineerId": engineerId, "userId": userId, "items.ID": subNode.ID, "$or": [{"isDeleted": null}, {"isDeleted": false}]}; let updateStatement = {$set: {"items.$": subNode}}; rttFacade.updateTreeInDetail(filter, updateStatement).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "更新失败!", null); } }); }, removeTreeRootNode: function (req, res) { let params = JSON.parse(req.body.params), compilationId = params.compilationId, engineerId = params.engineerId, // userId = params.userId, isPhysically = params.isPhysically ; let userId = req.session.sessionUser.id; if (isPhysically) { rttFacade.removeTreePhycically(compilationId, engineerId, userId).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "删除失败!", null); } }) } else { rttFacade.removeTree(compilationId, engineerId, userId).then(function (rst) { if (rst) { //success callback(req,res, false, "", rst); } else { //failed callback(req,res, true, "删除失败!", null); } }) } }, // createTplTreeNode: function(req, res){ // let params = JSON.parse(req.body.params), // lastNodeId = params.lastNodeId, // nodeData = params.rawNodeData; // 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); // } // }); // }); // }, getNewNodeID: function(req, res) { let params = JSON.parse(req.body.params), scope = params.scope; counter.counterDAO.getIDAfterCount(counter.moduleName.report, scope, function(err, result){ callback(req,res, false, "", result.sequence_value); }); }, createDftRptTpl: function(req, res) { let params = JSON.parse(req.body.params), treeNodeId = params.treeNodeId, rptDftTplId = params.rptDftTplId, rptName = params.rptName, grpKey = params.grpKey, compilationId = params.compilationId, engineerId = params.engineerId, // userId = params.userId, subNode = params.subNode ; let userId = req.session.sessionUser.id; let filter = {"ID": rptDftTplId}; RptTplModel.findOne(filter, '-_id').exec().then(function(dftTplRst) { if (dftTplRst) { let _doc = dftTplRst["_doc"]; _doc["ID"] = treeNodeId; _doc["GROUP_KEY"] = grpKey; _doc["ID_KEY"] = ""; _doc[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = rptName; let rptTpl = new RptTplModel(_doc); rptTpl.save(function (err, actTplRst) { if (err) { callback(req,res, "报表模板创建错误", "", null); } else { //TreeNodeModel.update(); let filter = {"compilationId": compilationId, "engineerId": engineerId, "userId": userId, "items.ID": subNode.ID, "$or": [{"isDeleted": null}, {"isDeleted": false}]}; let updateStatement = {$set: {"items.$": subNode}}; rttFacade.updateTreeInDetail(filter, updateStatement).then(function (rst) { if (rst) { //success callback(req,res, false, "", actTplRst); } else { //failed callback(req,res, true, "更新失败!", null); } }); } }); } else { callback(req, res, 'Create report template failed!', null); } }) }, getRefRptTpl: function (req, res) { let params = JSON.parse(req.body.params), rptTplId = params.rptTplId; let filter = {"ID": rptTplId}; RptTplModel.findOne(filter, '-_id').exec().then(function(rstTpl) { if (rstTpl) { callback(req,res, false, "", rstTpl); } else { callback(req, res, 'The report template was not found!', null); } }) }, updateRptTpl: function (req, res) { let params = JSON.parse(req.body.params), rptTpl = JSON.parse(params.rptTpl); let filter = {"ID": parseInt(rptTpl[JV.PROP_ID])}; RptTplModel.update(filter, rptTpl, function (err, rst) { if (err) { callback(req, res, true, 'The report template was updated failed!', false); } else { callback(req, res, false, 'The report template was updated successfully!', true); } }); } }; export default mExport;