Browse Source

current traffic update

shjung 3 years ago
parent
commit
b477aca963

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

@@ -28,9 +28,11 @@ public class TbLinkController {
     public ResponseEntity<List<LinkDto.LinkInfo>> findAll() {
         List<Link> data = this.service.findAll();
         List<LinkDto.LinkInfo> result = new ArrayList<>();
+        //log.error("data: {} EA.", data.size());
         for (Link obj: data) {
             result.add(new LinkDto.LinkInfo(obj));
         }
+        //log.error("result: {} EA.", result.size());
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 

+ 53 - 0
src/main/java/com/its/op/controller/traffic/TbIfscTrafController.java

@@ -0,0 +1,53 @@
+package com.its.op.controller.traffic;
+
+import com.its.op.model.dto.IfscTrafDto;
+import com.its.op.model.entity.IfscTraf;
+import com.its.op.service.traffic.IfscTrafService;
+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;
+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 java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/tb-ifsc-traf")
+@Api(tags = "00.교통상황관리-1.현재소통정보조회-2.서비스링크소통정보", description="2.서비스링크소통정보")
+public class TbIfscTrafController {
+
+    private final IfscTrafService service;
+
+    @ApiOperation(value = "전체조회(TB_IFSC_TRAF)", response = IfscTrafDto.IfscTrafInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<IfscTrafDto.IfscTrafInfo>> findAll() {
+        List<IfscTraf> data = this.service.findAll();
+        List<IfscTrafDto.IfscTrafInfo> result = new ArrayList<>();
+        for (IfscTraf obj: data) {
+            if (obj.getIfsc().getDEL_YN().equals("Y")) {
+                continue;
+            }
+            result.add(new IfscTrafDto.IfscTrafInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "개별조회(TB_IFSC_TRAF)", response = IfscTrafDto.IfscTrafInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<IfscTrafDto.IfscTrafInfo> findById(@PathVariable final Long id) {
+        IfscTraf obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new IfscTrafDto.IfscTrafInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+}

+ 53 - 0
src/main/java/com/its/op/controller/traffic/TbLinkTrafController.java

@@ -0,0 +1,53 @@
+package com.its.op.controller.traffic;
+
+import com.its.op.model.dto.LinkTrafDto;
+import com.its.op.model.entity.LinkTraf;
+import com.its.op.service.traffic.LinkTrafService;
+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;
+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 java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/tb-link-traf")
+@Api(tags = "00.교통상황관리-1.현재소통정보조회-1.링크소통정보", description="1.링크소통정보")
+public class TbLinkTrafController {
+
+    private final LinkTrafService service;
+
+    @ApiOperation(value = "전체조회(TB_LINK_TRAF)", response = LinkTrafDto.LinkTrafInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkTrafDto.LinkTrafInfo>> findAll() {
+        List<LinkTraf> data = this.service.findAll();
+        List<LinkTrafDto.LinkTrafInfo> result = new ArrayList<>();
+        for (LinkTraf obj: data) {
+            if (obj.getLink().getDEL_YN().equals("Y")) {
+                continue;
+            }
+            result.add(new LinkTrafDto.LinkTrafInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "개별조회(TB_LINK_TRAF)", response = LinkTrafDto.LinkTrafInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkTrafDto.LinkTrafInfo> findById(@PathVariable final Long id) {
+        LinkTraf obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new LinkTrafDto.LinkTrafInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+}

+ 4 - 2
src/main/java/com/its/op/controller/traffic/TbRoadTrafController.java

@@ -1,6 +1,5 @@
 package com.its.op.controller.traffic;
 
-import com.its.op.model.dto.AtrdDto;
 import com.its.op.model.dto.RoadTrafDto;
 import com.its.op.model.entity.RoadTraf;
 import com.its.op.service.traffic.RoadTrafService;
@@ -33,12 +32,15 @@ public class TbRoadTrafController {
         List<RoadTraf> data = this.service.findAll();
         List<RoadTrafDto.RoadTrafInfo> result = new ArrayList<>();
         for (RoadTraf obj: data) {
+            if (obj.getRoad().getDEL_YN().equals("Y")) {
+                continue;
+            }
             result.add(new RoadTrafDto.RoadTrafInfo(obj));
         }
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "개별조회(TB_ROAD_TRAF)", response = AtrdDto.AtrdInfo.class)
+    @ApiOperation(value = "개별조회(TB_ROAD_TRAF)", response = RoadTrafDto.RoadTrafInfo.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<RoadTrafDto.RoadTrafInfo> findById(@PathVariable final Long id) {
         RoadTraf obj = this.service.findById(id);

+ 1 - 0
src/main/java/com/its/op/global/CodeManager.java

@@ -28,6 +28,7 @@ public class CodeManager {
 
     public static final String DAY_TYPE_CD          = "DTW";    // 요일유형
     public static final String CMTR_GRAD_CD         = "LTC";    // 소통등급
+    public static final String PRCN_SORC            = "CST";    // 가공소스
     public static final String ADJS_SORC            = "MCS";    // 보정소스
     public static final String NODE_TYPE            = "NDT";    // 노드유형
     public static final String ROAD_USE             = "RDU";    // 도로사용여부

+ 47 - 15
src/main/java/com/its/op/model/dto/IfscTrafDto.java

@@ -1,24 +1,56 @@
 package com.its.op.model.dto;
 
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import com.its.op.global.CodeManager;
+import com.its.op.model.entity.IfscTraf;
+import com.its.op.utils.ItsUtils;
+import lombok.Getter;
 
 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		데이터 개수
+    @Getter
+    public static class IfscTrafInfo {
+
+        private final Long    IFSC_ID;        //	N	NUMBER(10)	    N			정보제공구간 ID
+        private final String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+        private final Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+        private final Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+        private final Integer PTRN_SPED;      //	N	NUMBER(3)	    Y	0		패턴 속도
+        private final Double  OCPY_RATE;      //	N	NUMBER(5,2)	    Y	0		점유 율
+        private final Integer TRVL_HH;        //	N	NUMBER(6)	    Y	0		통행 시간
+        private final String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+        private final Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
+
+        private final String IFSC_NM;             // 구간 명
+        private final String STRT_NM;             // 시점 명
+        private final String END_NM;              // 종점 명
+        private final String DRCT_CD;             // 방향 코드
+        private final String MISS_YN;
+
+        private final String DRCT_CD_DESC;
+        private final String CMTR_GRAD_DESC;
+
+        public IfscTrafInfo(IfscTraf entity) {
+            this.IFSC_ID      = entity.getIFSC_ID();
+            this.PRCN_DT      = entity.getPRCN_DT();
+            this.TFVL         = entity.getTFVL();
+            this.SPED         = entity.getSPED();
+            this.PTRN_SPED    = entity.getPTRN_SPED();
+            this.OCPY_RATE    = entity.getOCPY_RATE();
+            this.TRVL_HH      = entity.getTRVL_HH();
+            this.CMTR_GRAD_CD = entity.getCMTR_GRAD_CD();
+            this.DATA_NUM     = entity.getDATA_NUM();
+
+            this.IFSC_NM      = entity.getIfsc().getIFSC_NM();
+            this.STRT_NM      = entity.getIfsc().getSTRT_NM();
+            this.END_NM       = entity.getIfsc().getEND_NM();
+            this.DRCT_CD      = entity.getIfsc().getDRCT_CD();
+            this.MISS_YN      = ItsUtils.getMissYn(this.PRCN_DT, this.CMTR_GRAD_CD);
+
+            this.DRCT_CD_DESC = CodeManager.getCodeDesc(CodeManager.DRCT_CD, this.DRCT_CD);
+            this.CMTR_GRAD_DESC = CodeManager.getCodeDesc(CodeManager.CMTR_GRAD_CD, this.CMTR_GRAD_CD);
+        }
+    }
 
 }

+ 9 - 3
src/main/java/com/its/op/model/dto/LinkDto.java

@@ -1,7 +1,6 @@
 package com.its.op.model.dto;
 
 import com.its.op.global.CodeManager;
-import com.its.op.global.NodeManager;
 import com.its.op.model.entity.Link;
 import lombok.*;
 
@@ -70,8 +69,15 @@ public class LinkDto implements Serializable {
             this.PARA_ID          = entity.getPARA_ID();
             this.DEL_YN           = entity.getDEL_YN();
 
-            this.FROM_NODE = NodeManager.getNodeName(this.F_NODE_ID);
-            this.TO_NODE = NodeManager.getNodeName(this.T_NODE_ID);
+            if (entity.getFromNode() != null) {
+                this.FROM_NODE = entity.getFromNode().getNODE_NAME();
+            }
+            else this.FROM_NODE = "?";
+
+            if (entity.getToNode() != null) {
+                this.TO_NODE = entity.getToNode().getNODE_NAME();
+            }
+            else this.TO_NODE = "?";
 
             this.ROAD_USE_DESC = CodeManager.getCodeDesc(CodeManager.ROAD_USE, this.ROAD_USE);
             this.ROAD_RANK_DESC = CodeManager.getCodeDesc(CodeManager.ROAD_RANK, this.ROAD_RANK);

+ 80 - 0
src/main/java/com/its/op/model/dto/LinkTrafDto.java

@@ -0,0 +1,80 @@
+package com.its.op.model.dto;
+
+import com.its.op.global.CodeManager;
+import com.its.op.model.entity.LinkTraf;
+import com.its.op.utils.ItsUtils;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+public class LinkTrafDto implements Serializable {
+
+    @Getter
+    public static class LinkTrafInfo {
+
+        private final Long    LINK_ID;         //	N	NUMBER(10)	    N			링크ID
+        private final String  PRCN_DT;         //	N	VARCHAR2(14)	Y			가공 일시
+        private final Integer TFVL;            //	N	NUMBER(6)	    Y	0		교통량
+        private final Integer SPED;            //	N	NUMBER(3)	    Y	0		속도
+        private final Double  OCPY_RATE;       //	N	NUMBER(5,2)	    Y	0		점유 율
+        private final Integer TRVL_HH;         //	N	NUMBER(6)	    Y	0		통행 시간
+        private final String  CMTR_GRAD_CD;    //	N	VARCHAR2(7)	    Y			소통 등급 코드
+        private final String  MISS_YN;         //	N	CHAR(1)	        Y	'N'		결측 여부
+        private final Integer PRCN_SPED;       //	N	NUMBER(3)	    Y	0		가공 속도
+        private final Integer SMTH_SPED;       //	N	NUMBER(3)	    Y	0		평활화 속도
+        private final Integer ADJS_SPED;       //	N	NUMBER(3)	    Y	0		보정 속도
+        private final Integer PTRN_SPED;       //	N	NUMBER(3)	    Y	0		패턴 속도
+        private final String  PRCN_SORC;       //	N	VARCHAR2(7)	    Y			가공 소스
+        private final String  ADJS_SORC;       //	N	VARCHAR2(7)	    Y			보정 소스
+        private final Integer DATA_NUM;        //	N	NUMBER(3)	    Y	0		데이터 개수
+
+        private final String CMTR_GRAD_DESC;
+
+        private final Long   F_NODE_ID;       // 시작 노드 ID
+        private final String F_NODE_NM;       // 시작 노드 명
+        private final Long   T_NODE_ID;       // 종료 노드 ID
+        private final String T_NODE_NM;       // 종료 노드 명
+
+        //private String MISS_YN_DESC;        // 결측 여부 설명
+        private final String PRCN_SORC_DESC;      // 가공 소스 설명
+        private final String ADJS_SORC_DESC;      // 보정 소스 설명
+
+        public LinkTrafInfo(LinkTraf entity) {
+
+            this.LINK_ID      = entity.getLINK_ID();
+            this.PRCN_DT      = entity.getPRCN_DT();
+            this.TFVL         = entity.getTFVL();
+            this.SPED         = entity.getSPED();
+            this.OCPY_RATE    = entity.getOCPY_RATE();
+            this.TRVL_HH      = entity.getTRVL_HH();
+            this.CMTR_GRAD_CD = entity.getCMTR_GRAD_CD();
+            //this.MISS_YN      = entity.getMISS_YN();
+            this.PRCN_SPED    = entity.getPRCN_SPED();
+            this.SMTH_SPED    = entity.getSMTH_SPED();
+            this.ADJS_SPED    = entity.getADJS_SPED();
+            this.PTRN_SPED    = entity.getPTRN_SPED();
+            this.PRCN_SORC    = entity.getPRCN_SORC();
+            this.ADJS_SORC    = entity.getADJS_SORC();
+            this.DATA_NUM     = entity.getDATA_NUM();
+
+            this.MISS_YN = entity.getMISS_YN().equals("N") ? ItsUtils.getMissYn(this.PRCN_DT, this.CMTR_GRAD_CD) : "Y";
+
+            this.F_NODE_ID      = entity.getLink().getF_NODE();
+            this.T_NODE_ID      = entity.getLink().getT_NODE();
+            if (entity.getLink().getFromNode() != null) {
+                this.F_NODE_NM = entity.getLink().getFromNode().getNODE_NAME();
+            }
+            else this.F_NODE_NM = "?";
+
+            if (entity.getLink().getToNode() != null) {
+                this.T_NODE_NM = entity.getLink().getToNode().getNODE_NAME();
+            }
+            else this.T_NODE_NM = "?";
+
+            this.CMTR_GRAD_DESC = CodeManager.getCodeDesc(CodeManager.CMTR_GRAD_CD, this.CMTR_GRAD_CD);
+            this.PRCN_SORC_DESC = CodeManager.getCodeDesc(CodeManager.PRCN_SORC, this.PRCN_SORC);
+            this.ADJS_SORC_DESC = CodeManager.getCodeDesc(CodeManager.ADJS_SORC, this.ADJS_SORC);
+        }
+    }
+
+}

+ 3 - 3
src/main/java/com/its/op/model/dto/RoadTrafDto.java

@@ -21,15 +21,15 @@ public class RoadTrafDto implements Serializable {
         private final String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
         private final Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
 
-        private final String DRCT_CD_DESC;
-        private final String CMTR_GRAD_DESC;
-
         private final String ROAD_NAME;       // 도로 명
         private final String STRT_NM;         // 시점 명
         private final String END_NM;          // 종점 명
         private final String DRCT_CD;         // 방향 코드
         private final String MISS_YN;
 
+        private final String DRCT_CD_DESC;
+        private final String CMTR_GRAD_DESC;
+
         public RoadTrafInfo(RoadTraf entity) {
             this.ROAD_ID      = entity.getROAD_ID();
             this.PRCN_DT      = entity.getPRCN_DT();

+ 12 - 19
src/main/java/com/its/op/model/entity/IfscTraf.java

@@ -1,11 +1,12 @@
 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 org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 
@@ -16,7 +17,6 @@ import javax.persistence.*;
 @AllArgsConstructor
 @Entity
 @Table(name = "TB_IFSC_TRAF")
-//@IdClass(IfscKey.class)
 public class IfscTraf {
 
     @Id
@@ -24,30 +24,23 @@ public class IfscTraf {
     private Long    IFSC_ID;        //	N	NUMBER(10)	    N			정보제공구간 ID
     @Column(nullable = false, length = 14)
     private String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+    @Column(length = 6)
     private Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+    @Column(length = 3)
     private Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+    @Column(length = 3)
     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		점유 율
+    @Column(length = 6)
     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			소통 등급 코드
+    @Column(length = 7)
     private String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
-
+    @Column(length = 3)
     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;*/
-
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="IFSC_ID", referencedColumnName = "IFSC_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private Ifsc ifsc = new Ifsc();
 }

+ 12 - 5
src/main/java/com/its/op/model/entity/Link.java

@@ -5,14 +5,11 @@ 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 org.hibernate.annotations.*;
 
-import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.persistence.*;
 
 @DynamicInsert
 @DynamicUpdate
@@ -74,6 +71,16 @@ public class Link {
     @ColumnDefault(value = "N")
     private String  DEL_YN;              //	N	CHAR(1)	        Y	'N'		삭제 여부
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="F_NODE", referencedColumnName = "NODE_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private Node fromNode = new Node();
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="T_NODE", referencedColumnName = "NODE_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private Node toNode = new Node();
+
     public void updateName(LinkDto.LinkNameUpdateReq req) {
         this.ROAD_NAME = req.getROAD_NAME();
     }

+ 66 - 0
src/main/java/com/its/op/model/entity/LinkTraf.java

@@ -0,0 +1,66 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LINK_TRAF")
+public class LinkTraf {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    LINK_ID;         //	N	NUMBER(10)	    N			링크ID
+    @Column(nullable = false, length = 14)
+    private String  PRCN_DT;         //	N	VARCHAR2(14)	Y			가공 일시
+    @Column(length = 6)
+    private Integer TFVL;            //	N	NUMBER(6)	    Y	0		교통량
+    @Column(length = 3)
+    private Integer SPED;            //	N	NUMBER(3)	    Y	0		속도
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  OCPY_RATE;       //	N	NUMBER(5,2)	    Y	0		점유 율
+    @Column(length = 6)
+    private Integer TRVL_HH;         //	N	NUMBER(6)	    Y	0		통행 시간
+    @Column(length = 7)
+    private String  CMTR_GRAD_CD;    //	N	VARCHAR2(7)	    Y			소통 등급 코드
+    @Column(columnDefinition = "CHAR", length = 1)
+    private String  MISS_YN;         //	N	CHAR(1)	        Y	'N'		결측 여부
+    @Column(length = 3)
+    private Integer PRCN_SPED;       //	N	NUMBER(3)	    Y	0		가공 속도
+    @Column(length = 3)
+    private Integer SMTH_SPED;       //	N	NUMBER(3)	    Y	0		평활화 속도
+    @Column(length = 3)
+    private Integer ADJS_SPED;       //	N	NUMBER(3)	    Y	0		보정 속도
+    @Column(length = 3)
+    private Integer PTRN_SPED;       //	N	NUMBER(3)	    Y	0		패턴 속도
+    @Column(length = 7)
+    private String  PRCN_SORC;       //	N	VARCHAR2(7)	    Y			가공 소스
+    @Column(length = 7)
+    private String  ADJS_SORC;       //	N	VARCHAR2(7)	    Y			보정 소스
+    @Column(length = 3)
+    private Integer DATA_NUM;        //	N	NUMBER(3)	    Y	0		데이터 개수
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="LINK_ID", referencedColumnName = "LINK_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private Link link = new Link();
+/*
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="LINK_ID", referencedColumnName = "LINK_ID")
+    private Node from_node = new Node();
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="LINK_ID", referencedColumnName = "LINK_ID")
+    private Node to_node = new Node();*/
+}

+ 3 - 0
src/main/java/com/its/op/model/entity/RoadTraf.java

@@ -6,6 +6,8 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import org.hibernate.annotations.DynamicInsert;
 import org.hibernate.annotations.DynamicUpdate;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 
@@ -41,5 +43,6 @@ public class RoadTraf {
 
     @OneToOne
     @JoinColumn(insertable=false, updatable=false, name="ROAD_ID", referencedColumnName = "ROAD_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
     private Road road = new Road();
 }

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

@@ -2,8 +2,14 @@ package com.its.op.repository;
 
 import com.its.op.model.entity.IfscTraf;
 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 IfscTrafRepository extends JpaRepository<IfscTraf, Long> {
+
+    @Query(value = "select distinct p from IfscTraf p inner join fetch p.ifsc")
+    List<IfscTraf> findAll();
 }

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

@@ -2,8 +2,14 @@ package com.its.op.repository;
 
 import com.its.op.model.entity.Link;
 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 LinkRepository extends JpaRepository<Link, Long> {
+
+    @Query(value = "select distinct p from Link p inner join fetch p.fromNode inner join fetch p.toNode")
+    List<Link> findAll();
 }

+ 15 - 0
src/main/java/com/its/op/repository/LinkTrafRepository.java

@@ -0,0 +1,15 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.LinkTraf;
+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 LinkTrafRepository extends JpaRepository<LinkTraf, Long> {
+
+    @Query(value = "select distinct p from LinkTraf p inner join fetch p.link m join fetch m.fromNode join fetch m.toNode")
+    List<LinkTraf> findAll();
+}

+ 1 - 1
src/main/java/com/its/op/repository/RoadTrafRepository.java

@@ -10,6 +10,6 @@ import java.util.List;
 @Repository
 public interface RoadTrafRepository extends JpaRepository<RoadTraf, Long> {
 
-    @Query(value = "select distinct p from RoadTraf p inner join p.road")
+    @Query(value = "select distinct p from RoadTraf p inner join fetch p.road")
     List<RoadTraf> findAll();
 }

+ 42 - 0
src/main/java/com/its/op/service/traffic/IfscTrafService.java

@@ -0,0 +1,42 @@
+package com.its.op.service.traffic;
+
+import com.its.op.model.entity.IfscTraf;
+import com.its.op.repository.IfscTrafRepository;
+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 IfscTrafService {
+
+    private final IfscTrafRepository repo;
+
+    public List<IfscTraf> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<IfscTraf>();
+    }
+    public IfscTraf findById(Long id) {
+        try {
+            Optional<IfscTraf> 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;
+    }
+
+}

+ 42 - 0
src/main/java/com/its/op/service/traffic/LinkTrafService.java

@@ -0,0 +1,42 @@
+package com.its.op.service.traffic;
+
+import com.its.op.model.entity.LinkTraf;
+import com.its.op.repository.LinkTrafRepository;
+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 LinkTrafService {
+
+    private final LinkTrafRepository repo;
+
+    public List<LinkTraf> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<LinkTraf>();
+    }
+    public LinkTraf findById(Long id) {
+        try {
+            Optional<LinkTraf> 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;
+    }
+
+}