shjung hai 1 ano
pai
achega
154e4bd1ae
Modificáronse 34 ficheiros con 797 adicións e 1384 borrados
  1. 3 0
      conf/application.yml
  2. 1 1
      conf/debug.properties
  3. 26 2
      src/main/java/com/its/bis/AgipCommServerApplication.java
  4. 1 0
      src/main/java/com/its/bis/api/dto/AgipObeLoc.java
  5. 0 2
      src/main/java/com/its/bis/api/service/AgipControlService.java
  6. 4 0
      src/main/java/com/its/bis/config/ServerConfig.java
  7. 19 0
      src/main/java/com/its/bis/dao/mapper/NodeLinkMapper.java
  8. 0 19
      src/main/java/com/its/bis/dao/mapper/VmsCtlrMapper.java
  9. 36 0
      src/main/java/com/its/bis/dto/BisObe.java
  10. 166 0
      src/main/java/com/its/bis/dto/Location.java
  11. 21 0
      src/main/java/com/its/bis/dto/NearNodeDto.java
  12. 47 0
      src/main/java/com/its/bis/dto/TbLinkDto.java
  13. 24 0
      src/main/java/com/its/bis/dto/TbNodeDto.java
  14. 16 0
      src/main/java/com/its/bis/entity/MakeTrafParam.java
  15. 65 0
      src/main/java/com/its/bis/entity/TbLink.java
  16. 42 0
      src/main/java/com/its/bis/entity/TbNode.java
  17. 6 21
      src/main/java/com/its/bis/process/DbmsDataProcess.java
  18. 1 10
      src/main/java/com/its/bis/process/DbmsDataType.java
  19. 12 0
      src/main/java/com/its/bis/scheduler/SchedulerTask.java
  20. 28 55
      src/main/java/com/its/bis/service/AppRepositoryService.java
  21. 139 0
      src/main/java/com/its/bis/service/NodeLinkService.java
  22. 0 81
      src/main/java/com/its/bis/service/VmsCtlrService.java
  23. 0 88
      src/main/java/com/its/bis/webapp/config/WebSecurityConfig.java
  24. 0 145
      src/main/java/com/its/bis/webapp/controller/WebAppCommonController.java
  25. 0 138
      src/main/java/com/its/bis/webapp/controller/WebAppController.java
  26. 0 27
      src/main/java/com/its/bis/webapp/security/SessionListener.java
  27. 0 38
      src/main/java/com/its/bis/webapp/security/UserAuthenticationProvider.java
  28. 0 198
      src/main/java/com/its/bis/webapp/service/FileService.java
  29. 0 40
      src/main/java/com/its/bis/webapp/service/UserService.java
  30. 0 19
      src/main/java/com/its/bis/webapp/vo/FileInfoVo.java
  31. 0 51
      src/main/java/com/its/bis/webapp/vo/UserVo.java
  32. 75 0
      src/main/resources/mybatis/mapper/NodeLinkMapper.xml
  33. 0 423
      src/main/resources/mybatis/mapper/VmsCtlrMapper.xml
  34. 65 26
      src/test/java/com/its/app/AgipCommServerApplicationTests.java

+ 3 - 0
conf/application.yml

@@ -21,6 +21,9 @@ communication:
 
 server:
   port: 7904
+  history-min: 30
+  min-speed: 3
+  max-speed: 140
 
 spring:
   profiles:

+ 1 - 1
conf/debug.properties

@@ -1,5 +1,5 @@
 #system debug setting configuration...
-#Thu Nov 23 15:40:30 KST 2023
+#Fri Nov 24 18:05:11 KST 2023
 packet-info=x
 packet-dump=x
 system-debug=false

+ 26 - 2
src/main/java/com/its/bis/AgipCommServerApplication.java

@@ -5,9 +5,13 @@ import com.its.app.utils.OS;
 import com.its.app.utils.SysUtils;
 import com.its.bis.config.ApplicationConfig;
 import com.its.bis.config.DebugConfig;
+import com.its.bis.dto.Location;
+import com.its.bis.dto.NearNodeDto;
+import com.its.bis.dto.TbLinkDto;
 import com.its.bis.entity.TbUnitSyst;
 import com.its.bis.process.DbmsDataProcess;
-import com.its.bis.service.*;
+import com.its.bis.service.NodeLinkService;
+import com.its.bis.service.UnitSystService;
 import com.its.bis.ui.JTextAreaOutputStream;
 import com.its.bis.ui.MainUI;
 import lombok.extern.slf4j.Slf4j;
@@ -58,7 +62,6 @@ public class AgipCommServerApplication implements CommandLineRunner, Application
 
         File file1 = new File("./conf/" + applicationName + ".pid");
         if (file1.exists()) {
-            System.out.println(System.getProperty("Program Already Running....."));
             log.error("Program Already Running.....");
         }
 
@@ -146,11 +149,32 @@ public class AgipCommServerApplication implements CommandLineRunner, Application
             applicationConfig.setListenPort(unit.getPrgmPort());
         }
 
+        NodeLinkService nodeLinkService = (NodeLinkService)AppUtils.getBean(NodeLinkService.class);
+        nodeLinkService.loadDb();
+
+        Location from = Location.builder()
+                .mLatitude(128.74352336)
+                .mLongitude(36.56392018)
+                .build();
+        NearNodeDto fNode = nodeLinkService.getNearNode(from);
+        log.info("From NearNode: {}", fNode);
+
+        Location to = Location.builder()
+                .mLatitude(128.73881251)
+                .mLongitude(36.56128759)
+                .build();
+        NearNodeDto tNode = nodeLinkService.getNearNode(to);
+        log.info("  To NearNode: {}", tNode);
+
+        TbLinkDto link = nodeLinkService.getSectInfo(fNode.getNodeId(), tNode.getNodeId());
+        log.info("Matching Link: {}", link);
+
         DebugConfig debugConfig = (DebugConfig)AppUtils.getBean(DebugConfig.class);
         debugConfig.loadDebugInfo();
 
         // schedule enable
         applicationConfig.setStartSchedule(true);
+//        log.error("AAAAA: {}", Toolkit.getDefaultToolkit().getScreenSize());
     }
 
     public void terminateApplication() {

+ 1 - 0
src/main/java/com/its/bis/api/dto/AgipObeLoc.java

@@ -35,4 +35,5 @@ public class AgipObeLoc implements Serializable {
     private String carNumber;               // 차량 번호, null
     private String routeId;                 // 운행중인 노선 아이디, null
     private String runStatus;               // 운행 상태 NORMAL(일반운행), FIRST(첫차운행), LAST(막차운행), EMPTY(공차운행), null
+
 }

+ 0 - 2
src/main/java/com/its/bis/api/service/AgipControlService.java

@@ -1,7 +1,6 @@
 package com.its.bis.api.service;
 
 import com.its.bis.config.ApplicationConfig;
-import com.its.bis.dao.mapper.VmsCtlrMapper;
 import com.its.bis.service.AppRepositoryService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +12,6 @@ import org.springframework.stereotype.Service;
 public class AgipControlService {
 
     private final ApplicationConfig config;
-    private final VmsCtlrMapper mapper;
     private final AppRepositoryService repoService;
 
 }

+ 4 - 0
src/main/java/com/its/bis/config/ServerConfig.java

@@ -17,4 +17,8 @@ public class ServerConfig {
 
     protected int port;
 
+    private int historyMin = 30;
+    private int minSpeed = 3;
+    private int maxSpeed = 140;
+
 }

+ 19 - 0
src/main/java/com/its/bis/dao/mapper/NodeLinkMapper.java

@@ -0,0 +1,19 @@
+package com.its.bis.dao.mapper;
+
+import com.its.bis.entity.MakeTrafParam;
+import com.its.bis.entity.TbLink;
+import com.its.bis.entity.TbNode;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface NodeLinkMapper {
+
+    List<TbNode> selectNodeAll();
+    List<TbLink> selectLinkAll();
+
+    int createBisLinkTraf(@Param("obj") MakeTrafParam obj);
+
+}

+ 0 - 19
src/main/java/com/its/bis/dao/mapper/VmsCtlrMapper.java

@@ -1,19 +0,0 @@
-package com.its.bis.dao.mapper;
-
-import com.its.bis.entity.TbVmsCtlr;
-import com.its.bis.entity.TbVmsCtlrStts;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-@Mapper
-public interface VmsCtlrMapper {
-
-    List<TbVmsCtlr> selectAll();
-    List<TbVmsCtlrStts> selectCtlrStts();
-
-    int updateCtlrStts(@Param("obj") TbVmsCtlrStts obj);
-    int insertCtlrSttsHs(@Param("obj") TbVmsCtlrStts obj);
-
-}

+ 36 - 0
src/main/java/com/its/bis/dto/BisObe.java

@@ -0,0 +1,36 @@
+package com.its.bis.dto;
+
+import lombok.*;
+
+import java.io.Serializable;
+
+@Getter
+@Setter
+@ToString
+@Builder
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class BisObe  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String deviceId;    // 기기의 아이디, "6D-45-C4-08-AA-B6"
+    private String carId;                   // 차량 아이디, null
+    private String carNumber;               // 차량 번호, null
+
+    private Location location;
+//    private Double xCrdn;
+//    private Double yCrdn;
+    //private Double longitude;   // 경도, 126.89448518666667
+    //private Double latitude;    // 위도, 37.48543554333333
+
+    private Double height;      // 높이(m), 19.203
+    private Double speed;       // 속도(km/h), 2.48
+    private Double angle;       // 방위각, 250.29
+
+    private float moveDist;
+
+    private Long stNodeId = 0L;
+    private Long edNodeId = 0L;
+    private int  trvlHh = 0;    // stNodeId ~ edNodeId travel time(seconds)
+
+}

+ 166 - 0
src/main/java/com/its/bis/dto/Location.java

