report_memory.test.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. const { app, assert } = require('egg-mock/bootstrap');
  10. const path = require('path');
  11. let savePath;
  12. const mockData = {};
  13. const dataType = {
  14. int: 'int',
  15. str: 'string',
  16. double: 'double',
  17. currency: 'currency',
  18. };
  19. const addFields = function(table, name, field, type, tag) {
  20. const data = {};
  21. data.ID = table.ID * 100 + table.items.length + 1;
  22. data.Name = name + '(' + field + ')';
  23. data.DataType = type;
  24. data.TableName = table.key;
  25. data.descr = '';
  26. data.mapExpression = "$PROJECT.REPORT.getProperty('" + table.key + "', '" + field + "')";
  27. if (tag) {
  28. switch (tag.type) {
  29. case 'up':
  30. data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.up')" };
  31. break;
  32. case 'tp':
  33. if (tag.subType) {
  34. data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal." + "_" + tag.subType + "_tp')" };
  35. } else {
  36. data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.tp')" };
  37. }
  38. break;
  39. case 'qty':
  40. data.Precision = { type: "flexible", flexibleRefFieldID: table.ID * 100 + tag.unitKey, flexibleMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'precision')" };
  41. break;
  42. }
  43. }
  44. table.items.push(data);
  45. };
  46. const addTpFields = function(table, name, field, type) {
  47. const data = {};
  48. data.ID = table.ID * 100 + table.items.length + 1;
  49. data.Name = name + '(' + field + ')';
  50. data.DataType = type;
  51. data.TableName = table.key;
  52. data.descr = '';
  53. data.mapExpression = "$PROJECT.REPORT.getProperty('" + table.key + "', '" + field + "')";
  54. data.Precision = { type: 'fixed', fixedMapExpression: '$PROJECT.REPORT.getProperty("tender_info", "decimal.up")' };
  55. table.items.push(data);
  56. };
  57. const saveTableDefine = async function (ctx, tableDefine, file) {
  58. delete tableDefine.ID;
  59. delete tableDefine.key;
  60. let defineStr = JSON.stringify(tableDefine, "", "\t");
  61. const replaceStr = [
  62. {match: '"Name":', str: 'Name:'},
  63. {match: '"remark":', str: 'remark:'},
  64. {match: '"items":', str: 'items:'},
  65. {match: '"ID":', str: 'ID:'},
  66. {match: '"DataType":', str: 'DataType:'},
  67. {match: '"TableName":', str: 'TableName:'},
  68. {match: '"descr":', str: 'descr:'},
  69. {match: '"mapExpression":', str: 'mapExpression:'},
  70. {match: '"Precision":', str: 'Precision:'},
  71. {match: '"type":', str: 'type:'},
  72. {match: '"flexibleRefFieldID":', str: 'flexibleRefFieldID:'},
  73. {match: '"fixedMapExpression":', str: 'fixedMapExpression:'},
  74. {match: '"flexibleMapExpression":', str: 'flexibleMapExpression:'},
  75. ];
  76. for (const rs of replaceStr) {
  77. const reg = new RegExp(rs.match, 'gm');
  78. defineStr = defineStr.replace(reg, rs.str);
  79. }
  80. await ctx.helper.saveBufferFile(defineStr, file);
  81. };
  82. describe('test/app/service/report_memory.test.js', () => {
  83. // 准备测试数据
  84. before(function* () {
  85. const ctx = app.mockContext();
  86. savePath = path.join(ctx.app.baseDir,'report_temp');
  87. // 模拟登录session
  88. const postData = {
  89. account: '734406061@qq.com',
  90. project: 'T201711273363',
  91. project_password: 'mai654321',
  92. };
  93. // const postData = {
  94. // account: 'chente',
  95. // project: 'T201711273363',
  96. // project_password: '123456',
  97. // };
  98. ctx.session = {};
  99. const loginResult = yield ctx.service.projectAccount.accountLogin(postData, 2);
  100. assert(loginResult);
  101. mockData.session = ctx.session;
  102. });
  103. // 中间计量表数据 - 台账
  104. it('test getStageImTzData & getStageImTzBillsData', function* () {
  105. const ctx = app.mockContext(mockData);
  106. // test12 - 第6期
  107. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 6});
  108. const mainData = yield ctx.service.reportMemory.getStageImTzData(12, stage.id);
  109. const billsData = yield ctx.service.reportMemory.getStageImTzBillsData(12, stage.id);
  110. if (mainData instanceof Array) {
  111. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), ctx.app.baseDir + '/mem_stage_im_tz.json');
  112. }
  113. if (billsData instanceof Array) {
  114. yield ctx.helper.saveBufferFile(JSON.stringify(billsData,"","\t"), ctx.app.baseDir + '/mem_stage_im_tz_bills.json');
  115. }
  116. });
  117. // 中间计量表数据 - 总量
  118. it('test getStageImZlData', function* () {
  119. const ctx = app.mockContext(mockData);
  120. // test12 - 第6期
  121. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 6});
  122. const mainData = yield ctx.service.reportMemory.getStageImZlData(12, stage.id);
  123. if (mainData instanceof Array) {
  124. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), ctx.app.baseDir + '/mem_stage_im_zl.json');
  125. }
  126. });
  127. // 月进度数据
  128. it('test getMonthProgress', function* () {
  129. const ctx = app.mockContext(mockData);
  130. // test12
  131. const mainData = yield ctx.service.reportMemory.getMonthProgress(12);
  132. if (mainData instanceof Array) {
  133. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), ctx.app.baseDir + '/mem_month_progress.json');
  134. }
  135. });
  136. // 期清单数据
  137. it('test getStageBills', function* () {
  138. const ctx = app.mockContext(mockData);
  139. // test12 - 第6期
  140. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 6});
  141. const mainData = yield ctx.service.reportMemory.getStageBillsData(12, stage.id, [
  142. 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
  143. 'code', 'b_code', 'name', 'unit', 'unit_price',
  144. 'deal_qty', 'deal_tp',
  145. 'sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp', 'quantity', 'total_price',
  146. 'dgn_qty1', 'dgn_qty2',
  147. 'drawing_code', 'memo', 'node_type', 'is_tp',
  148. 'contract_qty', 'contract_tp', 'qc_qty', 'qc_tp', 'gather_qty', 'gather_tp', 'postil',
  149. 'pre_contract_qty', 'pre_contract_tp', 'pre_qc_qty', 'pre_qc_tp', 'pre_gather_qty', 'pre_gather_tp',
  150. 'end_contract_qty', 'end_contract_tp', 'end_qc_qty', 'end_qc_tp', 'end_gather_qty', 'end_gather_tp',
  151. 'final_tp', 'final_ratio',
  152. 'qc_bgl_code',
  153. 'chapter',
  154. ]);
  155. if (mainData instanceof Array) {
  156. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), path.join(savePath, 'mem_stage_bills.json'));
  157. const tableDefine = {};
  158. tableDefine.Name = '期 - 清单数据表(mem_stage_bills)';
  159. tableDefine.remark = '';
  160. tableDefine.ID = 25;
  161. tableDefine.key = 'mem_stage_bills';
  162. tableDefine.items = [];
  163. addFields(tableDefine, '台账ID', 'id', dataType.int);
  164. addFields(tableDefine, '标段ID', 'tender_id', dataType.int);
  165. addFields(tableDefine, '树结构-ID', 'ledger_id', dataType.int);
  166. addFields(tableDefine, '树结构-父项ID', 'ledger_pid', dataType.int);
  167. addFields(tableDefine, '树结构-层级', 'level', dataType.int);
  168. addFields(tableDefine, '树结构-同层排序', 'order', dataType.int);
  169. addFields(tableDefine, '树结构-完整路径', 'full_path', dataType.int);
  170. addFields(tableDefine, '树结构-是否子项', 'is_leaf', dataType.int); // 8
  171. addFields(tableDefine, '项目节编号', 'code', dataType.str);
  172. addFields(tableDefine, '清单编号', 'b_code', dataType.str);
  173. addFields(tableDefine, '名称', 'name', dataType.str);
  174. addFields(tableDefine, '单位', 'unit', dataType.str); // 12
  175. addFields(tableDefine, '单价', 'unit_price', dataType.currency, {type: 'up'});
  176. addFields(tableDefine, '签约-数量', 'deal_qty', dataType.currency, {type: 'qty', unitKey: 12});
  177. addFields(tableDefine, '签约-金额', 'deal_tp', dataType.currency, {type: 'tp'});
  178. addFields(tableDefine, '施工复核-数量', 'sgfh_qty', dataType.currency, {type: 'qty', unitKey: 12});
  179. addFields(tableDefine, '施工复核-金额', 'sgfh_tp', dataType.currency, {type: 'tp'});
  180. addFields(tableDefine, '设计错漏-数量', 'sjcl_qty', dataType.currency, {type: 'qty', unitKey: 12});
  181. addFields(tableDefine, '设计错漏-金额', 'sjcl_tp', dataType.currency, {type: 'tp'});
  182. addFields(tableDefine, '其他错漏-数量', 'qtcl_qty', dataType.currency, {type: 'qty', unitKey: 12});
  183. addFields(tableDefine, '其他错漏-金额', 'qtcl_tp', dataType.currency, {type: 'tp'});
  184. addFields(tableDefine, '台账-数量', 'quantity', dataType.currency, {type: 'qty', unitKey: 12});
  185. addFields(tableDefine, '台账-金额', 'total_price', dataType.currency, {type: 'tp'});
  186. addFields(tableDefine, '项目节-数量1', 'dgn_qty1', dataType.currency);
  187. addFields(tableDefine, '项目节-金额2', 'dgn_qty2', dataType.currency);
  188. addFields(tableDefine, '图册号', 'drawing_code', dataType.str);
  189. addFields(tableDefine, '备注', 'memo', dataType.str);
  190. addFields(tableDefine, '节点类型', 'node_type', dataType.int);
  191. addFields(tableDefine, '总额计量', 'is_tp', dataType.int);
  192. addFields(tableDefine, '本期-合同-数量', 'contract_qty', dataType.currency, {type: 'qty', unitKey: 12});
  193. addFields(tableDefine, '本期-合同-金额', 'contract_tp', dataType.currency, {type: 'tp'});
  194. addFields(tableDefine, '本期-数量变更-数量', 'qc_qty', dataType.currency, {type: 'qty', unitKey: 12});
  195. addFields(tableDefine, '本期-数量变更-金额', 'qc_tp', dataType.currency, {type: 'tp'});
  196. addFields(tableDefine, '本期-完成-数量', 'gather_qty', dataType.currency, {type: 'qty', unitKey: 12});
  197. addFields(tableDefine, '本期-完成-金额', 'gather_tp', dataType.currency, {type: 'tp'});
  198. addFields(tableDefine, '本期批注', 'postil', dataType.str);
  199. addFields(tableDefine, '截止上期-合同-数量', 'pre_contract_qty', dataType.currency, {type: 'qty', unitKey: 12});
  200. addFields(tableDefine, '截止上期-合同-金额', 'pre_contract_tp', dataType.currency, {type: 'tp'});
  201. addFields(tableDefine, '截止上期-数量变更-数量', 'pre_qc_qty', dataType.currency, {type: 'qty', unitKey: 12});
  202. addFields(tableDefine, '截止上期-数量变更-金额', 'pre_qc_tp', dataType.currency, {type: 'tp'});
  203. addFields(tableDefine, '截止上期-完成-数量', 'pre_gather_qty', dataType.currency, {type: 'qty', unitKey: 12});
  204. addFields(tableDefine, '截止上期-完成-金额', 'pre_gather_tp', dataType.currency, {type: 'tp'});
  205. addFields(tableDefine, '截止本期-合同-数量', 'end_contract_qty', dataType.currency, {type: 'qty', unitKey: 12});
  206. addFields(tableDefine, '截止本期-合同-金额', 'end_contract_tp', dataType.currency, {type: 'tp'});
  207. addFields(tableDefine, '截止本期-数量变更-数量', 'end_qc_qty', dataType.currency, {type: 'qty', unitKey: 12});
  208. addFields(tableDefine, '截止本期-数量变更-金额', 'end_qc_tp', dataType.currency, {type: 'tp'});
  209. addFields(tableDefine, '截止本期-完成-数量', 'end_gather_qty', dataType.currency, {type: 'qty', unitKey: 12});
  210. addFields(tableDefine, '截止本期-完成-金额', 'end_gather_tp', dataType.currency, {type: 'tp'});
  211. addFields(tableDefine, '(台账 + 截止本期变更)-金额', 'final_tp', dataType.currency, {type: 'tp'});
  212. addFields(tableDefine, '截止本期完成率(%)', 'final_ratio', dataType.double);
  213. addFields(tableDefine, '本期-数量变更-变更令', 'qc_bgl_code', dataType.str);
  214. addFields(tableDefine, '章节编号', 'chapter', dataType.str);
  215. yield saveTableDefine(ctx, tableDefine, path.join(savePath, 'mem_stage_bills_define.json'));
  216. }
  217. });
  218. // 期部位明细数据
  219. it('test getStagePos', function* () {
  220. const ctx = app.mockContext(mockData);
  221. // test12 - 第6期
  222. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 6});
  223. const mainData = yield ctx.service.reportMemory.getStagePosData(12, stage.id);
  224. if (mainData instanceof Array) {
  225. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), path.join(savePath, 'mem_stage_pos.json'));
  226. }
  227. });
  228. // 期 全审核人 数据
  229. it('test getStageBillsCompare', function* () {
  230. const ctx = app.mockContext(mockData);
  231. // test12 - 第4期
  232. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 4});
  233. const mainData = yield ctx.service.reportMemory.getStageBillsCompareData(12, stage.id, [
  234. 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
  235. 'code', 'b_code', 'name', 'unit', 'unit_price',
  236. 'deal_qty', 'deal_tp',
  237. 'sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp', 'quantity', 'total_price',
  238. 'dgn_qty1', 'dgn_qty2',
  239. 'drawing_code', 'memo', 'node_type', 'is_tp',
  240. 'r0_contract_qty', 'r0_contract_tp', 'r0_qc_qty', 'r0_qc_tp', 'r0_gather_qty', 'r0_gather_tp',
  241. 'r1_contract_qty', 'r1_contract_tp', 'r1_qc_qty', 'r1_qc_tp', 'r1_gather_qty', 'r1_gather_tp',
  242. 'pre_contract_qty', 'pre_contract_tp', 'pre_qc_qty', 'pre_qc_tp', 'pre_gather_qty', 'pre_gather_tp',
  243. 'chapter',
  244. ]);
  245. if (mainData instanceof Array) {
  246. yield ctx.helper.saveBufferFile(JSON.stringify(mainData,"","\t"), path.join(savePath, 'mem_stage_bills_compare.json'));
  247. const tableDefine = {};
  248. tableDefine.Name = '期-清单-全参与人数据表(mem_stage_bills_compare)';
  249. tableDefine.remark = '';
  250. tableDefine.ID = 26;
  251. tableDefine.key = 'mem_stage_bills_compare';
  252. tableDefine.items = [];
  253. addFields(tableDefine, '台账ID', 'id', dataType.int);
  254. addFields(tableDefine, '标段ID', 'tender_id', dataType.int);
  255. addFields(tableDefine, '树结构-ID', 'ledger_id', dataType.int);
  256. addFields(tableDefine, '树结构-父项ID', 'ledger_pid', dataType.int);
  257. addFields(tableDefine, '树结构-层级', 'level', dataType.int);
  258. addFields(tableDefine, '树结构-同层排序', 'order', dataType.int);
  259. addFields(tableDefine, '树结构-完整路径', 'full_path', dataType.int);
  260. addFields(tableDefine, '树结构-是否子项', 'is_leaf', dataType.int); // 8
  261. addFields(tableDefine, '项目节编号', 'code', dataType.str);
  262. addFields(tableDefine, '清单编号', 'b_code', dataType.str);
  263. addFields(tableDefine, '名称', 'name', dataType.str);
  264. addFields(tableDefine, '单位', 'unit', dataType.str); // 12
  265. addFields(tableDefine, '单价', 'unit_price', dataType.currency, {type: 'up'});
  266. addFields(tableDefine, '签约-数量', 'deal_qty', dataType.currency, {type: 'qty', unitKey: 12});
  267. addFields(tableDefine, '签约-金额', 'deal_tp', dataType.currency, {type: 'tp'});
  268. addFields(tableDefine, '施工复核-数量', 'sgfh_qty', dataType.currency, {type: 'qty', unitKey: 12});
  269. addFields(tableDefine, '施工复核-金额', 'sgfh_tp', dataType.currency, {type: 'tp'});
  270. addFields(tableDefine, '设计错漏-数量', 'sjcl_qty', dataType.currency, {type: 'qty', unitKey: 12});
  271. addFields(tableDefine, '设计错漏-金额', 'sjcl_tp', dataType.currency, {type: 'tp'});
  272. addFields(tableDefine, '其他错漏-数量', 'qtcl_qty', dataType.currency, {type: 'qty', unitKey: 12});
  273. addFields(tableDefine, '其他错漏-金额', 'qtcl_tp', dataType.currency, {type: 'tp'});
  274. addFields(tableDefine, '台账-数量', 'quantity', dataType.currency, {type: 'qty', unitKey: 12});
  275. addFields(tableDefine, '台账-金额', 'total_price', dataType.currency, {type: 'tp'});
  276. addFields(tableDefine, '项目节-数量1', 'dgn_qty1', dataType.currency);
  277. addFields(tableDefine, '项目节-数量2', 'dgn_qty2', dataType.currency);
  278. addFields(tableDefine, '图册号', 'drawing_code', dataType.str);
  279. addFields(tableDefine, '备注', 'memo', dataType.str);
  280. addFields(tableDefine, '节点类型', 'node_type', dataType.int);
  281. addFields(tableDefine, '总额计量', 'is_tp', dataType.int);
  282. addFields(tableDefine, '截止上期-合同-数量', 'pre_contract_qty', dataType.currency, {type: 'qty', unitKey: 12});
  283. addFields(tableDefine, '截止上期-合同-金额', 'pre_contract_tp', dataType.currency, {type: 'tp'});
  284. addFields(tableDefine, '截止上期-数量变更-数量', 'pre_qc_qty', dataType.currency, {type: 'qty', unitKey: 12});
  285. addFields(tableDefine, '截止上期-数量变更-金额', 'pre_qc_tp', dataType.currency, {type: 'tp'});
  286. addFields(tableDefine, '截止上期-完成-数量', 'pre_gather_qty', dataType.currency, {type: 'qty', unitKey: 12});
  287. addFields(tableDefine, '截止上期-完成-金额', 'pre_gather_tp', dataType.currency, {type: 'tp'});
  288. for (let i = 0 ;i < 10; i++) {
  289. addFields(tableDefine, '本期-合同-数量' + '_' + i, 'r' + i +'_' + 'contract_qty', dataType.currency, {type: 'qty', unitKey: 12});
  290. addFields(tableDefine, '本期-合同-金额' + '_' + i, 'r' + i +'_' + 'contract_tp', dataType.currency, {type: 'tp'});
  291. addFields(tableDefine, '本期-数量变更-数量' + '_' + i, 'r' + i +'_' + 'qc_qty', dataType.currency, {type: 'qty', unitKey: 12});
  292. addFields(tableDefine, '本期-数量变更-金额' + '_' + i, 'r' + i +'_' + 'qc_tp', dataType.currency, {type: 'tp'});
  293. addFields(tableDefine, '本期-完成-数量' + '_' + i, 'r' + i +'_' + 'gather_qty', dataType.currency, {type: 'qty', unitKey: 12});
  294. addFields(tableDefine, '本期-完成-金额' + '_' + i, 'r' + i +'_' + 'gather_tp', dataType.currency, {type: 'tp'});
  295. }
  296. addFields(tableDefine, '章节编号', 'chapter', dataType.str);
  297. yield saveTableDefine(ctx, tableDefine, path.join(savePath, 'mem_stage_bills_compare_define.json'));
  298. }
  299. });
  300. it('test getStagePay', function* () {
  301. const ctx = app.mockContext(mockData);
  302. // test12 - 第4期
  303. const stage = yield ctx.service.stage.getDataByCondition({tid: 12, order: 6});
  304. const data = yield ctx.service.reportMemory.getStagePayData(stage.tid, stage.id, ['r0_tp', 'r1_tp']);
  305. if (data instanceof Array) {
  306. yield ctx.helper.saveBufferFile(JSON.stringify(data, '', '\t'), path.join(savePath, 'mem_stage_pay.json'));
  307. const tableDefine = {};
  308. tableDefine.Name = '期-合同支付-数据(mem_stage_pay)';
  309. tableDefine.remark = '';
  310. tableDefine.ID = 27;
  311. tableDefine.key = 'mem_stage_pay';
  312. tableDefine.items = [];
  313. const prefix = '期-合同支付-';
  314. addFields(tableDefine, prefix + '名称', 'name', dataType.str);
  315. addFields(tableDefine, prefix + '计算公式', 'expr', dataType.str);
  316. addTpFields(tableDefine, prefix + '金额', 'tp', dataType.currency, {type: 'tp', subType: 'pay'});
  317. addTpFields(tableDefine, prefix + '截止上期-金额', 'pre_tp', dataType.currency, {type: 'tp', subType: 'pay'});
  318. addTpFields(tableDefine, prefix + '截止本期-金额', 'end_tp', dataType.currency, {type: 'tp', subType: 'pay'});
  319. addFields(tableDefine, prefix + '排序', 'order', dataType.int);
  320. addFields(tableDefine, prefix + '是否扣款项', 'minus', dataType.int);
  321. addFields(tableDefine, prefix + '支付类型', 'ptype', dataType.int);
  322. addTpFields(tableDefine, prefix + '起扣金额', 'sprice', dataType.currency, {type: 'tp', subType: 'pay'});
  323. addTpFields(tableDefine, prefix + '扣款限额', 'rprice', dataType.currency, {type: 'tp', subType: 'pay'});
  324. for (let i = 0 ;i < 10; i++) {
  325. addTpFields(tableDefine, prefix + '流程-本期-金额_' + i, 'r' + i + '_tp', dataType.currency, {type: 'tp', subType: 'pay'});
  326. }
  327. yield saveTableDefine(ctx, tableDefine, path.join(savePath, 'mem_stage_pay_define.json'));
  328. }
  329. });
  330. it('test mem_union_data', function* () {
  331. const ctx = app.mockContext(mockData);
  332. const tableDefine = {};
  333. tableDefine.Name = '预留扩展数据-合并(mem_union_data)';
  334. tableDefine.remark = '';
  335. tableDefine.ID = 28;
  336. tableDefine.key = 'mem_union_data';
  337. tableDefine.items = [];
  338. const prefix = '预留扩展数据-合并-';
  339. addFields(tableDefine, prefix + '字符串1', 'str1', dataType.str);
  340. addFields(tableDefine, prefix + '字符串2', 'str2', dataType.str);
  341. addFields(tableDefine, prefix + '字符串3', 'str3', dataType.str);
  342. addFields(tableDefine, prefix + '字符串4', 'str4', dataType.str);
  343. addFields(tableDefine, prefix + '字符串5', 'str5', dataType.str);
  344. addFields(tableDefine, prefix + '字符串6', 'str6', dataType.str);
  345. addFields(tableDefine, prefix + '字符串7', 'str7', dataType.str);
  346. addFields(tableDefine, prefix + '字符串8', 'str8', dataType.str);
  347. addFields(tableDefine, prefix + '字符串9', 'str9', dataType.str);
  348. addFields(tableDefine, prefix + '字符串10', 'str10', dataType.str);
  349. addFields(tableDefine, prefix + '整数1', 'int1', dataType.int);
  350. addFields(tableDefine, prefix + '整数2', 'int2', dataType.int);
  351. addFields(tableDefine, prefix + '整数3', 'int3', dataType.int);
  352. addFields(tableDefine, prefix + '整数4', 'int4', dataType.int);
  353. addFields(tableDefine, prefix + '整数5', 'int5', dataType.int);
  354. addFields(tableDefine, prefix + '整数6', 'int6', dataType.int);
  355. addFields(tableDefine, prefix + '数量1', 'qty1', dataType.currency);
  356. addFields(tableDefine, prefix + '数量2', 'qty2', dataType.currency);
  357. addFields(tableDefine, prefix + '数量3', 'qty3', dataType.currency);
  358. addFields(tableDefine, prefix + '数量4', 'qty4', dataType.currency);
  359. addFields(tableDefine, prefix + '数量5', 'qty5', dataType.currency);
  360. addFields(tableDefine, prefix + '数量6', 'qty6', dataType.currency);
  361. addFields(tableDefine, prefix + '数量7', 'qty7', dataType.currency);
  362. addFields(tableDefine, prefix + '数量8', 'qty8', dataType.currency);
  363. addFields(tableDefine, prefix + '数量9', 'qty9', dataType.currency);
  364. addFields(tableDefine, prefix + '数量10', 'qty10', dataType.currency);
  365. addFields(tableDefine, prefix + '金额1', 'tp1', dataType.currency);
  366. addFields(tableDefine, prefix + '金额2', 'tp2', dataType.currency);
  367. addFields(tableDefine, prefix + '金额3', 'tp3', dataType.currency);
  368. addFields(tableDefine, prefix + '金额4', 'tp4', dataType.currency);
  369. addFields(tableDefine, prefix + '金额5', 'tp5', dataType.currency);
  370. addFields(tableDefine, prefix + '金额6', 'tp6', dataType.currency);
  371. addFields(tableDefine, prefix + '金额7', 'tp7', dataType.currency);
  372. addFields(tableDefine, prefix + '金额8', 'tp8', dataType.currency);
  373. addFields(tableDefine, prefix + '金额9', 'tp9', dataType.currency);
  374. addFields(tableDefine, prefix + '金额10', 'tp10', dataType.currency);
  375. yield saveTableDefine(ctx, tableDefine, path.join(savePath, 'mem_union_data.json'));
  376. });
  377. it('test mem_change_bills', function* () {
  378. const ctx = app.mockContext(mockData);
  379. const data = yield ctx.service.reportMemory.getChangeBillsData(12);
  380. if (data instanceof Array) {
  381. yield ctx.helper.saveBufferFile(JSON.stringify(data, '', '\t'), path.join(savePath, 'mem_change_bills.json'));
  382. const tableDefine = {};
  383. tableDefine.Name = '变更清单-(mem_change_bills)';
  384. tableDefine.remark = '';
  385. tableDefine.ID = 29;
  386. tableDefine.key = 'mem_change_bills';
  387. tableDefine.items = [];
  388. const prefix = '变更清单-';
  389. addFields(tableDefine, prefix + '变更令id', 'cid', dataType.str);
  390. addFields(tableDefine, prefix + '签约清单id或台账id', 'lid', dataType.str);
  391. addFields(tableDefine, prefix + '清单编号', 'code', dataType.str);
  392. addFields(tableDefine, prefix + '名称', 'name', dataType.str);
  393. addFields(tableDefine, prefix + '单位', 'unit', dataType.str);
  394. addFields(tableDefine, prefix + '单价', 'unit_price', dataType.currency, {type: 'up'});
  395. addFields(tableDefine, prefix + '原数量', 'o_qty', dataType.currency, {type: 'qty', unitKey: 5});
  396. addFields(tableDefine, prefix + '变更数量', 'c_qty', dataType.currency, {type: 'qty', unitKey: 5});
  397. addFields(tableDefine, prefix + '审批变更后数量', 's_qty', dataType.currency, {type: 'qty', unitKey: 5});
  398. addFields(tableDefine, prefix + '原-金额', 'o_tp', dataType.currency, {type: 'tp'});
  399. addFields(tableDefine, prefix + '变更-金额', 'c_tp', dataType.currency, {type: 'tp'});
  400. addFields(tableDefine, prefix + '审批变更后-金额', 's_tp', dataType.currency, {type: 'tp'});
  401. addFields(tableDefine, prefix + '部位明细', 'bwmx', dataType.str);
  402. addFields(tableDefine, prefix + '变更详情', 'detail', dataType.str);
  403. yield saveTableDefine(ctx, tableDefine, path.join(savePath, 'mem_change_bills_define.json'));
  404. }
  405. });
  406. });