Browse Source

拼接获取回收站数据

zhongzewei 7 years ago
parent
commit
9cd2655e3b

+ 6 - 1
modules/fee_rates/facade/fee_rates_facade.js

@@ -27,7 +27,8 @@ module.exports={
     changeFeeRateFileFromOthers:changeFeeRateFileFromOthers,
     newFeeRateFile:newFeeRateFile,
     getFeeRatesByProject:getFeeRatesByProject,
-    setFeeRateToBill:setFeeRateToBill
+    setFeeRateToBill:setFeeRateToBill,
+    getGCFeeRateFiles: getGCFeeRateFiles
 };
 let operationMap={
     'ut_create':create_fee_rate,
@@ -392,4 +393,8 @@ async function changeFeeRateFileFromOthers(jdata) {
     newFeeRateFile.rates=newFeeRate.rates;
     newFeeRateFile.usageProjects=await getUsageProjects(newFeeRateFile.ID);
     return newFeeRateFile;
+}
+
+async function getGCFeeRateFiles(userID){
+    return await feeRateFileModel.find({userID: userID, 'deleteInfo.deleted': true});
 }

+ 12 - 0
modules/glj/models/unit_price_file_model.js

@@ -125,6 +125,18 @@ class UnitPriceFileModel extends BaseModel {
 
         return result;
     }
+
+    /**
+     * 根据用户获取对应被删除的单价文件
+     *
+     * @param {String} userID
+     * @return {Promise}
+     */
+    async getGCUnitPriceFiles(userID){
+        let condition = {userID: userID, 'deleteInfo.deleted': true};
+        let result = await this.findDataByCondition(condition, null, false);
+        return result;
+    }
 }
 
 export default UnitPriceFileModel;

+ 57 - 0
modules/pm/controllers/pm_controller.js

@@ -190,5 +190,62 @@ module.exports = {
             let responseData = error.err === 1 ? null : [];
             callback(request, response, error.err, error.msg, responseData);
         }
+    },
+    //拼接获取回收站数据
+    getGCDatas: async function(request, response) {
+        let userID = req.session.sessionUser.ssoId;
+        let engIdsSet = new Set(), rootIdsSet = new Set(), rst = [];
+        try{
+            let gc_unitPriceFiles = await ProjectsData.getGCFiles('UnitPriceFile', userID);
+            let gc_feeRateFiles = await ProjectsData.getGCFiles('FeeRateFile', userID);
+            let gc_tenderFiles = await ProjectsData.getGCFiles(projType.tender, userID);
+            if(gc_unitPriceFiles.length > 0){
+                gc_unitPriceFiles.forEach(function (obj) {
+                    rootIdsSet.add(obj.rootProjectID);
+                });
+            }
+            if(gc_feeRateFiles.length > 0){
+                gc_feeRateFiles.forEach(function (obj) {
+                    rootIdsSet.add(obj.rootProjectID);
+                });
+            }
+            if(gc_tenderFiles.length > 0){
+                rst = rst.concat(gc_tenderFiles);
+                gc_tenderFiles.forEach(function (obj) {
+                    engIdsSet.add(obj.ParentID);
+                });
+            }
+            if(engIdsSet.size > 0){
+                let engineerings = await ProjectsData.getProjectsByIds(Array.from(engIdsSet));
+                engineerings.forEach(function (obj) {
+                    rst.push(obj);
+                    rootIdsSet.add(obj.ParentID);
+                });
+            }
+            if(rootIdsSet.size > 0){
+                let projects = await ProjectsData.getProjectsByIds(Array.from(rootIdsSet));
+                for(let i = 0, len = projects.length; i < len; i++){
+                    projects[i].unitPriceFiles = [];
+                    projects[i].feeRateFiles = [];
+                    for(let j = 0, jLen = gc_unitPriceFiles.length; j < jLen; j++){
+                        if(gc_unitPriceFiles[j].rootProjectID === projects[i].ID){
+                            projects[i].unitPriceFiles.push(gc_unitPriceFiles);
+                            break;
+                        }
+                    }
+                    for(let j = 0, jLen = gc_feeRateFiles.length; j < jLen; j++){
+                        if(gc_feeRateFiles[j].rootProjectID === projects[i].ID){
+                            projects[i].feeRateFiles.push(gc_feeRateFiles[j]);
+                            break;
+                        }
+                    }
+                }
+                rst = rst.concat(projects);
+            }
+            callback(request, response, null, 'success', rst);
+        }
+        catch (error){
+            callback(request, response, true, 'fail', null);
+        }
     }
 };

+ 20 - 0
modules/pm/models/project_model.js

@@ -224,6 +224,25 @@ ProjectsDAO.prototype.getProject = function (key, callback) {
     }
 };
 
+ProjectsDAO.prototype.getProjectsByIds = async function (ids){
+    return await Projects.find({ID: {$in: ids}});
+};
+
+ProjectsDAO.prototype.getGCFiles = async function (fileType, userID){
+    let rst;
+    if(fileType === 'UnitPriceFile'){
+        let unitPriceFileModel = new UnitPriceFileModel();
+        rst = await unitPriceFileModel.getGCUnitPriceFiles(userID);
+    }
+    else if(fileType === 'FeeRateFile'){
+        rst = await feeRateFacade.getGCFeeRateFiles(userID);
+    }
+    else {
+        rst = await Projects.find({projType: fileType, 'deleteInfo.deleted': true});
+    }
+    return rst;
+};
+
 /**
  * 整理工程专业对应标准库数据
  *
@@ -343,6 +362,7 @@ ProjectsDAO.prototype.changeUnitPriceFileInfo = async function(projectId, change
     return result.ok === 1;
 };
 
+
 module.exports ={
     project: new ProjectsDAO(),
     projType: projectType