소스 검색

报表,新增指标、修改指标值

MaiXinRong 3 주 전
부모
커밋
7242640a7a
4개의 변경된 파일68개의 추가작업 그리고 8개의 파일을 삭제
  1. 1 1
      app/public/js/spss_gather_stage_info.js
  2. 16 0
      app/service/change_audit_list.js
  3. 31 1
      app/service/report_memory.js
  4. 20 6
      app/service/rpt_gather_memory.js

+ 1 - 1
app/public/js/spss_gather_stage_info.js

@@ -92,7 +92,7 @@ $(document).ready(() => {
                 node.end_sf_tp = tender.info.end_sf_tp;
                 node.df_tp = ZhCalc.sub(node.end_yf_tp, node.end_sf_tp);
             }, categoryLevel, true);
-            infoTree.setting.calcFields = ['total_price', 'contract_price', 'contract_tp', 'qc_tp', 'gather_tp', 'end_contract_tp', 'end_qc_tp', 'end_gather_tp', 'yf_tp', 'end_yf_tp', 'sf_tp', 'end_sf_tp'];
+            infoTree.setting.calcFields = ['total_price', 'contract_price', 'contract_tp', 'qc_tp', 'gather_tp', 'end_contract_tp', 'end_qc_tp', 'end_gather_tp', 'yf_tp', 'end_yf_tp', 'sf_tp', 'end_sf_tp', 'df_tp'];
             treeCalc.calculateAll(infoTree);
         },
         refreshInfoTree: function(categoryLevel) {

+ 16 - 0
app/service/change_audit_list.js

@@ -1213,6 +1213,22 @@ module.exports = app => {
             return await this.db.query(sql, [tid, audit.flow.status.checked, tid, audit.flow.status.checked]);
         }
 
+        async getSelfBillsSum(tid) {
+            const sql = 'SELECT code, name, unit, unit_price, Sum(qc_qty) AS qc_qty, Sum(qc_tp) AS qc_tp, Sum(qc_minus_qty) AS qc_minus_qty, Sum(qc_minus_tp) AS qc_minus_tp' +
+                '  FROM(' +
+                '    SELECT cal.code, cal.name, cal.unit, cal.unit_price, Sum(cal.checked_amount) AS qc_qty, Sum(cal.checked_price) AS qc_tp, 0 As qc_minus_qty, 0 As qc_minus_tp' +
+                `      FROM ${this.tableName} cal LEFT JOIN ${this.ctx.service.change.tableName} c ON cal.cid = c.cid` +
+                '      WHERE c.tid = ? AND c.valid AND c.status = ? AND cal.is_valuation and cal.gcl_id = ""' +
+                '      GROUP BY cal.code, cal.name, cal.unit, cal.unit_price' +
+                '    UNION ALL ' +
+                '    SELECT cal.code, cal.name, cal.unit, cal.unit_price, 0 As qc_qty, 0 As qc_tp, Sum(cal.checked_amount) AS qc_minus_qty, Sum(cal.checked_price) AS qc_minus_tp' +
+                `      FROM ${this.tableName} cal LEFT JOIN ${this.ctx.service.change.tableName} c ON cal.cid = c.cid` +
+                '      WHERE c.tid = ? AND c.valid AND c.status = ? AND not cal.is_valuation and cal.gcl_id = ""' +
+                '      GROUP BY cal.code, cal.name, cal.unit, cal.unit_price) As TEMP' +
+                '  GROUP BY code, name, unit, unit_price';
+            return await this.db.query(sql, [tid, audit.flow.status.checked, tid, audit.flow.status.checked]);
+        }
+
         async getPosSum(tid) {
             const sql = 'SELECT mx_id, Sum(qc_qty) AS qc_qty, Sum(qc_minus_qty) AS qc_minus_qty' +
                 '  FROM(' +

+ 31 - 1
app/service/report_memory.js

@@ -117,7 +117,7 @@ module.exports = app => {
                     'pre_contract_tp', 'pre_qc_tp', 'pre_gather_tp', 'final_1_tp',
                     'end_contract_pc_tp', 'end_qc_pc_tp', 'end_pc_tp',
                     'year_contract_tp', 'year_qc_tp', 'year_contract_pc_tp', 'year_qc_pc_tp', 'year_pc_tp', 'year_gather_tp',
-                    'due_qc_tp', 'due_final_tp',
+                    'due_qc_tp', 'due_final_tp', 'tz_qc_tp',
                 ],
                 calc: function (node, helper, decimal) {
                     if (node.children && node.children.length === 0) {
@@ -585,6 +585,17 @@ module.exports = app => {
                     { data: yearStage, fields: ['contract_qty', 'contract_tp', 'qc_qty', 'qc_tp', 'qc_minus_qty', 'contract_pc_tp', 'qc_pc_tp', 'pc_tp', 'gather_qty', 'gather_tp'], prefix: 'year_', relaId: 'lid' },
                     { data: changeData, fields: ['qc_qty', 'qc_tp', 'qc_minus_qty'], prefix: 'due_', relaId: 'gcl_id' },
                 ]);
+                if (this._checkFieldsExistReg(fields, 'due_')) {
+                    const selfChangeData = await this.ctx.service.changeAuditList.getSelfBillsSum(this.ctx.tender.id);
+                    for (const scd of selfChangeData) {
+                        const rb = billsData.find(x => { return x.b_code === scd.code && x.name === scd.name && x.unit === scd.unit && x.unit_price === scd.unit_price; });
+                        if (rb) {
+                            rb.due_qc_qty = this.ctx.helper.add(rb.due_qc_qty, scd.qc_qty);
+                            rb.due_qc_tp = this.ctx.helper.add(rb.due_qc_tp, scd.qc_tp);
+                            rb.due_qc_minus_qty = this.ctx.helper.add(rb.due_qc_minus_qty, scd.qc_minus_qty);
+                        }
+                    }
+                }
                 billsData.forEach(x => {
                     if (x.org_price_his && x.org_price_his.length > 0) {
                         for (const prop of x.org_price_his) {
@@ -597,6 +608,9 @@ module.exports = app => {
 
                 const billsTree = this._getNewBillsTree();
                 billsTree.loadDatas(billsData);
+                const tenderInfo = await this.ctx.service.tenderInfo.getTenderInfo(tender.id);
+                const reCalcChange = await this.ctx.service.change.getReCalcChangeData(tender.id, tenderInfo);
+                Ledger.treeUtils.loadChangeData(billsTree, null, reCalcChange, tenderInfo, this.ctx.helper);
                 billsTree.calculateAll();
 
                 if (this._checkFieldsExist(fields, billsFields.bgl)) {
@@ -666,6 +680,22 @@ module.exports = app => {
                     {data: prePosStage, fields: ['contract_qty', 'qc_qty', 'qc_minus_qty'], prefix: 'pre_', relaId: 'pid'},
                     {data: changeData, fields: ['qc_qty', 'qc_minus_qty'], prefix: 'due_', relaId: 'mx_id'},
                 ]);
+                if (this._checkFieldsExistReg(fields, 'due_')) {
+                    const selfChangeData = await this.ctx.service.changeAuditList.getSelfBillsSum(this.ctx.tender.id);
+                    const billsData = this.ctx.stage.ledgerHis
+                        ? await this.ctx.helper.loadLedgerDataFromOss(this.ctx.stage.ledgerHis.bills_file)
+                        : await this.ctx.service.ledger.getData(this.ctx.tender.id);
+                    for (const scd of selfChangeData) {
+                        const rb = billsData.find(x => { return x.b_code === scd.code && x.name === scd.name && x.unit === scd.unit && x.unit_price === scd.unit_price; });
+                        if (rb) {
+                            const rp = posData.find(x => { return x.lid === rb.id; });
+                            if (rp) {
+                                rp.due_qc_qty = this.ctx.helper.add(rp.due_qc_qty, scd.qc_qty);
+                                rp.due_qc_minus_qty = this.ctx.helper.add(rp.due_qc_minus_qty, scd.qc_minus_qty);
+                            }
+                        }
+                    }
+                }
                 this.pos.loadDatas(posData);
                 this.pos.calculateAll();
 

+ 20 - 6
app/service/rpt_gather_memory.js

@@ -611,10 +611,10 @@ module.exports = app => {
             });
             const billsData = await this.ctx.service.ledger.getData(tender.id);
             const dgnData = await this.ctx.service.stageBillsDgn.getDgnData(tender.id);
-            // const changeBillsData = await this.ctx.service.changeAuditList.getBillsSum(tender.id);
+            const changeBillsData = await this.ctx.service.changeAuditList.getBillsSum(tender.id);
             this.ctx.helper.assignRelaData(billsData, [
                 { data: dgnData, fields: ['deal_dgn_qty1', 'deal_dgn_qty2', 'c_dgn_qty1', 'c_dgn_qty2'], prefix: '', relaId: 'id' },
-                // { data: changeBillsData, fields: ['qc_qty', 'qc_tp', 'qc_minus_qty'], prefix: 'due_', relaId: 'gcl_id' },
+                { data: changeBillsData, fields: ['qc_qty', 'qc_tp', 'qc_minus_qty'], prefix: 'due_', relaId: 'gcl_id' },
             ]);
             const pos = new Ledger.pos({
                 id: 'id', ledgerId: 'lid',
@@ -628,10 +628,24 @@ module.exports = app => {
                 },
             });
             const posData = await this.ctx.service.pos.getPosData({ tid: tender.id });
-            // const changePosData = await this.ctx.service.changeAuditList.getPosSum(tender.id);
-            // this.ctx.helper.assignRelaData(posData, [
-            //     { data: changePosData, fields: ['qc_qty', 'qc_minus_qty'], prefix: 'due_', relaId: 'mx_id' },
-            // ]);
+            const changePosData = await this.ctx.service.changeAuditList.getPosSum(tender.id);
+            this.ctx.helper.assignRelaData(posData, [
+                { data: changePosData, fields: ['qc_qty', 'qc_minus_qty'], prefix: 'due_', relaId: 'mx_id' },
+            ]);
+            const selfChangeData = await this.ctx.service.changeAuditList.getSelfBillsSum(tender.id);
+            for (const scd of selfChangeData) {
+                const rb = billsData.find(x => { return x.b_code === scd.code && x.name === scd.name && x.unit === scd.unit && x.unit_price === scd.unit_price; });
+                if (rb) {
+                    rb.due_qc_qty = this.ctx.helper.add(rb.due_qc_qty, scd.qc_qty);
+                    rb.due_qc_tp = this.ctx.helper.add(rb.due_qc_tp, scd.qc_tp);
+                    rb.due_qc_minus_qty = this.ctx.helper.add(rb.due_qc_minus_qty, scd.qc_minus_qty);
+                    const rp = posData.find(x => { return x.lid === rb.id; });
+                    if (rp) {
+                        rp.due_qc_qty = this.ctx.helper.add(rp.due_qc_qty, scd.qc_qty);
+                        rp.due_qc_minus_qty = this.ctx.helper.add(rp.due_qc_minus_qty, scd.qc_minus_qty);
+                    }
+                }
+            }
             if (stage) {
                 await this.ctx.service.stage.doCheckStage(stage);
                 const curStage = stage.readOnly