@@ -0,0 +1,166 @@
+package com.its.bis.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class Location {
+
+//    private double mLat1 = 0.0;
+//    private double mLon1 = 0.0;
+//    private double mLat2 = 0.0;
+//    private double mLon2 = 0.0;
+    private float mDistance = 0.0f;
+    private float mInitialBearing = 0.0f;
+    private float mFinalBearing = 0.0f;
+
+    private double mLatitude = 0.0;     // 위도, 37.48543554333333
+    private double mLongitude = 0.0;    // 경도, 126.89448518666667
+
+    private static ThreadLocal<BearingDistanceCache> sBearingDistanceCache
+            = new ThreadLocal<BearingDistanceCache>() {
+        @Override
+        protected BearingDistanceCache initialValue() {
+            return new BearingDistanceCache();
+        }
+    };
+
+//    public float distanceTo(Location dest) {
+//        double lat1 = mLatitude;
+//        double lon1 = mLongitude;
+//        double lat2 = dest.mLatitude;
+//        double lon2 = dest.mLongitude;
+//
+//        lat1 *= Math.PI / 180.0;
+//        lat2 *= Math.PI / 180.0;
+//        lon1 *= Math.PI / 180.0;
+//        lon2 *= Math.PI / 180.0;
+//
+//        float mDistance = (float) (6378.137 * Math.acos(Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1) + Math.sin(lat1) * Math.sin(lat2)));
+//        return (float) (mDistance * 1000);
+//    }
+
+    public float distanceTo(Location dest) {
+        BearingDistanceCache cache = sBearingDistanceCache.get();
+        // See if we already have the result
+        if (mLatitude != cache.mLat1 || mLongitude != cache.mLon1 ||
+                dest.mLatitude != cache.mLat2 || dest.mLongitude != cache.mLon2) {
+            computeDistanceAndBearing(mLatitude, mLongitude,
+                    dest.mLatitude, dest.mLongitude, cache);
+        }
+        return cache.mDistance;
+    }
+
+    private static void computeDistanceAndBearing(double lat1, double lon1,
+                                                  double lat2, double lon2, BearingDistanceCache results) {
+        // Based on http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf
+        // using the "Inverse Formula" (section 4)
+
+        int MAXITERS = 20;
+        // Convert lat/long to radians
+        lat1 *= Math.PI / 180.0;
+        lat2 *= Math.PI / 180.0;
+        lon1 *= Math.PI / 180.0;
+        lon2 *= Math.PI / 180.0;
+
+        double a = 6378137.0; // WGS84 major axis
+        double b = 6356752.3142; // WGS84 semi-major axis
+        double f = (a - b) / a;
+        double aSqMinusBSqOverBSq = (a * a - b * b) / (b * b);
+
+        double L = lon2 - lon1;
+        double A = 0.0;
+        double U1 = Math.atan((1.0 - f) * Math.tan(lat1));
+        double U2 = Math.atan((1.0 - f) * Math.tan(lat2));
+
+        double cosU1 = Math.cos(U1);
+        double cosU2 = Math.cos(U2);
+        double sinU1 = Math.sin(U1);
+        double sinU2 = Math.sin(U2);
+        double cosU1cosU2 = cosU1 * cosU2;
+        double sinU1sinU2 = sinU1 * sinU2;
+
+        double sigma = 0.0;
+        double deltaSigma = 0.0;
+        double cosSqAlpha = 0.0;
+        double cos2SM = 0.0;
+        double cosSigma = 0.0;
+        double sinSigma = 0.0;
+        double cosLambda = 0.0;
+        double sinLambda = 0.0;
+
+        double lambda = L; // initial guess
+        for (int iter = 0; iter < MAXITERS; iter++) {
+            double lambdaOrig = lambda;
+            cosLambda = Math.cos(lambda);
+            sinLambda = Math.sin(lambda);
+            double t1 = cosU2 * sinLambda;
+            double t2 = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda;
+            double sinSqSigma = t1 * t1 + t2 * t2; // (14)
+            sinSigma = Math.sqrt(sinSqSigma);
+            cosSigma = sinU1sinU2 + cosU1cosU2 * cosLambda; // (15)
+            sigma = Math.atan2(sinSigma, cosSigma); // (16)
+            double sinAlpha = (sinSigma == 0) ? 0.0 :
+                    cosU1cosU2 * sinLambda / sinSigma; // (17)
+            cosSqAlpha = 1.0 - sinAlpha * sinAlpha;
+            cos2SM = (cosSqAlpha == 0) ? 0.0 :
+                    cosSigma - 2.0 * sinU1sinU2 / cosSqAlpha; // (18)
+
+            double uSquared = cosSqAlpha * aSqMinusBSqOverBSq; // defn
+            A = 1 + (uSquared / 16384.0) * // (3)
+                    (4096.0 + uSquared *
+                            (-768 + uSquared * (320.0 - 175.0 * uSquared)));
+            double B = (uSquared / 1024.0) * // (4)
+                    (256.0 + uSquared *
+                            (-128.0 + uSquared * (74.0 - 47.0 * uSquared)));
+            double C = (f / 16.0) *
+                    cosSqAlpha *
+                    (4.0 + f * (4.0 - 3.0 * cosSqAlpha)); // (10)
+            double cos2SMSq = cos2SM * cos2SM;
+            deltaSigma = B * sinSigma * // (6)
+                    (cos2SM + (B / 4.0) *
+                            (cosSigma * (-1.0 + 2.0 * cos2SMSq) -
+                                    (B / 6.0) * cos2SM *
+                                            (-3.0 + 4.0 * sinSigma * sinSigma) *
+                                            (-3.0 + 4.0 * cos2SMSq)));
+
+            lambda = L +
+                    (1.0 - C) * f * sinAlpha *
+                            (sigma + C * sinSigma *
+                                    (cos2SM + C * cosSigma *
+                                            (-1.0 + 2.0 * cos2SM * cos2SM))); // (11)
+
+            double delta = (lambda - lambdaOrig) / lambda;
+            if (Math.abs(delta) < 1.0e-12) {
+                break;
+            }
+        }
+
+        float distance = (float) (b * A * (sigma - deltaSigma));
+        results.mDistance = distance;
+        float initialBearing = (float) Math.atan2(cosU2 * sinLambda,
+                cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);
+        initialBearing *= 180.0 / Math.PI;
+        results.mInitialBearing = initialBearing;
+        float finalBearing = (float) Math.atan2(cosU1 * sinLambda,
+                -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);
+        finalBearing *= 180.0 / Math.PI;
+        results.mFinalBearing = finalBearing;
+        results.mLat1 = lat1;
+        results.mLat2 = lat2;
+        results.mLon1 = lon1;
+        results.mLon2 = lon2;
+    }
+
+    private static class BearingDistanceCache {
+        private double mLat1 = 0.0;
+        private double mLon1 = 0.0;
+        private double mLat2 = 0.0;
+        private double mLon2 = 0.0;
+        private float mDistance = 0.0f;
+        private float mInitialBearing = 0.0f;
+        private float mFinalBearing = 0.0f;
+    }
+
+}

+ 21 - 0
src/main/java/com/its/bis/dto/NearNodeDto.java

@@ -0,0 +1,21 @@
+package com.its.bis.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 노드정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbNodeDto(노드정보)")
+public class NearNodeDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long nodeId;
+    private Double distance;
+
+}

+ 47 - 0
src/main/java/com/its/bis/dto/TbLinkDto.java

@@ -0,0 +1,47 @@
+package com.its.bis.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 링크정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbLinkDto(링크정보)")
+public class TbLinkDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("링크ID")  // N NUMBER(10)
+    private Long linkId;
+
+    @ApiModelProperty("시작노드ID")  // Y NUMBER(10)
+    private Long fNodeId;
+
+    @ApiModelProperty("종료노드ID")  // Y NUMBER(10)
+    private Long tNodeId;
+
+    @ApiModelProperty("차로수")  // Y NUMBER(4)
+    @JsonProperty("lanes")
+    private Integer lanes;
+
+    @ApiModelProperty("최고제한속도")  // Y NUMBER(4)
+    private Integer maxSpd;
+
+    @ApiModelProperty("링크 길이")  // Y NUMBER(5)
+    private Integer linkLeng;
+
+    @ApiModelProperty("비고")  // Y VARCHAR(200)
+    @JsonProperty("rmrk")
+    private String rmrk;
+
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    @JsonProperty("del_yn")
+    private String delYn;
+
+}

+ 24 - 0
src/main/java/com/its/bis/dto/TbNodeDto.java

@@ -0,0 +1,24 @@
+package com.its.bis.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 노드정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbNodeDto(노드정보)")
+public class TbNodeDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long nodeId;
+    private String nodeType;
+    private String nodeName;
+    private Double xCrdn;
+    private Double yCrdn;
+
+}

+ 16 - 0
src/main/java/com/its/bis/entity/MakeTrafParam.java

@@ -0,0 +1,16 @@
+package com.its.bis.entity;
+
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class MakeTrafParam {
+
+    private String PRCN_DT;
+    private int FROM_MIN;
+    private int MIN_SPEED;
+    private int MAX_SPEED;
+
+}

+ 65 - 0
src/main/java/com/its/bis/entity/TbLink.java

@@ -0,0 +1,65 @@
+package com.its.bis.entity;
+
+import com.its.bis.dto.TbLinkDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 링크정보 Entity Class
+ */
+@ApiModel("링크정보")
+@Data
+@Builder
+public class TbLink implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("링크ID")  // N NUMBER(10)
+    private Long linkId;
+
+    @ApiModelProperty("시작노드ID")  // Y NUMBER(10)
+    private Long fNodeId;
+
+    @ApiModelProperty("종료노드ID")  // Y NUMBER(10)
+    private Long tNodeId;
+
+    @ApiModelProperty("차로수")  // Y NUMBER(4)
+    private Integer lanes;
+
+    @ApiModelProperty("도로등급")  // Y VARCHAR(3)
+    private String roadRank;
+
+    @ApiModelProperty("도로유형")  // Y VARCHAR(3)
+    private String roadType;
+
+    @ApiModelProperty("도로번호")  // Y VARCHAR(5)
+    private String roadNo;
+
+    @ApiModelProperty("도로명")  // Y VARCHAR(50)
+    private String roadName;
+
+    @ApiModelProperty("최고제한속도")  // Y NUMBER(4)
+    private Integer maxSpd;
+
+    @ApiModelProperty("링크 길이")  // Y NUMBER(5)
+    private Integer linkLeng;
+
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    private String delYn;
+
+    public TbLinkDto toDto() {
+        return TbLinkDto.builder()
+                .linkId(this.linkId)
+                .fNodeId(this.fNodeId)
+                .tNodeId(this.tNodeId)
+                .lanes(this.lanes)
+                .maxSpd(this.maxSpd)
+                .linkLeng(this.linkLeng)
+                .delYn(this.delYn)
+                .build();
+    }
+
+}

+ 42 - 0
src/main/java/com/its/bis/entity/TbNode.java

@@ -0,0 +1,42 @@
+package com.its.bis.entity;
+
+import com.its.bis.dto.TbNodeDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 노드정보 Entity Class
+ */
+@ApiModel("노드정보")
+@Data
+@Builder
+public class TbNode implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long nodeId;
+    private String nodeType;
+    private String nodeName;
+    private String turnP;
+    private String rmrk;
+
+    @ApiModelProperty("X 좌표")  // Y NUMBER(11,8)
+    private Double xCrdn;
+
+    @ApiModelProperty("Y 좌표")  // Y NUMBER(10,8)
+    private Double yCrdn;
+
+    public TbNodeDto toDto() {
+        return TbNodeDto.builder()
+                .nodeId(this.nodeId)
+                .nodeType(this.nodeType)
+                .nodeName(this.nodeName)
+                .xCrdn(this.xCrdn)
+                .yCrdn(this.yCrdn)
+                .build();
+    }
+
+}

+ 6 - 21
src/main/java/com/its/bis/process/DbmsDataProcess.java

@@ -2,18 +2,14 @@ package com.its.bis.process;
 
 import com.its.app.AppUtils;
 import com.its.bis.config.ThreadPoolInitializer;
+import com.its.bis.dao.mapper.NodeLinkMapper;
 import com.its.bis.dao.mapper.UnitSystMapper;
-import com.its.bis.dao.mapper.VmsCtlrMapper;
-import com.its.bis.dao.mapper.batch.VmsCtlrDao;
-import com.its.bis.dao.mapper.batch.VmsManageDao;
+import com.its.bis.entity.MakeTrafParam;
 import com.its.bis.entity.TbUnitSystStts;
