Browse Source

1. 变更令排序,兼容只有变更令,没有变更清单的情况
2. 报表,数据预处理调用

MaiXinRong 5 years ago
parent
commit
948f688535
2 changed files with 26 additions and 23 deletions
  1. 16 12
      app/lib/rpt_data_analysis.js
  2. 10 11
      app/reports/util/rpt_calculation_data_util.js

+ 16 - 12
app/lib/rpt_data_analysis.js

@@ -11,7 +11,9 @@
 const changeSort = {
     name: '变更令排序',
     hint: '默认的变更令排序,同时对变更令,变更清单进行排序\n' +
-        '变更令排序勿需勾选任何预定义处理指标,但是在指标映射中,要添加"变更令(change)"和"变更清单(chang_audit_list)"下的指标',
+        '变更令排序勿需勾选任何预定义处理指标,但是在指标映射中,需要添加如下指标:' +
+        '1. 如果只有变更令数据,则必须添加,"变更令(change)"下的"变更令号"' +
+        '2. 如果有变更清单需要排序,则必须在1的基础上添加,变更令(change)"下的"变更令uuid"和"变更清单(chang_audit_list)"下的"所属变更令uuid"&"清单编号"',
     /**
      *
      * @param ctx - context常量
@@ -19,22 +21,24 @@ const changeSort = {
      * @param fieldsKey - 计算字段
      */
     fun: function(ctx, data, fieldsKey) {
-        if (!data.change || !data.change_audit_list) return;
+        if (!data.change) return;
         // 变更令排序
         data.change.sort(function (a, b) {
             return a.code.localeCompare(b.code);
         });
-        data.change_audit_list.sort(function (a, b) {
-            const aCIndex = data.change.findIndex(function (c) {
-                return c.cid === a.cid;
-            });
-            const bCIndex = data.change.findIndex(function (c) {
-                return c.cid === b.cid;
+        if (data.change_audit_list) {
+            data.change_audit_list.sort(function (a, b) {
+                const aCIndex = data.change.findIndex(function (c) {
+                    return c.cid === a.cid;
+                });
+                const bCIndex = data.change.findIndex(function (c) {
+                    return c.cid === b.cid;
+                });
+                return aCIndex === bCIndex
+                    ? ctx.helper.compareCode(a.code, b.code)
+                    : aCIndex - bCIndex;
             });
-            return aCIndex === bCIndex
-                ? ctx.helper.compareCode(a.code, b.code)
-                : aCIndex - bCIndex;
-        });
+        }
     },
 };
 const gatherGcl = {

+ 10 - 11
app/reports/util/rpt_calculation_data_util.js

@@ -11,7 +11,7 @@ const fs = require('fs');
 const fsUtil = require('../../public/js/fsUtil');
 const stringUtil = require('../../public/js/stringUtil');
 const scMathUtil = require('../../public/js/scMathUtil');
-const data_analyze_util = require('../../lib/rpt_data_analysis');
+const data_analyze_util = require('../../lib/rpt_data_analysis').analysisObj;
 const _ = require('lodash');
 
 const treeUtil = require('../public/treeUtil');
@@ -512,19 +512,18 @@ function preDefineProcess(ctx, tpl, preDefineCfg, rawDataObj) {
             fields.push(rstF);
         }
     }
-    switch (preDefineCfg[JV.PROP_HANDLE_TYPE_PRE_DEFINED_KEY]) {
-        case 'changeSort' :
+    const analysisKey = preDefineCfg[JV.PROP_HANDLE_TYPE_PRE_DEFINED_KEY];
+    if (analysisKey && analysisKey !== '') {
+        if (data_analyze_util[analysisKey]) {
             try {
                 // 在预定义方式中,小麦处理原始数据,不需要
-                data_analyze_util.changeSort.fun(ctx, rawDataObj, fields);
-            } catch (ex) {
-                //
+                data_analyze_util[analysisKey].fun(ctx, rawDataObj, fields);
+            } catch (err) {
+                throw '报表预处理数据出错';
             }
-            break;
-        case '' :
-            break;
-        default:
-            break;
+        } else {
+            throw '报表预处理方法不存在';
+        }
     }
 }