Переглянути джерело

变更令,台账数据查询&传输优化

MaiXinRong 1 місяць тому
батько
коміт
0d4096cb7d
2 змінених файлів з 47 додано та 7 видалено
  1. 45 5
      app/controller/change_controller.js
  2. 2 2
      app/service/change_pos.js

+ 45 - 5
app/controller/change_controller.js

@@ -931,17 +931,49 @@ module.exports = app => {
             }
         }
 
+        async _getLedgerColumn() {
+            const tender = this.ctx.tender;
+            const ledgerColumn = [
+                'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
+                'code', 'b_code', 'name', 'unit', 'unit_price', 'quantity', 'total_price',
+                'sgfh_qty', 'sgfh_expr', 'sgfh_tp', 'memo', 'features', 'drawing_code', 'node_type', 'ex_qty1', 'ex_tp1', 'ccid'];
+            if (tender.info.display.ledger.deal) ledgerColumn.push('deal_qty', 'deal_tp');
+            if (tender.info.display.ledger.dgnQty) ledgerColumn.push('dgn_qty1', 'dgn_qty2');
+            if (tender.info.display.ledger.clQty) ledgerColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr', 'sjcl_tp', 'qtcl_tp');
+            const posColumn = ['id', 'tid', 'lid', 'name', 'position', 'porder', 'sgfh_qty', 'sgfh_expr', 'add_stage_order', 'drawing_code', 'quantity', 'ex_qty1', 'ccid'];
+            if (tender.info.display.ledger.clQty) posColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr');
+
+            const extraFields = await spreadSetting.getExtraFields(this.ctx, tender.id);
+            if (extraFields.length > 0) {
+                ledgerColumn.push(...extraFields);
+                posColumn.push(...extraFields);
+            }
+
+            return [ledgerColumn, posColumn];
+        }
+
         async defaultBills(ctx) {
             try {
+                const filterField = true;
+                const [ledgerColumn, posColumn] = await this._getLedgerColumn();
                 // 判断是否台账修订中,修订中则不获取changeLedger及changePos值
                 const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
                 const data = JSON.parse(ctx.request.body.data);
                 const readySettle = await ctx.service.settle.getReadySettle(ctx.tender.id);
                 if (data.from === 'revise') await ctx.service.change.checkSettleUpdate(ctx.tender.id, readySettle);
-                const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
-                const changeLedgerData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changeLedger.getData(ctx.tender.id);
-                const posData = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
-                const changePosData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
+
+                const ledgerData = await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
+                ledgerColumn.push('formc');
+                const changeLedgerData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changeLedger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id} });
+                const posData = await ctx.service.pos.getPosData({tid: ctx.tender.id}, posColumn);
+                posColumn.push('formc');
+                const changePosData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changePos.getPosData({ tid: ctx.tender.id }, posColumn);
+
+                // const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
+                // const changeLedgerData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changeLedger.getData(ctx.tender.id);
+                // const posData = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
+                // const changePosData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
+
                 const dealBills = await ctx.service.dealBills.getAllDataByCondition({ where: { tender_id: ctx.tender.id } });
                 // const settleStatus = ctx.service.settle.settleStatus;
                 const settleBills = readySettle ? await this.ctx.service.settleBills.getAllDataByCondition({ where: { settle_id: readySettle.id } }) : [];
@@ -1003,7 +1035,15 @@ module.exports = app => {
                     bodyData.changeLedgerList = changeLedgerData;
                     bodyData.changePosList = changePosData;
                 }
-                ctx.body = { err: 0, msg: '', data: bodyData };
+                // hpack压缩数据
+                const hpack = true;
+                if (hpack) {
+                    bodyData.bills = this.ctx.helper.hpackArr(bodyData.bills);
+                    bodyData.pos = this.ctx.helper.hpackArr(bodyData.pos);
+                    ctx.body = { err: 0, msg: '', data: bodyData, hpack: ['bills', 'pos'] };
+                } else {
+                    ctx.body = { err: 0, msg: '', data: bodyData };
+                }
             } catch (err) {
                 console.log(err);
                 this.log(err);

+ 2 - 2
app/service/change_pos.js

@@ -23,11 +23,11 @@ module.exports = app => {
             this.tableName = 'change_pos';
         }
 
-        async getPosData(condition) {
+        async getPosData(condition, columns) {
             if (!condition.tid) throw '查询计量单元缺少必要信息';
             return await this.db.select(this.tableName, {
                 where: condition,
-                columns: ['id', 'tid', 'lid', 'name', 'quantity', 'position', 'drawing_code', 'sgfh_qty', 'sjcl_qty',
+                columns: columns || ['id', 'tid', 'lid', 'name', 'quantity', 'position', 'drawing_code', 'sgfh_qty', 'sjcl_qty',
                     'qtcl_qty', 'in_time', 'porder', 'add_stage', 'sgfh_expr', 'sjcl_expr', 'qtcl_expr', 'real_qty',
                     'dagl_status', 'dagl_url', 'gxby_status', 'gxby_limit', 'dagl_limit', 'dagl_status',
                     'ex_memo1', 'ex_memo2', 'ex_memo3', 'ccid', 'formc', 'ex_qty1'],