瀏覽代碼

张丁 预约作业票导出、预览、下载5.0

zhangding 3 年之前
父節點
當前提交
4f61622570

+ 189 - 22
master/src/main/java/com/ruoyi/project/invoice/controller/TInvoiceBookingworkticketController.java

@@ -2,6 +2,8 @@ package com.ruoyi.project.invoice.controller;
 
 import java.io.*;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -28,6 +30,7 @@ import com.ruoyi.project.sems.domain.TSpecdevCc;
 import com.ruoyi.project.system.domain.SysDictData;
 import com.ruoyi.project.system.service.ISysDictTypeService;
 import io.jsonwebtoken.lang.Assert;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
 import org.apache.poi.ss.formula.functions.T;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
@@ -104,8 +107,22 @@ public class TInvoiceBookingworkticketController extends BaseController
     @GetMapping("/exportBook")
     public AjaxResult exportBook(TInvoiceBookingworkticket tInvoiceBookingworkticket) throws IOException {
         logger.info(JSON.toJSONString(tInvoiceBookingworkticket));
+        //字典查询
+        List<SysDictData> book_work_type = iSysDictTypeService.selectDictDataByType("book_work_type");
+        List<SysDictData> book_work_unit = iSysDictTypeService.selectDictDataByType("book_work_unit");
+        List<SysDictData> book_work_area = iSysDictTypeService.selectDictDataByType("book_work_area");
+        //
+        List<TInvoiceWorkcontent>  newtInvoiceWorkcontentList =new ArrayList<>();
         List<TInvoiceBookingworkticket> list = tInvoiceBookingworkticketService.selectTInvoiceBookingworkticketList(tInvoiceBookingworkticket);
-
+        for(int i=0;i<list.size();i++){
+            //遍历每一条主表  找到所有的子表 根据每条子表 将主表也同步到每一条数据
+            TInvoiceBookingworkticket bookingworkticket= list.get(i);
+            List<TInvoiceWorkcontent>  workcontentList = tInvoiceBookingworkticketService.selectTInvoiceWorkcontentBybookingticketId(bookingworkticket.getId());
+            for (TInvoiceWorkcontent workcontent : workcontentList) {
+                workcontent.setBookingworkticket(bookingworkticket);
+                newtInvoiceWorkcontentList.add(workcontent);
+            }
+        }
         SXSSFWorkbook wb = new SXSSFWorkbook(1000);
         CellStyle wrapStyle = wb.createCellStyle();
         wrapStyle.setWrapText(true);    //设置自动换行
@@ -126,7 +143,6 @@ public class TInvoiceBookingworkticketController extends BaseController
         sheet.setColumnWidth(11, 40*256);
         sheet.setColumnWidth(12, 40*256);
         //设置开始行和开始列
-
         Row row0 = sheet.createRow(0);
         CellStyle style = wb.createCellStyle();
         style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
@@ -154,19 +170,165 @@ public class TInvoiceBookingworkticketController extends BaseController
         //填充数据
         int rowIndex = 1;
         int columnIndex = 1;
-        for (TInvoiceBookingworkticket t: list
-        ) {
+        for (TInvoiceWorkcontent t: newtInvoiceWorkcontentList) {
             Row row = sheet.createRow(rowIndex);
-            row.createCell(0).setCellValue(t.getId());
+            row.createCell(0).setCellValue("扬子石化-巴斯夫有限责任公司");
             //
-            if (t.getWorkStartTime()!= null){
-                row.createCell(2).setCellValue(new SimpleDateFormat("yyyy/MM/dd").format(t.getWorkStartTime()));
+            if (t.getWorkType()!= null){
+                for (SysDictData p : book_work_type) {
+                    if (t.getWorkType().toString().equals(p.getDictValue())) {
+                        row.createCell(1).setCellValue(p.getDictLabel());
+                    }
+                }
+            }
+            if (t.getBookingworkticket().getWorkStartTime()!= null){
+                row.createCell(2).setCellValue(new SimpleDateFormat("yyyy/MM/dd").format(t.getBookingworkticket().getWorkStartTime()));
+            }
+            //
+            if (t.getBookingworkticket().getWorkEndTime()!= null){
+                row.createCell(3).setCellValue(new SimpleDateFormat("yyyy/MM/dd").format(t.getBookingworkticket().getWorkEndTime()));
+            }
+            if (t.getBookingworkticket().getWorkArea()!= null){
+                for (SysDictData p : book_work_area) {
+                    if (t.getBookingworkticket().getWorkArea().toString().equals(p.getDictValue())) {
+                        row.createCell(4).setCellValue(p.getDictLabel());
+                    }
+                }
             }
+            row.createCell(5).setCellValue("是");
+            //
+            if (t.getBookingworkticket().getWorkUnit()!= null){
+                for (SysDictData p : book_work_unit) {
+                    if (t.getBookingworkticket().getWorkUnit().toString().equals(p.getDictValue())) {
+                        row.createCell(6).setCellValue(p.getDictLabel());
+                    }
+                }
+            }
+            //
+            row.createCell(7).setCellValue(t.getBookingworkticket().getContact());
+            //
+            row.createCell(8).setCellValue(t.getBookingworkticket().getPhonenumber());
+            //
+            row.createCell(9).setCellValue("否");
+            //
+            row.createCell(10).setCellValue("");
+            //
+            row.createCell(11).setCellValue("否");
+            //
+            row.createCell(12).setCellValue("");
             rowIndex++;
         }
-        // 总数统计
-        Row row1 = sheet.createRow(rowIndex);
-        row1.createCell(0).setCellValue("总计");
+        // 接着上面的最后一行追加
+        int rowIndex1 = sheet.getLastRowNum();
+        int columnIndex1= 1;
+        CellStyle setBorder = wb.createCellStyle();
+        //设置背景颜色
+        setBorder.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());
+        setBorder.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        //设置自动换行
+        setBorder.setWrapText(true);
+        //边框样式
+        //设置上边框线条类型
+        setBorder.setBorderTop(BorderStyle.THIN);
+        //设置右边框线条类型
+        setBorder.setBorderRight(BorderStyle.THIN);
+        //设置下边框线条类型
+        setBorder.setBorderBottom(BorderStyle.THIN);
+        //设置左边框线条类型
+        setBorder.setBorderLeft(BorderStyle.THIN);
+        //设置上边框线条颜色
+        setBorder.setTopBorderColor(IndexedColors.BLUE_GREY.getIndex());
+        //设置右边框线条颜色
+        setBorder.setRightBorderColor(IndexedColors.BLUE_GREY.getIndex());
+        //设置下边框线条颜色
+        setBorder.setBottomBorderColor(IndexedColors.BLUE_GREY.getIndex());
+        //设置左边框线条颜色
+        setBorder.setLeftBorderColor(IndexedColors.BLUE_GREY.getIndex());
+        //对齐方式
+        //设置水平对齐方式
+        setBorder.setAlignment(HorizontalAlignment.CENTER);
+        //设置垂直对齐方式
+        setBorder.setVerticalAlignment(VerticalAlignment.CENTER);
+
+        Row row1 = sheet.createRow(rowIndex1);
+        row1.createCell(0).setCellValue("日期");row1.getCell(0).setCellStyle(setBorder);
+        row1.createCell(1).setCellValue("一级动火");row1.getCell(1).setCellStyle(setBorder);
+        row1.createCell(2).setCellValue("二级动火");row1.getCell(2).setCellStyle(setBorder);
+        row1.createCell(3).setCellValue("特级动火");row1.getCell(3).setCellStyle(setBorder);
+        row1.createCell(4).setCellValue("高处作业");row1.getCell(4).setCellStyle(setBorder);
+        row1.createCell(5).setCellValue("受限空间");row1.getCell(5).setCellStyle(setBorder);
+        row1.createCell(6).setCellValue("大型吊装");row1.getCell(6).setCellStyle(setBorder);
+        row1.createCell(7).setCellValue("临时用电");row1.getCell(7).setCellStyle(setBorder);
+        row1.createCell(8).setCellValue("动土作业");row1.getCell(8).setCellStyle(setBorder);
+        row1.createCell(9).setCellValue("断路作业");row1.getCell(9).setCellStyle(setBorder);
+        row1.createCell(10).setCellValue("盲板抽堵");row1.getCell(10).setCellStyle(setBorder);
+        row1.createCell(11).setCellValue("检维修作业");row1.getCell(11).setCellStyle(setBorder);
+        row1.createCell(12).setCellValue("清灌作业");row1.getCell(12).setCellStyle(setBorder);
+        row1.createCell(13).setCellValue("倒灌作业");row1.getCell(13).setCellStyle(setBorder);
+        row1.createCell(14).setCellValue("切水作业");row1.getCell(14).setCellStyle(setBorder);
+        row1.createCell(15).setCellValue("变更作业");row1.getCell(15).setCellStyle(setBorder);
+        row1.createCell(16).setCellValue("承包商作业");row1.getCell(16).setCellStyle(setBorder);
+        row1.createCell(17).setCellValue("停车装置数");row1.getCell(17).setCellStyle(setBorder);
+        row1.createCell(18).setCellValue("总计");row1.getCell(18).setCellStyle(setBorder);
+        //
+        int workType0=0; int workType1=0; int workType2=0; int workType3=0; int workType4=0;
+        int workType5=0; int workType6=0; int workType7=0; int workType8=0; int workType9=0;
+        int workType10=0; int workType11=0; int workType12=0; int workType13=0; int workType14=0;
+        int workType15=0; int workType16=0; int workType17=0;
+        //填充下一个表格
+        for (TInvoiceWorkcontent t: newtInvoiceWorkcontentList) {
+            if(t.getWorkType()==2){
+               workType0++;
+            }else  if(t.getWorkType()==3){
+                workType1++;
+            }else  if(t.getWorkType()==1){
+                workType2++;
+            }else  if(t.getWorkType()==5||t.getWorkType()==6||t.getWorkType()==7||t.getWorkType()==8){
+                workType3++;
+            }else  if(t.getWorkType()==15){
+                workType4++;
+            }else  if(t.getWorkType()==12||t.getWorkType()==13||t.getWorkType()==14){
+                workType5++;
+            }else  if(t.getWorkType()==4){
+                workType6++;
+            }else  if(t.getWorkType()==9){
+                workType7++;
+            }else  if(t.getWorkType()==10){
+                workType8++;
+            }else  if(t.getWorkType()==11){
+                workType9++;//盲板
+            }else  if(t.getWorkType()==17){
+                workType11++;//清罐
+            }else  if(t.getWorkType()==16){
+                workType12++;//倒灌
+            }else  if(t.getWorkType()==18){
+                workType13++;
+            }else {
+                //变更、承包、停车装置暂无数据
+            }
+        }
+
+        Row row = sheet.createRow(rowIndex1+1);
+        row.createCell(0).setCellValue("");
+        row.createCell(1).setCellValue(workType0);
+        row.createCell(2).setCellValue(workType1);
+        row.createCell(3).setCellValue(workType2);
+        row.createCell(4).setCellValue(workType3);
+        row.createCell(5).setCellValue(workType4);
+        row.createCell(6).setCellValue(workType5);
+        row.createCell(7).setCellValue(workType6);
+        row.createCell(8).setCellValue(workType7);
+        row.createCell(9).setCellValue(workType8);
+        row.createCell(10).setCellValue(workType9);
+        row.createCell(11).setCellValue(0);
+        row.createCell(12).setCellValue(workType11);
+        row.createCell(13).setCellValue(workType12);
+        row.createCell(14).setCellValue(workType13);
+        row.createCell(15).setCellValue(0);
+        row.createCell(16).setCellValue(0);
+        row.createCell(17).setCellValue(0);
+        row.createCell(18).setCellValue(newtInvoiceWorkcontentList.size());
+
 
         OutputStream out = null;
         String filename = ExcelUtil.encodingFilename("预约票台账导出");
@@ -204,7 +366,6 @@ public class TInvoiceBookingworkticketController extends BaseController
         tInvoiceBookingworkticket.setCreaterCode(getUserId());
      //   tInvoiceBookingworkticket.setContact(t.getContact());
      //   tInvoiceBookingworkticket.setPhonenumber(t.getPhonenumber());
-        // 测试一下,先得到这个文件名 地址   在赋值插入 然后赋值 改文件名
         tInvoiceBookingworkticketService.insertTInvoiceBookingworkticket(tInvoiceBookingworkticket);
 
         Long didi=tInvoiceBookingworkticket.getId();
@@ -216,6 +377,7 @@ public class TInvoiceBookingworkticketController extends BaseController
             tInvoiceBookingworkticketService.insertTInvoiceWorkcontent(wt);
         }
         try {
+            // 测试一下,先得到这个文件名 地址   在赋值插入 然后赋值 改文件名
             String url=  PreView(tInvoiceBookingworkticket.getId());
             tInvoiceBookingworkticket.setFilename(url);
             tInvoiceBookingworkticketService.updateTInvoiceBookingworkticket(tInvoiceBookingworkticket);
@@ -297,8 +459,19 @@ public class TInvoiceBookingworkticketController extends BaseController
         String templatePath = "static/word/invoice/book.docx";
         // 生成word的路径
         String fileDir = RuoYiConfig.getProfile() + "/"+ "ticketWord";
-        // 生成word的文件
-        String fileName = "A" + invoiceBookingworkticket.getContact() + ".docx";
+        // 生成word的文件名称
+        // 承包商+联系人+当前时间
+        StringBuilder contentUserWorkUnit=new StringBuilder();
+        List<SysDictData> book_work_unit = iSysDictTypeService.selectDictDataByType("book_work_unit");
+        if(invoiceBookingworkticket.getWorkUnit()!=null){
+            for (SysDictData p : book_work_unit) {
+                if (invoiceBookingworkticket.getWorkUnit().toString().equals(p.getDictValue())) {
+                    contentUserWorkUnit.append(p.getDictLabel());//施工单位承包商
+                }
+            }
+        }
+        String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        String fileName = contentUserWorkUnit.toString()+invoiceBookingworkticket.getContact() +time+".docx";
         String wordPath = this.createWord(templatePath, fileDir, fileName, params);
 
         return wordPath;
@@ -330,7 +503,7 @@ public class TInvoiceBookingworkticketController extends BaseController
           if(ticket.getWorkArea()!=null){
               for (SysDictData p : book_work_area) {
                   if (ticket.getWorkArea().toString().equals(p.getDictValue())) {
-                      content.append("具体工作内容:"+tInvoiceWorkcontent.getWorkDescription()+"\r\n"+"区域:"+p.getDictLabel());//装置名称
+                      content.append("具体工作内容:"+tInvoiceWorkcontent.getWorkDescription()+"区域:"+p.getDictLabel());//装置名称
                   }
               }
           }
@@ -349,7 +522,7 @@ public class TInvoiceBookingworkticketController extends BaseController
                    }
                }
                if(!params.containsKey("userUnit")){
-                   params.put("userUnit", Texts.of(contentUserWorkUnit.toString()).fontSize(10).bold().create());
+                   params.put("userUnit", Texts.of(contentUserUnit.toString()).fontSize(10).bold().create());
                }
            }
            if(ticket.getUserMg()!=null){
@@ -359,7 +532,7 @@ public class TInvoiceBookingworkticketController extends BaseController
                    }
                }
                if(!params.containsKey("userMg")){
-                   params.put("userMg", Texts.of(contentUserWorkUnit.toString()).fontSize(10).bold().create());
+                   params.put("userMg", Texts.of(contentUserMg.toString()).fontSize(10).bold().create());
                }
            }
            if(ticket.getWorkUnit()!=null){
@@ -391,12 +564,6 @@ public class TInvoiceBookingworkticketController extends BaseController
            contentUserWorkType.delete(0, contentUserWorkType.length());
        }
         // 渲染文本
