| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | /** * 计价规则标准库业务逻辑 * * @author CaiAoLin * @date 2017/8/31 * @version */const mongoose = require("mongoose");const BaseModel = require("../../common/base/base_model");let _ = require('lodash');class EngineeringLibModel extends BaseModel {    /**     * 构造函数     *     * @return {void}     */    constructor() {        let parent = super();        parent.model = mongoose.model('engineering_lib');        parent.init();    }    /**     * 获取标准库数据     *     * @param {Object} data     * @return {Promise}     */    async getLib(data) {        if (data.length <= 0) {            return data;        }        let valuationIDs = [];        // 整理出数据库需要查找的id,一次查找        for(let valuation of data) {            if (valuation === null) {                continue;            }            if(valuation.id){                valuationIDs.push(valuation.id);            }        }        // 查找对应的id数据        let condition = {visible:true,valuationID: {"$in": valuationIDs}};        let engineeringLibList = await this.findDataByCondition(condition,null,false);        engineeringLibList = _.sortBy(engineeringLibList,'seq');        engineeringLibList = JSON.parse(JSON.stringify(engineeringLibList));        // 组合计价规则id对应专业工程标准库数据        let engineeringLib = {};        for(let engineering of engineeringLibList){            let tem = {//做一下转换,和原来的结构一致                engineering_id:engineering._id.toString(),                engineering:engineering.engineering,                lib:engineering            };            if(engineeringLib[engineering.valuationID] === undefined){                engineeringLib[engineering.valuationID] = [tem];            }else {                engineeringLib[engineering.valuationID].push(tem);            }        }        // 替换计价规则数据        let valuationData = JSON.parse(JSON.stringify(data));        for(let valuation of valuationData) {            if (valuation === null) {                continue;            }            valuation.engineering_list = [];            if(engineeringLib[valuation.id]){                valuation.engineering_list = engineeringLib[valuation.id]            }        }        return valuationData;    };    async getEngineering(engineering_id) {        let condition = {_id: engineering_id};        let engineering = await this.findDataByCondition(condition);        return engineering;    };}module.exports = EngineeringLibModel;
 |