Преглед на файлове

交叉数据,合计计算精度问题

MaiXinRong преди 4 години
родител
ревизия
8bbd995039
променени са 1 файла, в които са добавени 12 реда и са изтрити 4 реда
  1. 12 4
      app/reports/rpt_component/jpc_cross_tab.js

+ 12 - 4
app/reports/rpt_component/jpc_cross_tab.js

@@ -12,6 +12,7 @@ const JpcTextHelper = require('./helper/jpc_helper_text');
 const JpcCommonOutputHelper = require('./helper/jpc_helper_common_output');
 const JpcAreaHelper = require('./helper/jpc_helper_area');
 const $FS_UTIL = require('../../public/js/fsUtil');
+const bc = require('../../lib/base_calc.js');
 
 const JpcCrossTabSrv = function() {};
 
@@ -262,7 +263,8 @@ JpcCrossTabSrv.prototype.createNew = function() {
                             if (isNaN(vTtl)) {
                                 vTtl = 0;
                             }
-                            rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * vTtl;
+                            //rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * vTtl;
+                            rowGrandTotal[di] = bc.add(rowGrandTotal[di], vTtl);
                         }
                     }
                     me.col_sum_fields_value_total[i].push(rowGrandTotal);
@@ -296,7 +298,8 @@ JpcCrossTabSrv.prototype.createNew = function() {
                             if (isNaN(vTtl)) {
                                 vTtl = 0;
                             }
-                            rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * vTtl;
+                            // rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * vTtl;
+                            rowGrandTotal[di] = bc.add(rowGrandTotal[di], vTtl);
                         }
                     }
                     me.row_sum_fields_value_total[i].push(rowGrandTotal);
@@ -770,7 +773,7 @@ JpcCrossTabSrv.prototype.createNew = function() {
         const me = this;
         const rst = [];
         const tab = rptTpl[JV.NODE_CROSS_INFO][tabNodeName];
-        const band = bands[tab[JV.PROP_BAND_NAME]];
+        const band = tab ? bands[tab[JV.PROP_BAND_NAME]] : null;
         if (band) {
             const pageStatus = me.pageStatusLst[page - 1];
             if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]] === true) {
@@ -941,7 +944,12 @@ JpcCrossTabSrv.prototype.createNew = function() {
                     // 这里的合计实际是章合计来的,需要seg level全部累加
                     for (let i = 0; i < me.sortedColSequence[segIdx].length; i++) {
                         for (let j = 0; j < me.sortedColSequence[segIdx][i].length; j++) {
-                            rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.sortedColSequence[segIdx][i][j]);
+                            // rowGrandTotal[di] = rowGrandTotal[di] + 1.0 * JpcFieldHelper.getValue(data_fields[di], me.sortedColSequence[segIdx][i][j]);
+                            let vTtl = parseFloat(JpcFieldHelper.getValue(data_fields[di], me.sortedColSequence[segIdx][i][j]));
+                            if (isNaN(vTtl)) {
+                                vTtl = 0;
+                            }
+                            rowGrandTotal[di] = bc.add(rowGrandTotal[di], vTtl);
                         }
                     }
                 }