-
-
-
-
-
-
         return params;
     };
 

+ 3 - 3
master/src/main/java/com/ruoyi/project/invoice/domain/TInvoiceBookingworkticket.java

@@ -37,7 +37,7 @@ public class TInvoiceBookingworkticket extends BaseEntity
 
     /** 楼层位置 */
     @Excel(name = "楼层位置")
-    private Long floorLocation;
+    private String floorLocation;
 
     /**  作业开始时间 */
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
@@ -142,12 +142,12 @@ public class TInvoiceBookingworkticket extends BaseEntity
     {
         return unitNumber;
     }
-    public void setFloorLocation(Long floorLocation)
+    public void setFloorLocation(String floorLocation)
     {
         this.floorLocation = floorLocation;
     }
 
-    public Long getFloorLocation()
+    public String getFloorLocation()
     {
         return floorLocation;
     }

+ 1 - 1
master/src/main/resources/mybatis/invoice/TInvoiceBookingworkticketMapper.xml

@@ -29,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTInvoiceBookingworkticketVo">
-        select d.id, d.work_unit, d.work_area, d.unit_number, d.floor_location, d.work_start_time, d.work_end_time, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.contact, d.phonenumber, d.status, d.dept_id, d.user_mg ,s.dept_name,d.filename,d.reservation_number from t_invoice_bookingworkticket d
+        select d.id, d.work_unit, d.work_area, d.unit_number, d.floor_location, d.work_start_time, d.work_end_time, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.contact, d.phonenumber, d.status, d.dept_id, d.user_mg ,d.user_unit,s.dept_name,d.filename,d.reservation_number from t_invoice_bookingworkticket d
       left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 

