zhangweicheng 7 years ago
parent
commit
53a5357ea9

+ 62 - 4
modules/main/facade/bill_facade.js

@@ -1,8 +1,10 @@
 /**
  * Created by zhang on 2018/1/22.
  */
+let quantity_detail = require("./quantity_detail_facade");
 let model = require("../../bills_lib/models/bills_lib_model");
-let Bills = model.billsMod;
+let Bills_Lib = model.billsMod;
+let bill_Model = require('../models/bills').model;
 let _ = require("lodash");
 module.exports={
    getSectionInfo : async function (data) {
@@ -18,7 +20,7 @@ module.exports={
             conditions.push(temp);
         }
         if(conditions.length>0){
-            fxList = await Bills.find({"$or":conditions});
+            fxList = await Bills_Lib.find({"$or":conditions});
         }
         if(fxList.length>0){
             let sectionIDs = {};
@@ -30,7 +32,7 @@ module.exports={
                 }
             }
             let IDList = _.keys(sectionIDs);
-            let sectionList = await Bills.find({'ID':{'$in':IDList}});
+            let sectionList = await Bills_Lib.find({'ID':{'$in':IDList}});
             let sectionMap = _.mapKeys(sectionList,'ID');
             let fxMap =  _.mapKeys(fxList,'code');
             sectionInfo={
@@ -42,6 +44,62 @@ module.exports={
         return null;
     },
     reorganizeFBFX:async function(data){
-        console.log(data);
+       let result = {};
+       let tasks = generateBillTasks(data);
+       if(data.delete && data.delete.length > 0){
+           let qd_query={projectID: data.projectID, billID: {"$in": data.delete}};
+           await quantity_detail.deleteByQuery(qd_query) ;
+        }
+        if(tasks.length > 0){
+            result =await bill_Model.bulkWrite(tasks);
+        }
+        return result;
+    }
+}
+
+function generateBillTasks(data) {
+    let tasks=[];
+    let user_id = data.user_id,projectID = data.projectID;
+    let deleteInfo={deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
+    if(data.delete && data.delete.length > 0){
+        for(let d_ID of data.delete){
+            let task={
+                updateOne:{
+                    filter:{
+                        ID:d_ID,
+                        projectID:projectID
+                    },
+                    update :{
+                        deleteInfo:deleteInfo
+                    }
+                }
+            };
+            tasks.push(task);
+        }
+    }
+    if(data.update && data.update.length > 0){
+        for(let u_data of data.update){
+            let task ={
+                updateOne:{
+                    filter : {
+                        ID:u_data.ID,
+                        projectID:projectID
+                    },
+                    update : u_data.data
+                }
+            };
+            tasks.push(task);
+        }
+    }
+    if(data.create && data.create.length > 0){
+        for(let n_data of data.create){
+            let task = {
+                insertOne :{
+                    document:n_data
+                }
+            };
+            tasks.push(task);
+        }
     }
+    return tasks;
 }

+ 1 - 3
web/building_saas/main/js/views/project_view.js

@@ -217,7 +217,7 @@ var projectObj = {
                 });
             }
         }
-        if(node.data.type==billType.FX||node.data.type==billType.BILL){
+        if(node.data.type==billType.FX||(node.data.type==billType.BILL&&node.source.children.length==0)){//是分项或者叶子清单的情况下才需要查找替换
             if (value&&value.length === 9 && /^[\d]+$/.test(value)) {
                 stdMatchCode = value;
                 formatCode = project.Bills.newFormatCode(stdMatchCode);
@@ -497,8 +497,6 @@ var projectObj = {
                 console.log("加载完成-----"+endTime);
                 console.log(`时间——${endTime - startTime}`);
                 that.project.projectMarkChecking();//是否需要重新进行造价计算
-                console.log(projectInfoObj.projectInfo);
-                //project.calcProgram.calcAllNodesAndSave()
             }
             else {
 

+ 37 - 10
web/building_saas/main/js/views/zlfb_view.js

@@ -145,7 +145,6 @@ let zlfb_object={
                 }
             };
             me.submitRequest(newDataMap,allNewNode,updateData,FBFX,controller);
-            $.bootstrapLoading.end();
         }else {
             $.bootstrapLoading.end();
         }
@@ -246,18 +245,46 @@ let zlfb_object={
         updateData.user_id = userID;
         console.log(updateData);
         CommonAjax.post('/bills/reorganizeFBFX',updateData,function (data) {
-            console.log(data);
+            //更新前端缓存
+            let billDatas = projectObj.project.Bills.datas;
+            let quantity_detail_datas = projectObj.project.quantity_detail.datas;
+            let mainTree = projectObj.mainController.tree;
+            if(updateData.delete && updateData.delete.length > 0){//删除
+                for( let d_ID of updateData.delete){
+                    _.remove(billDatas,{'ID':d_ID});
+                    _.remove(quantity_detail_datas,{'billID':d_ID});
+                }
+            }
+            if(updateData.update && updateData.update.length > 0){//更新数据
+                for(let u_data of updateData.update){
+                    let m_node = mainTree.findNode(u_data.ID);
+                    if(m_node){
+                        let m_data = m_node.data;
+                        for(let u_key in u_data.data){
+                            m_data[u_key] = u_data.data[u_key];
+                        }
+                    }
+                }
+            }
+            if(updateData.create && updateData.create.length > 0){
+                for(let n_data of updateData.create){
+                    billDatas.push(n_data);
+                }
+            }
+            controller.sheet.addRows(1, allNewNode.length);
+            for(let c of FBFX.children){
+                TREE_SHEET_HELPER.massOperationSheet(controller.sheet, function () {
+                    TREE_SHEET_HELPER.refreshTreeNodeData(controller.setting, controller.sheet, [c], true);
+                    controller.sheet.showRow(1, GC.Spread.Sheets.VerticalPosition.center);
+                });
+            }
+            cbTools.refreshFormulaNodes();
+            //重新计算
+            projectObj.project.Bills.getEngineeringCostNode(controller).changed = true;
+            projectObj.project.calcProgram.calcAllNodesAndSave();
         },function () {
             //errorCallback
         });
-        controller.sheet.addRows(1, allNewNode.length);
-        for(let c of FBFX.children){
-            TREE_SHEET_HELPER.massOperationSheet(controller.sheet, function () {
-                TREE_SHEET_HELPER.refreshTreeNodeData(controller.setting, controller.sheet, [c], true);
-                controller.sheet.showRow(c.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
-            });
-        }
-        cbTools.refreshFormulaNodes();
         console.log(newDataMap);
         console.log(allNewNode);
     }