|
|
|
@ -16,13 +16,12 @@ import org.springframework.core.env.Environment;
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.io.OutputStream; |
|
|
|
|
import java.net.InetSocketAddress; |
|
|
|
|
import java.net.Socket; |
|
|
|
|
import java.net.SocketAddress; |
|
|
|
|
import java.net.*; |
|
|
|
|
import java.net.http.HttpClient; |
|
|
|
|
import java.net.http.HttpRequest; |
|
|
|
|
import java.net.http.HttpResponse; |
|
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
public class SocketCommand { |
|
|
|
|
|
|
|
|
@ -32,7 +31,7 @@ public class SocketCommand {
|
|
|
|
|
|
|
|
|
|
public SocketCommand() { |
|
|
|
|
this.messageProducer = (MessageProducer) ContextUtils.getBean("messageProducer"); |
|
|
|
|
this.env = env; |
|
|
|
|
this.env = (Environment) ContextUtils.getBean("environment") ; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GPCollection collection = new GPCollection(); |
|
|
|
@ -142,31 +141,59 @@ public class SocketCommand {
|
|
|
|
|
model.setPostionHistory(hisList); |
|
|
|
|
|
|
|
|
|
// STEP 1. Control ID 발급 -> Application Server Http 통신
|
|
|
|
|
try { |
|
|
|
|
HttpRequest request = HttpRequest.newBuilder() |
|
|
|
|
// .uri(new URI("http://127.0.0.1:8080/api/ctr/cntrl/id/" + model.getObjectId()))
|
|
|
|
|
.uri(new URI(env.getProperty("app.host") + "api/ctr/cntrl/id/" + model.getObjectId())) |
|
|
|
|
.version(HttpClient.Version.HTTP_2) |
|
|
|
|
.GET() |
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
|
HttpResponse<String> response = HttpClient |
|
|
|
|
.newHttpClient() |
|
|
|
|
.send(request, HttpResponse.BodyHandlers.ofString()); |
|
|
|
|
|
|
|
|
|
// logger.info("CONTROL ID RESPONSE : {}", response.body());
|
|
|
|
|
|
|
|
|
|
// STEP 2. 이력 생성할 전문 전달
|
|
|
|
|
messageProducer.sendToAppServerMessage(model); |
|
|
|
|
|
|
|
|
|
// STEP 3. 화면에 표출할 정보 WebSocket 전달
|
|
|
|
|
try { |
|
|
|
|
Socket socket = new Socket(); |
|
|
|
|
SocketAddress address = new InetSocketAddress( |
|
|
|
|
env.getProperty("netty.websocket.host"), |
|
|
|
|
Integer.parseInt(env.getProperty("netty.websocket.port")) |
|
|
|
|
); |
|
|
|
|
socket.connect(address); |
|
|
|
|
|
|
|
|
|
String gpsJson = JsonUtils.toJson(model); |
|
|
|
|
Map body = JsonUtils.fromJson(response.body(), HashMap.class); |
|
|
|
|
|
|
|
|
|
OutputStream outputStream = socket.getOutputStream(); |
|
|
|
|
outputStream.write(gpsJson.getBytes(StandardCharsets.UTF_8)); |
|
|
|
|
outputStream.flush(); |
|
|
|
|
Map data = (Map) body.get("data"); |
|
|
|
|
model.setControlId((String) data.get("controlId")); |
|
|
|
|
model.setTypeCd((String) data.get("typeCd")); |
|
|
|
|
model.setAreaTrnsYn((String) data.get("areaTrnsYn")); |
|
|
|
|
model.setServerRcvDt(DateUtils.getCurrentTime()); |
|
|
|
|
|
|
|
|
|
socket.close(); |
|
|
|
|
} catch (IOException e) { |
|
|
|
|
logger.error(""); |
|
|
|
|
logger.error("요청한 URL 정보가 잘못되었습니다.", e); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// STEP 2. 이력 생성할 전문 전달
|
|
|
|
|
messageProducer.sendControlHistoryMessage(model); |
|
|
|
|
|
|
|
|
|
// STEP 3. 화면에 표출할 정보 WebSocket 전달
|
|
|
|
|
messageProducer.sendControlMessage(model); |
|
|
|
|
|
|
|
|
|
// try {
|
|
|
|
|
// Socket socket = new Socket();
|
|
|
|
|
// SocketAddress address = new InetSocketAddress(
|
|
|
|
|
// env.getProperty("netty.websocket.host"),
|
|
|
|
|
// Integer.parseInt(env.getProperty("netty.websocket.port"))
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// socket.connect(address);
|
|
|
|
|
//
|
|
|
|
|
// String gpsJson = JsonUtils.toJson(model);
|
|
|
|
|
//
|
|
|
|
|
// OutputStream outputStream = socket.getOutputStream();
|
|
|
|
|
// outputStream.write(gpsJson.getBytes(StandardCharsets.UTF_8));
|
|
|
|
|
// outputStream.flush();
|
|
|
|
|
//
|
|
|
|
|
// socket.close();
|
|
|
|
|
// } catch (IOException e) {
|
|
|
|
|
// logger.error("");
|
|
|
|
|
// }
|
|
|
|
|
// dataList.add(model);
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|