二進制
master/src/main/resources/static/word/invoice/book.docx


+ 39 - 12
ui/src/views/invoice/bookingworkticket/index.vue

@@ -152,19 +152,18 @@
             icon="el-icon-edit"
             @click="handleDelete(scope.row)"
           >删除</el-button>
-           <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-s-promotion"
-            @click="association(scope.row)"
-             v-hasRole="['dbbz','admin']"
-          >关联票号</el-button>
-            <el-button
+          <el-button
               size="mini"
               type="text"
               icon="el-icon-view"
               @click="billSee(scope.row)"
             > {{ $t('票据预览') }}</el-button>
+           <el-button
+            size="mini"
+             type="text"
+              icon="el-icon-download"
+              @click="handleDownload(scope.row)"
+            >{{$t('下载申请单')}}</el-button>
           <el-button
             type="text"
             size="mini"
@@ -215,8 +214,8 @@
         <el-col :span="12">
           </el-col>
         <el-col :span="12">
-        <el-form-item label="楼层位置" prop="floorLocation">
-          <el-select v-model="form.floorLocation" placeholder="请选择楼层位置">
+        <el-form-item label="楼层位置"    prop="floorLocation">
+          <el-select v-model="form.floorLocation" multiple placeholder="请选择楼层位置">
              <el-option
             v-for="dict in floorLocationOptions"
             :key="dict.dictValue"
