12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * 计价规则标准库业务逻辑
- *
- * @author CaiAoLin
- * @date 2017/8/31
- * @version
- */
- import BaseModel from "../../common/base/base_model";
- import EngineeringLibSchema from "./schema/engineering_lib";
- class EngineeringLibModel extends BaseModel {
- /**
- * 构造函数
- *
- * @return {void}
- */
- constructor() {
- let parent = super();
- parent.model = EngineeringLibSchema;
- parent.init();
- }
- /**
- * 获取标准库数据
- *
- * @param {Object} data
- * @return {Promise}
- */
- async getLib(data) {
- if (data.length <= 0) {
- return data;
- }
- let engineeringTemp = {};
- let engineeringLibIdList = [];
- // 整理出数据库需要查找的id,一次查找
- for(let valuation of data) {
- if (valuation === null) {
- continue;
- }
- for(let engineering of valuation.engineering_list) {
- if (engineeringTemp[valuation._id] === undefined) {
- engineeringTemp[valuation._id] = [engineering.engineering_id];
- }else {
- engineeringTemp[valuation._id].push(engineering.engineering_id);
- }
- engineeringLibIdList.push(engineering.engineering_id);
- }
- }
- // console.log(data);
- // console.log(engineeringTemp);
- // 查找对应的id数据
- let condition = {_id: {"$in": engineeringLibIdList}};
- let engineeringLibList = await this.findDataByCondition(condition, null, false, '_id');
- // 组合计价规则id对应专业工程标准库数据
- let engineeringLib = {};
- for(let index in engineeringTemp) {
- if (engineeringTemp[index].length <= 0) {
- continue;
- }
- for(let libId of engineeringTemp[index]) {
- if (engineeringLibList[libId] === undefined) {
- continue;
- }
- if (engineeringLib[index] === undefined) {
- engineeringLib[index] = [engineeringLibList[libId] ];
- }else {
- engineeringLib[index].push(engineeringLibList[libId] );
- }
- }
- }
- // 替换计价规则数据
- let valuationData = JSON.parse(JSON.stringify(data));
- for(let valuation of valuationData) {
- if (valuation === null) {
- continue;
- }
- for(let engineering of valuation.engineering_list) {
- if (engineering === null || engineeringLib[valuation._id] === undefined) {
- continue;
- }
- for (let tmp of engineeringLib[valuation._id]) {
- if (tmp._id.toString() === engineering.engineering_id.toString()) {
- engineering.lib = tmp;
- }
- }
- }
- }
- return valuationData;
- }
- }
- module.exports = EngineeringLibModel;
|