shjung 2 yıl önce
ebeveyn
işleme
7980ff894f
43 değiştirilmiş dosya ile 831 ekleme ve 255 silme
  1. 6 5
      src/main/java/com/its/op/ItsOpServerApplication.java
  2. 96 0
      src/main/java/com/its/op/controller/ReloadDatabaseController.java
  3. 3 3
      src/main/java/com/its/op/controller/its/database/TbIfscController.java
  4. 3 3
      src/main/java/com/its/op/controller/its/database/TbLinkController.java
  5. 2 2
      src/main/java/com/its/op/controller/its/database/TbNodeController.java
  6. 3 3
      src/main/java/com/its/op/controller/its/database/TbRoadController.java
  7. 1 1
      src/main/java/com/its/op/controller/its/history/TbIfscTrafHsController.java
  8. 1 1
      src/main/java/com/its/op/controller/its/history/TbLinkTrafClctHsAnalController.java
  9. 1 1
      src/main/java/com/its/op/controller/its/history/TbLinkTrafClctHsController.java
  10. 1 1
      src/main/java/com/its/op/controller/its/history/TbLinkTrafHsController.java
  11. 1 1
      src/main/java/com/its/op/controller/its/history/TbRoadTrafHsController.java
  12. 3 3
      src/main/java/com/its/op/controller/its/history/TrafHistoryController.java
  13. 3 3
      src/main/java/com/its/op/controller/its/management/GisMapController.java
  14. 4 4
      src/main/java/com/its/op/controller/its/management/GisSearchController.java
  15. 3 0
      src/main/java/com/its/op/dao/repository/its/node/TbNodeRepository.java
  16. 44 0
      src/main/java/com/its/op/global/TbIfscManager.java
  17. 46 0
      src/main/java/com/its/op/global/TbIfscVrtxArrManager.java
  18. 44 0
      src/main/java/com/its/op/global/TbLinkManager.java
  19. 46 0
      src/main/java/com/its/op/global/TbLinkVrtxArrManager.java
  20. 13 33
      src/main/java/com/its/op/global/TbNodeManager.java
  21. 44 0
      src/main/java/com/its/op/global/TbRoadManager.java
  22. 46 0
      src/main/java/com/its/op/global/TbRoadVrtxArrManager.java
  23. 98 0
      src/main/java/com/its/op/global/TbTableManager.java
  24. 12 12
      src/main/java/com/its/op/global/TbUnitSystManager.java
  25. 12 12
      src/main/java/com/its/op/global/TbVdsCtlrManager.java
  26. 12 12
      src/main/java/com/its/op/global/TbVmsCtlrManager.java
  27. 11 12
      src/main/java/com/its/op/global/TbVmsIfscManager.java
  28. 29 32
      src/main/java/com/its/op/global/TbVmsSymbLibManager.java
  29. 6 6
      src/main/java/com/its/op/scheduler/job/BaseDbmsJobThread.java
  30. 1 1
      src/main/java/com/its/op/security/WebMvcConfig.java
  31. 1 0
      src/main/java/com/its/op/security/WebSecurityConfig.java
  32. 43 11
      src/main/java/com/its/op/service/its/ifsc/TbIfscService.java
  33. 10 14
      src/main/java/com/its/op/service/its/ifsc/TbIfscVrtxArrService.java
  34. 51 14
      src/main/java/com/its/op/service/its/link/TbLinkService.java
  35. 10 14
      src/main/java/com/its/op/service/its/link/TbLinkVrtxArrService.java
  36. 39 4
      src/main/java/com/its/op/service/its/node/TbNodeService.java
  37. 45 11
      src/main/java/com/its/op/service/its/road/TbRoadService.java
  38. 10 14
      src/main/java/com/its/op/service/its/road/TbRoadVrtxArrService.java
  39. 3 3
      src/main/java/com/its/op/service/its/vms/TbVmsDsplHsService.java
  40. 15 13
      src/main/java/com/its/op/service/its/vms/TbVmsDsplSchService.java
  41. 3 2
      src/main/java/com/its/op/xnettcp/client/VdsCommClientService.java
  42. 3 2
      src/main/java/com/its/op/xnetudp/CenterCommUdpServer.java
  43. 3 2
      src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java

+ 6 - 5
src/main/java/com/its/op/ItsOpServerApplication.java

@@ -2,7 +2,7 @@ package com.its.op;
 
 import com.its.op.config.*;
 import com.its.op.entity.its.unit.TbUnitSyst;
-import com.its.op.global.UnitSystManager;
+import com.its.op.global.TbUnitSystManager;
 import com.its.op.scheduler.job.DbmsSttsJobThread;
 import com.its.op.xnetudp.CenterCommUdpServer;
 import lombok.extern.slf4j.Slf4j;
@@ -88,25 +88,26 @@ public class ItsOpServerApplication extends SpringBootServletInitializer impleme
 //        vdsCommClientService.run();
 
         VmsServerConfig vmsServerConfig = (VmsServerConfig)AppUtils.getBean(VmsServerConfig.class);
-        TbUnitSyst vmsServer = UnitSystManager.get(vmsServerConfig.getProcessId());
+        TbUnitSystManager unitSystManager = (TbUnitSystManager)AppUtils.getBean(TbUnitSystManager.class);
+        TbUnitSyst vmsServer = unitSystManager.get(vmsServerConfig.getProcessId());
         if (vmsServer != null) {
             vmsServerConfig.setIpAddress(vmsServer.getSystIp1().trim());
             vmsServerConfig.setPort(Integer.parseInt(vmsServer.getPrgmPort().trim()));
         }
         VdsServerConfig vdsServerConfig = (VdsServerConfig)AppUtils.getBean(VdsServerConfig.class);
-        TbUnitSyst vdsServer = UnitSystManager.get(vdsServerConfig.getProcessId());
+        TbUnitSyst vdsServer = unitSystManager.get(vdsServerConfig.getProcessId());
         if (vdsServer != null) {
             vdsServerConfig.setIpAddress(vdsServer.getSystIp1().trim());
             vdsServerConfig.setPort(Integer.parseInt(vdsServer.getPrgmPort().trim()));
         }
         RseServerConfig rseServerConfig = (RseServerConfig)AppUtils.getBean(RseServerConfig.class);
-        TbUnitSyst rseServer = UnitSystManager.get(rseServerConfig.getProcessId());
+        TbUnitSyst rseServer = unitSystManager.get(rseServerConfig.getProcessId());
         if (rseServer != null) {
             rseServerConfig.setIpAddress(rseServer.getSystIp1().trim());
             rseServerConfig.setPort(Integer.parseInt(rseServer.getPrgmPort().trim()));
         }
         CctvServerConfig cctvServerConfig = (CctvServerConfig)AppUtils.getBean(CctvServerConfig.class);
