shjung há 2 anos atrás
pai
commit
4f4749fb15
22 ficheiros alterados com 1549 adições e 0 exclusões
  1. 73 0
      src/main/java/com/its/op/controller/its/scrs/TbScIxrGropMngmController.java
  2. 74 0
      src/main/java/com/its/op/controller/its/scrs/TbScPstnIxrMngmController.java
  3. 74 0
      src/main/java/com/its/op/controller/its/scrs/TbScSpclDdHmsCntlController.java
  4. 73 0
      src/main/java/com/its/op/controller/its/scrs/TbScWeekHmsCntlController.java
  5. 20 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScIxrGropMngmRepository.java
  6. 21 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScPstnIxrMngmRepository.java
  7. 21 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScSpclDdHmsCntlRepository.java
  8. 20 0
      src/main/java/com/its/op/dao/repository/its/scrs/TbScWeekHmsCntlRepository.java
  9. 74 0
      src/main/java/com/its/op/dto/its/scrs/TbScIxrGropMngmDto.java
  10. 73 0
      src/main/java/com/its/op/dto/its/scrs/TbScPstnIxrMngmDto.java
  11. 106 0
      src/main/java/com/its/op/dto/its/scrs/TbScSpclDdHmsCntlDto.java
  12. 128 0
      src/main/java/com/its/op/dto/its/scrs/TbScWeekHmsCntlDto.java
  13. 60 0
      src/main/java/com/its/op/entity/its/scrs/TbScIxrGropMngm.java
  14. 59 0
      src/main/java/com/its/op/entity/its/scrs/TbScPstnIxrMngm.java
  15. 24 0
      src/main/java/com/its/op/entity/its/scrs/TbScPstnIxrMngmKey.java
  16. 77 0
      src/main/java/com/its/op/entity/its/scrs/TbScSpclDdHmsCntl.java
  17. 24 0
      src/main/java/com/its/op/entity/its/scrs/TbScSpclDdHmsCntlKey.java
  18. 90 0
      src/main/java/com/its/op/entity/its/scrs/TbScWeekHmsCntl.java
  19. 114 0
      src/main/java/com/its/op/service/its/scrs/TbScIxrGropMngmService.java
  20. 115 0
      src/main/java/com/its/op/service/its/scrs/TbScPstnIxrMngmService.java
  21. 115 0
      src/main/java/com/its/op/service/its/scrs/TbScSpclDdHmsCntlService.java
  22. 114 0
      src/main/java/com/its/op/service/its/scrs/TbScWeekHmsCntlService.java

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

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

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

