diff --git a/http/server/server.http b/http/server/server.http index c281313a..5698d531 100644 --- a/http/server/server.http +++ b/http/server/server.http @@ -266,6 +266,17 @@ Authorization: {{accessToken}} GET {{appHost}}/api/ctr/cntrl/group Authorization: {{accessToken}} +### 드론원스톱에 전송 +POST {{appHost}}/api/bas/dos/send +Authorization: {{accessToken}} +Content-Type: application/json + +{ + "planAreaSnoList": [ + 17,18 + ] +} + ### WS WEBSOCKET {{wsHost}}/ws diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/controller/BasDosController.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/controller/BasDosController.java index 08ef2eb4..47a4ff4e 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/controller/BasDosController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/controller/BasDosController.java @@ -50,7 +50,7 @@ public class BasDosController { rs = basDosService.getPagingDosPlan(rq, PlanSelectType.LIST); } catch (CustomException e) { ErrorCode errorCode = ErrorCode.fromCode(e.getSourceErrorCode()); - String paramMessage = (String)e.getParamArray()[0]; + String paramMessage = (String) e.getParamArray()[0]; Map resultMap = new HashMap<>(); log.error("IGNORE : ", e); @@ -86,7 +86,7 @@ public class BasDosController { * @return */ @PatchMapping("/plan/reviewed") - public ResponseEntity updateDosPlanReviewed(@RequestBody DosBasPlanReviewedRq rq) { + public ResponseEntity updateDosPlanReviewed(@RequestBody BasDosPlanReviewedRq rq) { if (rq == null || rq.getPlanAreaSnoList() == null || rq.getPlanAreaSnoList().isEmpty() || rq.getReviewedType() == null) { throw new CustomException(ErrorCode.NON_VALID_PARAMETER); } @@ -96,11 +96,12 @@ public class BasDosController { /** * 비행계획 검토 - 관제과 + * * @param rq * @return */ @PatchMapping("/plan/reviewed/proc") - public ResponseEntity updateDosPlanReviewedProc(@RequestBody DosBasPlanReviewedProcRq rq) { + public ResponseEntity updateDosPlanReviewedProc(@RequestBody BasDosPlanReviewedProcRq rq) { if (rq == null || rq.getPlanAreaSnoList() == null || rq.getPlanAreaSnoList().isEmpty() || rq.getReviewedProcType() == null) { throw new CustomException(ErrorCode.NON_VALID_PARAMETER); } @@ -141,6 +142,24 @@ public class BasDosController { basDosService.createHanCom(rs); } - + /** + * 드론원스톱에 전송 + * + * @param rq + */ + @PostMapping("/send") + public ResponseEntity sendDosPlan(@RequestBody BasDosSendDosPlanRq rq) { + try { + basDosService.sendDosPlan(rq); + } catch (CustomException e) { + Map resultMap = new HashMap<>(); + log.error("IGNORE : ", e); + resultMap.put("result", false); + resultMap.put("errorCode", e.getErrorCode()); + resultMap.put("errorMessage", e.getMessage()); + return ResponseEntity.ok().body(new SuccessResponse<>(resultMap)); + } + return ResponseEntity.ok().build(); + } } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedProcRq.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedProcRq.java similarity index 93% rename from pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedProcRq.java rename to pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedProcRq.java index 7c2708a2..cc04eb2a 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedProcRq.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedProcRq.java @@ -13,7 +13,7 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor @Builder -public class DosBasPlanReviewedProcRq { +public class BasDosPlanReviewedProcRq { @Schema(description = "비행구역일련번호", example = "[1, 2, 3]", type = "array") private List planAreaSnoList; @Schema(description = "검토처리유형", example = "P", implementation = ReviewedProcType.class) diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedRq.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedRq.java similarity index 94% rename from pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedRq.java rename to pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedRq.java index 6759b1c1..bdffbeee 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedRq.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedRq.java @@ -13,7 +13,7 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor @Builder -public class DosBasPlanReviewedRq { +public class BasDosPlanReviewedRq { @Schema(description = "비행구역일련번호", example = "[1, 2, 3]", type = "array") private List planAreaSnoList; diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosSendDosPlanRq.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosSendDosPlanRq.java new file mode 100644 index 00000000..37fe3076 --- /dev/null +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosSendDosPlanRq.java @@ -0,0 +1,18 @@ +package com.palnet.biz.api.bas.dos.model; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class BasDosSendDosPlanRq { + @Schema(description = "비행구역일련번호", example = "[1, 2, 3]", type = "array") + private List planAreaSnoList; +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java index 985314a8..02e38df8 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java @@ -18,6 +18,7 @@ import com.palnet.biz.jpa.entity.DosFltPlanBas; import com.palnet.biz.jpa.entity.DosFltPlanResult; import com.palnet.biz.jpa.entity.type.ReviewedProcType; import com.palnet.biz.jpa.entity.type.ReviewedType; +import com.palnet.biz.jpa.entity.type.SendStatusType; import com.palnet.biz.jpa.repository.dos.*; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; @@ -428,7 +429,7 @@ public class BasDosService { * * @param rq */ - public void updatePlanReviewed(DosBasPlanReviewedRq rq) { + public void updatePlanReviewed(BasDosPlanReviewedRq rq) { ReviewedType reqReviewedType = rq.getReviewedType(); if (reqReviewedType == null || reqReviewedType == ReviewedType.CANCEL || reqReviewedType == ReviewedType.PROCESS) { log.warn("request reviewedType is not valid : {}", reqReviewedType); @@ -466,7 +467,7 @@ public class BasDosService { * * @param rq */ - public void updatePlanReviewedProc(DosBasPlanReviewedProcRq rq) { + public void updatePlanReviewedProc(BasDosPlanReviewedProcRq rq) { ReviewedProcType reqReviewedProcType = rq.getReviewedProcType(); if (reqReviewedProcType == null || reqReviewedProcType == ReviewedProcType.SUCCESS || reqReviewedProcType == ReviewedProcType.WAIT || reqReviewedProcType == ReviewedProcType.RE_REVIEW) { log.warn("request reviewedProcType is not valid : {}", reqReviewedProcType); @@ -1349,4 +1350,29 @@ public class BasDosService { } + /** + * 드론원스톱 전송 + * + * @param rq + */ + public void sendDosPlan(BasDosSendDosPlanRq rq) { + List dosFltPlanAreaList = dosFltPlanAreaRepository.findByPlanAreaSnoIn(rq.getPlanAreaSnoList()); + if(dosFltPlanAreaList == null || dosFltPlanAreaList.isEmpty()) { + throw new CustomException(ErrorCode.DATA_NOTFIND); + } + + boolean isNotSuccess = dosFltPlanAreaList.stream().anyMatch(area -> area.getReviewedType() != ReviewedType.SUCCESS); + if(isNotSuccess) { + throw new CustomException(ErrorCode.DOS_NOT_VALID_REVIEWED_TYPE); + } + + // TODO 드론원스톱 전송 로직 - 데이터 가져오기, 드론원스톱 전송 + + // 드론원스톱 전송 성공시 + dosFltPlanAreaList.forEach(area -> { + area.setSendStatus(SendStatusType.SEND); + }); + dosFltPlanAreaRepository.saveAll(dosFltPlanAreaList); + + } } diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java index d215ad4b..65aecb26 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java @@ -2,8 +2,10 @@ package com.palnet.biz.jpa.entity; import com.palnet.biz.jpa.entity.converter.ReviewedProcTypeConverter; import com.palnet.biz.jpa.entity.converter.ReviewedTypeConverter; +import com.palnet.biz.jpa.entity.converter.SendStatusTypeConverter; import com.palnet.biz.jpa.entity.type.ReviewedProcType; import com.palnet.biz.jpa.entity.type.ReviewedType; +import com.palnet.biz.jpa.entity.type.SendStatusType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -71,6 +73,10 @@ public class DosFltPlanArea { @Convert(converter = ReviewedProcTypeConverter.class) @Column(name = "REVIEWED_PROC_TYPE") private ReviewedProcType reviewedProcType; + // 전송유형 + @Convert(converter = SendStatusTypeConverter.class) + @Column(name = "SEND_STATUS") + private SendStatusType sendStatus; // 장애물 제한 표면 @Column(name = "LIMIT_ZONE") private String limitZone; diff --git a/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java b/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java index 4580b9d8..38e5fc64 100644 --- a/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java +++ b/pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java @@ -7,6 +7,7 @@ public enum ErrorCode { SUCCESS("1", "성공"), FAIL("-1", "실패"), NON_VALID_PARAMETER("VP001", "파라미터가 유효하지 않습니다."), + NOT_VALID_STATUS("VP002", "상태가 유효하지 않습니다."), INTERNAL_SERVER_ERROR("ER500", "내부 시스템 오류"), NOT_REGIST_ERROR_CODE("ER501", "등록되지 않은 오류 코드"), DATA_NOTFIND("DT001", "데이터 를 찾을수 없습니다."), @@ -23,6 +24,7 @@ public enum ErrorCode { LIMIT_CALL("LT001", "호출횟수가 초과되었습니다."), + DOS_NOT_VALID_REVIEWED_TYPE("CT001", "검토유형이 유효하지 않습니다."), // TS 연동 ERROR CODE TS_SUCCESS("TS200", "정상적으로 수신되었습니다."),