-        TbUnitSyst cctvServer = UnitSystManager.get(cctvServerConfig.getProcessId());
+        TbUnitSyst cctvServer = unitSystManager.get(cctvServerConfig.getProcessId());
         if (cctvServer != null) {
             cctvServerConfig.setIpAddress(cctvServer.getSystIp1().trim());
             cctvServerConfig.setPort(Integer.parseInt(cctvServer.getPrgmPort().trim()));

+ 96 - 0
src/main/java/com/its/op/controller/ReloadDatabaseController.java

@@ -0,0 +1,96 @@
+package com.its.op.controller;
+
+import com.its.op.entity.its.ifsc.TbIfsc;
+import com.its.op.entity.its.ifsc.TbIfscVrtxArr;
+import com.its.op.entity.its.link.TbLink;
+import com.its.op.entity.its.link.TbLinkVrtxArr;
+import com.its.op.entity.its.node.TbNode;
+import com.its.op.entity.its.road.TbRoad;
+import com.its.op.entity.its.road.TbRoadVrtxArr;
+import com.its.op.entity.its.unit.TbUnitSyst;
+import com.its.op.global.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/reload")
+@Api(tags = "00.공통-88.데이터베이스 리로드")
+public class ReloadDatabaseController {
+
+    private final TbUnitSystManager unitSystManager;
+    private final TbNodeManager nodeManager;
+    private final TbLinkManager linkManager;
+    private final TbIfscManager ifscManager;
+    private final TbRoadManager roadManager;
+    private final TbLinkVrtxArrManager linkVrtxManager;
+    private final TbIfscVrtxArrManager ifscVrtxManager;
+    private final TbRoadVrtxArrManager roadVrtxManager;
+
+    @ApiOperation(value = "시스템 UNIT 정보", response = TbUnitSyst.class, responseContainer = "ArrayList")
+    @GetMapping(path="/unit", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbUnitSyst>> reloadUnitSyst() {
+        List<TbUnitSyst> result = this.unitSystManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "NODE 정보", response = TbNode.class, responseContainer = "ArrayList")
+    @GetMapping(path="/node", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbNode>> reloadNode() {
+        List<TbNode> result = this.nodeManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "LINK 정보", response = TbLink.class, responseContainer = "ArrayList")
+    @GetMapping(path="/link", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbLink>> reloadLink() {
+        List<TbLink> result = this.linkManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "IFSC 정보", response = TbIfsc.class, responseContainer = "ArrayList")
+    @GetMapping(path="/ifsc", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbIfsc>> reloadIfsc() {
+        List<TbIfsc> result = this.ifscManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "ROAD 정보", response = TbRoad.class, responseContainer = "ArrayList")
+    @GetMapping(path="/road", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbRoad>> reloadRoad() {
+        List<TbRoad> result = this.roadManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "LINK VRTX 정보", response = TbLinkVrtxArr.class, responseContainer = "ArrayList")
+    @GetMapping(path="/link-vrtx", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbLinkVrtxArr>> reloadLinkVrtxArr() {
+        List<TbLinkVrtxArr> result = this.linkVrtxManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "IFSC VRTX 정보", response = TbIfscVrtxArr.class, responseContainer = "ArrayList")
+    @GetMapping(path="/ifsc-vrtx", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbIfscVrtxArr>> reloadIfscVrtxArr() {
+        List<TbIfscVrtxArr> result = this.ifscVrtxManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+    @ApiOperation(value = "ROAD VRTX 정보", response = TbRoadVrtxArr.class, responseContainer = "ArrayList")
+    @GetMapping(path="/road-vrtx", produces = MediaType.APPLICATION_JSON_VALUE)
+    public ResponseEntity<List<TbRoadVrtxArr>> reloadRoadVrtxArr() {
+        List<TbRoadVrtxArr> result = this.roadVrtxManager.reload();
+        return ResponseEntity.ok(result);
+    }
+
+}

+ 3 - 3
src/main/java/com/its/op/controller/its/database/TbIfscController.java

@@ -28,19 +28,19 @@ public class TbIfscController {
     @ApiOperation(value = "정보제공구간 전체조회(TB_IFSC)", response = TbIfscDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbIfscDto> findAll() {
-        return service.findAll();
+        return service.findAll(true);
     }
 
     @ApiOperation(value = "정보제공구간 전체조회-삭제되지 않은 정보(TB_IFSC)", response = TbIfscDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
     public List<TbIfscDto> findAllList() {
-        return service.findAllList();
+        return service.findAllList(true);
     }
 
     @ApiOperation(value = "정보제공구간 전체조회-지역센터(TB_IFSC)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbIfscDto> findLocalAll() {
-        return service.findLocalAll();
+        return service.findLocalAll(true);
     }
 
     @ApiOperation(value = "정보제공구간 개별조회(TB_IFSC)", response = TbIfscDto.class)

+ 3 - 3
src/main/java/com/its/op/controller/its/database/TbLinkController.java

@@ -24,19 +24,19 @@ public class TbLinkController {
     @ApiOperation(value = "링크정보 전체조회(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findAll() {
-        return service.findAll();
+        return service.findAll(true);
     }
 
     @ApiOperation(value = "링크정보 전체조회-삭제되지 않은 정보(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findAllList() {
-        return service.findAllList();
+        return service.findAllList(true);
     }
 
     @ApiOperation(value = "링크정보 전체조회-지역센터(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findLocalAll() {
-        return service.findLocalAll();
+        return service.findLocalAll(true);
     }
 
     @ApiOperation(value = "링크정보 개별조회(TB_LINK)", response = TbLinkDto.class)

+ 2 - 2
src/main/java/com/its/op/controller/its/database/TbNodeController.java

@@ -22,8 +22,8 @@ public class TbNodeController {
 
     @ApiOperation(value = "노드정보 전체조회(TB_NODE)", response = TbNodeDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
-    public List<TbNodeDto> findAll() {
-        return service.findAll();
+    public List<TbNodeDto> findAllList() {
+        return service.findAllList(true);
     }
 
     @ApiOperation(value = "노드정보 개별조회(TB_NODE)", response = TbNodeDto.class)

+ 3 - 3
src/main/java/com/its/op/controller/its/database/TbRoadController.java

@@ -27,19 +27,19 @@ public class TbRoadController {
     @ApiOperation(value = "도로 전체조회(TB_ROAD)", response = TbRoadDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbRoadDto> findAll() {
-        return service.findAll();
+        return service.findAll(true);
     }
 
     @ApiOperation(value = "도로 전체조회-삭제되지 않은 정보(TB_ROAD)", response = TbRoadDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
     public List<TbRoadDto> findAllList() {
-        return service.findAllList();
+        return service.findAllList(true);
     }
 
     @ApiOperation(value = "도로 전체조회-지역센터(TB_ROAD)", response = TbRoadDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbRoadDto> findLocalAll() {
-        return service.findLocalAll();
+        return service.findLocalAll(true);
     }
 
     @ApiOperation(value = "도로 개별조회(TB_ROAD)", response = TbRoadDto.class)

+ 1 - 1
src/main/java/com/its/op/controller/its/history/TbIfscTrafHsController.java

@@ -29,7 +29,7 @@ public class TbIfscTrafHsController {
     @ApiOperation(value = "정보제공구간 전체조회-지역센터(TB_IFSC)", response = TbIfscDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbIfscDto> findIfscLocalAll() {
-        return ifscService.findLocalAll();
+        return ifscService.findLocalAll(true);
     }
 
     @ApiOperation(value = "정보제공구간이력조회(TB_IFSC_TRAF_HS)", response = TbIfscTrafHsDto.class, responseContainer = "ArrayList")

+ 1 - 1
src/main/java/com/its/op/controller/its/history/TbLinkTrafClctHsAnalController.java

@@ -39,7 +39,7 @@ public class TbLinkTrafClctHsAnalController {
     @ApiOperation(value = "링크정보 도로정보 전체조회-지역센터(TB_LINK)", response = TbLinkDto.class)
     @GetMapping(value = "/road-link", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findLocalRoadLinkAll() {
-        return this.linkService.findLocalRoadLinkAll();
+        return this.linkService.findLocalRoadLinkAll(true);
     }
 
     @ApiOperation(value = "링크 소통상황 수집데이터분석(TB_LINK_TRAF_CLCT_HS, TB_CLCT_SYST_STUP)", response = TbLinkTrafClctHsAnalDto.class, responseContainer = "ArrayList")

+ 1 - 1
src/main/java/com/its/op/controller/its/history/TbLinkTrafClctHsController.java

@@ -38,7 +38,7 @@ public class TbLinkTrafClctHsController {
     @ApiOperation(value = "링크정보 전체조회-지역센터(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/link/local", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findLocalAll() {
-        return linkService.findLocalAll();
+        return linkService.findLocalAll(true);
     }
 
     @ApiOperation(value = "링크 소통상황 수집 이력 조회(TB_LINK_TRAF_CLCT_HS, TB_CLCT_SYST_STUP)", response = TbLinkTrafClctHsHistDto.class, responseContainer = "ArrayList")

+ 1 - 1
src/main/java/com/its/op/controller/its/history/TbLinkTrafHsController.java

@@ -29,7 +29,7 @@ public class TbLinkTrafHsController {
     @ApiOperation(value = "링크정보 전체조회-지역센터(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findLinkLocalAll() {
-        return linkService.findLocalAll();
+        return linkService.findLocalAll(true);
     }
 
     @ApiOperation(value = "링크이력조회(TB_LINK_TRAF_HS)", response = TbLinkTrafHsDto.class, responseContainer = "ArrayList")

+ 1 - 1
src/main/java/com/its/op/controller/its/history/TbRoadTrafHsController.java

@@ -29,7 +29,7 @@ public class TbRoadTrafHsController {
     @ApiOperation(value = "도로 전체조회-지역센터(TB_ROAD)", response = TbRoadDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/local", produces = {"application/json; charset=utf8"})
     public List<TbRoadDto> findRoadLocalAll() {
-        return roadService.findLocalAll();
+        return roadService.findLocalAll(true);
     }
 
     @ApiOperation(value = "도로이력조회(TB_ROAD_TRAF_HS)", response = TbRoadTrafHsDto.class, responseContainer = "ArrayList")

+ 3 - 3
src/main/java/com/its/op/controller/its/history/TrafHistoryController.java

@@ -40,19 +40,19 @@ public class TrafHistoryController {
     @ApiOperation(value = "링크정보 전체조회-지역센터(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/link/local", produces = {"application/json; charset=utf8"})
     public List<TbLinkDto> findLinkLocalAll() {
-        return linkService.findLocalAll();
+        return linkService.findLocalAll(true);
     }
 
     @ApiOperation(value = "정보제공구간 전체조회-지역센터(TB_IFSC)", response = TbIfscDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/ifsc/local", produces = {"application/json; charset=utf8"})
     public List<TbIfscDto> findIfscLocalAll() {
-        return ifscService.findLocalAll();
+        return ifscService.findLocalAll(true);
     }
 
     @ApiOperation(value = "도로 전체조회-지역센터(TB_ROAD)", response = TbRoadDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/road/local", produces = {"application/json; charset=utf8"})
     public List<TbRoadDto> findRoadLocalAll() {
-        return roadService.findLocalAll();
+        return roadService.findLocalAll(true);
     }
 
     @ApiOperation(value = "링크이력조회(TB_LINK_TRAF_HS)", response = TbLinkTrafHsDto.class, responseContainer = "ArrayList")

+ 3 - 3
src/main/java/com/its/op/controller/its/management/GisMapController.java

@@ -43,7 +43,7 @@ public class GisMapController {
     public List<TbLinkVrtxArrDto> findLinkByLevl(
             @ApiParam(name = "levl", value = "레벨(1,2)", example = "1", required = true)
             @PathVariable final Integer levl) {
-        return this.linkService.findAllByLevl(levl);
+        return this.linkService.findAllByLevl(levl, true);
     }
 
     @ApiOperation(value = "정보제공구간검색(TB_IFSC_VRTX_ARR)", response = TbIfscVrtxArrDto.class, responseContainer = "ArrayList")
@@ -51,7 +51,7 @@ public class GisMapController {
     public List<TbIfscVrtxArrDto> findIfscByLevl(
             @ApiParam(name = "levl", value = "레벨(3,4,5)", example = "3", required = true)
             @PathVariable final Integer levl) {
-        return this.ifscService.findAllByLevl(levl);
+        return this.ifscService.findAllByLevl(levl, true);
     }
 
     @ApiOperation(value = "도로검색(TB_ROAD_VRTX_ARR)", response = TbRoadVrtxArrDto.class, responseContainer = "ArrayList")
@@ -59,7 +59,7 @@ public class GisMapController {
     public List<TbRoadVrtxArrDto> findRoadByLevl(
             @ApiParam(name = "levl", value = "레벨(6,7)", example = "6", required = true)
             @PathVariable final Integer levl) {
-        return this.roadService.findAllByLevl(levl);
+        return this.roadService.findAllByLevl(levl, true);
     }
 
 }

+ 4 - 4
src/main/java/com/its/op/controller/its/management/GisSearchController.java

@@ -35,7 +35,7 @@ public class GisSearchController {
     public List<TbNodeDto> findNodeByFilter(
             @ApiParam(name = "filter", value = "노드명/아이디", example = "교차로", required = false)
             @RequestParam(required = false, name="filter") @Nullable final String filter) {
-        return this.nodeService.findByFilter(filter);
+        return this.nodeService.findByFilter(filter, true);
     }
 
     @ApiOperation(value = "링크검색(TB_LINK)", response = TbLinkDto.class, responseContainer = "ArrayList")
@@ -43,7 +43,7 @@ public class GisSearchController {
     public List<TbLinkDto> findLinkByFilter(
             @ApiParam(name = "filter", value = "도로명/아이디", example = "지방도333호선", required = false)
             @RequestParam(required = false, name="filter") @Nullable final String filter) {
-        return this.linkService.findByFilter(filter);
+        return this.linkService.findByFilter(filter, true);
     }
 
     @ApiOperation(value = "정보제공구간검색(TB_IFSC)", response = TbLinkDto.class, responseContainer = "ArrayList")
@@ -51,7 +51,7 @@ public class GisSearchController {
     public List<TbIfscDto> findIfscByFilter(
             @ApiParam(name = "filter", value = "구간명/아이디", example = "신갈우회도로", required = false)
             @RequestParam(required = false, name="filter") @Nullable final String filter) {
-        return this.ifscService.findByFilter(filter);
+        return this.ifscService.findByFilter(filter, true);
     }
 
     @ApiOperation(value = "도로검색(TB_ROAD)", response = TbLinkDto.class, responseContainer = "ArrayList")
@@ -59,7 +59,7 @@ public class GisSearchController {
     public List<TbRoadDto> findRoadByFilter(
             @ApiParam(name = "filter", value = "도로명/아이디", example = "신수로", required = false)
             @RequestParam(required = false, name="filter") @Nullable final String filter) {
-        return this.roadService.findByFilter(filter);
+        return this.roadService.findByFilter(filter, true);
     }
 
     /**

+ 3 - 0
src/main/java/com/its/op/dao/repository/its/node/TbNodeRepository.java

@@ -14,4 +14,7 @@ public interface TbNodeRepository extends JpaRepository<TbNode, Long>, JpaSpecif
     @Query("select p from TbNode p")
     List<TbNode> findAll();
 
+    @Query("select p from TbNode p")
+    List<TbNode> findAllList();
+
 }

+ 44 - 0
src/main/java/com/its/op/global/TbIfscManager.java

@@ -0,0 +1,44 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.ifsc.TbIfscRepository;
+import com.its.op.entity.its.ifsc.TbIfsc;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbIfscManager extends TbTableManager<Long, TbIfsc> {
+
+    private final TbIfscRepository repo;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbIfsc> lists = this.repo.findAll();
+        for (TbIfsc obj : lists) {
+            put(obj.getIfscId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbIfsc> reload() {
+        List<TbIfsc> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbIfsc> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getIfscId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 46 - 0
src/main/java/com/its/op/global/TbIfscVrtxArrManager.java

@@ -0,0 +1,46 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.ifsc.TbIfscVrtxArrRepository;
+import com.its.op.entity.its.ifsc.TbIfscVrtxArr;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbIfscVrtxArrManager extends TbTableManager<Long, TbIfscVrtxArr> {
+
+    private final TbIfscVrtxArrRepository repo;
+    // LEVL = 3, 4 ==> 평택: 4
+    private final int DEFAULT_LEVL = 4;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbIfscVrtxArr> lists = this.repo.findAllByLevl(this.DEFAULT_LEVL);
+        for (TbIfscVrtxArr obj : lists) {
+            put(obj.getIfscId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbIfscVrtxArr> reload() {
+        List<TbIfscVrtxArr> objList = repo.findAllByLevl(this.DEFAULT_LEVL);
+        ConcurrentHashMap<Long, TbIfscVrtxArr> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getIfscId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 44 - 0
src/main/java/com/its/op/global/TbLinkManager.java

@@ -0,0 +1,44 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.link.TbLinkRepository;
+import com.its.op.entity.its.link.TbLink;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbLinkManager extends TbTableManager<Long, TbLink> {
+
+    private final TbLinkRepository repo;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbLink> lists = this.repo.findAll();
+        for (TbLink obj : lists) {
+            put(obj.getLinkId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbLink> reload() {
+        List<TbLink> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbLink> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getLinkId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 46 - 0
src/main/java/com/its/op/global/TbLinkVrtxArrManager.java

@@ -0,0 +1,46 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.link.TbLinkVrtxArrRepository;
+import com.its.op.entity.its.link.TbLinkVrtxArr;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbLinkVrtxArrManager extends TbTableManager<Long, TbLinkVrtxArr> {
+
+    private final TbLinkVrtxArrRepository repo;
+    // LEVL = 1, 2 ==> 평택: 2
+    private final int DEFAULT_LEVL = 2;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbLinkVrtxArr> lists = this.repo.findAllByLevl(this.DEFAULT_LEVL);
+        for (TbLinkVrtxArr obj : lists) {
+            put(obj.getLinkId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbLinkVrtxArr> reload() {
+        List<TbLinkVrtxArr> objList = repo.findAllByLevl(this.DEFAULT_LEVL);
+        ConcurrentHashMap<Long, TbLinkVrtxArr> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getLinkId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 13 - 33
src/main/java/com/its/op/global/TbNodeManager.java

@@ -1,7 +1,7 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.node.TbNode;
 import com.its.op.dao.repository.its.node.TbNodeRepository;
+import com.its.op.entity.its.node.TbNode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,50 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class TbNodeManager {
+public class TbNodeManager extends TbTableManager<Long, TbNode> {
 
     private final TbNodeRepository repo;
 
-    private static final ConcurrentHashMap<Long, TbNode> nodeMap = new ConcurrentHashMap<>();
-
     @PostConstruct
     void init() {
         load();
     }
 
     public void load() {
-
-        List<TbNode> lists = repo.findAll();
+        List<TbNode> lists = this.repo.findAll();
         for (TbNode obj : lists) {
-            nodeMap.put(obj.getNodeId(), obj);
+            put(obj.getNodeId(), obj);
         }
-        //log.info("=== {}", nodeMap);
     }
 
-    public static TbNode get(Long id) {
-        if (id == null) {
-            return null;
-        }
-        return nodeMap.get(id);
-    }
-    public static String getNodeName(Long NODE_ID) {
-        if (NODE_ID == null) {
-            return "x";
-        }
-        TbNode obj = nodeMap.get(NODE_ID);
-        if (obj != null) {
-            return "[" + NODE_ID + "] " + obj.getNodeName();
-        }
-        return "[" + NODE_ID + "] ?";
-    }
-    public static String getNodeNameInteger(Long NODE_ID) {
-        if (NODE_ID == null) {
-            return "x";
-        }
-        TbNode obj = nodeMap.get(NODE_ID);
-        if (obj != null) {
-            return obj.getNodeName();
-        }
-        return "?";
+    @Override
+    public List<TbNode> reload() {
+        List<TbNode> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbNode> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getNodeId(), obj);
+        });
+        return updateMap(tempMap);
     }
+
 }

+ 44 - 0
src/main/java/com/its/op/global/TbRoadManager.java

@@ -0,0 +1,44 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.road.TbRoadRepository;
+import com.its.op.entity.its.road.TbRoad;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbRoadManager extends TbTableManager<Long, TbRoad> {
+
+    private final TbRoadRepository repo;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbRoad> lists = this.repo.findAll();
+        for (TbRoad obj : lists) {
+            put(obj.getRoadId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbRoad> reload() {
+        List<TbRoad> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbRoad> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getRoadId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 46 - 0
src/main/java/com/its/op/global/TbRoadVrtxArrManager.java

@@ -0,0 +1,46 @@
+package com.its.op.global;
+
+import com.its.op.dao.repository.its.road.TbRoadVrtxArrRepository;
+import com.its.op.entity.its.road.TbRoadVrtxArr;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class TbRoadVrtxArrManager extends TbTableManager<Long, TbRoadVrtxArr> {
+
+    private final TbRoadVrtxArrRepository repo;
+    // LEVL = 5, 6 ==> 평택: 4
+    private final int DEFAULT_LEVL = 6;
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        List<TbRoadVrtxArr> lists = this.repo.findAllByLevl(this.DEFAULT_LEVL);
+        for (TbRoadVrtxArr obj : lists) {
+            put(obj.getRoadId(), obj);
+        }
+    }
+
+    @Override
+    public List<TbRoadVrtxArr> reload() {
+        List<TbRoadVrtxArr> objList = repo.findAllByLevl(this.DEFAULT_LEVL);
+        ConcurrentHashMap<Long, TbRoadVrtxArr> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getRoadId(), obj);
+        });
+        return updateMap(tempMap);
+    }
+
+}

+ 98 - 0
src/main/java/com/its/op/global/TbTableManager.java

@@ -0,0 +1,98 @@
+package com.its.op.global;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+public abstract class TbTableManager<K, T> {
+
+    protected ConcurrentHashMap<K, T> dataMap = new ConcurrentHashMap<>();
+
+    public abstract List<T> reload();
+
+    /**
+     * 맵 데이터 갯수 리턴
+     * @return
+     */
+    public int count() {
+        return this.dataMap.size();
+    }
+
+    /**
+     * 맵 데이터 클리어
+     * @return
+     */
+    public int clear() {
+        int count = count();
+        this.dataMap.clear();
+        return count;
+    }
+
+    /**
+     * 맵에 키에 대한 값이 존재하는 지 체크
+     * @param key
+     * @return
+     */
+    public boolean containsKey(K key) {
+        return this.dataMap.containsKey(key);
+    }
+
+    /**
+     * 맵에 데이터 추가
+     * @param key
+     * @param obj
+     */
+    public void put(K key, T obj) {
+        this.dataMap.put(key, obj);
+    }
+
+    /**
+     * 맵에서 키에 해당하는 데이터 조회
+     * @param key
+     * @return
+     */
+    public T get(K key) {
+        if (key == null) {
+            return null;
+        }
+        return this.dataMap.get(key);
+    }
+
+    /**
+     * 맵에서 데이터 삭제
+     * @param key
+     */
+    public T remove(K key) {
+        T t = this.dataMap.get(key);
+        if (t != null) {
+            this.dataMap.remove(key);
+        }
+        return t;
+    }
+
+    /**
+     * 맵의 키셋을 리턴
+     * @return
+     */
+    public Set<K> keySet() {
+        return this.dataMap.keySet();
+    }
+
+    /**
+     * 데이터 맵을 리스트로 리턴
+     * @return
+     */
+    public List<T> findAll() {
+        return new ArrayList<T>(this.dataMap.values());
+    }
+
+    protected List<T> updateMap(ConcurrentHashMap<K, T> dataMap) {
+        if (dataMap == null) {
+            return new ArrayList<T>();
+        }
+        this.dataMap = dataMap;
+        return findAll();
+    }
+
+}

+ 12 - 12
src/main/java/com/its/op/global/UnitSystManager.java → src/main/java/com/its/op/global/TbUnitSystManager.java

@@ -1,7 +1,7 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.unit.TbUnitSyst;
 import com.its.op.dao.repository.its.unit.TbUnitSystRepository;
+import com.its.op.entity.its.unit.TbUnitSyst;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,30 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class UnitSystManager {
+public class TbUnitSystManager extends TbTableManager<String, TbUnitSyst> {
 
     private final TbUnitSystRepository repo;
 
-    private static final ConcurrentHashMap<String, TbUnitSyst> objMap = new ConcurrentHashMap<>();
-
     @PostConstruct
     void init() {
         load();
     }
 
     public void load() {
-
         List<TbUnitSyst> objList = repo.findAllUnitSystList();
         objList.forEach(obj -> {
-            objMap.put(obj.getSystId(), obj);
+            put(obj.getSystId(), obj);
         });
-        //log.info("=== {}", objMap);
     }
 
-    public static TbUnitSyst get(String id) {
-        if (id == null) {
-            return null;
-        }
-        return objMap.get(id);
+    @Override
+    public List<TbUnitSyst> reload() {
+        List<TbUnitSyst> objList = repo.findAllUnitSystList();
+        ConcurrentHashMap<String, TbUnitSyst> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getSystId(), obj);
+        });
+        return updateMap(tempMap);
     }
+
 }

+ 12 - 12
src/main/java/com/its/op/global/VdsManager.java → src/main/java/com/its/op/global/TbVdsCtlrManager.java

@@ -1,7 +1,7 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.vds.TbVdsCtlr;
 import com.its.op.dao.repository.its.vds.TbVdsCtlrRepository;
+import com.its.op.entity.its.vds.TbVdsCtlr;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,30 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class VdsManager {
+public class TbVdsCtlrManager extends TbTableManager<Long, TbVdsCtlr> {
 
     private final TbVdsCtlrRepository repo;
 
-    private static final ConcurrentHashMap<String, TbVdsCtlr> objMap = new ConcurrentHashMap<>();
-
     @PostConstruct
     void init() {
         load();
     }
 
     public void load() {
-
         List<TbVdsCtlr> objList = repo.findAll();
         objList.forEach(obj -> {
-            objMap.put(obj.getVdsCtlrId(), obj);
+            put(obj.getVdsCtlrNmbr(), obj);
         });
-        //log.info("=== {}", objMap);
     }
 
-    public static TbVdsCtlr get(String id) {
-        if (id == null) {
-            return null;
-        }
-        return objMap.get(id);
+    @Override
+    public List<TbVdsCtlr> reload() {
+        List<TbVdsCtlr> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbVdsCtlr> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getVdsCtlrNmbr(), obj);
+        });
+        return updateMap(tempMap);
     }
+
 }

+ 12 - 12
src/main/java/com/its/op/global/VmsManager.java → src/main/java/com/its/op/global/TbVmsCtlrManager.java

@@ -1,7 +1,7 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.vms.TbVmsCtlr;
 import com.its.op.dao.repository.its.vms.TbVmsCtlrRepository;
+import com.its.op.entity.its.vms.TbVmsCtlr;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,30 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class VmsManager {
+public class TbVmsCtlrManager extends TbTableManager<Long, TbVmsCtlr> {
 
     private final TbVmsCtlrRepository repo;
 
-    private static final ConcurrentHashMap<Long, TbVmsCtlr> objMap = new ConcurrentHashMap<>();
-
     @PostConstruct
     void init() {
         load();
     }
 
     public void load() {
+        List<TbVmsCtlr> objList = this.repo.findAll();
+        objList.forEach(obj -> {
+            put(obj.getVmsCtlrNmbr(), obj);
+        });
+    }
 
+    @Override
+    public List<TbVmsCtlr> reload() {
         List<TbVmsCtlr> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbVmsCtlr> tempMap = new ConcurrentHashMap<>();
         objList.forEach(obj -> {
-            objMap.put(obj.getVmsCtlrNmbr(), obj);
+            tempMap.put(obj.getVmsCtlrNmbr(), obj);
         });
-        //log.info("=== {}", objMap);
+        return updateMap(tempMap);
     }
 
-    public static TbVmsCtlr get(Long id) {
-        if (id == null) {
-            return null;
-        }
-        return objMap.get(id);
-    }
 }

+ 11 - 12
src/main/java/com/its/op/global/VmsIfscManager.java → src/main/java/com/its/op/global/TbVmsIfscManager.java

@@ -1,7 +1,7 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.vms.TbVmsIfsc;
 import com.its.op.dao.repository.its.vms.TbVmsIfscRepository;
+import com.its.op.entity.its.vms.TbVmsIfsc;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -15,31 +15,30 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class VmsIfscManager {
+public class TbVmsIfscManager extends TbTableManager<Long, TbVmsIfsc> {
 
     private final TbVmsIfscRepository repo;
 
-    private static final ConcurrentHashMap<Long, TbVmsIfsc> ifsc = new ConcurrentHashMap<>();
-
     @PostConstruct
     void init() {
         load();
     }
 
     public void load() {
-
         List<TbVmsIfsc> objList = this.repo.findAll();
         objList.forEach(obj -> {
-            ifsc.put(obj.getVmsIfscId(), obj);
+            put(obj.getVmsIfscId(), obj);
         });
-        //log.info("=== {}", ifsc);
     }
 
-    public static TbVmsIfsc get(Long id) {
-        if (id == null) {
-            return null;
-        }
-        return ifsc.get(id);
+    @Override
+    public List<TbVmsIfsc> reload() {
+        List<TbVmsIfsc> objList = repo.findAll();
+        ConcurrentHashMap<Long, TbVmsIfsc> tempMap = new ConcurrentHashMap<>();
+        objList.forEach(obj -> {
+            tempMap.put(obj.getVmsIfscId(), obj);
+        });
+        return updateMap(tempMap);
     }
 
 }

+ 29 - 32
src/main/java/com/its/op/global/VmsSymbLibManager.java → src/main/java/com/its/op/global/TbVmsSymbLibManager.java

@@ -1,9 +1,9 @@
 package com.its.op.global;
 
-import com.its.op.entity.its.vms.TbVmsSymbIfsc;
-import com.its.op.entity.its.vms.TbVmsSymbLib;
 import com.its.op.dao.repository.its.vms.TbVmsSymbIfscRepository;
 import com.its.op.dao.repository.its.vms.TbVmsSymbLibRepository;
+import com.its.op.entity.its.vms.TbVmsSymbIfsc;
+import com.its.op.entity.its.vms.TbVmsSymbLib;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -19,13 +19,13 @@ import java.util.concurrent.ConcurrentHashMap;
 @RequiredArgsConstructor
 @Getter
 @Component
-public class VmsSymbLibManager {
+public class TbVmsSymbLibManager {
 
     private final TbVmsSymbLibRepository repo;
     private final TbVmsSymbIfscRepository ifscRepo;
 
-    private static final ConcurrentHashMap<Integer, TbVmsSymbLib> lib = new ConcurrentHashMap<>();
-    private static final ConcurrentHashMap<Integer, Map<Integer, TbVmsSymbIfsc>> ifsc = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<Integer, TbVmsSymbLib> dbMap = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<Integer, Map<Integer, TbVmsSymbIfsc>> ifscMap = new ConcurrentHashMap<>();
 
     @PostConstruct
     void init() {
@@ -33,48 +33,45 @@ public class VmsSymbLibManager {
     }
 
     public void load() {
-
-        List<TbVmsSymbLib> objList = repo.findAll();
+        List<TbVmsSymbLib> objList = this.repo.findAll();
         objList.forEach(obj -> {
-            lib.put(obj.getSymbLibNmbr(), obj);
+            dbMap.put(obj.getSymbLibNmbr(), obj);
         });
 
-        List<TbVmsSymbIfsc> ifscList = ifscRepo.findAll();
+        List<TbVmsSymbIfsc> ifscList = this.ifscRepo.findAll();
         ifscList.forEach(obj -> {
-            Map<Integer, TbVmsSymbIfsc> ifscMap = ifsc.get(obj.getSymbLibNmbr());
+            Map<Integer, TbVmsSymbIfsc> ifscMap = TbVmsSymbLibManager.ifscMap.get(obj.getSymbLibNmbr());
             if (ifscMap == null) {
                 ifscMap = new HashMap<>();
-                ifsc.put(obj.getSymbLibNmbr(), ifscMap);
+                TbVmsSymbLibManager.ifscMap.put(obj.getSymbLibNmbr(), ifscMap);
             }
             ifscMap.put(obj.getCellId(), obj);
         });
-
-        //log.info("=== {}", lib);
     }
 
     public static TbVmsSymbLib get(Integer id) {
         if (id == null) {
             return null;
         }
-        return lib.get(id);
-    }
-
-    public static TbVmsSymbIfsc getIfsc(Integer id) {
-        if (id == null) {
-            return null;
-        }
-        Map<Integer, TbVmsSymbIfsc> ifscMap = ifsc.get(id);
-        if (ifscMap != null) {
-            return ifscMap.get(1);
-        }
-        return null;
-    }
-
-    public static Map<Integer, TbVmsSymbIfsc> getIfscMap(Integer id) {
-        if (id == null) {
-            return null;
-        }
-        return ifsc.get(id);
+        return dbMap.get(id);
     }
+//
+//    public static TbVmsSymbIfsc getIfsc(Integer id) {
+//        if (id == null) {
+//            return null;
+//        }
+//        Map<Integer, TbVmsSymbIfsc> ifscMap = ifsc.get(id);
+//        if (ifscMap != null) {
+//            return ifscMap.get(1);
+//        }
+//        return null;
+//    }
+//
+//    public static Map<Integer, TbVmsSymbIfsc> getIfscMap(Integer id) {
+//        if (id == null) {
+//            return null;
+//        }
+//        return ifsc.get(id);
+//    }
 
 }

+ 6 - 6
src/main/java/com/its/op/scheduler/job/BaseDbmsJobThread.java

@@ -16,9 +16,9 @@ public class BaseDbmsJobThread {
 
     private final CodeManager codeManager;
     private final CctvManager cctvManager;
-    private final VdsManager vdsManager;
-    private final VmsManager vmsManager;
-    private final VmsIfscManager vmsIfscManager;
+    private final TbVdsCtlrManager tbVdsCtlrManager;
+    private final TbVmsCtlrManager tbVmsCtlrManager;
+    private final TbVmsIfscManager tbVmsIfscManager;
     private final FcltCodeManager fcltCodeManager;
 
     @PostConstruct
@@ -35,9 +35,9 @@ public class BaseDbmsJobThread {
 
         this.codeManager.load();
         this.cctvManager.load();
-        this.vdsManager.load();
-        this.vmsManager.load();
-        this.vmsIfscManager.load();
+        this.tbVdsCtlrManager.load();
+        this.tbVmsCtlrManager.load();
+        this.tbVmsIfscManager.load();
         this.fcltCodeManager.load();
 
         stopWatch.stop();

+ 1 - 1
src/main/java/com/its/op/security/WebMvcConfig.java

@@ -24,7 +24,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 
         registry.addInterceptor(new ApiInterceptor())
                 .addPathPatterns("/api/**")                         // API Controller interceptors
-                .excludePathPatterns("/facility/**", "/wall/**", "/dashboard/**", "/api/resource/**")    // 해당 경로는 인터셉터가 가로채지 않는다.
+                .excludePathPatterns("/facility/**", "/wall/**", "/dashboard/**", "/api/resource/**", "/api/reload/**")    // 해당 경로는 인터셉터가 가로채지 않는다.
                 ;
     }
 

+ 1 - 0
src/main/java/com/its/op/security/WebSecurityConfig.java

@@ -71,6 +71,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                     // 웹소켓 권한 설정하지
                     .antMatchers("/ws/**").permitAll()
                     .antMatchers("/api/resource/**").permitAll()
+                    .antMatchers("/api/reload/**").permitAll()
 //                    .antMatchers("/api/**").permitAll()
                     // 지도 URI 권한 설정하지
                     .antMatchers("/MAPDATA/**").permitAll()

+ 43 - 11
src/main/java/com/its/op/service/its/ifsc/TbIfscService.java

@@ -3,6 +3,7 @@ package com.its.op.service.its.ifsc;
 import com.its.op.dao.repository.its.ifsc.TbIfscRepository;
 import com.its.op.dto.its.ifsc.TbIfscDto;
 import com.its.op.entity.its.ifsc.TbIfsc;
+import com.its.op.global.TbIfscManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -12,6 +13,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -19,6 +21,7 @@ import java.util.Optional;
 public class TbIfscService {
 
     private final TbIfscRepository repo;
+    private final TbIfscManager manager;
 
     // 데이터 1건 조회, 없으면 exception
     private TbIfsc requireOne(Long id) throws NoSuchElementException {
@@ -38,9 +41,14 @@ public class TbIfscService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbIfscDto> findAll() {
+    public List<TbIfscDto> findAll(boolean isMemory) {
         List<TbIfscDto> result = new ArrayList<>();
-        List<TbIfsc> data = this.repo.findAll();
+        List<TbIfsc> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAll();
+        }
         for (TbIfsc entity : data) {
             result.add(entity.toDto());
         }
@@ -52,9 +60,15 @@ public class TbIfscService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbIfscDto> findAllList() {
+    public List<TbIfscDto> findAllList(boolean isMemory) {
         List<TbIfscDto> result = new ArrayList<>();
-        List<TbIfsc> data = this.repo.findAllList();
+        List<TbIfsc> data;
+        if (isMemory) {
+            List<TbIfsc> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
         for (TbIfsc entity : data) {
             result.add(entity.toDto());
         }
@@ -74,6 +88,7 @@ public class TbIfscService {
         TbIfsc entity = requireOne(id);
         entity.updateInfo(req);
         this.repo.save(entity);
+        this.manager.put(entity.getIfscId(), entity);
         return entity.toDto();
     }
 
@@ -84,6 +99,7 @@ public class TbIfscService {
         for (TbIfscDto.TbIfscUpdReq req : reqList) {
             TbIfsc obj = req.toEntity();
             this.repo.save(obj);
+            this.manager.put(obj.getIfscId(), obj);
             result.add(obj.toDto());
         }
         return result;
@@ -94,6 +110,7 @@ public class TbIfscService {
     public TbIfscDto mergeInfo(TbIfscDto.TbIfscUpdReq req) {
         TbIfsc obj = req.toEntity();
         this.repo.save(obj);
+        this.manager.put(obj.getIfscId(), obj);
         return obj.toDto();
     }
 
@@ -102,6 +119,7 @@ public class TbIfscService {
     public TbIfscDto deleteById(Long id) {
         TbIfsc entity = requireOne(id);
         this.repo.deleteById(id);
+        this.manager.remove(id);
         return entity.toDto();
     }
 
@@ -113,6 +131,7 @@ public class TbIfscService {
             Optional<TbIfsc> obj = this.repo.findById(id);
             if (obj.isPresent()) {
                 this.repo.deleteById(id);
+                this.manager.remove(id);
                 result.add(obj.get().toDto());
             }
         }
@@ -121,9 +140,16 @@ public class TbIfscService {
 
     // 지역센터 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbIfscDto> findLocalAll() {
+    public List<TbIfscDto> findLocalAll(boolean isMemory) {
         List<TbIfscDto> result = new ArrayList<>();
-        List<TbIfsc> data = this.repo.findAll();
+        List<TbIfsc> data;
+        if (isMemory) {
+            List<TbIfsc> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
+
         for (TbIfsc entity : data) {
             if (("LAT001").equals(entity.getAreaCd())) {
                 result.add(entity.toDto());
@@ -137,13 +163,17 @@ public class TbIfscService {
      * @param filter
      * @return
      */
-    public List<TbIfscDto> findByFilter(String filter) {
+    public List<TbIfscDto> findByFilter(String filter, boolean isMemory) {
         List<TbIfscDto> result = new ArrayList<>();
-        List<TbIfsc> data = this.repo.findAll();
+        List<TbIfsc> data;
+        if (isMemory) {
+            List<TbIfsc> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
+
         data.forEach(obj -> {
-            if (("Y").equals(obj.getDelYn())) {
-                return;
-            }
             if (filter == null || filter.isEmpty()) {
                 result.add(obj.toDto());
             } else {
@@ -161,6 +191,7 @@ public class TbIfscService {
         TbIfsc entity = requireOne(id);
         entity.updateName(req);
         this.repo.save(entity);
+        this.manager.put(entity.getIfscId(), entity);
         return entity.toDto();
     }
 
@@ -169,6 +200,7 @@ public class TbIfscService {
         TbIfsc entity = requireOne(id);
         entity.updateSectGrad(req);
         this.repo.save(entity);
+        this.manager.put(entity.getIfscId(), entity);
         return entity.toDto();
     }
 }

+ 10 - 14
src/main/java/com/its/op/service/its/ifsc/TbIfscVrtxArrService.java

@@ -3,10 +3,10 @@ package com.its.op.service.its.ifsc;
 import com.its.op.dao.repository.its.ifsc.TbIfscVrtxArrRepository;
 import com.its.op.dto.its.ifsc.TbIfscVrtxArrDto;
 import com.its.op.entity.its.ifsc.TbIfscVrtxArr;
+import com.its.op.global.TbIfscVrtxArrManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,26 +17,22 @@ import java.util.List;
 public class TbIfscVrtxArrService {
 
     private final TbIfscVrtxArrRepository repo;
-
-    // 전체 데이터 조회
-    @Transactional(readOnly = true)
-    public List<TbIfscVrtxArrDto> findAll() {
-        List<TbIfscVrtxArrDto> result = new ArrayList<>();
-        List<TbIfscVrtxArr> data = this.repo.findAll();
-        for (TbIfscVrtxArr entity : data) {
-            result.add(entity.toDto());
-        }
-        return result;
-    }
+    private final TbIfscVrtxArrManager manager;
 
     /**
      * 레벨에 따른 버텍스 정보 조회
      * @param levl
      * @return
      */
-    public List<TbIfscVrtxArrDto> findAllByLevl(Integer levl) {
+    public List<TbIfscVrtxArrDto> findAllByLevl(Integer levl, boolean isMemory) {
         List<TbIfscVrtxArrDto> result = new ArrayList<>();
-        List<TbIfscVrtxArr> data = this.repo.findAllByLevl(levl);
+        List<TbIfscVrtxArr> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAllByLevl(levl);
+        }
+
         data.forEach(obj -> {
             result.add(obj.toDto());
         });

+ 51 - 14
src/main/java/com/its/op/service/its/link/TbLinkService.java

@@ -4,6 +4,7 @@ import com.its.op.config.ApplicationConfig;
 import com.its.op.dao.repository.its.link.TbLinkRepository;
 import com.its.op.dto.its.link.TbLinkDto;
 import com.its.op.entity.its.link.TbLink;
+import com.its.op.global.TbLinkManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -13,6 +14,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -21,6 +23,7 @@ public class TbLinkService {
 
     private final ApplicationConfig applicationConfig;
     private final TbLinkRepository repo;
+    private final TbLinkManager manager;
 
     // 데이터 1건 조회, 없으면 exception
     private TbLink requireOne(Long id) throws NoSuchElementException {
@@ -40,9 +43,14 @@ public class TbLinkService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbLinkDto> findAll() {
+    public List<TbLinkDto> findAll(boolean isMemory) {
         List<TbLinkDto> result = new ArrayList<>();
-        List<TbLink> data = this.repo.findAll();
+        List<TbLink> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAll();
+        }
         for (TbLink entity : data) {
             result.add(entity.toDto());
         }
@@ -54,9 +62,15 @@ public class TbLinkService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbLinkDto> findAllList() {
+    public List<TbLinkDto> findAllList(boolean isMemory) {
         List<TbLinkDto> result = new ArrayList<>();
-        List<TbLink> data = this.repo.findAllList();
+        List<TbLink> data;
+        if (isMemory) {
+            List<TbLink> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
         for (TbLink entity : data) {
             result.add(entity.toDto());
         }
@@ -65,9 +79,15 @@ public class TbLinkService {
 
     // 지역센터 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbLinkDto> findLocalAll() {
+    public List<TbLinkDto> findLocalAll(boolean isMemory) {
         List<TbLinkDto> result = new ArrayList<>();
-        List<TbLink> data = this.repo.findAll();
+        List<TbLink> data;
+        if (isMemory) {
+            List<TbLink> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
         for (TbLink entity : data) {
             if (("LAT001").equals(entity.getAreaCd())) {
                 result.add(entity.toDto());
@@ -78,13 +98,24 @@ public class TbLinkService {
 
     // 지역센터 도로 링크 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbLinkDto> findLocalRoadLinkAll() {
+    public List<TbLinkDto> findLocalRoadLinkAll(boolean isMemory) {
         //int regionCode = Integer.parseInt(this.processConfig.getRegionCode());
         List<TbLinkDto> result = new ArrayList<>();
-        List<TbLink> data = this.repo.findLocalRoadLinkAll();
+        List<TbLink> data;
+        if (isMemory) {
+            List<TbLink> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> (
+                               "N".equals(obj.getDelYn())
+                            && "LAT001".equals(obj.getAreaCd())
+                            && obj.getRoadName() != null
+                            && !"-".equals(obj.getRoadName()) ))
+                    .collect(Collectors.toList());
+        } else {
+            data = this.repo.findLocalRoadLinkAll();
+        }
         for (TbLink entity : data) {
             //if ((entity.getLinkId() / 10000000) == regionCode) {
-                result.add(entity.toDto());
+            result.add(entity.toDto());
             //}
         }
         return result;
@@ -107,13 +138,17 @@ public class TbLinkService {
      * @param filter
      * @return
      */
-    public List<TbLinkDto> findByFilter(String filter) {
+    public List<TbLinkDto> findByFilter(String filter, boolean isMemory) {
         List<TbLinkDto> result = new ArrayList<>();
-        List<TbLink> data = this.repo.findAll();
+        List<TbLink> data;
+        if (isMemory) {
+            List<TbLink> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
+
         data.forEach(obj -> {
-            if (("Y").equals(obj.getDelYn())) {
-                return;
-            }
             if (filter == null || filter.isEmpty()) {
                 result.add(obj.toDto());
             } else {
@@ -132,6 +167,7 @@ public class TbLinkService {
             TbLink entity = requireOne(id);
             entity.updateName(req);
             this.repo.save(entity);
+            this.manager.put(entity.getLinkId(), entity);
             return entity.toDto();
         }
         catch(NoSuchElementException e) {
@@ -145,6 +181,7 @@ public class TbLinkService {
             TbLink entity = requireOne(id);
             entity.updateSectGrad(req);
             this.repo.save(entity);
+            this.manager.put(entity.getLinkId(), entity);
             return entity.toDto();
         }
         catch(NoSuchElementException e) {

+ 10 - 14
src/main/java/com/its/op/service/its/link/TbLinkVrtxArrService.java

@@ -3,10 +3,10 @@ package com.its.op.service.its.link;
 import com.its.op.dao.repository.its.link.TbLinkVrtxArrRepository;
 import com.its.op.dto.its.link.TbLinkVrtxArrDto;
 import com.its.op.entity.its.link.TbLinkVrtxArr;
+import com.its.op.global.TbLinkVrtxArrManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,26 +17,22 @@ import java.util.List;
 public class TbLinkVrtxArrService {
 
     private final TbLinkVrtxArrRepository repo;
-
-    // 전체 데이터 조회
-    @Transactional(readOnly = true)
-    public List<TbLinkVrtxArrDto> findAll() {
-        List<TbLinkVrtxArrDto> result = new ArrayList<>();
-        List<TbLinkVrtxArr> data = this.repo.findAll();
-        for (TbLinkVrtxArr entity : data) {
-            result.add(entity.toDto());
-        }
-        return result;
-    }
+    private final TbLinkVrtxArrManager manager;
 
     /**
      * 레벨에 따른 버텍스 정보 조회
      * @param levl
      * @return
      */
-    public List<TbLinkVrtxArrDto> findAllByLevl(Integer levl) {
+    public List<TbLinkVrtxArrDto> findAllByLevl(Integer levl, boolean isMemory) {
         List<TbLinkVrtxArrDto> result = new ArrayList<>();
-        List<TbLinkVrtxArr> data = this.repo.findAllByLevl(levl);
+        List<TbLinkVrtxArr> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAllByLevl(levl);
+        }
+
         data.forEach(obj -> {
             result.add(obj.toDto());
         });

+ 39 - 4
src/main/java/com/its/op/service/its/node/TbNodeService.java

@@ -3,6 +3,7 @@ package com.its.op.service.its.node;
 import com.its.op.dao.repository.its.node.TbNodeRepository;
 import com.its.op.dto.its.node.TbNodeDto;
 import com.its.op.entity.its.node.TbNode;
+import com.its.op.global.TbNodeManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -19,6 +20,7 @@ import java.util.Optional;
 public class TbNodeService {
 
     private final TbNodeRepository repo;
+    private final TbNodeManager manager;
 
     // 데이터 1건 조회, 없으면 exception
     private TbNode requireOne(Long id) throws NoSuchElementException {
@@ -35,9 +37,30 @@ public class TbNodeService {
 
     // 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbNodeDto> findAll() {
+    public List<TbNodeDto> findAll(boolean isMemory) {
         List<TbNodeDto> result = new ArrayList<>();
-        List<TbNode> data = this.repo.findAll();
+        List<TbNode> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAll();
+        }
+        for (TbNode entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbNodeDto> findAllList(boolean isMemory) {
+        List<TbNodeDto> result = new ArrayList<>();
+        List<TbNode> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAllList();
+        }
         for (TbNode entity : data) {
             result.add(entity.toDto());
         }
@@ -66,6 +89,7 @@ public class TbNodeService {
         TbNode entity = requireOne(id);
         entity.updateName(req);
         this.repo.save(entity);
+        this.manager.put(entity.getNodeId(), entity);
         return entity.toDto();
     }
 
@@ -76,6 +100,7 @@ public class TbNodeService {
         for (TbNodeDto.TbNodeUpdReq req : reqList) {
             TbNode obj = req.toEntity();
             this.repo.save(obj);
+            this.manager.put(obj.getNodeId(), obj);
             result.add(obj.toDto());
         }
         return result;
@@ -86,6 +111,7 @@ public class TbNodeService {
     public TbNodeDto mergeInfo(TbNodeDto.TbNodeUpdReq req) {
         TbNode obj = req.toEntity();
         this.repo.save(obj);
+        this.manager.put(obj.getNodeId(), obj);
         return obj.toDto();
     }
 
@@ -94,6 +120,7 @@ public class TbNodeService {
     public TbNodeDto deleteById(Long id) {
         TbNode entity = requireOne(id);
         this.repo.deleteById(id);
+        this.manager.remove(id);
         return entity.toDto();
     }
 
@@ -105,6 +132,7 @@ public class TbNodeService {
             Optional<TbNode> obj = this.repo.findById(id);
             if (obj.isPresent()) {
                 this.repo.deleteById(id);
+                this.manager.remove(id);
                 result.add(obj.get().toDto());
             }
         }
@@ -116,9 +144,15 @@ public class TbNodeService {
      * @param filter
      * @return
      */
-    public List<TbNodeDto> findByFilter(String filter) {
+    public List<TbNodeDto> findByFilter(String filter, boolean isMemory) {
         List<TbNodeDto> result = new ArrayList<>();
-        List<TbNode> data = this.repo.findAll();
+        List<TbNode> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAllList();
+        }
+
         data.forEach(obj -> {
             if (filter == null || filter.isEmpty()) {
                 result.add(obj.toDto());
@@ -131,4 +165,5 @@ public class TbNodeService {
         });
         return result;
     }
+
 }

+ 45 - 11
src/main/java/com/its/op/service/its/road/TbRoadService.java

@@ -3,6 +3,7 @@ package com.its.op.service.its.road;
 import com.its.op.dao.repository.its.road.TbRoadRepository;
 import com.its.op.dto.its.road.TbRoadDto;
 import com.its.op.entity.its.road.TbRoad;
+import com.its.op.global.TbRoadManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -12,6 +13,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -19,6 +21,7 @@ import java.util.Optional;
 public class TbRoadService {
 
     private final TbRoadRepository repo;
+    private final TbRoadManager manager;
 
     // 데이터 1건 조회, 없으면 exception
     private TbRoad requireOne(Long id) throws NoSuchElementException {
@@ -38,9 +41,15 @@ public class TbRoadService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbRoadDto> findAll() {
+    public List<TbRoadDto> findAll(boolean isMemory) {
         List<TbRoadDto> result = new ArrayList<>();
-        List<TbRoad> data = this.repo.findAll();
+        List<TbRoad> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAll();
+        }
+
         for (TbRoad entity : data) {
             result.add(entity.toDto());
         }
@@ -52,9 +61,15 @@ public class TbRoadService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbRoadDto> findAllList() {
+    public List<TbRoadDto> findAllList(boolean isMemory) {
         List<TbRoadDto> result = new ArrayList<>();
-        List<TbRoad> data = this.repo.findAllList();
+        List<TbRoad> data;
+        if (isMemory) {
+            List<TbRoad> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
         for (TbRoad entity : data) {
             result.add(entity.toDto());
         }
@@ -63,9 +78,16 @@ public class TbRoadService {
 
     // 지역센터 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbRoadDto> findLocalAll() {
+    public List<TbRoadDto> findLocalAll(boolean isMemory) {
         List<TbRoadDto> result = new ArrayList<>();
-        List<TbRoad> data = this.repo.findAll();
+        List<TbRoad> data;
+        if (isMemory) {
+            List<TbRoad> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
+
         for (TbRoad entity : data) {
             if (("LAT001").equals(entity.getAreaCd())) {
                 result.add(entity.toDto());
@@ -87,6 +109,7 @@ public class TbRoadService {
         TbRoad entity = requireOne(id);
         entity.updateInfo(req);
         this.repo.save(entity);
+        this.manager.put(entity.getRoadId(), entity);
         return entity.toDto();
     }
 
@@ -97,6 +120,7 @@ public class TbRoadService {
         for (TbRoadDto.TbRoadUpdReq req : reqList) {
             TbRoad obj = req.toEntity();
             this.repo.save(obj);
+            this.manager.put(obj.getRoadId(), obj);
             result.add(obj.toDto());
         }
         return result;
@@ -107,6 +131,7 @@ public class TbRoadService {
     public TbRoadDto mergeInfo(TbRoadDto.TbRoadUpdReq req) {
         TbRoad obj = req.toEntity();
         this.repo.save(obj);
+        this.manager.put(obj.getRoadId(), obj);
         return obj.toDto();
     }
 
@@ -115,6 +140,7 @@ public class TbRoadService {
     public TbRoadDto deleteById(Long id) {
         TbRoad entity = requireOne(id);
         this.repo.deleteById(id);
+        this.manager.remove(id);
         return entity.toDto();
     }
 
@@ -126,6 +152,7 @@ public class TbRoadService {
             Optional<TbRoad> obj = this.repo.findById(id);
             if (obj.isPresent()) {
                 this.repo.deleteById(id);
+                this.manager.remove(id);
                 result.add(obj.get().toDto());
             }
         }
@@ -138,13 +165,17 @@ public class TbRoadService {
      * @param filter
      * @return
      */
-    public List<TbRoadDto> findByFilter(String filter) {
+    public List<TbRoadDto> findByFilter(String filter, boolean isMemory) {
         List<TbRoadDto> result = new ArrayList<>();
-        List<TbRoad> data = this.repo.findAll();
+        List<TbRoad> data;
+        if (isMemory) {
+            List<TbRoad> temp = this.manager.findAll();
+            data = temp.stream().filter(obj -> "N".equals(obj.getDelYn())).collect(Collectors.toList());
+        } else {
+            data = this.repo.findAllList();
+        }
+
         data.forEach(obj -> {
-            if (("Y").equals(obj.getDelYn())) {
-                return;
-            }
             if (filter == null || filter.isEmpty()) {
                 result.add(obj.toDto());
             } else {
@@ -162,12 +193,15 @@ public class TbRoadService {
         TbRoad entity = requireOne(id);
         entity.updateName(req);
         this.repo.save(entity);
+        this.manager.put(entity.getRoadId(), entity);
         return entity.toDto();
     }
     public TbRoadDto updateSectGradById(Long id, TbRoadDto.TbRoadSectGradUpdReq req) {
         TbRoad entity = requireOne(id);
         entity.updateSectGrad(req);
         this.repo.save(entity);
+        this.manager.put(entity.getRoadId(), entity);
         return entity.toDto();
     }
+
 }

+ 10 - 14
src/main/java/com/its/op/service/its/road/TbRoadVrtxArrService.java

@@ -3,10 +3,10 @@ package com.its.op.service.its.road;
 import com.its.op.dao.repository.its.road.TbRoadVrtxArrRepository;
 import com.its.op.dto.its.road.TbRoadVrtxArrDto;
 import com.its.op.entity.its.road.TbRoadVrtxArr;
+import com.its.op.global.TbRoadVrtxArrManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,26 +17,22 @@ import java.util.List;
 public class TbRoadVrtxArrService {
 
     private final TbRoadVrtxArrRepository repo;
-
-    // 전체 데이터 조회
-    @Transactional(readOnly = true)
-    public List<TbRoadVrtxArrDto> findAll() {
-        List<TbRoadVrtxArrDto> result = new ArrayList<>();
-        List<TbRoadVrtxArr> data = this.repo.findAll();
-        for (TbRoadVrtxArr entity : data) {
-            result.add(entity.toDto());
-        }
-        return result;
-    }
+    private final TbRoadVrtxArrManager manager;
 
     /**
      * 레벨에 따른 버텍스 정보 조회
      * @param levl
      * @return
      */
-    public List<TbRoadVrtxArrDto> findAllByLevl(Integer levl) {
+    public List<TbRoadVrtxArrDto> findAllByLevl(Integer levl, boolean isMemory) {
         List<TbRoadVrtxArrDto> result = new ArrayList<>();
-        List<TbRoadVrtxArr> data = this.repo.findAllByLevl(levl);
+        List<TbRoadVrtxArr> data;
+        if (isMemory) {
+            data = this.manager.findAll();
+        } else {
+            data = this.repo.findAllByLevl(levl);
+        }
+
         data.forEach(obj -> {
             result.add(obj.toDto());
         });

+ 3 - 3
src/main/java/com/its/op/service/its/vms/TbVmsDsplHsService.java

@@ -6,7 +6,7 @@ import com.its.op.dto.its.vms.TbVmsDsplHsImageDto;
 import com.its.op.entity.its.vms.TbVmsCtlr;
 import com.its.op.entity.its.vms.TbVmsDsplHs;
 import com.its.op.entity.its.vms.TbVmsSymbLib;
-import com.its.op.global.VmsSymbLibManager;
+import com.its.op.global.TbVmsSymbLibManager;
 import com.its.utils.FloodFill;
 import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
@@ -166,7 +166,7 @@ public class TbVmsDsplHsService {
                     /**
                      * 심볼을 이미지 위에 그린다.
                      */
-                    TbVmsSymbLib symbLib = VmsSymbLibManager.get(Integer.parseInt(symbLibId));
+                    TbVmsSymbLib symbLib = TbVmsSymbLibManager.get(Integer.parseInt(symbLibId));
                     if (symbLib != null) {
                         //BufferedImage symbol = Sanselan.getBufferedImage(symbLib.getImagData());
                         //g2d.drawImage(symbol, left, top, null);
@@ -190,7 +190,7 @@ public class TbVmsDsplHsService {
                         int imgW  = Integer.parseInt(tmp.substring(16, 20), 16);
                         int imgH = Integer.parseInt(tmp.substring(20, 24), 16);
                         String symbLibId = tmp.substring(24, tmp.length());
-                        TbVmsSymbLib symbLib = VmsSymbLibManager.get(Integer.parseInt(symbLibId));
+                        TbVmsSymbLib symbLib = TbVmsSymbLibManager.get(Integer.parseInt(symbLibId));
                         if (symbLib != null) {
                             Image imgBmp = symbLib.getImage();
                             //g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

+ 15 - 13
src/main/java/com/its/op/service/its/vms/TbVmsDsplSchService.java

@@ -1,8 +1,8 @@
 package com.its.op.service.its.vms;
 
 import com.its.op.entity.its.vms.*;
-import com.its.op.global.VmsIfscManager;
-import com.its.op.global.VmsManager;
+import com.its.op.global.TbVmsIfscManager;
+import com.its.op.global.TbVmsCtlrManager;
 import com.its.op.dto.its.vms.*;
 import com.its.op.dao.repository.its.vms.TbVmsCtlrRepository;
 import com.its.op.dao.repository.its.vms.TbVmsDsplSchRepository;
@@ -29,6 +29,8 @@ public class TbVmsDsplSchService {
     private final TbVmsDsplSchRepository repo;
     private final TbVmsCtlrRepository vmsRepo;
     private final TbVmsFormService formService;
+    private final TbVmsCtlrManager vmsCtlrManager;
+    private final TbVmsIfscManager vmsIfscManager;
 
     // 데이터 1건 조회, 없으면 exception
     private TbVmsDsplSch requireOne(TbVmsDsplSchKey id) throws NoSuchElementException {
@@ -173,7 +175,7 @@ public class TbVmsDsplSchService {
                 ifscId = ifscIds[3];
 
             if (ifscId != null && ifscId != 0) {
-                TbVmsIfsc vmsIfsc = VmsIfscManager.get(ifscId);
+                TbVmsIfsc vmsIfsc = this.vmsIfscManager.get(ifscId);
                 if (vmsIfsc != null) {
                     switch(objType)
                     {
@@ -260,7 +262,7 @@ public class TbVmsDsplSchService {
                 .imagFmt("png").build();
 
         // 교통정보 스케쥴인 경우 교통정보 폼을 만들어서 리턴해 준다.
-        TbVmsCtlr obj = VmsManager.get(id);
+        TbVmsCtlr obj = this.vmsCtlrManager.get(id);
         if (obj == null) {
             return result;
         }
@@ -294,7 +296,7 @@ public class TbVmsDsplSchService {
         List<TbVmsDsplSchDto> dtoList = findAllVmsDsplSchedule(id, "A", formTypeCd);
 
         // 교통정보 스케쥴인 경우 교통정보 폼을 만들어서 리턴해 준다.
-        TbVmsCtlr obj = VmsManager.get(id);
+        TbVmsCtlr obj = this.vmsCtlrManager.get(id);
         if (obj == null) {
             return dtoList;
         }
@@ -566,14 +568,14 @@ public class TbVmsDsplSchService {
             if (data.getForm() != null) {
                 result.setVmsFormTypeCd(data.getForm().getVmsFormTypeCd());
             }
-            result.setFrstVmsIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getFrstVmsIfscId())));
-            result.setSecdVmsIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getSecdVmsIfscId())));
-            result.setThirVmsIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getThirVmsIfscId())));
-            result.setFourVmsIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getFourVmsIfscId())));
-            result.setFrstImgIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getFrstImgIfscId())));
-            result.setSecdImgIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getSecdImgIfscId())));
-            result.setThirImgIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getThirImgIfscId())));
-            result.setFourImgIfsc(new VmsFormIfscDto.FormIfscInfo(VmsIfscManager.get(data.getFourImgIfscId())));
+            result.setFrstVmsIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getFrstVmsIfscId())));
+            result.setSecdVmsIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getSecdVmsIfscId())));
+            result.setThirVmsIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getThirVmsIfscId())));
+            result.setFourVmsIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getFourVmsIfscId())));
+            result.setFrstImgIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getFrstImgIfscId())));
+            result.setSecdImgIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getSecdImgIfscId())));
+            result.setThirImgIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getThirImgIfscId())));
+            result.setFourImgIfsc(new VmsFormIfscDto.FormIfscInfo(this.vmsIfscManager.get(data.getFourImgIfscId())));
         }
         return result;
     }

+ 3 - 2
src/main/java/com/its/op/xnettcp/client/VdsCommClientService.java

@@ -1,7 +1,7 @@
 package com.its.op.xnettcp.client;
 
 import com.its.op.config.VdsServerConfig;
-import com.its.op.global.UnitSystManager;
+import com.its.op.global.TbUnitSystManager;
 import com.its.op.entity.its.unit.TbUnitSyst;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -23,6 +23,7 @@ import java.util.concurrent.Future;
 public class VdsCommClientService {
 
     private final VdsServerConfig vdsServerConfig;
+    private final TbUnitSystManager unitSystManager;
     private NettyTcpClientVdsBootstrapFactory vdsBootstrapFactory;
     private NettyTcpClientVds vdsClient;
     private ExecutorService executorService= Executors.newFixedThreadPool(1);
@@ -35,7 +36,7 @@ public class VdsCommClientService {
 
     public void run() {
         log.info("VdsCommClientService.run: Start.");
-        TbUnitSyst vdsServer = UnitSystManager.get(this.vdsServerConfig.getProcessId());
+        TbUnitSyst vdsServer = this.unitSystManager.get(this.vdsServerConfig.getProcessId());
         if (vdsServer != null) {
             this.vdsServerConfig.setIpAddress(vdsServer.getSystIp1().trim());
             this.vdsServerConfig.setPort(Integer.parseInt(vdsServer.getPrgmPort().trim()));

+ 3 - 2
src/main/java/com/its/op/xnetudp/CenterCommUdpServer.java

@@ -1,7 +1,7 @@
 package com.its.op.xnetudp;
 
 import com.its.op.config.CenterCommConfig;
-import com.its.op.global.UnitSystManager;
+import com.its.op.global.TbUnitSystManager;
 import com.its.op.entity.its.unit.TbUnitSyst;
 import com.its.op.xnetudp.codec.CenterCommServerDecoder;
 import com.its.op.xnetudp.handler.CenterCommServerPacketHandler;
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Component;
 public class CenterCommUdpServer {
 
     private final CenterCommConfig centerCommConfig;
+    private final TbUnitSystManager unitSystManager;
 
     private EventLoopGroup nioEventLoopGroup;
     private Bootstrap bootstrap;
@@ -29,7 +30,7 @@ public class CenterCommUdpServer {
     public void run() {
         log.info("UdpServerCenterComm.run: Start.");
 
-        TbUnitSyst oper00 = UnitSystManager.get(this.centerCommConfig.getProcessId());
+        TbUnitSyst oper00 = this.unitSystManager.get(this.centerCommConfig.getProcessId());
         if (oper00 != null) {
             this.centerCommConfig.setBindingPort(Integer.parseInt(oper00.getPrgmPort().trim()));
         }

+ 3 - 2
src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java

@@ -3,7 +3,7 @@ package com.its.op.xnetudp.service;
 import com.its.op.config.VmsServerConfig;
 import com.its.op.dto.its.vms.VmsControlDto;
 import com.its.op.entity.its.unit.TbUnitSyst;
-import com.its.op.global.UnitSystManager;
+import com.its.op.global.TbUnitSystManager;
 import com.its.op.xnetudp.codec.VmsServerRequestEncoder;
 import com.its.op.xnetudp.protocol.*;
 import io.netty.bootstrap.Bootstrap;
@@ -23,11 +23,12 @@ import java.nio.ByteBuffer;
 public class VmsServerRequestSender {
 
     private final VmsServerConfig vmsServerConfig;
+    private final TbUnitSystManager unitSystManager;
 
     @Async("centerCommExecutor")
     public void run(ByteBuffer sendBuffer) {
 
-        TbUnitSyst vmsServer = UnitSystManager.get(this.vmsServerConfig.getProcessId());
+        TbUnitSyst vmsServer = this.unitSystManager.get(this.vmsServerConfig.getProcessId());
         if (vmsServer != null) {
             this.vmsServerConfig.setIpAddress(vmsServer.getSystIp1().trim());
             this.vmsServerConfig.setPort(Integer.parseInt(vmsServer.getPrgmPort().trim()));