diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java index 758bced..a8ef363 100644 --- a/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java @@ -1,5 +1,11 @@ package com.palnet.biz.api.ctr.cntrl.controller; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -8,12 +14,14 @@ import com.palnet.biz.api.ctr.cntrl.model.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.tags.Tag; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrGroupModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; import com.palnet.biz.api.comn.response.BasicResponse; import com.palnet.biz.api.comn.response.ErrorResponse; @@ -48,10 +56,10 @@ public class CtrCntrlController { public ResponseEntity historyList(@PathVariable String id) { List result = null; - try { - result = service.getListHistory(id); + try { + result = service.getListHistory(id); - } catch (Exception e) { + } catch (Exception e) { log.error("IGNORE : {}", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(new ErrorResponse("Server Error", "-1")); @@ -63,7 +71,7 @@ public class CtrCntrlController { /** * TODO 드론 관제 상세 정보 * - * @param id - 관제 ID + * @param id - 관제 ID * @return */ @GetMapping(value = "/detail/{id}") @@ -72,11 +80,11 @@ public class CtrCntrlController { @ApiImplicitParam(name = "id",value = "관제ID", dataTypeClass = String.class) public ResponseEntity detail(@PathVariable String id) { CtrCntrlDtlModel result = null; - - try { - result = service.getDetail(id); - - } catch (Exception e) { + + try { + result = service.getDetail(id); + + } catch (Exception e) { log.error("IGNORE : {}", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(new ErrorResponse("Server Error", "-1")); @@ -108,6 +116,44 @@ public class CtrCntrlController { return ResponseEntity.ok().body(new SuccessResponse<>(history)); } + @GetMapping("/api/weather") + @ApiOperation(value = "TODO 드론 관제 '실시간' 이력 목록") + @Tag(name = "드론 관제 시스템", description = "드론 관제 관련 API") + public ResponseEntity restApiGetWeather(CtrCntrlWeatherModel rs) throws IOException, ParseException { + StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst"); + urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D"); + urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode(rs.getPageNo(),"UTF-8")); + urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode(rs.getNumOfRows(), "UTF-8")); /*한 페이지 결과 수*/ + urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode(rs.getDataType(), "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/ + urlBuilder.append("&" + URLEncoder.encode("base_date","UTF-8") + "=" + URLEncoder.encode(rs.getBase_date(), "UTF-8")); /*'21년 6월 28일 발표*/ + urlBuilder.append("&" + URLEncoder.encode("base_time","UTF-8") + "=" + URLEncoder.encode(rs.getBase_time(), "UTF-8")); /*06시 발표(정시단위) */ + urlBuilder.append("&" + URLEncoder.encode("nx","UTF-8") + "=" + URLEncoder.encode(rs.getNx(), "UTF-8")); /*예보지점의 X 좌표값*/ + urlBuilder.append("&" + URLEncoder.encode("ny","UTF-8") + "=" + URLEncoder.encode(rs.getNy(), "UTF-8")); /*예보지점의 Y 좌표값*/ + URL url = new URL(urlBuilder.toString()); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setRequestProperty("Content-type", "application/json"); + log.info("Response code: " + conn.getResponseCode()); + BufferedReader rd; + if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { + rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + } else { + rd = new BufferedReader(new InputStreamReader(conn.getErrorStream())); + } + StringBuilder sb = new StringBuilder(); + String line; + while ((line = rd.readLine()) != null) { + sb.append(line); + } + String str = sb.toString(); + JSONParser parser = new JSONParser(); + JSONObject jsonObject = (JSONObject) parser.parse(str); + rd.close(); + conn.disconnect(); + log.info(sb.toString()); + + return ResponseEntity.ok().body(new SuccessResponse<>(jsonObject)); + } /** * TODO 비행 관제 사용자 권한 정보 * @@ -155,10 +201,10 @@ public class CtrCntrlController { return ResponseEntity.ok().body(new SuccessResponse(list)); } - + /** * TODO 드론 운행 시작 후 알람 목록 - * + * * @param id - 관제 ID * @return */ @@ -168,7 +214,7 @@ public class CtrCntrlController { @ApiImplicitParam(name = "id",value = "관제ID", dataTypeClass = String.class) public ResponseEntity warnDetail(@PathVariable String id){ List warnLog; - + try { warnLog = service.getWarnLog(id); } catch (Exception e) { @@ -270,4 +316,4 @@ public class CtrCntrlController { } return ResponseEntity.ok().body(new SuccessResponse(result)); } -} +} \ No newline at end of file diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlWeatherModel.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlWeatherModel.java new file mode 100644 index 0000000..9b0aaac --- /dev/null +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlWeatherModel.java @@ -0,0 +1,15 @@ +package com.palnet.biz.api.ctr.cntrl.model; + +import lombok.Data; + +@Data +public class CtrCntrlWeatherModel { + private String serviceKey; + private String numOfRows; + private String pageNo; + private String dataType; + private String base_date; + private String base_time ; + private String nx; + private String ny; +}