소스 검색

scrs mngr

shjung 2 년 전
부모
커밋
144510f955
19개의 변경된 파일1288개의 추가작업 그리고 7개의 파일을 삭제
  1. 72 0
      src/main/java/com/its/op/controller/its/scrs/TbScIxrGemtMngmController.java
  2. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScIxrGropMngmController.java
  3. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScIxrPhasController.java
  4. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScPstnIxrMngmController.java
  5. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScSgnlIxrMngmController.java
  6. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScSpclDdHmsCntlController.java
  7. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScTodCnfgController.java
  8. 72 0
      src/main/java/com/its/op/controller/its/scrs/TbScTrfcCndtMngmController.java
  9. 1 1
      src/main/java/com/its/op/controller/its/scrs/TbScWeekHmsCntlController.java
  10. 21 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScIxrGemtMngmRepository.java
  11. 21 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScTrfcCndtMngmRepository.java
  12. 243 0
      src/main/java/com/its/op/dto/its/scrs/TbScIxrGemtMngmDto.java
  13. 264 0
      src/main/java/com/its/op/dto/its/scrs/TbScTrfcCndtMngmDto.java
  14. 149 0
      src/main/java/com/its/op/entity/its/scrs/TbScIxrGemtMngm.java
  15. 24 0
      src/main/java/com/its/op/entity/its/scrs/TbScIxrGemtMngmKey.java
  16. 161 0
      src/main/java/com/its/op/entity/its/scrs/TbScTrfcCndtMngm.java
  17. 24 0
      src/main/java/com/its/op/entity/its/scrs/TbScTrfcCndtMngmKey.java
  18. 115 0
      src/main/java/com/its/op/service/its/scrs/TbScIxrGemtMngmService.java
  19. 115 0
      src/main/java/com/its/op/service/its/scrs/TbScTrfcCndtMngmService.java

+ 72 - 0
src/main/java/com/its/op/controller/its/scrs/TbScIxrGemtMngmController.java

