Browse Source

jpa add ...

shjung 3 years ago
parent
commit
061a156c04
48 changed files with 1390 additions and 91 deletions
  1. 2 2
      src/main/java/com/its/op/config/ProcessConfig.java
  2. 10 0
      src/main/java/com/its/op/config/RootContextConfig.java
  3. 48 3
      src/main/java/com/its/op/controller/common/CommonController.java
  4. 35 0
      src/main/java/com/its/op/controller/database/TbLinkControllerMybatis.java
  5. 40 18
      src/main/java/com/its/op/controller/database/TbNodeController.java
  6. 35 0
      src/main/java/com/its/op/controller/database/TbNodeControllerMybatis.java
  7. 11 12
      src/main/java/com/its/op/controller/traffic/CurrentTrafficController.java
  8. 51 0
      src/main/java/com/its/op/controller/traffic/CurrentTrafficControllerByMybatis.java
  9. 48 0
      src/main/java/com/its/op/model/dto/AtrdDto.java
  10. 28 0
      src/main/java/com/its/op/model/dto/IfscDto.java
  11. 24 0
      src/main/java/com/its/op/model/dto/IfscTrafDto.java
  12. 38 0
      src/main/java/com/its/op/model/dto/LinkDto.java
  13. 59 0
      src/main/java/com/its/op/model/dto/NodeDto.java
  14. 26 0
      src/main/java/com/its/op/model/dto/RoadDto.java
  15. 47 0
      src/main/java/com/its/op/model/entity/Atrd.java
  16. 44 0
      src/main/java/com/its/op/model/entity/AuditingEntity.java
  17. 30 0
      src/main/java/com/its/op/model/entity/BaseEntity.java
  18. 2 2
      src/main/java/com/its/op/model/entity/CmmnCd.java
  19. 12 9
      src/main/java/com/its/op/model/entity/CmmnClsfCd.java
  20. 67 0
      src/main/java/com/its/op/model/entity/Ifsc.java
  21. 18 0
      src/main/java/com/its/op/model/entity/IfscKey.java
  22. 53 0
      src/main/java/com/its/op/model/entity/IfscTraf.java
  23. 73 0
      src/main/java/com/its/op/model/entity/Link.java
  24. 45 0
      src/main/java/com/its/op/model/entity/Node.java
  25. 52 0
      src/main/java/com/its/op/model/entity/Road.java
  26. 0 2
      src/main/java/com/its/op/model/entity/UserInfr.java
  27. 14 0
      src/main/java/com/its/op/model/enums/Code.java
  28. 105 0
      src/main/java/com/its/op/model/enums/CodeRepository.java
  29. 0 23
      src/main/java/com/its/op/model/enums/DayTypeCd.java
  30. 2 2
      src/main/java/com/its/op/model/enums/ICodeValue.java
  31. 14 0
      src/main/java/com/its/op/model/enums/converter/CmtrGradCdConverter.java
  32. 8 5
      src/main/java/com/its/op/model/enums/converter/CodeValueConverter.java
  33. 4 4
      src/main/java/com/its/op/model/enums/converter/DayTypeConverter.java
  34. 51 0
      src/main/java/com/its/op/model/enums/eAdjsSorc.java
  35. 49 0
      src/main/java/com/its/op/model/enums/eCmtrGradCd.java
  36. 50 0
      src/main/java/com/its/op/model/enums/eDayTypeCd.java
  37. 3 3
      src/main/java/com/its/op/model/mapper/CommonEntityMapper.java
  38. 6 0
      src/main/java/com/its/op/repository/CmmnCdRepository.java
  39. 16 0
      src/main/java/com/its/op/repository/IfscRepository.java
  40. 9 0
      src/main/java/com/its/op/repository/IfscTrafRepository.java
  41. 9 0
      src/main/java/com/its/op/repository/LinkRepository.java
  42. 9 0
      src/main/java/com/its/op/repository/NodeRepository.java
  43. 9 0
      src/main/java/com/its/op/repository/RoadRepository.java
  44. 7 0
      src/main/java/com/its/op/repository/UserInfrRepository.java
  45. 2 3
      src/main/java/com/its/op/service/common/impl/CommonServiceImpl.java
  46. 55 0
      src/main/java/com/its/op/service/database/TbAtrdService.java
  47. 60 0
      src/main/java/com/its/op/service/database/TbNodeService.java
  48. 10 3
      src/main/resources/application.yml

+ 2 - 2
src/main/java/com/its/op/config/ProcessConfig.java

