| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | /** * Created by jimiz on 2017/4/9. */let rationData = require('../models/ration');let ration_glj_facade = require('../../ration_glj/facade/ration_glj_facade');let ration_ass_facade = require('../../ration_glj/facade/ration_ass_facade');let ration_facade = require('../facade/ration_facade');let bill_facade = require('../facade/bill_facade');let project_facade = require("../facade/project_facade");let logger = require("../../../logs/log_helper").logger;import GLJController from "../../glj/controllers/glj_controller";let controller = {    insertGLJAsRation:async function (req){        let data = req.body.data;        data = JSON.parse(data);        return await ration_glj_facade.insertGLJAsRation(data,req.session.sessionCompilation);    },    replaceRations:async function (req) {        let data = req.body.data;        data = JSON.parse(data);        let userID = req.session.sessionUser.id;        return await ration_facade.replaceRations(userID,data,req.session.sessionCompilation);    },    addNewRation:async function(req) {        let data = req.body.data;        if(typeof data === 'object'){            data = JSON.stringify(data);        }        data = JSON.parse(data);        let result = await ration_facade.addNewRation(data,req.session.sessionCompilation);        //合并取项目工料机数据的情求,用于刷新项目工料机数据,当有添加、替换项目工料机的情况,才需要刷新       /* if(result.ration_gljs && result.ration_gljs.length > 0 && data.newData){            result.projectGLJDatas =  await getProjectGLJData(data.newData.projectID);        }*/        return result;    },    addMultiRation: async function (req) {        let data = req.body.data;        if(typeof data === 'object'){            data = JSON.stringify(data);        }        data = JSON.parse(data);        return await ration_facade.addMultiRation(data.newDatas,req.session.sessionCompilation);    },    getSameSectionRations:async function(req){//取同个章节相邻的定额        let data = req.body.data;        data = JSON.parse(data);        return await ration_facade.getSameSectionRations(data,req.session.sessionUser.id, req.session.sessionCompilation._id);    },    //取定额默认的取费专业    getDefaultProgramID:async function(req){        let data = req.body.data;        data = JSON.parse(data);        data.userID = req.session.sessionUser.id;        data.compilationId = req.session.sessionCompilation._id;        return await ration_facade.getDefaultProgramID(data);    },    //应用定额关联子目    applyTemplate:async function(req){        let data = req.body.data;        data = JSON.parse(data);        let updateDatas =[];        let applyTasks = [            ration_facade.addMultiRation(data.rations.create,req.session.sessionCompilation),//先生成新定额            bill_facade.createNewBills(data.bills.create),            ration_facade.deleteMultiRation(data.rations.delete)        ];        //整理更新的数据,调用一个方法更新        updateDatas.push(data.ration_template);        if(data.rations.update.length > 0)  prepareUpdateNodes(data.rations.update,updateDatas,"ration");        if(data.bills.update.length > 0)  prepareUpdateNodes(data.bills.update,updateDatas,"bills");        applyTasks.push(project_facade.updateNodes(updateDatas));        let [rationResult,billsResult,deleteResult,updates] = await Promise.all(applyTasks);        return {rationResult:rationResult,billsResult:billsResult,updateDatas:updateDatas};    },    //更新辅助定额    updateRationAss:async function(req){        let data = req.body.data;        data = JSON.parse(data);        return ration_ass_facade.updateRationAss(data);    },    //勾选定额调整系数    updateCoeAdjust:async function(req){        let data = req.body.data;        data = JSON.parse(data);        let result = await ration_facade.updateCoeAdjust(data,req.session.sessionCompilation);        //合并取项目工料机数据的情求,用于刷新项目工料机数据,当有添加、替换项目工料机的情况,才需要刷新     /*   if(result.add.length > 0 || result.replace.length > 0){            result.projectGLJDatas =  await getProjectGLJData(data.projectID);        }*/        return result;    }};async function getProjectGLJData(projectID) {    let gljController = new GLJController();    let responseData = await gljController.getProjectGLJsByProjectID(projectID);    return responseData.data;}function prepareUpdateNodes(datas,nodes,type) {    for(let d of datas){        nodes.push({type:type,data:d});    }}//统一回调函数let callback = function(req, res, err, message, data){    res.json({error: err, message: message, data: data});};module.exports = {    getData: function(req, res){        var data = JSON.parse(req.body.data);        rationData.getData(data.projectId, function(err, message, rationList){            if (err === 0) {                callback(req, res, err, message, rationList);            } else {                callback(req, res, err, message, null);            }        });    },    getItemTemplate: function(req, res){        //var data = JSON.parse(req.body.data);        rationData.getItemTemplate(function(err, message, rationItem){            if (billsItem) {                callback(req, res, err, message, rationItem);            } else {                callback(req, res, err, message, null);            }        });    },    allocIDs: function(req, res){        rationData.allocIDs(function(err, message, data){            if (err) {                callback(req, res, err, message, data);            } else {                callback(req, res, err, message, null);            }        });    },    action:async function(req,res){//自动跳转到URL对应的controller方法        let result={            error:0        }        try {            let functionName = req.url.replace(/\//g,"");            result.data = controller[functionName]?await controller[functionName](req):"";        }catch (err){            logger.err(err);            result.error=1;            result.message = err.message;        }        res.json(result);    }};
 |