|
|
@ -1,7 +1,16 @@ |
|
|
|
package com.palnet.biz.api.ctr.cntrl.service; |
|
|
|
package com.palnet.biz.api.ctr.cntrl.service; |
|
|
|
|
|
|
|
|
|
|
|
import java.awt.Toolkit; |
|
|
|
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.ArrayList; |
|
|
|
|
|
|
|
import java.util.Calendar; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
@ -10,6 +19,9 @@ import java.util.UUID; |
|
|
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.*; |
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.*; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
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.locationtech.jts.geom.Coordinate; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
@ -517,6 +529,122 @@ public class CtrCntrlService { |
|
|
|
return result; |
|
|
|
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) { |
|
|
|
public Coordinate wheather(Coordinate coord) { |
|
|
|
double nx; |
|
|
|
double nx; |
|
|
|
double ny; |
|
|
|
double ny; |
|
|
|