chenshilong пре 7 година
родитељ
комит
b186c11a59
2 измењених фајлова са 25 додато и 1 уклоњено
  1. 13 0
      modules/pm/models/project_model.js
  2. 12 1
      web/building_saas/main/js/models/calc_program.js

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

@@ -661,6 +661,19 @@ ProjectsDAO.prototype.updateProjectProperty = async function(projectId, property
     return result.ok === 1;
 };
 
+// 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 {
+
+            callback(0, datas);
+        }
+    });
+};
+
+
 module.exports ={    project: new ProjectsDAO(),
     projType: projectType,
     fileType: fileType

+ 12 - 1
web/building_saas/main/js/models/calc_program.js

@@ -1009,7 +1009,7 @@ class CalcProgram {
         if (treeNode.changed && !changedArr.includes(treeNode)) changedArr.push(treeNode);
     };
 
-    // 计算本节点、所有父节点(默认,可选)、公式引用节点。
+    // 计算本节点、所有父节点(默认,可选)、公式引用节点(默认,可选)
     calculate(treeNode, calcParents = true, calcFormulas = true){
         let me = this;
         let changedNodes = [];
@@ -1120,6 +1120,17 @@ class CalcProgram {
         me.saveNodes(allChangedNodes);
     };
 
+    // 计算多条零散的清单,并计算他们的父清单、引用清单,然后打包存储。如:花选删除树结点(如花选清单、定额等,不区分树结点类型)。
+    calcBillsAndSave(billNodes){
+        let me = this, allChangedNodes = [];
+        for (let node of billNodes) {
+            let curChangeds = me.calculate(node, true, false);
+            mergeArr(allChangedNodes, curChangeds);
+        };
+        me.calcFormulaNodes(allChangedNodes);
+        me.saveNodes(allChangedNodes);
+    };
+
     // 计算并保存指定的一个树节点。修改一个树节点,实际上要计算和保存的是一批树结点:层层父结点、被其它结点(的公式)引用的公式结点。
     // 这个方法实际上封装了calculate()和saveNodes()两个方法,主要目的是为了外部调用方便,少写一点累赘代码。
     calcAndSave(treeNode){