소스 검색

refactor:抽离导致循环依赖的方法

vian 4 년 전
부모
커밋
4fb5f5d89b

+ 5 - 5
modules/glj/controllers/glj_controller.js

@@ -20,7 +20,7 @@ let ration = mongoose.model('ration');
 let projectModel = mongoose.model('projects');
 let _ = require('lodash');
 let glj_facade = require('../facade/glj_facade');
-
+const commonFacade = require('../../main/facade/common_facade');
 const ProjectModel = require('../../pm/models/project_model').project;
 class GLJController extends BaseController {
 
@@ -202,7 +202,7 @@ class GLJController extends BaseController {
         };
         try {
             // 获取标段对应的单价文件id
-            let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectId);
+            let unitPriceFileId = await commonFacade.getUnitPriceFileId(projectId);
             if (unitPriceFileId <= 0) {
                 throw '没有对应的单价文件';
             }
@@ -438,7 +438,7 @@ class GLJController extends BaseController {
         let name = request.body.name;
         try {
             // 当前单价文件id
-            let currentUnitPriceId = await ProjectModel.getUnitPriceFileId(projectId);
+            let currentUnitPriceId = await commonFacade.getUnitPriceFileId(projectId);
             // 获取当前项目的rootProjectId
             let projectData = await ProjectModel.getProject(projectId);
             let rootProjectId = projectData.property.rootProjectID !== undefined ? projectData.property.rootProjectID : 0;
@@ -490,7 +490,7 @@ class GLJController extends BaseController {
         };
         try {
             // 当前单价文件id
-            let currentUnitPriceId = await ProjectModel.getUnitPriceFileId(projectId);
+            let currentUnitPriceId = await commonFacade.getUnitPriceFileId(projectId);
             if (currentUnitPriceId <= 0) {
                 throw '没有找到对应的单价文件';
             }
@@ -779,7 +779,7 @@ async function getGLJListByProjectID(projectId){
             throw '标段id有误';
         }
         // 获取标段对应的单价文件id
-        let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectId);
+        let unitPriceFileId = await commonFacade.getUnitPriceFileId(projectId);
         if (unitPriceFileId <= 0) {
             throw '没有对应的单价文件';
         }

+ 2 - 1
modules/glj/facade/glj_facade.js

@@ -8,6 +8,7 @@ module.exports={ //先导出后require可以解决循环引用问题
 
 const mongoose = require('mongoose');
 const ProjectModel = require('../../pm/models/project_model').project;
+const commonFacade = require('../../main/facade/common_facade');
 const UnitPriceFileModel = require("../models/unit_price_file_model");
 const UnitPriceModel = require("../models/unit_price_model");
 const MixRatioModel = require("../models/mix_ratio_model");
@@ -23,7 +24,7 @@ async function changeUnitFile(projectData,unitFile,type,userID) {
     let newName = unitFile.name;
     type = parseInt(type);
 
-        let currentUnitPriceId = await ProjectModel.getUnitPriceFileId(projectId);
+        let currentUnitPriceId = await commonFacade.getUnitPriceFileId(projectId);
         let unitPriceFileModel = new UnitPriceFileModel();
 
         let insertData = null;

+ 3 - 3
modules/glj/models/glj_list_model.js

@@ -14,7 +14,7 @@ const GLJTypeConst = require("../../common/const/glj_type_const");
 const STDGLJLibGLJListModel = require("../../common/std/std_glj_lib_glj_list_model");
 const MixRatioModel = require("./mix_ratio_model");
 const GljModel = require("../../complementary_glj_lib/models/gljModel");
-const ProjectModel = require('../../pm/models/project_model').project;
+const commonFacade = require('../../main/facade/common_facade');
 const scMathUtil = require('../../../public/scMathUtil').getUtil();
 const unitPriceFacade = require("../../unit_price_file/facade/unit_price_facade");
 let gljCollectionName = 'glj_list';
@@ -84,7 +84,7 @@ class GLJListModel extends BaseModel {
         let mixRationMap={};
         let keyMap={};
         let unitPriceList={};
-        unitPriceFileId = unitPriceFileId?unitPriceFileId:await ProjectModel.getUnitPriceFileId(projectId);
+        unitPriceFileId = unitPriceFileId?unitPriceFileId:await commonFacade.getUnitPriceFileId(projectId);
         try {
             // 首先获取对应标段下所有的项目工料机数据
             let condition = {project_id: projectId};
@@ -250,7 +250,7 @@ class GLJListModel extends BaseModel {
             let isAddProjectGLJ = false;
 
             // 获取标段对应的单价文件id
-            let unitPriceFileId = unitFileId?unitFileId:await ProjectModel.getUnitPriceFileId(data.project_id);
+            let unitPriceFileId = unitFileId?unitFileId:await commonFacade.getUnitPriceFileId(data.project_id);
             if (unitPriceFileId <= 0) {
                 throw '没有对应的单价文件';
             }

+ 27 - 0
modules/main/facade/common_facade.js

@@ -0,0 +1,27 @@
+// 开这个模块的最初原因:重构ESModule为CommonJS以升级node版本后,遇到module循环引用问题,将造成循环引用的方法抽离放到这个模块
+module.exports = {
+    getUnitPriceFileId,
+};
+
+const mongoose = require('mongoose');
+const projectsModel = mongoose.model('projects');
+
+/**
+ * 根据项目id获取单价文件列表id
+ *
+ * @param {Number} projectId
+ * @return {Promise}
+ */
+async function getUnitPriceFileId(projectId) {
+    let result = 0;
+    let startTime = +new Date();
+    let projectData = await projectsModel.find({ ID: projectId }, ['property.unitPriceFile']);
+    if (projectData === null) {
+        return result;
+    }
+    let endTime = +new Date();
+    console.log("取单价文件列表id时间-----" + (endTime - startTime));
+    projectData = projectData[0];
+    result = projectData.property.unitPriceFile !== undefined ? projectData.property.unitPriceFile.id : 0;
+    return result;
+};

+ 2 - 2
modules/main/models/project.js

@@ -23,7 +23,7 @@ let contractor_facade = require('../facade/contractor_facade');
 let pmController = require('../../pm/controllers/pm_controller');
 
 
-const ProjectModel = require('../../pm/models/project_model').project;
+const commonFacade = require('../../main/facade/common_facade');
 const GLJListModel = require("../../glj/models/glj_list_model");
 
 var consts = require('./project_consts');
@@ -175,7 +175,7 @@ Project.prototype.getFilterData = function (projectID, filter, callback) {
                         throw '标段id有误';
                     }
                     // 获取标段对应的单价文件id
-                    let unitPriceFileId = await ProjectModel.getUnitPriceFileId(projectID);
+                    let unitPriceFileId = await commonFacade.getUnitPriceFileId(projectID);
                     if (unitPriceFileId <= 0) {
                         throw '没有对应的单价文件';
                     }

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

@@ -680,26 +680,6 @@ ProjectsDAO.prototype.getTenderByUnitPriceFileId = async function (unitPriceFile
 };
 
 /**
- * 根据项目id获取单价文件列表id
- *
- * @param {Number} projectId
- * @return {Promise}
- */
-ProjectsDAO.prototype.getUnitPriceFileId = async function (projectId) {
-    let result = 0;
-    let startTime = +new Date();
-    let projectData = await Projects.find({ID: projectId},['property.unitPriceFile']);
-    if (projectData === null) {
-        return result;
-    }
-    let endTime = +new Date();
-    console.log("取单价文件列表id时间-----"+(endTime - startTime));
-    projectData = projectData[0];
-    result = projectData.property.unitPriceFile !== undefined ? projectData.property.unitPriceFile.id : 0;
-    return result;
-};
-
-/**
  * 根据项目id获取项目property信息
  *
  * @param {Number} projectId