Explorar el Código

台账分解,复制整块问题

MaiXinRong hace 5 años
padre
commit
47217d6743

+ 7 - 10
app/base/base_tree_service.js

@@ -1030,13 +1030,16 @@ class TreeService extends Service {
      * @param {Array} block - 复制节点Id
      * @return {Object} - 提价后的数据(其中新增粘贴数据,只返回第一层)
      */
-    async pasteBlock(mid, kid, block) {
+    async pasteBlock(mid, kid, paste) {
         if ((mid <= 0) || (kid <= 0)) return [];
 
+        console.log(mid);
+        console.log(kid);
+        console.log(paste);
         const selectData = await this.getDataByKid(mid, kid);
         if (!selectData) throw '数据错误';
 
-        const copyNodes = await this.getDataByNodeIds(mid, block);
+        const copyNodes = await this.getDataByNodeIds(paste.tid, paste.block);
         if (!copyNodes || copyNodes.length <= 0)  throw '复制数据错误';
         for (const node of copyNodes) {
             if (node[this.setting.pid] !== copyNodes[0][this.setting.pid]) throw '复制数据错误:仅可操作同层节点';
@@ -1048,7 +1051,7 @@ class TreeService extends Service {
         this.transaction = await this.db.beginTransaction();
         try {
             // 选中节点的所有后兄弟节点,order+粘贴节点个数
-            await this._updateSelectNextsOrder(selectData, copyNodes.length);
+            await this._updateChildrenOrder(mid, selectData[this.setting.pid], selectData[this.setting.order], copyNodes.length);
             for (let iNode = 0; iNode < copyNodes.length; iNode++) {
                 const node = copyNodes[iNode];
                 let datas = await this.getDataByFullPath(mid, node[this.setting.fullPath] + '%');
@@ -1102,13 +1105,7 @@ class TreeService extends Service {
         }
 
         // 查询应返回的结果
-        const createData = await this.getDataByIds(newIds);
-        const updateData = await this.getNextsData(selectData[this.setting.mid], selectData[this.setting.pid], selectData[this.setting.order] + copyNodes.length);
-        //const posData = await this.ctx.service.pos.getPosData({ lid: newIds });
-        return {
-            ledger: { create: createData, update: updateData },
-            //pos: posData,
-        };
+        return await this.getPasteBlockResult(selectData, copyNodes);
     }
 
 }

+ 1 - 1
app/controller/ledger_controller.js

@@ -222,7 +222,7 @@ module.exports = app => {
             if ((isNaN(data.id) || data.id <= 0) ||
                 (!data.tid && data.tid <= 0) ||
                 (!data.block || data.block.length <= 0)) throw '参数错误';
-            return await ctx.service.ledger.pasteBlock(data.tid, data.id, data.block);
+            return await ctx.service.ledger.pasteBlock(ctx.tender.id, data.id, {tid: data.tid, block: data.block});
         }
         /**
          * 从标准项目表添加数据

+ 1 - 1
app/controller/revise_controller.js

@@ -432,7 +432,7 @@ module.exports = app => {
             if ((isNaN(data.id) || data.id <= 0) ||
                 (!data.tid && data.tid <= 0) ||
                 (!data.block || data.block.length <= 0)) throw '参数错误';
-            return await this.ctx.service.revise.pasteBlock(data.tid, data.id, data.block);
+            return await this.ctx.service.revise.pasteBlock(ctx.tender.id, data.id, {tid: data.tid, block: data.block});
         }
         async _addStd(revise, data) {
             if ((isNaN(data.id) || data.id <= 0) || !data.stdType || !data.stdNode) throw '参数错误';

+ 4 - 4
app/service/ledger.js

@@ -300,7 +300,7 @@ module.exports = app => {
          * @param {Array} block - 复制节点Id
          * @return {Object} - 提价后的数据(其中新增粘贴数据,只返回第一层)
          */
-        async pasteBlock(tenderId, selectId, block) {
+        async pasteBlock(tenderId, selectId, paste) {
             if ((tenderId <= 0) || (selectId <= 0)) {
                 return [];
             }
@@ -310,7 +310,7 @@ module.exports = app => {
             }
             const newParentPath = selectData.full_path.replace(selectData.ledger_id, '');
 
-            const copyNodes = await this.getDataByNodeIds(tenderId, block);
+            const copyNodes = await this.getDataByNodeIds(paste.tid, paste.block);
             if (!copyNodes || copyNodes.length <= 0) {
                 throw '复制数据错误';
             }
@@ -330,11 +330,11 @@ module.exports = app => {
             this.transaction = await this.db.beginTransaction();
             try {
                 // 选中节点的所有后兄弟节点,order+粘贴节点个数
-                await this._updateChildrenOrder(tenderId, selectData.ledger_pid, selectData.order + 1);
+                await this._updateChildrenOrder(tenderId, selectData.ledger_pid, selectData.order + 1, copyNodes.length);
                 // 数据库创建新增节点数据
                 for (let iNode = 0; iNode < copyNodes.length; iNode++) {
                     const node = copyNodes[iNode];
-                    let datas = await this.getDataByFullPath(tenderId, node.full_path + '%');
+                    let datas = await this.getDataByFullPath(paste.tid, node.full_path + '%');
                     datas = this._.sortBy(datas, 'level');
 
                     const maxId = await this._getMaxLid(this.ctx.tender.id);

+ 9 - 7
test/app/service/report.test.js

@@ -11,6 +11,7 @@
 const { app, assert } = require('egg-mock/bootstrap');
 const mockData = {};
 const path = require('path');
+const reportDataAnalysis = require('../../../app/lib/rpt_data_analysis');
 
 describe('test/app/service/report_memory.test.js', () => {
     // 准备测试数据
@@ -23,8 +24,8 @@ describe('test/app/service/report_memory.test.js', () => {
         //     project_password: 'mai654321',
         // };
         const postData = {
-            account: 'liangqibo',
-            project: 'P1116',
+            account: 'fuqingqing',
+            project: 'P0505',
             project_password: '123456',
         };
         ctx.session = {};
@@ -37,16 +38,17 @@ describe('test/app/service/report_memory.test.js', () => {
         const ctx = app.mockContext(mockData);
 
         // test12 - 第6期
-        const stage = yield ctx.service.stage.getDataByCondition({tid: 2076, order: 2});
+        //const stage = yield ctx.service.stage.getDataByCondition({tid: 2076, order: 2});
         const params = {
-            tender_id: stage.tid,
-            stage_id: stage.id,
+            tender_id: 1977
         };
-        const filters = ['mem_stage_bills'];
+        const filters = ['change', 'mem_change_bills'];
         const fields = {
-            mem_stage_bills: ['end_qc_tp']
+            change: [],
+            mem_stage_bills: [],
         };
         const result = yield ctx.service.report.getReportData(params, filters, fields);
+        reportDataAnalysis.analysisObj.changeSort.fun(ctx, result, [], {change: "change", changeBills: 'mem_change_bills'});
         const savePath = path.join(ctx.app.baseDir, 'report_temp');
         yield ctx.helper.recursiveMkdirSync(savePath);
         for (const table in result) {