shjung před 2 roky
rodič
revize
1dbfa7a46a

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

@@ -0,0 +1,74 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScIxrPhasDto;
+import com.its.op.entity.its.scrs.TbScIxrPhasKey;
+import com.its.op.service.its.scrs.TbScIxrPhasService;
+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.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.List;
+
+@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-1.현시구성정보")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_ixr_phas")
+public class TbScIxrPhasController {
+
+    private final TbScIxrPhasService service;
+
+    @ApiOperation(value = "교차로 현시 전체조회(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrPhasDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "교차로 현시 전체조회(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScIxrPhasDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "교차로 현시 개별조회(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class)
+    @GetMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+    public TbScIxrPhasDto findById(@PathVariable("sgnlIxrNmbr") final TbScIxrPhasKey sgnlIxrNmbr) {
+        return this.service.findById(sgnlIxrNmbr);
+    }
+//
+//    @ApiOperation(value = "교차로 현시 정보변경(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class)
+//    @PutMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScIxrPhasDto updateById(@PathVariable("sgnlIxrNmbr") final TbScIxrPhasKey sgnlIxrNmbr, @RequestBody @Valid final TbScIxrPhasDto.TbScIxrPhasUpdReq req) {
+//        return this.service.updateById(sgnlIxrNmbr, req);
+//    }
+//
+//    @ApiOperation(value = "교차로 현시 정보변경/생성-목록(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScIxrPhasDto> mergeInfoList(@RequestBody @Valid final List<TbScIxrPhasDto.TbScIxrPhasUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "교차로 현시 정보변경/생성-개별(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class)
+//    @PostMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScIxrPhasDto mergeInfo(@PathVariable("sgnlIxrNmbr") final TbScIxrPhasKey sgnlIxrNmbr, @RequestBody @Valid final TbScIxrPhasDto.TbScIxrPhasUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "교차로 현시 정보삭제-개별(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class)
+//    @DeleteMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScIxrPhasDto deleteDataById(@PathVariable("sgnlIxrNmbr") final TbScIxrPhasKey sgnlIxrNmbr) {
+//        return this.service.deleteById(sgnlIxrNmbr);
+//    }
+//
+//    @ApiOperation(value = "교차로 현시 정보삭제-목록(TB_SC_IXR_PHAS)", response = TbScIxrPhasDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScIxrPhasDto> deleteDataByIds(@RequestBody @Valid final List<TbScIxrPhasKey> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

@@ -0,0 +1,73 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScSgnlIxrMngmDto;
+import com.its.op.service.its.scrs.TbScSgnlIxrMngmService;
+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.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.List;
+
+@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-0.교차로")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_sgnl_ixr_mngm")
+public class TbScSgnlIxrMngmController {
+
+    private final TbScSgnlIxrMngmService service;
+
+    @ApiOperation(value = "신호 교차로 관리 전체조회(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScSgnlIxrMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "신호 교차로 관리 전체조회(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScSgnlIxrMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "신호 교차로 관리 개별조회(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class)
+    @GetMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+    public TbScSgnlIxrMngmDto findById(@PathVariable("sgnlIxrNmbr") final Integer sgnlIxrNmbr) {
+        return this.service.findById(sgnlIxrNmbr);
+    }
+//
+//    @ApiOperation(value = "신호 교차로 관리 정보변경(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class)
+//    @PutMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScSgnlIxrMngmDto updateById(@PathVariable("sgnlIxrNmbr") final Integer sgnlIxrNmbr, @RequestBody @Valid final TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req) {
+//        return this.service.updateById(sgnlIxrNmbr, req);
+//    }
+//
+//    @ApiOperation(value = "신호 교차로 관리 정보변경/생성-목록(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScSgnlIxrMngmDto> mergeInfoList(@RequestBody @Valid final List<TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "신호 교차로 관리 정보변경/생성-개별(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class)
+//    @PostMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScSgnlIxrMngmDto mergeInfo(@PathVariable("sgnlIxrNmbr") final Integer sgnlIxrNmbr, @RequestBody @Valid final TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "신호 교차로 관리 정보삭제-개별(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class)
+//    @DeleteMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScSgnlIxrMngmDto deleteDataById(@PathVariable("sgnlIxrNmbr") final Integer sgnlIxrNmbr) {
+//        return this.service.deleteById(sgnlIxrNmbr);
+//    }
+//
+//    @ApiOperation(value = "신호 교차로 관리 정보삭제-목록(TB_SC_SGNL_IXR_MNGM)", response = TbScSgnlIxrMngmDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScSgnlIxrMngmDto> deleteDataByIds(@RequestBody @Valid final List<Integer> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

@@ -0,0 +1,74 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScTodCnfgDto;
+import com.its.op.entity.its.scrs.TbScTodCnfgKey;
+import com.its.op.service.its.scrs.TbScTodCnfgService;
+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.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.List;
+
+@Api(tags = "14.스마트교차로-0.관리-2.신호교차로-2.일일 시각 제어")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_tod_cnfg")
+public class TbScTodCnfgController {
+
+    private final TbScTodCnfgService service;
+
+    @ApiOperation(value = "TOD 구성 전체조회(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScTodCnfgDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "TOD 구성 전체조회(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScTodCnfgDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "TOD 구성 개별조회(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class)
+    @GetMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+    public TbScTodCnfgDto findById(@PathVariable("sgnlIxrNmbr") final TbScTodCnfgKey sgnlIxrNmbr) {
+        return this.service.findById(sgnlIxrNmbr);
+    }
+//
+//    @ApiOperation(value = "TOD 구성 정보변경(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class)
+//    @PutMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScTodCnfgDto updateById(@PathVariable("sgnlIxrNmbr") final TbScTodCnfgKey sgnlIxrNmbr, @RequestBody @Valid final TbScTodCnfgDto.TbScTodCnfgUpdReq req) {
+//        return this.service.updateById(sgnlIxrNmbr, req);
+//    }
+//
+//    @ApiOperation(value = "TOD 구성 정보변경/생성-목록(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScTodCnfgDto> mergeInfoList(@RequestBody @Valid final List<TbScTodCnfgDto.TbScTodCnfgUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "TOD 구성 정보변경/생성-개별(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class)
+//    @PostMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScTodCnfgDto mergeInfo(@PathVariable("sgnlIxrNmbr") final TbScTodCnfgKey sgnlIxrNmbr, @RequestBody @Valid final TbScTodCnfgDto.TbScTodCnfgUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "TOD 구성 정보삭제-개별(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class)
+//    @DeleteMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+//    public TbScTodCnfgDto deleteDataById(@PathVariable("sgnlIxrNmbr") final TbScTodCnfgKey sgnlIxrNmbr) {
+//        return this.service.deleteById(sgnlIxrNmbr);
+//    }
+//
+//    @ApiOperation(value = "TOD 구성 정보삭제-목록(TB_SC_TOD_CNFG)", response = TbScTodCnfgDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScTodCnfgDto> deleteDataByIds(@RequestBody @Valid final List<TbScTodCnfgKey> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

@@ -0,0 +1,21 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScIxrPhas;
+import com.its.op.entity.its.scrs.TbScIxrPhasKey;
+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 TbScIxrPhasRepository extends JpaRepository<TbScIxrPhas, TbScIxrPhasKey>, JpaSpecificationExecutor<TbScIxrPhas> {
+
+    @Query("select p from TbScIxrPhas p")
+    List<TbScIxrPhas> findAll();
+
+    @Query("select p from TbScIxrPhas p")
+    List<TbScIxrPhas> findAllList();
+
+}

+ 20 - 0
src/main/java/com/its/op/dao/repository/its/scrs/TbScSgnlIxrMngmRepository.java

@@ -0,0 +1,20 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScSgnlIxrMngm;
+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 TbScSgnlIxrMngmRepository extends JpaRepository<TbScSgnlIxrMngm, Integer>, JpaSpecificationExecutor<TbScSgnlIxrMngm> {
+
+    @Query("select p from TbScSgnlIxrMngm p")
+    List<TbScSgnlIxrMngm> findAll();
+
+    @Query("select p from TbScSgnlIxrMngm p")
+    List<TbScSgnlIxrMngm> findAllList();
+
+}

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

@@ -0,0 +1,21 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScTodCnfg;
+import com.its.op.entity.its.scrs.TbScTodCnfgKey;
+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 TbScTodCnfgRepository extends JpaRepository<TbScTodCnfg, TbScTodCnfgKey>, JpaSpecificationExecutor<TbScTodCnfg> {
+
+    @Query("select p from TbScTodCnfg p")
+    List<TbScTodCnfg> findAll();
+
+    @Query("select p from TbScTodCnfg p")
+    List<TbScTodCnfg> findAllList();
+
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 623 - 0
src/main/java/com/its/op/dto/its/scrs/TbScIxrPhasDto.java


+ 107 - 0
src/main/java/com/its/op/dto/its/scrs/TbScSgnlIxrMngmDto.java

@@ -0,0 +1,107 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScSgnlIxrMngm;
+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("TbScSgnlIxrMngmDto(신호 교차로 관리)")
+public class TbScSgnlIxrMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @JsonProperty("sgnl_ixr_nmbr")
+    private Integer sgnlIxrNmbr;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @JsonProperty("ixr_grop")
+    private Integer ixrGrop;
+
+    @ApiModelProperty("교차로 구분(0: 중요 교차로, 1: 준중요 교차로, 2: 비중요 교차로)")  // Y NUMBER(1)
+    @JsonProperty("ixr_dvsn")
+    private Integer ixrDvsn;
+
+    @ApiModelProperty("규격 구분(0:2004년, 1:2010년)")  // Y NUMBER(1)
+    @JsonProperty("stad_dvsn")
+    private Integer stadDvsn;
+
+    @ApiModelProperty("교차로 명")  // Y VARCHAR2(50)
+    @JsonProperty("ixr_nm")
+    private String ixrNm;
+
+    @ApiModelProperty("등록 유무")  // Y NUMBER(1)
+    @JsonProperty("rgst_en")
+    private Integer rgstEn;
+
+    // Code Description Field
+    @ApiModel("TbScSgnlIxrMngmUpdReq(신호 교차로 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScSgnlIxrMngmUpdReq {
+
+        @ApiModelProperty("신호 교차로 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("sgnl_ixr_nmbr")
+        @PositiveOrZero
+        private Integer sgnlIxrNmbr;
+
+        @ApiModelProperty("교차로 그룹, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("ixr_grop")
+        @PositiveOrZero
+        private Integer ixrGrop;
+
+        @ApiModelProperty("교차로 구분(0: 중요 교차로, 1: 준중요 교차로, 2: 비중요 교차로), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("ixr_dvsn")
+        @PositiveOrZero
+        private Integer ixrDvsn;
+
+        @ApiModelProperty("규격 구분(0:2004년, 1:2010년), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("stad_dvsn")
+        @PositiveOrZero
+        private Integer stadDvsn;
+
+        @ApiModelProperty("교차로 명, Nullable = Y, VARCHAR2(50)")  // Y VARCHAR2(50)
+        @JsonProperty("ixr_nm")
+        @Size(min=1, max=50)
+        private String ixrNm;
+
+        @ApiModelProperty("등록 유무, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("rgst_en")
+        @PositiveOrZero
+        private Integer rgstEn;
+
+        @Builder
+        public TbScSgnlIxrMngmUpdReq(Integer sgnl_ixr_nmbr, Integer ixr_grop, Integer ixr_dvsn, Integer stad_dvsn, String ixr_nm, Integer rgst_en) {
+            this.sgnlIxrNmbr = sgnl_ixr_nmbr;
+            this.ixrGrop = ixr_grop;
+            this.ixrDvsn = ixr_dvsn;
+            this.stadDvsn = stad_dvsn;
+            this.ixrNm = ixr_nm;
+            this.rgstEn = rgst_en;
+        }
+
+        public TbScSgnlIxrMngm toEntity() {
+            return TbScSgnlIxrMngm.builder()
+                    .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                    .ixrGrop(this.ixrGrop)
+                    .ixrDvsn(this.ixrDvsn)
+                    .stadDvsn(this.stadDvsn)
+                    .ixrNm(this.ixrNm)
+                    .rgstEn(this.rgstEn)
+                    .build();
+        }
+
+    }
+
+}

+ 293 - 0
src/main/java/com/its/op/dto/its/scrs/TbScTodCnfgDto.java

@@ -0,0 +1,293 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScTodCnfg;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import java.io.Serializable;
+
+/**
+ * TOD 구성 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScTodCnfgDto(TOD 구성)")
+public class TbScTodCnfgDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @JsonProperty("sgnl_ixr_nmbr")
+    private Integer sgnlIxrNmbr;
+
+    @ApiModelProperty("일반 제어용 플랜: 1~5, 시차 제어용 플랜: 6~10")  // N NUMBER(2)
+    @JsonProperty("ixr_oper_mode")
+    private Integer ixrOperMode;
+
+    @ApiModelProperty("시간별운영계획번호(1~16번까지있음)")  // N NUMBER(2)
+    @JsonProperty("ixr_phas_oper_plan_nmbr")
+    private Integer ixrPhasOperPlanNmbr;
+
+    @ApiModelProperty("시간")  // Y NUMBER(2)
+    @JsonProperty("hh")
+    private Integer hh;
+
+    @ApiModelProperty("분")  // Y NUMBER(2)
+    @JsonProperty("mm")
+    private Integer mm;
+
+    @ApiModelProperty("주기")  // Y NUMBER(3)
+    @JsonProperty("cycl")
+    private Integer cycl;
+
+    @ApiModelProperty("옵셋")  // Y NUMBER(3)
+    @JsonProperty("ofst")
+    private Integer ofst;
+
+    @ApiModelProperty("A링 1현시")  // Y NUMBER(3)
+    @JsonProperty("aring_1phas")
+    private Integer aring1phas;
+
+    @ApiModelProperty("A링 2현시")  // Y NUMBER(3)
+    @JsonProperty("aring_2phas")
+    private Integer aring2phas;
+
+    @ApiModelProperty("A링 3현시")  // Y NUMBER(3)
+    @JsonProperty("aring_3phas")
+    private Integer aring3phas;
+
+    @ApiModelProperty("A링 4현시")  // Y NUMBER(3)
+    @JsonProperty("aring_4phas")
+    private Integer aring4phas;
+
+    @ApiModelProperty("A링 5현시")  // Y NUMBER(3)
+    @JsonProperty("aring_5phas")
+    private Integer aring5phas;
+
+    @ApiModelProperty("A링 6현시")  // Y NUMBER(3)
+    @JsonProperty("aring_6phas")
+    private Integer aring6phas;
+
+    @ApiModelProperty("A링 7현시")  // Y NUMBER(3)
+    @JsonProperty("aring_7phas")
+    private Integer aring7phas;
+
+    @ApiModelProperty("A링 8현시")  // Y NUMBER(3)
+    @JsonProperty("aring_8phas")
+    private Integer aring8phas;
+
+    @ApiModelProperty("B링 1현시")  // Y NUMBER(3)
+    @JsonProperty("bring_1phas")
+    private Integer bring1phas;
+
+    @ApiModelProperty("B링 2현시")  // Y NUMBER(3)
+    @JsonProperty("bring_2phas")
+    private Integer bring2phas;
+
+    @ApiModelProperty("B링 3현시")  // Y NUMBER(3)
+    @JsonProperty("bring_3phas")
+    private Integer bring3phas;
+
+    @ApiModelProperty("B링 4현시")  // Y NUMBER(3)
+    @JsonProperty("bring_4phas")
+    private Integer bring4phas;
+
+    @ApiModelProperty("B링 5현시")  // Y NUMBER(3)
+    @JsonProperty("bring_5phas")
+    private Integer bring5phas;
+
+    @ApiModelProperty("B링 6현시")  // Y NUMBER(3)
+    @JsonProperty("bring_6phas")
+    private Integer bring6phas;
+
+    @ApiModelProperty("B링 7현시")  // Y NUMBER(3)
+    @JsonProperty("bring_7phas")
+    private Integer bring7phas;
+
+    @ApiModelProperty("B링 8현시")  // Y NUMBER(3)
+    @JsonProperty("bring_8phas")
+    private Integer bring8phas;
+
+    // Code Description Field
+    @ApiModel("TbScTodCnfgUpdReq(TOD 구성 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScTodCnfgUpdReq {
+
+        @ApiModelProperty("신호 교차로 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("sgnl_ixr_nmbr")
+        @PositiveOrZero
+        private Integer sgnlIxrNmbr;
+
+        @ApiModelProperty("일반 제어용 플랜: 1~5, 시차 제어용 플랜: 6~10, Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("ixr_oper_mode")
+        @PositiveOrZero
+        private Integer ixrOperMode;
+
+        @ApiModelProperty("시간별운영계획번호(1~16번까지있음), Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("ixr_phas_oper_plan_nmbr")
+        @PositiveOrZero
+        private Integer ixrPhasOperPlanNmbr;
+
+        @ApiModelProperty("시간, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("hh")
+        @PositiveOrZero
+        private Integer hh;
+
+        @ApiModelProperty("분, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("mm")
+        @PositiveOrZero
+        private Integer mm;
+
+        @ApiModelProperty("주기, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("cycl")
+        @PositiveOrZero
+        private Integer cycl;
+
+        @ApiModelProperty("옵셋, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("ofst")
+        @PositiveOrZero
+        private Integer ofst;
+
+        @ApiModelProperty("A링 1현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_1phas")
+        @PositiveOrZero
+        private Integer aring1phas;
+
+        @ApiModelProperty("A링 2현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_2phas")
+        @PositiveOrZero
+        private Integer aring2phas;
+
+        @ApiModelProperty("A링 3현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_3phas")
+        @PositiveOrZero
+        private Integer aring3phas;
+
+        @ApiModelProperty("A링 4현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_4phas")
+        @PositiveOrZero
+        private Integer aring4phas;
+
+        @ApiModelProperty("A링 5현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_5phas")
+        @PositiveOrZero
+        private Integer aring5phas;
+
+        @ApiModelProperty("A링 6현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_6phas")
+        @PositiveOrZero
+        private Integer aring6phas;
+
+        @ApiModelProperty("A링 7현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_7phas")
+        @PositiveOrZero
+        private Integer aring7phas;
+
+        @ApiModelProperty("A링 8현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("aring_8phas")
+        @PositiveOrZero
+        private Integer aring8phas;
+
+        @ApiModelProperty("B링 1현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_1phas")
+        @PositiveOrZero
+        private Integer bring1phas;
+
+        @ApiModelProperty("B링 2현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_2phas")
+        @PositiveOrZero
+        private Integer bring2phas;
+
+        @ApiModelProperty("B링 3현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_3phas")
+        @PositiveOrZero
+        private Integer bring3phas;
+
+        @ApiModelProperty("B링 4현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_4phas")
+        @PositiveOrZero
+        private Integer bring4phas;
+
+        @ApiModelProperty("B링 5현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_5phas")
+        @PositiveOrZero
+        private Integer bring5phas;
+
+        @ApiModelProperty("B링 6현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_6phas")
+        @PositiveOrZero
+        private Integer bring6phas;
+
+        @ApiModelProperty("B링 7현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_7phas")
+        @PositiveOrZero
+        private Integer bring7phas;
+
+        @ApiModelProperty("B링 8현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("bring_8phas")
+        @PositiveOrZero
+        private Integer bring8phas;
+
+        @Builder
+        public TbScTodCnfgUpdReq(Integer sgnl_ixr_nmbr, Integer ixr_oper_mode, Integer ixr_phas_oper_plan_nmbr, Integer hh, Integer mm, Integer cycl, Integer ofst, Integer aring_1phas, Integer aring_2phas, Integer aring_3phas, Integer aring_4phas, Integer aring_5phas, Integer aring_6phas, Integer aring_7phas, Integer aring_8phas, Integer bring_1phas, Integer bring_2phas, Integer bring_3phas, Integer bring_4phas, Integer bring_5phas, Integer bring_6phas, Integer bring_7phas, Integer bring_8phas) {
+            this.sgnlIxrNmbr = sgnl_ixr_nmbr;
+            this.ixrOperMode = ixr_oper_mode;
+            this.ixrPhasOperPlanNmbr = ixr_phas_oper_plan_nmbr;
+            this.hh = hh;
+            this.mm = mm;
+            this.cycl = cycl;
+            this.ofst = ofst;
+            this.aring1phas = aring_1phas;
+            this.aring2phas = aring_2phas;
+            this.aring3phas = aring_3phas;
+            this.aring4phas = aring_4phas;
+            this.aring5phas = aring_5phas;
+            this.aring6phas = aring_6phas;
+            this.aring7phas = aring_7phas;
+            this.aring8phas = aring_8phas;
+            this.bring1phas = bring_1phas;
+            this.bring2phas = bring_2phas;
+            this.bring3phas = bring_3phas;
+            this.bring4phas = bring_4phas;
+            this.bring5phas = bring_5phas;
+            this.bring6phas = bring_6phas;
+            this.bring7phas = bring_7phas;
+            this.bring8phas = bring_8phas;
+        }
+
+        public TbScTodCnfg toEntity() {
+            return TbScTodCnfg.builder()
+                    .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                    .ixrOperMode(this.ixrOperMode)
+                    .ixrPhasOperPlanNmbr(this.ixrPhasOperPlanNmbr)
+                    .hh(this.hh)
+                    .mm(this.mm)
+                    .cycl(this.cycl)
+                    .ofst(this.ofst)
+                    .aring1phas(this.aring1phas)
+                    .aring2phas(this.aring2phas)
+                    .aring3phas(this.aring3phas)
+                    .aring4phas(this.aring4phas)
+                    .aring5phas(this.aring5phas)
+                    .aring6phas(this.aring6phas)
+                    .aring7phas(this.aring7phas)
+                    .aring8phas(this.aring8phas)
+                    .bring1phas(this.bring1phas)
+                    .bring2phas(this.bring2phas)
+                    .bring3phas(this.bring3phas)
+                    .bring4phas(this.bring4phas)
+                    .bring5phas(this.bring5phas)
+                    .bring6phas(this.bring6phas)
+                    .bring7phas(this.bring7phas)
+                    .bring8phas(this.bring8phas)
+                    .build();
+        }
+
+    }
+
+}

+ 437 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrPhas.java

@@ -0,0 +1,437 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScIxrPhasDto;
+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_PHAS")
+@IdClass(TbScIxrPhasKey.class)
+public class TbScIxrPhas implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @Id
+    @Column(name = "SGNL_IXR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Integer sgnlIxrNmbr;
+
+    @ApiModelProperty("교차로 운영 모드(0: 일반, 1: 시)")  // N NUMBER(2)
+    @Id
+    @Column(name = "IXR_OPER_MODE", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer ixrOperMode;
+
+    @ApiModelProperty("A링 1현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_1PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring1phasCrflNmbr;
+
+    @ApiModelProperty("A링 2현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_2PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring2phasCrflNmbr;
+
+    @ApiModelProperty("A링 3현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_3PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring3phasCrflNmbr;
+
+    @ApiModelProperty("A링 4현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_4PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring4phasCrflNmbr;
+
+    @ApiModelProperty("A링 5현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_5PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring5phasCrflNmbr;
+
+    @ApiModelProperty("A링 6현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_6PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring6phasCrflNmbr;
+
+    @ApiModelProperty("A링 7현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_7PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring7phasCrflNmbr;
+
+    @ApiModelProperty("A링 8현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "ARING_8PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer aring8phasCrflNmbr;
+
+    @ApiModelProperty("B링 1현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_1PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring1phasCrflNmbr;
+
+    @ApiModelProperty("B링 2현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_2PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring2phasCrflNmbr;
+
+    @ApiModelProperty("B링 3현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_3PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring3phasCrflNmbr;
+
+    @ApiModelProperty("B링 4현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_4PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring4phasCrflNmbr;
+
+    @ApiModelProperty("B링 5현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_5PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring5phasCrflNmbr;
+
+    @ApiModelProperty("B링 6현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_6PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring6phasCrflNmbr;
+
+    @ApiModelProperty("B링 7현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_7PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring7phasCrflNmbr;
+
+    @ApiModelProperty("B링 8현시 이동류 번호")  // Y NUMBER(2)
+    @Column(name = "BRING_8PHAS_CRFL_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer bring8phasCrflNmbr;
+
+    @ApiModelProperty("A링 1현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_1PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring1phasMinGrenHh;
+
+    @ApiModelProperty("A링 2현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_2PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring2phasMinGrenHh;
+
+    @ApiModelProperty("A링 3현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_3PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring3phasMinGrenHh;
+
+    @ApiModelProperty("A링 4현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_4PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring4phasMinGrenHh;
+
+    @ApiModelProperty("A링 5현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_5PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring5phasMinGrenHh;
+
+    @ApiModelProperty("A링 6현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_6PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring6phasMinGrenHh;
+
+    @ApiModelProperty("A링 7현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_7PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring7phasMinGrenHh;
+
+    @ApiModelProperty("A링 8현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_8PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring8phasMinGrenHh;
+
+    @ApiModelProperty("B링 1현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_1PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring1phasMinGrenHh;
+
+    @ApiModelProperty("B링 2현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_2PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring2phasMinGrenHh;
+
+    @ApiModelProperty("B링 3현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_3PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring3phasMinGrenHh;
+
+    @ApiModelProperty("B링 4현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_4PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring4phasMinGrenHh;
+
+    @ApiModelProperty("B링 5현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_5PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring5phasMinGrenHh;
+
+    @ApiModelProperty("B링 6현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_6PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring6phasMinGrenHh;
+
+    @ApiModelProperty("B링 7현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_7PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring7phasMinGrenHh;
+
+    @ApiModelProperty("B링 8현시 최소 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_8PHAS_MIN_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring8phasMinGrenHh;
+
+    @ApiModelProperty("A링 1현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_1PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring1phasMaxGrenHh;
+
+    @ApiModelProperty("A링 2현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_2PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring2phasMaxGrenHh;
+
+    @ApiModelProperty("A링 3현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_3PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring3phasMaxGrenHh;
+
+    @ApiModelProperty("A링 4현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_4PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring4phasMaxGrenHh;
+
+    @ApiModelProperty("A링 5현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_5PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring5phasMaxGrenHh;
+
+    @ApiModelProperty("A링 6현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_6PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring6phasMaxGrenHh;
+
+    @ApiModelProperty("A링 7현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_7PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring7phasMaxGrenHh;
+
+    @ApiModelProperty("A링 8현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "ARING_8PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer aring8phasMaxGrenHh;
+
+    @ApiModelProperty("B링 1현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_1PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring1phasMaxGrenHh;
+
+    @ApiModelProperty("B링 2현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_2PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring2phasMaxGrenHh;
+
+    @ApiModelProperty("B링 3현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_3PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring3phasMaxGrenHh;
+
+    @ApiModelProperty("B링 4현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_4PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring4phasMaxGrenHh;
+
+    @ApiModelProperty("B링 5현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_5PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring5phasMaxGrenHh;
+
+    @ApiModelProperty("B링 6현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_6PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring6phasMaxGrenHh;
+
+    @ApiModelProperty("B링 7현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_7PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring7phasMaxGrenHh;
+
+    @ApiModelProperty("B링 8현시 최대 녹색 시간")  // Y NUMBER(3)
+    @Column(name = "BRING_8PHAS_MAX_GREN_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer bring8phasMaxGrenHh;
+
+    @ApiModelProperty("A링 1현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_1PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring1phasYelwHh;
+
+    @ApiModelProperty("A링 2현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_2PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring2phasYelwHh;
+
+    @ApiModelProperty("A링 3현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_3PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring3phasYelwHh;
+
+    @ApiModelProperty("A링 4현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_4PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring4phasYelwHh;
+
+    @ApiModelProperty("A링 5현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_5PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring5phasYelwHh;
+
+    @ApiModelProperty("A링 6현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_6PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring6phasYelwHh;
+
+    @ApiModelProperty("A링 7현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_7PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring7phasYelwHh;
+
+    @ApiModelProperty("A링 8현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "ARING_8PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer aring8phasYelwHh;
+
+    @ApiModelProperty("B링 1현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_1PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring1phasYelwHh;
+
+    @ApiModelProperty("B링 2현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_2PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring2phasYelwHh;
+
+    @ApiModelProperty("B링 3현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_3PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring3phasYelwHh;
+
+    @ApiModelProperty("B링 4현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_4PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring4phasYelwHh;
+
+    @ApiModelProperty("B링 5현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_5PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring5phasYelwHh;
+
+    @ApiModelProperty("B링 6현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_6PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring6phasYelwHh;
+
+    @ApiModelProperty("B링 7현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_7PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring7phasYelwHh;
+
+    @ApiModelProperty("B링 8현시 황색 시간")  // Y NUMBER(2)
+    @Column(name = "BRING_8PHAS_YELW_HH", columnDefinition = "NUMBER", length = 2)
+    private Integer bring8phasYelwHh;
+
+    public TbScIxrPhasDto toDto() {
+        return TbScIxrPhasDto.builder()
+                .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                .ixrOperMode(this.ixrOperMode)
+                .aring1phasCrflNmbr(this.aring1phasCrflNmbr)
+                .aring2phasCrflNmbr(this.aring2phasCrflNmbr)
+                .aring3phasCrflNmbr(this.aring3phasCrflNmbr)
+                .aring4phasCrflNmbr(this.aring4phasCrflNmbr)
+                .aring5phasCrflNmbr(this.aring5phasCrflNmbr)
+                .aring6phasCrflNmbr(this.aring6phasCrflNmbr)
+                .aring7phasCrflNmbr(this.aring7phasCrflNmbr)
+                .aring8phasCrflNmbr(this.aring8phasCrflNmbr)
+                .bring1phasCrflNmbr(this.bring1phasCrflNmbr)
+                .bring2phasCrflNmbr(this.bring2phasCrflNmbr)
+                .bring3phasCrflNmbr(this.bring3phasCrflNmbr)
+                .bring4phasCrflNmbr(this.bring4phasCrflNmbr)
+                .bring5phasCrflNmbr(this.bring5phasCrflNmbr)
+                .bring6phasCrflNmbr(this.bring6phasCrflNmbr)
+                .bring7phasCrflNmbr(this.bring7phasCrflNmbr)
+                .bring8phasCrflNmbr(this.bring8phasCrflNmbr)
+                .aring1phasMinGrenHh(this.aring1phasMinGrenHh)
+                .aring2phasMinGrenHh(this.aring2phasMinGrenHh)
+                .aring3phasMinGrenHh(this.aring3phasMinGrenHh)
+                .aring4phasMinGrenHh(this.aring4phasMinGrenHh)
+                .aring5phasMinGrenHh(this.aring5phasMinGrenHh)
+                .aring6phasMinGrenHh(this.aring6phasMinGrenHh)
+                .aring7phasMinGrenHh(this.aring7phasMinGrenHh)
+                .aring8phasMinGrenHh(this.aring8phasMinGrenHh)
+                .bring1phasMinGrenHh(this.bring1phasMinGrenHh)
+                .bring2phasMinGrenHh(this.bring2phasMinGrenHh)
+                .bring3phasMinGrenHh(this.bring3phasMinGrenHh)
+                .bring4phasMinGrenHh(this.bring4phasMinGrenHh)
+                .bring5phasMinGrenHh(this.bring5phasMinGrenHh)
+                .bring6phasMinGrenHh(this.bring6phasMinGrenHh)
+                .bring7phasMinGrenHh(this.bring7phasMinGrenHh)
+                .bring8phasMinGrenHh(this.bring8phasMinGrenHh)
+                .aring1phasMaxGrenHh(this.aring1phasMaxGrenHh)
+                .aring2phasMaxGrenHh(this.aring2phasMaxGrenHh)
+                .aring3phasMaxGrenHh(this.aring3phasMaxGrenHh)
+                .aring4phasMaxGrenHh(this.aring4phasMaxGrenHh)
+                .aring5phasMaxGrenHh(this.aring5phasMaxGrenHh)
+                .aring6phasMaxGrenHh(this.aring6phasMaxGrenHh)
+                .aring7phasMaxGrenHh(this.aring7phasMaxGrenHh)
+                .aring8phasMaxGrenHh(this.aring8phasMaxGrenHh)
+                .bring1phasMaxGrenHh(this.bring1phasMaxGrenHh)
+                .bring2phasMaxGrenHh(this.bring2phasMaxGrenHh)
+                .bring3phasMaxGrenHh(this.bring3phasMaxGrenHh)
+                .bring4phasMaxGrenHh(this.bring4phasMaxGrenHh)
+                .bring5phasMaxGrenHh(this.bring5phasMaxGrenHh)
+                .bring6phasMaxGrenHh(this.bring6phasMaxGrenHh)
+                .bring7phasMaxGrenHh(this.bring7phasMaxGrenHh)
+                .bring8phasMaxGrenHh(this.bring8phasMaxGrenHh)
+                .aring1phasYelwHh(this.aring1phasYelwHh)
+                .aring2phasYelwHh(this.aring2phasYelwHh)
+                .aring3phasYelwHh(this.aring3phasYelwHh)
+                .aring4phasYelwHh(this.aring4phasYelwHh)
+                .aring5phasYelwHh(this.aring5phasYelwHh)
+                .aring6phasYelwHh(this.aring6phasYelwHh)
+                .aring7phasYelwHh(this.aring7phasYelwHh)
+                .aring8phasYelwHh(this.aring8phasYelwHh)
+                .bring1phasYelwHh(this.bring1phasYelwHh)
+                .bring2phasYelwHh(this.bring2phasYelwHh)
+                .bring3phasYelwHh(this.bring3phasYelwHh)
+                .bring4phasYelwHh(this.bring4phasYelwHh)
+                .bring5phasYelwHh(this.bring5phasYelwHh)
+                .bring6phasYelwHh(this.bring6phasYelwHh)
+                .bring7phasYelwHh(this.bring7phasYelwHh)
+                .bring8phasYelwHh(this.bring8phasYelwHh)
+                .build();
+    }
+
+    public TbScIxrPhas(Integer sgnlIxrNmbr, Integer ixrOperMode) {
+        this.sgnlIxrNmbr = sgnlIxrNmbr;
+        this.ixrOperMode = ixrOperMode;
+    }
+
+    public void updateInfo(TbScIxrPhasDto.TbScIxrPhasUpdReq req) {
+        this.aring1phasCrflNmbr = req.getAring1phasCrflNmbr();
+        this.aring2phasCrflNmbr = req.getAring2phasCrflNmbr();
+        this.aring3phasCrflNmbr = req.getAring3phasCrflNmbr();
+        this.aring4phasCrflNmbr = req.getAring4phasCrflNmbr();
+        this.aring5phasCrflNmbr = req.getAring5phasCrflNmbr();
+        this.aring6phasCrflNmbr = req.getAring6phasCrflNmbr();
+        this.aring7phasCrflNmbr = req.getAring7phasCrflNmbr();
+        this.aring8phasCrflNmbr = req.getAring8phasCrflNmbr();
+        this.bring1phasCrflNmbr = req.getBring1phasCrflNmbr();
+        this.bring2phasCrflNmbr = req.getBring2phasCrflNmbr();
+        this.bring3phasCrflNmbr = req.getBring3phasCrflNmbr();
+        this.bring4phasCrflNmbr = req.getBring4phasCrflNmbr();
+        this.bring5phasCrflNmbr = req.getBring5phasCrflNmbr();
+        this.bring6phasCrflNmbr = req.getBring6phasCrflNmbr();
+        this.bring7phasCrflNmbr = req.getBring7phasCrflNmbr();
+        this.bring8phasCrflNmbr = req.getBring8phasCrflNmbr();
+        this.aring1phasMinGrenHh = req.getAring1phasMinGrenHh();
+        this.aring2phasMinGrenHh = req.getAring2phasMinGrenHh();
+        this.aring3phasMinGrenHh = req.getAring3phasMinGrenHh();
+        this.aring4phasMinGrenHh = req.getAring4phasMinGrenHh();
+        this.aring5phasMinGrenHh = req.getAring5phasMinGrenHh();
+        this.aring6phasMinGrenHh = req.getAring6phasMinGrenHh();
+        this.aring7phasMinGrenHh = req.getAring7phasMinGrenHh();
+        this.aring8phasMinGrenHh = req.getAring8phasMinGrenHh();
+        this.bring1phasMinGrenHh = req.getBring1phasMinGrenHh();
+        this.bring2phasMinGrenHh = req.getBring2phasMinGrenHh();
+        this.bring3phasMinGrenHh = req.getBring3phasMinGrenHh();
+        this.bring4phasMinGrenHh = req.getBring4phasMinGrenHh();
+        this.bring5phasMinGrenHh = req.getBring5phasMinGrenHh();
+        this.bring6phasMinGrenHh = req.getBring6phasMinGrenHh();
+        this.bring7phasMinGrenHh = req.getBring7phasMinGrenHh();
+        this.bring8phasMinGrenHh = req.getBring8phasMinGrenHh();
+        this.aring1phasMaxGrenHh = req.getAring1phasMaxGrenHh();
+        this.aring2phasMaxGrenHh = req.getAring2phasMaxGrenHh();
+        this.aring3phasMaxGrenHh = req.getAring3phasMaxGrenHh();
+        this.aring4phasMaxGrenHh = req.getAring4phasMaxGrenHh();
+        this.aring5phasMaxGrenHh = req.getAring5phasMaxGrenHh();
+        this.aring6phasMaxGrenHh = req.getAring6phasMaxGrenHh();
+        this.aring7phasMaxGrenHh = req.getAring7phasMaxGrenHh();
+        this.aring8phasMaxGrenHh = req.getAring8phasMaxGrenHh();
+        this.bring1phasMaxGrenHh = req.getBring1phasMaxGrenHh();
+        this.bring2phasMaxGrenHh = req.getBring2phasMaxGrenHh();
+        this.bring3phasMaxGrenHh = req.getBring3phasMaxGrenHh();
+        this.bring4phasMaxGrenHh = req.getBring4phasMaxGrenHh();
+        this.bring5phasMaxGrenHh = req.getBring5phasMaxGrenHh();
+        this.bring6phasMaxGrenHh = req.getBring6phasMaxGrenHh();
+        this.bring7phasMaxGrenHh = req.getBring7phasMaxGrenHh();
+        this.bring8phasMaxGrenHh = req.getBring8phasMaxGrenHh();
+        this.aring1phasYelwHh = req.getAring1phasYelwHh();
+        this.aring2phasYelwHh = req.getAring2phasYelwHh();
+        this.aring3phasYelwHh = req.getAring3phasYelwHh();
+        this.aring4phasYelwHh = req.getAring4phasYelwHh();
+        this.aring5phasYelwHh = req.getAring5phasYelwHh();
+        this.aring6phasYelwHh = req.getAring6phasYelwHh();
+        this.aring7phasYelwHh = req.getAring7phasYelwHh();
+        this.aring8phasYelwHh = req.getAring8phasYelwHh();
+        this.bring1phasYelwHh = req.getBring1phasYelwHh();
+        this.bring2phasYelwHh = req.getBring2phasYelwHh();
+        this.bring3phasYelwHh = req.getBring3phasYelwHh();
+        this.bring4phasYelwHh = req.getBring4phasYelwHh();
+        this.bring5phasYelwHh = req.getBring5phasYelwHh();
+        this.bring6phasYelwHh = req.getBring6phasYelwHh();
+        this.bring7phasYelwHh = req.getBring7phasYelwHh();
+        this.bring8phasYelwHh = req.getBring8phasYelwHh();
+    }
+
+}

+ 24 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrPhasKey.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 TbScIxrPhasKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // SGNL_IXR_NMBR, 신호 교차로 번호  // N NUMBER(4)
+    private Integer sgnlIxrNmbr;
+
+    // IXR_OPER_MODE, 교차로 운영 모드(0: 일반, 1: 시)  // N NUMBER(2)
+    private Integer ixrOperMode;
+
+}

+ 78 - 0
src/main/java/com/its/op/entity/its/scrs/TbScSgnlIxrMngm.java

@@ -0,0 +1,78 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScSgnlIxrMngmDto;
+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.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 신호 교차로 관리 Entity Class
+ */
+@Getter
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("신호 교차로 관리")
+@Entity
+@Table(name = "TB_SC_SGNL_IXR_MNGM")
+public class TbScSgnlIxrMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @Id
+    @Column(name = "SGNL_IXR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Integer sgnlIxrNmbr;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @Column(name = "IXR_GROP", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer ixrGrop;
+
+    @ApiModelProperty("교차로 구분(0: 중요 교차로, 1: 준중요 교차로, 2: 비중요 교차로)")  // Y NUMBER(1)
+    @Column(name = "IXR_DVSN", columnDefinition = "NUMBER", length = 1)
+    private Integer ixrDvsn;
+
+    @ApiModelProperty("규격 구분(0:2004년, 1:2010년)")  // Y NUMBER(1)
+    @Column(name = "STAD_DVSN", columnDefinition = "NUMBER", length = 1)
+    private Integer stadDvsn;
+
+    @ApiModelProperty("교차로 명")  // Y VARCHAR2(50)
+    @Column(name = "IXR_NM", length = 50)
+    private String ixrNm;
+
+    @ApiModelProperty("등록 유무")  // Y NUMBER(1)
+    @Column(name = "RGST_EN", columnDefinition = "NUMBER", length = 1)
+    private Integer rgstEn;
+
+    public TbScSgnlIxrMngmDto toDto() {
+        return TbScSgnlIxrMngmDto.builder()
+                .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                .ixrGrop(this.ixrGrop)
+                .ixrDvsn(this.ixrDvsn)
+                .stadDvsn(this.stadDvsn)
+                .ixrNm(this.ixrNm)
+                .rgstEn(this.rgstEn)
+                .build();
+    }
+
+    public TbScSgnlIxrMngm(Integer sgnlIxrNmbr) {
+        this.sgnlIxrNmbr = sgnlIxrNmbr;
+    }
+
+    public void updateInfo(TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req) {
+        this.ixrGrop = req.getIxrGrop();
+        this.ixrDvsn = req.getIxrDvsn();
+        this.stadDvsn = req.getStadDvsn();
+        this.ixrNm = req.getIxrNm();
+        this.rgstEn = req.getRgstEn();
+    }
+
+}

+ 180 - 0
src/main/java/com/its/op/entity/its/scrs/TbScTodCnfg.java

@@ -0,0 +1,180 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScTodCnfgDto;
+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;
+
+/**
+ * TOD 구성 Entity Class
+ */
+@Getter
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("TOD 구성")
+@Entity
+@Table(name = "TB_SC_TOD_CNFG")
+@IdClass(TbScTodCnfgKey.class)
+public class TbScTodCnfg implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @Id
+    @Column(name = "SGNL_IXR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Integer sgnlIxrNmbr;
+
+    @ApiModelProperty("일반 제어용 플랜: 1~5, 시차 제어용 플랜: 6~10")  // N NUMBER(2)
+    @Id
+    @Column(name = "IXR_OPER_MODE", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer ixrOperMode;
+
+    @ApiModelProperty("시간별운영계획번호(1~16번까지있음)")  // N NUMBER(2)
+    @Id
+    @Column(name = "IXR_PHAS_OPER_PLAN_NMBR", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer ixrPhasOperPlanNmbr;
+
+    @ApiModelProperty("시간")  // Y NUMBER(2)
+    @Column(name = "HH", columnDefinition = "NUMBER", length = 2)
+    private Integer hh;
+
+    @ApiModelProperty("분")  // Y NUMBER(2)
+    @Column(name = "MM", columnDefinition = "NUMBER", length = 2)
+    private Integer mm;
+
+    @ApiModelProperty("주기")  // Y NUMBER(3)
+    @Column(name = "CYCL", columnDefinition = "NUMBER", length = 3)
+    private Integer cycl;
+
+    @ApiModelProperty("옵셋")  // Y NUMBER(3)
+    @Column(name = "OFST", columnDefinition = "NUMBER", length = 3)
+    private Integer ofst;
+
+    @ApiModelProperty("A링 1현시")  // Y NUMBER(3)
+    @Column(name = "ARING_1PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring1phas;
+
+    @ApiModelProperty("A링 2현시")  // Y NUMBER(3)
+    @Column(name = "ARING_2PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring2phas;
+
+    @ApiModelProperty("A링 3현시")  // Y NUMBER(3)
+    @Column(name = "ARING_3PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring3phas;
+
+    @ApiModelProperty("A링 4현시")  // Y NUMBER(3)
+    @Column(name = "ARING_4PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring4phas;
+
+    @ApiModelProperty("A링 5현시")  // Y NUMBER(3)
+    @Column(name = "ARING_5PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring5phas;
+
+    @ApiModelProperty("A링 6현시")  // Y NUMBER(3)
+    @Column(name = "ARING_6PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring6phas;
+
+    @ApiModelProperty("A링 7현시")  // Y NUMBER(3)
+    @Column(name = "ARING_7PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring7phas;
+
+    @ApiModelProperty("A링 8현시")  // Y NUMBER(3)
+    @Column(name = "ARING_8PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer aring8phas;
+
+    @ApiModelProperty("B링 1현시")  // Y NUMBER(3)
+    @Column(name = "BRING_1PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring1phas;
+
+    @ApiModelProperty("B링 2현시")  // Y NUMBER(3)
+    @Column(name = "BRING_2PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring2phas;
+
+    @ApiModelProperty("B링 3현시")  // Y NUMBER(3)
+    @Column(name = "BRING_3PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring3phas;
+
+    @ApiModelProperty("B링 4현시")  // Y NUMBER(3)
+    @Column(name = "BRING_4PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring4phas;
+
+    @ApiModelProperty("B링 5현시")  // Y NUMBER(3)
+    @Column(name = "BRING_5PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring5phas;
+
+    @ApiModelProperty("B링 6현시")  // Y NUMBER(3)
+    @Column(name = "BRING_6PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring6phas;
+
+    @ApiModelProperty("B링 7현시")  // Y NUMBER(3)
+    @Column(name = "BRING_7PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring7phas;
+
+    @ApiModelProperty("B링 8현시")  // Y NUMBER(3)
+    @Column(name = "BRING_8PHAS", columnDefinition = "NUMBER", length = 3)
+    private Integer bring8phas;
+
+    public TbScTodCnfgDto toDto() {
+        return TbScTodCnfgDto.builder()
+                .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                .ixrOperMode(this.ixrOperMode)
+                .ixrPhasOperPlanNmbr(this.ixrPhasOperPlanNmbr)
+                .hh(this.hh)
+                .mm(this.mm)
+                .cycl(this.cycl)
+                .ofst(this.ofst)
+                .aring1phas(this.aring1phas)
+                .aring2phas(this.aring2phas)
+                .aring3phas(this.aring3phas)
+                .aring4phas(this.aring4phas)
+                .aring5phas(this.aring5phas)
+                .aring6phas(this.aring6phas)
+                .aring7phas(this.aring7phas)
+                .aring8phas(this.aring8phas)
+                .bring1phas(this.bring1phas)
+                .bring2phas(this.bring2phas)
+                .bring3phas(this.bring3phas)
+                .bring4phas(this.bring4phas)
+                .bring5phas(this.bring5phas)
+                .bring6phas(this.bring6phas)
+                .bring7phas(this.bring7phas)
+                .bring8phas(this.bring8phas)
+                .build();
+    }
+
+    public TbScTodCnfg(Integer sgnlIxrNmbr, Integer ixrOperMode, Integer ixrPhasOperPlanNmbr) {
+        this.sgnlIxrNmbr = sgnlIxrNmbr;
+        this.ixrOperMode = ixrOperMode;
+        this.ixrPhasOperPlanNmbr = ixrPhasOperPlanNmbr;
+    }
+
+    public void updateInfo(TbScTodCnfgDto.TbScTodCnfgUpdReq req) {
+        this.hh = req.getHh();
+        this.mm = req.getMm();
+        this.cycl = req.getCycl();
+        this.ofst = req.getOfst();
+        this.aring1phas = req.getAring1phas();
+        this.aring2phas = req.getAring2phas();
+        this.aring3phas = req.getAring3phas();
+        this.aring4phas = req.getAring4phas();
+        this.aring5phas = req.getAring5phas();
+        this.aring6phas = req.getAring6phas();
+        this.aring7phas = req.getAring7phas();
+        this.aring8phas = req.getAring8phas();
+        this.bring1phas = req.getBring1phas();
+        this.bring2phas = req.getBring2phas();
+        this.bring3phas = req.getBring3phas();
+        this.bring4phas = req.getBring4phas();
+        this.bring5phas = req.getBring5phas();
+        this.bring6phas = req.getBring6phas();
+        this.bring7phas = req.getBring7phas();
+        this.bring8phas = req.getBring8phas();
+    }
+
+}

+ 27 - 0
src/main/java/com/its/op/entity/its/scrs/TbScTodCnfgKey.java

@@ -0,0 +1,27 @@
+package com.its.op.entity.its.scrs;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * TOD 구성 Key Class
+ */
+@Data
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbScTodCnfgKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // SGNL_IXR_NMBR, 신호 교차로 번호  // N NUMBER(4)
+    private Integer sgnlIxrNmbr;
+
+    // IXR_OPER_MODE, 일반 제어용 플랜: 1~5, 시차 제어용 플랜: 6~10  // N NUMBER(2)
+    private Integer ixrOperMode;
+
+    // IXR_PHAS_OPER_PLAN_NMBR, 시간별운영계획번호(1~16번까지있음)  // N NUMBER(2)
+    private Integer ixrPhasOperPlanNmbr;
+
+}

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

@@ -0,0 +1,115 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScIxrPhasRepository;
+import com.its.op.dto.its.scrs.TbScIxrPhasDto;
+import com.its.op.entity.its.scrs.TbScIxrPhas;
+import com.its.op.entity.its.scrs.TbScIxrPhasKey;
+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 TbScIxrPhasService {
+
+    private final TbScIxrPhasRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScIxrPhas requireOne(TbScIxrPhasKey sgnlIxrNmbr) throws NoSuchElementException {
+        Optional<TbScIxrPhas> info = this.repo.findById(sgnlIxrNmbr);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + sgnlIxrNmbr);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScIxrPhasDto> findAll() {
+        List<TbScIxrPhasDto> result = new ArrayList<>();
+        List<TbScIxrPhas> data = this.repo.findAll();
+        for (TbScIxrPhas entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScIxrPhasDto> findAllList() {
+        List<TbScIxrPhasDto> result = new ArrayList<>();
+        List<TbScIxrPhas> data = this.repo.findAllList();
+        for (TbScIxrPhas entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScIxrPhasDto findById(TbScIxrPhasKey sgnlIxrNmbr) {
+        TbScIxrPhas entity = requireOne(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScIxrPhasDto updateById(TbScIxrPhasKey sgnlIxrNmbr, TbScIxrPhasDto.TbScIxrPhasUpdReq req) {
+        TbScIxrPhas entity = requireOne(sgnlIxrNmbr);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScIxrPhasDto> mergeInfoList(List<TbScIxrPhasDto.TbScIxrPhasUpdReq> reqList) {
+        List<TbScIxrPhasDto> result = new ArrayList<>();
+        for (TbScIxrPhasDto.TbScIxrPhasUpdReq req : reqList) {
+            TbScIxrPhas obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScIxrPhasDto mergeInfo(TbScIxrPhasDto.TbScIxrPhasUpdReq req) {
+        TbScIxrPhas obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbScIxrPhasDto deleteById(TbScIxrPhasKey sgnlIxrNmbr) {
+        TbScIxrPhas entity = requireOne(sgnlIxrNmbr);
+        this.repo.deleteById(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbScIxrPhasDto> deleteByIds(List<TbScIxrPhasKey> ids) {
+        List<TbScIxrPhasDto> result = new ArrayList<>();
+        for (TbScIxrPhasKey id : ids) {
+            Optional<TbScIxrPhas> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 114 - 0
src/main/java/com/its/op/service/its/scrs/TbScSgnlIxrMngmService.java

@@ -0,0 +1,114 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScSgnlIxrMngmRepository;
+import com.its.op.dto.its.scrs.TbScSgnlIxrMngmDto;
+import com.its.op.entity.its.scrs.TbScSgnlIxrMngm;
+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 TbScSgnlIxrMngmService {
+
+    private final TbScSgnlIxrMngmRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScSgnlIxrMngm requireOne(Integer sgnlIxrNmbr) throws NoSuchElementException {
+        Optional<TbScSgnlIxrMngm> info = this.repo.findById(sgnlIxrNmbr);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + sgnlIxrNmbr);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScSgnlIxrMngmDto> findAll() {
+        List<TbScSgnlIxrMngmDto> result = new ArrayList<>();
+        List<TbScSgnlIxrMngm> data = this.repo.findAll();
+        for (TbScSgnlIxrMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScSgnlIxrMngmDto> findAllList() {
+        List<TbScSgnlIxrMngmDto> result = new ArrayList<>();
+        List<TbScSgnlIxrMngm> data = this.repo.findAllList();
+        for (TbScSgnlIxrMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScSgnlIxrMngmDto findById(Integer sgnlIxrNmbr) {
+        TbScSgnlIxrMngm entity = requireOne(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScSgnlIxrMngmDto updateById(Integer sgnlIxrNmbr, TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req) {
+        TbScSgnlIxrMngm entity = requireOne(sgnlIxrNmbr);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScSgnlIxrMngmDto> mergeInfoList(List<TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq> reqList) {
+        List<TbScSgnlIxrMngmDto> result = new ArrayList<>();
+        for (TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req : reqList) {
+            TbScSgnlIxrMngm obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScSgnlIxrMngmDto mergeInfo(TbScSgnlIxrMngmDto.TbScSgnlIxrMngmUpdReq req) {
+        TbScSgnlIxrMngm obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbScSgnlIxrMngmDto deleteById(Integer sgnlIxrNmbr) {
+        TbScSgnlIxrMngm entity = requireOne(sgnlIxrNmbr);
+        this.repo.deleteById(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbScSgnlIxrMngmDto> deleteByIds(List<Integer> ids) {
+        List<TbScSgnlIxrMngmDto> result = new ArrayList<>();
+        for (Integer id : ids) {
+            Optional<TbScSgnlIxrMngm> 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/TbScTodCnfgService.java

@@ -0,0 +1,115 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScTodCnfgRepository;
+import com.its.op.dto.its.scrs.TbScTodCnfgDto;
+import com.its.op.entity.its.scrs.TbScTodCnfg;
+import com.its.op.entity.its.scrs.TbScTodCnfgKey;
+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 TbScTodCnfgService {
+
+    private final TbScTodCnfgRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScTodCnfg requireOne(TbScTodCnfgKey sgnlIxrNmbr) throws NoSuchElementException {
+        Optional<TbScTodCnfg> info = this.repo.findById(sgnlIxrNmbr);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + sgnlIxrNmbr);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScTodCnfgDto> findAll() {
+        List<TbScTodCnfgDto> result = new ArrayList<>();
+        List<TbScTodCnfg> data = this.repo.findAll();
+        for (TbScTodCnfg entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScTodCnfgDto> findAllList() {
+        List<TbScTodCnfgDto> result = new ArrayList<>();
+        List<TbScTodCnfg> data = this.repo.findAllList();
+        for (TbScTodCnfg entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScTodCnfgDto findById(TbScTodCnfgKey sgnlIxrNmbr) {
+        TbScTodCnfg entity = requireOne(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScTodCnfgDto updateById(TbScTodCnfgKey sgnlIxrNmbr, TbScTodCnfgDto.TbScTodCnfgUpdReq req) {
+        TbScTodCnfg entity = requireOne(sgnlIxrNmbr);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScTodCnfgDto> mergeInfoList(List<TbScTodCnfgDto.TbScTodCnfgUpdReq> reqList) {
+        List<TbScTodCnfgDto> result = new ArrayList<>();
+        for (TbScTodCnfgDto.TbScTodCnfgUpdReq req : reqList) {
+            TbScTodCnfg obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScTodCnfgDto mergeInfo(TbScTodCnfgDto.TbScTodCnfgUpdReq req) {
+        TbScTodCnfg obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbScTodCnfgDto deleteById(TbScTodCnfgKey sgnlIxrNmbr) {
+        TbScTodCnfg entity = requireOne(sgnlIxrNmbr);
+        this.repo.deleteById(sgnlIxrNmbr);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbScTodCnfgDto> deleteByIds(List<TbScTodCnfgKey> ids) {
+        List<TbScTodCnfgDto> result = new ArrayList<>();
+        for (TbScTodCnfgKey id : ids) {
+            Optional<TbScTodCnfg> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů