From 3eff7edc9dad0bfbff710c98f1e95bd559b0e501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Thu, 4 Dec 2025 18:01:11 +0900 Subject: [PATCH] =?UTF-8?q?PRN=20=ED=8C=8C=EC=9D=BC=20=ED=99=95=EC=9E=A5?= =?UTF-8?q?=EC=9E=90=EB=AA=85=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CarFfnlgTrgtController.java | 14 +++++++------- .../service/impl/CarFfnlgTrgtServiceImpl.java | 4 ++-- .../service/impl/ComparisonRemarkBuilder.java | 8 ++++---- src/main/resources/application-dev.yml | 2 +- src/main/resources/application-local.yml | 2 +- src/main/resources/application-prd.yml | 2 +- .../carInspectionPenalty/registration/list.jsp | 6 +++--- .../registration/uploadPopup.jsp | 14 +++++++------- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/go/kr/project/carInspectionPenalty/registration/controller/CarFfnlgTrgtController.java b/src/main/java/go/kr/project/carInspectionPenalty/registration/controller/CarFfnlgTrgtController.java index ae00b51..0ebcbf9 100644 --- a/src/main/java/go/kr/project/carInspectionPenalty/registration/controller/CarFfnlgTrgtController.java +++ b/src/main/java/go/kr/project/carInspectionPenalty/registration/controller/CarFfnlgTrgtController.java @@ -130,7 +130,7 @@ public class CarFfnlgTrgtController { // TODO : ECU-KR -> UTF-8 변환 byte[] utfFileBytes = content.getBytes(StandardCharsets.UTF_8); - String fileName = URLEncoder.encode("유효기간경과_과태료부과대상_리스트.txt", "UTF-8"); + String fileName = URLEncoder.encode("유효기간경과_과태료부과대상_리스트.prn", "UTF-8"); // 응답 헤더 설정 (텍스트 파일, UTF-8 인코딩) response.setContentType("text/plain; charset=UTF-8"); @@ -156,7 +156,7 @@ public class CarFfnlgTrgtController { * @return 팝업 화면 */ @GetMapping("/uploadPopup.do") - @Operation(summary = "파일 업로드 팝업", description = "TXT 파일 업로드 팝업 화면을 제공합니다.") + @Operation(summary = "파일 업로드 팝업", description = "TXT, PRN 파일 업로드 팝업 화면을 제공합니다.") public ModelAndView uploadPopup() { log.debug("파일 업로드 팝업 화면 요청"); @@ -174,11 +174,11 @@ public class CarFfnlgTrgtController { * @return 처리 결과 */ @PostMapping("/upload.ajax") - @Operation(summary = "TXT 파일 업로드", description = "TXT 파일을 업로드하고 파싱하여 DB에 저장합니다. 한 건이라도 실패 시 전체 롤백됩니다.") + @Operation(summary = "TXT, PRN 파일 업로드", description = "TXT, PRN 파일을 업로드하고 파싱하여 DB에 저장합니다. 한 건이라도 실패 시 전체 롤백됩니다.") public ResponseEntity upload( - @Parameter(description = "TXT 파일") @RequestParam("file") MultipartFile file) { + @Parameter(description = "TXT, PRN 파일") @RequestParam("file") MultipartFile file) { - log.info("TXT 파일 업로드 요청 - 파일명: {}", file != null ? file.getOriginalFilename() : "null"); + log.info("TXT, PRN 파일 업로드 요청 - 파일명: {}", file != null ? file.getOriginalFilename() : "null"); try { // 세션에서 사용자 ID 가져오기 @@ -217,11 +217,11 @@ public class CarFfnlgTrgtController { } catch (RuntimeException e) { // 데이터 처리 중 오류 발생 - 전체 롤백됨 - log.error("TXT 파일 업로드 중 오류 발생 - 전체 롤백", e); + log.error("TXT, PRN 파일 업로드 중 오류 발생 - 전체 롤백", e); return ApiResponseUtil.error(e.getMessage()); } catch (Exception e) { // 예상치 못한 오류 - log.error("TXT 파일 업로드 중 예상치 못한 오류 발생", e); + log.error("TXT, PRN 파일 업로드 중 예상치 못한 오류 발생", e); return ApiResponseUtil.error("파일 업로드 중 오류가 발생했습니다: " + e.getMessage()); } } diff --git a/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/CarFfnlgTrgtServiceImpl.java b/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/CarFfnlgTrgtServiceImpl.java index 3692d22..c293ddf 100644 --- a/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/CarFfnlgTrgtServiceImpl.java +++ b/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/CarFfnlgTrgtServiceImpl.java @@ -105,8 +105,8 @@ public class CarFfnlgTrgtServiceImpl extends EgovAbstractServiceImpl implements // 파일 확장자 검증 String originalFilename = file.getOriginalFilename(); - if (originalFilename == null || !originalFilename.toLowerCase().endsWith(".txt")) { - throw new IllegalArgumentException("TXT 파일만 업로드 가능합니다. 선택된 파일: " + originalFilename); + if (originalFilename == null || (!originalFilename.toLowerCase().endsWith(".txt") && !originalFilename.toLowerCase().endsWith(".prn"))) { + throw new IllegalArgumentException("TXT, PRN 파일만 업로드 가능합니다. 선택된 파일: " + originalFilename); } // 파일 크기 검증 (50MB 제한) diff --git a/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/ComparisonRemarkBuilder.java b/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/ComparisonRemarkBuilder.java index b326998..e5fe1d2 100644 --- a/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/ComparisonRemarkBuilder.java +++ b/src/main/java/go/kr/project/carInspectionPenalty/registration/service/impl/ComparisonRemarkBuilder.java @@ -50,9 +50,9 @@ public class ComparisonRemarkBuilder { //sb.append(" - 접수번호: ").append(StringUtil.nvl(ledgerRecord.getAplyRcptNo())).append("\n"); // 4. 비교 기간 - sb.append("\n■ 비교 기간\n"); + //sb.append("\n■ 비교 기간\n"); //sb.append(" - 유효기간만료일: ").append(DateUtil.formatDateString(vldPrdExpryYmd)).append("\n"); - sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n"); + //sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n"); return sb.toString(); } @@ -95,8 +95,8 @@ public class ComparisonRemarkBuilder { sb.append(" - 특별사항: ").append(StringUtil.nvl(ledgerRecord.getSpcablMttr())).append("\n"); // 4. 비교 기간 - sb.append("\n■ 비교 기간\n"); - sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n"); + //sb.append("\n■ 비교 기간\n"); + //sb.append(" - 검사종료일자: ").append(DateUtil.formatDateString(inspEndYmd)).append("\n"); return sb.toString(); } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f11fca0..4fb5522 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -138,7 +138,7 @@ file: max-size: 10 # 단일 파일 최대 크기 (MB) max-total-size: 100 # 총 파일 최대 크기 (MB) max-files: 10 # 최대 파일 개수 - allowed-extensions: txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip + allowed-extensions: prn,txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip real-file-delete: true # 실제 파일 삭제 여부 sub-dirs: api-target-list-txt-file: api/target # api 조회 대상 파일 diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index df79510..2d5cabd 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -147,7 +147,7 @@ file: max-size: 10 # 단일 파일 최대 크기 (MB) max-total-size: 100 # 총 파일 최대 크기 (MB) max-files: 10 # 최대 파일 개수 - allowed-extensions: txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip + allowed-extensions: prn,txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip real-file-delete: false # 실제 파일 삭제 여부 sub-dirs: api-target-list-txt-file: api/target # api 조회 대상 파일 diff --git a/src/main/resources/application-prd.yml b/src/main/resources/application-prd.yml index 257a534..10d909c 100644 --- a/src/main/resources/application-prd.yml +++ b/src/main/resources/application-prd.yml @@ -139,7 +139,7 @@ file: max-size: 10 # 단일 파일 최대 크기 (MB) max-total-size: 100 # 총 파일 최대 크기 (MB) max-files: 10 # 최대 파일 개수 - allowed-extensions: txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip + allowed-extensions: prn,txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip real-file-delete: true # 실제 파일 삭제 여부 sub-dirs: api-target-list-txt-file: api/target # api 조회 대상 파일 diff --git a/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp b/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp index d1cd2cd..6fc69e2 100644 --- a/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp +++ b/src/main/webapp/WEB-INF/views/carInspectionPenalty/registration/list.jsp @@ -9,10 +9,10 @@
-
과태료 대상 목록
- +
> 지연 과태료 대상 목록
+
- ※ TXT 파일만 업로드 가능합니다. (최대 50MB) + ※ TXT, PRN 파일만 업로드 가능합니다. (최대 50MB)
@@ -207,8 +207,8 @@ function uploadFile() { // 중요로직: 파일 확장자 검증 var fileName = file.name; var fileExt = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase(); - if (fileExt !== 'txt') { - alert("TXT 파일만 업로드 가능합니다."); + if (fileExt !== 'txt' && fileExt !== 'prn') { + alert("TXT, PRN 파일만 업로드 가능합니다."); return; } @@ -339,7 +339,7 @@ function clearFileInput() { $btnClear.hide(); // 파일 정보 초기화 - $('.file-info').html('※ TXT 파일만 업로드 가능합니다. (최대 50MB)'); + $('.file-info').html('※ TXT, PRN 파일만 업로드 가능합니다. (최대 50MB)'); } /**