浏览代码

数据预处理,工程量清单汇总,父项问题

MaiXinRong 5 年之前
父节点
当前提交
9954710cab
共有 2 个文件被更改,包括 270 次插入3 次删除
  1. 3 2
      app/lib/rpt_data_analysis.js
  2. 267 1
      builder_report_index_define.js

+ 3 - 2
app/lib/rpt_data_analysis.js

@@ -108,11 +108,12 @@ const gatherGcl = {
             if (fields.indexOf(nf) === -1) return;
         }
         const gatherOther = fields.indexOf('chapter') >= 0;
-
-        ctx.helper._.pull(data.mem_stage_bills, 'is_leaf');
         const gclBills = [], other = {name: '未计入清单章节项', chapter: '10000'};
 
         for (const b of data.mem_stage_bills) {
+            const child = ctx.helper._.find(data.mem_stage_bills, {ledger_pid: b.ledger_id});
+            if (child) continue;
+
             if (b.b_code && b.b_code !== '') {
                 let gcl = gclBills.find(function (g) {
                     return g.b_code === b.b_code && g.name === b.name && g.unit === b.unit

+ 267 - 1
builder_report_index_define.js

@@ -190,6 +190,204 @@ const change_bills = {
 
     ],
 };
+// 期 - 清单
+const stage_bills = {
+    name: '期-清单 数据表(mem_stage_bills)',
+    remark: '',
+    id: 25,
+    key: 'mem_stage_bills',
+    prefix: '期-清单',
+    cols: [
+        { name: '台账ID', field: 'id', type: dataType.int },
+        { name: '标段ID', field: 'tender_id', type: dataType.int },
+        { name: '树结构-ID', field: 'ledger_id', type: dataType.int },
+        { name: '树结构-父项ID', field: 'ledger_pid', type: dataType.int },
+        { name: '树结构-层级', field: 'level', type: dataType.int },
+        { name: '树结构-同层排序', field: 'order', type: dataType.int },
+        { name: '树结构-完整路径', field: 'full_path', type: dataType.str },
+        { name: '树结构-是否子项', field: 'is_leaf', type: dataType.int }, // 8
+
+        { name: '项目节编号', field: 'code', type: dataType.str },
+        { name: '清单编号', field: 'b_code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str }, // 12
+        { name: '单价', field: 'unit_price', type: dataType.currency, tag: {type: 'up'} },
+
+        { name: '签约-数量', field: 'deal_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '签约-金额', field: 'deal_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '施工复核-金额', field: 'sgfh_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '设计错漏-金额', field: 'sjcl_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '其他错漏-金额', field: 'qtcl_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '台账-数量', field: 'quantity', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '台账-金额', field: 'total_price', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '项目节-数量1', field: 'dgn_qty1', type: dataType.currency },
+        { name: '项目节-数量2', field: 'dgn_qty2', type: dataType.currency },
+
+        { name: '图册号', field: 'drawing_code', type: dataType.str },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '节点类型', field: 'node_type', type: dataType.int },
+        { name: '总额计量', field: 'is_tp', type: dataType.int },
+
+        { name: '本期-合同-数量', field: 'contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额', field: 'contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量', field: 'qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额', field: 'qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量', field: 'gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额', field: 'gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期批注', field: 'postil', type: dataType.str },
+
+        { name: '截止上期-合同-数量', field: 'pre_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-合同-金额', field: 'pre_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-数量变更-金额', field: 'pre_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止上期-完成-数量', field: 'pre_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-完成-金额', field: 'pre_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '截止本期-合同-数量', field: 'end_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止本期-合同-金额', field: 'end_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止本期-数量变更-数量', field: 'end_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止本期-数量变更-金额', field: 'end_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止本期-完成-数量', field: 'end_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止本期-完成-金额', field: 'end_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '(台账 + 截止本期变更)-金额', field: 'final_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止本期完成率(%)', field: 'final_ratio', type: dataType.double },
+
+        { name: '本期-数量变更-变更令', field: 'qc_bgl_code', type: dataType.str },
+
+        { name: '章节编号', field: 'chapter', type: dataType.str },
+
+        { name: '预留扩展字段_1', field: 'ex_value1', type: dataType.currency },
+        { name: '预留扩展字段_2', field: 'ex_value1', type: dataType.currency },
+    ],
+};
+const stage_bills_compare = {
+    name: '期-清单-全参与人 数据表(mem_stage_bills_compare)',
+    remark: '',
+    id: 26,
+    key: 'mem_stage_bills_compare',
+    prefix: '期-清单-全参与人',
+    cols: [
+        { name: '台账ID', field: 'id', type: dataType.int },
+        { name: '标段ID', field: 'tender_id', type: dataType.int },
+        { name: '树结构-ID', field: 'ledger_id', type: dataType.int },
+        { name: '树结构-父项ID', field: 'ledger_pid', type: dataType.int },
+        { name: '树结构-层级', field: 'level', type: dataType.int },
+        { name: '树结构-同层排序', field: 'order', type: dataType.int },
+        { name: '树结构-完整路径', field: 'full_path', type: dataType.str },
+        { name: '树结构-是否子项', field: 'is_leaf', type: dataType.int }, // 8
+
+        { name: '项目节编号', field: 'code', type: dataType.str },
+        { name: '清单编号', field: 'b_code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str }, // 12
+        { name: '单价', field: 'unit_price', type: dataType.currency, tag: {type: 'up'} },
+
+        { name: '签约-数量', field: 'deal_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '签约-金额', field: 'deal_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '施工复核-金额', field: 'sgfh_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '设计错漏-金额', field: 'sjcl_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '其他错漏-金额', field: 'qtcl_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '台账-数量', field: 'quantity', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '台账-金额', field: 'total_price', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '项目节-数量1', field: 'dgn_qty1', type: dataType.currency },
+        { name: '项目节-数量2', field: 'dgn_qty2', type: dataType.currency },
+
+        { name: '图册号', field: 'drawing_code', type: dataType.str },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '节点类型', field: 'node_type', type: dataType.int },
+        { name: '总额计量', field: 'is_tp', type: dataType.int },
+
+        { name: '截止上期-合同-数量', field: 'pre_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-合同-金额', field: 'pre_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-数量变更-金额', field: 'pre_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '截止上期-完成-数量', field: 'pre_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '截止上期-完成-金额', field: 'pre_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_0', field: 'r0_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_0', field: 'r0_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_0', field: 'r0_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_0', field: 'r0_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_0', field: 'r0_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_0', field: 'r0_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_1', field: 'r1_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_1', field: 'r1_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_1', field: 'r1_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_1', field: 'r1_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_1', field: 'r1_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_1', field: 'r1_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_2', field: 'r2_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_2', field: 'r2_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_2', field: 'r2_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_2', field: 'r2_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_2', field: 'r2_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_2', field: 'r2_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_3', field: 'r3_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_3', field: 'r3_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_3', field: 'r3_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_3', field: 'r3_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_3', field: 'r3_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_3', field: 'r3_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_4', field: 'r4_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_4', field: 'r4_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_4', field: 'r4_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_4', field: 'r4_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_4', field: 'r4_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_4', field: 'r4_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_5', field: 'r5_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_5', field: 'r5_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_5', field: 'r5_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_5', field: 'r5_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_5', field: 'r5_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_5', field: 'r5_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_6', field: 'r6_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_6', field: 'r6_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_6', field: 'r6_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_6', field: 'r6_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_6', field: 'r6_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_6', field: 'r6_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_7', field: 'r7_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_7', field: 'r7_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_7', field: 'r7_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_7', field: 'r7_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_7', field: 'r7_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_7', field: 'r7_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_8', field: 'r8_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_8', field: 'r8_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_8', field: 'r8_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_8', field: 'r8_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_8', field: 'r8_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_8', field: 'r8_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '本期-合同-数量_9', field: 'r9_contract_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-合同-金额_9', field: 'r9_contract_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-数量变更-数量_9', field: 'r9_qc_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-数量变更-金额_9', field: 'r9_qc_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本期-完成-数量_9', field: 'r9_gather_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 12} },
+        { name: '本期-完成-金额_9', field: 'r9_gather_tp', type: dataType.currency, tag: {type: 'tp'} },
+
+        { name: '章节编号', field: 'chapter', type: dataType.str },
+    ],
+};
 // 期 - 计量单元
 const stage_pos = {
     name: '期-计量单元(mem_stage_pos)',
@@ -276,6 +474,70 @@ const stage_pos_compare = {
         { name: '本期-完成计量-数量_9', field: 'r9_gather_qty', type: dataType.currency },
     ],
 };
+// 工程进度
+const month_progress = {
+    name: '工程进度 数据表(mem_month_progress)',
+    remark: '',
+    id: 22,
+    key: 'mem_month_progress',
+    prefix: '工程进度',
+    cols: [
+        { name: '计量年月', field: 'month', type: dataType.str },
+        { name: '本月计量', field: 'tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '本月完成度', field: 'ratio', type: dataType.double },
+        { name: '累计计量', field: 'end_tp', type: dataType.currency, tag: {type: 'tp'} },
+        { name: '累计完成度', field: 'end_ratio', type: dataType.double },
+    ],
+};
+// 预留扩展数据
+const union_data = {
+    name: '预留扩展-合并 数据表(mem_union_data)',
+    remark: '',
+    id: 28,
+    key: 'mem_union_data',
+    prefix: '预留扩展-合并',
+    cols: [
+        { name: '字符串1', field: 'str1', type: dataType.str },
+        { name: '字符串2', field: 'str2', type: dataType.str },
+        { name: '字符串3', field: 'str3', type: dataType.str },
+        { name: '字符串4', field: 'str4', type: dataType.str },
+        { name: '字符串5', field: 'str5', type: dataType.str },
+        { name: '字符串6', field: 'str6', type: dataType.str },
+        { name: '字符串7', field: 'str7', type: dataType.str },
+        { name: '字符串8', field: 'str8', type: dataType.str },
+        { name: '字符串9', field: 'str9', type: dataType.str },
+        { name: '字符串10', field: 'str10', type: dataType.str },
+
+        { name: '整数1', field: 'int1', type: dataType.int },
+        { name: '整数2', field: 'int2', type: dataType.int },
+        { name: '整数3', field: 'int3', type: dataType.int },
+        { name: '整数4', field: 'int4', type: dataType.int },
+        { name: '整数5', field: 'int5', type: dataType.int },
+        { name: '整数6', field: 'int6', type: dataType.int },
+
+        { name: '数量1', field: 'qty1', type: dataType.currency },
+        { name: '数量2', field: 'qty2', type: dataType.currency },
+        { name: '数量3', field: 'qty3', type: dataType.currency },
+        { name: '数量4', field: 'qty4', type: dataType.currency },
+        { name: '数量5', field: 'qty5', type: dataType.currency },
+        { name: '数量6', field: 'qty6', type: dataType.currency },
+        { name: '数量7', field: 'qty7', type: dataType.currency },
+        { name: '数量8', field: 'qty8', type: dataType.currency },
+        { name: '数量9', field: 'qty9', type: dataType.currency },
+        { name: '数量10', field: 'qty10', type: dataType.currency },
+
+        { name: '金额1', field: 'tp1', type: dataType.currency },
+        { name: '金额2', field: 'tp2', type: dataType.currency },
+        { name: '金额3', field: 'tp3', type: dataType.currency },
+        { name: '金额4', field: 'tp4', type: dataType.currency },
+        { name: '金额5', field: 'tp5', type: dataType.currency },
+        { name: '金额6', field: 'tp6', type: dataType.currency },
+        { name: '金额7', field: 'tp7', type: dataType.currency },
+        { name: '金额8', field: 'tp8', type: dataType.currency },
+        { name: '金额9', field: 'tp9', type: dataType.currency },
+        { name: '金额10', field: 'tp10', type: dataType.currency },
+    ],
+};
 
 // 期 - 合同支付
 const stage_pay = {
@@ -672,7 +934,11 @@ const exportTableDefine = async function(define) {
     await saveTableDefine(tableDefine, path.join(savePath, define.key + '_define.json'));
 };
 
-const defines = [stage_jgcl, stage_bonus, stage_other,
+const defines = [
+    union_data,
+    month_progress,
+    stage_bills, stage_bills_compare,
+    stage_jgcl, stage_bonus, stage_other,
     change, change_bills,
     stage_pos, stage_pos_compare,
     stage_pay,