Kaynağa Gözat

分享页面,未分类单位工程费用信息

zhongzewei 6 yıl önce
ebeveyn
işleme
8a587deb3e

+ 12 - 5
modules/pm/controllers/pm_controller.js

@@ -566,23 +566,29 @@ module.exports = {
                 }
                 let orgUsersInfo = await userModel.find({_id: {$in : userObjIDs}});
                 //建设项目
-                let consProjIDs = [];
+                let consProjIDs = [],
+                    ungroupedTenders = [];
                 for(let proj of receiveProjects){
+                    if (proj.projType === projType.project) {
+                        consProjIDs.push(proj.ID);
+                    }
                     //获取分享项目子项
                     if (proj.projType !== projType.tender) {
                         proj._doc.children = await pm_facade.getPosterityProjects([proj.ID]);
-                        if (proj.projType === projType.project) {
-                            consProjIDs.push(proj.ID);
-                        }
                         for (let projC of proj._doc.children) {
                             if (projC.projType === projType.project) {
                                 consProjIDs.push(projC.ID);
                             } else if (projC.projType === projType.tender) {
                                 //设置工程专业
                                 projC._doc.feeStandardName = projC.property.feeStandardName || '';
+                                if (proj.projType === projType.engineering) {
+                                    ungroupedTenders.push(projC._doc);
+                                }
                             }
                             delete projC._doc.property;
                         }
+                    } else {//未分类的单位工程不进行汇总,只取价格信息
+                        ungroupedTenders.push(proj._doc);
                     }
                     //设置分组,单位工程及单项工程分到未分组那
                     if (proj.projType === projType.tender || proj.projType === projType.engineering) {
@@ -601,7 +607,8 @@ module.exports = {
                 }
                 consProjIDs = Array.from(new Set(consProjIDs));
                 let summaryInfo = await pm_facade.getSummaryInfo(consProjIDs);
-                rst.summaryInfo = summaryInfo;
+                let tendersFeeInfo = await pm_facade.getTendersFeeInfo(ungroupedTenders);
+                rst.summaryInfo = {grouped: summaryInfo, ungrouped: tendersFeeInfo};
             }
             callback(req, res, 0, 'success', rst);
         }

+ 44 - 1
modules/pm/facade/pm_facade.js

@@ -45,6 +45,7 @@ module.exports={
     copyExample: copyExample,
     getSummaryInfo: getSummaryInfo,
     getSummaryInfoByTender: getSummaryInfoByTender,
+    getTendersFeeInfo: getTendersFeeInfo,
     getConstructionProject: getConstructionProject,
     getFullPath: getFullPath,
     getProjectFeature:getProjectFeature,
@@ -630,7 +631,7 @@ async function getSummaryInfoByTender(tenderID, summaryType) {
             if(summaryInfo[t.ID]){
                 summaryInfo[t.ID]['name'] = t.name ? t.name : '';
                 summaryList.push(summaryInfo[t.ID]);
-            }
+            }k
         }
     }
     else {
@@ -646,6 +647,48 @@ async function getSummaryInfoByTender(tenderID, summaryType) {
     return {parent: {name: parentName}, subList: summaryList};
 }
 
+//获取单位工程的各标段费用信息(不进行汇总)
+async function getTendersFeeInfo(tenders) {
+    let IDMapping = {};
+    //固定清单类别与汇总金额字段映射
+    let flagFieldMapping = {};
+    flagFieldMapping[billsFlags.ENGINEERINGCOST] = 'engineeringCost';
+    flagFieldMapping[billsFlags.SUB_ENGINERRING] = 'subEngineering';
+    flagFieldMapping[billsFlags.MEASURE] = 'measure';
+    flagFieldMapping[billsFlags.SAFETY_CONSTRUCTION] = 'safetyConstruction';
+    flagFieldMapping[billsFlags.OTHER] = 'other';
+    flagFieldMapping[billsFlags.CHARGE] = 'charge';
+    flagFieldMapping[billsFlags.TAX] = 'tax';
+    let tenderIDs = [];
+    if(tenders.length > 0){
+        for(let tender of tenders){
+            tenderIDs.push(tender.ID);
+            IDMapping[tender.ID] = {engineeringCost: 0, subEngineering: 0, measure: 0, safetyConstruction: 0, other: 0, charge: 0, tax: 0, rate: 0, buildingArea: '', perCost: ''};
+            IDMapping[tender.ID]['buildingArea'] = '';
+        }
+        //需要获取的清单固定类别综合合价:工程造价、分部分项、措施项目、安全文明施工专项、规费、其他项目、税金
+        let needFlags = [billsFlags.ENGINEERINGCOST, billsFlags.SUB_ENGINERRING, billsFlags.MEASURE,
+            billsFlags.SAFETY_CONSTRUCTION, billsFlags.CHARGE, billsFlags.OTHER, billsFlags.TAX];
+        //获取单位工程汇总金额需要用到的所有清单
+        let allBills = await billsModel.find({projectID: {$in: tenderIDs}, 'flags.flag': {$in: needFlags}, $or: notDeleted},
+            '-_id projectID fees flags');
+        //进行单位工程级别的汇总
+        for(let bills of allBills){
+            let billsFlag = bills.flags[0]['flag'];
+            let costField = flagFieldMapping[billsFlag];
+            IDMapping[bills.projectID][costField] = getCommonTotalFee(bills);
+        }
+        //占造价比例、单方造价
+        for(let tender of tenders){
+            let tenderInfo = IDMapping[tender.ID];
+            tenderInfo.rate = '';
+            //单方造价
+            tenderInfo.perCost = '';
+        }
+    }
+    return IDMapping;
+}
+
 async function getSummaryInfo(projectIDs){
     //ID与汇总信息映射
     let IDMapping = {};

+ 2 - 3
web/building_saas/pm/js/pm_share.js

@@ -743,11 +743,10 @@ const pmShare = (function () {
             sortByDate(rstData.grouped);
             sortByDate(rstData.ungrouped);
             //设置汇总信息
-            setSummaryInfo(rstData.grouped, rstData.summaryInfo);
+            setSummaryInfo(rstData.grouped, rstData.summaryInfo.grouped);
+            setSummaryInfo(rstData.ungrouped, rstData.summaryInfo.ungrouped);
             let treeDatas = getTreeDatas(rstData.grouped, rstData.ungrouped);
-            console.log(treeDatas);
             tree = pmTree.createNew(treeSetting, treeDatas);
-            console.log(tree);
             tree.selected = tree.items[0];
             showTreeData(tree.items, headers);
             //初始选择