zhangweicheng 6 лет назад
Родитель
Сommit
a8fe02a687

+ 2 - 2
modules/all_models/bills.js

@@ -6,10 +6,10 @@ let subSchema = require("../all_schemas/bills_sub_schemas");
 let deleteSchema = require('../all_schemas/delete_schema');
 let Schema = mongoose.Schema;
 let billsSchema = new Schema({
-    ID: String,
+    ID: {type: String, index: true},
     ParentID: String,
     NextSiblingID: String,
-    projectID: Number,
+    projectID:{type: Number, index: true} ,
     serialNo: Number,
     chapterID: Number,
     billsLibId: Number,

+ 1 - 1
modules/all_models/mix_ratio.js

@@ -23,7 +23,7 @@ let modelSchema = {
         index: true
     },
     // 单价文件表id (因为选择单价文件后配合比数据也需要同步,所以记录单价文件id)
-    unit_price_file_id: Number,
+    unit_price_file_id: {type: Number, index: true},
     // 关联项目工料机的key 不能关联id,因为单价文件导入别的项目后项目工料机id不同
     connect_key: {
         type: String,

+ 4 - 1
modules/all_models/project_glj.js

@@ -18,7 +18,10 @@ let modelSchema = {
     // 工料机总库ID
     glj_id: Number,
     // 标段ID
-    project_id: Number,
+    project_id: {
+        type: Number,
+        index: true
+    },
     // 编码
     code: {
         type: String,

+ 2 - 2
modules/all_models/ration.js

@@ -27,8 +27,8 @@ var rationAssItemSchema = mongoose.Schema({
 // 定额、量价、工料机定额 合并存储
 let rationSchema = new Schema({
     // 公用属性部分
-    ID: String,
-    projectID: Number,
+    ID: {type: String, index: true},
+    projectID: {type: Number, index: true},
     billsItemID: String,
     serialNo: Number,
     code: String,

+ 3 - 3
modules/all_models/ration_coe.js

@@ -17,15 +17,15 @@ var coeSchema = mongoose.Schema({
 
 var coeListSchema = mongoose.Schema({
     libID: Number,                      // 所属定额库ID
-    ID: String,                         // 系数ID(流水号ID)
+    ID: {type: String, index: true},                         // 系数ID(流水号ID)
     name: String,                       // 名称
     content: String,                    // 说明
     original_code:String,               //原人材机编码
     option_codes:String,                //可选人材机编码
     option_list:[Schema.Types.Mixed],//下拉列表选项
     select_code:String,
-    rationID:String,
-    projectID:Number,
+    rationID:{type: String, index: true},
+    projectID:{type: Number, index: true},
     coeID:Number,
     isAdjust:Number, //0不调整,1调整
     seq:Number,//序数,排序用

+ 1 - 1
modules/all_models/unit_price.js

@@ -43,7 +43,7 @@ let modelSchema = {
     // 类型简称
     short_name: String,
     // 单价文件表id
-    unit_price_file_id: Number,
+    unit_price_file_id: {type: Number, index: true},
     // 对应标准库工料机id
     glj_id: Number,
     //是否新增1为是,0为否

+ 17 - 5
modules/main/controllers/ration_controller.js

@@ -27,7 +27,15 @@ let controller = {
             data = JSON.stringify(data);
         }
         data = JSON.parse(data);
-        return await ration_facade.addNewRation(data,req.session.sessionCompilation);
+        let start = +new Date();
+        let result = await ration_facade.addNewRation(data,req.session.sessionCompilation);
+        //合并取项目工料机数据的情求,用于刷新项目工料机数据,当有添加、替换项目工料机的情况,才需要刷新
+        if(result.ration_gljs && result.ration_gljs.length > 0 && data.newData){
+            result.projectGLJDatas =  await getProjectGLJData(data.newData.projectID);
+        }
+        let end = +new Date();
+        console.log("实际插入时间为-------------------------------"+(end-start));
+        return result
     },
     addMultiRation: async function (req) {
         let data = req.body.data;
@@ -82,16 +90,20 @@ let controller = {
         let result = await ration_facade.updateCoeAdjust(data,req.session.sessionCompilation);
         //合并取项目工料机数据的情求,用于刷新项目工料机数据,当有添加、替换项目工料机的情况,才需要刷新
         if(result.add.length > 0 || result.replace.length > 0){
-            let gljController = new GLJController();
-            let responseData = await gljController.getProjectGLJsByProjectID(data.projectID)
-            result.projectGLJDatas = responseData.data;
+            result.projectGLJDatas =  await getProjectGLJData(data.projectID);
         }
         return result
 
     }
+};
 
 
-};
+async function getProjectGLJData(projectID) {
+    let gljController = new GLJController();
+    let responseData = await gljController.getProjectGLJsByProjectID(projectID);
+    return responseData.data;
+}
+
 
 function prepareUpdateNodes(datas,nodes,type) {
     for(let d of datas){

+ 0 - 3
modules/main/models/project.js

@@ -103,10 +103,7 @@ Project.prototype.getData = function(projectID, callback){
     for (itemName in moduleMap){
         functions.push((function(itemName){
             return function (cb) {
-                let startTime = +new Date();
                 moduleMap[itemName].getData(projectID, function(err, moduleName, data){
-                    let endTime = +new Date();
-                    console.log(moduleName+'---------------'+(endTime - startTime));
                     cb(err, {moduleName: moduleName, data: data})
                 })
             }

+ 1 - 1
modules/ration_glj/facade/glj_calculate_facade.js

@@ -50,7 +50,7 @@ async function calculateQuantity(query,noNeedCal=null,refreshRationName = false)
          };
          let impactRation = await ration.findOne({ID:query.rationID,projectID:query.projectID});
          let gljList = await ration_glj.find(query);//{projectID:query.projectID,rationID:query.rationID}
-         let coeList = await ration_coe.find({projectID:query.projectID,rationID:query.rationID}).sort('seq').exec();
+         let coeList = await ration_coe.find({rationID:query.rationID}).sort('seq').exec();
          let assList=[], assRation = null, adjustState=[],mixRatioMap = {};
          if(!impactRation){//如果定额不存在或者已删除,返回空
              return null;

+ 0 - 3
web/building_saas/main/js/models/calc_program.js

@@ -1870,10 +1870,7 @@ class CalcProgram {
             return;
         };
         $.bootstrapLoading.start();
-        let startTime = +new Date();
         me.project.updateNodes(dataArr, function (data) {
-            let endShowTime = +new Date();
-            console.log(`保存所需时间——${endShowTime - startTime}`);
             for (let node of treeNodes){
                 delete node.changed;
                 delete node.temData;

+ 12 - 11
web/building_saas/main/js/models/ration.js

@@ -564,6 +564,7 @@ var Ration = {
             let billItemID = null,serialNo=1,nextID=null;
             let needInstall = false;
             if (selected === null) { return null; }
+            let startTime = +new Date();
             if (selected.sourceType === project.Bills.getSourceType() && selected.depth() > 0) {
                 if(selected.data.type === billType.FB){
                     return null;
@@ -613,18 +614,18 @@ var Ration = {
                         syncNodeOper(data);
                         if(callback) callback(newNode);
                     }else {
-                        project.projectGLJ.loadData(function () {
-                            syncNodeOper(data);
-                            if (newNode.parent.data.calcFlag)        // 删除定额时不用改Flag,反正添加定额时已经改好了。
-                                newNode.parent.updateData.calcFlag = null;
-                            project.calcProgram.calcAndSave(newNode,function () {
-                                if(project.Bills.isFBFX(newNode)) { //判断是否属于分部分项工程 ,是的话才需要做计取安装费计算
-                                    installationFeeObj.calcInstallationFee();
-                                }
-                            });
-                            //如果添加规则中,添加内容为定额子目,则更新相关清单
-                            if(callback) callback(newNode);
+                        if(data.projectGLJDatas) projectObj.project.projectGLJ.refreshByDatas(data.projectGLJDatas);
+                        syncNodeOper(data);
+                        if (newNode.parent.data.calcFlag)  newNode.parent.updateData.calcFlag = null;    // 删除定额时不用改Flag,反正添加定额时已经改好了。
+                        project.calcProgram.calcAndSave(newNode,function () {
+                            let endShowTime = +new Date();
+                            console.log(`插入定额总时间——${endShowTime - startTime}`);
+                            if(project.Bills.isFBFX(newNode)) { //判断是否属于分部分项工程 ,是的话才需要做计取安装费计算
+                                installationFeeObj.calcInstallationFee();
+                            }
                         });
+                        //如果添加规则中,添加内容为定额子目,则更新相关清单
+                        if(callback) callback(newNode);
                     }
                     $.bootstrapLoading.end();
                 });