@@ -0,0 +1,74 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScPstnIxrMngmDto;
+import com.its.op.entity.its.scrs.TbScPstnIxrMngmKey;
+import com.its.op.service.its.scrs.TbScPstnIxrMngmService;
+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.관리-3.신호교차로 그룹-1.그룹소속교차료")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_pstn_ixr_mngm")
+public class TbScPstnIxrMngmController {
+
+    private final TbScPstnIxrMngmService service;
+
+    @ApiOperation(value = "소속 교차로 관리 전체조회(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScPstnIxrMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "소속 교차로 관리 전체조회(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScPstnIxrMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "소속 교차로 관리 개별조회(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class)
+    @GetMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+    public TbScPstnIxrMngmDto findById(@PathVariable("ixrGrop") final TbScPstnIxrMngmKey ixrGrop) {
+        return this.service.findById(ixrGrop);
+    }
+//
+//    @ApiOperation(value = "소속 교차로 관리 정보변경(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class)
+//    @PutMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScPstnIxrMngmDto updateById(@PathVariable("ixrGrop") final TbScPstnIxrMngmKey ixrGrop, @RequestBody @Valid final TbScPstnIxrMngmDto.TbScPstnIxrMngmUpdReq req) {
+//        return this.service.updateById(ixrGrop, req);
+//    }
+//
+//    @ApiOperation(value = "소속 교차로 관리 정보변경/생성-목록(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScPstnIxrMngmDto> mergeInfoList(@RequestBody @Valid final List<TbScPstnIxrMngmDto.TbScPstnIxrMngmUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "소속 교차로 관리 정보변경/생성-개별(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class)
+//    @PostMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScPstnIxrMngmDto mergeInfo(@PathVariable("ixrGrop") final TbScPstnIxrMngmKey ixrGrop, @RequestBody @Valid final TbScPstnIxrMngmDto.TbScPstnIxrMngmUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "소속 교차로 관리 정보삭제-개별(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class)
+//    @DeleteMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScPstnIxrMngmDto deleteDataById(@PathVariable("ixrGrop") final TbScPstnIxrMngmKey ixrGrop) {
+//        return this.service.deleteById(ixrGrop);
+//    }
+//
+//    @ApiOperation(value = "소속 교차로 관리 정보삭제-목록(TB_SC_PSTN_IXR_MNGM)", response = TbScPstnIxrMngmDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScPstnIxrMngmDto> deleteDataByIds(@RequestBody @Valid final List<TbScPstnIxrMngmKey> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

@@ -0,0 +1,74 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScSpclDdHmsCntlDto;
+import com.its.op.entity.its.scrs.TbScSpclDdHmsCntlKey;
+import com.its.op.service.its.scrs.TbScSpclDdHmsCntlService;
+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.관리-3.신호교차로 그룹-4.특수일 시각 제어")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_spcl_dd_hms_cntl")
+public class TbScSpclDdHmsCntlController {
+
+    private final TbScSpclDdHmsCntlService service;
+
+    @ApiOperation(value = "특수 일 시각 제어 전체조회(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScSpclDdHmsCntlDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "특수 일 시각 제어 전체조회(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScSpclDdHmsCntlDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "특수 일 시각 제어 개별조회(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class)
+    @GetMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+    public TbScSpclDdHmsCntlDto findById(@PathVariable("ixrGrop") final TbScSpclDdHmsCntlKey ixrGrop) {
+        return this.service.findById(ixrGrop);
+    }
+//
+//    @ApiOperation(value = "특수 일 시각 제어 정보변경(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class)
+//    @PutMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScSpclDdHmsCntlDto updateById(@PathVariable("ixrGrop") final TbScSpclDdHmsCntlKey ixrGrop, @RequestBody @Valid final TbScSpclDdHmsCntlDto.TbScSpclDdHmsCntlUpdReq req) {
+//        return this.service.updateById(ixrGrop, req);
+//    }
+//
+//    @ApiOperation(value = "특수 일 시각 제어 정보변경/생성-목록(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScSpclDdHmsCntlDto> mergeInfoList(@RequestBody @Valid final List<TbScSpclDdHmsCntlDto.TbScSpclDdHmsCntlUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "특수 일 시각 제어 정보변경/생성-개별(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class)
+//    @PostMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScSpclDdHmsCntlDto mergeInfo(@PathVariable("ixrGrop") final TbScSpclDdHmsCntlKey ixrGrop, @RequestBody @Valid final TbScSpclDdHmsCntlDto.TbScSpclDdHmsCntlUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "특수 일 시각 제어 정보삭제-개별(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class)
+//    @DeleteMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScSpclDdHmsCntlDto deleteDataById(@PathVariable("ixrGrop") final TbScSpclDdHmsCntlKey ixrGrop) {
+//        return this.service.deleteById(ixrGrop);
+//    }
+//
+//    @ApiOperation(value = "특수 일 시각 제어 정보삭제-목록(TB_SC_SPCL_DD_HMS_CNTL)", response = TbScSpclDdHmsCntlDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScSpclDdHmsCntlDto> deleteDataByIds(@RequestBody @Valid final List<TbScSpclDdHmsCntlKey> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

@@ -0,0 +1,73 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScWeekHmsCntlDto;
+import com.its.op.service.its.scrs.TbScWeekHmsCntlService;
+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.관리-3.신호교차로 그룹-3.주간 시각 제어")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/tb_sc_week_hms_cntl")
+public class TbScWeekHmsCntlController {
+
+    private final TbScWeekHmsCntlService service;
+
+    @ApiOperation(value = "주간 시각 제어 전체조회(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScWeekHmsCntlDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "주간 시각 제어 전체조회(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScWeekHmsCntlDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "주간 시각 제어 개별조회(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class)
+    @GetMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+    public TbScWeekHmsCntlDto findById(@PathVariable("ixrGrop") final Integer ixrGrop) {
+        return this.service.findById(ixrGrop);
+    }
+//
+//    @ApiOperation(value = "주간 시각 제어 정보변경(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class)
+//    @PutMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScWeekHmsCntlDto updateById(@PathVariable("ixrGrop") final Integer ixrGrop, @RequestBody @Valid final TbScWeekHmsCntlDto.TbScWeekHmsCntlUpdReq req) {
+//        return this.service.updateById(ixrGrop, req);
+//    }
+//
+//    @ApiOperation(value = "주간 시각 제어 정보변경/생성-목록(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScWeekHmsCntlDto> mergeInfoList(@RequestBody @Valid final List<TbScWeekHmsCntlDto.TbScWeekHmsCntlUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "주간 시각 제어 정보변경/생성-개별(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class)
+//    @PostMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScWeekHmsCntlDto mergeInfo(@PathVariable("ixrGrop") final Integer ixrGrop, @RequestBody @Valid final TbScWeekHmsCntlDto.TbScWeekHmsCntlUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "주간 시각 제어 정보삭제-개별(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class)
+//    @DeleteMapping(value = "/{ixrGrop}", produces = {"application/json; charset=utf8"})
+//    public TbScWeekHmsCntlDto deleteDataById(@PathVariable("ixrGrop") final Integer ixrGrop) {
+//        return this.service.deleteById(ixrGrop);
+//    }
+//
+//    @ApiOperation(value = "주간 시각 제어 정보삭제-목록(TB_SC_WEEK_HMS_CNTL)", response = TbScWeekHmsCntlDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbScWeekHmsCntlDto> deleteDataByIds(@RequestBody @Valid final List<Integer> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
+
+}

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

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

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

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

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

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

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

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

+ 74 - 0
src/main/java/com/its/op/dto/its/scrs/TbScIxrGropMngmDto.java

@@ -0,0 +1,74 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScIxrGropMngm;
+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("TbScIxrGropMngmDto(교차로 그룹 관리)")
+public class TbScIxrGropMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @JsonProperty("ixr_grop")
+    private Integer ixrGrop;
+
+    @ApiModelProperty("교차로 그룹 명")  // Y VARCHAR2(50)
+    @JsonProperty("ixr_grop_nm")
+    private String ixrGropNm;
+
+    @ApiModelProperty("등록 유무")  // Y NUMBER(1)
+    @JsonProperty("rgst_en")
+    private Integer rgstEn;
+
+    // Code Description Field
+    @ApiModel("TbScIxrGropMngmUpdReq(교차로 그룹 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScIxrGropMngmUpdReq {
+
+        @ApiModelProperty("교차로 그룹, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("ixr_grop")
+        @PositiveOrZero
+        private Integer ixrGrop;
+
+        @ApiModelProperty("교차로 그룹 명, Nullable = Y, VARCHAR2(50)")  // Y VARCHAR2(50)
+        @JsonProperty("ixr_grop_nm")
+        @Size(min=1, max=50)
+        private String ixrGropNm;
+
+        @ApiModelProperty("등록 유무, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("rgst_en")
+        @PositiveOrZero
+        private Integer rgstEn;
+
+        @Builder
+        public TbScIxrGropMngmUpdReq(Integer ixr_grop, String ixr_grop_nm, Integer rgst_en) {
+            this.ixrGrop = ixr_grop;
+            this.ixrGropNm = ixr_grop_nm;
+            this.rgstEn = rgst_en;
+        }
+
+        public TbScIxrGropMngm toEntity() {
+            return TbScIxrGropMngm.builder()
+                    .ixrGrop(this.ixrGrop)
+                    .ixrGropNm(this.ixrGropNm)
+                    .rgstEn(this.rgstEn)
+                    .build();
+        }
+
+    }
+
+}

+ 73 - 0
src/main/java/com/its/op/dto/its/scrs/TbScPstnIxrMngmDto.java

@@ -0,0 +1,73 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScPstnIxrMngm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import java.io.Serializable;
+
+/**
+ * 소속 교차로 관리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScPstnIxrMngmDto(소속 교차로 관리)")
+public class TbScPstnIxrMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @JsonProperty("ixr_grop")
+    private Integer ixrGrop;
+
+    @ApiModelProperty("일련번호")  // N NUMBER(2)
+    @JsonProperty("seq")
+    private Integer seq;
+
+    @ApiModelProperty("소속 교차로 번호")  // Y NUMBER(4)
+    @JsonProperty("pstn_ixr_nmbr")
+    private Integer pstnIxrNmbr;
+
+    // Code Description Field
+    @ApiModel("TbScPstnIxrMngmUpdReq(소속 교차로 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScPstnIxrMngmUpdReq {
+
+        @ApiModelProperty("교차로 그룹, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("ixr_grop")
+        @PositiveOrZero
+        private Integer ixrGrop;
+
+        @ApiModelProperty("일련번호, Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("seq")
+        @PositiveOrZero
+        private Integer seq;
+
+        @ApiModelProperty("소속 교차로 번호, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("pstn_ixr_nmbr")
+        @PositiveOrZero
+        private Integer pstnIxrNmbr;
+
+        @Builder
+        public TbScPstnIxrMngmUpdReq(Integer ixr_grop, Integer seq, Integer pstn_ixr_nmbr) {
+            this.ixrGrop = ixr_grop;
+            this.seq = seq;
+            this.pstnIxrNmbr = pstn_ixr_nmbr;
+        }
+
+        public TbScPstnIxrMngm toEntity() {
+            return TbScPstnIxrMngm.builder()
+                    .ixrGrop(this.ixrGrop)
+                    .seq(this.seq)
+                    .pstnIxrNmbr(this.pstnIxrNmbr)
+                    .build();
+        }
+
+    }
+
+}

+ 106 - 0
src/main/java/com/its/op/dto/its/scrs/TbScSpclDdHmsCntlDto.java

@@ -0,0 +1,106 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScSpclDdHmsCntl;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import java.io.Serializable;
+
+/**
+ * 특수 일 시각 제어 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScSpclDdHmsCntlDto(특수 일 시각 제어)")
+public class TbScSpclDdHmsCntlDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @JsonProperty("ixr_grop")
+    private Integer ixrGrop;
+
+    @ApiModelProperty("특수 일 일련번호")  // N NUMBER(2)
+    @JsonProperty("spcl_dd_seq")
+    private Integer spclDdSeq;
+
+    @ApiModelProperty("특수 일 월")  // Y NUMBER(2)
+    @JsonProperty("spcl_dd_mn")
+    private Integer spclDdMn;
+
+    @ApiModelProperty("특수 일 일")  // Y NUMBER(2)
+    @JsonProperty("spcl_dd_dd")
+    private Integer spclDdDd;
+
+    @ApiModelProperty("시각 계획 번호")  // Y NUMBER(2)
+    @JsonProperty("hms_plan_nmbr")
+    private Integer hmsPlanNmbr;
+
+    @ApiModelProperty("시간 계획 번호")  // Y NUMBER(2)
+    @JsonProperty("hh_plan_nmbr")
+    private Integer hhPlanNmbr;
+
+    // Code Description Field
+    @ApiModel("TbScSpclDdHmsCntlUpdReq(특수 일 시각 제어 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScSpclDdHmsCntlUpdReq {
+
+        @ApiModelProperty("교차로 그룹, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("ixr_grop")
+        @PositiveOrZero
+        private Integer ixrGrop;
+
+        @ApiModelProperty("특수 일 일련번호, Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("spcl_dd_seq")
+        @PositiveOrZero
+        private Integer spclDdSeq;
+
+        @ApiModelProperty("특수 일 월, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("spcl_dd_mn")
+        @PositiveOrZero
+        private Integer spclDdMn;
+
+        @ApiModelProperty("특수 일 일, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("spcl_dd_dd")
+        @PositiveOrZero
+        private Integer spclDdDd;
+
+        @ApiModelProperty("시각 계획 번호, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("hms_plan_nmbr")
+        @PositiveOrZero
+        private Integer hmsPlanNmbr;
+
+        @ApiModelProperty("시간 계획 번호, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("hh_plan_nmbr")
+        @PositiveOrZero
+        private Integer hhPlanNmbr;
+
+        @Builder
+        public TbScSpclDdHmsCntlUpdReq(Integer ixr_grop, Integer spcl_dd_seq, Integer spcl_dd_mn, Integer spcl_dd_dd, Integer hms_plan_nmbr, Integer hh_plan_nmbr) {
+            this.ixrGrop = ixr_grop;
+            this.spclDdSeq = spcl_dd_seq;
+            this.spclDdMn = spcl_dd_mn;
+            this.spclDdDd = spcl_dd_dd;
+            this.hmsPlanNmbr = hms_plan_nmbr;
+            this.hhPlanNmbr = hh_plan_nmbr;
+        }
+
+        public TbScSpclDdHmsCntl toEntity() {
+            return TbScSpclDdHmsCntl.builder()
+                    .ixrGrop(this.ixrGrop)
+                    .spclDdSeq(this.spclDdSeq)
+                    .spclDdMn(this.spclDdMn)
+                    .spclDdDd(this.spclDdDd)
+                    .hmsPlanNmbr(this.hmsPlanNmbr)
+                    .hhPlanNmbr(this.hhPlanNmbr)
+                    .build();
+        }
+
+    }
+
+}

+ 128 - 0
src/main/java/com/its/op/dto/its/scrs/TbScWeekHmsCntlDto.java

@@ -0,0 +1,128 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScWeekHmsCntl;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import java.io.Serializable;
+
+/**
+ * 주간 시각 제어 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScWeekHmsCntlDto(주간 시각 제어)")
+public class TbScWeekHmsCntlDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @JsonProperty("ixr_grop")
+    private Integer ixrGrop;
+
+    @ApiModelProperty("일요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("sun_hms_plan")
+    private Integer sunHmsPlan;
+
+    @ApiModelProperty("월요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("mon_hms_plan")
+    private Integer monHmsPlan;
+
+    @ApiModelProperty("화요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("tue_hms_plan")
+    private Integer tueHmsPlan;
+
+    @ApiModelProperty("수요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("wed_hms_plan")
+    private Integer wedHmsPlan;
+
+    @ApiModelProperty("목요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("thu_hms_plan")
+    private Integer thuHmsPlan;
+
+    @ApiModelProperty("금요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("fri_hms_plan")
+    private Integer friHmsPlan;
+
+    @ApiModelProperty("토요일 시각 계획")  // Y NUMBER(2)
+    @JsonProperty("sat_hms_plan")
+    private Integer satHmsPlan;
+
+    // Code Description Field
+    @ApiModel("TbScWeekHmsCntlUpdReq(주간 시각 제어 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScWeekHmsCntlUpdReq {
+
+        @ApiModelProperty("교차로 그룹, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("ixr_grop")
+        @PositiveOrZero
+        private Integer ixrGrop;
+
+        @ApiModelProperty("일요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("sun_hms_plan")
+        @PositiveOrZero
+        private Integer sunHmsPlan;
+
+        @ApiModelProperty("월요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("mon_hms_plan")
+        @PositiveOrZero
+        private Integer monHmsPlan;
+
+        @ApiModelProperty("화요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("tue_hms_plan")
+        @PositiveOrZero
+        private Integer tueHmsPlan;
+
+        @ApiModelProperty("수요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("wed_hms_plan")
+        @PositiveOrZero
+        private Integer wedHmsPlan;
+
+        @ApiModelProperty("목요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("thu_hms_plan")
+        @PositiveOrZero
+        private Integer thuHmsPlan;
+
+        @ApiModelProperty("금요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("fri_hms_plan")
+        @PositiveOrZero
+        private Integer friHmsPlan;
+
+        @ApiModelProperty("토요일 시각 계획, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("sat_hms_plan")
+        @PositiveOrZero
+        private Integer satHmsPlan;
+
+        @Builder
+        public TbScWeekHmsCntlUpdReq(Integer ixr_grop, Integer sun_hms_plan, Integer mon_hms_plan, Integer tue_hms_plan, Integer wed_hms_plan, Integer thu_hms_plan, Integer fri_hms_plan, Integer sat_hms_plan) {
+            this.ixrGrop = ixr_grop;
+            this.sunHmsPlan = sun_hms_plan;
+            this.monHmsPlan = mon_hms_plan;
+            this.tueHmsPlan = tue_hms_plan;
+            this.wedHmsPlan = wed_hms_plan;
+            this.thuHmsPlan = thu_hms_plan;
+            this.friHmsPlan = fri_hms_plan;
+            this.satHmsPlan = sat_hms_plan;
+        }
+
+        public TbScWeekHmsCntl toEntity() {
+            return TbScWeekHmsCntl.builder()
+                    .ixrGrop(this.ixrGrop)
+                    .sunHmsPlan(this.sunHmsPlan)
+                    .monHmsPlan(this.monHmsPlan)
+                    .tueHmsPlan(this.tueHmsPlan)
+                    .wedHmsPlan(this.wedHmsPlan)
+                    .thuHmsPlan(this.thuHmsPlan)
+                    .friHmsPlan(this.friHmsPlan)
+                    .satHmsPlan(this.satHmsPlan)
+                    .build();
+        }
+
+    }
+
+}

+ 60 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrGropMngm.java

@@ -0,0 +1,60 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScIxrGropMngmDto;
+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_IXR_GROP_MNGM")
+public class TbScIxrGropMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @Id
+    @Column(name = "IXR_GROP", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer ixrGrop;
+
+    @ApiModelProperty("교차로 그룹 명")  // Y VARCHAR2(50)
+    @Column(name = "IXR_GROP_NM", length = 50)
+    private String ixrGropNm;
+
+    @ApiModelProperty("등록 유무")  // Y NUMBER(1)
+    @Column(name = "RGST_EN", columnDefinition = "NUMBER", length = 1)
+    private Integer rgstEn;
+
+    public TbScIxrGropMngmDto toDto() {
+        return TbScIxrGropMngmDto.builder()
+                .ixrGrop(this.ixrGrop)
+                .ixrGropNm(this.ixrGropNm)
+                .rgstEn(this.rgstEn)
+                .build();
+    }
+
+    public TbScIxrGropMngm(Integer ixrGrop) {
+        this.ixrGrop = ixrGrop;
+    }
+
+    public void updateInfo(TbScIxrGropMngmDto.TbScIxrGropMngmUpdReq req) {
+        this.ixrGropNm = req.getIxrGropNm();
+        this.rgstEn = req.getRgstEn();
+    }
+
+}

+ 59 - 0
src/main/java/com/its/op/entity/its/scrs/TbScPstnIxrMngm.java

@@ -0,0 +1,59 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScPstnIxrMngmDto;
+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_PSTN_IXR_MNGM")
+@IdClass(TbScPstnIxrMngmKey.class)
+public class TbScPstnIxrMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @Id
+    @Column(name = "IXR_GROP", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer ixrGrop;
+
+    @ApiModelProperty("일련번호")  // N NUMBER(2)
+    @Id
+    @Column(name = "SEQ", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer seq;
+
+    @ApiModelProperty("소속 교차로 번호")  // Y NUMBER(4)
+    @Column(name = "PSTN_IXR_NMBR", columnDefinition = "NUMBER", length = 4)
+    private Integer pstnIxrNmbr;
+
+    public TbScPstnIxrMngmDto toDto() {
+        return TbScPstnIxrMngmDto.builder()
+                .ixrGrop(this.ixrGrop)
+                .seq(this.seq)
+                .pstnIxrNmbr(this.pstnIxrNmbr)
+                .build();
+    }
+
+    public TbScPstnIxrMngm(Integer ixrGrop, Integer seq) {
+        this.ixrGrop = ixrGrop;
+        this.seq = seq;
+    }
+
+    public void updateInfo(TbScPstnIxrMngmDto.TbScPstnIxrMngmUpdReq req) {
+        this.pstnIxrNmbr = req.getPstnIxrNmbr();
+    }
+
+}

+ 24 - 0
src/main/java/com/its/op/entity/its/scrs/TbScPstnIxrMngmKey.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 TbScPstnIxrMngmKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // IXR_GROP, 교차로 그룹  // N NUMBER(3)
+    private Integer ixrGrop;
+
+    // SEQ, 일련번호  // N NUMBER(2)
+    private Integer seq;
+
+}

+ 77 - 0
src/main/java/com/its/op/entity/its/scrs/TbScSpclDdHmsCntl.java

@@ -0,0 +1,77 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScSpclDdHmsCntlDto;
+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_SPCL_DD_HMS_CNTL")
+@IdClass(TbScSpclDdHmsCntlKey.class)
+public class TbScSpclDdHmsCntl implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @Id
+    @Column(name = "IXR_GROP", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer ixrGrop;
+
+    @ApiModelProperty("특수 일 일련번호")  // N NUMBER(2)
+    @Id
+    @Column(name = "SPCL_DD_SEQ", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer spclDdSeq;
+
+    @ApiModelProperty("특수 일 월")  // Y NUMBER(2)
+    @Column(name = "SPCL_DD_MN", columnDefinition = "NUMBER", length = 2)
+    private Integer spclDdMn;
+
+    @ApiModelProperty("특수 일 일")  // Y NUMBER(2)
+    @Column(name = "SPCL_DD_DD", columnDefinition = "NUMBER", length = 2)
+    private Integer spclDdDd;
+
+    @ApiModelProperty("시각 계획 번호")  // Y NUMBER(2)
+    @Column(name = "HMS_PLAN_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer hmsPlanNmbr;
+
+    @ApiModelProperty("시간 계획 번호")  // Y NUMBER(2)
+    @Column(name = "HH_PLAN_NMBR", columnDefinition = "NUMBER", length = 2)
+    private Integer hhPlanNmbr;
+
+    public TbScSpclDdHmsCntlDto toDto() {
+        return TbScSpclDdHmsCntlDto.builder()
+                .ixrGrop(this.ixrGrop)
+                .spclDdSeq(this.spclDdSeq)
+                .spclDdMn(this.spclDdMn)
+                .spclDdDd(this.spclDdDd)
+                .hmsPlanNmbr(this.hmsPlanNmbr)
+                .hhPlanNmbr(this.hhPlanNmbr)
+                .build();
+    }
+
+    public TbScSpclDdHmsCntl(Integer ixrGrop, Integer spclDdSeq) {
+        this.ixrGrop = ixrGrop;
+        this.spclDdSeq = spclDdSeq;
+    }
+
+    public void updateInfo(TbScSpclDdHmsCntlDto.TbScSpclDdHmsCntlUpdReq req) {
+        this.spclDdMn = req.getSpclDdMn();
+        this.spclDdDd = req.getSpclDdDd();
+        this.hmsPlanNmbr = req.getHmsPlanNmbr();
+        this.hhPlanNmbr = req.getHhPlanNmbr();
+    }
+
+}

+ 24 - 0
src/main/java/com/its/op/entity/its/scrs/TbScSpclDdHmsCntlKey.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 TbScSpclDdHmsCntlKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // IXR_GROP, 교차로 그룹  // N NUMBER(3)
+    private Integer ixrGrop;
+
+    // SPCL_DD_SEQ, 특수 일 일련번호  // N NUMBER(2)
+    private Integer spclDdSeq;
+
+}

+ 90 - 0
src/main/java/com/its/op/entity/its/scrs/TbScWeekHmsCntl.java

@@ -0,0 +1,90 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScWeekHmsCntlDto;
+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_WEEK_HMS_CNTL")
+public class TbScWeekHmsCntl implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 그룹")  // N NUMBER(3)
+    @Id
+    @Column(name = "IXR_GROP", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer ixrGrop;
+
+    @ApiModelProperty("일요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "SUN_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer sunHmsPlan;
+
+    @ApiModelProperty("월요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "MON_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer monHmsPlan;
+
+    @ApiModelProperty("화요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "TUE_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer tueHmsPlan;
+
+    @ApiModelProperty("수요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "WED_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer wedHmsPlan;
+
+    @ApiModelProperty("목요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "THU_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer thuHmsPlan;
+
+    @ApiModelProperty("금요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "FRI_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer friHmsPlan;
+
+    @ApiModelProperty("토요일 시각 계획")  // Y NUMBER(2)
+    @Column(name = "SAT_HMS_PLAN", columnDefinition = "NUMBER", length = 2)
+    private Integer satHmsPlan;
+
+    public TbScWeekHmsCntlDto toDto() {
+        return TbScWeekHmsCntlDto.builder()
+                .ixrGrop(this.ixrGrop)
+                .sunHmsPlan(this.sunHmsPlan)
+                .monHmsPlan(this.monHmsPlan)
+                .tueHmsPlan(this.tueHmsPlan)
+                .wedHmsPlan(this.wedHmsPlan)
+                .thuHmsPlan(this.thuHmsPlan)
+                .friHmsPlan(this.friHmsPlan)
+                .satHmsPlan(this.satHmsPlan)
+                .build();
+    }
+
+    public TbScWeekHmsCntl(Integer ixrGrop) {
+        this.ixrGrop = ixrGrop;
+    }
+
+    public void updateInfo(TbScWeekHmsCntlDto.TbScWeekHmsCntlUpdReq req) {
+        this.sunHmsPlan = req.getSunHmsPlan();
+        this.monHmsPlan = req.getMonHmsPlan();
+        this.tueHmsPlan = req.getTueHmsPlan();
+        this.wedHmsPlan = req.getWedHmsPlan();
+        this.thuHmsPlan = req.getThuHmsPlan();
+        this.friHmsPlan = req.getFriHmsPlan();
+        this.satHmsPlan = req.getSatHmsPlan();
+    }
+
+}

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

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

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

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

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