Browse Source

feat: 드론원스톱 처리내역 전송

feature/dos/statistics
지대한 2 weeks ago
parent
commit
4b39d96ea9
  1. 11
      http/server/server.http
  2. 27
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/controller/BasDosController.java
  3. 2
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedProcRq.java
  4. 2
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosPlanReviewedRq.java
  5. 18
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/BasDosSendDosPlanRq.java
  6. 30
      pav-server/src/main/java/com/palnet/biz/api/bas/dos/service/BasDosService.java
  7. 6
      pav-server/src/main/java/com/palnet/biz/jpa/entity/DosFltPlanArea.java
  8. 2
      pav-server/src/main/java/com/palnet/comn/code/ErrorCode.java

11
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

27
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<String, Object> 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<String, Object> 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();
}
}

2
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedProcRq.java → 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<Long> planAreaSnoList;
@Schema(description = "검토처리유형", example = "P", implementation = ReviewedProcType.class)

2
pav-server/src/main/java/com/palnet/biz/api/bas/dos/model/DosBasPlanReviewedRq.java → 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<Long> planAreaSnoList;

18
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<Long> planAreaSnoList;
}

30
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<DosFltPlanArea> 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);
}
}

6
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;

2
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", "정상적으로 수신되었습니다."),

Loading…
Cancel
Save