-import com.its.bis.entity.TbVmsCtlrStts;
-import com.its.bis.service.AppRepositoryService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -27,12 +23,9 @@ public class DbmsDataProcess {
     private final ThreadPoolExecutor taskExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
 
     private final DbmsDataAsyncTask asyncTask;
-    private final VmsCtlrDao vmsCtlrDao;
-    private final VmsManageDao vmsManageDao;
 
     private final UnitSystMapper unitSystMapper;
-    private final VmsCtlrMapper vmsCtlrMapper;
-    private final AppRepositoryService repoService;
+    private final NodeLinkMapper nodeLinkMapper;
 
     private int maxCore = Runtime.getRuntime().availableProcessors();
 
@@ -87,17 +80,9 @@ public class DbmsDataProcess {
         try {
             DbmsDataType type = data.getType();
             switch(type) {
-                case DBMS_DATA_CTLR_STTS:
-                    TbVmsCtlrStts ctlrStts = (TbVmsCtlrStts)data.getData();
-                    this.vmsCtlrMapper.updateCtlrStts(ctlrStts);
-                    break;
-                case DBMS_DATA_CTLR_STTS_LIST:
-                    List<TbVmsCtlrStts> ctlrSttsList = (List<TbVmsCtlrStts>)data.getData();
-                    this.vmsCtlrDao.updateStts(ctlrSttsList, data.isHistory());
-                    if (data.isHistory()) {
-                        this.vmsCtlrDao.insertStts(ctlrSttsList);
-                    }
-                    ctlrSttsList.clear();
+                case DBMS_DATA_CRT_BIS_LINK_TRAF:
+                    MakeTrafParam trafParam = (MakeTrafParam)data.getData();
+                    this.nodeLinkMapper.createBisLinkTraf(trafParam);
                     break;
                 default:
                     log.error("DbmsJobProcess.process: Unknown Request {}.", type);

+ 1 - 10
src/main/java/com/its/bis/process/DbmsDataType.java

@@ -3,16 +3,7 @@ package com.its.bis.process;
 public enum DbmsDataType {
 
     DBMS_DATA_UNIT_SYST_STTS,
-    DBMS_DATA_CTLR_STTS,
-    DBMS_DATA_CTLR_STTS_LIST,
-    DBMS_DATA_CTLR_PARAMETER,
 
-    DBMS_DATA_VMS_FORM_DOWNLOAD,
-    DBMS_DATA_VMS_FORM_DOWNLOAD_RESULT,
-    DBMS_DATA_SECT_TRAF_HS,
-    DBMS_DATA_SECT_PASS_HS,
-    DBMS_DATA_CTRL_HS,
-
-    DBMS_DATA_SYMB_DNLD,
+    DBMS_DATA_CRT_BIS_LINK_TRAF,
 
 }

+ 12 - 0
src/main/java/com/its/bis/scheduler/SchedulerTask.java

@@ -21,6 +21,7 @@ public class SchedulerTask {
 
     private final ApplicationConfig config;
     private final UnitSystService unitSystService;
+    private final NodeLinkService nodeLinkService;
 
     @PreDestroy
     public void onShutDown() {
@@ -44,4 +45,15 @@ public class SchedulerTask {
         log.info("scheduleUnitSystStts: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
     }
 
+    @Scheduled(cron = "45 4,9,14,19,24,29,34,39,44,49,54,59 * * * *")  // 5분주기 작업 실행(BIS 구간 소통정보 생성)
+    public void scheduleMakeBisLinkTraf() {
+        if (!this.config.isStartSchedule()) {
+            return;
+        }
+        Elapsed elapsed = new Elapsed();
+        log.info("makeBisLinkTraf: start. {}", Thread.currentThread().getName());
+        this.nodeLinkService.makeBisLinkTraf();
+        log.info("makeBisLinkTraf: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
+    }
+
 }

+ 28 - 55
src/main/java/com/its/bis/service/AppRepositoryService.java

@@ -1,7 +1,8 @@
 package com.its.bis.service;
 
-import com.its.bis.dto.TbVmsCtlrDto;
-import io.netty.channel.Channel;
+import com.its.bis.dto.BisObe;
+import com.its.bis.dto.TbLinkDto;
+import com.its.bis.dto.TbNodeDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -16,69 +17,41 @@ import java.util.concurrent.ConcurrentMap;
 @RequiredArgsConstructor
 public class AppRepositoryService {
 
-    private final ConcurrentHashMap<Long, TbVmsCtlrDto> ctlrMap = new ConcurrentHashMap<>();
-    private final ConcurrentHashMap<String, TbVmsCtlrDto> ipAddrMap = new ConcurrentHashMap<>();
-    private final ConcurrentHashMap<Channel, TbVmsCtlrDto> channelMap = new ConcurrentHashMap<>();
+    private final ConcurrentHashMap<Long, TbNodeDto> nodeMap = new ConcurrentHashMap<>();
+    private final ConcurrentHashMap<Long, TbLinkDto> linkMap = new ConcurrentHashMap<>();
+    private final ConcurrentHashMap<String, TbLinkDto> sectMap = new ConcurrentHashMap<>();
 
-    private boolean isStaticCycle = false;
-    private String dsplDt;  // 폼 정보 다운로드 시각
+    private final ConcurrentHashMap<String, BisObe> obeMap = new ConcurrentHashMap<>();
 
-    public void setStaticCycle(boolean isStaticCycle) {
-        this.isStaticCycle = isStaticCycle;
+    public Set<Map.Entry<Long, TbNodeDto>> getEntrySetNode() {
+        return this.nodeMap.entrySet();
     }
-    public boolean isStaticCycle() {
-        return this.isStaticCycle;
+    public ConcurrentMap<Long, TbNodeDto> getNodeMap() {
+        return this.nodeMap;
     }
 
-    public void initCtlrInfo() {
-        try {
-            for (Map.Entry<Long, TbVmsCtlrDto> e : this.ctlrMap.entrySet()) {
-                TbVmsCtlrDto obj = e.getValue();
-                obj.setDelYn("Y");
-            }
-        }
-        catch (Exception e) {
-            log.error("AppRepositoryService.initCtlrInfo: Exception: {}.", e.toString());
-        }
-    }
-    public Set<Map.Entry<Long, TbVmsCtlrDto>> getEntrySetCtrl() {
-        return this.ctlrMap.entrySet();
-    }
-    public ConcurrentMap<Long, TbVmsCtlrDto> getCtlrMap() {
-        return this.ctlrMap;
-    }
-    public ConcurrentMap<String, TbVmsCtlrDto> getIpAddrMap() {
-        return this.ipAddrMap;
-    }
-    public ConcurrentMap<Channel, TbVmsCtlrDto> getChannelMap() {
-        return this.channelMap;
+    public TbNodeDto putNodeMap(TbNodeDto obj) {
+        return this.nodeMap.put(obj.getNodeId(), obj);
     }
+//    public TbNodeDto getNodeMap(Long nodeId) {
+//        return this.nodeMap.get(nodeId);
+//    }
 
-    public TbVmsCtlrDto putCtlrMap(TbVmsCtlrDto obj) {
-        return this.ctlrMap.put(obj.getVmsCtlrNmbr(), obj);
-    }
-    public TbVmsCtlrDto getCtlrMap(Long vmsCtlrNmbr) {
-        return this.ctlrMap.get(vmsCtlrNmbr);
+    public TbLinkDto putLinkMap(TbLinkDto obj) {
+        return this.linkMap.put(obj.getLinkId(), obj);
     }
-
-    public TbVmsCtlrDto putIpAddrMap(TbVmsCtlrDto obj) {
-        return this.ipAddrMap.put(obj.getCtlrIp(), obj);
+    public TbLinkDto putSectMap(TbLinkDto obj) {
+        return this.sectMap.put(obj.getFNodeId() + ":" + obj.getTNodeId(), obj);
     }
-    public TbVmsCtlrDto getIpAddrMap(String ipAddr) {
-        return this.ipAddrMap.get(ipAddr);
+    public TbLinkDto getSectMap(Long fNodeId, Long tNodeId) {
+        return this.sectMap.get(fNodeId + ":" + tNodeId);
     }
 
-    public TbVmsCtlrDto putChannelMap(TbVmsCtlrDto obj) {
-        return this.channelMap.put(obj.getChannel(), obj);
-    }
-    public TbVmsCtlrDto getChannelMap(Channel channel) {
-        return this.channelMap.get(channel);
-    }
+//    public BisObe putObeMap(BisObe obj) {
+//        return this.obeMap.put(obj.getDeviceId(), obj);
+//    }
+//    public BisObe getObeMap(String deviceId) {
+//        return this.obeMap.get(deviceId);
+//    }
 
-    public void setDsplDt(String dsplDt) {
-        this.dsplDt = dsplDt;
-    }
-    public String getDsplDt() {
-        return this.dsplDt;
-    }
 }

+ 139 - 0
src/main/java/com/its/bis/service/NodeLinkService.java

@@ -0,0 +1,139 @@
+package com.its.bis.service;
+
+import com.its.app.utils.Elapsed;
+import com.its.app.utils.SysUtils;
+import com.its.bis.config.ServerConfig;
+import com.its.bis.dao.mapper.NodeLinkMapper;
+import com.its.bis.dto.*;
+import com.its.bis.entity.MakeTrafParam;
+import com.its.bis.entity.TbLink;
+import com.its.bis.entity.TbNode;
+import com.its.bis.process.DbmsData;
+import com.its.bis.process.DbmsDataProcess;
+import com.its.bis.process.DbmsDataType;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+@Transactional(rollbackFor = {Exception.class})
+public class NodeLinkService {
+
+    private final ServerConfig config;
+    private final AppRepositoryService repoService;
+    private final NodeLinkMapper mapper;
+    private final DbmsDataProcess dbmsDataProcess;
+
+    @PostConstruct
+    private void init() {
+        log.info("NodeService.init: Start.");
+        log.info("NodeService.init: ..End.");
+    }
+
+    public void loadDb() {
+        loadNodeInfo();
+        loadLinkInfo();
+    }
+
+    public void loadNodeInfo() {
+        Elapsed elapsed = new Elapsed();
+
+        try {
+            List<TbNode> infoList  = this.mapper.selectNodeAll();
+            log.info("NodeService.loadNodeInfo: {} EA", infoList.size());
+            for (TbNode dto : infoList) {
+                log.info("NodeService.loadNodeInfo: {}.", dto);
+                TbNodeDto nodeObj = dto.toDto();
+                this.repoService.putNodeMap(nodeObj);
+            }
+        }
+        catch (Exception e) {
+            log.error("NodeService.loadNodeInfo: {}.", e.toString());
+        }
+
+        this.repoService.getNodeMap().forEach((key, obj) -> {
+            log.info("NodeService.loadNodeInfo:: {}.", obj.toString());
+        });
+        log.info("NodeService.loadNodeInfo: {} EA, {} ms.", this.repoService.getNodeMap().size(), elapsed.milliSeconds());
+    }
+    public void loadLinkInfo() {
+        Elapsed elapsed = new Elapsed();
+
+        try {
+            List<TbLink> infoList  = this.mapper.selectLinkAll();
+            log.info("NodeService.loadLinkInfo: {} EA", infoList.size());
+            for (TbLink dto : infoList) {
+                log.info("NodeService.loadLinkInfo: {}.", dto);
+                TbLinkDto linkObj = dto.toDto();
+                this.repoService.putLinkMap(linkObj);
+                this.repoService.putSectMap(linkObj);
+            }
+        }
+        catch (Exception e) {
+            log.error("NodeService.loadLinkInfo: {}.", e.toString());
+        }
+
+        this.repoService.getNodeMap().forEach((key, obj) -> {
+            log.info("NodeService.loadLinkInfo:: {}.", obj.toString());
+        });
+        log.info("NodeService.loadLinkInfo: {} EA, {} ms.", this.repoService.getNodeMap().size(), elapsed.milliSeconds());
+    }
+
+    public double getDistance(double lat1, double lon1, double lat2, double lon2) {
+        int EARTH_RADIUS = 6371;
+        double dLat = Math.toRadians(lat2 - lat1);
+        double dLon = Math.toRadians(lon2 - lon1);
+
+        double a = Math.sin(dLat/2)* Math.sin(dLat/2)+ Math.cos(Math.toRadians(lat1))* Math.cos(Math.toRadians(lat2))* Math.sin(dLon/2)* Math.sin(dLon/2);
+        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+        double d = EARTH_RADIUS* c * 1000;    // Distance in m
+        return d;
+    }
+
+    public NearNodeDto getNearNode(Location loc) {
+        Elapsed elapsed = new Elapsed();
+        double maxDistance = 40;
+        NearNodeDto node = NearNodeDto.builder().nodeId(0L).distance(maxDistance).build();
+        for (Map.Entry<Long, TbNodeDto> e : this.repoService.getEntrySetNode()) {
+            TbNodeDto obj = e.getValue();
+            double fDistance = (float) getDistance(loc.getMLatitude(), loc.getMLongitude(), obj.getXCrdn(), obj.getYCrdn());
+            if (fDistance < maxDistance) {
+                maxDistance = fDistance;
+                node.setNodeId(obj.getNodeId());
+                node.setDistance(fDistance);
+            }
+        }
+        log.info("getNearNode: {} ms. {} m, {}", elapsed.milliSeconds(), maxDistance, node);
+        return node;
+    }
+
+    public TbLinkDto getSectInfo(Long fNodeId, Long tNodeId) {
+        return this.repoService.getSectMap(fNodeId, tNodeId);
+    }
+
+    /**
+     * BIS 구간 소통정보 생성
+     */
+    public void makeBisLinkTraf() {
+        int historyMin = this.config.getHistoryMin();
+        int minSpeed = this.config.getMinSpeed();
+        int maxSpeed = this.config.getMaxSpeed();
+        String currentTm = SysUtils.getSysTime();
+
+        MakeTrafParam makeParam = MakeTrafParam.builder()
+                .PRCN_DT(currentTm)
+                .FROM_MIN(historyMin)
+                .MIN_SPEED(minSpeed)
+                .MAX_SPEED(maxSpeed)
+                .build();
+        this.dbmsDataProcess.add(new DbmsData(DbmsDataType.DBMS_DATA_CRT_BIS_LINK_TRAF, false, makeParam));
+    }
+
+}

+ 0 - 81
src/main/java/com/its/bis/service/VmsCtlrService.java

@@ -1,81 +0,0 @@
-package com.its.bis.service;
-
-import com.its.app.utils.Elapsed;
-import com.its.bis.config.ApplicationConfig;
-import com.its.bis.dao.mapper.VmsCtlrMapper;
-import com.its.bis.dto.TbVmsCtlrDto;
-import com.its.bis.entity.TbVmsCtlr;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.PostConstruct;
-import java.io.File;
-import java.util.List;
-
-@Slf4j
-@Service
-@RequiredArgsConstructor
-@Transactional(rollbackFor = {Exception.class})
-public class VmsCtlrService {
-
-    private final ApplicationConfig config;
-    private final AppRepositoryService repoService;
-    private final VmsCtlrMapper mapper;
-    private int historyMin;
-
-    @PostConstruct
-    private void init() {
-        log.info("VmsCtlrService.init: Start.");
-        this.historyMin = -1;
-        log.info("VmsCtlrService.init: ..End.");
-    }
-
-    public void loadDb() {
-        loadCtlrInfo();
-    }
-
-    public void loadCtlrInfo() {
-        Elapsed elapsed = new Elapsed();
-        this.repoService.initCtlrInfo();
-
-        try {
-            List<TbVmsCtlr> infoList  = this.mapper.selectAll();
-            log.info("VmsCtlrService.loadCtlrInfo: {} EA", infoList.size());
-            for (TbVmsCtlr dto : infoList) {
-                log.info("VmsCtlrService.loadCtlrInfo: {}.", dto);
-                TbVmsCtlrDto vmsObj = dto.toDto();
-                if (vmsObj.getCtlrId().trim().equals("")) {
-                    log.error("VmsCtlrService.loadCtlrInfo: Controller Ip Address Error: {}.", vmsObj);
-                    continue;
-                }
-
-                vmsObj.setGroupNo(0L);
-
-                this.repoService.putCtlrMap(vmsObj);
-                this.repoService.putIpAddrMap(vmsObj);
-                vmsObj.getStts().initUnknown();
-
-                if (vmsObj.getMaxPhaseNum() > this.config.getMaxDownloadForms()) {
-                    log.error("VmsCtlrService.loadCtlrInfo: VMS {} Download Form Size Error: {}/{}.", vmsObj.getVmsCtlrNmbr(), vmsObj.getMaxPhaseNum(), this.config.getMaxDownloadForms());
-                    vmsObj.setMaxPhaseNum(this.config.getMaxDownloadForms());
-                }
-                vmsObj.setLocalFormDir(this.config.getFtpFormDir() + File.separator + vmsObj.getVmsCtlrNmbr() + File.separator);
-                vmsObj.setFtpFormDir(ApplicationConfig.FTP_FORM + File.separator + vmsObj.getVmsCtlrNmbr() + File.separator);
-                vmsObj.setFtpDownload(true);
-
-                this.config.makeDirectory(vmsObj.getLocalFormDir(), "VMS " + vmsObj.getVmsCtlrNmbr() + " Directory.");
-            }
-        }
-        catch (Exception e) {
-            log.error("VmsCtlrService.loadCtlrInfo: {}.", e.toString());
-        }
-
-        this.repoService.getCtlrMap().forEach((key, obj) -> {
-            log.info("VmsCtlrService.loadCtlrInfo:: {}.", obj.toString());
-        });
-        log.info("VmsCtlrService.loadCtlrInfo: {} ms.", elapsed.milliSeconds());
-    }
-
-}

+ 0 - 88
src/main/java/com/its/bis/webapp/config/WebSecurityConfig.java

@@ -1,88 +0,0 @@
-package com.its.bis.webapp.config;
-
-import com.its.bis.webapp.security.SessionListener;
-import com.its.bis.webapp.service.UserService;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.core.session.SessionRegistry;
-import org.springframework.security.core.session.SessionRegistryImpl;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.CorsConfigurationSource;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-
-import javax.servlet.http.HttpSessionListener;
-
-@EnableWebSecurity
-@Configuration
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-    private final UserService userService;
-
-    public WebSecurityConfig(UserService userService) {
-        this.userService = userService;
-    }
-
-    @Override
-    public void configure(WebSecurity web) throws Exception {
-        web.ignoring().antMatchers("/favicon.ico");
-        web.ignoring().antMatchers("/css/**", "/js/**", "/img/**", "/lib/**");
-
-        web.ignoring().antMatchers(HttpMethod.GET, "/api/**");  // GET Method 는 모두 통과
-        web.ignoring().antMatchers(HttpMethod.POST, "/api/**");  // GET Method 는 모두 통과
-        web.ignoring().antMatchers(HttpMethod.PUT, "/api/**");  // GET Method 는 모두 통과
-        web.ignoring().antMatchers(HttpMethod.DELETE, "/api/**");  // GET Method 는 모두 통과
-    }
-
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
-
-        http
-                .httpBasic().disable()
-                .cors().configurationSource(corsConfigurationSource())
-                .and()
-                .csrf().disable()
-                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
-                .and()
-                .authorizeRequests()
-                // SWAGGER 권한 설정
-                .antMatchers("/swagger-ui.html", "/swagger/**", "/swagger-resources/**", "/webjars/**", "/v2/api-docs").permitAll()
-                // 웹소켓 권한 설정하지
-                .antMatchers("/ws/**").permitAll()
-                .antMatchers("/api/**").permitAll()
-                .anyRequest().permitAll()
-        ;
-    }
-
-    // CORS 허용 적용
-    @Bean
-    public CorsConfigurationSource corsConfigurationSource() {
-        CorsConfiguration corsConfig = new CorsConfiguration();
-
-        corsConfig.setAllowCredentials(true);       // cross origin 으로부터 인증을 위한 쿠키 정보를 받을지 여부
-        corsConfig.addAllowedOriginPattern("*");    // addAllowedOrigin("*") 대신 사용, 허용할 origin 정보, Arrays.asList("http://localhost:8080")
-        corsConfig.addAllowedHeader("*");
-        corsConfig.addAllowedMethod("*");           // 허용할 http methods. Arrays.asList("GET", "POST")
-
-        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-        source.registerCorsConfiguration("/**", corsConfig);
-
-        return source;
-    }
-
-    @Bean
-    public SessionRegistry sessionRegistry() {
-        return new SessionRegistryImpl();
-    }
-
-    @Bean
-    public HttpSessionListener httpSessionListener() {
-        return new SessionListener();
-    }
-
-}
-

+ 0 - 145
src/main/java/com/its/bis/webapp/controller/WebAppCommonController.java

@@ -1,145 +0,0 @@
-package com.its.bis.webapp.controller;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.its.app.utils.Ping;
-import com.its.bis.config.ApplicationConfig;
-import com.its.bis.webapp.service.FileService;
-import com.its.bis.webapp.vo.FileInfoVo;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Slf4j
-@RequiredArgsConstructor
-@Controller
-public class WebAppCommonController {
-
-    private final ResourceLoader resourceLoader;
-    private final ApplicationConfig applicationConfig;
-    private final FileService fileService;
-
-    @RequestMapping({"/", "/index"})
-    public String index(Model model, HttpServletRequest request) {
-
-        String result = "system";
-        model.addAttribute("ServerConfig", this.applicationConfig);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @RequestMapping("/log")
-    public String logFiles(Model model, HttpServletRequest request) {
-        String result = "log";
-        List<FileInfoVo> info = this.fileService.getLogFiles();
-
-        //JSON 형식으로 바꿔주기
-        ObjectMapper mapper = new ObjectMapper();
-        String jsonList="";
-        try {
-            jsonList = mapper.writeValueAsString(info);
-        }
-        catch (IOException e) {
-            log.error("WebAppController.logFiles: Exception: {}", e.toString());
-        }
-
-        model.addAttribute("ServerConfig", this.applicationConfig);
-        model.addAttribute("fileList",jsonList);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @RequestMapping("/login")
-    public String login(Model model) {
-        String result = "login";
-        model.addAttribute("ServerConfig", this.applicationConfig);
-        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @GetMapping("/logout")
-    public void logout() {
-    }
-
-    @RequestMapping("/getServerDate")
-    @ResponseBody
-    public Map<String,Object> getServerDate() {
-        Map<String,Object> map = new HashMap<>();
-        map.put("serverDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return map;
-    }
-
-    @RequestMapping(value = "/getFileView",method = {RequestMethod.POST},produces = {"application/json"})
-    @ResponseBody
-    public String getFileView(@RequestParam("fileName") String fileName, @RequestParam("filePath") String filePath, HttpServletRequest request) {
-        return this.fileService.getView(request, fileName, filePath);
-    }
-
-    @RequestMapping("/getFileDownload")
-    public ResponseEntity<Resource> getFileDownload(@RequestParam("fileName") String fileName , @RequestParam("filePath") String filePath
-            , HttpSession session
-            , HttpServletRequest req
-            , HttpServletResponse res
-            , ModelAndView mav) throws UnsupportedEncodingException {
-
-        return this.fileService.fileDownload(fileName,filePath);
-    }
-
-    @RequestMapping(value = ("/getFileDelete"))
-    @ResponseBody
-    public List<FileInfoVo> getFileDelete(@RequestParam("fileName") String fileName, @RequestParam("filePath") String filePath) {
-        //파일 지우기
-        this.fileService.fileDelete(fileName,filePath);
-        //파일 리스트 가져오기
-        List<FileInfoVo> fileArr =fileService.getLogFiles();
-        return fileArr;
-    }
-
-
-    @RequestMapping(value = ("/getPing"))
-    @ResponseBody
-    public String getPing(@RequestParam("ipAddr") String ipAddr) {
-        //log.info("getPing: {}", ipAddr);
-        String result =  ping(ipAddr);
-        //log.info("getPing: {} ==> {}", ipAddr, result);
-        return result;
-    }
-
-    public String ping(String ipAddr) {
-        String result = "";
-        long startTm = System.nanoTime();
-        long endTm = System.nanoTime();
-        try {
-            boolean isReachable = Ping.isReachable(ipAddr, 5);
-            endTm = System.nanoTime();
-            if (isReachable ) {
-                result = ipAddr + " is alive. " + Long.toString((endTm - startTm) / 1000000) + " ms.";
-            }
-            else {
-                result = ipAddr + " is not alive. time out: " + Long.toString((endTm - startTm) / 1000000) + " ms.";
-            }
-        }
-        catch (Exception e) {
-            result = ipAddr + " error. " + Long.toString((endTm - startTm) / 1000000) + " ms. Exception: " + e.toString();
-        }
-
-        return result;
-    }
-
-}

+ 0 - 138
src/main/java/com/its/bis/webapp/controller/WebAppController.java

@@ -1,138 +0,0 @@
-package com.its.bis.webapp.controller;
-
-import com.its.bis.config.ApplicationConfig;
-import com.its.bis.dto.TbVmsCtlrDto;
-import com.its.bis.service.AppRepositoryService;
-import com.its.bis.webapp.service.FileService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-@Slf4j
-@RequiredArgsConstructor
-@Controller
-public class WebAppController {
-
-    private final ResourceLoader resourceLoader;
-    private final ApplicationConfig applicationConfig;
-    private final AppRepositoryService repoService;
-    private final FileService fileService;
-
-    @RequestMapping(value = {"/controller"})
-    public String controller(Model model, HttpServletRequest request) {
-        String result = "controller";
-        SortedMap<Long, TbVmsCtlrDto> ctlrMap = new TreeMap<>();        //for (Map.Entry<Long, TbVmsCtlr> e : AppRepository.getInstance().getCtlrMap().entrySet()) {
-//        for (Map.Entry<Long, TbVmsCtlrDto> e : this.repoService.getCtlrMap().entrySet()) {
-//            TbVmsCtlrDto obj = e.getValue();
-//            if (obj.getNetState() == NET.CLOSED) {
-//                if (obj.getChannel() != null) {
-//                    obj.setNetState(NET.LOGINED);
-//                }
-////            }
-//            ctlrMap.put(obj.getVmsCtlrNmbr(), obj);
-//        }
-//        model.addAttribute("ServerConfig", this.applicationConfig);
-//        model.addAttribute("list", ctlrMap);
-//        model.addAttribute("ServerTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        return result;
-    }
-
-    @RequestMapping("/getControllerInfo")
-    @ResponseBody
-    public ConcurrentHashMap<Long, TbVmsCtlrDto> getControllerInfo() {
-        ConcurrentHashMap<Long, TbVmsCtlrDto> ctlrMap = new ConcurrentHashMap<>();
-        for (Map.Entry<Long, TbVmsCtlrDto> e : this.repoService.getCtlrMap().entrySet()) {
-            TbVmsCtlrDto obj = e.getValue();
-            ctlrMap.put(obj.getVmsCtlrNmbr(), obj);
-        }
-        return ctlrMap;
-    }
-
-    @RequestMapping(value = ("/disconnectController"))
-    @ResponseBody
-    public String disconnectController(@RequestParam("id") Long id) {
-        String result = "제어기와의 통신 연결을 종료 하였습니다.";
-//        TbVmsCtlrDto ctlr = this.repoService.getCtlrMap(id);
-//        if (ctlr != null && ctlr.getNetState() > NET.CLOSED && ctlr.getChannel() != null) {
-//            VmsServerIdleStateHandler.disconnectChannel(ctlr, ctlr.getChannel());
-//        }
-//        else {
-//            result = "제어기는 현재 연결되어 있지 않습니다.";
-//        }
-        return result;
-    }
-
-    @RequestMapping(value = ("/allDisconnectController"))
-    @ResponseBody
-    public String allDisconnectController() {
-        String result = "통신 연결 중인 제어기와의 통신 연결을 종료 하였습니다.";
-//        for (Map.Entry<Long, TbVmsCtlrDto> e : this.repoService.getCtlrMap().entrySet()) {
-//            TbVmsCtlrDto ctlr = e.getValue();
-//            if (ctlr.getChannel() != null) {
-//                VmsServerIdleStateHandler.disconnectChannel(ctlr, ctlr.getChannel());
-//            }
-//        }
-        return result;
-    }
-
-    @RequestMapping(value = ("/resetConnCount"))
-    @ResponseBody
-    public String resetConnCount(@RequestParam("id") Long id) {
-        String result = "통신 접속횟수를 초기화 하였습니다.";
-//        TbVmsCtlrDto ctlr = this.repoService.getCtlrMap(id);
-//        if (ctlr != null) {
-//            ctlr.resetConnectCount();
-//        }
-        return result;
-    }
-
-    @RequestMapping(value = ("/allResetConnCount"))
-    @ResponseBody
-    public String allResetConnCount() {
-        String result = "모든 제어기의 통신 접속횟수를 초기화 하였습니다.";
-//        for (Map.Entry<Long, TbVmsCtlrDto> e : this.repoService.getCtlrMap().entrySet()) {
-//            TbVmsCtlrDto ctlr = e.getValue();
-//            ctlr.resetConnectCount();
-//        }
-        return result;
-    }
-
-    @RequestMapping(value = ("/resetController"))
-    @ResponseBody
-    public String resetController(@RequestParam("id") Long id) {
-        String result = "제어기를 리셋 하였습니다.";
-//        TbVmsCtlrDto ctlr = this.repoService.getCtlrMap(id);
-//        if (ctlr != null && ctlr.getNetState() > NET.CLOSED && ctlr.getChannel() != null) {
-//            VmsServerIdleStateHandler.disconnectChannel(ctlr, ctlr.getChannel());
-//        }
-//        else {
-//            result = "제어기는 현재 연결되어 있지 않습니다.";
-//        }
-        return result;
-    }
-
-    @RequestMapping(value = ("/allResetController"))
-    @ResponseBody
-    public String allResetController(@RequestParam("id") String id) {
-        String result = "통신 연결 중인 제어기를 리셋 하였습니다.";
-//        for (Map.Entry<Long, TbVmsCtlrDto> e : this.repoService.getCtlrMap().entrySet()) {
-//            TbVmsCtlrDto ctlr = e.getValue();
-//            if (ctlr != null && ctlr.getNetState() > NET.CLOSED && ctlr.getChannel() != null) {
-//                VmsServerIdleStateHandler.disconnectChannel(ctlr, ctlr.getChannel());
-//            }
-//        }
-        return result;
-    }
-
-}

+ 0 - 27
src/main/java/com/its/bis/webapp/security/SessionListener.java

@@ -1,27 +0,0 @@
-package com.its.bis.webapp.security;
-
-import org.springframework.security.web.session.HttpSessionEventPublisher;
-
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-
-public class SessionListener extends HttpSessionEventPublisher {
-
-	public void sessionCreated(HttpSessionEvent se) {
-		HttpSession session = se.getSession();
-		if (session != null) {
-			session.setMaxInactiveInterval(300);
-		}
-
-		super.sessionCreated(se);
-	}
-
-	public void sessionDestroyed(HttpSessionEvent se) {
-		HttpSession session = se.getSession();
-		if (session != null) {
-			
-		}
-
-		super.sessionDestroyed(se);
-	}
-}

+ 0 - 38
src/main/java/com/its/bis/webapp/security/UserAuthenticationProvider.java

@@ -1,38 +0,0 @@
-package com.its.bis.webapp.security;
-
-import com.its.bis.webapp.service.UserService;
-import com.its.bis.webapp.vo.UserVo;
-import org.springframework.security.authentication.AuthenticationProvider;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.stereotype.Component;
-
-@Component
-public class UserAuthenticationProvider implements AuthenticationProvider {
-	private final UserService userService;
-
-	public UserAuthenticationProvider(UserService userService) {
-		this.userService = userService;
-	}
-
-	public Authentication authenticate(Authentication authentication) throws AuthenticationException {
-		String id = authentication.getName();
-		String password = (String) authentication.getCredentials();
-		UserVo user = this.userService.loadUserByUsername(id);
-		if (user == null) {
-			throw new BadCredentialsException("Login Error !!");
-		} else {
-			UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(id, password,
-					user.getAuthorities());
-			result.setDetails(user);
-			return result;
-		}
-	}
-
-	@Override
-	public boolean supports(Class<?> authentication) {
-		return authentication.equals(UsernamePasswordAuthenticationToken.class);
-	}
-}

+ 0 - 198
src/main/java/com/its/bis/webapp/service/FileService.java

@@ -1,198 +0,0 @@
-package com.its.bis.webapp.service;
-
-import com.its.app.utils.OS;
-import com.its.bis.webapp.vo.FileInfoVo;
-import lombok.extern.slf4j.Slf4j;
-import net.sf.json.JSONObject;
-import org.springframework.core.io.InputStreamResource;
-import org.springframework.core.io.Resource;
-import org.springframework.http.ContentDisposition;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@Service
-public class FileService {
-    private final String logDir= "/logs/";
-    private final String sysDir= System.getProperty("user.dir");
-    private final String[] exceptDir ={"backup"};
-    private int id = 1;
-
-    public String getView(HttpServletRequest request, String fileName, String filePath) {
-        long preEndPoint = request.getParameter("preEndPoint") == null ? 0 : Long.parseLong(request.getParameter("preEndPoint") + "");
-        StringBuilder sb = new StringBuilder();
-        long startPoint, endPoint;
-        RandomAccessFile file = null;
-        String errMsg = "";
-
-        try {
-            file = new RandomAccessFile(System.getProperty("user.dir") + filePath + fileName, "r");
-            endPoint = file.length();
-            startPoint = preEndPoint > 0 ? preEndPoint : endPoint < 2000 ? 0 : endPoint - 2000;
-            file.seek(startPoint);
-
-            String str;
-            while ((str = file.readLine()) != null) {
-                byte[] b = str.getBytes("iso-8859-1");
-                str = new String(b, "UTF-8");
-                sb.append(str);
-                sb.append("<br>");
-                endPoint = file.getFilePointer();
-                file.seek(endPoint);
-            }
-
-            JSONObject json = new JSONObject();
-            json.put("endPoint", endPoint);
-            json.put("log", sb.toString());
-            return json.toString();
-        }
-        catch(FileNotFoundException fnf) {
-            log.error("FileService.getView: Exception: {}", fnf.toString());
-            errMsg += fnf.toString();
-        }
-        catch (IOException e) {
-            log.error(e.getMessage());
-            errMsg += e.toString();
-        }
-        finally {
-            try {
-                if (file != null) file.close();
-            }
-            catch (Exception e) {
-                log.error("FileService.getView: Exception: {}", e.toString());
-                errMsg += e.toString();
-            }
-        }
-
-        if (!errMsg.equals("")) {
-            sb.append(errMsg);
-            sb.append("<br>");
-            JSONObject json = new JSONObject();
-            json.put("endPoint", 0);
-            json.put("log", sb.toString());
-            return json.toString();
-        }
-        return null;
-    }
-
-    public ResponseEntity<Resource> fileDownload(String fileName, String filePath){
-        try {
-            Path path = Paths.get(System.getProperty("user.dir")+filePath+ fileName);
-            String contentType = "application/download";
-            HttpHeaders headers = new HttpHeaders();
-            headers.add(HttpHeaders.CONTENT_TYPE, contentType);
-            headers.setContentDisposition(ContentDisposition.parse("attachment;" + " filename=\"" + fileName + "\";"));
-            Resource resource = new InputStreamResource(Files.newInputStream(path));
-
-            return new ResponseEntity<>(resource, headers, HttpStatus.OK);
-        }
-        catch (IOException e) {
-            log.error("FileService.fileDownload: Exception: {}", e.toString());
-        }
-        return null;
-    }
-
-    public void fileDelete(String fileName,String filePath) {
-        File file = new File(this.sysDir+filePath+fileName);
-        if (file.exists()) {
-            if (file.delete()) {
-                log.info("FileService.fileDelete: Delete Success: {}", filePath+fileName);
-            }
-            else {
-                log.error("FileService.fileDelete: Delete Fail: {}", filePath+fileName);
-            }
-        }
-        else {
-            log.warn("FileService.fileDelete: Not exists: {}", filePath+fileName);
-        }
-    }
-
-    public List<FileInfoVo> getLogFiles() {
-        this.id = 1;
-        FileInfoVo rootFile = new FileInfoVo();
-        rootFile.setId(id);
-        rootFile.setType("dir");
-        this.id++;
-        rootFile.setFileName("logs");
-        rootFile.setFileInfos(getFiles(this.sysDir, this.logDir));
-        List<FileInfoVo> fileInfos = new ArrayList<>();
-        fileInfos.add(rootFile);
-        return fileInfos;
-    }
-
-    private List<FileInfoVo> getFiles(String sysDir, String logDir) {
-        int rootId = id - 1;
-        //log.debug("FileService.getFiles: id: {}, sysDir: {}, logDir: {}", id, sysDir, logDir);
-        List<FileInfoVo> subArr = new ArrayList<>();
-        File dirFile = new File(sysDir, logDir);
-        File[] fileList = dirFile.listFiles();
-
-        for (File file: fileList) {
-            FileInfoVo info = new FileInfoVo();
-            //log.debug("FileService.getFiles: getName: {}, isDir: {}, getPath: {}", file.getName(), file.isDirectory(), file.getPath());
-
-            if (file.isDirectory()) {
-                for (String dir : exceptDir) {
-                    if (dir.equals(file.getName())) {
-                        break;
-                    }
-                    else {
-                        String subDir = file.getPath().substring(file.getPath().indexOf(logDir.replaceAll("/", "")), file.getPath().length());
-                        info.setId(id);
-                        id++;
-                        String sFileSeparator = "/";
-                        info.setFilePath(sFileSeparator + subDir);
-                        info.setFileName(file.getName());
-                        info.setFileSize(file.length());
-                        info.setType("dir");
-
-                        info.setFileInfos(getFiles(sysDir,  subDir));
-                        info.setParentId(rootId);
-                        //log.info(info.toString());
-                        subArr.add(info);
-                    }
-                }
-            }
-        }
-
-        //log.debug("x: {}", fileList.toString());
-        for (File file: fileList) {
-            FileInfoVo info = new FileInfoVo();
-            if (file.isFile() && file.getName().contains(".log")) {
-                info.setId(id);
-                id++;
-                info.setFileName(file.getName());
-                info.setFileSize(file.length());
-                String subDir;
-                if (OS.isWindows()) {
-                    subDir = file.getPath().substring(file.getPath().indexOf(logDir.replaceAll("/","")), file.getPath().length() - file.getName().length()).replaceAll("\\\\", "/");
-                } else {
-                    subDir = file.getPath().substring(file.getPath().indexOf(logDir), file.getPath().length() - file.getName().length()).replaceAll("\\\\", "/");
-                }
-
-                String sFileSeparator = "/";
-                info.setFilePath(sFileSeparator + subDir);
-                info.setType("log");
-                info.setParentId(rootId);
-                //log.info(info.toString());
-                subArr.add(info);
-            }
-        }
-        //log.debug("y: {}", subArr.toString());
-        return subArr;
-    }
-
-}

+ 0 - 40
src/main/java/com/its/bis/webapp/service/UserService.java

@@ -1,40 +0,0 @@
-package com.its.bis.webapp.service;
-
-import com.its.bis.webapp.vo.UserVo;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@Service
-public class UserService implements UserDetailsService {
-
-    @Value("${server.user.id:admin}")
-    private String userId;
-    @Value("${server.user.pswd:1234}")
-    private String userPswd;
-
-    @Override
-    public UserVo loadUserByUsername(String username) throws UsernameNotFoundException {
-
-        String userId = this.userId;
-        String userPswd = this.userPswd;
-        UserVo user = new UserVo(userId,"{noop}"+userPswd);
-        if (user == null) {
-            throw new UsernameNotFoundException("No user found with "+username + user.getUsername());
-        }
-
-        //디비에서 권한 가져와야하는데 고정으로 넣어줌
-        List<GrantedAuthority> roles = new ArrayList<GrantedAuthority>();
-        roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        user.setAuthorities(roles);
-        return user;
-    }
-}

+ 0 - 19
src/main/java/com/its/bis/webapp/vo/FileInfoVo.java

@@ -1,19 +0,0 @@
-package com.its.bis.webapp.vo;
-
-import lombok.Data;
-import lombok.ToString;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-@ToString
-public class FileInfoVo {
-    private List<FileInfoVo> fileInfos = new ArrayList<>();
-    private int    id;
-    private int    parentId;
-    private String type;
-    private String fileName;
-    private long   fileSize;
-    private String filePath;
-}

+ 0 - 51
src/main/java/com/its/bis/webapp/vo/UserVo.java

@@ -1,51 +0,0 @@
-package com.its.bis.webapp.vo;
-
-import lombok.Data;
-import lombok.ToString;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-@ToString
-public class UserVo implements UserDetails {
-    private String id;
-    private String password;
-    private List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
-
-    public UserVo(String id, String password){
-        this.id = id;
-        this.password = password;
-    }
-
-    public UserVo() {
-
-    }
-
-    @Override
-    public String getUsername() {
-        return id;
-    }
-
-    @Override
-    public boolean isAccountNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isAccountNonLocked() {
-        return true;
-    }
-
-    @Override
-    public boolean isCredentialsNonExpired() {
-        return true;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return true;
-    }
-}

+ 75 - 0
src/main/resources/mybatis/mapper/NodeLinkMapper.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.its.bis.dao.mapper.NodeLinkMapper">
+
+    <select id="selectNodeAll" resultType="com.its.bis.entity.TbNode" fetchSize="1000">
+    <![CDATA[
+        SELECT A.NODE_ID,
+               A.NODE_TYPE,
+               A.NODE_NAME,
+               A.TURN_P,
+               A.RMRK,
+               A.X_CRDN,
+               A.Y_CRDN
+        FROM TB_NODE A
+        ]]>
+    </select>
+
+    <select id="selectLinkAll" resultType="com.its.bis.entity.TbLink" fetchSize="1000">
+    <![CDATA[
+        SELECT A.LINK_ID,
+               A.F_NODE_ID,
+               A.T_NODE_ID,
+               A.LANES,
+               A.ROAD_RANK,
+               A.ROAD_TYPE,
+               A.ROAD_NO,
+               A.ROAD_NAME,
+               A.MAX_SPD,
+               A.LINK_LENG,
+               A.DEL_YN
+        FROM TB_LINK A
+        ]]>
+    </select>
+
+    <update id="createBisLinkTraf" parameterType="com.its.bis.entity.MakeTrafParam">
+    <![CDATA[
+        MERGE INTO TB_BIS_LINK_TRAF L
+        USING (SELECT LINK_ID                AS LINK_ID,
+                      #{obj.PRCN_DT}         AS PRCN_DT,
+                      COUNT(1)               AS TFVL,
+                      ROUND(AVG(SPED), 0)    AS SPED,
+                      ROUND(AVG(TRVL_HH), 0) AS TRVL_HH,
+                      COUNT(1)               AS DATA_NUM
+               FROM TB_BIS_LINK_TRAF_CLCT
+               WHERE 1=1
+                 AND CLCT_DT >= TO_CHAR(SYSDATE - #{obj.FROM_MIN}/1440, 'YYYYMMDDHH24MISS')
+                 AND SPED >= #{obj.MIN_SPEED}
+                 AND SPED <= #{obj.MAX_SPEED}
+               GROUP BY LINK_ID) M
+        ON (L.LINK_ID = M.LINK_ID)
+        WHEN MATCHED THEN
+            UPDATE SET
+                L.PRCN_DT  = M.PRCN_DT,
+                L.TFVL     = M.TFVL,
+                L.SPED     = M.SPED,
+                L.TRVL_HH  = M.TRVL_HH,
+                L.DATA_NUM = M.DATA_NUM
+        WHEN NOT MATCHED THEN
+            INSERT (LINK_ID,
+                    PRCN_DT,
+                    TFVL,
+                    SPED,
+                    TRVL_HH,
+                    DATA_NUM )
+            VALUES (M.LINK_ID,
+                    M.PRCN_DT,
+                    M.TFVL,
+                    M.SPED,
+                    M.TRVL_HH,
+                    M.DATA_NUM )
+    ]]>
+    </update>
+
+</mapper>

+ 0 - 423
src/main/resources/mybatis/mapper/VmsCtlrMapper.xml

@@ -1,423 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.its.bis.dao.mapper.VmsCtlrMapper">
-
-    <select id="selectAll" resultType="com.its.bis.entity.TbVmsCtlr" fetchSize="100">
-    <![CDATA[
-        select t1.vms_ctlr_nmbr       AS vmsCtlrNmbr,
-               t1.vms_ctlr_local_no   AS vmsCtlrLocalNo,
-               t1.vms_ctlr_id         AS vmsCtlrId,
-               t1.vms_nm              AS vmsNm,
-               t1.vms_ctlr_ip         AS vmsCtlrIp,
-               'VUTP'                 AS vmsUsagTypeCd,
-               'FRM1'                 AS vmsFrmTypeCd,
-               t1.vms_type_cd         AS vmsTypeCd,
-               'VMM1'                 AS vmsModlTypeCd,
-               t1.vms_ctlr_port       AS vmsCtlrPort,
-               t1.oper_mode           AS operMode,
-               t1.cmnc_fail_rate      AS cmncFailRate,
-               t1.brgh_nght_step      AS brghNghtStep,
-               t1.brgh_week_step      AS brghWeekStep,
-               t1.def_phse_chng_cycl  AS defPhseChngCycl,
-               t1.modl_err_rate       AS modlErrRate,
-               0                      AS cmncfailSlotNmbr,
-               0                      AS pwerFailSlotNmbr,
-               'Y'                    AS cmtrinfrCnctYn,
-               'Y'                    AS wthrinfrCnctYn,
-               'Y'                    AS envrinfrCnctYn,
-               'Y'                    AS trfcStrgUseYn,
-               t1.vms_max_phse_num    AS vmsMaxPhseNum,
-               t1.panl_on_time        AS panlOnTime,
-               t1.panl_off_time       AS panlOffTime,
-               t1.panl_pwer_mode      AS panlPwerMode,
-               t1.brgh_mode           AS brghMode,
-               t1.istl_lctn_nm        AS istlLctnNm,
-               0                      AS vmsLocIfscId,
-               t1.fan_run_tmpr        AS fanRunTmpr,
-               t1.hetr_run_tmpr       AS hetrRunTmpr,
-               t1.fan_mode            AS fanMode,
-               t1.hetr_mode           AS hetrMode,
-               t1.brgh_curr_step      AS brghCurrStep,
-               t1.istl_lctn_addr      AS istlLctnAddr,
-               t1.protocol_ver        AS protocolVer,
-               t1.del_yn              AS delYn,
-               t2.vms_wdth            AS vmsWidth,
-               t2.vms_hght            AS vmsHeight,
-               t2.modl_row_num        AS powrRowNum,
-               t2.modl_col_num        AS powrColNum,
-               t2.powr_row_num        AS powrRowNum,
-               t2.powr_col_num        AS powrColNum
-        from tb_vms_ctlr t1
-        inner join tb_vms_type t2
-                on t1.del_yn = 'N'
-               and t1.vms_type_cd = t2.vms_type_cd
-               and t1.protocol_ver = 2
-        order by t1.vms_ctlr_nmbr
-    ]]>
-    </select>
-
-    <select id="selectCtlrStts" resultType="com.its.bis.entity.TbVmsCtlrStts" fetchSize="100">
-    <![CDATA[
-        select t1.vms_ctlr_nmbr     AS vmsCtlrNmbr,
-               t1.updt_dt           AS updtDt,
-               t1.cmnc_stts_cd      AS cmncSttsCd,
-               t1.pwer_stts_cd      AS pwerSttsCd,
-               t1.modl_stts_cd      AS modlSttsCd,
-               t1.cbox_door_stts_cd AS cboxDoorSttsCd,
-               t1.fan_stts_cd       AS fanSttsCd,
-               t1.hetr_stts_cd      AS hetrSttsCd,
-               t1.cbox_tmpr         AS cboxTmpr,
-               t1.brgh_val          AS brghVal,
-               t1.comm_stts_cd      AS commSttsCd,
-               t1.modl_stts         AS modlStts,
-               t1.pwer_stts         AS pwerStts,
-               t1.cbox_hum          AS cboxHum,
-               t1.cbox_fan_stts_cd  AS cboxFanSttsCd,
-               t1.cbox_hetr_stts_cd AS cboxHetrSttsCd,
-               t1.tmpr              AS tmpr,
-               t1.hum               AS hum,
-               t1.door_stts_cd      AS doorSttsCd,
-               t1.brgh_mode         AS brghMode,
-               t1.brgh_curr         AS brghCurr,
-               t1.brgh_week         AS brghWeek,
-               t1.brgh_nght         AS brghNght,
-               t1.pwer_onoff_cd     AS pwerOnOffCd
-        from tb_vms_ctlr_stts t1
-        inner join tb_vms_ctlr t2
-        on t1.vms_ctlr_nmbr = t2.vms_ctlr_nmbr
-        and t2.protocol_ver = 2
-        ]]>
-    </select>
-
-    <update id="updateCtlrStts" parameterType="com.its.bis.entity.TbVmsCtlrStts">
-    <![CDATA[
-        merge into tb_vms_ctlr_stts L
-            using (select
-                       #{obj.vmsCtlrNmbr}    AS vms_ctlr_nmbr,
-                       #{obj.updtDt}         AS updt_dt,
-                       #{obj.cmncSttsCd}     AS cmnc_stts_cd,
-                       #{obj.pwerSttsCd}     AS pwer_stts_cd,
-                       #{obj.modlSttsCd}     AS modl_stts_cd,
-                       #{obj.cboxDoorSttsCd} AS cbox_door_stts_cd,
-                       #{obj.fanSttsCd}      AS fan_stts_cd,
-                       #{obj.hetrSttsCd}     AS hetr_stts_cd,
-                       #{obj.cboxTmpr}       AS cbox_tmpr,
-                       #{obj.brghVal}        AS brgh_val,
-                       #{obj.commSttsCd}     AS comm_stts_cd,
-                       #{obj.modlStts}       AS modl_stts,
-                       #{obj.pwerStts}       AS pwer_stts,
-                       #{obj.cboxHum}        AS cbox_hum,
-                       #{obj.cboxFanSttsCd}  AS cbox_fan_stts_cd,
-                       #{obj.cboxHetrSttsCd} AS cbox_hetr_stts_cd,
-                       #{obj.tmpr}           AS tmpr,
-                       #{obj.hum}            AS hum,
-                       #{obj.doorSttsCd}     AS door_stts_cd,
-                       #{obj.brghMode}       AS brgh_mode,
-                       #{obj.brghCurr}       AS brgh_curr,
-                       #{obj.brghWeek}       AS brgh_week,
-                       #{obj.brghNght}       AS brgh_nght,
-                       #{obj.pwerOnOffCd}    AS pwer_onoff_cd
-                   from dual) M
-            on (    L.vms_ctlr_nmbr = M.vms_ctlr_nmbr)
-            when matched then
-                update set
-                    L.updt_dt           = M.updt_dt,
-                    L.cmnc_stts_cd      = M.cmnc_stts_cd,
-                    L.pwer_stts_cd      = M.pwer_stts_cd,
-                    L.modl_stts_cd      = M.modl_stts_cd,
-                    L.cbox_door_stts_cd = M.cbox_door_stts_cd,
-                    L.fan_stts_cd       = M.fan_stts_cd,
-                    L.hetr_stts_cd      = M.hetr_stts_cd,
-                    L.cbox_tmpr         = M.cbox_tmpr,
-                    L.brgh_val          = M.brgh_val,
-                    L.comm_stts_cd      = M.comm_stts_cd,
-                    L.modl_stts         = M.modl_stts,
-                    L.pwer_stts         = M.pwer_stts,
-                    L.cbox_hum          = M.cbox_hum,
-                    L.cbox_fan_stts_cd  = M.cbox_fan_stts_cd,
-                    L.cbox_hetr_stts_cd = M.cbox_hetr_stts_cd,
-                    L.tmpr              = M.tmpr,
-                    L.hum               = M.hum,
-                    L.door_stts_cd      = M.door_stts_cd,
-                    L.brgh_mode         = M.brgh_mode,
-                    L.brgh_curr         = M.brgh_curr,
-                    L.brgh_week         = M.brgh_week,
-                    L.brgh_nght         = M.brgh_nght,
-                    L.pwer_onoff_cd     = M.pwer_onoff_cd
-            when not matched then
-                insert (
-                        vms_ctlr_nmbr,
-                        updt_dt,
-                        cmnc_stts_cd,
-                        pwer_stts_cd,
-                        modl_stts_cd,
-                        cbox_door_stts_cd,
-                        fan_stts_cd,
-                        hetr_stts_cd,
-                        cbox_tmpr,
-                        brgh_val,
-                        comm_stts_cd,
-                        modl_stts,
-                        pwer_stts,
-                        cbox_hum,
-                        cbox_fan_stts_cd,
-                        cbox_hetr_stts_cd,
-                        tmpr,
-                        hum,
-                        door_stts_cd,
-                        brgh_mode,
-                        brgh_curr,
-                        brgh_week,
-                        brgh_nght,
-                        pwer_onoff_cd )
-                    values (
-                       M.vms_ctlr_nmbr,
-                       M.updt_dt,
-                       M.cmnc_stts_cd,
-                       M.pwer_stts_cd,
-                       M.modl_stts_cd,
-                       M.cbox_door_stts_cd,
-                       M.fan_stts_cd,
-                       M.hetr_stts_cd,
-                       M.cbox_tmpr,
-                       M.brgh_val,
-                       M.comm_stts_cd,
-                       M.modl_stts,
-                       M.pwer_stts,
-                       M.cbox_hum,
-                       M.cbox_fan_stts_cd,
-                       M.cbox_hetr_stts_cd,
-                       M.tmpr,
-                       M.hum,
-                       M.door_stts_cd,
-                       M.brgh_mode,
-                       M.brgh_curr,
-                       M.brgh_week,
-                       M.brgh_nght,
-                       M.pwer_onoff_cd )
-        ]]>
-    </update>
-
-    <update id="batchUpdateCtlrStts" parameterType="java.util.Map">
-    <![CDATA[
-        merge into tb_vms_ctlr_stts L
-            using (select
-                       #{vmsCtlrNmbr}    AS vms_ctlr_nmbr,
-                       #{updtDt}         AS updt_dt,
-                       #{cmncSttsCd}     AS cmnc_stts_cd,
-                       #{pwerSttsCd}     AS pwer_stts_cd,
-                       #{modlSttsCd}     AS modl_stts_cd,
-                       #{cboxDoorSttsCd} AS cbox_door_stts_cd,
-                       #{fanSttsCd}      AS fan_stts_cd,
-                       #{hetrSttsCd}     AS hetr_stts_cd,
-                       #{cboxTmpr}       AS cbox_tmpr,
-                       #{brghVal}        AS brgh_val,
-                       #{commSttsCd}     AS comm_stts_cd,
-                       #{modlStts}       AS modl_stts,
-                       #{pwerStts}       AS pwer_stts,
-                       #{cboxHum}        AS cbox_hum,
-                       #{cboxFanSttsCd}  AS cbox_fan_stts_cd,
-                       #{cboxHetrSttsCd} AS cbox_hetr_stts_cd,
-                       #{tmpr}           AS tmpr,
-                       #{hum}            AS hum,
-                       #{doorSttsCd}     AS door_stts_cd,
-                       #{brghMode}       AS brgh_mode,
-                       #{brghCurr}       AS brgh_curr,
-                       #{brghWeek}       AS brgh_week,
-                       #{brghNght}       AS brgh_nght,
-                       #{pwerOnOffCd}    AS pwer_onoff_cd
-                   from dual) M
-            on (    L.vms_ctlr_nmbr = M.vms_ctlr_nmbr)
-            when matched then
-                update set
-                    L.updt_dt           = M.updt_dt,
-                    L.cmnc_stts_cd      = M.cmnc_stts_cd,
-                    L.pwer_stts_cd      = M.pwer_stts_cd,
-                    L.modl_stts_cd      = M.modl_stts_cd,
-                    L.cbox_door_stts_cd = M.cbox_door_stts_cd,
-                    L.fan_stts_cd       = M.fan_stts_cd,
-                    L.hetr_stts_cd      = M.hetr_stts_cd,
-                    L.cbox_tmpr         = M.cbox_tmpr,
-                    L.brgh_val          = M.brgh_val,
-                    L.comm_stts_cd      = M.comm_stts_cd,
-                    L.modl_stts         = M.modl_stts,
-                    L.pwer_stts         = M.pwer_stts,
-                    L.cbox_hum          = M.cbox_hum,
-                    L.cbox_fan_stts_cd  = M.cbox_fan_stts_cd,
-                    L.cbox_hetr_stts_cd = M.cbox_hetr_stts_cd,
-                    L.tmpr              = M.tmpr,
-                    L.hum               = M.hum,
-                    L.door_stts_cd      = M.door_stts_cd,
-                    L.brgh_mode         = M.brgh_mode,
-                    L.brgh_curr         = M.brgh_curr,
-                    L.brgh_week         = M.brgh_week,
-                    L.brgh_nght         = M.brgh_nght,
-                    L.pwer_onoff_cd     = M.pwer_onoff_cd
-            when not matched then
-                insert (
-                        vms_ctlr_nmbr,
-                        updt_dt,
-                        cmnc_stts_cd,
-                        pwer_stts_cd,
-                        modl_stts_cd,
-                        cbox_door_stts_cd,
-                        fan_stts_cd,
-                        hetr_stts_cd,
-                        cbox_tmpr,
-                        brgh_val,
-                        comm_stts_cd,
-                        modl_stts,
-                        pwer_stts,
-                        cbox_hum,
-                        cbox_fan_stts_cd,
-                        cbox_hetr_stts_cd,
-                        tmpr,
-                        hum,
-                        door_stts_cd,
-                        brgh_mode,
-                        brgh_curr,
-                        brgh_week,
-                        brgh_nght,
-                        pwer_onoff_cd )
-                    values (
-                       M.vms_ctlr_nmbr,
-                       M.updt_dt,
-                       M.cmnc_stts_cd,
-                       M.pwer_stts_cd,
-                       M.modl_stts_cd,
-                       M.cbox_door_stts_cd,
-                       M.fan_stts_cd,
-                       M.hetr_stts_cd,
-                       M.cbox_tmpr,
-                       M.brgh_val,
-                       M.comm_stts_cd,
-                       M.modl_stts,
-                       M.pwer_stts,
-                       M.cbox_hum,
-                       M.cbox_fan_stts_cd,
-                       M.cbox_hetr_stts_cd,
-                       M.tmpr,
-                       M.hum,
-                       M.door_stts_cd,
-                       M.brgh_mode,
-                       M.brgh_curr,
-                       M.brgh_week,
-                       M.brgh_nght,
-                       M.pwer_onoff_cd )
-        ]]>
-    </update>
-
-    <insert id="insertCtlrSttsHs" parameterType="com.its.bis.entity.TbVmsCtlrStts">
-    <![CDATA[
-        insert into tb_vms_ctlr_stts_hs (
-            crtn_dt,
-            vms_ctlr_nmbr,
-            cmnc_stts_cd,
-            pwer_stts_cd,
-            modl_stts_cd,
-            cbox_door_stts_cd,
-            fan_stts_cd,
-            hetr_stts_cd,
-            cbox_tmpr,
-            brgh_val,
-            comm_stts_cd,
-            modl_stts,
-            pwer_stts,
-            cbox_hum,
-            cbox_fan_stts_cd,
-            cbox_hetr_stts_cd,
-            tmpr,
-            hum,
-            door_stts_cd,
-            brgh_mode,
-            brgh_curr,
-            brgh_week,
-            brgh_nght,
-            pwer_onoff_cd )
-        values (
-           #{obj.updtDt},
-           #{obj.vmsCtlrNmbr},
-           #{obj.cmncSttsCd},
-           #{obj.pwerSttsCd},
-           #{obj.modlSttsCd},
-           #{obj.cboxDoorSttsCd},
-           #{obj.fanSttsCd},
-           #{obj.hetrSttsCd},
-           #{obj.cboxTmpr},
-           #{obj.brghVal},
-           #{obj.commSttsCd},
-           #{obj.modlStts},
-           #{obj.pwerStts},
-           #{obj.cboxHum},
-           #{obj.cboxFanSttsCd},
-           #{obj.cboxHetrSttsCd},
-           #{obj.tmpr},
-           #{obj.hum},
-           #{obj.doorSttsCd},
-           #{obj.brghMode},
-           #{obj.brghCurr},
-           #{obj.brghWeek},
-           #{obj.brghNght},
-           #{obj.pwerOnOffCd}
-       )
-        ]]>
-    </insert>
-
-    <insert id="batchInsertCtlrSttsHs" parameterType="java.util.Map">
-    <![CDATA[
-        insert into tb_vms_ctlr_stts_hs (
-            crtn_dt,
-            vms_ctlr_nmbr,
-            cmnc_stts_cd,
-            pwer_stts_cd,
-            modl_stts_cd,
-            cbox_door_stts_cd,
-            fan_stts_cd,
-            hetr_stts_cd,
-            cbox_tmpr,
-            brgh_val,
-            comm_stts_cd,
-            modl_stts,
-            pwer_stts,
-            cbox_hum,
-            cbox_fan_stts_cd,
-            cbox_hetr_stts_cd,
-            tmpr,
-            hum,
-            door_stts_cd,
-            brgh_mode,
-            brgh_curr,
-            brgh_week,
-            brgh_nght,
-            pwer_onoff_cd )
-        values (
-           #{updtDt},
-           #{vmsCtlrNmbr},
-           #{cmncSttsCd},
-           #{pwerSttsCd},
-           #{modlSttsCd},
-           #{cboxDoorSttsCd},
-           #{fanSttsCd},
-           #{hetrSttsCd},
-           #{cboxTmpr},
-           #{brghVal},
-           #{commSttsCd},
-           #{modlStts},
-           #{pwerStts},
-           #{cboxHum},
-           #{cboxFanSttsCd},
-           #{cboxHetrSttsCd},
-           #{tmpr},
-           #{hum},
-           #{doorSttsCd},
-           #{brghMode},
-           #{brghCurr},
-           #{brghWeek},
-           #{brghNght},
-           #{pwerOnOffCd}
-       )
-    ]]>
-    </insert>
-
-</mapper>

+ 65 - 26
src/test/java/com/its/app/AgipCommServerApplicationTests.java

@@ -2,23 +2,62 @@ package com.its.app;
 
 import com.its.app.utils.ItsUtils;
 import com.its.app.utils.SysUtils;
-import com.its.bis.esb.protocol.EsbFrameTail;
-import com.its.bis.esb.protocol.EsbReqVmsShortMsg;
-import com.its.bis.xnettcp.vms.protocol.enums.eVmsOpCode;
+import com.its.bis.AgipCommServerApplication;
+import com.its.bis.dto.Location;
+import com.its.bis.service.NodeLinkService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
 import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
 import org.jasypt.salt.StringFixedSaltGenerator;
 import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
 
 import java.io.UnsupportedEncodingException;
-import java.nio.ByteBuffer;
 
 @Slf4j
-//@SpringBootTest(classes = VmsCommServerApplication.class)
+@SpringBootTest(classes = AgipCommServerApplication.class)
 public class AgipCommServerApplicationTests {
 
+    public static double getDistance(double lat1, double lon1, double lat2, double lon2) {
+        int EARTH_RADIUS = 6371;
+        double dLat = Math.toRadians(lat2 - lat1);
+        double dLon = Math.toRadians(lon2 - lon1);
+
+        double a = Math.sin(dLat/2)* Math.sin(dLat/2)+ Math.cos(Math.toRadians(lat1))* Math.cos(Math.toRadians(lat2))* Math.sin(dLon/2)* Math.sin(dLon/2);
+        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+        double d = EARTH_RADIUS* c * 1000;    // Distance in m
+        return d;
+    }
+
+    @Test
+    void getNearNode() {
+        NodeLinkService nodeLinkService = (NodeLinkService)AppUtils.getBean(NodeLinkService.class);
+        Location from = Location.builder()
+                .mLatitude(128.74352336)
+                .mLongitude(36.56392018)
+                .build();
+        log.error("{}", nodeLinkService.getNearNode(from));
+    }
+
+    @Test
+    void dist() {
+//        private double mLatitude = 0.0;     // 위도, 37.48543554333333
+//        private double mLongitude = 0.0;    // 경도, 126.89448518666667
+
+        Location from = Location.builder()
+                .mLatitude(128.74352336)
+                .mLongitude(36.56392018)
+                .build();
+        Location to = Location.builder()
+                .mLatitude(128.73881251)
+                .mLongitude(36.56128759)
+                .build();
+
+        log.error("{}", from.distanceTo(to));
+        log.error("{}", getDistance(from.getMLatitude(), from.getMLongitude(), to.getMLatitude(), to.getMLongitude()));
+    }
+
     @Test
     void jasypt() {
         String encKey = "asdkjfaslkjflkajslfjkajlkf";
@@ -70,9 +109,9 @@ public class AgipCommServerApplicationTests {
 
     @Test
     void test3() {
-        byte b = (byte)0xFF;
-        eVmsOpCode opCode = eVmsOpCode.getValue(b);
-        log.info("{}, {}", b, opCode);
+//        byte b = (byte)0xFF;
+//        eVmsOpCode opCode = eVmsOpCode.getValue(b);
+//        log.info("{}, {}", b, opCode);
     }
 
     @Test
@@ -136,16 +175,16 @@ public class AgipCommServerApplicationTests {
 
     @Test
     void getDnldNmbr() {
-        log.info("{}", VmsSymbService.getDnldSymbNmbr("60100"));
-        log.info("{}", VmsSymbService.getDnldSymbNmbr("80061"));
-        log.info("{}", VmsSymbService.getDnldSymbNmbr("80060"));
-        log.info("{}", VmsSymbService.getDnldSymbNmbr("80021"));
-        log.info("{}", VmsSymbService.getDnldSymbNmbr("8002"));
-
-        log.info("{}", VmsFormService.getDnldFormNo(10013));
-        log.info("{}", VmsFormService.getDnldFormNo(10054));
-        log.info("{}", VmsFormService.getDnldFormNo(10186));
-        log.info("{}", VmsFormService.getDnldFormNo(13));
+//        log.info("{}", VmsSymbService.getDnldSymbNmbr("60100"));
+//        log.info("{}", VmsSymbService.getDnldSymbNmbr("80061"));
+//        log.info("{}", VmsSymbService.getDnldSymbNmbr("80060"));
+//        log.info("{}", VmsSymbService.getDnldSymbNmbr("80021"));
+//        log.info("{}", VmsSymbService.getDnldSymbNmbr("8002"));
+//
+//        log.info("{}", VmsFormService.getDnldFormNo(10013));
+//        log.info("{}", VmsFormService.getDnldFormNo(10054));
+//        log.info("{}", VmsFormService.getDnldFormNo(10186));
+//        log.info("{}", VmsFormService.getDnldFormNo(13));
     }
 
     String shortToBinaryString(String binary) {
@@ -196,19 +235,19 @@ public class AgipCommServerApplicationTests {
 
     @Test
     void esbPacket() {
-        EsbReqVmsShortMsg vmsShortMsg = new EsbReqVmsShortMsg("ADTRVMS00100001", 1, 2, 24, "가나다123AB CD");
-        ByteBuffer byteBuffer = vmsShortMsg.getByteBuffer();
-        byte[] packet = byteBuffer.array();
-        log.info("{}", SysUtils.byteArrayToHexAscii(packet));
+//        EsbReqVmsShortMsg vmsShortMsg = new EsbReqVmsShortMsg("ADTRVMS00100001", 1, 2, 24, "가나다123AB CD");
+//        ByteBuffer byteBuffer = vmsShortMsg.getByteBuffer();
+//        byte[] packet = byteBuffer.array();
+//        log.info("{}", SysUtils.byteArrayToHexAscii(packet));
     }
 
 
     @Test
     void esbCrcTest() {
-        byte[] bbCrc = EsbFrameTail.hexToByteArray("00 20".replace(" ", ""));
-        byte[] bb = EsbFrameTail.hexToByteArray("54 52 53 44 46 30 30 39 30 30 36 30 30 56 4d 53 30 30 30 31 32 30 31 36 30 38 32 35 32 30 34 37 30 32 00 00 00 11 02 00 50 00 00 00 0f 30 30 30 36".replace(" ", ""));
-        short crc = EsbFrameTail.getCrc(bb);
-        log.info("{}", crc);
+//        byte[] bbCrc = EsbFrameTail.hexToByteArray("00 20".replace(" ", ""));
+//        byte[] bb = EsbFrameTail.hexToByteArray("54 52 53 44 46 30 30 39 30 30 36 30 30 56 4d 53 30 30 30 31 32 30 31 36 30 38 32 35 32 30 34 37 30 32 00 00 00 11 02 00 50 00 00 00 0f 30 30 30 36".replace(" ", ""));
+//        short crc = EsbFrameTail.getCrc(bb);
+//        log.info("{}", crc);
     }
 
 }