From d98040adf5daa3cace8b15d93ba51da783b0f437 Mon Sep 17 00:00:00 2001 From: bangae1 Date: Wed, 4 Jun 2025 16:16:11 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=84=EC=95=BD=EA=B4=80=EB=A6=AC=20&=20?= =?UTF-8?q?=EB=8C=80=EA=B8=88=EC=A7=80=EA=B8=89=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kospo/svcm/controller/ContController.java | 23 +++++++++++++++++++ .../kospo/svcm/controller/SlipController.java | 22 ++++++++++++++++++ .../kospo/svcm/repository/ContRepository.java | 2 ++ .../kospo/svcm/repository/SlipRepository.java | 1 + .../com/kospo/svcm/service/ContService.java | 2 ++ .../com/kospo/svcm/service/SlipService.java | 2 ++ .../svcm/service/impl/ContServiceImpl.java | 20 +++++++++++++++- .../svcm/service/impl/SlipServiceImpl.java | 20 ++++++++++++++++ 8 files changed, 91 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kospo/svcm/controller/ContController.java b/src/main/java/com/kospo/svcm/controller/ContController.java index 1e77010..85e4171 100644 --- a/src/main/java/com/kospo/svcm/controller/ContController.java +++ b/src/main/java/com/kospo/svcm/controller/ContController.java @@ -160,4 +160,27 @@ public class ContController { ) { return ResponseEntity.ok(contService.retrieve(contNo)); } + + + @Operation(summary = "계약관리 첨부파일 삭제", description = "계약관리 문서(첨부파일) 삭제") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @DeleteMapping("/cont/{contNo}/{fileOrd}") + public ResponseEntity fileDelete( + @Parameter(description = "계약번호") @PathVariable String contNo, + @Parameter(description = "파일순서") @PathVariable Integer fileOrd, + Principal principal + ) { + contService.contAttFileDelete(contNo, fileOrd); + return ResponseEntity.ok("삭제 되었습니다."); + } } diff --git a/src/main/java/com/kospo/svcm/controller/SlipController.java b/src/main/java/com/kospo/svcm/controller/SlipController.java index 0ab4ff8..9326255 100644 --- a/src/main/java/com/kospo/svcm/controller/SlipController.java +++ b/src/main/java/com/kospo/svcm/controller/SlipController.java @@ -119,4 +119,26 @@ public class SlipController { slipService.delete(contNo); return ResponseEntity.ok("삭제 되었습니다."); } + + @Operation(summary = "대금지급 첨부파일 삭제", description = "대금지급 문서(첨부파일) 삭제") + @ApiResponses({ + @ApiResponse(description = "Success", responseCode = "200", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Not found", responseCode = "404", + content = @Content(mediaType = "text/plain", schema = @Schema(oneOf = + {String.class}))), + @ApiResponse(description = "Internal Error", responseCode = "500", + content = @Content(mediaType = "application/json", schema = @Schema(oneOf = + {CustomErrorResponse.class }))) + }) + @DeleteMapping("/slip/{contNo}/{fileOrd}") + public ResponseEntity fileDelete( + @Parameter(description = "계약번호") @PathVariable String contNo, + @Parameter(description = "파일순서") @PathVariable Integer fileOrd, + Principal principal + ) { + slipService.slipAttFileDelete(contNo, fileOrd); + return ResponseEntity.ok("삭제 되었습니다."); + } } diff --git a/src/main/java/com/kospo/svcm/repository/ContRepository.java b/src/main/java/com/kospo/svcm/repository/ContRepository.java index 4d399ec..4281256 100644 --- a/src/main/java/com/kospo/svcm/repository/ContRepository.java +++ b/src/main/java/com/kospo/svcm/repository/ContRepository.java @@ -15,6 +15,8 @@ public interface ContRepository extends JpaRepository { Cont findByContNoAndContStatCd(String contNo, String contStatCd); + Cont findByContNoAndRegSabun(String contNo, String sabun); + interface IContResponse { String getContNo(); String getCateCd(); diff --git a/src/main/java/com/kospo/svcm/repository/SlipRepository.java b/src/main/java/com/kospo/svcm/repository/SlipRepository.java index cfbf426..729c806 100644 --- a/src/main/java/com/kospo/svcm/repository/SlipRepository.java +++ b/src/main/java/com/kospo/svcm/repository/SlipRepository.java @@ -5,5 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface SlipRepository extends JpaRepository { Slip findByContNo(String contNo); + Slip findByContNoAndRegSabun(String contNo, String sabun); Slip findByBelnr(String belnr); } diff --git a/src/main/java/com/kospo/svcm/service/ContService.java b/src/main/java/com/kospo/svcm/service/ContService.java index 6afb4e0..eb4fbeb 100644 --- a/src/main/java/com/kospo/svcm/service/ContService.java +++ b/src/main/java/com/kospo/svcm/service/ContService.java @@ -24,4 +24,6 @@ public interface ContService { @org.springframework.transaction.annotation.Transactional ContSaveResponse retrieve(String contNo); + + void contAttFileDelete(String contNo, Integer fileOrd); } diff --git a/src/main/java/com/kospo/svcm/service/SlipService.java b/src/main/java/com/kospo/svcm/service/SlipService.java index 13bf6f5..44347ce 100644 --- a/src/main/java/com/kospo/svcm/service/SlipService.java +++ b/src/main/java/com/kospo/svcm/service/SlipService.java @@ -16,4 +16,6 @@ public interface SlipService { @Transactional void delete(String contNo); + + void slipAttFileDelete(String contNo, Integer fileOrd); } diff --git a/src/main/java/com/kospo/svcm/service/impl/ContServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/ContServiceImpl.java index 2cda4e8..745200c 100644 --- a/src/main/java/com/kospo/svcm/service/impl/ContServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/ContServiceImpl.java @@ -25,7 +25,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; -import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; @@ -283,4 +282,23 @@ public class ContServiceImpl implements ContService { return ContSaveResponse.from(contRepository.save(cont)); } + @Override + public void contAttFileDelete(String contNo, Integer fileOrd) { + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + Cont checker = contRepository.findByContNoAndRegSabun(contNo, user.getSabun()); + if(checker != null) { + ContAtt contAtt = contAttRepository.findById(ContAttId.builder() + .contNo(contNo) + .fileOrd(fileOrd) + .build()).get(); + if (fileUtils.fileDelete(contAtt.getPath())) { + contAttRepository.delete(contAtt); + } else { + throw new CustomException(ErrorCode.FILE_DELETE_ERROR); + } + } else { + throw new CustomException(ErrorCode.AUTHENTICATION_NOT_SUPPORT); + } + + } } diff --git a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java index ac44e37..f47b733 100644 --- a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java @@ -342,4 +342,24 @@ public class SlipServiceImpl implements SlipService { } ); } + + @Override + public void slipAttFileDelete(String contNo, Integer fileOrd) { + User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + Slip checker = slipRepository.findByContNoAndRegSabun(contNo, user.getSabun()); + if(checker != null) { + SlipAtt slipAtt = slipAttRepository.findById(SlipAttId.builder() + .contNo(contNo) + .fileOrd(fileOrd) + .build()).get(); + if (fileUtils.fileDelete(slipAtt.getPath())) { + slipAttRepository.delete(slipAtt); + } else { + throw new CustomException(ErrorCode.FILE_DELETE_ERROR); + } + } else { + throw new CustomException(ErrorCode.AUTHENTICATION_NOT_SUPPORT); + } + + } }