TonyKang 6 лет назад
Родитель
Сommit
06e9f788d8
2 измененных файлов с 21 добавлено и 5 удалено
  1. 20 5
      modules/reports/util/rpt_construct_data_util.js
  2. 1 0
      public/web/rpt_value_define.js

+ 20 - 5
modules/reports/util/rpt_construct_data_util.js

@@ -289,7 +289,7 @@ class Rpt_Data_Extractor {
                         break;
                     case JV.PROP_HANDLE_TYPE_SUM:
                         // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/insertedRawDataData10.jsp");
-                        summaryData(srcData, preHandle, rawDataObj.prjData);
+                        summaryData(srcData, preHandle, rawDataObj.prjData, rawDataObj.prj);
                         // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/insertedRawDataData11.jsp");
                         break;
                     case JV.PROP_HANDLE_TYPE_ADD_DUMMY:
@@ -371,9 +371,24 @@ function getModuleDataByKey(prjData, key) {
     return rst;
 }
 
-function summaryData(sourceData, handleCfg, prjData){
+function summaryData(sourceData, handleCfg, prjData, prjMain){
     let rstArr = [], tempRstArr = [];
     let curParentPrjData = {};
+    let precision = 6;
+    if (handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]) {
+        if (isNaN(parseInt(handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]))) {
+            let properties = handleCfg[JV.PROP_HANDLE_TYPE_PRECISION].split('.');
+            let currentProperty = prjMain[properties[0]];
+            for (let idx = 1; idx < properties.length; idx++) {
+                currentProperty = currentProperty[properties[idx]];
+            }
+            if (!isNaN(parseInt(currentProperty))) {
+                precision = parseInt(currentProperty);
+            }
+        } else {
+            precision = parseInt(handleCfg[JV.PROP_HANDLE_TYPE_PRECISION]);
+        }
+    }
     for (let item of getActDataArr(sourceData)) {
         if (item._doc) {
             tempRstArr.push(item._doc);
@@ -399,10 +414,10 @@ function summaryData(sourceData, handleCfg, prjData){
                                     dtlItem[sumKey] = parseFloat(dtlItem[sumKey]) - parseFloat(data[calcAheadObj["calc_property"]]);
                                     break;
                                 case "*":
-                                    dtlItem[sumKey] = dtlItem[sumKey] * parseFloat(data[calcAheadObj["calc_property"]]).toFixed(4);
+                                    dtlItem[sumKey] = dtlItem[sumKey] * parseFloat(data[calcAheadObj["calc_property"]]);
                                     break;
                                 case "/":
-                                    dtlItem[sumKey] = dtlItem[sumKey] / parseFloat(data[calcAheadObj["calc_property"]]).toFixed(4);
+                                    dtlItem[sumKey] = dtlItem[sumKey] / parseFloat(data[calcAheadObj["calc_property"]]);
                                     break;
                                 default:
                                     break;
@@ -445,7 +460,7 @@ function summaryData(sourceData, handleCfg, prjData){
             for (let sumKey of handleCfg[JV.PROP_SUM_SUM_KEYS]) {
                 if (dtl[sumKey]) {
                     // sumObj[grpKey][sumKey] += dtl[sumKey];
-                    sumObj[grpKey][sumKey] = parseFloat(sumObj[grpKey][sumKey]) + parseFloat(dtl[sumKey]);
+                    sumObj[grpKey][sumKey] = parseFloat(parseFloat(sumObj[grpKey][sumKey]).toFixed(precision)) + parseFloat(parseFloat(dtl[sumKey]).toFixed(precision));
                 }
             }
         }

+ 1 - 0
public/web/rpt_value_define.js

@@ -68,6 +68,7 @@ const JV = {
     PROP_HANDLE_TYPE_ADJUST: "数据调整",
     PROP_HANDLE_TYPE_BILLS_DATA_MOVE: "量材数据转移",
     PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT: "组成物替换",
+    PROP_HANDLE_TYPE_PRECISION: "合计精度",
 
     PROP_ADJUST_COLLECTION: "数据调整集",
     PROP_ADJUST_ACTION: "action",