diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index 5ded25d..7e5bae3 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -63,9 +63,11 @@ swaggerLevel=0 # \u672C\u5730\u5B58\u50A8\u6587\u4EF6\u7684\u78C1\u76D8\u5730\u5740 #uploadFile=D:\\work\\idea\\changan\\ -uploadFile=/data/DeploymentPackage/report_library/uploadfile +uploadFile=D:\\uploadfile\\tmp\\ +#uploadFile=/data/DeploymentPackage/report_library/uploadfile/ # \u672C\u5730\u6587\u4EF6\u8BBF\u95EE\u7684url\u5730\u5740 picPath=/api/home/pic/ +#picPath=D:\\uploadfile\\tmp\\pic\\ serverIp=http://127.0.0.1:7060/ @@ -92,11 +94,13 @@ IPANDPORT=http://localhost:7061/ #redis #Redis\u670D\u52A1\u5668\u5730\u5740 spring.redis.host=192.168.144.29 +#spring.redis.host=192.168.1.103 #spring.redis.host=localhost ## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3 spring.redis.port=6379 ## Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09 spring.redis.password=123321 +#spring.redis.password= ## \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09 spring.redis.timeout=200000ms ## \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u662F8\u3002 @@ -113,6 +117,9 @@ spring.redis.database=6 # \u4E0A\u4F20\u65B9\u5F0F\uFF1A\u963F\u91CC\u4E91\uFF1Aalioss \u534E\u4E3A\u4E91\uFF1Ahwobs \u672C\u5730\uFF1Alocal uploadType: local +# \u672C\u5730\u6587\u4EF6\u5B58\u50A8\u5730\u5740 +localFilePath=D:\\uploadfile\\ + # ======= \u963F\u91CCOSS\u914D\u7F6E ========= aliyun.OSS.endpoint=https://oss-cn-hangzhou.aliyuncs.com aliyun.OSS.accessKeyId= LTAI5tBmUfVF6Z8R6sHTdTG7 diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 1f5d9d4..bfcefaf 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -93,6 +93,9 @@ public class IReportServiceImpl extends ServiceImpl @Autowired private RoleEODao roleEODao; + @Autowired + private LocalFileUtil localFileUtil; + /** * 新增或编辑报告 * @@ -541,7 +544,7 @@ public class IReportServiceImpl extends ServiceImpl } else if ("alioss".equals(uploadType)) { ossClientUtil.getFileFromOSS(fileEntity.getSavePath(), outputStream); } else if ("local".equals(uploadType)) { - // do nothing + localFileUtil.getFileFromLocal(fileEntity.getSavePath(), outputStream); } String html = null; diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java index e0e4b8e..b931796 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java @@ -5,7 +5,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; -import java.net.URISyntaxException; /** * @author Caihaohan @@ -17,8 +16,11 @@ public class LocalFileUtil { @Value("${uploadFile}") private String uploadFile; + @Value("${localFilePath}") + private String localFilePath; + public void saveFile(InputStream fileInputStream, String fileName) throws IOException { - String path = uploadFile + File.separator + fileName; + String path = localFilePath + fileName; FileOutputStream fileOutputStream = new FileOutputStream(path); byte[] buffer = new byte[1024]; int length; @@ -29,4 +31,29 @@ public class LocalFileUtil { fileOutputStream.close(); } + public void getFileFromLocal(String savePath, FileOutputStream outputStream) throws IOException { + // 创建源文件对象 + File sourceFile = new File(localFilePath, savePath); + + // 如果源文件不存在,则抛出异常 + if (!sourceFile.exists()) { + throw new IOException("Source file does not exist."); + } + + // 创建输入流 + FileInputStream inputStream = new FileInputStream(sourceFile); + + // 创建缓冲区 + byte[] buffer = new byte[1024]; + int bytesRead; + + // 从输入流读取数据,并写入输出流 + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + + // 关闭输入流和输出流 + inputStream.close(); + outputStream.close(); + } } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/PdfUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/PdfUtil.java index 93b699a..e555ba5 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/PdfUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/PdfUtil.java @@ -4,6 +4,8 @@ import com.adc.da.util.utils.UUID; import lombok.extern.slf4j.Slf4j; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; @@ -14,28 +16,37 @@ import java.util.ArrayList; import java.util.List; @Slf4j +@Component public class PdfUtil { - private PdfUtil(){ - throw new IllegalStateException("Utility class"); + private static String uploadType; + + @Value("${uploadType}") + public void setUploadType(String uploadType) { + PdfUtil.uploadType = uploadType; + } + + private PdfUtil() { + } /** * 截取pdf成图片 + * * @param inputStream * @param targetPath * @param ipAddress * @return */ - public static String pdfStreamToPng( InputStream inputStream,String targetPath,String ipAddress) { + public static String pdfStreamToPng(InputStream inputStream, String targetPath, String ipAddress) { - try(PDDocument doc=PDDocument.load( inputStream)) { + try (PDDocument doc = PDDocument.load(inputStream)) { PDFRenderer renderer = new PDFRenderer(doc); - List list=new ArrayList<>(); + List list = new ArrayList<>(); int pageCount = doc.getNumberOfPages(); BufferedImage image = null; - log.info("开始时间"+System.currentTimeMillis()); + log.info("开始时间" + System.currentTimeMillis()); String fileName = UUID.randomUUID10(); for (int i = 0; i < pageCount; i++) { image = renderer.renderImage(i, 2.0f); @@ -46,32 +57,35 @@ public class PdfUtil { imOut = ImageIO.createImageOutputStream(bs); ImageIO.write(image, "png", imOut); - try(ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bs.toByteArray());){ - File ff=new File(targetPath+"/"+fileName); - if(!ff.exists()){ + try (ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bs.toByteArray());) { + File ff = new File(targetPath + "/" + fileName); + if (!ff.exists()) { ff.mkdirs(); } - File uploadFile = new File(targetPath+"/"+fileName+"/"+i+".png"); - try(FileOutputStream fops = new FileOutputStream(uploadFile);){ + File uploadFile = new File(targetPath + "/" + fileName + "/" + i + ".png"); + try (FileOutputStream fops = new FileOutputStream(uploadFile);) { fops.write(readInputStream(byteInputStream)); - } - catch (Exception e){ - log.error(e.getMessage(),e); + } catch (Exception e) { + log.error(e.getMessage(), e); } - list.add(ipAddress+"api/home/pic"+"/"+fileName+"/"+i+".png"); - } - catch (Exception e){ + //判断是否是服务器环境 + if ("local".equals(uploadType)) { + list.add(targetPath + fileName + "/" + i + ".png"); + } else { + list.add(ipAddress + "api/home/pic" + "/" + fileName + "/" + i + ".png"); + } + } catch (Exception e) { } } - log.info("结束时间"+System.currentTimeMillis()); + log.info("结束时间" + System.currentTimeMillis()); - String htmlByBase64 = createHtmlByImg(list); + String htmlByBase64 = createHtmlByImg(list); return htmlByBase64; } catch (Exception e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); return ""; } } @@ -88,15 +102,15 @@ public class PdfUtil { buffer.append("\r\n"); - for(int i=0;i"); + for (int i = 0; i < baseList.size(); i++) { + buffer.append(""); } buffer.append(""); try { return buffer.toString(); } catch (Exception e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); return ""; } @@ -109,7 +123,7 @@ public class PdfUtil { public static byte[] readInputStream(InputStream inStream) throws Exception { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024*1024]; + byte[] buffer = new byte[1024 * 1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len);