Quellcode durchsuchen

工料机调价在多表导出有数据重复处理问题

TonyKang vor 5 Jahren
Ursprung
Commit
9af5b34736
1 geänderte Dateien mit 20 neuen und 9 gelöschten Zeilen
  1. 20 9
      modules/reports/controllers/rpt_controller.js

+ 20 - 9
modules/reports/controllers/rpt_controller.js

@@ -360,19 +360,25 @@ function getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, cus
                     let savedBillsData = [], savedRationData = [], savedGljData = [], savedPrjGljData = [], savedFeeRateData = [];
                     for (let dtlData of rawDataObj.prjData) {
                         if (dtlData.moduleName === 'bills') {
-                            Object.assign(savedBillsData, dtlData.data);
+                            // Object.assign(savedBillsData, dtlData.data);
+                            savedBillsData = JSON.stringify(dtlData.data);
                         } else if (dtlData.moduleName === 'ration') {
-                            Object.assign(savedRationData, dtlData.data);
+                            // Object.assign(savedRationData, dtlData.data);
+                            savedRationData = JSON.stringify(dtlData.data);
                         } else if (dtlData.moduleName === 'ration_glj') {
-                            Object.assign(savedGljData, dtlData.data);
+                            // Object.assign(savedGljData, dtlData.data);
+                            savedGljData = JSON.stringify(dtlData.data);
                         } else if (dtlData.moduleName === 'feeRate') {
                             Object.assign(savedFeeRateData, dtlData.data._doc.rates);
                         } else if (dtlData.moduleName === 'projectGLJ') {
-                            Object.assign(savedPrjGljData, dtlData.data.gljList);
+                            // Object.assign(savedPrjGljData, dtlData.data.gljList);
+                            savedPrjGljData = JSON.stringify(dtlData.data.gljList);
                         }
+                        // 备注:经测试,feeRate目前只能用assign方式来保存,用JSON方式会报错
                     }
                     //2. 一个一个模板创建数据
                     for (let tplIdx = 0; tplIdx < rptTpls.length; tplIdx++) {
+                        console.log('tplIdx: ' + tplIdx);
                         let rptTpl = (rptTpls[tplIdx]._doc)?rptTpls[tplIdx]._doc:rptTpls[tplIdx];
                         rptDataUtil.initialize(rptTpl);
                         let tplData = rptDataUtil.assembleData(rawDataObj);
@@ -398,22 +404,27 @@ function getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, cus
                         //注意:这里需要把清单、定额、工料机数据assign回去!!!
                         for (let dtlData of rawDataObj.prjData) {
                             if (dtlData.moduleName === 'bills' && savedBillsData.length > 0) {
-                                Object.assign(dtlData.data, savedBillsData);
+                                // Object.assign(dtlData.data, savedBillsData);
+                                dtlData.data = JSON.parse(savedBillsData);
                             } else if (dtlData.moduleName === 'ration' && savedRationData.length > 0) {
-                                Object.assign(dtlData.data, savedRationData);
+                                // Object.assign(dtlData.data, savedRationData);
+                                dtlData.data = JSON.parse(savedRationData);
                             } else if (dtlData.moduleName === 'ration_glj' && savedGljData.length > 0) {
-                                Object.assign(dtlData.data, savedGljData);
+                                // Object.assign(dtlData.data, savedGljData);
+                                dtlData.data = JSON.parse(savedGljData);
                             } else if (dtlData.moduleName === 'feeRate' && savedFeeRateData.length > 0) {
                                 Object.assign(dtlData.data._doc.rates, savedFeeRateData);
+                                // 备注:经测试,feeRate目前只能用assign方式来回滚,用JSON方式会报错
                             } else if (dtlData.moduleName === 'projectGLJ' && savedPrjGljData.length > 0) {
-                                Object.assign(dtlData.data.gljList, savedPrjGljData);
+                                // Object.assign(dtlData.data.gljList, savedPrjGljData);
+                                dtlData.data.gljList = JSON.parse(savedPrjGljData);
                             }
                         }
                     }
                     cb(null, rptPageRstArray);
                 } catch (ex) {
                     console.log("报表数据异常(getMultiRptsCommon): userId " + user_id + ", project id: " + prj_id);
-                    console.log(ex);
+                    console.log(ex.toString());
                     cb('Exception occurs while on going...', null);
                 } finally {
                 }