@@ -21,8 +21,8 @@ public class ProcessConfig {
     private String bootingDateTime;
     private boolean startSchedule;
 
-    private String id = "UTP01";
-    private String name = "ITS Traffic Processing Server";
+    private String id = "WOP01";
+    private String name = "ITS Operating Server";
     private boolean prepared = true;
     private String crontab = "10 0/5 * * * *";
     private String userId = "admin";

+ 10 - 0
src/main/java/com/its/op/config/RootContextConfig.java

@@ -3,6 +3,9 @@ package com.its.op.config;
 import org.modelmapper.ModelMapper;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.domain.AuditorAware;
+
+import java.util.Optional;
 
 @Configuration
 public class RootContextConfig {
@@ -11,4 +14,11 @@ public class RootContextConfig {
     public ModelMapper modelMapper() {
         return new ModelMapper();
     }
+
+    @Bean
+    public AuditorAware<String> auditorProvider() {
+        // 로그인한 사용자의 ID 를 가지고 와서 설정하도록 한다.
+        // AuditingEntity 에서 사용됨. @CreatedBy
+        return () -> Optional.of(new String("ADMIN").toString());
+    }
 }

+ 48 - 3
src/main/java/com/its/op/controller/common/CommonController.java

@@ -1,9 +1,13 @@
 package com.its.op.controller.common;
 
 import com.its.op.model.dto.UnitSystSttsDto;
-import com.its.op.model.entity.VwUnitSystStts;
-import com.its.op.model.mapper.VwUnitSystSttsMapper;
+import com.its.op.model.entity.*;
+import com.its.op.model.mapper.CommonEntityMapper;
 import com.its.op.model.vo.common.*;
+import com.its.op.repository.IfscRepository;
+import com.its.op.repository.LinkRepository;
+import com.its.op.repository.NodeRepository;
+import com.its.op.repository.RoadRepository;
 import com.its.op.service.common.impl.CommonServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -12,11 +16,13 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Optional;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -26,6 +32,45 @@ import java.util.List;
 public class CommonController {
 
     private final CommonServiceImpl service;
+    private final LinkRepository linkRepo;
+    private final IfscRepository ifscRepo;
+    private final RoadRepository roadRepo;
+    private final NodeRepository nodeRepo;
+
+    @ApiOperation(value = "노드", response = Node.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/nodes", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<Node>> findNodeAll(HttpServletRequest request) {
+        List<Node> result = this.nodeRepo.findAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "링크", response = Link.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/links", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<Link>> findLinkAll(HttpServletRequest request) {
+        List<Link> result = this.linkRepo.findAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "서비스구간", response = Ifsc.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/ifscs", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<Ifsc>> findIfscAll(HttpServletRequest request) {
+        List<Ifsc> result = this.ifscRepo.findAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "서비스구간 ID", response = Ifsc.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/ifscs/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<Ifsc> findIfscById(@PathVariable("id") Long id) {
+        Optional<Ifsc> obj = this.ifscRepo.findById(id);
+        return new ResponseEntity<>(obj.orElse(null), HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "도로", response = Road.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/roads", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<Road>> findRoadAll(HttpServletRequest request) {
+        List<Road> result = this.roadRepo.findAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
 
     @ApiOperation(value = "시설물 유형(TB_CMMN_CD)", response = FcltTypeVo.class, responseContainer = "ArrayList")
     @GetMapping(value = "/fclt/type/", produces = {"application/json; charset=utf8"})
@@ -38,7 +83,7 @@ public class CommonController {
     @GetMapping(value = "/process/stts/", produces = {"application/json; charset=utf8"})
     public ResponseEntity<List<UnitSystSttsDto>> findUnitSystSttsAll(HttpServletRequest request) {
         List<VwUnitSystStts> result = this.service.findAllVwUnitSystStts();
-        List<UnitSystSttsDto> response = VwUnitSystSttsMapper.INSTANCE.toDtoList(result);
+        List<UnitSystSttsDto> response = CommonEntityMapper.INSTANCE.unitSystSttsToDtoList(result);
         return new ResponseEntity<>(response, HttpStatus.OK);
     }
 

+ 35 - 0
src/main/java/com/its/op/controller/database/TbLinkControllerMybatis.java

@@ -0,0 +1,35 @@
+package com.its.op.controller.database;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbLinkVo;
+import com.its.op.service.database.impl.TbLinkServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@RestController
+@RequestMapping("/api-mybatis/database/tb-link")
+@Api(tags = "09.기초데이터관리-02.링크", description="링크")
+public class TbLinkControllerMybatis extends AbstractDatabaseController<TbLinkVo> {
+
+    private final TbLinkServiceImpl service;
+
+    public TbLinkControllerMybatis(TbLinkServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+    @ApiOperation(value = "이름변경(TB_LINK)", response = TbLinkVo.class)
+    @PutMapping(value = "/name/", produces = {"application/json; charset=utf8"})
+    public int updateNameById(@RequestBody TbLinkVo obj, HttpServletRequest request) {
+        return this.service.updateNameById(obj);
+    }
+
+}

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

@@ -1,35 +1,57 @@
 package com.its.op.controller.database;
 
-import com.its.op.controller.AbstractDatabaseController;
-import com.its.op.service.database.impl.TbNodeServiceImpl;
-import com.its.op.model.vo.database.TbNodeVo;
+import com.its.op.model.dto.NodeDto;
+import com.its.op.model.entity.Node;
+import com.its.op.service.database.TbNodeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
+@RequiredArgsConstructor
 @RestController
-@RequestMapping("/api/database//tb-node")
+@RequestMapping("/api/database/tb-node")
 @Api(tags = "09.기초데이터관리-01.노드", description="노드")
-public class TbNodeController extends AbstractDatabaseController<TbNodeVo> {
+public class TbNodeController {
 
-    private final TbNodeServiceImpl service;
+    private final TbNodeService service;
 
-    public TbNodeController(TbNodeServiceImpl service) {
-        super(service);
-        this.service = service;
+    @ApiOperation(value = "전체조회(TB_NODE)", response = NodeDto.Info.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<NodeDto.Info>> findAll() {
+        List<Node> data = this.service.findAll();
+        List<NodeDto.Info> result = new ArrayList<>();
+        for (Node node: data) {
+            result.add(new NodeDto.Info(node));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "이름변경(TB_NODE)", response = TbNodeVo.class)
-    @PutMapping(value = "/name/", produces = {"application/json; charset=utf8"})
-    public int updateNameById(@RequestBody TbNodeVo obj, HttpServletRequest request) {
-        return this.service.updateNameById(obj);
+    @ApiOperation(value = "노드개별조회(TB_NODE)", response = NodeDto.Info.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<NodeDto.Info> findById(@PathVariable final Long id) {
+        Node node = this.service.findById(id);
+        if (node != null) {
+            return new ResponseEntity<>(new NodeDto.Info(node), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "이름변경(TB_NODE)", response = NodeDto.Info.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<NodeDto.Info> updateNameById(@PathVariable final Long id, @RequestBody final NodeDto.NameUpdateReq req) {
+        Node node = this.service.updateNameById(id, req);
+        if (node != null) {
+            return new ResponseEntity<>(new NodeDto.Info(node), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
 }

+ 35 - 0
src/main/java/com/its/op/controller/database/TbNodeControllerMybatis.java

@@ -0,0 +1,35 @@
+package com.its.op.controller.database;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbNodeVo;
+import com.its.op.service.database.impl.TbNodeServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@RestController
+@RequestMapping("/api-mybatis/database/tb-node")
+@Api(tags = "09.기초데이터관리-01.노드", description="노드")
+public class TbNodeControllerMybatis extends AbstractDatabaseController<TbNodeVo> {
+
+    private final TbNodeServiceImpl service;
+
+    public TbNodeControllerMybatis(TbNodeServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+    @ApiOperation(value = "이름변경(TB_NODE)", response = TbNodeVo.class)
+    @PutMapping(value = "/name/", produces = {"application/json; charset=utf8"})
+    public int updateNameById(@RequestBody TbNodeVo obj, HttpServletRequest request) {
+        return this.service.updateNameById(obj);
+    }
+
+}

+ 11 - 12
src/main/java/com/its/op/controller/traffic/CurrentTrafficController.java

@@ -1,11 +1,13 @@
 package com.its.op.controller.traffic;
 
-import com.its.op.service.traffic.impl.CurrentTrafficServiceImpl;
-import com.its.op.model.vo.traffic.TbIfscTrafVo;
+import com.its.op.model.entity.IfscTraf;
 import com.its.op.model.vo.traffic.TbLinkTrafVo;
 import com.its.op.model.vo.traffic.TbRoadTrafVo;
+import com.its.op.repository.IfscTrafRepository;
+import com.its.op.service.traffic.impl.CurrentTrafficServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -13,38 +15,35 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 @Slf4j
+@RequiredArgsConstructor
 @RestController
 @RequestMapping("/api/traffic/current")
 @Api(tags = "00.교통상황관리-1.현재소통정보조회", description="현재소통정보조회")
 public class CurrentTrafficController {
 
     private final CurrentTrafficServiceImpl service;
-
-    public CurrentTrafficController(CurrentTrafficServiceImpl service) {
-        this.service = service;
-    }
+    private final IfscTrafRepository ifscTrafRepo;
 
     @ApiOperation(value = "링크소통정보(TB_LINK_TRAF, TB_LINK)", response = TbLinkTrafVo.class, responseContainer = "ArrayList")
     @GetMapping(value = "/link/", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<TbLinkTrafVo>> findLinkTrafAll(HttpServletRequest request) {
+    public ResponseEntity<List<TbLinkTrafVo>> findLinkTrafAll() {
         List<TbLinkTrafVo> result = this.service.findLinkTrafAll();
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "서비스링크소통정보(TB_IFSC_TRAF, TB_IFSC)", response = TbIfscTrafVo.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "서비스링크소통정보(TB_IFSC_TRAF, TB_IFSC)", response = IfscTraf.class, responseContainer = "ArrayList")
     @GetMapping(value = "/ifsc/", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<TbIfscTrafVo>> findIfscTrafAll(HttpServletRequest request) {
-        List<TbIfscTrafVo> result = this.service.findIfscTrafAll();
+    public ResponseEntity<List<IfscTraf>> findIfscTrafAll() {
+        List<IfscTraf> result = this.ifscTrafRepo.findAll();
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
     @ApiOperation(value = "도로소통정보(TB_ROAD_TRAF, TB_ROAD)", response = TbRoadTrafVo.class, responseContainer = "ArrayList")
     @GetMapping(value = "/road/", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<TbRoadTrafVo>> findRoadTraf(HttpServletRequest request) {
+    public ResponseEntity<List<TbRoadTrafVo>> findRoadTraf() {
         List<TbRoadTrafVo> result = this.service.findRoadTrafAll();
         return new ResponseEntity<>(result, HttpStatus.OK);
     }

+ 51 - 0
src/main/java/com/its/op/controller/traffic/CurrentTrafficControllerByMybatis.java

@@ -0,0 +1,51 @@
+package com.its.op.controller.traffic;
+
+import com.its.op.model.vo.traffic.TbIfscTrafVo;
+import com.its.op.model.vo.traffic.TbLinkTrafVo;
+import com.its.op.model.vo.traffic.TbRoadTrafVo;
+import com.its.op.service.traffic.impl.CurrentTrafficServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+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
+@RestController
+@RequestMapping("/api-mybatis/traffic/current")
+@Api(tags = "00.교통상황관리-1.현재소통정보조회", description="현재소통정보조회")
+public class CurrentTrafficControllerByMybatis {
+
+    private final CurrentTrafficServiceImpl service;
+
+    public CurrentTrafficControllerByMybatis(CurrentTrafficServiceImpl service) {
+        this.service = service;
+    }
+
+    @ApiOperation(value = "링크소통정보(TB_LINK_TRAF, TB_LINK)", response = TbLinkTrafVo.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/link/", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<TbLinkTrafVo>> findLinkTrafAll() {
+        List<TbLinkTrafVo> result = this.service.findLinkTrafAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "서비스링크소통정보(TB_IFSC_TRAF, TB_IFSC)", response = TbIfscTrafVo.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/ifsc/", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<TbIfscTrafVo>> findIfscTrafAll() {
+        List<TbIfscTrafVo> result = this.service.findIfscTrafAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "도로소통정보(TB_ROAD_TRAF, TB_ROAD)", response = TbRoadTrafVo.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/road/", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<TbRoadTrafVo>> findRoadTraf() {
+        List<TbRoadTrafVo> result = this.service.findRoadTrafAll();
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+}

+ 48 - 0
src/main/java/com/its/op/model/dto/AtrdDto.java

@@ -0,0 +1,48 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.Atrd;
+import lombok.AccessLevel;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+public class AtrdDto implements Serializable {
+
+    @Getter
+    public static class Info {
+        private final String ATRD_ID;     //	N	VARCHAR2(10)	N			간선도로 ID
+        private final String ATRD_NM;     //	N	VARCHAR2(30)	Y			간선도로 명
+        private final String DRCT_CD;     //	N	VARCHAR2(7)	    Y			방향 코드
+        private final String AREA_CD;     //	N	VARCHAR2(7)	    Y			지역 코드
+        private final String DEL_YN;      //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+        private final String DRCT_CD_DESC;    // 방향코드 설명
+
+        public Info(Atrd entity) {
+            this.ATRD_ID = entity.getATRD_ID();
+            this.ATRD_NM = entity.getATRD_NM();
+            this.DRCT_CD = entity.getDRCT_CD();
+            this.AREA_CD = entity.getAREA_CD();
+            this.DEL_YN  = entity.getDEL_YN();
+            if (this.DRCT_CD.equals("0"))
+                this.DRCT_CD_DESC = "상행";
+            else
+                this.DRCT_CD_DESC = "하행";
+        }
+    }
+
+    @Getter
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class NameUpdateReq {
+
+        private String ATRD_NM;
+
+        @Builder
+        public NameUpdateReq(String Name) {
+            this.ATRD_NM = Name;
+        }
+    }
+
+}

+ 28 - 0
src/main/java/com/its/op/model/dto/IfscDto.java

@@ -0,0 +1,28 @@
+package com.its.op.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class IfscDto implements Serializable {
+
+    private Long    IFSC_ID;            //	N	NUMBER(10)	    N			정보제공구간 ID
+    private String  IFSC_NM;            //	N	VARCHAR2(100)	Y			정보제공구간 명
+    private String  DRCT_CD;            //	N	VARCHAR2(7)	    Y			방향 코드
+    private String  STRT_NM;            //	N	VARCHAR2(100)	Y			시점 명
+    private String  END_NM;             //	N	VARCHAR2(100)	Y			종점 명
+    private Integer SECT_LNGT;          //	N	NUMBER(5)	    Y	0		구간 길이
+    private String  EXTR_CNCT_SECT_YN;  //	N	CHAR(1)	        Y	'N'		외부 연계 구간 여부
+    private String  RMRK;               //	N	VARCHAR2(600)	Y			비고
+    private Long    F_NODE_ID;          //	N	NUMBER(10)	    Y			시작 노드 ID
+    private Long    T_NODE_ID;          //	N	NUMBER(10)	    Y			종료 노드 ID
+    private String  SECT_GRAD_CD;       //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    private String  AREA_CD;            //	N	VARCHAR2(7)	    Y			지역 코드
+    private String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+}

+ 24 - 0
src/main/java/com/its/op/model/dto/IfscTrafDto.java

@@ -0,0 +1,24 @@
+package com.its.op.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class IfscTrafDto implements Serializable {
+
+    private Long    IFSC_ID;        //	N	NUMBER(10)	    N			정보제공구간 ID
+    private String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+    private Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+    private Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+    private Integer PTRN_SPED;      //	N	NUMBER(3)	    Y	0		패턴 속도
+    private Double  OCPY_RATE;      //	N	NUMBER(5,2)	    Y	0		점유 율
+    private Integer TRVL_HH;        //	N	NUMBER(6)	    Y	0		통행 시간
+    private String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+    private Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
+
+}

+ 38 - 0
src/main/java/com/its/op/model/dto/LinkDto.java

@@ -0,0 +1,38 @@
+package com.its.op.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class LinkDto implements Serializable {
+
+    private Long    LINK_ID;            //	N	NUMBER(10)	    N			링크ID
+    private Long    F_NODE;             //	N	NUMBER(10)	    Y			시작노드ID
+    private Long    T_NODE;             //	N	NUMBER(10)	    Y			종료노드ID
+    private String  ROAD_USE;           //	N	VARCHAR2(1)	    N			도로사용여부
+    private Integer LANES;              //	N	NUMBER(4)	    Y			차로수
+    private String  ROAD_RANK;          //	N	VARCHAR2(3)	    Y			도로등급
+    private String  ROAD_TYPE;          //	N	VARCHAR2(3)	    Y			도로유형
+    private String  ROAD_NO;            //	N	VARCHAR2(5)	    Y			도로번호
+    private String  ROAD_NAME;          //	N	VARCHAR2(50)	Y			도로명
+    private String  MULTI_LINK;         //	N	VARCHAR2(1)	    N			중용구간여부
+    private String  LINK_CONNECT;       //	N	VARCHAR2(3)	    Y			연결로코드
+    private Integer MAX_SPD;            //	N	NUMBER(4)	    Y			최고제한속도
+    private String  REST_VEH;           //	N	VARCHAR2(3)	    Y			통행제한차량
+    private Integer REST_W;             //	N	NUMBER(5)	    Y			통과제한하중
+    private Integer REST_H;             //	N	NUMBER(5)	    Y			통과제한높이
+    private Integer LINK_LENG;          //	N	NUMBER(5)	    Y			연장
+    private String  RMRK;               //	N	VARCHAR2(50)	Y			비고
+    private Integer DFLT_SPED;          //	N	NUMBER(3)	    Y	0		디폴트 속도
+    private String  DFLT_SPED_USE_YN;   //	N	CHAR(1)	        Y	'N'		디폴트 속도 사용 여부
+    private String  SECT_GRAD_CD;       //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    private String  AREA_CD;            //	N	VARCHAR2(7)	    Y			지역 코드
+    private Integer PARA_ID;            //	N	NUMBER(10)	    Y	1		파라미터ID
+    private String  DEL_YN;              //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+}

+ 59 - 0
src/main/java/com/its/op/model/dto/NodeDto.java

@@ -0,0 +1,59 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.Node;
+import com.its.op.model.enums.CodeRepository;
+import lombok.*;
+
+import java.io.Serializable;
+
+public class NodeDto implements Serializable {
+
+    @Getter
+    public static class Info {
+        private final Long   NODE_ID;     //	N	NUMBER(10)	    N			노드ID
+        private final String NODE_TYPE;   //	N	VARCHAR2(3)	    Y			노드유형
+        private final String NODE_NAME;   //	N	VARCHAR2(100)	Y			교차로명칭
+        private final String TURN_P;      //	N	VARCHAR2(1)	    Y			회전제한유무
+        private final String RMRK;        //	N	VARCHAR2(50)	Y			비고
+        private final Double X_CRDN;      //	N	NUMBER(11,8)	Y			X 좌표
+        private final Double Y_CRDN;      //	N	NUMBER(10,8)	Y			Y 좌표
+
+        private final String NODE_TYPE_DESC;
+        private final String TURN_P_DESC;
+
+        public Info(Node entity) {
+            this.NODE_ID = entity.getNODE_ID();
+            this.NODE_TYPE = entity.getNODE_TYPE();
+            this.NODE_NAME = entity.getNODE_NAME();
+            this.TURN_P = entity.getTURN_P();
+            this.RMRK  = entity.getRMRK();
+            this.X_CRDN = entity.getX_CRDN();
+            this.Y_CRDN  = entity.getY_CRDN();
+
+            this.NODE_TYPE_DESC = CodeRepository.getCodeDesc(CodeRepository.NODE_TYPE, this.NODE_TYPE);
+
+            if (this.TURN_P.equals("0"))
+                this.TURN_P_DESC = "[0] 무";
+            else
+            if (this.TURN_P.equals("1"))
+                this.TURN_P_DESC = "[1] 유";
+            else
+                this.TURN_P_DESC = "[" + TURN_P + "] ?";
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class NameUpdateReq {
+
+        private String NODE_NAME;
+
+        @Builder
+        public NameUpdateReq(String NODE_NAME) {
+            this.NODE_NAME = NODE_NAME;
+        }
+    }
+
+}

+ 26 - 0
src/main/java/com/its/op/model/dto/RoadDto.java

@@ -0,0 +1,26 @@
+package com.its.op.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class RoadDto implements Serializable {
+
+    private Long    ROAD_ID;        //	N	NUMBER(10)	    N			도로 ID
+    private String  ROAD_NAME;      //	N	VARCHAR2(100)	Y			도로 명
+    private String  DRCT_CD;        //	N	VARCHAR2(7)	    Y			방향 코드
+    private String  STRT_NM;        //	N	VARCHAR2(100)	Y			시점 명
+    private String  END_NM;         //	N	VARCHAR2(100)	Y			종점 명
+    private Integer SECT_LNGT;      //	N	NUMBER(5)	    Y			구간 길이
+    private Long    F_NODE_ID;      //	N	NUMBER(10)	    Y			시작 노드 ID
+    private Long    T_NODE_ID;      //	N	NUMBER(10)	    Y			종료 노드 ID
+    private String  SECT_GRAD_CD;   //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    private String  AREA_CD;        //	N	VARCHAR2(7)	    Y			지역 코드
+    private String  DEL_YN;         //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+}

+ 47 - 0
src/main/java/com/its/op/model/entity/Atrd.java

@@ -0,0 +1,47 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.AtrdDto;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@Builder
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_ATRD")
+public class Atrd {
+
+    @Id
+    @Column(nullable = false, unique = true)
+    private String ATRD_ID;     //	N	VARCHAR2(10)	N			간선도로 ID
+
+    @Column(nullable = false, length = 30)
+    private String ATRD_NM;     //	N	VARCHAR2(30)	Y			간선도로 명
+
+    @Column(length = 7)
+    private String DRCT_CD;     //	N	VARCHAR2(7)	    Y			방향 코드
+    @Column(length = 7)
+    private String AREA_CD;     //	N	VARCHAR2(7)	    Y			지역 코드
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String DEL_YN;      //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+    public void updateName(AtrdDto.NameUpdateReq req) {
+        this.ATRD_NM = req.getATRD_NM();
+    }
+
+}

+ 44 - 0
src/main/java/com/its/op/model/entity/AuditingEntity.java

@@ -0,0 +1,44 @@
+package com.its.op.model.entity;
+
+import lombok.Getter;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.*;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Getter
+@MappedSuperclass
+@EntityListeners(AuditingEntityListener.class)
+public class AuditingEntity {
+
+    @CreatedDate
+    @Column(updatable = false)
+    private LocalDateTime createdDate;
+
+    @LastModifiedDate
+    private LocalDateTime lastModifiedDate;
+
+    @CreatedBy
+    @Column(updatable = false)
+    private String createdBy;
+
+    @LastModifiedBy
+    private String lastModifiedBy;
+
+    @PrePersist
+    public void onPrePersist() {
+        LocalDateTime now = LocalDateTime.now();
+        String createDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+    }
+
+    @PreUpdate
+    public void onPreUpdate() {
+        LocalDateTime now = LocalDateTime.now();
+        String updateDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+    }
+}

+ 30 - 0
src/main/java/com/its/op/model/entity/BaseEntity.java

@@ -0,0 +1,30 @@
+package com.its.op.model.entity;
+
+import lombok.Getter;
+
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.PrePersist;
+import javax.persistence.PreUpdate;
+import java.time.LocalDateTime;
+
+@Getter
+@MappedSuperclass
+public class BaseEntity {
+
+    @Column(updatable = false)
+    private LocalDateTime createTime;
+    private LocalDateTime updateTime;
+
+    @PrePersist
+    public void beforeInsert() {
+        LocalDateTime now = LocalDateTime.now();
+        this.createTime = now;
+        this.updateTime = now;
+    }
+
+    @PreUpdate
+    public void beforeUpdate() {
+        this.updateTime = LocalDateTime.now();
+    }
+}

+ 2 - 2
src/main/java/com/its/op/model/entity/CmmnCd.java

@@ -54,9 +54,9 @@ public class CmmnCd implements Serializable {
     @ColumnDefault(value = "Y")
     private String USE_YN;              //	N	CHAR(1)	        Y	'N'		사용 여부
 
-    @ManyToOne
+   /* @ManyToOne
     //@Fetch(FetchMode.JOIN)
     @JoinColumn(insertable=false, updatable=false, name="CMMN_CLSF_CD")
     @NotFound(action = NotFoundAction.IGNORE) // 값이 발견되지 않으면 무시
-    private CmmnClsfCd cmmnClsfCd;
+    private CmmnClsfCd cmmnClsfCd;*/
 }

+ 12 - 9
src/main/java/com/its/op/model/entity/CmmnClsfCd.java

@@ -1,15 +1,18 @@
 package com.its.op.model.entity;
 
-import lombok.*;
-import org.hibernate.annotations.*;
-
-import javax.persistence.CascadeType;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.Id;
 import javax.persistence.Table;
-import javax.persistence.*;
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
 
 @DynamicInsert
 @DynamicUpdate
@@ -47,9 +50,9 @@ public class CmmnClsfCd implements Serializable {
     @Column(columnDefinition = "CHAR", length = 1)
     @ColumnDefault(value = "Y")
     private String USE_YN;              //	N	CHAR(1)	        Y	'N'		사용 여부
-
+/*
     @OneToMany(mappedBy = "cmmnClsfCd", cascade = CascadeType.ALL)//, fetch = FetchType.EAGER)
     //@Fetch(FetchMode.JOIN)
-    private List<CmmnCd> cmmnCds = new ArrayList<>();;
+    private List<CmmnCd> cmmnCds = new ArrayList<>();;*/
 
 }

+ 67 - 0
src/main/java/com/its/op/model/entity/Ifsc.java

@@ -0,0 +1,67 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_IFSC")
+public class Ifsc {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    IFSC_ID;            //	N	NUMBER(10)	    N			정보제공구간 ID
+    @Column(length = 100)
+    private String  IFSC_NM;            //	N	VARCHAR2(100)	Y			정보제공구간 명
+    @Column(length = 7)
+    private String  DRCT_CD;            //	N	VARCHAR2(7)	    Y			방향 코드
+    @Column(length = 100)
+    private String  STRT_NM;            //	N	VARCHAR2(100)	Y			시점 명
+    @Column(length = 100)
+    private String  END_NM;             //	N	VARCHAR2(100)	Y			종점 명
+    @Column(nullable = false)
+    private Integer SECT_LNGT;          //	N	NUMBER(5)	    Y	0		구간 길이
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  EXTR_CNCT_SECT_YN;  //	N	CHAR(1)	        Y	'N'		외부 연계 구간 여부
+    @Column(length = 600)
+    private String  RMRK;               //	N	VARCHAR2(600)	Y			비고
+    @Column(nullable = false, length = 10)
+    private Long    F_NODE_ID;          //	N	NUMBER(10)	    Y			시작 노드 ID
+    @Column(nullable = false, length = 10)
+    private Long    T_NODE_ID;          //	N	NUMBER(10)	    Y			종료 노드 ID
+    @Column(nullable = false, length = 7)
+    private String  SECT_GRAD_CD;       //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    @Column(nullable = false, length = 7)
+    private String  AREA_CD;            //	N	VARCHAR2(7)	    Y			지역 코드
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  DEL_YN;             //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+    /*@OneToOne(mappedBy = "ifscInfo")
+    @Fetch(FetchMode.JOIN)
+    private IfscTraf ifscTraf = new IfscTraf();*/
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="IFSC_ID", referencedColumnName = "IFSC_ID")
+    private IfscTraf traf = new IfscTraf();
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="F_NODE_ID", referencedColumnName = "NODE_ID")
+    private Node from_node = new Node();
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="T_NODE_ID", referencedColumnName = "NODE_ID")
+    private Node to_node= new Node();
+
+}

+ 18 - 0
src/main/java/com/its/op/model/entity/IfscKey.java

@@ -0,0 +1,18 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+//@Embeddable
+public class IfscKey implements Serializable {
+
+    //@Id @Column(nullable = false, length = 10)
+    private Long IFSC_ID;
+
+}

+ 53 - 0
src/main/java/com/its/op/model/entity/IfscTraf.java

@@ -0,0 +1,53 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.enums.eCmtrGradCd;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_IFSC_TRAF")
+//@IdClass(IfscKey.class)
+public class IfscTraf {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    IFSC_ID;        //	N	NUMBER(10)	    N			정보제공구간 ID
+    @Column(nullable = false, length = 14)
+    private String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+    private Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+    private Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+    private Integer PTRN_SPED;      //	N	NUMBER(3)	    Y	0		패턴 속도
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  OCPY_RATE;      //	N	NUMBER(5,2)	    Y	0		점유 율
+    private Integer TRVL_HH;        //	N	NUMBER(6)	    Y	0		통행 시간
+
+    @Column(nullable = false)
+    //@Convert(converter = CmtrGradCdConverter.class)
+    //private CmtrGradCd CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+    private String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+
+    private Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
+
+    @Transient
+    private String  CMTR_GRAD_DESC;
+    public String getCMTR_GRAD_DESC() {
+        return eCmtrGradCd.findValue(this.CMTR_GRAD_CD);
+    }
+
+    /*@OneToOne
+    @NotFound(action = NotFoundAction.IGNORE) // 값이 발견되지 않으면 무시
+    @JoinColumn(insertable=false, updatable=false, name="IFSC_ID")
+    @Fetch(FetchMode.JOIN)
+    private Ifsc ifscInfo;*/
+
+}

+ 73 - 0
src/main/java/com/its/op/model/entity/Link.java

@@ -0,0 +1,73 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LINK")
+public class Link {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    LINK_ID;            //	N	NUMBER(10)	    N			링크ID
+    @Column(nullable = false, length = 10)
+    private Long    F_NODE;             //	N	NUMBER(10)	    Y			시작노드ID
+    @Column(nullable = false, length = 10)
+    private Long    T_NODE;             //	N	NUMBER(10)	    Y			종료노드ID
+    @Column(length = 1)
+    private String  ROAD_USE;           //	N	VARCHAR2(1)	    N			도로사용여부
+    @Column(nullable = false)
+    private Integer LANES;              //	N	NUMBER(4)	    Y			차로수
+    @Column(length = 3)
+    private String  ROAD_RANK;          //	N	VARCHAR2(3)	    Y			도로등급
+    @Column(length = 3)
+    private String  ROAD_TYPE;          //	N	VARCHAR2(3)	    Y			도로유형
+    @Column(length = 5)
+    private String  ROAD_NO;            //	N	VARCHAR2(5)	    Y			도로번호
+    @Column(length = 50)
+    private String  ROAD_NAME;          //	N	VARCHAR2(50)	Y			도로명
+    @Column(length = 1)
+    private String  MULTI_LINK;         //	N	VARCHAR2(1)	    N			중용구간여부
+    @Column(length = 3)
+    private String  LINK_CONNECT;       //	N	VARCHAR2(3)	    Y			연결로코드
+    private Integer MAX_SPD;            //	N	NUMBER(4)	    Y			최고제한속도
+    @Column(length = 3)
+    private String  REST_VEH;           //	N	VARCHAR2(3)	    Y			통행제한차량
+    private Integer REST_W;             //	N	NUMBER(5)	    Y			통과제한하중
+    private Integer REST_H;             //	N	NUMBER(5)	    Y			통과제한높이
+    @Column(nullable = false)
+    private Integer LINK_LENG;          //	N	NUMBER(5)	    Y			연장
+    @Column(length = 50)
+    private String  RMRK;               //	N	VARCHAR2(50)	Y			비고
+    private Integer DFLT_SPED;          //	N	NUMBER(3)	    Y	0		디폴트 속도
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  DFLT_SPED_USE_YN;   //	N	CHAR(1)	        Y	'N'		디폴트 속도 사용 여부
+
+    @Column(nullable = false, length = 7)
+    private String  SECT_GRAD_CD;       //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    @Column(nullable = false, length = 7)
+    private String  AREA_CD;            //	N	VARCHAR2(7)	    Y			지역 코드
+    @Column(nullable = false)
+    @ColumnDefault(value = "1")
+    private Integer PARA_ID;            //	N	NUMBER(10)	    Y	1		파라미터ID
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  DEL_YN;              //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+}

+ 45 - 0
src/main/java/com/its/op/model/entity/Node.java

@@ -0,0 +1,45 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.NodeDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_NODE")
+public class Node {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long   NODE_ID;     //	N	NUMBER(10)	    N			노드ID
+    @Column(length = 3)
+    private String NODE_TYPE;   //	N	VARCHAR2(3)	    Y			노드유형
+    @Column(length = 100)
+    private String NODE_NAME;   //	N	VARCHAR2(100)	Y			교차로명칭
+    @Column(length = 1)
+    private String TURN_P;      //	N	VARCHAR2(1)	    Y			회전제한유무
+    @Column(length = 50)
+    private String RMRK;        //	N	VARCHAR2(50)	Y			비고
+    @Column(columnDefinition = "NUMBER", length = 11, precision = 8)
+    private Double X_CRDN;      //	N	NUMBER(11,8)	Y			X 좌표
+    @Column(columnDefinition = "NUMBER", length = 10, precision = 8)
+    private Double Y_CRDN;      //	N	NUMBER(10,8)	Y			Y 좌표
+
+    public void updateName(NodeDto.NameUpdateReq req) {
+        this.NODE_NAME = req.getNODE_NAME();
+    }
+}

+ 52 - 0
src/main/java/com/its/op/model/entity/Road.java

@@ -0,0 +1,52 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_ROAD")
+public class Road {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    ROAD_ID;        //	N	NUMBER(10)	    N			도로 ID
+    @Column(length = 100)
+    private String  ROAD_NAME;      //	N	VARCHAR2(100)	Y			도로 명
+    @Column(length = 7)
+    private String  DRCT_CD;        //	N	VARCHAR2(7)	    Y			방향 코드
+    @Column(length = 100)
+    private String  STRT_NM;        //	N	VARCHAR2(100)	Y			시점 명
+    @Column(length = 100)
+    private String  END_NM;         //	N	VARCHAR2(100)	Y			종점 명
+    @Column(nullable = false)
+    private Integer SECT_LNGT;      //	N	NUMBER(5)	    Y			구간 길이
+    @Column(nullable = false, length = 10)
+    private Long    F_NODE_ID;      //	N	NUMBER(10)	    Y			시작 노드 ID
+    @Column(nullable = false, length = 10)
+    private Long    T_NODE_ID;      //	N	NUMBER(10)	    Y			종료 노드 ID
+    @Column(nullable = false, length = 7)
+    private String  SECT_GRAD_CD;   //	N	VARCHAR2(7)	    Y			구간 등급 코드
+    @Column(nullable = false, length = 7)
+    private String  AREA_CD;        //	N	VARCHAR2(7)	    Y			지역 코드
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  DEL_YN;         //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+}

+ 0 - 2
src/main/java/com/its/op/model/entity/UserInfr.java

@@ -36,10 +36,8 @@ public class UserInfr {
     @Column(length = 128)
     private String EMAL;            //	N	VARCHAR2(128)	Y			이메일
 
-    @Transient
     @Column(length = 14)
     private String RGSTYMD;         //	N	VARCHAR2(14)	Y			등록일자
-    @Transient
     @Column(length = 14)
     private String CRCTYMD;         //	N	VARCHAR2(14)	Y			수정일자
 

+ 14 - 0
src/main/java/com/its/op/model/enums/Code.java

@@ -0,0 +1,14 @@
+package com.its.op.model.enums;
+
+import lombok.*;
+
+@Getter
+@ToString
+@AllArgsConstructor
+public class Code {
+
+    private String code;
+    private String desc;
+    private String englDesc;
+
+}

+ 105 - 0
src/main/java/com/its/op/model/enums/CodeRepository.java

@@ -0,0 +1,105 @@
+package com.its.op.model.enums;
+
+import com.its.op.model.entity.CmmnCd;
+import com.its.op.repository.CmmnCdRepository;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class CodeRepository {
+
+    private final CmmnCdRepository repo;
+
+    private static final String defUnknownCode = "X";
+    private static final String defUnknownDesc = "UNKNOWN";
+
+    public static final String DAY_TYPE_CD = "DTW";   // 요일유형
+    public static final String CMTR_GRAD_CD = "LTC";   // 소통등급
+    public static final String ADJS_SORC = "MCS";   // 보정소스
+    public static final String NODE_TYPE = "NDT";   // 노드유형
+
+    private static final ConcurrentHashMap<String, HashMap<String, Code>> codes = new ConcurrentHashMap<>();
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+
+        List<CmmnCd> codeList;
+
+        String code = DAY_TYPE_CD;
+        HashMap<String, Code> codeMap = new HashMap<>();
+        codeList = this.repo.findAllByCmmnClsfCd(code);
+        if (codeList != null) {
+            for (CmmnCd cd : codeList) {
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+            }
+        }
+        codes.put(code, codeMap);
+
+        code = CMTR_GRAD_CD;
+        codeMap = new HashMap<>();
+        codeList = this.repo.findAllByCmmnClsfCd(code);
+        if (codeList != null) {
+            for (CmmnCd cd : codeList) {
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+            }
+        }
+        codes.put(code, codeMap);
+
+        code = ADJS_SORC;
+        codeMap = new HashMap<>();
+        codeList = this.repo.findAllByCmmnClsfCd(code);
+        if (codeList != null) {
+            for (CmmnCd cd : codeList) {
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+            }
+        }
+        codes.put(code, codeMap);
+
+        code = NODE_TYPE;
+        codeMap = new HashMap<>();
+        codeList = this.repo.findAllByCmmnClsfCd(code);
+        if (codeList != null) {
+            for (CmmnCd cd : codeList) {
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+            }
+        }
+        codes.put(code, codeMap);
+
+        log.info("=== {}", codes);
+    }
+
+    public static String getCodeDesc(String CMMN_CLSF_CD, String CMMN_CD) {
+        HashMap<String, Code> codeMap = codes.get(CMMN_CLSF_CD);
+        if (codeMap != null) {
+            Code code = codeMap.get(CMMN_CD);
+            if (code != null) {
+                return "[" + CMMN_CD + "] " + code.getDesc();
+            }
+        }
+        return "[" + CMMN_CD + "] " + defUnknownDesc;
+    }
+    public static String getCodeDescShort(String CMMN_CLSF_CD, String CMMN_CD) {
+        HashMap<String, Code> codeMap = codes.get(CMMN_CLSF_CD);
+        if (codeMap != null) {
+            Code code = codeMap.get(CMMN_CD);
+            if (code != null) {
+                return code.getDesc();
+            }
+        }
+        return defUnknownDesc;
+    }
+}

+ 0 - 23
src/main/java/com/its/op/model/enums/DayTypeCd.java

@@ -1,23 +0,0 @@
-package com.its.op.model.enums;
-
-import lombok.Getter;
-
-@Getter
-public enum DayTypeCd implements CodeValue {
-
-    DWT1("DTW1", "[DTW1] 월요일"),
-    DWT2("DTW2", "[DTW2] 화요일"),
-    DWT3("DTW3", "[DTW3] 수요일"),
-    DWT4("DTW4", "[DTW4] 목요일"),
-    DWT5("DTW5", "[DTW5] 금요일"),
-    DWT6("DTW6", "[DTW6] 토요일"),
-    DWT7("DTW7", "[DTW7] 일요일");
-
-    private String code;
-    private String value;
-
-    DayTypeCd(String code, String value) {
-        this.code = code;
-        this.value = value;
-    }
-}

+ 2 - 2
src/main/java/com/its/op/model/enums/CodeValue.java → src/main/java/com/its/op/model/enums/ICodeValue.java

@@ -1,8 +1,8 @@
 package com.its.op.model.enums;
 
-public interface CodeValue {
+public interface ICodeValue {
 
     String getCode();
     String getValue();
-
+    String getUnknown();
 }

+ 14 - 0
src/main/java/com/its/op/model/enums/converter/CmtrGradCdConverter.java

@@ -0,0 +1,14 @@
+package com.its.op.model.enums.converter;
+
+import com.its.op.model.enums.eCmtrGradCd;
+
+import javax.persistence.Converter;
+
+@Converter(autoApply = true)    // Entity 에 @Convert 명시없이도 해당 Converter 클래스가 적용된다.
+public class CmtrGradCdConverter extends CodeValueConverter<eCmtrGradCd> {
+
+    public CmtrGradCdConverter() {
+        super(eCmtrGradCd.class);
+    }
+
+}

+ 8 - 5
src/main/java/com/its/op/model/enums/converter/CodeValueConverter.java

@@ -1,12 +1,14 @@
 package com.its.op.model.enums.converter;
 
-import com.its.op.model.enums.CodeValue;
+import com.its.op.model.enums.ICodeValue;
+import lombok.extern.slf4j.Slf4j;
 
 import javax.persistence.AttributeConverter;
 import java.util.EnumSet;
 import java.util.NoSuchElementException;
 
-public class CodeValueConverter <E extends Enum<E> & CodeValue> implements AttributeConverter<E, String> {
+@Slf4j
+public class CodeValueConverter <E extends Enum<E> & ICodeValue> implements AttributeConverter<E, String> {
 
     private Class<E> clz;
 
@@ -20,10 +22,11 @@ public class CodeValueConverter <E extends Enum<E> & CodeValue> implements Attri
     }
 
     @Override
-    public E convertToEntityAttribute(String value) {
-        return EnumSet.allOf(clz).stream()
-                .filter(e->e.getCode().equals(value))
+    public E convertToEntityAttribute(String code) {
+        return EnumSet.allOf(this.clz).stream()
+                .filter(e->e.getCode().equals(code))
                 .findAny()
                 .orElseThrow(()-> new NoSuchElementException());
     }
+
 }

+ 4 - 4
src/main/java/com/its/op/model/enums/converter/DayTypeConverter.java

@@ -1,14 +1,14 @@
 package com.its.op.model.enums.converter;
 
-import com.its.op.model.enums.DayTypeCd;
+import com.its.op.model.enums.eDayTypeCd;
 
 import javax.persistence.Converter;
 
 @Converter(autoApply = true)    // Entity 에 @Convert 명시없이도 해당 Converter 클래스가 적용된다.
-public class DayTypeConverter extends CodeValueConverter<DayTypeCd> {
+public class DayTypeConverter extends CodeValueConverter<eDayTypeCd> {
 
-    public DayTypeConverter(Class<DayTypeCd> enumClass) {
-        super(enumClass);
+    public DayTypeConverter() {
+        super(eDayTypeCd.class);
     }
 
 }

+ 51 - 0
src/main/java/com/its/op/model/enums/eAdjsSorc.java

@@ -0,0 +1,51 @@
+package com.its.op.model.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// 결측보정 소스
+public enum eAdjsSorc implements ICodeValue {
+
+    MCS0("MCS0", "[MCS0] 결측보정 없음"),
+    MCS1("MCS1", "[MCS1] 링크5분패턴"),
+    MCS2("MCS2", "[MCS2] 15분이동평균"),
+    MCS3("MCS3", "[MCS3] 링크15분패턴"),
+    MCS8("MCS8", "[MCS8] 결측보정실패"),
+    MCS9("MCS9", "[MCS9] 결측보정오류");
+
+    private final String code;
+    private final String value;
+
+    private static final Map<String, eAdjsSorc> map;
+    static {
+        map = new HashMap<>();
+        for (eAdjsSorc e : values()) {
+            map.put(e.code, e);
+        }
+    }
+
+    eAdjsSorc(String code, String value) {
+        this.code = code;
+        this.value = value;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getValue() {
+        return this.value;
+    }
+
+    @Override
+    public String getUnknown() {
+        return "LTC0";
+    }
+
+    public static String findValue(String code) {
+        return map.get(code).getValue();
+    }
+
+}

+ 49 - 0
src/main/java/com/its/op/model/enums/eCmtrGradCd.java

@@ -0,0 +1,49 @@
+package com.its.op.model.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// 소통정보 등급
+public enum eCmtrGradCd implements ICodeValue {
+
+    LTC0("LTC0", "[LTC0] 정보없음"),
+    LTC1("LTC1", "[LTC1] 원활"),
+    LTC2("LTC2", "[LTC2] 지체"),
+    LTC3("LTC3", "[LTC3] 정체");
+
+    private final String code;
+    private final String value;
+
+    private static final Map<String, eCmtrGradCd> map;
+    static {
+        map = new HashMap<>();
+        for (eCmtrGradCd e : values()) {
+            map.put(e.code, e);
+        }
+    }
+
+    eCmtrGradCd(String code, String value) {
+        this.code = code;
+        this.value = value;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    @Override
+    public String getValue() {
+        return this.value;
+    }
+
+    @Override
+    public String getUnknown() {
+        return "LTC0";
+    }
+
+    public static String findValue(String code) {
+        return map.get(code).getValue();
+    }
+
+}

+ 50 - 0
src/main/java/com/its/op/model/enums/eDayTypeCd.java

@@ -0,0 +1,50 @@
+package com.its.op.model.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// 요일유형
+public enum eDayTypeCd implements ICodeValue {
+
+    DTW1("DTW1", "[DTW1] 월요일"),
+    DTW2("DTW2", "[DTW2] 화요일"),
+    DTW3("DTW3", "[DTW3] 수요일"),
+    DTW4("DTW4", "[DTW4] 목요일"),
+    DTW5("DTW5", "[DTW5] 금요일"),
+    DTW6("DTW6", "[DTW6] 토요일"),
+    DTW7("DTW7", "[DTW7] 일요일");
+
+    private String code;
+    private String value;
+
+    private static final Map<String, eDayTypeCd> map;
+    static {
+        map = new HashMap<>();
+        for (eDayTypeCd e : values()) {
+            map.put(e.code, e);
+        }
+    }
+    eDayTypeCd(String code, String value) {
+        this.code = code;
+        this.value = value;
+    }
+
+    @Override
+    public String getCode() {
+        return code;
+    }
+    @Override
+    public String getValue() {
+        return value;
+    }
+
+    @Override
+    public String getUnknown() {
+        return "DTW0";
+    }
+
+    public static String findValue(String code) {
+        return map.get(code).getValue();
+    }
+
+}

+ 3 - 3
src/main/java/com/its/op/model/mapper/VwUnitSystSttsMapper.java → src/main/java/com/its/op/model/mapper/CommonEntityMapper.java

@@ -10,10 +10,10 @@ import java.util.List;
 @Mapper(
         componentModel = "spring"
 )
-public interface VwUnitSystSttsMapper {
+public interface CommonEntityMapper {
 
-    VwUnitSystSttsMapper INSTANCE = Mappers.getMapper(VwUnitSystSttsMapper.class);
+    CommonEntityMapper INSTANCE = Mappers.getMapper(CommonEntityMapper.class);
 
-    List<UnitSystSttsDto> toDtoList(List<VwUnitSystStts> entities);
+    List<UnitSystSttsDto> unitSystSttsToDtoList(List<VwUnitSystStts> entities);
 
 }

+ 6 - 0
src/main/java/com/its/op/repository/CmmnCdRepository.java

@@ -3,8 +3,14 @@ package com.its.op.repository;
 import com.its.op.model.entity.CmmnCd;
 import com.its.op.model.entity.CmmnCdKey;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface CmmnCdRepository extends JpaRepository<CmmnCd, CmmnCdKey> {
+
+    @Query("select p from CmmnCd p where p.CMMN_CLSF_CD = ?1")
+    List<CmmnCd> findAllByCmmnClsfCd(String CMMN_CLSF_CD);
 }

+ 16 - 0
src/main/java/com/its/op/repository/IfscRepository.java

@@ -0,0 +1,16 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.Ifsc;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface IfscRepository extends JpaRepository<Ifsc, Long> {
+
+    //@Query("SELECT distinct t FROM Ifsc t left outer join fetch t.traf join t.from_node join t.to_node")
+    @Query(value = "SELECT distinct t FROM Ifsc t inner join t.from_node inner join t.to_node left outer join fetch t.traf ")
+    List<Ifsc> findAll();
+}

+ 9 - 0
src/main/java/com/its/op/repository/IfscTrafRepository.java

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.IfscTraf;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface IfscTrafRepository extends JpaRepository<IfscTraf, Long> {
+}

+ 9 - 0
src/main/java/com/its/op/repository/LinkRepository.java

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.Link;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LinkRepository extends JpaRepository<Link, Long> {
+}

+ 9 - 0
src/main/java/com/its/op/repository/NodeRepository.java

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.Node;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface NodeRepository extends JpaRepository<Node, Long> {
+}

+ 9 - 0
src/main/java/com/its/op/repository/RoadRepository.java

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.Road;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface RoadRepository extends JpaRepository<Road, Long> {
+}

+ 7 - 0
src/main/java/com/its/op/repository/UserInfrRepository.java

@@ -1,9 +1,16 @@
 package com.its.op.repository;
 
 import com.its.op.model.entity.UserInfr;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository
 public interface UserInfrRepository extends JpaRepository<UserInfr, String> {
+
+    @Modifying // select 문이 아님을 나타낸다
+    @Query(value = "UPDATE UserInfr m set m.PWD = :passwordwhere m.USER_ID = :user_id", nativeQuery = true)
+    void changePwd(@Param("password")String password, @Param("user_id")String user_id) throws Exception;
 }

+ 2 - 3
src/main/java/com/its/op/service/common/impl/CommonServiceImpl.java

@@ -1,7 +1,6 @@
 package com.its.op.service.common.impl;
 
 import com.its.op.model.dto.CmmnClsfCdDto;
-import com.its.op.model.entity.CmmnCd;
 import com.its.op.model.entity.CmmnClsfCd;
 import com.its.op.model.entity.VwUnitSystStts;
 import com.its.op.model.vo.common.*;
@@ -40,14 +39,14 @@ public class CommonServiceImpl implements CommonService {
     public List<CmmnClsfCdDto> findAll() {
         List<CmmnClsfCd> result = this.repo.findAll();
         List<CmmnClsfCdDto> result2 = new ArrayList<>();
-        for (CmmnClsfCd entity : result) {
+        /*for (CmmnClsfCd entity : result) {
             CmmnClsfCdDto dto = this.modelMapper.map(entity, CmmnClsfCdDto.class);
             //log.error("{}", dto);
             for (CmmnCd obj : entity.getCmmnCds()) {
                 //dto.getCmmnCds().add(this.modelMapper.map(obj, CmmnCdDto.class));
             }
             result2.add(dto);
-        }
+        }*/
         return result2;
     }
 

+ 55 - 0
src/main/java/com/its/op/service/database/TbAtrdService.java

@@ -0,0 +1,55 @@
+package com.its.op.service.database;
+
+import com.its.op.model.vo.database.TbAtrdRoadRltnVo;
+import com.its.op.repository.mapper.database.TbAtrdMapper;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Getter
+@Setter
+@ToString
+@RequiredArgsConstructor
+@Service
+public class TbAtrdService {
+
+    private final TbAtrdMapper mapper;
+
+    public List<TbAtrdRoadRltnVo> findAllRoadRltn() {
+        try {
+            return this.mapper.findAllRoadRltn();
+        }
+        catch (Exception e) {
+            log.error("{}.findAllRoadRltn: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<TbAtrdRoadRltnVo>();
+    }
+
+    public TbAtrdRoadRltnVo findByIdRoadRltn(String id) {
+        try {
+            return this.mapper.findByIdRoadRltn(id);
+        }
+        catch (Exception e) {
+            log.error("{}.findByIdRoadRltn: ID: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+    public int updateByIdRoadRltn(TbAtrdRoadRltnVo obj) {
+        try {
+            return this.mapper.updateByIdRoadRltn(obj);
+        }
+        catch (Exception e) {
+            log.error("{}.updateByIdRoadRltn: Object: {}, Exception: {}", getClass().getSimpleName(), obj, e.getMessage());
+        }
+        return 0;
+    }
+
+}

+ 60 - 0
src/main/java/com/its/op/service/database/TbNodeService.java

@@ -0,0 +1,60 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.NodeDto;
+import com.its.op.model.entity.Node;
+import com.its.op.repository.NodeRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbNodeService {
+
+    private final NodeRepository repo;
+
+    public List<Node> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<Node>();
+    }
+    public Node findById(Long id) {
+        try {
+            Optional<Node> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                return data.get();
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+    // 노드명 변경
+    public Node updateNameById(Long id, NodeDto.NameUpdateReq req) {
+        try {
+            Optional<Node> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                Node node = data.get();
+                node.updateName(req);
+                this.repo.save(node);
+                return node;
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.updateNameById: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+}

+ 10 - 3
src/main/resources/application.yml

@@ -37,6 +37,7 @@ spring:
       #transaction-isolation: READ_COMMITTED
       pool-name: pool-its-op-server
   jpa:
+    database: Oracle
     properties:
       hibernate:
         format_sql: true
@@ -50,7 +51,9 @@ spring:
 
 ---
 spring:
-  profiles: dev
+  config:
+    activate:
+      on-profile: dev
   datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
@@ -65,7 +68,9 @@ spring:
 
 ---
 spring:
-  profiles: devxx
+  config:
+    activate:
+      on-profile: devxx
   datasource:
     hikari:
       driver-class-name: oracle.jdbc.OracleDriver
@@ -79,7 +84,9 @@ spring:
         dialect: org.hibernate.dialect.Oracle10gDialect
 ---
 spring:
-  profiles: prod
+  config:
+    activate:
+      on-profile: prod
   datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver