From a49114c59068976bf7be665df458bee1a9b7d4ef Mon Sep 17 00:00:00 2001 From: qkr7828 Date: Fri, 22 Dec 2023 21:52:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9D=EB=B3=84=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=A1=B0=EA=B1=B4=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dron/controller/BasDronController.java | 38 ++++++++++++++++++ .../bas/dron/model/BasIdntfUpdateModel.java | 17 ++++++++ .../api/bas/dron/service/BasDronService.java | 39 +++++++++++++++++++ .../pty/PtyDronQueryRepository.java | 11 +++++- 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfUpdateModel.java diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java index 25fcbcde..4cb7f435 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java @@ -335,6 +335,44 @@ public class BasDronController { } return ResponseEntity.ok().body(new SuccessResponse(resultMap)); + } + /** + * 식별장치 수정 + * @param id + * @return + */ + @PutMapping(value = "/idntf/update/{id}") + @Operation(summary = "드론식별장치 정보 수정", description = "드론[기체]식별장치 정보를 수정합니다.") + public ResponseEntity updateIdntf(@RequestBody BasIdntfUpdateModel rq) { + Map resultMap = new HashMap(); + + try { + // 기체일련번호확인[id] 입력값 검증처리 + if(StringUtils.isEmpty(rq.getIdntfNum())) { + // 검증통과하지 못할 시 서버에서 "의도적인" 에러 반환 + return ResponseEntity.status(HttpStatus.OK) // "의도적인" 에러 반환코드 + .body(new ErrorResponse(RSErrorCode.ER_PARAM)); + } + + boolean result = service.updateIdntf(rq); // 드론정보 수정하는 기능. + + resultMap.put("result", result); + + } catch (Exception e) { + /** + * try{ + ... + } + * try 영역 안 코드들중 문제가 생기면 오는 곳. + * log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌 + */ + log.error("IGNORE : {}", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ErrorResponse("Server Error", "-1")); + + } + return ResponseEntity.ok().body(new SuccessResponse(resultMap)); + } /** diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfUpdateModel.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfUpdateModel.java new file mode 100644 index 00000000..30ad62b2 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfUpdateModel.java @@ -0,0 +1,17 @@ +package com.palnet.biz.api.bas.dron.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class BasIdntfUpdateModel { + + @Schema(description = "기체 식별번호", example = "PA0001") + private String idntfNum; + + @Schema(description = "변경할 소유자명", example = "수정소유자명") + private String ownerNm; + + @Schema(description = "변경할 핸드폰 번호", example = "01036907198") + private String hpno; +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java index 5be94c80..8d2d2199 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java @@ -1,6 +1,8 @@ package com.palnet.biz.api.bas.dron.service; import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; @@ -18,6 +20,7 @@ import com.palnet.biz.api.bas.dron.model.BasDronModel; import com.palnet.biz.api.bas.dron.model.BasDronRqModel; import com.palnet.biz.api.bas.dron.model.BasIdntfModel; import com.palnet.biz.api.bas.dron.model.BasIdntfRqModel; +import com.palnet.biz.api.bas.dron.model.BasIdntfUpdateModel; import com.palnet.biz.api.comn.model.ComnPagingRs; import com.palnet.biz.jpa.entity.ComArcrftBas; import com.palnet.biz.jpa.entity.ComIdntfBas; @@ -209,6 +212,42 @@ public class BasDronService { } + /** + * 드론정보 수정하는 기능. + * @param idntfNum + * @return + */ + public boolean updateIdntf(BasIdntfUpdateModel rq) { + + Optional optional = comIdntBasRepository.findById(rq.getIdntfNum()); + + if (!optional.isPresent()) { + throw new CustomException(ErrorCode.DATA_NOTFIND); + } + String hpno = ""; + ComIdntfBas entity = optional.get(); + + if(rq.getHpno() != null && rq.getHpno() != "") { + hpno = EncryptUtils.encrypt(rq.getHpno()); + entity.setHpno(hpno); + } + + if(rq.getOwnerNm() != null && rq.getOwnerNm() != "") { + entity.setOwnerNm(rq.getOwnerNm()); + } + + ZoneId koreaZoneId = ZoneId.of("Asia/Seoul"); + + ZonedDateTime koreaTime = ZonedDateTime.ofInstant(Instant.now(), koreaZoneId); + + entity.setUpdateDt(koreaTime.toInstant()); + + comIdntBasRepository.save(entity); + + return true; + + } + /** * 드론정보 삭제하는 기능. * @param idntfNum diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyDronQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyDronQueryRepository.java index a60f9887..a16b9d2d 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyDronQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyDronQueryRepository.java @@ -1,6 +1,7 @@ package com.palnet.biz.jpa.repository.pty; +import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; @@ -243,7 +244,10 @@ public class PtyDronQueryRepository{ * WHERE CIB.ARCRFT_SNO = #{arcrftSno} * ORDER BY CIB.CREATE_DT ASC */ - List result = + + List result = new ArrayList<>(); + + BasIdntfModel res = query.select(Projections.bean(BasIdntfModel.class , idnt.arcrftSno, @@ -260,7 +264,10 @@ public class PtyDronQueryRepository{ .on(idnt.arcrftSno.eq(arcrft.arcrftSno)) .where(builder) .orderBy(idnt.createDt.asc()) - .fetch(); + .fetchFirst(); + + result.add(res); + return result; }