feature/lannc/pdf-download #4

Merged
lkd9125 merged 11 commits from feature/lannc/pdf-download into develop 1 year ago
  1. 13
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  3. 28
      pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java
  5. 64
      pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java

13
pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java

@ -35,7 +35,6 @@ import com.palnet.biz.jpa.entity.ComFileBas;
import com.palnet.biz.scheduler.ctr.service.CtrTrnsLctnService;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.AreaUtils;
import com.palnet.comn.utils.PdfUtils;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@ -53,18 +52,14 @@ public class BasFlightController {
private final CtrTrnsLctnService ctrTrnsLctnService;
private final AreaUtils utils;
private final TemplateService templateService;
private final PdfUtils pdfUtils;
@Autowired
public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService, AreaUtils AreaUtils, TemplateService templateService, PdfUtils pdfUtils) {
public BasFlightController(BasFlightService basFlightService, Environment env, CtrTrnsLctnService ctrTrnsLctnService, AreaUtils AreaUtils, TemplateService templateService) {
this.basFlightService = basFlightService;
this.env = env;
this.ctrTrnsLctnService = ctrTrnsLctnService;
this.utils = AreaUtils;
this.templateService = templateService;
this.pdfUtils = pdfUtils;
}
@GetMapping("/area")
@ -432,6 +427,12 @@ public class BasFlightController {
templateService.save(comFileBas);
}
@GetMapping("/laanc-pdf/download")
@Tag(name = "비행계획서", description = "비행계획서 관련 API")
@ApiOperation(value = "Laanc 공문 다운로드")
public void downloadPDF(int fileSno){
templateService.fileDownload(fileSno);
}
}

4
pav-server/src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java

@ -47,8 +47,11 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@RequiredArgsConstructor
@ -838,5 +841,4 @@ public class BasFlightService {
return jsonObject;
}
}

28
pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java

@ -1,17 +1,15 @@
package com.palnet.biz.api.bas.flight.template.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.Instant;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,6 +20,8 @@ import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.flight.template.vo.LaancPdfVO;
import com.palnet.biz.jpa.entity.ComFileBas;
import com.palnet.biz.jpa.repository.com.ComFileBasRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.InstantUtils;
import com.palnet.comn.utils.PdfUtils;
@ -106,4 +106,18 @@ public class TemplateService {
comFileBasRepository.save(comFileBas);
}
/**
* 파일 다운로드
* @param fileSno
* @param response
*/
public void fileDownload(int fileSno) {
ComFileBas comFileBas = comFileBasRepository.findById(fileSno).orElse(null);
if(comFileBas == null) throw new CustomException(ErrorCode.DATA_NOTFIND);
pdfUtils.fileDownload(comFileBas);
}
}

2
pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComFileBasRepository.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Repository;
import com.palnet.biz.jpa.entity.ComFileBas;
@Repository
public interface ComFileBasRepository extends JpaRepository<ComFileBas, String>{
public interface ComFileBasRepository extends JpaRepository<ComFileBas, Integer>{
public ComFileBas findFirstByOrderByFileSnoDesc();
}

64
pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java

@ -1,19 +1,27 @@
package com.palnet.comn.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringReader;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.Instant;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.method.P;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@ -35,13 +43,16 @@ import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline;
import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.flight.template.vo.PdfBaseVO;
import com.palnet.biz.jpa.entity.ComFileBas;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
@Component
public class PdfUtils {
@Autowired
private HttpServletResponse response;
@Autowired
private TemplateEngine templateEngine;
@ -166,4 +177,55 @@ public class PdfUtils {
return result;
}
/**
* 파일 Download
* @param comFileBas
*/
public void fileDownload(ComFileBas comFileBas){
InputStream inputStream = null;
OutputStream outputStream = null;
try {
File pdfFile = new File(comFileBas.getFilePath() + comFileBas.getFileSaveNm());
inputStream = new FileInputStream(pdfFile);
String fileOriName = comFileBas.getFileOriNm();
fileOriName = URLEncoder.encode(comFileBas.getFileOriNm(), "UTF-8");
response.setContentType("application/octet-stream");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileOriName + "\"");
response.setContentLengthLong(Long.parseLong(comFileBas.getFileSize()));
response.setStatus(HttpServletResponse.SC_OK);
outputStream = response.getOutputStream();
byte[] buffer = new byte[1024]; //1KB 설정
int length;
while((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer);
}
} catch (FileNotFoundException e) {
throw new CustomException(ErrorCode.DATA_NO);
} catch (IOException e){
e.printStackTrace();
} finally {
try {
if(outputStream != null){
Objects.requireNonNull(outputStream).flush();
outputStream.close();
}
if(inputStream != null){
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Loading…
Cancel
Save