Browse Source

限制空间预览、下载(A-B栏)

Wang Zi Wen 2 years ago
parent
commit
bd4d471965

+ 110 - 11
master/src/main/java/com/ruoyi/project/ticket/controller/TRestrictedSpacePermitController.java

@@ -1,16 +1,23 @@
 package com.ruoyi.project.ticket.controller;
 
+import java.io.IOException;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.deepoove.poi.data.TextRenderData;
+import com.deepoove.poi.data.Texts;
+import com.deepoove.poi.data.style.Style;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.framework.config.RuoYiConfig;
+import com.ruoyi.project.common.controller.WordController;
+import com.ruoyi.project.configuration.mapper.TMatterMapper;
 import com.ruoyi.project.ticket.domain.PermitRelation;
 import com.ruoyi.project.ticket.domain.TRestrictedSpacePermit;
 import com.ruoyi.project.ticket.domain.TTicketId;
 import com.ruoyi.project.ticket.service.ITPermitRelationService;
 import com.ruoyi.project.ticket.service.ITRestrictedSpacePermitService;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,6 +34,8 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
 
+import javax.annotation.Resource;
+
 /**
  * 限制性空间进入开票Controller
  *
@@ -46,6 +55,12 @@ public class TRestrictedSpacePermitController extends BaseController
     @Autowired
     private ITPermitRelationService itPermitRelationService;
 
+    @Resource
+    private TMatterMapper tMatterMapper;
+
+    @Autowired
+    private WordController wordController;
+
     /**
      * 查询限制性空间进入开票列表
      */
@@ -83,20 +98,28 @@ public class TRestrictedSpacePermitController extends BaseController
      */
     @Log(title = "限制性空间进入开票", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TRestrictedSpacePermit tRestrictedSpacePermit)
