Browse Source

中间计量,报表数据调整

MaiXinRong 5 years ago
parent
commit
578dad442b
2 changed files with 99 additions and 12 deletions
  1. 33 3
      app/lib/stage_im.js
  2. 66 9
      builder_report_index_define.js

+ 33 - 3
app/lib/stage_im.js

@@ -494,10 +494,13 @@ class StageIm {
                 im = {
                     id: this.ImData.length + 1,
                     lid: node.id, pid: '', code: p.b_code, name: p.name, unit: p.unit, unit_price: p.unit_price,
-                    quantity: 0,
+                    quantity: 0, total_price: 0,
                     jl: 0, contract_jl: 0, qc_jl: 0,
                     pre_jl: 0, pre_contract_jl: 0, pre_qc_jl: 0,
                     end_jl: 0, end_contract_jl: 0, end_qc_jl: 0,
+                    tp: 0, contract_tp: 0, qc_tp: 0,
+                    pre_tp: 0, pre_contract_tp: 0, pre_qc_tp: 0,
+                    end_tp: 0, end_contract_tp: 0, end_qc_tp: 0,
                     peg: peg ? this._getPegStr(peg.name) : '',
                     position: '',
                 };
@@ -521,22 +524,36 @@ class StageIm {
             //}
             this._generateZlChangeData(p, im);
             im.quantity = this.ctx.helper.add(im.quantity, p.quantity);
+            im.total_price = this.ctx.helper.add(im.total_price, p.total_price);
 
             im.jl = this.ctx.helper.add(im.jl, p.gather_qty);
             im.contract_jl = this.ctx.helper.add(im.contract_jl, p.contract_qty);
             im.qc_jl = this.ctx.helper.add(im.qc_jl, p.qc_qty);
 
+            im.tp = this.ctx.helper.add(im.tp, p.gather_tp);
+            im.contract_tp = this.ctx.helper.add(im.contract_tp, p.contract_tp);
+            im.qc_tp = this.ctx.helper.add(im.qc_tp, p.qc_tp);
+
             im.pre_jl = this.ctx.helper.add(im.pre_jl, p.pre_gather_qty);
             im.pre_contract_jl = this.ctx.helper.add(im.pre_contract_jl, p.pre_contract_qty);
             im.pre_qc_jl = this.ctx.helper.add(im.pre_qc_jl, p.pre_qc_qty);
 
+            im.pre_tp = this.ctx.helper.add(im.pre_tp, p.pre_gather_tp);
+            im.pre_contract_tp = this.ctx.helper.add(im.pre_contract_tp, p.pre_contract_tp);
+            im.pre_qc_tp = this.ctx.helper.add(im.pre_qc_tp, p.pre_qc_tp);
+
             im.end_jl = this.ctx.helper.add(im.end_jl, p.end_gather_qty);
             im.end_contract_jl = this.ctx.helper.add(im.end_contract_jl, p.end_contract_qty);
             im.end_qc_jl = this.ctx.helper.add(im.end_qc_jl, p.end_qc_qty);
+
+            im.end_tp = this.ctx.helper.add(im.end_tp, p.end_gather_tp);
+            im.end_contract_tp = this.ctx.helper.add(im.end_contract_tp, p.end_contract_tp);
+            im.end_qc_tp = this.ctx.helper.add(im.end_qc_tp, p.end_qc_tp);
         }
     }
 
     _generateBwImData (node) {
+        const tp_decimal = this.ctx.tender.info.decimal.tp;
         const posterity = this.billsTree.getPosterity(node);
         for (const p of posterity) {
             if (p.children && p.children.length > 0 ) { continue; }
@@ -550,7 +567,7 @@ class StageIm {
                     const im = {
                         id: this.ImData.length + 1,
                         lid: node.id, code: p.b_code, name: p.name, unit: p.unit, unit_price: p.unit_price, pid: pp.id,
-                        quantity: pp.quantity,
+                        quantity: pp.quantity
                         jl: pp.gather_qty, contract_jl: pp.contract_qty, qc_jl: pp.qc_qty,
                         pre_jl: pp.pre_gather_qty, pre_contract_jl: pp.pre_contract_qty, pre_qc_jl: pp.pre_qc_qty,
                         end_jl: pp.end_gather_qty, end_contract_jl: pp.end_contract_qty, end_qc_jl: pp.end_qc_qty,
@@ -561,6 +578,16 @@ class StageIm {
                         changes: [],
                         position: pp.position,
                     };
+                    im.total_price = this.ctx.helper.mul(im.quantity, im.unit_price, tp_decimal);
+                    im.tp = this.ctx.helper.mul(im.jl, im.unit_price, tp_decimal);
+                    im.contract_tp = this.ctx.helper.mul(im.contract_jl, im.unit_price, tp_decimal);
+                    im.qc_tp = this.ctx.helper.mul(im.pre_qc_jl, im.unit_price, tp_decimal);
+                    im.pre_tp = this.ctx.helper.mul(im.pre_jl, im.unit_price, tp_decimal);
+                    im.pre_contract_tp = this.ctx.helper.mul(im.pre_contract_jl, im.unit_price, tp_decimal);
+                    im.pre_qc_tp = this.ctx.helper.mul(im.pre_qc_jl, im.unit_price, tp_decimal);
+                    im.end_tp = this.ctx.helper.mul(im.end_jl, im.unit_price, tp_decimal);
+                    im.end_contract_tp = this.ctx.helper.mul(im.end_contract_jl, im.unit_price, tp_decimal);
+                    im.end_qc_tp = this.ctx.helper.mul(im.end_qc_jl, im.unit_price, tp_decimal);
                     im.calc_memo = '本期计量:' + im.jl + ' ' + im.unit;
                     this._checkCustomDetail(im);
                     this.ImData.push(im);
@@ -578,10 +605,13 @@ class StageIm {
                 const im = {
                     id: this.ImData.length + 1,
                     lid: node.id, code: p.b_code, name: p.name, unit: p.unit, unit_price: p.unit_price, pid: '',
-                    quantity: p.quantity,
+                    quantity: p.quantity, total_price: p.total_price,
                     jl: p.gather_qty, contract_jl: p.contract_qty, qc_jl: p.qc_qty,
                     pre_jl: p.pre_gather_qty, pre_contract_jl: p.pre_contract_qty, pre_qc_jl: p.pre_qc_qty,
                     end_jl: p.end_gather_qty, end_contract_jl: p.end_contract_qty, end_qc_jl: p.end_qc_qty,
+                    tp: p.gather_tp, contract_tp: p.contract_tp, qc_tp: p.qc_tp,
+                    pre_tp: p.pre_gather_tp, pre_contract_tp: p.pre_contract_tp, pre_qc_tp: p.pre_qc_tp,
+                    end_tp: p.end_gather_tp, end_contract_tp: p.end_contract_tp, end_qc_tp: p.end_qc_tp,
                     bw: bw,
                     peg: peg ? this._getPegStr(peg.name) : '',
                     xm: node.name,

+ 66 - 9
builder_report_index_define.js

@@ -305,6 +305,55 @@ const stage_pay = {
     ],
 };
 
+// 期 - 中间计量
+const stage_im_zl = {
+    Name: '期-中间计量-总量-数据(mem_stage_im_zl)',
+    remark: '',
+    id: 21,
+    key: 'mem_stage_im_zl',
+    prefix: '期-中间计量-总量',
+    cols: [
+        {name: '台账id', field: 'lid', type: dataType.str},
+        {name: '部位id', field: 'pid', type: dataType.str},
+        {name: '编号', field: 'code', type: dataType.str},
+        {name: '名称', field: 'name', type: dataType.str},
+        {name: '单位', field: 'unit', type: dataType.str},
+        {name: '单价', field: 'unit_price', type: dataType.currency},
+        {name: '本期数量', field: 'jl', type: dataType.currency},
+        {name: '本期合同数量', field: 'contract_jl', type: dataType.currency},
+        {name: '本期变更数量', field: 'qc_jl', type: dataType.currency},
+        {name: '桩号', field: 'peg', type: dataType.str},
+        {name: '图册号', field: 'drawing_code', type: dataType.str},
+        {name: '勾选标记 - 勿用', field: 'check', type: dataType.int},
+        {name: '部位', field: 'bw', type: dataType.str},
+        {name: '细目', field: 'xm', type: dataType.str},
+        {name: '凭证号', field: 'doc_code', type: dataType.str},
+        {name: '计算式说明', field: 'calc_memo', type: dataType.str},
+        {name: '草图', field: 'calc_img', type: dataType.str, isPic: true},
+        {name: '变更令号', field: 'bgl_code', type: dataType.str},
+        {name: '变更图号', field: 'bgl_drawing_code', type: dataType.str},
+        {name: '中间计量表号', field: 'im_code', type: dataType.str},
+        {name: '截止上期 - 本期数量', field: 'pre_jl', type: dataType.currency},
+        {name: '截止上期 - 本期合同数量', field: 'pre_contract_jl', type: dataType.currency},
+        {name: '截止上期 - 本期变更数量', field: 'pre_qc_jl', type: dataType.currency},
+        {name: '截止本期 - 本期数量', field: 'end_jl', type: dataType.currency},
+        {name: '截止本期 - 本期合同数量', field: 'end_contract_jl', type: dataType.currency},
+        {name: '截止本期 - 本期变更数量', field: 'end_qc_jl', type: dataType.currency},
+        {name: '本期金额', field: 'tp', type: dataType.currency},
+        {name: '本期合同金额', field: 'contract_tp', type: dataType.currency},
+        {name: '本期变更金额', field: 'qc_tp', type: dataType.currency},
+        {name: '截止上期 - 本期金额', field: 'pre_tp', type: dataType.currency},
+        {name: '截止上期 - 本期合同金额', field: 'pre_contract_tp', type: dataType.currency},
+        {name: '截止上期 - 本期变更金额', field: 'pre_qc_tp', type: dataType.currency},
+        {name: '截止本期 - 本期金额', field: 'end_tp', type: dataType.currency},
+        {name: '截止本期 - 本期合同金额', field: 'end_contract_tp', type: dataType.currency},
+        {name: '截止本期 - 本期变更金额', field: 'end_qc_tp', type: dataType.currency},
+        {name: '台账数量', field: 'quantity', type: dataType.currency},
+        {name: '台账金额', field: 'total_price', type: dataType.currency},
+
+    ]
+};
+
 const recursiveMkdirSync = async function (pathName) {
     if (!fs.existsSync(pathName)) {
         const upperPath = path.dirname(pathName);
@@ -322,23 +371,23 @@ const saveBufferFile = async function (buffer, fileName) {
     }
     await fs.writeFileSync(fileName, buffer);
 };
-const addFields = function(table, name, field, type, tag) {
+const addFields = function(table, col) {
     const data = {};
     data.ID = table.ID * 100 + table.items.length + 1;
-    data.Name = name + '(' + field + ')';
+    data.Name = col.name + '(' + col.field + ')';
     if (table.prefix && table.prefix !== '') data.Name = table.prefix + '-' + data.Name;
-    data.DataType = type;
+    data.DataType = col.type;
     data.TableName = table.key;
     data.descr = '';
-    data.mapExpression = "$PROJECT.REPORT.getProperty('" + table.key + "', '" + field + "')";
-    if (tag) {
+    data.mapExpression = "$PROJECT.REPORT.getProperty('" + table.key + "', '" + col.field + "')";
+    if (col.tag) {
         switch (tag.type) {
             case 'up':
                 data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.up')" };
                 break;
             case 'tp':
-                if (tag.subType) {
-                    data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal." + "_" + tag.subType + "_tp')" };
+                if (col.tag.subType) {
+                    data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal." + "_" + col.tag.subType + "_tp')" };
                 } else {
                     data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.tp')" };
                 }
@@ -348,6 +397,9 @@ const addFields = function(table, name, field, type, tag) {
                 break;
         }
     }
+    if (col.isPic) {
+        data.isPic = true;
+    }
     table.items.push(data);
 };
 const saveTableDefine = async function (tableDefine, file) {
@@ -386,12 +438,17 @@ const exportTableDefine = async function (define) {
     tableDefine.items = [];
     tableDefine.prefix = define.prefix;
     for (const col of define.cols) {
-        addFields(tableDefine, col.name, col.field, col.type, col.tag);
+        addFields(tableDefine, col);
     }
     await saveTableDefine(tableDefine, path.join(savePath, define.key + '_define.json'));
 };
 
-const defines = [stage_jgcl, stage_bonus, stage_other, change, change_bills, stage_pos, stage_pos_compare, stage_pay];
+const defines = [stage_jgcl, stage_bonus, stage_other,
+    change, change_bills,
+    stage_pos, stage_pos_compare,
+    stage_pay,
+    stage_im_zl
+];
 for (const d of defines) {
     exportTableDefine(d);
 }