Forráskód Böngészése

Merge branch 'budget' of http://192.168.1.41:3000/SmartCost/ConstructionCost into budget

zhangweicheng 4 éve
szülő
commit
ceb1393b89

+ 7 - 1
modules/equipment_purchase/facade/equipment_purchase_facade.js

@@ -14,6 +14,7 @@ let consts = require('../../main/models/project_consts');
 let decimal_facade = require('../../main/facade/decimal_facade');
 const scMathUtil = require('../../../public/scMathUtil').getUtil();
 let _ = require('lodash')
+let prjMdl = require('../../../modules/pm/models/project_model');
 
 //返回 ID - total 映射如: {2566:60}
 async function getEquipmentTotalCost(projectIDs) {
@@ -57,7 +58,7 @@ function sortEquipments(equipments) {
 }
 
 
-async function getEquipmentSummary(projectIDs) {
+async function getEquipmentSummary(user_id, projectIDs) {
      let data = [];
      if (projectIDs.length > 0) {
          let map = {};
@@ -71,12 +72,17 @@ async function getEquipmentSummary(projectIDs) {
             if(map[projectID]) data.push(map[projectID]);
             /*/
             // 以下是根据实际来调整
+            let prj = await prjMdl.project.getUserProjectAsync(user_id, projectID); //实在没办法,需要项目信息,不想大改结构,只好在这处理了
             if(map[projectID]) {
                 for (let item of map[projectID].equipments) {
                     let dtlData = {projectID: -1, total: 0, equipSummaryType: 'budget_equipment'};
                     // 属性summaryType是作为一个判断依据给后来代码用
                     dtlData.projectID = projectID;
+                    dtlData.projectName = prj.name;
                     dtlData.total = item.total;
+                    // dtlData.parentID = prj.ParentID;
+                    dtlData.parentName = (prj.fullFolder.length > 0) ? prj.fullFolder[1] : '';
+                    // dtlData.fullFolder = prj.fullFolder;
                     for (let key in item) {
                         dtlData[key] = item[key];
                     }

+ 2 - 0
modules/main/models/ration.js

@@ -20,8 +20,10 @@ class rationModel extends baseModel {
         return {'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}
     }
     getData (projectID, callback, isReport = false) {
+        // console.log('ration projectID: ' + projectID);
         ration.find(this.getQuery(projectID), '-_id', function(err, datas){
             if (!err) {
+                // console.log('result datas.length: ' + datas.length);
                 if (isReport){  // 调价中间件机制
                     for (let i = 0; i < datas.length; i++) {
                         let coe = datas[i]._doc.rationQuantityCoe;

+ 6 - 7
modules/main/templates/constructionBillsTemplate.js

@@ -14,7 +14,7 @@ const buildingTemplate = [
   { ID: 22, ParentID: 2, NextSiblingID: 23, code: '2.2', name: '与项目建设有关的其他费用', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 221, ParentID: 22, NextSiblingID: 222, code: '2.2.1', name: '项目建设管理费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 222, ParentID: 22, NextSiblingID: 223, code: '2.2.2', name: '建设管理代建费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 223, ParentID: 22, NextSiblingID: 224, code: '2.2.3', name: '工程建设监理费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 223, ParentID: 22, NextSiblingID: 224, code: '2.2.3', name: '建设工程监理费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 224, ParentID: 22, NextSiblingID: 225, code: '2.2.4', name: '招标代理服务费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 225, ParentID: 22, NextSiblingID: 226, code: '2.2.5', name: '招标交易服务费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 226, ParentID: 22, NextSiblingID: 227, code: '2.2.6', name: '前期工作费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
@@ -36,8 +36,8 @@ const buildingTemplate = [
   { ID: 2211, ParentID: 22, NextSiblingID: 2212, code: '2.2.11', name: '全过程工程咨询服务费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2212, ParentID: 22, NextSiblingID: 2213, code: '2.2.12', name: '引进技术和设备其他费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2213, ParentID: 22, NextSiblingID: 2214, code: '2.2.13', name: '专利及专有技术使用费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 2214, ParentID: 22, NextSiblingID: 2215, code: '2.2.14', name: '工程保险费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 2215, ParentID: 22, NextSiblingID: 2216, code: '2.2.15', name: '特殊设备安全监督检验费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 2214, ParentID: 22, NextSiblingID: 2215, code: '2.2.14', name: '特殊设备安全监督检验费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 2215, ParentID: 22, NextSiblingID: 2216, code: '2.2.15', name: '工程保险费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2216, ParentID: 22, NextSiblingID: 2217, code: '2.2.16', name: '安全生产保障费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2217, ParentID: 22, NextSiblingID: 2218, code: '2.2.17', name: '水土保持补偿费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2218, ParentID: 22, NextSiblingID: 2219, code: '2.2.18', name: '城市建设配套费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
@@ -92,16 +92,15 @@ const railTemplate = [
   { ID: 229, ParentID: 22, NextSiblingID: 2210, code: '2.2.9', name: '工程设计费', unit: '', calcBase: '', quantity: '',  flags: [{ fieldName: 'fixed', flag: fixedFlag.DESIGN_FEE }], type: billType.BILL },
   { ID: 2210, ParentID: 22, NextSiblingID: 2211, code: '2.2.10', name: '咨询费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 22101, ParentID: 2210, NextSiblingID: 22102, code: '2.2.10.1', name: '设计咨询费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: fixedFlag.DESIGN_COUNSEL_FEE }], type: billType.BILL },
-  { ID: 22102, ParentID: 2210, NextSiblingID: 22103, code: '2.2.10.2', name: '工程造价咨询费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 22103, ParentID: 2210, NextSiblingID: -1, code: '2.2.10.3', name: '施工图审查费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 22102, ParentID: 2210, NextSiblingID: -1, code: '2.2.10.2', name: '工程造价咨询费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2211, ParentID: 22, NextSiblingID: 2212, code: '2.2.11', name: '全过程工程咨询服务费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2212, ParentID: 22, NextSiblingID: 2213, code: '2.2.12', name: '引进技术和设备其他费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2213, ParentID: 22, NextSiblingID: 2214, code: '2.2.13', name: '专利及专有技术使用费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2214, ParentID: 22, NextSiblingID: 2215, code: '2.2.14', name: '特殊设备安全监督检验费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2215, ParentID: 22, NextSiblingID: 2216, code: '2.2.15', name: '工程保险费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2216, ParentID: 22, NextSiblingID: 2217, code: '2.2.16', name: '安全生产保障费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 2217, ParentID: 22, NextSiblingID: 2219, code: '2.2.17', name: '配合辅助工程费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
-  { ID: 2219, ParentID: 22, NextSiblingID: -1, code: '2.2.19', name: '其他费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 2217, ParentID: 22, NextSiblingID: 2218, code: '2.2.17', name: '配合辅助工程费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
+  { ID: 2218, ParentID: 22, NextSiblingID: -1, code: '2.2.18', name: '其他费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 23, ParentID: 2, NextSiblingID: -1, code: '2.3', chapterCode: '', sectionCode: '37', name: '与试运行有关的其他费用', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 231, ParentID: 23, NextSiblingID: 232, code: '2.3.1', name: '综合联调及试运行费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: null }], type: billType.BILL },
   { ID: 2311, ParentID: 231, NextSiblingID: 2312, code: '2.3.1.1', name: '综合联调费', unit: '', calcBase: '', quantity: '', flags: [{ fieldName: 'fixed', flag: fixedFlag.JOINT_DEBUGGING_FEE }], type: billType.BILL },

+ 1 - 1
modules/pm/models/project_model.js

@@ -137,7 +137,7 @@ ProjectsDAO.prototype.getUserProjects = async function (userId, compilation, cal
 };
 
 ProjectsDAO.prototype.getUserProjectAsync = async function (userId, ProjId) {
-    return await Projects.findOne({userID: userId, ID: ProjId}, '-_id -property');
+    return await Projects.findOne({userID: userId, ID: ProjId}, '-_id -property').lean();
 };
 
 ProjectsDAO.prototype.getUserProject = function (userId, ProjId, callback) {

+ 8 - 1
modules/reports/controllers/rpt_controller.js

@@ -225,7 +225,7 @@ async function getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id,
                     promiseArr[0] = pm_facade.getSummaryInfoByTender(prj_id, pm_facade.projectType.project);
                 }
                 if (summaryRst.indexOf(`BudgetEquipmentDetail`) >= 0) {
-                    promiseArr[0] = equipment_facade.getEquipmentSummary(prj_ids);
+                    promiseArr[0] = equipment_facade.getEquipmentSummary(user_id, prj_ids);
                 }
                 if (summaryRst.indexOf(`BudgetCalcType`) >= 0 || summaryRst.indexOf(`BudgetCalcTypeDetail`) >= 0) {
                     promiseArr[1] = calcProgramFacade.getGatherFees(prj_ids); //与其他汇总类的请求互斥,不能同时出现!
@@ -318,17 +318,24 @@ async function getAllPagesCommon(construct_id, user_id, prj_id, prj_ids, rpt_id,
                     //     cb('Have errors while on going...', null);
                     // }
 
+                    // console.log('prj_ids');
+                    // console.log(prj_ids);
                     rptTplDataFacade.prepareMultiProjectData(user_id, prj_ids, filter).then(function(multiRawData) {
                         //终于出来结果了 !_! (multiRawData是多个单位工程的原始数据!)
+                        // fsUtil.writeObjToFile(multiRawData, "D:/GitHome/ConstructionCost/tmp/multiRawData.jsp");
                         if (multiRawData.length > 0) {
                             //要排排序,与prj_ids的原始次序一致
                             multiRawData.sort(function(d1, d2){
                                 return (prj_ids.indexOf(d1.prj.ID) - prj_ids.indexOf(d2.prj.ID));
                             });
                             //考虑到工料机的数据还需要再计算,所以还不能直接用,需要每个工程都处理一遍后,再合并
+                            // console.log('multiRawData[0].prjData[0].data.length: ' + multiRawData[0].prjData[0].data.length);
+                            // console.log('multiRawData[1].prjData[0].data.length: ' + multiRawData[1].prjData[0].data.length);
                             let tplData = rptDataUtil.assembleData(multiRawData[0]);
+                            // console.log('tplData.detail_data[0].length: ' + tplData.detail_data[0].length);
                             for (let idx = 1; idx < multiRawData.length; idx++) {
                                 let tmpData = rptDataUtil.assembleData(multiRawData[idx]);
+                                // console.log('tmpData.detail_data[0].length: ' + tmpData.detail_data[0].length);
                                 _combineData(tplData, tmpData);
                             }
                             _createPntPageData(tplData, rptTpl);

+ 11 - 4
modules/reports/facade/rpt_tpl_data_facade.js

@@ -41,16 +41,18 @@ function prepareProjectData(userId, prjId, filter, callback) {
 }
 
 async function prepareMultiProjectData(userId, prjIds, filter) {
-    function getProjectPageData(prjId) {
+    function getProjectPageData(prjId, basicRst) {
         return new Promise(function(resolve, reject) {
+            // console.log('promise prjId: ' + prjId);
             prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
                 if (!err) {
                     projectDataMdl.getFilterData(prjId, filter, function (results) {
                         if (results) {
                             rawDataObj = {};
                             rawDataObj.prj = rst;
+                            // console.log(results);
                             rawDataObj.prjData = results;
-                            //*
+                            /*
                             prjMdl.project.getBasicInfo(prjId).then(function(basicRst) {
                                 if (basicRst !== null && basicRst !== undefined) {
                                     let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
@@ -59,6 +61,10 @@ async function prepareMultiProjectData(userId, prjIds, filter) {
                                 resolve(rawDataObj);
                             });
                             /*/
+                            if (basicRst !== null && basicRst !== undefined) {
+                                let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
+                                doc.property.basicInformation = basicRst;
+                            }
                             resolve(rawDataObj);
                             //*/
                         } else {
@@ -89,8 +95,9 @@ async function prepareMultiProjectData(userId, prjIds, filter) {
         });
     }
     let parallelFunctions = [];
-    for (let prjId of prjIds) {
-        parallelFunctions.push(getProjectPageData(prjId));
+    for (let pId of prjIds) {
+        let basicRst = await prjMdl.project.getBasicInfo(pId); // 备注:项目basic info不能用.then的方式处理,否则会出现多个prjId返回相同数据的情况,只能先处理好,作为参数传递进去
+        parallelFunctions.push(getProjectPageData(pId, basicRst));
     }
     let rst = await Promise.all(parallelFunctions);
     return rst;