@@ -0,0 +1,72 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScIxrGemtMngmDto;
+import com.its.op.entity.its.scrs.TbScIxrGemtMngmKey;
+import com.its.op.service.its.scrs.TbScIxrGemtMngmService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "14.스마트교차로-0.관리-2.교차로 기하구조 관리-2.교차로 기하구조 설정")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_ixr_gemt_mngm")
+public class TbScIxrGemtMngmController {
+
+    private final TbScIxrGemtMngmService service;
+
+    @ApiOperation(value = "교차로 기하구조 관리 전체조회(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrGemtMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 전체조회(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrGemtMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 개별조회(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class)
+    @GetMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScIxrGemtMngmDto findById(@PathVariable("ixrId") final TbScIxrGemtMngmKey ixrId) {
+        return this.service.findById(ixrId);
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 정보변경(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class)
+    @PutMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScIxrGemtMngmDto updateById(@PathVariable("ixrId") final TbScIxrGemtMngmKey ixrId, @RequestBody @Valid final TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req) {
+        return this.service.updateById(ixrId, req);
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 정보변경/생성-목록(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrGemtMngmDto> mergeInfoList(@RequestBody @Valid final List<TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 정보변경/생성-개별(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class)
+    @PostMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScIxrGemtMngmDto mergeInfo(@PathVariable("ixrId") final TbScIxrGemtMngmKey ixrId, @RequestBody @Valid final TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 정보삭제-개별(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class)
+    @DeleteMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScIxrGemtMngmDto deleteDataById(@PathVariable("ixrId") final TbScIxrGemtMngmKey ixrId) {
+        return this.service.deleteById(ixrId);
+    }
+
+    @ApiOperation(value = "교차로 기하구조 관리 정보삭제-목록(TB_SC_IXR_GEMT_MNGM)", response = TbScIxrGemtMngmDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrGemtMngmDto> deleteDataByIds(@RequestBody @Valid final List<TbScIxrGemtMngmKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScIxrGropMngmController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-3.신호교차로 그룹-0.그룹")
+@Api(tags = "14.스마트교차로-0.관리-4.신호교차로 그룹-0.그룹")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScIxrPhasController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-1.현시구성정보")
+@Api(tags = "14.스마트교차로-0.관리-3.신호교차로-1.현시구성정보")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScPstnIxrMngmController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-3.신호교차로 그룹-1.그룹소속교차료")
+@Api(tags = "14.스마트교차로-0.관리-4.신호교차로 그룹-1.그룹소속교차료")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScSgnlIxrMngmController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-0.교차로")
+@Api(tags = "14.스마트교차로-0.관리-3.신호교차로-0.신호교차로")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScSpclDdHmsCntlController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-3.신호교차로 그룹-4.특수일 시각 제어")
+@Api(tags = "14.스마트교차로-0.관리-4.신호교차로 그룹-3.특수일 시각 제어")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScTodCnfgController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-2.일일 시각 제어")
+@Api(tags = "14.스마트교차로-0.관리-3.신호교차로-2.일일 시각 제어")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 72 - 0
src/main/java/com/its/op/controller/its/scrs/TbScTrfcCndtMngmController.java

@@ -0,0 +1,72 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScTrfcCndtMngmDto;
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngmKey;
+import com.its.op.service.its.scrs.TbScTrfcCndtMngmService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "14.스마트교차로-0.관리-2.교차로 기하구조 관리-1.교통 조건 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_trfc_cndt_mngm")
+public class TbScTrfcCndtMngmController {
+
+    private final TbScTrfcCndtMngmService service;
+
+    @ApiOperation(value = "교통 조건 관리 전체조회(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScTrfcCndtMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "교통 조건 관리 전체조회(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScTrfcCndtMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "교통 조건 관리 개별조회(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class)
+    @GetMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScTrfcCndtMngmDto findById(@PathVariable("ixrId") final TbScTrfcCndtMngmKey ixrId) {
+        return this.service.findById(ixrId);
+    }
+
+    @ApiOperation(value = "교통 조건 관리 정보변경(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class)
+    @PutMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScTrfcCndtMngmDto updateById(@PathVariable("ixrId") final TbScTrfcCndtMngmKey ixrId, @RequestBody @Valid final TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req) {
+        return this.service.updateById(ixrId, req);
+    }
+
+    @ApiOperation(value = "교통 조건 관리 정보변경/생성-목록(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScTrfcCndtMngmDto> mergeInfoList(@RequestBody @Valid final List<TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "교통 조건 관리 정보변경/생성-개별(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class)
+    @PostMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScTrfcCndtMngmDto mergeInfo(@PathVariable("ixrId") final TbScTrfcCndtMngmKey ixrId, @RequestBody @Valid final TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "교통 조건 관리 정보삭제-개별(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class)
+    @DeleteMapping(value = "/{ixrId}", produces = {"application/json; charset=utf8"})
+    public TbScTrfcCndtMngmDto deleteDataById(@PathVariable("ixrId") final TbScTrfcCndtMngmKey ixrId) {
+        return this.service.deleteById(ixrId);
+    }
+
+    @ApiOperation(value = "교통 조건 관리 정보삭제-목록(TB_SC_TRFC_CNDT_MNGM)", response = TbScTrfcCndtMngmDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScTrfcCndtMngmDto> deleteDataByIds(@RequestBody @Valid final List<TbScTrfcCndtMngmKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 1 - 1
src/main/java/com/its/op/controller/its/scrs/TbScWeekHmsCntlController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
-@Api(tags = "14.스마트교차로-0.관리-3.신호교차로 그룹-3.주간 시각 제어")
+@Api(tags = "14.스마트교차로-0.관리-4.신호교차로 그룹-2.주간 시각 제어")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 21 - 0
src/main/java/com/its/op/dao/repository/its/scrs/TbScIxrGemtMngmRepository.java

@@ -0,0 +1,21 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScIxrGemtMngm;
+import com.its.op.entity.its.scrs.TbScIxrGemtMngmKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface TbScIxrGemtMngmRepository extends JpaRepository<TbScIxrGemtMngm, TbScIxrGemtMngmKey>, JpaSpecificationExecutor<TbScIxrGemtMngm> {
+
+    @Query("select p from TbScIxrGemtMngm p")
+    List<TbScIxrGemtMngm> findAll();
+
+    @Query("select p from TbScIxrGemtMngm p")
+    List<TbScIxrGemtMngm> findAllList();
+
+}

+ 21 - 0
src/main/java/com/its/op/dao/repository/its/scrs/TbScTrfcCndtMngmRepository.java

@@ -0,0 +1,21 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngm;
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngmKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface TbScTrfcCndtMngmRepository extends JpaRepository<TbScTrfcCndtMngm, TbScTrfcCndtMngmKey>, JpaSpecificationExecutor<TbScTrfcCndtMngm> {
+
+    @Query("select p from TbScTrfcCndtMngm p")
+    List<TbScTrfcCndtMngm> findAll();
+
+    @Query("select p from TbScTrfcCndtMngm p")
+    List<TbScTrfcCndtMngm> findAllList();
+
+}

+ 243 - 0
src/main/java/com/its/op/dto/its/scrs/TbScIxrGemtMngmDto.java

@@ -0,0 +1,243 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScIxrGemtMngm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 교차로 기하구조 관리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScIxrGemtMngmDto(교차로 기하구조 관리)")
+public class TbScIxrGemtMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 ID")  // N VARCHAR2(10)
+    @JsonProperty("ixr_id")
+    private String ixrId;
+
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)")  // N NUMBER(1)
+    @JsonProperty("drct_dvsn_cd")
+    private Integer drctDvsnCd;
+
+    @ApiModelProperty("접근로 전체 차로 수")  // Y NUMBER(1)
+    @JsonProperty("acrd_whol_lane_cnt")
+    private Integer acrdWholLaneCnt;
+
+    @ApiModelProperty("좌회전 형태")  // Y NUMBER(1)
+    @JsonProperty("left_shpe")
+    private Integer leftShpe;
+
+    @ApiModelProperty("우회전 형태")  // Y NUMBER(1)
+    @JsonProperty("rght_shpe")
+    private Integer rghtShpe;
+
+    @ApiModelProperty("좌회전 전용 차로 수")  // Y NUMBER(1)
+    @JsonProperty("left_dvrs_lane_cnt")
+    private Integer leftDvrsLaneCnt;
+
+    @ApiModelProperty("직진 전용 차로 수")  // Y NUMBER(1)
+    @JsonProperty("go_dvrs_lane_cnt")
+    private Integer goDvrsLaneCnt;
+
+    @ApiModelProperty("우회전 전용 차로 수")  // Y NUMBER(1)
+    @JsonProperty("rght_dvrs_lane_cnt")
+    private Integer rghtDvrsLaneCnt;
+
+    @ApiModelProperty("좌회전 차로 수")  // Y NUMBER(1)
+    @JsonProperty("left_lane_cnt")
+    private Integer leftLaneCnt;
+
+    @ApiModelProperty("우회전 차로 수")  // Y NUMBER(1)
+    @JsonProperty("rght_lane_cnt")
+    private Integer rghtLaneCnt;
+
+    @ApiModelProperty("방향 X 좌표")  // Y VARCHAR2(20)
+    @JsonProperty("drct_x_crdn")
+    private String drctXCrdn;
+
+    @ApiModelProperty("방향 Y 좌표")  // Y VARCHAR2(20)
+    @JsonProperty("drct_y_crdn")
+    private String drctYCrdn;
+
+    @ApiModelProperty("비보호 좌회전")  // Y NUMBER(1)
+    @JsonProperty("uprt_left")
+    private Integer uprtLeft;
+
+    @ApiModelProperty("옵셋")  // Y NUMBER(3)
+    @JsonProperty("ofst")
+    private Integer ofst;
+
+    @ApiModelProperty("비보호 좌회전 차량 대수")  // Y NUMBER(4)
+    @JsonProperty("uprt_left_vhcl_unum")
+    private Integer uprtLeftVhclUnum;
+
+    @ApiModelProperty("신호 운영 형태(0:양방향보호좌회전, 1:직좌동시신호, 2:비보호좌회전)")  // Y NUMBER(1)
+    @JsonProperty("sgnl_oper_shpe")
+    private Integer sgnlOperShpe;
+
+    @ApiModelProperty("버스 전용 차로 수")  // Y NUMBER(1)
+    @JsonProperty("bus_dvrs_lane_cnt")
+    private Integer busDvrsLaneCnt;
+
+    @ApiModelProperty("버스 전용 차로 유형")  // Y NUMBER(1)
+    @JsonProperty("bus_dvrs_lane_type")
+    private Integer busDvrsLaneType;
+
+    // Code Description Field
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서) 설명")
+    @JsonProperty("drct_dvsn_desc")    // DRCT_DVSN_CD
+    private String drctDvsnDesc;
+
+    @ApiModel("TbScIxrGemtMngmUpdReq(교차로 기하구조 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScIxrGemtMngmUpdReq {
+
+        @ApiModelProperty("교차로 ID, Nullable = N, VARCHAR2(10)")  // N VARCHAR2(10)
+        @JsonProperty("ixr_id")
+        @Size(min=1, max=10)
+        private String ixrId;
+
+        @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서), Nullable = N, NUMBER(1)")  // N NUMBER(1)
+        @JsonProperty("drct_dvsn_cd")
+        @PositiveOrZero
+        private Integer drctDvsnCd;
+
+        @ApiModelProperty("접근로 전체 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("acrd_whol_lane_cnt")
+        @PositiveOrZero
+        private Integer acrdWholLaneCnt;
+
+        @ApiModelProperty("좌회전 형태, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("left_shpe")
+        @PositiveOrZero
+        private Integer leftShpe;
+
+        @ApiModelProperty("우회전 형태, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("rght_shpe")
+        @PositiveOrZero
+        private Integer rghtShpe;
+
+        @ApiModelProperty("좌회전 전용 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("left_dvrs_lane_cnt")
+        @PositiveOrZero
+        private Integer leftDvrsLaneCnt;
+
+        @ApiModelProperty("직진 전용 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("go_dvrs_lane_cnt")
+        @PositiveOrZero
+        private Integer goDvrsLaneCnt;
+
+        @ApiModelProperty("우회전 전용 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("rght_dvrs_lane_cnt")
+        @PositiveOrZero
+        private Integer rghtDvrsLaneCnt;
+
+        @ApiModelProperty("좌회전 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("left_lane_cnt")
+        @PositiveOrZero
+        private Integer leftLaneCnt;
+
+        @ApiModelProperty("우회전 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("rght_lane_cnt")
+        @PositiveOrZero
+        private Integer rghtLaneCnt;
+
+        @ApiModelProperty("방향 X 좌표, Nullable = Y, VARCHAR2(20)")  // Y VARCHAR2(20)
+        @JsonProperty("drct_x_crdn")
+        @Size(min=1, max=20)
+        private String drctXCrdn;
+
+        @ApiModelProperty("방향 Y 좌표, Nullable = Y, VARCHAR2(20)")  // Y VARCHAR2(20)
+        @JsonProperty("drct_y_crdn")
+        @Size(min=1, max=20)
+        private String drctYCrdn;
+
+        @ApiModelProperty("비보호 좌회전, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("uprt_left")
+        @PositiveOrZero
+        private Integer uprtLeft;
+
+        @ApiModelProperty("옵셋, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("ofst")
+        @PositiveOrZero
+        private Integer ofst;
+
+        @ApiModelProperty("비보호 좌회전 차량 대수, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("uprt_left_vhcl_unum")
+        @PositiveOrZero
+        private Integer uprtLeftVhclUnum;
+
+        @ApiModelProperty("신호 운영 형태(0:양방향보호좌회전, 1:직좌동시신호, 2:비보호좌회전), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("sgnl_oper_shpe")
+        @PositiveOrZero
+        private Integer sgnlOperShpe;
+
+        @ApiModelProperty("버스 전용 차로 수, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("bus_dvrs_lane_cnt")
+        @PositiveOrZero
+        private Integer busDvrsLaneCnt;
+
+        @ApiModelProperty("버스 전용 차로 유형, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("bus_dvrs_lane_type")
+        @PositiveOrZero
+        private Integer busDvrsLaneType;
+
+        @Builder
+        public TbScIxrGemtMngmUpdReq(String ixr_id, Integer drct_dvsn_cd, Integer acrd_whol_lane_cnt, Integer left_shpe, Integer rght_shpe, Integer left_dvrs_lane_cnt, Integer go_dvrs_lane_cnt, Integer rght_dvrs_lane_cnt, Integer left_lane_cnt, Integer rght_lane_cnt, String drct_x_crdn, String drct_y_crdn, Integer uprt_left, Integer ofst, Integer uprt_left_vhcl_unum, Integer sgnl_oper_shpe, Integer bus_dvrs_lane_cnt, Integer bus_dvrs_lane_type) {
+            this.ixrId = ixr_id;
+            this.drctDvsnCd = drct_dvsn_cd;
+            this.acrdWholLaneCnt = acrd_whol_lane_cnt;
+            this.leftShpe = left_shpe;
+            this.rghtShpe = rght_shpe;
+            this.leftDvrsLaneCnt = left_dvrs_lane_cnt;
+            this.goDvrsLaneCnt = go_dvrs_lane_cnt;
+            this.rghtDvrsLaneCnt = rght_dvrs_lane_cnt;
+            this.leftLaneCnt = left_lane_cnt;
+            this.rghtLaneCnt = rght_lane_cnt;
+            this.drctXCrdn = drct_x_crdn;
+            this.drctYCrdn = drct_y_crdn;
+            this.uprtLeft = uprt_left;
+            this.ofst = ofst;
+            this.uprtLeftVhclUnum = uprt_left_vhcl_unum;
+            this.sgnlOperShpe = sgnl_oper_shpe;
+            this.busDvrsLaneCnt = bus_dvrs_lane_cnt;
+            this.busDvrsLaneType = bus_dvrs_lane_type;
+        }
+
+        public TbScIxrGemtMngm toEntity() {
+            return TbScIxrGemtMngm.builder()
+                    .ixrId(this.ixrId)
+                    .drctDvsnCd(this.drctDvsnCd)
+                    .acrdWholLaneCnt(this.acrdWholLaneCnt)
+                    .leftShpe(this.leftShpe)
+                    .rghtShpe(this.rghtShpe)
+                    .leftDvrsLaneCnt(this.leftDvrsLaneCnt)
+                    .goDvrsLaneCnt(this.goDvrsLaneCnt)
+                    .rghtDvrsLaneCnt(this.rghtDvrsLaneCnt)
+                    .leftLaneCnt(this.leftLaneCnt)
+                    .rghtLaneCnt(this.rghtLaneCnt)
+                    .drctXCrdn(this.drctXCrdn)
+                    .drctYCrdn(this.drctYCrdn)
+                    .uprtLeft(this.uprtLeft)
+                    .ofst(this.ofst)
+                    .uprtLeftVhclUnum(this.uprtLeftVhclUnum)
+                    .sgnlOperShpe(this.sgnlOperShpe)
+                    .busDvrsLaneCnt(this.busDvrsLaneCnt)
+                    .busDvrsLaneType(this.busDvrsLaneType)
+                    .build();
+        }
+
+    }
+
+}

+ 264 - 0
src/main/java/com/its/op/dto/its/scrs/TbScTrfcCndtMngmDto.java

@@ -0,0 +1,264 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 교통 조건 관리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScTrfcCndtMngmDto(교통 조건 관리)")
+public class TbScTrfcCndtMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 ID")  // N VARCHAR2(10)
+    @JsonProperty("ixr_id")
+    private String ixrId;
+
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)")  // N NUMBER(1)
+    @JsonProperty("drct_dvsn_cd")
+    private Integer drctDvsnCd;
+
+    @ApiModelProperty("버스 베이 유무")  // Y VARCHAR2(1)
+    @JsonProperty("bus_bay_en")
+    private String busBayEn;
+
+    @ApiModelProperty("노상 주차 유무")  // Y VARCHAR2(1)
+    @JsonProperty("stre_park_en")
+    private String streParkEn;
+
+    @ApiModelProperty("상류 링크 길이")  // Y NUMBER(3)
+    @JsonProperty("upst_link_lngt")
+    private Integer upstLinkLngt;
+
+    @ApiModelProperty("경사")  // Y NUMBER(3)
+    @JsonProperty("hpev")
+    private Integer hpev;
+
+    @ApiModelProperty("좌회전 곡선 반경")  // Y NUMBER(3)
+    @JsonProperty("left_curv_rads")
+    private Integer leftCurvRads;
+
+    @ApiModelProperty("평균 차로폭")  // Y NUMBER(3,1)
+    @JsonProperty("avrg_lawh")
+    private Double avrgLawh;
+
+    @ApiModelProperty("버스 정류장 거리")  // Y NUMBER(3)
+    @JsonProperty("bus_sttn_dstc")
+    private Integer busSttnDstc;
+
+    @ApiModelProperty("첨두 시간 계수")  // Y NUMBER(2)
+    @JsonProperty("peak_hh_fctr")
+    private Integer peakHhFctr;
+
+    @ApiModelProperty("U 턴 교통량")  // Y NUMBER(4)
+    @JsonProperty("u_turn_tfvl")
+    private Integer uTurnTfvl;
+
+    @ApiModelProperty("진입 교통량")  // Y NUMBER(4)
+    @JsonProperty("entr_tfvl")
+    private Integer entrTfvl;
+
+    @ApiModelProperty("진출 교통량")  // Y NUMBER(4)
+    @JsonProperty("exit_tfvl")
+    private Integer exitTfvl;
+
+    @ApiModelProperty("주차 활동 대수")  // Y NUMBER(4)
+    @JsonProperty("park_actn_unum")
+    private Integer parkActnUnum;
+
+    @ApiModelProperty("횡단 보행 수")  // Y NUMBER(4)
+    @JsonProperty("cros_walk_cnt")
+    private Integer crosWalkCnt;
+
+    @ApiModelProperty("순행 속도")  // Y NUMBER(3)
+    @JsonProperty("crus_sped")
+    private Integer crusSped;
+
+    @ApiModelProperty("초기 대기 차량 대수")  // Y NUMBER(4)
+    @JsonProperty("intl_atmp_vhcl_unum")
+    private Integer intlAtmpVhclUnum;
+
+    @ApiModelProperty("보행 신호 시간")  // Y NUMBER(3)
+    @JsonProperty("walk_sgnl_hh")
+    private Integer walkSgnlHh;
+
+    @ApiModelProperty("버스 정차 대수")  // Y NUMBER(4)
+    @JsonProperty("bus_stop_unum")
+    private Integer busStopUnum;
+
+    @ApiModelProperty("상류 정류장 이격 거리")  // Y NUMBER(3)
+    @JsonProperty("upst_sttn_dstc")
+    private Integer upstSttnDstc;
+
+    // Code Description Field
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서) 설명")
+    @JsonProperty("drct_dvsn_desc")    // DRCT_DVSN_CD
+    private String drctDvsnDesc;
+
+    @ApiModel("TbScTrfcCndtMngmUpdReq(교통 조건 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScTrfcCndtMngmUpdReq {
+
+        @ApiModelProperty("교차로 ID, Nullable = N, VARCHAR2(10)")  // N VARCHAR2(10)
+        @JsonProperty("ixr_id")
+        @Size(min=1, max=10)
+        private String ixrId;
+
+        @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서), Nullable = N, NUMBER(1)")  // N NUMBER(1)
+        @JsonProperty("drct_dvsn_cd")
+        @PositiveOrZero
+        private Integer drctDvsnCd;
+
+        @ApiModelProperty("버스 베이 유무, Nullable = Y, VARCHAR2(1)")  // Y VARCHAR2(1)
+        @JsonProperty("bus_bay_en")
+        @Size(min=1, max=1)
+        private String busBayEn;
+
+        @ApiModelProperty("노상 주차 유무, Nullable = Y, VARCHAR2(1)")  // Y VARCHAR2(1)
+        @JsonProperty("stre_park_en")
+        @Size(min=1, max=1)
+        private String streParkEn;
+
+        @ApiModelProperty("상류 링크 길이, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("upst_link_lngt")
+        @PositiveOrZero
+        private Integer upstLinkLngt;
+
+        @ApiModelProperty("경사, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("hpev")
+        @PositiveOrZero
+        private Integer hpev;
+
+        @ApiModelProperty("좌회전 곡선 반경, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("left_curv_rads")
+        @PositiveOrZero
+        private Integer leftCurvRads;
+
+        @ApiModelProperty("평균 차로폭, , NUMBER(3,1)")  // Y NUMBER(3,1)
+        @JsonProperty("avrg_lawh")
+        private Double avrgLawh;
+
+        @ApiModelProperty("버스 정류장 거리, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bus_sttn_dstc")
+        @PositiveOrZero
+        private Integer busSttnDstc;
+
+        @ApiModelProperty("첨두 시간 계수, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("peak_hh_fctr")
+        @PositiveOrZero
+        private Integer peakHhFctr;
+
+        @ApiModelProperty("U 턴 교통량, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("u_turn_tfvl")
+        @PositiveOrZero
+        private Integer uTurnTfvl;
+
+        @ApiModelProperty("진입 교통량, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("entr_tfvl")
+        @PositiveOrZero
+        private Integer entrTfvl;
+
+        @ApiModelProperty("진출 교통량, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("exit_tfvl")
+        @PositiveOrZero
+        private Integer exitTfvl;
+
+        @ApiModelProperty("주차 활동 대수, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("park_actn_unum")
+        @PositiveOrZero
+        private Integer parkActnUnum;
+
+        @ApiModelProperty("횡단 보행 수, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("cros_walk_cnt")
+        @PositiveOrZero
+        private Integer crosWalkCnt;
+
+        @ApiModelProperty("순행 속도, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("crus_sped")
+        @PositiveOrZero
+        private Integer crusSped;
+
+        @ApiModelProperty("초기 대기 차량 대수, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("intl_atmp_vhcl_unum")
+        @PositiveOrZero
+        private Integer intlAtmpVhclUnum;
+
+        @ApiModelProperty("보행 신호 시간, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("walk_sgnl_hh")
+        @PositiveOrZero
+        private Integer walkSgnlHh;
+
+        @ApiModelProperty("버스 정차 대수, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("bus_stop_unum")
+        @PositiveOrZero
+        private Integer busStopUnum;
+
+        @ApiModelProperty("상류 정류장 이격 거리, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("upst_sttn_dstc")
+        @PositiveOrZero
+        private Integer upstSttnDstc;
+
+        @Builder
+        public TbScTrfcCndtMngmUpdReq(String ixr_id, Integer drct_dvsn_cd, String bus_bay_en, String stre_park_en, Integer upst_link_lngt, Integer hpev, Integer left_curv_rads, Double avrg_lawh, Integer bus_sttn_dstc, Integer peak_hh_fctr, Integer u_turn_tfvl, Integer entr_tfvl, Integer exit_tfvl, Integer park_actn_unum, Integer cros_walk_cnt, Integer crus_sped, Integer intl_atmp_vhcl_unum, Integer walk_sgnl_hh, Integer bus_stop_unum, Integer upst_sttn_dstc) {
+            this.ixrId = ixr_id;
+            this.drctDvsnCd = drct_dvsn_cd;
+            this.busBayEn = bus_bay_en;
+            this.streParkEn = stre_park_en;
+            this.upstLinkLngt = upst_link_lngt;
+            this.hpev = hpev;
+            this.leftCurvRads = left_curv_rads;
+            this.avrgLawh = avrg_lawh;
+            this.busSttnDstc = bus_sttn_dstc;
+            this.peakHhFctr = peak_hh_fctr;
+            this.uTurnTfvl = u_turn_tfvl;
+            this.entrTfvl = entr_tfvl;
+            this.exitTfvl = exit_tfvl;
+            this.parkActnUnum = park_actn_unum;
+            this.crosWalkCnt = cros_walk_cnt;
+            this.crusSped = crus_sped;
+            this.intlAtmpVhclUnum = intl_atmp_vhcl_unum;
+            this.walkSgnlHh = walk_sgnl_hh;
+            this.busStopUnum = bus_stop_unum;
+            this.upstSttnDstc = upst_sttn_dstc;
+        }
+
+        public TbScTrfcCndtMngm toEntity() {
+            return TbScTrfcCndtMngm.builder()
+                    .ixrId(this.ixrId)
+                    .drctDvsnCd(this.drctDvsnCd)
+                    .busBayEn(this.busBayEn)
+                    .streParkEn(this.streParkEn)
+                    .upstLinkLngt(this.upstLinkLngt)
+                    .hpev(this.hpev)
+                    .leftCurvRads(this.leftCurvRads)
+                    .avrgLawh(this.avrgLawh)
+                    .busSttnDstc(this.busSttnDstc)
+                    .peakHhFctr(this.peakHhFctr)
+                    .uTurnTfvl(this.uTurnTfvl)
+                    .entrTfvl(this.entrTfvl)
+                    .exitTfvl(this.exitTfvl)
+                    .parkActnUnum(this.parkActnUnum)
+                    .crosWalkCnt(this.crosWalkCnt)
+                    .crusSped(this.crusSped)
+                    .intlAtmpVhclUnum(this.intlAtmpVhclUnum)
+                    .walkSgnlHh(this.walkSgnlHh)
+                    .busStopUnum(this.busStopUnum)
+                    .upstSttnDstc(this.upstSttnDstc)
+                    .build();
+        }
+
+    }
+
+}

+ 149 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrGemtMngm.java

@@ -0,0 +1,149 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScIxrGemtMngmDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * 교차로 기하구조 관리 Entity Class
+ */
+@Getter
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("교차로 기하구조 관리")
+@Entity
+@Table(name = "TB_SC_IXR_GEMT_MNGM")
+@IdClass(TbScIxrGemtMngmKey.class)
+public class TbScIxrGemtMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 ID")  // N VARCHAR2(10)
+    @Id
+    @Column(name = "IXR_ID", nullable = false, length = 10)
+    private String ixrId;
+
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)")  // N NUMBER(1)
+    @Id
+    @Column(name = "DRCT_DVSN_CD", nullable = false, columnDefinition = "NUMBER", length = 1)
+    private Integer drctDvsnCd;
+
+    @ApiModelProperty("접근로 전체 차로 수")  // Y NUMBER(1)
+    @Column(name = "ACRD_WHOL_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer acrdWholLaneCnt;
+
+    @ApiModelProperty("좌회전 형태")  // Y NUMBER(1)
+    @Column(name = "LEFT_SHPE", columnDefinition = "NUMBER", length = 1)
+    private Integer leftShpe;
+
+    @ApiModelProperty("우회전 형태")  // Y NUMBER(1)
+    @Column(name = "RGHT_SHPE", columnDefinition = "NUMBER", length = 1)
+    private Integer rghtShpe;
+
+    @ApiModelProperty("좌회전 전용 차로 수")  // Y NUMBER(1)
+    @Column(name = "LEFT_DVRS_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer leftDvrsLaneCnt;
+
+    @ApiModelProperty("직진 전용 차로 수")  // Y NUMBER(1)
+    @Column(name = "GO_DVRS_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer goDvrsLaneCnt;
+
+    @ApiModelProperty("우회전 전용 차로 수")  // Y NUMBER(1)
+    @Column(name = "RGHT_DVRS_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer rghtDvrsLaneCnt;
+
+    @ApiModelProperty("좌회전 차로 수")  // Y NUMBER(1)
+    @Column(name = "LEFT_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer leftLaneCnt;
+
+    @ApiModelProperty("우회전 차로 수")  // Y NUMBER(1)
+    @Column(name = "RGHT_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer rghtLaneCnt;
+
+    @ApiModelProperty("방향 X 좌표")  // Y VARCHAR2(20)
+    @Column(name = "DRCT_X_CRDN", length = 20)
+    private String drctXCrdn;
+
+    @ApiModelProperty("방향 Y 좌표")  // Y VARCHAR2(20)
+    @Column(name = "DRCT_Y_CRDN", length = 20)
+    private String drctYCrdn;
+
+    @ApiModelProperty("비보호 좌회전")  // Y NUMBER(1)
+    @Column(name = "UPRT_LEFT", columnDefinition = "NUMBER", length = 1)
+    private Integer uprtLeft;
+
+    @ApiModelProperty("옵셋")  // Y NUMBER(3)
+    @Column(name = "OFST", columnDefinition = "NUMBER", length = 3)
+    private Integer ofst;
+
+    @ApiModelProperty("비보호 좌회전 차량 대수")  // Y NUMBER(4)
+    @Column(name = "UPRT_LEFT_VHCL_UNUM", columnDefinition = "NUMBER", length = 4)
+    private Integer uprtLeftVhclUnum;
+
+    @ApiModelProperty("신호 운영 형태(0:양방향보호좌회전, 1:직좌동시신호, 2:비보호좌회전)")  // Y NUMBER(1)
+    @Column(name = "SGNL_OPER_SHPE", columnDefinition = "NUMBER", length = 1)
+    private Integer sgnlOperShpe;
+
+    @ApiModelProperty("버스 전용 차로 수")  // Y NUMBER(1)
+    @Column(name = "BUS_DVRS_LANE_CNT", columnDefinition = "NUMBER", length = 1)
+    private Integer busDvrsLaneCnt;
+
+    @ApiModelProperty("버스 전용 차로 유형")  // Y NUMBER(1)
+    @Column(name = "BUS_DVRS_LANE_TYPE", columnDefinition = "NUMBER", length = 1)
+    private Integer busDvrsLaneType;
+
+    public TbScIxrGemtMngmDto toDto() {
+        return TbScIxrGemtMngmDto.builder()
+                .ixrId(this.ixrId)
+                .drctDvsnCd(this.drctDvsnCd)
+                .acrdWholLaneCnt(this.acrdWholLaneCnt)
+                .leftShpe(this.leftShpe)
+                .rghtShpe(this.rghtShpe)
+                .leftDvrsLaneCnt(this.leftDvrsLaneCnt)
+                .goDvrsLaneCnt(this.goDvrsLaneCnt)
+                .rghtDvrsLaneCnt(this.rghtDvrsLaneCnt)
+                .leftLaneCnt(this.leftLaneCnt)
+                .rghtLaneCnt(this.rghtLaneCnt)
+                .drctXCrdn(this.drctXCrdn)
+                .drctYCrdn(this.drctYCrdn)
+                .uprtLeft(this.uprtLeft)
+                .ofst(this.ofst)
+                .uprtLeftVhclUnum(this.uprtLeftVhclUnum)
+                .sgnlOperShpe(this.sgnlOperShpe)
+                .busDvrsLaneCnt(this.busDvrsLaneCnt)
+                .busDvrsLaneType(this.busDvrsLaneType)
+                .build();
+    }
+
+    public TbScIxrGemtMngm(String ixrId, Integer drctDvsnCd) {
+        this.ixrId = ixrId;
+        this.drctDvsnCd = drctDvsnCd;
+    }
+
+    public void updateInfo(TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req) {
+        this.acrdWholLaneCnt = req.getAcrdWholLaneCnt();
+        this.leftShpe = req.getLeftShpe();
+        this.rghtShpe = req.getRghtShpe();
+        this.leftDvrsLaneCnt = req.getLeftDvrsLaneCnt();
+        this.goDvrsLaneCnt = req.getGoDvrsLaneCnt();
+        this.rghtDvrsLaneCnt = req.getRghtDvrsLaneCnt();
+        this.leftLaneCnt = req.getLeftLaneCnt();
+        this.rghtLaneCnt = req.getRghtLaneCnt();
+        this.drctXCrdn = req.getDrctXCrdn();
+        this.drctYCrdn = req.getDrctYCrdn();
+        this.uprtLeft = req.getUprtLeft();
+        this.ofst = req.getOfst();
+        this.uprtLeftVhclUnum = req.getUprtLeftVhclUnum();
+        this.sgnlOperShpe = req.getSgnlOperShpe();
+        this.busDvrsLaneCnt = req.getBusDvrsLaneCnt();
+        this.busDvrsLaneType = req.getBusDvrsLaneType();
+    }
+
+}

+ 24 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrGemtMngmKey.java

@@ -0,0 +1,24 @@
+package com.its.op.entity.its.scrs;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 교차로 기하구조 관리 Key Class
+ */
+@Data
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbScIxrGemtMngmKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // IXR_ID, 교차로 ID  // N VARCHAR2(10)
+    private String ixrId;
+
+    // DRCT_DVSN_CD, 방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)  // N NUMBER(1)
+    private Integer drctDvsnCd;
+
+}

+ 161 - 0
src/main/java/com/its/op/entity/its/scrs/TbScTrfcCndtMngm.java

@@ -0,0 +1,161 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScTrfcCndtMngmDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * 교통 조건 관리 Entity Class
+ */
+@Getter
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("교통 조건 관리")
+@Entity
+@Table(name = "TB_SC_TRFC_CNDT_MNGM")
+@IdClass(TbScTrfcCndtMngmKey.class)
+public class TbScTrfcCndtMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 ID")  // N VARCHAR2(10)
+    @Id
+    @Column(name = "IXR_ID", nullable = false, length = 10)
+    private String ixrId;
+
+    @ApiModelProperty("방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)")  // N NUMBER(1)
+    @Id
+    @Column(name = "DRCT_DVSN_CD", nullable = false, columnDefinition = "NUMBER", length = 1)
+    private Integer drctDvsnCd;
+
+    @ApiModelProperty("버스 베이 유무")  // Y VARCHAR2(1)
+    @Column(name = "BUS_BAY_EN", length = 1)
+    private String busBayEn;
+
+    @ApiModelProperty("노상 주차 유무")  // Y VARCHAR2(1)
+    @Column(name = "STRE_PARK_EN", length = 1)
+    private String streParkEn;
+
+    @ApiModelProperty("상류 링크 길이")  // Y NUMBER(3)
+    @Column(name = "UPST_LINK_LNGT", columnDefinition = "NUMBER", length = 3)
+    private Integer upstLinkLngt;
+
+    @ApiModelProperty("경사")  // Y NUMBER(3)
+    @Column(name = "HPEV", columnDefinition = "NUMBER", length = 3)
+    private Integer hpev;
+
+    @ApiModelProperty("좌회전 곡선 반경")  // Y NUMBER(3)
+    @Column(name = "LEFT_CURV_RADS", columnDefinition = "NUMBER", length = 3)
+    private Integer leftCurvRads;
+
+    @ApiModelProperty("평균 차로폭")  // Y NUMBER(3,1)
+    @Column(name = "AVRG_LAWH", columnDefinition = "NUMBER", length = 3, precision = 1)
+    private Double avrgLawh;
+
+    @ApiModelProperty("버스 정류장 거리")  // Y NUMBER(3)
+    @Column(name = "BUS_STTN_DSTC", columnDefinition = "NUMBER", length = 3)
+    private Integer busSttnDstc;
+
+    @ApiModelProperty("첨두 시간 계수")  // Y NUMBER(2)
+    @Column(name = "PEAK_HH_FCTR", columnDefinition = "NUMBER", length = 2)
+    private Integer peakHhFctr;
+
+    @ApiModelProperty("U 턴 교통량")  // Y NUMBER(4)
+    @Column(name = "U_TURN_TFVL", columnDefinition = "NUMBER", length = 4)
+    private Integer uTurnTfvl;
+
+    @ApiModelProperty("진입 교통량")  // Y NUMBER(4)
+    @Column(name = "ENTR_TFVL", columnDefinition = "NUMBER", length = 4)
+    private Integer entrTfvl;
+
+    @ApiModelProperty("진출 교통량")  // Y NUMBER(4)
+    @Column(name = "EXIT_TFVL", columnDefinition = "NUMBER", length = 4)
+    private Integer exitTfvl;
+
+    @ApiModelProperty("주차 활동 대수")  // Y NUMBER(4)
+    @Column(name = "PARK_ACTN_UNUM", columnDefinition = "NUMBER", length = 4)
+    private Integer parkActnUnum;
+
+    @ApiModelProperty("횡단 보행 수")  // Y NUMBER(4)
+    @Column(name = "CROS_WALK_CNT", columnDefinition = "NUMBER", length = 4)
+    private Integer crosWalkCnt;
+
+    @ApiModelProperty("순행 속도")  // Y NUMBER(3)
+    @Column(name = "CRUS_SPED", columnDefinition = "NUMBER", length = 3)
+    private Integer crusSped;
+
+    @ApiModelProperty("초기 대기 차량 대수")  // Y NUMBER(4)
+    @Column(name = "INTL_ATMP_VHCL_UNUM", columnDefinition = "NUMBER", length = 4)
+    private Integer intlAtmpVhclUnum;
+
+    @ApiModelProperty("보행 신호 시간")  // Y NUMBER(3)
+    @Column(name = "WALK_SGNL_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer walkSgnlHh;
+
+    @ApiModelProperty("버스 정차 대수")  // Y NUMBER(4)
+    @Column(name = "BUS_STOP_UNUM", columnDefinition = "NUMBER", length = 4)
+    private Integer busStopUnum;
+
+    @ApiModelProperty("상류 정류장 이격 거리")  // Y NUMBER(3)
+    @Column(name = "UPST_STTN_DSTC", columnDefinition = "NUMBER", length = 3)
+    private Integer upstSttnDstc;
+
+    public TbScTrfcCndtMngmDto toDto() {
+        return TbScTrfcCndtMngmDto.builder()
+                .ixrId(this.ixrId)
+                .drctDvsnCd(this.drctDvsnCd)
+                .busBayEn(this.busBayEn)
+                .streParkEn(this.streParkEn)
+                .upstLinkLngt(this.upstLinkLngt)
+                .hpev(this.hpev)
+                .leftCurvRads(this.leftCurvRads)
+                .avrgLawh(this.avrgLawh)
+                .busSttnDstc(this.busSttnDstc)
+                .peakHhFctr(this.peakHhFctr)
+                .uTurnTfvl(this.uTurnTfvl)
+                .entrTfvl(this.entrTfvl)
+                .exitTfvl(this.exitTfvl)
+                .parkActnUnum(this.parkActnUnum)
+                .crosWalkCnt(this.crosWalkCnt)
+                .crusSped(this.crusSped)
+                .intlAtmpVhclUnum(this.intlAtmpVhclUnum)
+                .walkSgnlHh(this.walkSgnlHh)
+                .busStopUnum(this.busStopUnum)
+                .upstSttnDstc(this.upstSttnDstc)
+                .build();
+    }
+
+    public TbScTrfcCndtMngm(String ixrId, Integer drctDvsnCd) {
+        this.ixrId = ixrId;
+        this.drctDvsnCd = drctDvsnCd;
+    }
+
+    public void updateInfo(TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req) {
+        this.busBayEn = req.getBusBayEn();
+        this.streParkEn = req.getStreParkEn();
+        this.upstLinkLngt = req.getUpstLinkLngt();
+        this.hpev = req.getHpev();
+        this.leftCurvRads = req.getLeftCurvRads();
+        this.avrgLawh = req.getAvrgLawh();
+        this.busSttnDstc = req.getBusSttnDstc();
+        this.peakHhFctr = req.getPeakHhFctr();
+        this.uTurnTfvl = req.getUTurnTfvl();
+        this.entrTfvl = req.getEntrTfvl();
+        this.exitTfvl = req.getExitTfvl();
+        this.parkActnUnum = req.getParkActnUnum();
+        this.crosWalkCnt = req.getCrosWalkCnt();
+        this.crusSped = req.getCrusSped();
+        this.intlAtmpVhclUnum = req.getIntlAtmpVhclUnum();
+        this.walkSgnlHh = req.getWalkSgnlHh();
+        this.busStopUnum = req.getBusStopUnum();
+        this.upstSttnDstc = req.getUpstSttnDstc();
+    }
+
+}

+ 24 - 0
src/main/java/com/its/op/entity/its/scrs/TbScTrfcCndtMngmKey.java

@@ -0,0 +1,24 @@
+package com.its.op.entity.its.scrs;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 교통 조건 관리 Key Class
+ */
+@Data
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbScTrfcCndtMngmKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // IXR_ID, 교차로 ID  // N VARCHAR2(10)
+    private String ixrId;
+
+    // DRCT_DVSN_CD, 방향 구분(01:북, 02:동, 03:남, 04:서, 05:북동, 06:남동, 07:남서, 08:북서)  // N NUMBER(1)
+    private Integer drctDvsnCd;
+
+}

+ 115 - 0
src/main/java/com/its/op/service/its/scrs/TbScIxrGemtMngmService.java

@@ -0,0 +1,115 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScIxrGemtMngmRepository;
+import com.its.op.dto.its.scrs.TbScIxrGemtMngmDto;
+import com.its.op.entity.its.scrs.TbScIxrGemtMngm;
+import com.its.op.entity.its.scrs.TbScIxrGemtMngmKey;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbScIxrGemtMngmService {
+
+    private final TbScIxrGemtMngmRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScIxrGemtMngm requireOne(TbScIxrGemtMngmKey ixrId) throws NoSuchElementException {
+        Optional<TbScIxrGemtMngm> info = this.repo.findById(ixrId);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + ixrId);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScIxrGemtMngmDto> findAll() {
+        List<TbScIxrGemtMngmDto> result = new ArrayList<>();
+        List<TbScIxrGemtMngm> data = this.repo.findAll();
+        for (TbScIxrGemtMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScIxrGemtMngmDto> findAllList() {
+        List<TbScIxrGemtMngmDto> result = new ArrayList<>();
+        List<TbScIxrGemtMngm> data = this.repo.findAllList();
+        for (TbScIxrGemtMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScIxrGemtMngmDto findById(TbScIxrGemtMngmKey ixrId) {
+        TbScIxrGemtMngm entity = requireOne(ixrId);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScIxrGemtMngmDto updateById(TbScIxrGemtMngmKey ixrId, TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req) {
+        TbScIxrGemtMngm entity = requireOne(ixrId);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScIxrGemtMngmDto> mergeInfoList(List<TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq> reqList) {
+        List<TbScIxrGemtMngmDto> result = new ArrayList<>();
+        for (TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req : reqList) {
+            TbScIxrGemtMngm obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScIxrGemtMngmDto mergeInfo(TbScIxrGemtMngmDto.TbScIxrGemtMngmUpdReq req) {
+        TbScIxrGemtMngm obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbScIxrGemtMngmDto deleteById(TbScIxrGemtMngmKey ixrId) {
+        TbScIxrGemtMngm entity = requireOne(ixrId);
+        this.repo.deleteById(ixrId);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbScIxrGemtMngmDto> deleteByIds(List<TbScIxrGemtMngmKey> ids) {
+        List<TbScIxrGemtMngmDto> result = new ArrayList<>();
+        for (TbScIxrGemtMngmKey id : ids) {
+            Optional<TbScIxrGemtMngm> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 115 - 0
src/main/java/com/its/op/service/its/scrs/TbScTrfcCndtMngmService.java

@@ -0,0 +1,115 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScTrfcCndtMngmRepository;
+import com.its.op.dto.its.scrs.TbScTrfcCndtMngmDto;
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngm;
+import com.its.op.entity.its.scrs.TbScTrfcCndtMngmKey;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbScTrfcCndtMngmService {
+
+    private final TbScTrfcCndtMngmRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScTrfcCndtMngm requireOne(TbScTrfcCndtMngmKey ixrId) throws NoSuchElementException {
+        Optional<TbScTrfcCndtMngm> info = this.repo.findById(ixrId);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + ixrId);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScTrfcCndtMngmDto> findAll() {
+        List<TbScTrfcCndtMngmDto> result = new ArrayList<>();
+        List<TbScTrfcCndtMngm> data = this.repo.findAll();
+        for (TbScTrfcCndtMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScTrfcCndtMngmDto> findAllList() {
+        List<TbScTrfcCndtMngmDto> result = new ArrayList<>();
+        List<TbScTrfcCndtMngm> data = this.repo.findAllList();
+        for (TbScTrfcCndtMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScTrfcCndtMngmDto findById(TbScTrfcCndtMngmKey ixrId) {
+        TbScTrfcCndtMngm entity = requireOne(ixrId);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScTrfcCndtMngmDto updateById(TbScTrfcCndtMngmKey ixrId, TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req) {
+        TbScTrfcCndtMngm entity = requireOne(ixrId);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScTrfcCndtMngmDto> mergeInfoList(List<TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq> reqList) {
+        List<TbScTrfcCndtMngmDto> result = new ArrayList<>();
+        for (TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req : reqList) {
+            TbScTrfcCndtMngm obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScTrfcCndtMngmDto mergeInfo(TbScTrfcCndtMngmDto.TbScTrfcCndtMngmUpdReq req) {
+        TbScTrfcCndtMngm obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbScTrfcCndtMngmDto deleteById(TbScTrfcCndtMngmKey ixrId) {
+        TbScTrfcCndtMngm entity = requireOne(ixrId);
+        this.repo.deleteById(ixrId);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbScTrfcCndtMngmDto> deleteByIds(List<TbScTrfcCndtMngmKey> ids) {
+        List<TbScTrfcCndtMngmDto> result = new ArrayList<>();
+        for (TbScTrfcCndtMngmKey id : ids) {
+            Optional<TbScTrfcCndtMngm> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}