| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | /** * Created by Zhong on 2017/8/22. */const BaseController = require("../../common/base/base_controller");const stdgljutil = require("../../../public/cache/std_glj_type_util");const GljDao = require("../models/gljModel");const EngineeringLibModel = require("../../users/models/engineering_lib_model");let config = require("../../../config/config.js");const pmFacade = require('../../pm/facade/pm_facade');const { ShareLibType } = require('../../../public/common_constants');let gljDao = new GljDao();let callback = function(req, res, err, message, data){    res.json({error: err, message: message, data: data});};async function getGljLibId(sessionCompilation) {    let gljLibId = null,        rationValuation = sessionCompilation.ration_valuation,        billValuation = sessionCompilation.bill_valuation,        engineeringLibModel = new EngineeringLibModel(),        valuationIDs = [] ;    for(let r of rationValuation){//{ "glj_lib.0": {$exists:1} }        if(r.id){            valuationIDs.push(r.id);        }    }    for(let b of billValuation){        if(b.id){            valuationIDs.push(b.id);        }    }    if(valuationIDs.length > 0){        let engineeringInfo = await engineeringLibModel.findDataByCondition({'valuationID': {"$in": valuationIDs},"glj_lib.0": {$exists:1}});//数组大于0        gljLibId = engineeringInfo.glj_lib.length > 0 && typeof engineeringInfo.glj_lib !== 'undefined' ? engineeringInfo.glj_lib[0].id : null;    }    return gljLibId;}class GljController extends BaseController{    async redirectGlj(req, res){        const { userID } = req.params;        const sessionUserID = req.session.sessionUser.id;        const compilationID = req.session.sessionCompilation._id;        if (userID !== sessionUserID) {            const receiveList = await pmFacade.getReceiveLibList(sessionUserID, compilationID, ShareLibType.GLJ_LIB);            const isValid = !!receiveList.find(user => String(user._id) === userID);            if (!isValid) {                return res.redirect(`/complementaryGlj/${sessionUserID}`);            }        }        const sessionCompilation = req.session.sessionCompilation;        const gljLibId = await getGljLibId(sessionCompilation);        let overWriteUrl = sessionCompilation && req.session.sessionCompilation.overWriteUrl &&            compilationID !== '5b4d581023a924000b760f2d' ? req.session.sessionCompilation.overWriteUrl : null;        const priceProperties = sessionCompilation.priceProperties || [];        const consumeAmtProperties = sessionCompilation.consumeAmtProperties || [];        const isReadOnly = userID !== sessionUserID;        res.render('building_saas/complementary_glj_lib/html/tools-gongliaoji.html',{            isReadOnly,            userID: sessionUserID,            gljLibId: gljLibId,            compilationId: sessionCompilation._id,            compilationName: sessionCompilation.name,            priceProperties: JSON.stringify(priceProperties),            consumeAmtProperties: JSON.stringify(consumeAmtProperties),            versionName: req.session.compilationVersion,            LicenseKey:config.getLicenseKey(process.env.NODE_ENV),            overWriteUrl: overWriteUrl,        });    }    async prepareInitData(req, res) {        try {            const { userID, projection } = JSON.parse(req.body.data);            const sessionUserID = req.session.sessionUser.id;            const gljLibID = await getGljLibId(req.session.sessionCompilation);            const compilationID = req.session.sessionCompilation._id;            const initData = await gljDao.prepareInitData(gljLibID, userID, sessionUserID, compilationID, projection);            res.json({error: 0, message: 'success', data: initData});        } catch (err) {            console.log(err);            res.json({error: 1, message: 'fail', data: null});        }    }    getGljDistType (req, res) {        let gljDistTypeCache = stdgljutil.getStdGljTypeCacheObj().toArray();        if(gljDistTypeCache.length >0 ){            callback(req, res, 0, '', gljDistTypeCache);        }        else {            callback(req, res, 1, 'Error', null);        }    }    getGljTree(req,res){        let data = JSON.parse(req.body.data);        let gljLibId = data.gljLibId;        gljDao.getGljTypes(gljLibId,function(err,data){            callback(req,res,err, 'Get Tree', data)        });    }    //获取标准分类树和补充分类树    async getMixedTree(req, res){        try {            let data = JSON.parse(req.body.data);            let treeData = await gljDao.getMixedTree(data.gljLibId, req.session.sessionUser.id, req.session.sessionCompilation._id);            callback(req, res, 0, 'success', treeData);        } catch (err) {            console.log(err);            callback(req, res, 1, err, null);        }    }    createNewGljTypeNode(req, res) {        let repId = req.body.repositoryId;        let lastNodeId = req.body.lastNodeId;        let lastOpr = req.body.lastOpr;        let nodeData = JSON.parse(req.body.rawNodeData);        gljDao.createNewNode(repId, lastOpr, lastNodeId, nodeData, function(err, msg, data){            callback(req,res,err,msg, data)        });    }    updateGljNodes(req, res) {        let nodes = JSON.parse(req.body.nodes);        let repId = req.body.repId,            lastOpr = req.body.lastOpr;        gljDao.updateNodes(repId, lastOpr, nodes, function(err,results){            callback(req,res, err, results)        });    }    deleteGljNodes(req, res) {        let nodes = JSON.parse(req.body.nodes);        let preNodeId = req.body.preNodeId;        let preNodeNextId = req.body.preNodeNextId;        let repId = req.body.repId, lastOpr = req.body.lastOpr;        gljDao.removeNodes(repId, lastOpr, nodes, preNodeId, preNodeNextId, function(err,results){            callback(req,res, err, results)        });    }    getGljItems(req, res) {        let data = JSON.parse(req.body.data);        let stdGljLibId = data.stdGljLibId;        let projection = data.projection;        gljDao.getGljItems(stdGljLibId, req.session.sessionUser.id, req.session.sessionCompilation._id, projection, function(err, data){            callback(req,res,err,'Get Items',data)        });    }    getStdItems(req, res) {        let data = JSON.parse(req.body.data),            stdGljLibId = data.stdGljLibId,            projection = data.projection;        gljDao.getStdItems(stdGljLibId, projection, function (err, data) {            callback(req, res, err, '获取人材机数据失败', data);        });    }    updateComponent(req, res){        let userId = req.body.userId;        let updateArr = JSON.parse(req.body.updateArr);        gljDao.updateComponent(userId, updateArr, function (err, message, rst) {            callback(req, res, err, message, rst);        })    }    mixUpdateGljItems(req, res){        let user_id = req.session.sessionUser.id,            compilation_id = req.session.sessionCompilation._id;        let data = JSON.parse(req.body.data);        let updateItems = data.updateItems,            addItems = data.addItems,            removeIds = data.removeIds;        gljDao.mixUpdateGljItems(user_id, compilation_id, updateItems, addItems, removeIds, function(err, message, rst){            if (err) {                callback(req, res, err, message, null);            } else {                callback(req, res, 0, message, rst);            }        });    }}module.exports = GljController;
 |