-    {
+    public AjaxResult add(@RequestBody TRestrictedSpacePermit tRestrictedSpacePermit) throws IOException {
         //生成票号
         TTicketId tTicketId = new TTicketId();
         tTicketId.setId(1l);
         Long ticketId = tTicketIdController.createId(tTicketId);
         //保存限制空间许可证
         tRestrictedSpacePermit.setcId(ticketId);
-        Date bValidityStartTime = tRestrictedSpacePermit.getbValidityStartTime();
-        Date bValidityEndTime = tRestrictedSpacePermit.getbValidityEndTime();
-        bValidityStartTime.setDate(bValidityStartTime.getDate() + 1);
-        bValidityEndTime.setDate(bValidityEndTime.getDate() + 1);
-        tRestrictedSpacePermit.setbValidityStartTime(bValidityStartTime);
-        tRestrictedSpacePermit.setbValidityEndTime(bValidityEndTime);
+        //生成word
+        //渲染文本
+        Map<String, Object> params = getWordData(tRestrictedSpacePermit);
+        // 模板路径
+        String templatePath = "static/word/restrictedSpaceTicket.docx";
+        // 生成word的路径
+        String fileDir = RuoYiConfig.getProfile() + "/" + "ticketWord";;
+        // 生成word的文件
+        String fileName = "C" + ticketId + ".docx";
+        String wordPath = this.wordController.createWord(templatePath, fileDir, fileName, params);
+        tRestrictedSpacePermit.setWordUrl(wordPath);
+        //使用流的方式转换PDF
+        String fileName2 = "C" + tRestrictedSpacePermit.getcId() + ".pdf";
+        String pdfPath = this.wordController.createPDF(fileDir, fileName, fileName2, params);
+        tRestrictedSpacePermit.setPdfUrl(pdfPath);
         tRestrictedSpacePermitService.insertTRestrictedSpacePermit(tRestrictedSpacePermit);
         //保存限制空间许可证关联数据
         PermitRelation permitRelation = new PermitRelation();
@@ -113,8 +136,22 @@ public class TRestrictedSpacePermitController extends BaseController
      */
     @Log(title = "限制性空间进入开票", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TRestrictedSpacePermit tRestrictedSpacePermit)
-    {
+    public AjaxResult edit(@RequestBody TRestrictedSpacePermit tRestrictedSpacePermit) throws IOException {
+        //生成word
+        //渲染文本
+        Map<String, Object> params = getWordData(tRestrictedSpacePermit);
+        // 模板路径
+        String templatePath = "static/word/restrictedSpaceTicket.docx";
+        // 生成word的路径
+        String fileDir = RuoYiConfig.getProfile() + "/" + "ticketWord";
+        // 生成word的文件
+        String fileName = "C" + tRestrictedSpacePermit.getcId() + ".docx";
+        String wordPath = this.wordController.createWord(templatePath, fileDir, fileName, params);
+        tRestrictedSpacePermit.setWordUrl(wordPath);
+        //使用流的方式转换PDF
+        String fileName2 = "C" + tRestrictedSpacePermit.getcId() + ".pdf";
+        String pdfPath = this.wordController.createPDF(fileDir, fileName, fileName2, params);
+        tRestrictedSpacePermit.setPdfUrl(pdfPath);
         return toAjax(tRestrictedSpacePermitService.updateTRestrictedSpacePermit(tRestrictedSpacePermit));
     }
 
@@ -127,4 +164,66 @@ public class TRestrictedSpacePermitController extends BaseController
     {
         return toAjax(tRestrictedSpacePermitService.deleteTRestrictedSpacePermitByIds(cIds));
     }
+
+
+    public Map<String, Object> getWordData(TRestrictedSpacePermit tRestrictedSpacePermit) {
+        Map<String, Object> params = new HashMap<>();
+        // 渲染文本
+        params.put("cId", Texts.of(tRestrictedSpacePermit.getcId().toString()).fontSize(7).bold().create());
+        params.put("aEquipmentName", Texts.of(tRestrictedSpacePermit.getaEquipmentName()).fontSize(7).bold().create());
+        params.put("aEquipmentLeader", Texts.of(tRestrictedSpacePermit.getaEquipmentLeader()).fontSize(7).bold().create());
+        params.put("aEquipmentTel", Texts.of(tRestrictedSpacePermit.getaEquipmentTel()).fontSize(7).bold().create());
+        params.put("aEquipmentOffice", Texts.of(tRestrictedSpacePermit.getaEquipmentOffice()).fontSize(7).bold().create());
+        params.put("aConstructionName", Texts.of(tRestrictedSpacePermit.getaConstructionName()).fontSize(7).bold().create());
+        params.put("aConstructionLeader", Texts.of(tRestrictedSpacePermit.getaConstructionLeader()).fontSize(7).bold().create());
+        params.put("aConstructionTel", Texts.of(tRestrictedSpacePermit.getaConstructionTel()).fontSize(7).bold().create());
+        params.put("aConstructionOffice", Texts.of(tRestrictedSpacePermit.getaConstructionOffice()).fontSize(7).bold().create());
+        params.put("aContractorName", Texts.of(tRestrictedSpacePermit.getaContractorName()).fontSize(7).bold().create());
+        params.put("aContractorLeader", Texts.of(tRestrictedSpacePermit.getaContractorLeader()).fontSize(7).bold().create());
+        params.put("aContractorTel", Texts.of(tRestrictedSpacePermit.getaContractorTel()).fontSize(7).bold().create());
+        params.put("aContractorOffice", Texts.of(tRestrictedSpacePermit.getaContractorOffice()).fontSize(7).bold().create());
+
+        getCheck(params, tRestrictedSpacePermit.getaIsNeedSafeLiaison().toString(), "aIsNSL1", "aIsNSL2");
+        params.put("aSafeLiaisonName", Texts.of(tRestrictedSpacePermit.getaSafeLiaisonName()).fontSize(7).bold().create());
+        params.put("aSafeLiaisonSign", Texts.of(tRestrictedSpacePermit.getaSafeLiaisonSign()).fontSize(7).bold().create());
+        params.put("aSafeLiaisonTel", Texts.of(tRestrictedSpacePermit.getaSafeLiaisonTel()).fontSize(7).bold().create());
+        params.put("aSafeLiaisonOffice", Texts.of(tRestrictedSpacePermit.getaSafeLiaisonOffice()).fontSize(7).bold().create());
+        // B 栏
+        params.put("bDeviceName", Texts.of(tRestrictedSpacePermit.getbDeviceName()).fontSize(7).bold().create());
+        params.put("bAreaNo", Texts.of(tRestrictedSpacePermit.getbAreaNo()).fontSize(7).bold().create());
+        params.put("bWorkContent", Texts.of(tRestrictedSpacePermit.getbWorkContent()).fontSize(7).bold().create());
+        if (tRestrictedSpacePermit.getbValidityStartTime() != null) {
+            params.put("bValidityStartTime", Texts.of(DateUtils.parseDateToStr("yyyy年MM月dd日HH时mm分", tRestrictedSpacePermit.getbValidityStartTime())).fontSize(7).bold().create());
+        }
+        if (tRestrictedSpacePermit.getbValidityEndTime() != null) {
+            params.put("bValidityEndTime", Texts.of(DateUtils.parseDateToStr("yyyy年MM月dd日HH时mm分", tRestrictedSpacePermit.getbValidityEndTime())).fontSize(7).bold().create());
+        }
+        return params;
+    }
+
+    // 勾选框判断渲染
+    public void getCheck(Map<String, Object> params, String ticketWord, String check1) {
+        if ("1".equals(ticketWord)) {
+            params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 7)));
+        } else if ("2".equals(ticketWord)) {
+            params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+        } else {
+            params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+        }
+    }
+
+    // 勾选框判断渲染
+    public void getCheck(Map<String, Object> params, String ticketWord, String check1, String check2) {
+        if ("1".equals(ticketWord)) {
+            params.put(check1, new TextRenderData("\u00FE", new Style("Wingdings", 7)));
+            params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+        } else if ("2".equals(ticketWord)) {
+            params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+            params.put(check2, new TextRenderData("\u00FE", new Style("Wingdings", 7)));
+        } else {
+            params.put(check1, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+            params.put(check2, new TextRenderData("\u006F", new Style("Wingdings", 7)));
+        }
+    }
+
 }

