Browse Source

报表获取汇总费用接口。

chenshilong 7 years ago
parent
commit
f9d496bfa7
1 changed files with 33 additions and 8 deletions
  1. 33 8
      modules/pm/models/project_model.js

+ 33 - 8
modules/pm/models/project_model.js

@@ -662,18 +662,43 @@ ProjectsDAO.prototype.updateProjectProperty = async function(projectId, property
 };
 
 // CSL, 2018-01-11 获取指定ID节点(如单项工程、建设项目)下所有单位工程的各项汇总金额,用于报表计算汇总。
-ProjectsDAO.prototype.getSummaryFees = function (projectID, callback) {
-    Projects.find({'ParentID': projectID}, ['-_id','-property'], function (err, datas) {
-        if (err) {
-            callback(1, '查找单位工程失败');
-        } else {
+ProjectsDAO.prototype.getSummaryFees = async function (ID) {
+    async function getProject(ID){
+        return await Projects.findOne({'ID': ID, deleteInfo: null}, need);
+    };
+    async function getChildrenDocs(IDs){
+        return await Projects.find({'ParentID': {"$in":IDs}, deleteInfo: null}, need);
+    };
+    async function getEgrIDs(ID){
+        let _docs = await Projects.find({'ParentID': ID, deleteInfo: null}, ['ID', '-_id']);
+        let arr = [];
+        for (let doc of _docs){
+            arr.push(doc.ID);
+        };
+        return arr;
+    };
 
-            callback(0, datas);
-        }
-    });
+    let need = ['ID', 'ParentID', 'NextSiblingID', 'name', 'projType',
+        'fullFolder', 'summaryFees', '-_id'];
+    let _doc = await getProject(ID);
+    if (!_doc) return _doc;
+
+    if (_doc.projType.sameText('Engineering')){
+        return await getChildrenDocs([ID]);
+    }
+    else if (_doc.projType.sameText('Project')){
+        let eIDs = await getEgrIDs(ID);
+        return await getChildrenDocs(eIDs);
+    }
+    else{
+        return _doc;
+    };
 };
 
 
+
+
+
 module.exports ={    project: new ProjectsDAO(),
     projType: projectType,
     fileType: fileType