shjung 11 сар өмнө
parent
commit
d7fc222155

+ 24 - 5
src/main/java/com/evp/comm/server/xnet/server/process/response/EvpsService.java

@@ -7,7 +7,10 @@ import com.evp.comm.server.xnet.server.process.protocol.EvpsProtocolConst;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 
 /*
 serviceId       서비스ID        String      19
@@ -109,16 +112,33 @@ public class EvpsService implements EvpsCommResponse {
 
                 service.setStatusCd(0);
 
-                // 경로수
-                int routeCount = ((buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF);
-
                 this.dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_INS_SERVICE, packet.getCenter(), service));
 
                 if (packet.getPacket().getTotal() == 1) {
-                    // 프레임이 한번에 전송되서 온것
+                    // 프레임이 한번에 전송되어서 온것
+                    // 경로수
+                    int routeCount = ((buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF);
                     int reqRouteSize = routeCount * 8;  // lat(4), lng(4)
                     if (packet.getPacket().getFrameLength() != EvpsProtocolConst.EVPS_HEAD_SIZE + EvpsProtocolConst.MIN_SERVICE_DATA_SIZE + reqRouteSize) {
+                        List<HashMap<String, Object>> lists = new ArrayList<>();
+                        for (int ii = 0; ii < routeCount; ii++) {
+
+                            int routeLat = ((buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF);
+                            int routeLng = ((buffer[idx++] & 0xFF) << 24) | ((buffer[idx++] & 0xFF) << 16) | ((buffer[idx++] & 0xFF) << 8) | (buffer[idx++] & 0xFF);
+
+                            service.setArrLng(arrivalLng/EvpsProtocolConst.EVPS_GEO_CORRECT);
 
+                            HashMap<String, Object> param = new HashMap<>();
+                            param.put("SERVICE_ID",  service.getServiceId());
+                            param.put("SEQ_NO",      ii+1);
+                            param.put("LAT",         routeLat/EvpsProtocolConst.EVPS_GEO_CORRECT);
+                            param.put("LNG",         routeLng/EvpsProtocolConst.EVPS_GEO_CORRECT);
+
+                            lists.add(param);
+                        }
+                        if (!lists.isEmpty()) {
+                            this.dbmsDataProcess.add(new DbmsData(DbmsData.DBMS_DATA_INS_ROUTE, packet.getCenter(), lists));
+                        }
                     }
                 }
                 else {
@@ -128,7 +148,6 @@ public class EvpsService implements EvpsCommResponse {
             else {
                 // 패킷이 분할되서 온것
 
-
                 if (packet.getPacket().getCurrent() == packet.getPacket().getTotal()) {
                     // 마지막 패킷이 들어온것
                 }