Browse Source

controller -> service 작업내용 이동

Test
박재우 2 years ago
parent
commit
cca38ce7d7
  1. 120
      src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java
  2. 128
      src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java

120
src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java

@ -122,119 +122,15 @@ public class CtrCntrlController {
@GetMapping("/api/weather")
@ApiOperation(value = "TODO 드론 관제 '실시간' 이력 목록")
@Tag(name = "드론 관제 시스템", description = "드론 관제 관련 API")
public ResponseEntity<? extends BasicResponse> restApiGetWeather(CtrCntrlWeatherModel rs) throws IOException, ParseException {
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar c1 = Calendar.getInstance();
String strToday = sdf.format(c1.getTime());
// 현재 시간
LocalTime now = LocalTime.now();
// 현재시간 출력
// 시, 분, 초 구하기
int hour = now.getHour();
int minute = now.getMinute();
int length = (int)(Math.log10(minute)+1);
int hourlength = (int)(Math.log10(hour)+1);
String strminute = Integer.toString(minute);
String strhour = Integer.toString(hour);
String basetime = null;
if(length<=1){
strminute = 0+Integer.toString(minute);
}if(hourlength<=1){
strhour = 0+Integer.toString(hour);
}
// 시, 분, 초 출력
if ((Integer.parseInt(strhour) >= 2 && Integer.parseInt(strminute )> 9) && Integer.parseInt(strhour) <= 5) {
basetime = "0200";
}
else if ((Integer.parseInt(strhour) >= 5 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 8) {
basetime = "0500";
}
else if (Integer.parseInt(strhour) <= 8 && Integer.parseInt(strminute ) < 10) {
basetime = "0500";
}
else if ((Integer.parseInt(strhour) >= 8 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 11) {
basetime = "0800";
}
else if (Integer.parseInt(strhour) <= 11 && Integer.parseInt(strminute ) < 10) {
basetime = "0800";
}
else if ((Integer.parseInt(strhour) >= 11 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 14) {
basetime = "1100";
}
else if (Integer.parseInt(strhour) <= 14 && Integer.parseInt(strminute ) < 10) {
basetime = "1100";
}
else if ((Integer.parseInt(strhour) >= 14 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 17) {
basetime = "1400";
}
else if (Integer.parseInt(strhour) <= 17 && Integer.parseInt(strminute ) < 10) {
basetime = "1400";
}
else if ((Integer.parseInt(strhour) >= 17 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 20) {
basetime = "1700";
}
else if (Integer.parseInt(strhour) <= 20 && Integer.parseInt(strminute ) < 10) {
basetime = "1700";
}
else if ((Integer.parseInt(strhour) >= 20 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 23) {
basetime = "2000";
}
else if (Integer.parseInt(strhour) <= 23 && Integer.parseInt(strminute ) < 10) {
basetime = "2000";
}
else
basetime = "2300";
List<Coordinate> coordList = new ArrayList<>();
Coordinate coord = new Coordinate();
Coordinate returnCoord = new Coordinate();
coord.setX(rs.getNx());
coord.setY(rs.getNy());
returnCoord = service.wheather(coord);
double nx = returnCoord.getX();
double ny = returnCoord.getY();
String Snx = String.format("%.0f",nx);
String Sny = String.format("%.0f",ny);
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D");
urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1","UTF-8"));
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("14", "UTF-8")); /*한 페이지 결과 수*/
urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode("JSON", "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/
urlBuilder.append("&" + URLEncoder.encode("base_date","UTF-8") + "=" + URLEncoder.encode(strToday, "UTF-8")); /*'21년 6월 28일 발표*/
urlBuilder.append("&" + URLEncoder.encode("base_time","UTF-8") + "=" + URLEncoder.encode(basetime, "UTF-8")); /*06시 발표(정시단위) */
urlBuilder.append("&" + URLEncoder.encode("nx","UTF-8") + "=" + URLEncoder.encode(Snx, "UTF-8")); /*예보지점의 X 좌표값*/
urlBuilder.append("&" + URLEncoder.encode("ny","UTF-8") + "=" + URLEncoder.encode(Sny, "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);
public ResponseEntity<? extends BasicResponse> restApiGetWeather(CtrCntrlWeatherModel rq) throws IOException, ParseException {
JSONObject jsonObject = null;
try {
jsonObject = service.getWeather(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
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));
}
/**

128
src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java

@ -1,7 +1,16 @@
package com.palnet.biz.api.ctr.cntrl.service;
import java.awt.Toolkit;
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.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@ -10,6 +19,9 @@ import java.util.UUID;
import com.palnet.biz.api.ctr.cntrl.model.*;
import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.locationtech.jts.geom.Coordinate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -516,7 +528,123 @@ public class CtrCntrlService {
return result;
}
public JSONObject getWeather(CtrCntrlWeatherModel rq) throws IOException, ParseException {
StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Calendar c1 = Calendar.getInstance();
String strToday = sdf.format(c1.getTime());
// 현재 시간
LocalTime now = LocalTime.now();
// 현재시간 출력
// 시, 분, 초 구하기
int hour = now.getHour();
int minute = now.getMinute();
int length = (int)(Math.log10(minute)+1);
int hourlength = (int)(Math.log10(hour)+1);
String strminute = Integer.toString(minute);
String strhour = Integer.toString(hour);
String basetime = null;
if(length<=1){
strminute = 0+Integer.toString(minute);
}if(hourlength<=1){
strhour = 0+Integer.toString(hour);
}
// 시, 분, 초 출력
if ((Integer.parseInt(strhour) >= 2 && Integer.parseInt(strminute )> 9) && Integer.parseInt(strhour) <= 5) {
basetime = "0200";
}
else if ((Integer.parseInt(strhour) >= 5 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 8) {
basetime = "0500";
}
else if (Integer.parseInt(strhour) <= 8 && Integer.parseInt(strminute ) < 10) {
basetime = "0500";
}
else if ((Integer.parseInt(strhour) >= 8 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 11) {
basetime = "0800";
}
else if (Integer.parseInt(strhour) <= 11 && Integer.parseInt(strminute ) < 10) {
basetime = "0800";
}
else if ((Integer.parseInt(strhour) >= 11 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 14) {
basetime = "1100";
}
else if (Integer.parseInt(strhour) <= 14 && Integer.parseInt(strminute ) < 10) {
basetime = "1100";
}
else if ((Integer.parseInt(strhour) >= 14 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 17) {
basetime = "1400";
}
else if (Integer.parseInt(strhour) <= 17 && Integer.parseInt(strminute ) < 10) {
basetime = "1400";
}
else if ((Integer.parseInt(strhour) >= 17 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 20) {
basetime = "1700";
}
else if (Integer.parseInt(strhour) <= 20 && Integer.parseInt(strminute ) < 10) {
basetime = "1700";
}
else if ((Integer.parseInt(strhour) >= 20 && Integer.parseInt(strminute ) > 9) && Integer.parseInt(strhour) < 23) {
basetime = "2000";
}
else if (Integer.parseInt(strhour) <= 23 && Integer.parseInt(strminute ) < 10) {
basetime = "2000";
}
else
basetime = "2300";
List<Coordinate> coordList = new ArrayList<>();
Coordinate coord = new Coordinate();
Coordinate returnCoord = new Coordinate();
coord.setX(rq.getNx());
coord.setY(rq.getNy());
returnCoord = this.wheather(coord);
double nx = returnCoord.getX();
double ny = returnCoord.getY();
String Snx = String.format("%.0f",nx);
String Sny = String.format("%.0f",ny);
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=r6RMUsk3Vtama7D6uq7MiWV9dTC9MwfIIr4%2F45y0uVNw6BaYbgpKmL%2BLUDFVTfIYUmEe4K%2FaniEjdV9mg5t82Q%3D%3D");
urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1","UTF-8"));
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("14", "UTF-8")); /*한 페이지 결과 수*/
urlBuilder.append("&" + URLEncoder.encode("dataType","UTF-8") + "=" + URLEncoder.encode("JSON", "UTF-8")); /*요청자료형식(XML/JSON) Default: XML*/
urlBuilder.append("&" + URLEncoder.encode("base_date","UTF-8") + "=" + URLEncoder.encode(strToday, "UTF-8")); /*'21년 6월 28일 발표*/
urlBuilder.append("&" + URLEncoder.encode("base_time","UTF-8") + "=" + URLEncoder.encode(basetime, "UTF-8")); /*06시 발표(정시단위) */
urlBuilder.append("&" + URLEncoder.encode("nx","UTF-8") + "=" + URLEncoder.encode(Snx, "UTF-8")); /*예보지점의 X 좌표값*/
urlBuilder.append("&" + URLEncoder.encode("ny","UTF-8") + "=" + URLEncoder.encode(Sny, "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 jsonObject;
}
public Coordinate wheather(Coordinate coord) {
double nx;
double ny;

Loading…
Cancel
Save