| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- /**
 
-  * Created by jimiz on 2017/4/16.
 
-  */
 
- var billsData = require('./bills');
 
- var rationData = require('./ration');
 
- var ration_glj_data = require('../../ration_glj/facade/ration_glj_facade');
 
- var ration_coe_data = require('../../ration_glj/facade/ration_coe_facade');
 
- var ration_ass_data = require('../../ration_glj/facade/ration_ass_facade');
 
- let ration_installation = require('../facade/ration_installation_facade');
 
- var quantity_detail_data = require('../facade/quantity_detail_facade');
 
- var fee_rate_data = require('../../fee_rates/facade/fee_rates_facade');
 
- let projCounter = require('./proj_counter_model');
 
- let projSetting = require('./proj_setting_model');
 
- // let volumePriceData = require('../../volume_price/models/volume_price_model');
 
- var labour_coe_facade = require('../facade/labour_coe_facade');
 
- var calc_program_facade = require('../facade/calc_program_facade');
 
- import GLJController from "../../glj/controllers/glj_controller";
 
- let installation_facade = require('../facade/installation_facade');
 
- const ProjectModel = require('../../pm/models/project_model').project;
 
- import GLJListModel from "../../glj/models/glj_list_model";
 
- var consts = require('./project_consts');
 
- var projectConsts = consts.projectConst;
 
- var asyncTool = require("async");
 
- var moduleMap = {};
 
- moduleMap[projectConsts.BILLS] = billsData;
 
- moduleMap[projectConsts.RATION] = rationData;
 
- //moduleMap[projectConsts.GLJ] = GLJData;
 
- moduleMap[projectConsts.RATION_GLJ] = ration_glj_data;
 
- moduleMap[projectConsts.RATION_COE] = ration_coe_data;
 
- moduleMap[projectConsts.RATION_ASS] = ration_ass_data;
 
- moduleMap[projectConsts.RATION_INSTALLATION] = ration_installation;
 
- moduleMap[projectConsts.QUANTITY_DETAIL] = quantity_detail_data;
 
- moduleMap[projCounter.collectionName] = projCounter;
 
- moduleMap[projSetting.collectionName] = projSetting;
 
- // moduleMap[volumePriceData.collectionName] = volumePriceData;
 
- moduleMap[projectConsts.FEERATE] = fee_rate_data;
 
- moduleMap[projectConsts.LABOUR_COE] = labour_coe_facade;
 
- moduleMap[projectConsts.CALC_PROGRAM] = calc_program_facade;
 
- moduleMap[projectConsts.PROJECTGLJ] = new GLJController();
 
- moduleMap[projectConsts.INSTALLATION_FEE] = installation_facade;
 
- var Project = function (){};
 
- Project.prototype.datas = [];
 
- Project.prototype.prepare = function(data, callback){
 
-     var me = this;
 
-     data.update_data.forEach(function(item){
 
-         item.user_id = data.user_id;
 
-         me.datas.push(item);
 
-         /*
 
-         to do
 
-         moduleMap[item.moduleName].prepare(item.data, jobCallback);
 
-         */
 
-     });
 
- };
 
- Project.prototype.save = function(datas, callback){
 
-     var job, savePoint;
 
-     var functions = [];
 
-     var item;
 
-     var me = this;
 
-     me.prepare(datas, function(job, savePoint){});
 
-     function saveModule(data) {
 
-         return function (cb) {
 
-             if(data.moduleName!=undefined){
 
-                 moduleMap[data.moduleName].save(data.user_id, data.data, cb);
 
-             }
 
-            // console.log(moduleMap[data.moduleName])
 
-         }
 
-     }
 
-     for (var i = 0; i < me.datas.length; i++){
 
-         item = me.datas[i];
 
-         functions.push(saveModule(item));
 
-     }
 
-     asyncTool.parallel(functions, function(err, results) {
 
-         if (!err){
 
-             callback(null, '', results)
 
-         }
 
-         else{
 
-             callback(1, 'save project failed', null)
 
-         }
 
-     });
 
-     me.datas = [];
 
- };
 
- Project.prototype.getData = function(projectID, callback){
 
-     var functions = [];
 
-     var itemName;
 
-     for (itemName in moduleMap){
 
-         functions.push((function(itemName){
 
-             return function (cb) {
 
-                 moduleMap[itemName].getData(projectID, function(err, moduleName, data){
 
-                     cb(err, {moduleName: moduleName, data: data})
 
-                 })
 
-             }
 
-         })(itemName))
 
-     }
 
-     asyncTool.parallel(functions, function(err, results) {
 
-         if (!err){
 
-             callback(null, '', results)
 
-         }
 
-         else{
 
-             callback(1, 'load project failed', null)
 
-         }
 
-     });
 
- };
 
- Project.prototype.getFilterData = function (projectID, filter, callback) {
 
-     let functions = [];
 
-     let getModuleData = function (moduleName) {
 
-         return async function (cb) {
 
-             if (moduleMap[moduleName]) {
 
-                 moduleMap[moduleName].getData(projectID, function (err, name, data) {
 
-                     cb(err, {'moduleName': name, 'data': data})
 
-                 });
 
-             } else if (moduleName === projectConsts.PROJECTGLJ) {
 
-                 try {
 
-                     if (isNaN(projectID) || projectID <= 0) {
 
-                         throw '标段id有误';
 
-                     }
 
-                     // 获取标段对应的单价文件id
 
-                     let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectID);
 
-                     if (unitPriceFileId <= 0) {
 
-                         throw '没有对应的单价文件';
 
-                     }
 
-                     // 先获取对应标段的项目工料机数据
 
-                     let gljListModel = new GLJListModel();
 
-                     let [gljList, mixRatioConnectData] = await gljListModel.getListByProjectId(projectID, unitPriceFileId);
 
-                     cb(null, {'moduleName': moduleName, 'data': gljList});
 
-                 } catch (error) {
 
-                     cb(error, null);
 
-                 }
 
-             } else {
 
-                 throw '要查询的项目模块不存在';
 
-             }
 
-         }
 
-     };
 
-     for (let itemName of filter) {
 
-         functions.push(getModuleData(itemName));
 
-     }
 
-     asyncTool.parallel(functions, function (err, results) {
 
-         //console.log(results);
 
-         if (err) {
 
-             throw '获取项目数据出错';
 
-         } else {
 
-             callback(results);
 
-         }
 
-     });
 
- };
 
- module.exports = new Project();
 
 
  |