diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index bd6dacd..b9528e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -30,7 +30,7 @@ */ @Component @Slf4j -public class PrintFileRegister { +public class PrintFileRegister extends PrintFileSupport{ @Autowired private MinioClient minioClient; @@ -99,156 +99,4 @@ deleteFile(invalidFile); } } - - /** - * 返回文件流 - * - * @param printDocUrl 文件流路径,pdf,word - * @param response - */ - private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { - File file = new File(printDocUrl); - InputStream in = null; - ByteArrayOutputStream out = null; - try { - FileInputStream fis = new FileInputStream(file); - out = new ByteArrayOutputStream(); - IOUtils.copy(fis, out); - //封装返回值 - byte[] data = out.toByteArray(); - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); - response.addHeader("Content-Length", "" + data.length); - response.setHeader("Access-Control-Allow-Origin", "*"); - response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); - response.setHeader("Access-Control-Max-Age", "3600"); - response.setHeader("Access-Control-Allow-Credentials", "true"); - response.setHeader("Access-Control-Allow-Headers", "*"); - response.setContentType("application/octet-stream;charset=UTF-8"); - IOUtils.copy(fis, response.getOutputStream()); - OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); - outputStream.write(data); - outputStream.flush(); - outputStream.close(); - response.flushBuffer(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - - /** - * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 - */ - private void downTemplateFile(String fileName, String tempLocalFileDir) { - InputStream in = null; - ByteArrayOutputStream out = null; - try { - in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); - out = new ByteArrayOutputStream(); - IOUtils.copy(in, out); - //封装返回值 - byte[] bytes = out.toByteArray(); - FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /** - * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 - */ - @Deprecated - public String uploadCertificate(String certificatePrintUrl) { - //上传证书 - File file = new File(certificatePrintUrl); - //获取file对象的文件输入流 - FileInputStream input = null; - List nameList = null; - try { - input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); - MultipartFile[] multipartFiles = new MultipartFile[1]; - multipartFiles[0] = multipartFile; - nameList = minioUtil.upload(multipartFiles); - } catch (IOException ie) { - log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - log.error("the upload Certificate input stream release is anomaly"); - } - } - return nameList.get(0); - } - } - - /** - * 创建文件目录,为mini下载文件准备临时工作空间 - */ - private void createLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以. - if (file.exists()) { - deleteFile(file); - } - file.mkdirs(); //创建目录 - } - - /** - * 对打印报告产生的工作空间进行删除,归还内存 - */ - private void deleteFile(File invalidFile) { - //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 - File[] files = invalidFile.listFiles(); - if (files != null) {//如果包含文件进行删除操作 - for (int i = 0; i < files.length; i++) { - if (files[i].isFile()) { - //删除子文件 - files[i].delete(); - } else if (files[i].isDirectory()) { - //通过递归的方法找到子目录的文件 - deleteFile(files[i]); - } - } - } - if (invalidFile.list().length == 0) { - log.debug("invalid print file has already delete success!"); - } - //删除子目录 - if (invalidFile != null && invalidFile.isDirectory()) { - invalidFile.delete(); - } - } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index bd6dacd..b9528e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -30,7 +30,7 @@ */ @Component @Slf4j -public class PrintFileRegister { +public class PrintFileRegister extends PrintFileSupport{ @Autowired private MinioClient minioClient; @@ -99,156 +99,4 @@ deleteFile(invalidFile); } } - - /** - * 返回文件流 - * - * @param printDocUrl 文件流路径,pdf,word - * @param response - */ - private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { - File file = new File(printDocUrl); - InputStream in = null; - ByteArrayOutputStream out = null; - try { - FileInputStream fis = new FileInputStream(file); - out = new ByteArrayOutputStream(); - IOUtils.copy(fis, out); - //封装返回值 - byte[] data = out.toByteArray(); - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); - response.addHeader("Content-Length", "" + data.length); - response.setHeader("Access-Control-Allow-Origin", "*"); - response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); - response.setHeader("Access-Control-Max-Age", "3600"); - response.setHeader("Access-Control-Allow-Credentials", "true"); - response.setHeader("Access-Control-Allow-Headers", "*"); - response.setContentType("application/octet-stream;charset=UTF-8"); - IOUtils.copy(fis, response.getOutputStream()); - OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); - outputStream.write(data); - outputStream.flush(); - outputStream.close(); - response.flushBuffer(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - - /** - * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 - */ - private void downTemplateFile(String fileName, String tempLocalFileDir) { - InputStream in = null; - ByteArrayOutputStream out = null; - try { - in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); - out = new ByteArrayOutputStream(); - IOUtils.copy(in, out); - //封装返回值 - byte[] bytes = out.toByteArray(); - FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /** - * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 - */ - @Deprecated - public String uploadCertificate(String certificatePrintUrl) { - //上传证书 - File file = new File(certificatePrintUrl); - //获取file对象的文件输入流 - FileInputStream input = null; - List nameList = null; - try { - input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); - MultipartFile[] multipartFiles = new MultipartFile[1]; - multipartFiles[0] = multipartFile; - nameList = minioUtil.upload(multipartFiles); - } catch (IOException ie) { - log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - log.error("the upload Certificate input stream release is anomaly"); - } - } - return nameList.get(0); - } - } - - /** - * 创建文件目录,为mini下载文件准备临时工作空间 - */ - private void createLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以. - if (file.exists()) { - deleteFile(file); - } - file.mkdirs(); //创建目录 - } - - /** - * 对打印报告产生的工作空间进行删除,归还内存 - */ - private void deleteFile(File invalidFile) { - //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 - File[] files = invalidFile.listFiles(); - if (files != null) {//如果包含文件进行删除操作 - for (int i = 0; i < files.length; i++) { - if (files[i].isFile()) { - //删除子文件 - files[i].delete(); - } else if (files[i].isDirectory()) { - //通过递归的方法找到子目录的文件 - deleteFile(files[i]); - } - } - } - if (invalidFile.list().length == 0) { - log.debug("invalid print file has already delete success!"); - } - //删除子目录 - if (invalidFile != null && invalidFile.isDirectory()) { - invalidFile.delete(); - } - } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java new file mode 100644 index 0000000..089e88f --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java @@ -0,0 +1,191 @@ +package com.casic.missiles.service.listeners.register; + +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.List; + +@Component +@Slf4j +public class PrintFileSupport { + + @Autowired + private MinioClient minioClient; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + protected String createResponseFileInput(String printDocUrl, HttpServletResponse response) { + if (response == null) { +// return null; + return uploadCertificate(printDocUrl); + } + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8")); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return ""; + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + protected void downTemplateFile(String fileName, String tempLocalFileDir) { + if (StringUtils.isEmpty(fileName)) { + return; + } + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + protected String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + protected void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + protected void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java index bd6dacd..b9528e8 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java @@ -30,7 +30,7 @@ */ @Component @Slf4j -public class PrintFileRegister { +public class PrintFileRegister extends PrintFileSupport{ @Autowired private MinioClient minioClient; @@ -99,156 +99,4 @@ deleteFile(invalidFile); } } - - /** - * 返回文件流 - * - * @param printDocUrl 文件流路径,pdf,word - * @param response - */ - private void createResponseFileInput(String printDocUrl, HttpServletResponse response) { - File file = new File(printDocUrl); - InputStream in = null; - ByteArrayOutputStream out = null; - try { - FileInputStream fis = new FileInputStream(file); - out = new ByteArrayOutputStream(); - IOUtils.copy(fis, out); - //封装返回值 - byte[] data = out.toByteArray(); - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"" +printDocUrl+ "\""); - response.addHeader("Content-Length", "" + data.length); - response.setHeader("Access-Control-Allow-Origin", "*"); - response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); - response.setHeader("Access-Control-Max-Age", "3600"); - response.setHeader("Access-Control-Allow-Credentials", "true"); - response.setHeader("Access-Control-Allow-Headers", "*"); - response.setContentType("application/octet-stream;charset=UTF-8"); - IOUtils.copy(fis, response.getOutputStream()); - OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); - outputStream.write(data); - outputStream.flush(); - outputStream.close(); - response.flushBuffer(); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - - /** - * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 - */ - private void downTemplateFile(String fileName, String tempLocalFileDir) { - InputStream in = null; - ByteArrayOutputStream out = null; - try { - in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); - out = new ByteArrayOutputStream(); - IOUtils.copy(in, out); - //封装返回值 - byte[] bytes = out.toByteArray(); - FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /** - * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 - */ - @Deprecated - public String uploadCertificate(String certificatePrintUrl) { - //上传证书 - File file = new File(certificatePrintUrl); - //获取file对象的文件输入流 - FileInputStream input = null; - List nameList = null; - try { - input = new FileInputStream(file); - MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); - MultipartFile[] multipartFiles = new MultipartFile[1]; - multipartFiles[0] = multipartFile; - nameList = minioUtil.upload(multipartFiles); - } catch (IOException ie) { - log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - log.error("the upload Certificate input stream release is anomaly"); - } - } - return nameList.get(0); - } - } - - /** - * 创建文件目录,为mini下载文件准备临时工作空间 - */ - private void createLocalFileDir(String tempLocalFileDir) { - File file = new File(tempLocalFileDir); //以. - if (file.exists()) { - deleteFile(file); - } - file.mkdirs(); //创建目录 - } - - /** - * 对打印报告产生的工作空间进行删除,归还内存 - */ - private void deleteFile(File invalidFile) { - //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 - File[] files = invalidFile.listFiles(); - if (files != null) {//如果包含文件进行删除操作 - for (int i = 0; i < files.length; i++) { - if (files[i].isFile()) { - //删除子文件 - files[i].delete(); - } else if (files[i].isDirectory()) { - //通过递归的方法找到子目录的文件 - deleteFile(files[i]); - } - } - } - if (invalidFile.list().length == 0) { - log.debug("invalid print file has already delete success!"); - } - //删除子目录 - if (invalidFile != null && invalidFile.isDirectory()) { - invalidFile.delete(); - } - } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java new file mode 100644 index 0000000..089e88f --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileSupport.java @@ -0,0 +1,191 @@ +package com.casic.missiles.service.listeners.register; + +import com.casic.missiles.utils.MinioUtil; +import io.minio.GetObjectArgs; +import io.minio.MinioClient; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.List; + +@Component +@Slf4j +public class PrintFileSupport { + + @Autowired + private MinioClient minioClient; + @Autowired + private MinioUtil minioUtil; + @Value("${minio.bucketName}") + private String bucketName; + + /** + * 返回文件流 + * + * @param printDocUrl 文件流路径,pdf,word + * @param response + */ + protected String createResponseFileInput(String printDocUrl, HttpServletResponse response) { + if (response == null) { +// return null; + return uploadCertificate(printDocUrl); + } + File file = new File(printDocUrl); + InputStream in = null; + ByteArrayOutputStream out = null; + try { + FileInputStream fis = new FileInputStream(file); + out = new ByteArrayOutputStream(); + IOUtils.copy(fis, out); + //封装返回值 + byte[] data = out.toByteArray(); + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8")); + response.addHeader("Content-Length", "" + data.length); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setContentType("application/octet-stream;charset=UTF-8"); + IOUtils.copy(fis, response.getOutputStream()); + OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); + outputStream.write(data); + outputStream.flush(); + outputStream.close(); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return ""; + } + + + /** + * 从mini文件服务器下载文件,获取文件的读写权限,用户证书报告的生成 + */ + protected void downTemplateFile(String fileName, String tempLocalFileDir) { + if (StringUtils.isEmpty(fileName)) { + return; + } + InputStream in = null; + ByteArrayOutputStream out = null; + try { + in = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileName).build()); + out = new ByteArrayOutputStream(); + IOUtils.copy(in, out); + //封装返回值 + byte[] bytes = out.toByteArray(); + FilePrintRegisterUtils.byteToFile(bytes, tempLocalFileDir, fileName); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 通过生成的证书报告,将证书报告上传到远程mini的文件服务器 + */ + protected String uploadCertificate(String certificatePrintUrl) { + //上传证书 + File file = new File(certificatePrintUrl); + //获取file对象的文件输入流 + FileInputStream input = null; + List nameList = null; + try { + input = new FileInputStream(file); + MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), MediaType.MULTIPART_FORM_DATA_VALUE, IOUtils.toByteArray(input)); + MultipartFile[] multipartFiles = new MultipartFile[1]; + multipartFiles[0] = multipartFile; + nameList = minioUtil.upload(multipartFiles); + } catch (IOException ie) { + log.error("Description Failed to upload the certificate to the server,the failed reason is {}...", ie); + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + log.error("the upload Certificate input stream release is anomaly"); + } + } + return nameList.get(0); + } + } + + /** + * 创建文件目录,为mini下载文件准备临时工作空间 + */ + protected void createLocalFileDir(String tempLocalFileDir) { + File file = new File(tempLocalFileDir); //以. + if (file.exists()) { + deleteFile(file); + } + file.mkdirs(); //创建目录 + } + + /** + * 对打印报告产生的工作空间进行删除,归还内存 + */ + protected void deleteFile(File invalidFile) { + //返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 + File[] files = invalidFile.listFiles(); + if (files != null) {//如果包含文件进行删除操作 + for (int i = 0; i < files.length; i++) { + if (files[i].isFile()) { + //删除子文件 + files[i].delete(); + } else if (files[i].isDirectory()) { + //通过递归的方法找到子目录的文件 + deleteFile(files[i]); + } + } + } + if (invalidFile.list().length == 0) { + log.debug("invalid print file has already delete success!"); + } + //删除子目录 + if (invalidFile != null && invalidFile.isDirectory()) { + invalidFile.delete(); + } + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java index 536d844..47e35f4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/GenericFilePrintProcessor.java @@ -9,6 +9,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.file.ModuleFieldConfig; import com.casic.missiles.model.file.ModuleTemplatePrintConfig; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -21,6 +22,7 @@ * @date 2023-8-9 */ @Component +@Slf4j public class GenericFilePrintProcessor extends FilePrintSupport { /** @@ -36,9 +38,10 @@ Assert.isFalse(ObjectUtils.isEmpty(moduleTemplatePrintConfig.getTemplateFileId()), () -> { throw new BusinessException(BusinessExceptionEnum.TEMPLATE_FILE_NULL); }); - + moduleIdValue = ObjectUtils.isEmpty(moduleIdValue) ? (Long) customParam.get("id") : moduleIdValue; //根据打印模板配置,初始化文件打印注册信息 FilePrintRegister filePrintRegister = initialization(templateFileDir, moduleIdValue, moduleTemplatePrintConfig); + log.debug("执行定制化参数,初始化的模板参数为{}",JSON.toJSON(filePrintRegister)); if (customParam != null) { Assert.isFalse(ObjectUtils.isEmpty(customParam), () -> { throw new RuntimeException("没有文件数据,请确保有数据后重试!"); @@ -62,11 +65,12 @@ //1、健壮性校验 2 对责任链执行链式操作 if (CollectionUtils.isNotEmpty(sortFieldConfigList)) { for (ModuleFieldConfig moduleFieldConfig : sortFieldConfigList) { + //处理合并的参数 + populateMergeColNames(moduleFieldConfig, filePrintRegister); relateModuleField(filePrintRegister, tableNameIdMap, moduleFieldConfig); } } } - return filePrintRegister; }