+ 2 - 2
master/src/main/java/com/ruoyi/project/ticket/domain/TRestrictedSpacePermit.java

@@ -97,12 +97,12 @@ public class TRestrictedSpacePermit extends BaseEntity
     private String bWorkContent;
 
     /** 有效期,开始时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     @Excel(name = "有效期,开始时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date bValidityStartTime;
 
     /** 有效期,结束时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     @Excel(name = "有效期,结束时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date bValidityEndTime;
 

BIN
master/src/main/resources/static/word/restrictedSpaceTicket.docx


+ 30 - 0
ui/src/views/invoicing/restrictedspace/index.vue

@@ -1743,6 +1743,16 @@
         </el-row>
       </div>
     </el-form>
+    <el-dialog :close-on-click-modal="false" v-loading="loadingFlash" element-loading-background="rgba(0,0,0,0.2)"
+               v-dialogDrag :title="pdf.title"
+               :visible.sync="pdf.open" width="1300px" height="800px" :center="true" append-to-body>
+      <div style="margin-top: -60px;float: right;margin-right: 40px;">
+        <el-button size="mini" type="text" @click="openPdf">新页面预览</el-button>
+      </div>
+      <div style="margin-top: -30px">
+        <iframe id="iFrame" class="iframe-html" :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"></iframe>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -1805,6 +1815,15 @@ export default {
       }
     };
     return {
+      pdf: {
+        title: '',
+        pdfUrl: '',
+        numPages: null,
+        open: false,
+        pageNum: 1,
+        pageTotalNum: 1,
+        loadedRatio: 0,
+      },
       // 表单校验
       rules: {
         ruleA: [
@@ -2151,6 +2170,17 @@ export default {
     }
   },
   methods: {
+    handleSee() {
+      console.log(this.form.pdfUrl)
+      this.loadingFlash = true
+      this.pdf.open = true
+      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + this.form.pdfUrl
+      this.loadingFlash = false
+    },
+    openPdf() {
+      window.open(this.pdf.pdfUrl)
+    },
+    handleDownload(){window.open(process.env.VUE_APP_BASE_API + this.form.wordUrl)},
     //提交当前数据
     onSubmit() {
       this.dataSet();