فهرست منبع

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

MaiXinRong 3 سال پیش
والد
کامیت
39b0d056b6
4فایلهای تغییر یافته به همراه103 افزوده شده و 39 حذف شده
  1. 77 19
      app/controller/report_controller.js
  2. 3 1
      app/view/report/index.ejs
  3. 15 13
      app/view/report/index_sign.ejs
  4. 8 6
      app/view/tender/detail.ejs

+ 77 - 19
app/controller/report_controller.js

@@ -529,7 +529,7 @@ module.exports = app => {
 
             const roleRelArr = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id)) : [];
             // const roleRel = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_tpl_id)) : [];
-            const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, this.app.baseDir);
+            const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, baseDir);
             // console.log('params.stage_status: ' + params.stage_status);
             // fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/testBuiltPageResult.js');
             for (const pageRst of pageRstArr) {
@@ -543,11 +543,11 @@ module.exports = app => {
                 // 加水印(注意:还得看用户设置是否需要加水印)
                 fillWaterMark(pageRstArr);
                 if (params.needWaterMark) {
-                    waterMarkStr = await getWatermarkPicData(pageRstArr[0], this.app.baseDir);
+                    waterMarkStr = await getWatermarkPicData(pageRstArr[0], baseDir);
                 }
             }
 
-            await this.ctx.helper.recursiveMkdirSync(this.app.baseDir + '/app/public/download');
+            await this.ctx.helper.recursiveMkdirSync(baseDir + '/app/public/download');
 
             const runnableRst = [];
             /*
@@ -568,13 +568,9 @@ module.exports = app => {
                 runnableRst.push(getExcelByPageData(pageRstArr[idx], params.rpt_names[idx], roleRel));
             }
             /*/
-            for (let pageRst of pageRstArr) {
-                // _chkIfNeedBreakPage(pageRst);
-            }
-            const pageBrkAmt = 300;
-            const newRptNames = []; // 这个为导出PDF控制分页用
-            const newPageDataRst = _resetPageDataByBreaks(pageRstArr, pageBrkAmt, params.rpt_names, newRptNames);
-            for (let idx = 0; idx < newPageDataRst.length; idx++) {
+            // 1. merge签名相关信息
+            const pageBrkSize = 6291456; // 6M, 1024*1024*6
+            for (let idx = 0; idx < pageRstArr.length; idx++) {
                 let roleRel = null;
                 for (const roleR of roleRelArr) {
                     if (roleR.rpt_id === params.rpt_ids[idx]) {
@@ -583,10 +579,32 @@ module.exports = app => {
                     }
                 }
                 if (params.stage_status === 3) {
-                    mergeSignAudit(newPageDataRst[idx], roleRel, stgAudit);
-                    mergeSignDate(newPageDataRst[idx], params.stage_id, roleRel, stgAudit, stgAuditForOrg, stageList);
+                    mergeSignAudit(pageRstArr[idx], roleRel, stgAudit);
+                    mergeSignDate(pageRstArr[idx], params.stage_id, roleRel, stgAudit, stgAuditForOrg, stageList);
+                }
+
+                // 2. 判断草图大小是否需要分页
+                const picSize = await _chkRawPicSize(pageRstArr[idx], baseDir);
+                if (picSize > pageBrkSize) {
+                    // let pageBrkAmt = Math.ceil(picSize / pageBrkSize);
+                    let pageBrkAmt = Math.floor(pageRstArr[idx].items.length / Math.ceil(picSize / pageBrkSize));
+                    if (pageBrkAmt < 10) {
+                        // 不用管
+                    } else if (pageBrkAmt < 100) {
+                        pageBrkAmt = Math.floor(pageBrkAmt / 10) * 10;
+                    } else if (pageBrkAmt < 1000) {
+                        pageBrkAmt = Math.floor(pageBrkAmt / 100) * 100;
+                    } else {
+                        // 暂时不管
+                    }
+                    const newRptNames = []; // 这个为导出控制分页用
+                    const newPageDataRst = _resetPageDataByBreaks([pageRstArr[idx]], pageBrkAmt, [params.rpt_names[idx]], newRptNames);
+                    for (let dtlIdx = 0; dtlIdx < newPageDataRst.length; dtlIdx++) {
+                        runnableRst.push(getExcelByPageData(newPageDataRst[dtlIdx], newRptNames[dtlIdx], roleRel));
+                    }
+                } else {
+                    runnableRst.push(getExcelByPageData(pageRstArr[idx], params.rpt_names[idx], null));
                 }
-                runnableRst.push(getExcelByPageData(newPageDataRst[idx], newRptNames[idx], roleRel));
             }
             // */
             // fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/计量导出pageArr.js');
@@ -610,7 +628,32 @@ module.exports = app => {
             }
             const pageRst = JSON.parse(fs.readFileSync('D:/GitHome/temp/计量excel原始数据_A3BZ6_5384_112表(清单).js', 'utf-8'));
             const runnableRst = [];
-            runnableRst.push(getExcelByPageData(pageRst, '工程计量表(计量单元-清单)', null));
+
+            const pageBrkSize = 6291456; // 6M, 1024*1024*6
+            // const pageBrkSize = 1048576; // 1M, 1024*1024*1
+            const picSize = await _chkRawPicSize(pageRst, baseDir);
+            if (picSize > pageBrkSize) {
+                let pageBrkAmt = Math.floor(pageRst.items.length / Math.ceil(picSize / pageBrkSize));
+                console.log('pageBrkAmt:' + pageBrkAmt);
+                if (pageBrkAmt < 10) {
+                    // 不用管
+                } else if (pageBrkAmt < 100) {
+                    pageBrkAmt = Math.floor(pageBrkAmt / 10) * 10;
+                } else if (pageBrkAmt < 1000) {
+                    pageBrkAmt = Math.floor(pageBrkAmt / 100) * 100;
+                } else {
+                    // 暂时不管
+                }
+                const newRptNames = []; // 这个为导出控制分页用
+                const newPageDataRst = _resetPageDataByBreaks([pageRst], pageBrkAmt, ['工程计量表(计量单元-清单)'], newRptNames);
+                for (let dtlIdx = 0; dtlIdx < newPageDataRst.length; dtlIdx++) {
+                    runnableRst.push(getExcelByPageData(newPageDataRst[dtlIdx], newRptNames[dtlIdx], null));
+                }
+            } else {
+                runnableRst.push(getExcelByPageData(pageRst, '工程计量表(计量单元-清单)', null));
+            }
+
+
             const uuidRst = await Promise.all(runnableRst);
             ctx.body = { data: uuidRst, waterMarkStr: null };
             ctx.status = 201;
@@ -1424,21 +1467,36 @@ function _getSignDateDftName() {
     return '    年  月  日';
 }
 
-function _chkIfNeedBreakPage(pageData) {
-    let rst = -1, hasPic = false, picSize = 0;
+async function _chkRawPicSize(pageData, baseDir) {
+    let rst = 0;
     const picKeys = [];
-    // fs.statSync(`${filesPath}${file}`).size
     for (let pi = 0; pi < pageData.items.length; pi++) {
         // 每页判断
         for (let ci = 0; ci < pageData.items[pi][JV.PROP_SIGNATURE_CELLS].length; ci++) {
             const picPath = pageData.items[pi][JV.PROP_SIGNATURE_CELLS][ci].path;
-            if (picPath && picPath.indexOf('/sign') < 0 && picKeys.indexOf(picPath) < 0) {
+            // if (picPath && picPath.indexOf('/sign') < 0 && picKeys.indexOf(picPath) < 0) {
+            if (picPath && picKeys.indexOf(picPath) < 0) {
+                // 签名图片也要计算在内,反正不重复
                 picKeys.push(picPath);
-                hasPic = true;
             }
             // signature_cells PROP_SIGNATURE_CELLS
         }
     }
+    for (const pKey of picKeys) {
+        const filePath = `${baseDir}/app${pKey}`;
+        const isExist = await isFileExisted(filePath);
+        if (isExist) {
+            const obj = fs.statSync(filePath);
+            if (obj) {
+                rst += obj.size;
+            } else {
+                console.log('no statSync resutl: ' + filePath);
+            }
+            // rst += fs.statSync(filePath).size;
+        } else {
+            console.log(`${pKey} not exists!`);
+        }
+    }
     return rst;
 }
 

+ 3 - 1
app/view/report/index.ejs

@@ -56,7 +56,7 @@
                             <div class="panel">
                                 <div class="panel-body" id="export_div">
                                     <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
-                                        <button type="button" class="btn btn-outline-primary btn-sm" onclick="rptControlObj.checkAndGetExcel()" <% if (pageShow !== null && parseInt(pageShow.closeExportExcel) === 1) { %> disabled <% } %> ><i class="fa fa-file-excel-o"></i> Excel <span class="badge badge-secondary">0</span></button>
+                                        <button type="button" class="btn btn-outline-primary btn-sm" onclick="rptControlObj.checkAndGetExcel()" <% if (pageShow !== null && parseInt(pageShow.closeExportExcel) === 1) { %> disabled <% } %> ><i class="fa fa-file-excel-o"></i> Excel <span class="badge badge-primary">0</span></button>
                                         <button type="button" class="btn btn-outline-primary btn-sm" id="show_excel_output_cfg" data-toggle="modal" data-target="#export_excel" style="display:none"></button>
                                         <button type="button" class="btn btn-outline-primary btn-sm" onclick="rptControlObj.getPDFPre()" <% if (pageShow !== null && parseInt(pageShow.closeExportPdf) === 1) { %> disabled <% } %> ><i class="fa fa-file-pdf-o"></i> PDF <span class="badge badge-primary">0</span></button>
                                     </div>
@@ -135,6 +135,7 @@
                                     报表设置
                                 </div>
                             </div>
+                            <% if (!pageShow.openNetCaSign) { %>
                             <div class="panel" id="pnl_eSignature">
                                 <div class="panel-body">
                                     <button class="btn btn-outline-primary btn-sm" type="button" data-toggle="modal" data-target="#eSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'eSignatureBodyDiv'); rptSignatureHelper.checkAndShowCrossTendersESignature();">
@@ -143,6 +144,7 @@
                                     </button>
                                 </div>
                             </div>
+                            <% } %>
                             <div class="panel">
                                 <div class="panel-body">
                                     <div class="input-group input-group-sm">

+ 15 - 13
app/view/report/index_sign.ejs

@@ -379,19 +379,21 @@
             $(this).attr('disabled', true);
             $(this).text('签名条件判断中...');
             // 判断同表中历史归档是否已存在签名
-            const archiveList = _.find(ARCHIVE_LIST, { rpt_id: rptArchiveObj.currentNode.ID.toString() });
-            if (archiveList && archiveList.items) {
-                const aidList = _.map(archiveList.items, 'uuid');
-                _.remove(aidList, function (n) {
-                    return n === rptArchiveObj.currentArchiveUuid;
-                });
-                if (aidList.length > 0) {
-                    for (const a of aidList) {
-                        if (_.findIndex(signLogList, { uuid: a }) !== -1) {
-                            toastr.error('历史归档中已存在签名,请勿重复签署');
-                            $(this).attr('disabled', false);
-                            $(this).text('确定');
-                            return false;
+            if(rptArchiveObj.currentNode && rptArchiveObj.currentArchiveUuid) {
+                const archiveList = _.find(ARCHIVE_LIST, { rpt_id: rptArchiveObj.currentNode.ID.toString() });
+                if (archiveList && archiveList.items) {
+                    const aidList = _.map(archiveList.items, 'uuid');
+                    _.remove(aidList, function (n) {
+                        return n === rptArchiveObj.currentArchiveUuid;
+                    });
+                    if (aidList.length > 0) {
+                        for (const a of aidList) {
+                            if (_.findIndex(signLogList, { uuid: a }) !== -1) {
+                                toastr.error('历史归档中已存在签名,请勿重复签署');
+                                $(this).attr('disabled', false);
+                                $(this).text('确定');
+                                return false;
+                            }
                         }
                     }
                 }

+ 8 - 6
app/view/tender/detail.ejs

@@ -1107,18 +1107,20 @@
     })
 </script>
 <% if (hadMap) { %>
+<!--<script src="//bj.bcebos.com/v1/mapopen/api-demos/js/mapStyle.js"></script>-->
 <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=C3hLZAjuWTaCdwnwoYY83APrwlPEj4v7"></script>
 <script type="text/javascript">
     var map = new BMapGL.Map("map");
     // 创建地图实例
-    var point = new BMapGL.Point(116.404, 39.915);
-    // 创建点坐标
-    map.centerAndZoom(point, 14);
-    map.enableScrollWheelZoom(true);
+    var point = new BMapGL.Point(113.462, 22.2245);
     // 初始化地图,设置中心点坐标和地图级别
+    map.centerAndZoom(point, 12);
+    map.enableScrollWheelZoom(true);
+    // map.setMapStyleV2({styleJson: styleJson2});
+    // 画线
     var polyline = new BMapGL.Polyline([
-        new BMapGL.Point(116.399, 39.910),
-        new BMapGL.Point(116.405, 39.920),
+        new BMapGL.Point(113.352, 22.166),
+        new BMapGL.Point(113.572, 22.283),
         // new BMapGL.Point(116.425, 39.900)
     ], {strokeColor:"red", strokeWeight:5, strokeOpacity:1});
     map.addOverlay(polyline);