Browse Source

分解编号调整

MaiXinRong 5 years ago
parent
commit
36e8236d61
2 changed files with 60 additions and 58 deletions
  1. 8 6
      app/lib/rpt_data_analysis.js
  2. 52 52
      test/app/lib/rpt_data_analysis.test.js

+ 8 - 6
app/lib/rpt_data_analysis.js

@@ -1215,16 +1215,16 @@ const splitXmjCode = {
             } else if (d.level > 4) {
                 const field = options.targetField[3];
                 if (field && splitCodes.length > 4) {
-                    d[field] = splitCodes.reduce(function (s, v, i) { return i >= 4 ? s + '-' + v : ''});
+                    d[field] = splitCodes.reduce(function (s, v, i) { return i >= 4 ? (s ? s + '-' + v : v + '') : ''});
                 }
             }
         }
     },
     _getParentByLevel: function (data, node, level) {
         if (node.full_path) {
-            const pid = node.full_path.split('-');
+            const pid = node.full_path.split('-')[level-1];
             return data.find(function (x) {
-                return x.level === level && x.ledger_pid === pid;
+                return x.level === level && x.ledger_id == pid;
             });
         } else {
             return null;
@@ -1252,13 +1252,15 @@ const splitXmjCode = {
 
             if (helper.check18MainCode(d[options.code])) {
                 const parent = helper._.find(data, {ledger_id: d.ledger_pid});
-                const splitParent = !parent && parent.level < 5 ? parent : this._getParentByLevel(data, d, 4);
+                const splitParent = !parent || parent.level < 5 ? parent : this._getParentByLevel(data, d, 4);
                 d[target] = !splitParent
                     ? d[options.code]
                     : d[options.code].replace(splitParent[options.code], '');
-            } if (helper.check18SubCode(d[options.code]) && isSplitSub) {
+            } else if (helper.check18SubCode(d[options.code]) && isSplitSub) {
                 const parent = helper._.find(data, {ledger_id: d.ledger_pid});
-                const splitParent = !parent && parent.level < 5 ? parent : this._getParentByLevel(data, d, 4);
+                const splitParent = !parent || parent.level < 5 ? parent : this._getParentByLevel(data, d, 4);
+                if (d.ledger_id === 11) console.log(parent);
+                if (d.ledger_id === 11) console.log(splitParent);
                 d[target] = !splitParent || helper.check18MainCode(splitParent.code)
                     ? d[options.code]
                     : d[options.code].replace(splitParent[options.code], '');

+ 52 - 52
test/app/lib/rpt_data_analysis.test.js

@@ -538,18 +538,18 @@ describe('test/app/service/report_memory.test.js', () => {
             ]
         };
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData11, [], {table: 'bills', type: '11', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData11.bills[1].xiang, '一' );
-        assert(testData11.bills[2].mu, '1');
-        assert(testData11.bills[3].jie, '1');
-        assert(testData11.bills[4].ximu, '1');
-        assert(testData11.bills[5].ximu, '1-1');
+        assert(testData11.bills[1].xiang === '一' );
+        assert(testData11.bills[2].mu ==='1');
+        assert(testData11.bills[3].jie === '1');
+        assert(testData11.bills[4].ximu === '1');
+        assert(testData11.bills[5].ximu === '1-1');
 
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData11, [], {table: 'bills', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData11.bills[1].xiang, '1-1' );
-        assert(testData11.bills[2].mu, '1-1-1');
-        assert(testData11.bills[3].jie, '1-1-1-1');
-        assert(testData11.bills[4].ximu, '1-1-1-1-1');
-        assert(testData11.bills[5].ximu, '1-1-1-1-1-1');
+        assert(testData11.bills[1].xiang === '1-1' );
+        assert(testData11.bills[2].mu === '1-1-1');
+        assert(testData11.bills[3].jie === '1-1-1-1');
+        assert(testData11.bills[4].ximu === '1-1-1-1-1');
+        assert(testData11.bills[5].ximu === '1-1-1-1-1-1');
 
         const testData18 = {
             bills: [
@@ -562,53 +562,53 @@ describe('test/app/service/report_memory.test.js', () => {
                 { code: '102', level: 2, ledger_id: 7, ledger_pid: 1, full_path: '1-7' },
                 { code: 'LJ05', level: 3, ledger_id: 8, ledger_pid: 7, full_path: '1-7-8' },
                 { code: 'LJ0502', level: 4, ledger_id: 9, ledger_pid: 8, full_path: '1-7-8-9' },
-                { code: 'LJ050204', level: 5, ledger_id: 10, ledger_pid: 9, full_path: '1-7-8-10' },
-                { code: 'GDLJ05020401', level: 6, ledger_id: 11, ledger_pid: 10, full_path: '1-7-8-10-11' }, // 10
+                { code: 'LJ050204', level: 5, ledger_id: 10, ledger_pid: 9, full_path: '1-7-8-9-10' },
+                { code: 'GDLJ05020401', level: 6, ledger_id: 11, ledger_pid: 10, full_path: '1-7-8-9-10-11' }, // 10
             ]
         };
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData18, [], {table: 'bills', type:'18', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData18.bills[1].xiang, '01');
-        assert(testData18.bills[2].mu, '01');
-        assert(testData18.bills[3].jie, '01');
-        assert(testData18.bills[4].jie, '03');
-        assert(testData18.bills[5].ximu, '01');
-        assert(testData18.bills[6].xiang, '02');
-        assert(testData18.bills[7].mu, 'LJ05');
-        assert(testData18.bills[8].jie, '02');
-        assert(testData18.bills[9].ximu, '04');
-        assert(testData18.bills[10].ximu, '0401');
+        assert(testData18.bills[1].xiang === '01');
+        assert(testData18.bills[2].mu === '01');
+        assert(testData18.bills[3].jie === '01');
+        assert(testData18.bills[4].jie === '03');
+        assert(testData18.bills[5].ximu === '01');
+        assert(testData18.bills[6].xiang === '02');
+        assert(testData18.bills[7].mu === 'LJ05');
+        assert(testData18.bills[8].jie === 'LJ0502');
+        assert(testData18.bills[9].ximu === 'LJ050204');
+        assert(testData18.bills[10].ximu === 'LJ05020401');
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData18, [], {table: 'bills', type:'18-1', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData18.bills[1].xiang, '01');
-        assert(testData18.bills[2].mu, '01');
-        assert(testData18.bills[3].jie, '01');
-        assert(testData18.bills[4].jie, '03');
-        assert(testData18.bills[5].ximu, '01');
-        assert(testData18.bills[6].xiang, '02');
-        assert(testData18.bills[7].mu, 'LJ05');
-        assert(testData18.bills[8].jie, 'LJ0502');
-        assert(testData18.bills[9].ximu, 'LJ050204');
-        assert(testData18.bills[10].ximu, 'LJ05020401');
+        assert(testData18.bills[1].xiang === '01');
+        assert(testData18.bills[2].mu === '01');
+        assert(testData18.bills[3].jie === '01');
+        assert(testData18.bills[4].jie === '03');
+        assert(testData18.bills[5].ximu === '01');
+        assert(testData18.bills[6].xiang === '02');
+        assert(testData18.bills[7].mu === 'LJ05');
+        assert(testData18.bills[8].jie === '02');
+        assert(testData18.bills[9].ximu === '04');
+        assert(testData18.bills[10].ximu === '0401');
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData18, [], {table: 'bills', type:'18-0-1', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData18.bills[1].xiang, '01');
-        assert(testData18.bills[2].mu, '01');
-        assert(testData18.bills[3].jie, '01');
-        assert(testData18.bills[4].jie, '03');
-        assert(testData18.bills[5].ximu, '01');
-        assert(testData18.bills[6].xiang, '02');
-        assert(testData18.bills[7].mu, 'LJ05');
-        assert(testData18.bills[8].jie, '02');
-        assert(testData18.bills[9].ximu, '04');
-        assert(testData18.bills[10].ximu, 'GD0401');
+        assert(testData18.bills[1].xiang === '01');
+        assert(testData18.bills[2].mu === '01');
+        assert(testData18.bills[3].jie === '01');
+        assert(testData18.bills[4].jie === '03');
+        assert(testData18.bills[5].ximu === '01');
+        assert(testData18.bills[6].xiang === '02');
+        assert(testData18.bills[7].mu === 'LJ05');
+        assert(testData18.bills[8].jie === 'LJ0502');
+        assert(testData18.bills[9].ximu === 'LJ050204');
+        assert(testData18.bills[10].ximu === 'GDLJ05020401');
         reportDataAnalysis.analysisObj.splitXmjCode.fun(ctx, testData18, [], {table: 'bills', type:'18-1-1', code: 'code', targetField: ['xiang', 'mu', 'jie', 'ximu']});
-        assert(testData18.bills[1].xiang, '01');
-        assert(testData18.bills[2].mu, '01');
-        assert(testData18.bills[3].jie, '01');
-        assert(testData18.bills[4].jie, '03');
-        assert(testData18.bills[5].ximu, '01');
-        assert(testData18.bills[6].xiang, '02');
-        assert(testData18.bills[7].mu, 'LJ05');
-        assert(testData18.bills[8].jie, 'LJ0502');
-        assert(testData18.bills[9].ximu, 'LJ050204');
-        assert(testData18.bills[10].ximu, 'GDLJ05020401');
+        assert(testData18.bills[1].xiang === '01');
+        assert(testData18.bills[2].mu === '01');
+        assert(testData18.bills[3].jie === '01');
+        assert(testData18.bills[4].jie === '03');
+        assert(testData18.bills[5].ximu === '01');
+        assert(testData18.bills[6].xiang === '02');
+        assert(testData18.bills[7].mu === 'LJ05');
+        assert(testData18.bills[8].jie === '02');
+        assert(testData18.bills[9].ximu === '04');
+        assert(testData18.bills[10].ximu === 'GD0401');
     });
 });