@@ -337,7 +336,8 @@
 
     <el-dialog   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">{{$t('新页面打开PDF')}}</el-button></div>
+        <el-button size="mini" type="text" @click="openPdf">{{$t('新页面预览')}}</el-button>
+        </div>
       <div style="margin-top: -30px" >
         <iframe id="iFrame" class="iframe-html" :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px" v-if="ppt"></iframe>
       </div>
@@ -643,6 +643,7 @@ export default {
                   ,{status:this.bookingworkticketList[i].bookingworkticket.status});
 
           }
+
           console.log(this.bookingworkticketList)
        this.total = response.total;
         this.loading = false;
@@ -672,7 +673,8 @@ export default {
     },
     // 字典翻译
     floorLocationFormat(row, column) {
-      return this.selectDictLabel(this.floorLocationOptions, row.floorLocation);
+
+      return this.selectDictLabels(this.floorLocationOptions, row.floorLocation);
     },
      // 字典翻译
     userMgFormat(row, column) {
@@ -759,6 +761,16 @@ export default {
         this.open = true;
         this.title = "修改预约作业票台账";
         this.ruleForm=response.data.tInvoiceWorkcontentList
+    //  console.log(row.floorLocation)  将后台的字符串数组重新转换为el-select要的数组格式
+           let arr=row.floorLocation.split(",")
+      let st=[]
+		// 将字符串数组的每一项转换成Number,生成一个新的数组
+      	for (var arrInt in arr) {
+			st.push(parseInt(arr[arrInt]))
+		}
+
+       this.form.floorLocation=st
+
         this.ruleForm.length=response.data.tInvoiceWorkcontentList.length
       });
     },
@@ -768,6 +780,7 @@ export default {
         if (valid) {
           if (this.form.id != null) {
               this.form.tInvoiceWorkcontentList=this.ruleForm
+              this.form.floorLocation=this.form.floorLocation.join(',')
             updateBookingworkticket(this.form).then(response => {
 
               this.msgSuccess("修改成功");
@@ -776,6 +789,7 @@ export default {
             });
           } else {
             this.form.tInvoiceWorkcontentList=this.ruleForm
+            this.form.floorLocation=this.form.floorLocation.join(',')
             addBookingworkticket(this.form).then(response => {
 
            this.msgSuccess("新增成功");
@@ -1004,6 +1018,19 @@ export default {
         window.open(this.pdf.pdfUrl)
       }
     },
+     // 文件下载处理
+    handleDownload(row) {
+      console.log(row)
+      var name = row.bookingworkticket.filename;
+      var url = row.bookingworkticket.filename;
+      var suffix = url.substring(url.lastIndexOf("."), url.length);
+      console.log(url)
+      const a = document.createElement('a')
+      a.setAttribute('download', name)
+      a.setAttribute('target', '_blank')
+      a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
+      a.click()
+    },
 
   }
 };