|
@@ -10,6 +10,8 @@
|
|
|
|
|
|
const { app, assert } = require('egg-mock/bootstrap');
|
|
|
const AnalysisExcel = require('../../../app/lib/analysis_excel');
|
|
|
+const Xlsx = require('js-xlsx');
|
|
|
+const _ = require('lodash');
|
|
|
|
|
|
describe('test/app/lib/analysis_excel.test.js', () => {
|
|
|
it('analysis Test Data', function* () {
|
|
@@ -34,7 +36,7 @@ describe('test/app/lib/analysis_excel.test.js', () => {
|
|
|
[ '1-2-2', null, null, '挖方', 'm3' ],
|
|
|
[ '1-2-2-1', null, null, '挖土方', 'm3' ],
|
|
|
[ '1-2-2-1-1', null, null, '挖路基土方', 'm3' ],
|
|
|
- [ null, '203-1-a', null, ' ', 'm3', 92954.75, null, null, 7.53 ],
|
|
|
+ [ null, '203-1-a', null, ' ', 'm3', null, null, null, 7.53 ],
|
|
|
[ null, null, 1, 'K0+000-K1+000', null, 11619.34375, null, null, null, null, '第二册S-2-1' ],
|
|
|
[ null, null, 2, 'K1+000-K1+800', null, 11619.34375, null, null, null, null, '第二册S-2-1' ],
|
|
|
[ null, null, 3, 'K2+800-K3+004', null, 11619.34375, null, null, null, null, '第二册S-2-1' ],
|
|
@@ -46,14 +48,52 @@ describe('test/app/lib/analysis_excel.test.js', () => {
|
|
|
[ '1-2-2-2', null, null, '挖石方', 'm3' ],
|
|
|
[ '1-2-2-2-1', null, null, '挖软石', 'm3' ],
|
|
|
[ null, '203-1-b', null, '挖石方', 'm3', 105.36, null, null, 16.11 ],
|
|
|
+ [ '1-3', null, null, '路面工程', 'km' ],
|
|
|
+ [ '1-4', null, null, '桥梁涵洞工程', 'km' ],
|
|
|
+ [ '1-6', null, null, '隧道工程', 'km' ],
|
|
|
],
|
|
|
range: 'A1:L29',
|
|
|
};
|
|
|
const ctx = app.mockContext();
|
|
|
const templateData = yield ctx.service.tenderNodeTemplate.getData(true);
|
|
|
const result = analysisExcel.analysisData(testData, templateData);
|
|
|
- assert(result.items.length === 21);
|
|
|
- assert(result.roots.length === 1);
|
|
|
+ // 检查插入总量
|
|
|
+ assert(result.items.length === 72);
|
|
|
+ assert(result.roots.length === 6);
|
|
|
assert(result.pos.length === 8);
|
|
|
+ // 检查第一部分子节点排序
|
|
|
+ const nodes = result.roots[0].children;
|
|
|
+ assert(nodes[nodes.length - 2].code === '1-6');
|
|
|
+ assert(nodes[nodes.length - 1].code === '1-10');
|
|
|
+ // 检查第203-1-a的数量
|
|
|
+ const xmj = result.codeNodes['1-2-2-1-1'];
|
|
|
+ const gcl = xmj.children[0];
|
|
|
+ console.log(gcl);
|
|
|
+ assert(gcl.quantity === 92954.75);
|
|
|
+ });
|
|
|
+ it('analysis Excel Test Data', function* () {
|
|
|
+ const excelFile = app.baseDir + '/app/public/files/template/ledger/Book1.xls';
|
|
|
+ const wb = Xlsx.readFile(excelFile);
|
|
|
+ const name = wb.SheetNames[0];
|
|
|
+ const sheetData = {
|
|
|
+ rows: Xlsx.utils.sheet_to_json(wb.Sheets[name], {header: 1}),
|
|
|
+ merge: wb.Sheets[name]["!merges"],
|
|
|
+ };
|
|
|
+ const ctx = app.mockContext();
|
|
|
+ const analysisExcel = new AnalysisExcel();
|
|
|
+ const templateData = yield ctx.service.tenderNodeTemplate.getData(true);
|
|
|
+ const result = analysisExcel.analysisData(sheetData, templateData);
|
|
|
+ assert(result.items.length === 216);
|
|
|
+ const xmj = result.codeNodes['1-2-3-1-2'];
|
|
|
+ const gcl = xmj.children[0];
|
|
|
+ assert(gcl.quantity === 0);
|
|
|
+ ctx.tender = { id: 2 };
|
|
|
+ // pos需要记录createUserId
|
|
|
+ ctx.session = {
|
|
|
+ sessionUser: {
|
|
|
+ accountId: 2,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ yield ctx.service.ledger.importExcel(sheetData);
|
|
|
});
|
|
|
});
|