@ -1,26 +1,24 @@
package com.palnet.server.command ;
package com.palnet.server.command ;
import com.palnet.comn.collection.GPCollection ;
import com.palnet.comn.collection.GPCollection ;
import com.palnet.comn.model.ControlCacheModel ;
import com.palnet.comn.model.GPHistoryModel ;
import com.palnet.comn.model.GPHistoryModel ;
import com.palnet.comn.model.GPModel ;
import com.palnet.comn.model.GPModel ;
import com.palnet.comn.utils.ContextUtils ;
import com.palnet.comn.utils.ContextUtils ;
import com.palnet.comn.utils.ControlCacheUtils ;
import com.palnet.comn.utils.DateUtils ;
import com.palnet.comn.utils.DateUtils ;
import com.palnet.comn.utils.JsonUtils ;
import com.palnet.comn.utils.JsonUtils ;
import com.palnet.process.message.producer.MessageProducer ;
import com.palnet.process.message.producer.MessageProducer ;
import com.palnet.server.codec.SocketPayload ;
import com.palnet.server.codec.SocketPayload ;
import com.palnet.server.collection.ChannelCollection ;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame ;
import org.slf4j.Logger ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.slf4j.LoggerFactory ;
import org.springframework.core.env.Environment ;
import org.springframework.core.env.Environment ;
import java.io.IOException ;
import java.io.IOException ;
import java.io.OutputStream ;
import java.net.* ;
import java.net.* ;
import java.net.http.HttpClient ;
import java.net.http.HttpClient ;
import java.net.http.HttpRequest ;
import java.net.http.HttpRequest ;
import java.net.http.HttpResponse ;
import java.net.http.HttpResponse ;
import java.nio.charset.StandardCharsets ;
import java.util.* ;
import java.util.* ;
public class SocketCommand {
public class SocketCommand {
@ -77,6 +75,7 @@ public class SocketCommand {
/ * *
/ * *
* 들어온 데이터를 collection넣는 작업을 한다 .
* 들어온 데이터를 collection넣는 작업을 한다 .
*
* @param payload
* @param payload
* /
* /
public void sandboxCollectionPut ( SocketPayload payload ) {
public void sandboxCollectionPut ( SocketPayload payload ) {
@ -109,16 +108,20 @@ public class SocketCommand {
if ( obj . get ( "elev" ) ! = null ) model . setElev ( Double . valueOf ( obj . get ( "elev" ) . toString ( ) ) ) ;
if ( obj . get ( "elev" ) ! = null ) model . setElev ( Double . valueOf ( obj . get ( "elev" ) . toString ( ) ) ) ;
if ( obj . get ( "speed" ) ! = null ) model . setSpeed ( Double . valueOf ( obj . get ( "speed" ) . toString ( ) ) ) ;
if ( obj . get ( "speed" ) ! = null ) model . setSpeed ( Double . valueOf ( obj . get ( "speed" ) . toString ( ) ) ) ;
if ( obj . get ( "heading" ) ! = null ) model . setHeading ( Double . valueOf ( obj . get ( "heading" ) . toString ( ) ) ) ;
if ( obj . get ( "heading" ) ! = null ) model . setHeading ( Double . valueOf ( obj . get ( "heading" ) . toString ( ) ) ) ;
if ( obj . get ( "moveDistance" ) ! = null ) model . setMoveDistance ( Double . valueOf ( obj . get ( "moveDistance" ) . toString ( ) ) ) ;
if ( obj . get ( "moveDistance" ) ! = null )
if ( obj . get ( "betteryLevel" ) ! = null ) model . setBetteryLevel ( Double . valueOf ( obj . get ( "betteryLevel" ) . toString ( ) ) ) ;
model . setMoveDistance ( Double . valueOf ( obj . get ( "moveDistance" ) . toString ( ) ) ) ;
if ( obj . get ( "betteryVoltage" ) ! = null ) model . setBetteryVoltage ( Double . valueOf ( obj . get ( "betteryVoltage" ) . toString ( ) ) ) ;
if ( obj . get ( "betteryLevel" ) ! = null )
model . setBetteryLevel ( Double . valueOf ( obj . get ( "betteryLevel" ) . toString ( ) ) ) ;
if ( obj . get ( "betteryVoltage" ) ! = null )
model . setBetteryVoltage ( Double . valueOf ( obj . get ( "betteryVoltage" ) . toString ( ) ) ) ;
// 환경 데이터 필드 추가
// 환경 데이터 필드 추가
if ( obj . get ( "sensorCo" ) ! = null ) model . setSensorCo ( Double . valueOf ( obj . get ( "sensorCo" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorCo" ) ! = null ) model . setSensorCo ( Double . valueOf ( obj . get ( "sensorCo" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorSo2" ) ! = null ) model . setSensorSo2 ( Double . valueOf ( obj . get ( "sensorSo2" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorSo2" ) ! = null ) model . setSensorSo2 ( Double . valueOf ( obj . get ( "sensorSo2" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorNo2" ) ! = null ) model . setSensorNo2 ( Double . valueOf ( obj . get ( "sensorNo2" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorNo2" ) ! = null ) model . setSensorNo2 ( Double . valueOf ( obj . get ( "sensorNo2" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorO3" ) ! = null ) model . setSensorO3 ( Double . valueOf ( obj . get ( "sensorO3" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorO3" ) ! = null ) model . setSensorO3 ( Double . valueOf ( obj . get ( "sensorO3" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorDust" ) ! = null ) model . setSensorDust ( Double . valueOf ( obj . get ( "sensorDust" ) . toString ( ) ) ) ;
if ( obj . get ( "sensorDust" ) ! = null )
model . setSensorDust ( Double . valueOf ( obj . get ( "sensorDust" ) . toString ( ) ) ) ;
// 서버 수신 시간 정보
// 서버 수신 시간 정보
model . setServerRcvDt ( DateUtils . getCurrentTime ( ) ) ;
model . setServerRcvDt ( DateUtils . getCurrentTime ( ) ) ;
@ -140,6 +143,11 @@ public class SocketCommand {
hisList . add ( history ) ;
hisList . add ( history ) ;
model . setPostionHistory ( hisList ) ;
model . setPostionHistory ( hisList ) ;
Long start = System . currentTimeMillis ( ) ;
// STEP 1. 전에 내부 메모리에서 controlId 조회
ControlCacheModel control = ControlCacheUtils . getControl ( model . getObjectId ( ) ) ;
if ( control = = null ) {
// STEP 1. Control ID 발급 -> Application Server Http 통신
// STEP 1. Control ID 발급 -> Application Server Http 통신
try {
try {
HttpRequest request = HttpRequest . newBuilder ( )
HttpRequest request = HttpRequest . newBuilder ( )
@ -169,17 +177,34 @@ public class SocketCommand {
model . setControlWarnCd ( "Y" . equals ( data . get ( "controlWarnCd" ) ) ? true : false ) ;
model . setControlWarnCd ( "Y" . equals ( data . get ( "controlWarnCd" ) ) ? true : false ) ;
model . setControlStartDt ( DateUtils . getCurrentTime ( ) ) ;
model . setControlStartDt ( DateUtils . getCurrentTime ( ) ) ;
ControlCacheModel ccm = new ControlCacheModel ( ) ;
ccm . setControlId ( ( String ) data . get ( "controlId" ) ) ;
ccm . setTypeCd ( ( String ) data . get ( "typeCd" ) ) ;
ccm . setAreaTrnsYn ( ( String ) data . get ( "areaTrnsYn" ) ) ;
ccm . setControlWarnCd ( "Y" . equals ( data . get ( "controlWarnCd" ) ) ? true : false ) ;
ccm . setRegTime ( System . currentTimeMillis ( ) ) ;
ControlCacheUtils . setControl ( model . getObjectId ( ) , ccm ) ;
} catch ( IOException e ) {
} catch ( IOException e ) {
logger . error ( "요청한 URL 정보가 잘못되었습니다." , e . getMessage ( ) ) ;
logger . error ( "요청한 URL 정보가 잘못되었습니다." , e . getMessage ( ) ) ;
} catch ( Exception e ) {
} catch ( Exception e ) {
e . printStackTrace ( ) ;
e . printStackTrace ( ) ;
}
}
} else {
model . setControlId ( control . getControlId ( ) ) ;
model . setTypeCd ( "2" ) ;
model . setAreaTrnsYn ( control . getAreaTrnsYn ( ) ) ;
model . setControlWarnCd ( control . isControlWarnCd ( ) ) ;
control . setRegTime ( System . currentTimeMillis ( ) ) ;
}
Long end = System . currentTimeMillis ( ) ;
logger . info ( ">>> during time : {}::{}" , model . getObjectId ( ) , end - start ) ;
// STEP 2. 이력 생성할 전문 전달
// STEP 2. 이력 생성할 전문 전달
// messageProducer.sendControlHistoryMessage(model);
messageProducer . sendControlHistoryMessage ( model ) ;
// STEP 3. 화면에 표출할 정보 WebSocket 전달
// STEP 3. 화면에 표출할 정보 WebSocket 전달
// messageProducer.sendControlMessage(model);
messageProducer . sendControlMessage ( model ) ;
// try {
// try {
// Socket socket = new Socket();
// Socket socket = new Socket();