Commit af7ac8fb authored by wujiang's avatar wujiang

提交预览代码

parent 6c083d21
package com.yeejoin.equipmanage.common.entity;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.web.multipart.MultipartFile;
import lombok.NonNull;
public class MyByteArrayMultipartFile implements MultipartFile {
private String name;
private String originalFilename;
private String contentType;
public MyByteArrayMultipartFile(String name, String originalFilename, String contentType, @NonNull byte[] bytes) {
super();
this.name = name;
this.originalFilename = originalFilename;
this.contentType = contentType;
this.bytes = bytes;
}
public MyByteArrayMultipartFile() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public String getOriginalFilename() {
return originalFilename;
}
public String getContentType() {
return contentType;
}
public byte[] getBytes() {
return bytes;
}
@NonNull
byte[] bytes;
@Override
public boolean isEmpty() {
return bytes.length == 0;
}
@Override
public long getSize() {
return bytes.length;
}
@Override
public InputStream getInputStream() {
return new ByteArrayInputStream(bytes);
}
@Override
public void transferTo(File destination) throws IOException {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(destination);
outputStream.write(bytes);
} finally {
if (outputStream != null) {
outputStream.close();
}
}
}
}
...@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.support.PropertiesLoaderUtils; import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
...@@ -83,7 +84,7 @@ public class WordTemplateUtils { ...@@ -83,7 +84,7 @@ public class WordTemplateUtils {
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
response.setContentType("application/msword"); response.setContentType("application/msword");
// 设置浏览器以下载的方式处理该文件名 // 设置浏览器以下载的方式处理该文件名
String fileName = (StringUtil.isNotEmpty(title) ? title : FileUtil.getUUID()) + ".pdf"; String fileName = (StringUtil.isNotEmpty(title) ? title : FileUtil.getUUID()) + ".doc";
response.setHeader("Content-Disposition", response.setHeader("Content-Disposition",
"attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8")))); "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
...@@ -105,14 +106,15 @@ public class WordTemplateUtils { ...@@ -105,14 +106,15 @@ public class WordTemplateUtils {
} }
} }
public FileItem getWordFileItem(Map map,String title,String ftlFile) throws IOException { public File getWordFileItem(Map map,String title,String ftlFile) throws IOException {
URL resourcePath = this.getClass().getClassLoader().getResource("ftl"); URL resourcePath = this.getClass().getClassLoader().getResource("ftl");
configuration.setDirectoryForTemplateLoading(new File(resourcePath.getPath())); configuration.setDirectoryForTemplateLoading(new File(resourcePath.getPath()));
Template freemarkerTemplate = configuration.getTemplate(ftlFile); Template freemarkerTemplate = configuration.getTemplate(ftlFile);
FileItemFactory factory = new DiskFileItemFactory(16, null); FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "file"; String textFieldName = "file";
FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, title);
File file = null; File file = null;
File filepdf = new File("sellPlan.pdf");
int bytesRead = 0; int bytesRead = 0;
byte[] buffer = new byte[10 * 1024 * 1024]; byte[] buffer = new byte[10 * 1024 * 1024];
InputStream fin = null; InputStream fin = null;
...@@ -121,12 +123,9 @@ public class WordTemplateUtils { ...@@ -121,12 +123,9 @@ public class WordTemplateUtils {
// 调用工具类的createDoc方法生成Word文档 // 调用工具类的createDoc方法生成Word文档
file = createDoc(map, freemarkerTemplate); file = createDoc(map, freemarkerTemplate);
fin = new FileInputStream(file); fin = new FileInputStream(file);
os = item.getOutputStream(); os = new FileOutputStream(filepdf);
wordTopdfByAspose(fin, os); wordTopdfByAspose(fin, os);
while ((bytesRead = fin.read(buffer,0,8192)) != -1) { return filepdf;
os.write(buffer,0,bytesRead);
}
return item;
} finally { } finally {
if (fin != null){ if (fin != null){
fin.close();} fin.close();}
...@@ -155,7 +154,6 @@ public class WordTemplateUtils { ...@@ -155,7 +154,6 @@ public class WordTemplateUtils {
} }
public boolean wordTopdfByAspose(InputStream inputStream, OutputStream outputStream) { public boolean wordTopdfByAspose(InputStream inputStream, OutputStream outputStream) {
// 验证License 若不验证则转化出的pdf文档会有水印产生 // 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) { if (!getLicense()) {
return false; return false;
...@@ -163,11 +161,8 @@ public class WordTemplateUtils { ...@@ -163,11 +161,8 @@ public class WordTemplateUtils {
try { try {
// 将源文件保存在com.aspose.words.Document中,具体的转换格式依靠里面的save方法 // 将源文件保存在com.aspose.words.Document中,具体的转换格式依靠里面的save方法
com.aspose.words.Document doc = new com.aspose.words.Document(inputStream); com.aspose.words.Document doc = new com.aspose.words.Document(inputStream);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换 // 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换
doc.save(outputStream, SaveFormat.PDF); doc.save(outputStream, SaveFormat.PDF);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
......
...@@ -13,11 +13,13 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -13,11 +13,13 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.equipmanage.common.dto.AnalysisReportLogDto; import com.yeejoin.equipmanage.common.dto.AnalysisReportLogDto;
import com.yeejoin.equipmanage.common.entity.AnalysisReportLog; import com.yeejoin.equipmanage.common.entity.AnalysisReportLog;
import com.yeejoin.equipmanage.service.IFirePatrolReportService; import com.yeejoin.equipmanage.service.IFirePatrolReportService;
...@@ -35,7 +37,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -35,7 +37,7 @@ import lombok.extern.slf4j.Slf4j;
@Api(tags = "消防巡查报表Api") @Api(tags = "消防巡查报表Api")
@RequestMapping(value = "/fire-patrol-report") @RequestMapping(value = "/fire-patrol-report")
@Slf4j @Slf4j
public class FirePatrolReportController { public class FirePatrolReportController extends BaseController {
@Autowired @Autowired
IFirePatrolReportService iFirePatrolReportService; IFirePatrolReportService iFirePatrolReportService;
...@@ -57,6 +59,9 @@ public class FirePatrolReportController { ...@@ -57,6 +59,9 @@ public class FirePatrolReportController {
@ApiParam(value = "换流站编码", required = true) @RequestParam String stationCode, @ApiParam(value = "换流站编码", required = true) @RequestParam String stationCode,
@ApiParam(value = "开始日期", required = true) @RequestParam @DateTimeFormat(pattern="yyyy-MM-dd")Date startDate, @ApiParam(value = "开始日期", required = true) @RequestParam @DateTimeFormat(pattern="yyyy-MM-dd")Date startDate,
@ApiParam(value = "结束日期", required = true) @RequestParam @DateTimeFormat(pattern="yyyy-MM-dd")Date endDate) { @ApiParam(value = "结束日期", required = true) @RequestParam @DateTimeFormat(pattern="yyyy-MM-dd")Date endDate) {
RequestContext.setProduct(getProduct());
RequestContext.setAppKey(getAppKey());
RequestContext.setToken(getToken());
return iFirePatrolReportService.preview(stationCode, startDate, endDate); return iFirePatrolReportService.preview(stationCode, startDate, endDate);
} }
......
...@@ -4,6 +4,8 @@ import java.awt.Color; ...@@ -4,6 +4,8 @@ import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.RenderingHints; import java.awt.RenderingHints;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -12,6 +14,7 @@ import java.util.ArrayList; ...@@ -12,6 +14,7 @@ import java.util.ArrayList;
import java.util.Base64; import java.util.Base64;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -19,6 +22,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -19,6 +22,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.io.IOUtils;
import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities; import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart; import org.jfree.chart.JFreeChart;
...@@ -30,6 +34,7 @@ import org.jfree.data.general.DefaultPieDataset; ...@@ -30,6 +34,7 @@ import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RectangleInsets; import org.jfree.ui.RectangleInsets;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile;
...@@ -40,6 +45,7 @@ import com.github.xiaoymin.knife4j.core.util.StrUtil; ...@@ -40,6 +45,7 @@ import com.github.xiaoymin.knife4j.core.util.StrUtil;
import com.yeejoin.amos.component.feign.model.FeignClientResult; import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.equipmanage.common.dto.AnalysisReportLogDto; import com.yeejoin.equipmanage.common.dto.AnalysisReportLogDto;
import com.yeejoin.equipmanage.common.entity.MyByteArrayMultipartFile;
import com.yeejoin.equipmanage.common.enums.WordTemplateTypeEum; import com.yeejoin.equipmanage.common.enums.WordTemplateTypeEum;
import com.yeejoin.equipmanage.common.exception.BaseException; import com.yeejoin.equipmanage.common.exception.BaseException;
import com.yeejoin.equipmanage.common.exception.CommonException; import com.yeejoin.equipmanage.common.exception.CommonException;
...@@ -297,15 +303,41 @@ public class FilePatrolReportServiceImpl implements IFirePatrolReportService { ...@@ -297,15 +303,41 @@ public class FilePatrolReportServiceImpl implements IFirePatrolReportService {
public String preview(String code, Date startDate, Date endDate) { public String preview(String code, Date startDate, Date endDate) {
WordTemplateUtils instance = WordTemplateUtils.getInstance(); WordTemplateUtils instance = WordTemplateUtils.getInstance();
Map<String, Object> map = getWordMap(code, startDate, endDate); Map<String, Object> map = getWordMap(code, startDate, endDate);
String urlString="";
try { try {
//instance.pdfCreate(map, (String) map.get("document_number"), WordTemplateTypeEum.firePatrolReport.getTemplateFile()); //instance.pdfCreate(map, (String) map.get("document_number"), WordTemplateTypeEum.firePatrolReport.getTemplateFile());
FileItem item = instance.getWordFileItem(map,(String) map.get("document_number"), WordTemplateTypeEum.firePatrolReport.getTemplateFile()); File filepdf = instance.getWordFileItem(map,(String) map.get("document_number"), WordTemplateTypeEum.firePatrolReport.getTemplateFile());
MultipartFile file = new CommonsMultipartFile(item); //MultipartFile multipartFile = new CommonsMultipartFile(item);
FeignClientResult<java.util.Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(file); filepdf.getAbsolutePath();
// File file = new File("F:\\application-dev.yml");
// FileInputStream input = new FileInputStream(filepdf);
MultipartFile multipartFile = new MyByteArrayMultipartFile("file","file.pdf","application/pdf",file2byte(filepdf));
FeignClientResult<java.util.Map<String, String>> result = Systemctl.fileStorageClient.updateCommonFile(multipartFile);
if (result != null) {
Iterator<String> it = result.getResult().keySet().iterator();
while (it.hasNext()) {
urlString=it.next();
}
}
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return null; return urlString;
}
public static byte[] file2byte(File file)
{
try {
FileInputStream in =new FileInputStream(file);
//当文件没有结束时,每次读取一个字节显示
byte[] data=new byte[in.available()];
in.read(data);
in.close();
return data;
} catch (Exception e) {
e.printStackTrace();
return null;
}
} }
// @Override // @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment