shjung 3 anos atrás
pai
commit
183f3a64c4
23 arquivos alterados com 1527 adições e 13 exclusões
  1. 2 2
      src/main/java/com/its/api/its/controller/vms/TbVmsFormController.java
  2. 1 1
      src/main/java/com/its/api/its/controller/vms/TbVmsIfscRltnController.java
  3. 80 0
      src/main/java/com/its/api/its/controller/vms/TbVmsLumSetSchController.java
  4. 66 0
      src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchAutoController.java
  5. 66 0
      src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchDefaultController.java
  6. 66 0
      src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchFixedController.java
  7. 80 0
      src/main/java/com/its/api/its/controller/vms/VmsCommonController.java
  8. 106 0
      src/main/java/com/its/api/its/model/dto/vms/TbVmsLumSetSchDto.java
  9. 248 0
      src/main/java/com/its/api/its/model/dto/vms/TbVmsTrfcInfrDsplSchDto.java
  10. 78 0
      src/main/java/com/its/api/its/model/entity/vms/TbVmsLumSetSch.java
  11. 25 0
      src/main/java/com/its/api/its/model/entity/vms/TbVmsLumSetSchKey.java
  12. 2 3
      src/main/java/com/its/api/its/model/entity/vms/TbVmsStts.java
  13. 2 3
      src/main/java/com/its/api/its/model/entity/vms/TbVmsSttsHs.java
  14. 153 0
      src/main/java/com/its/api/its/model/entity/vms/TbVmsTrfcInfrDsplSch.java
  15. 28 0
      src/main/java/com/its/api/its/model/entity/vms/TbVmsTrfcInfrDsplSchKey.java
  16. 9 0
      src/main/java/com/its/api/its/repository/vms/TbVmsFormRepository.java
  17. 22 0
      src/main/java/com/its/api/its/repository/vms/TbVmsLumSetSchRepository.java
  18. 12 0
      src/main/java/com/its/api/its/repository/vms/TbVmsTrfcInfrDsplSchRepository.java
  19. 70 4
      src/main/java/com/its/api/its/service/vms/TbVmsFormService.java
  20. 110 0
      src/main/java/com/its/api/its/service/vms/TbVmsLumSetSchService.java
  21. 99 0
      src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchAutoService.java
  22. 101 0
      src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchDefaultService.java
  23. 101 0
      src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchFixedService.java

+ 2 - 2
src/main/java/com/its/api/its/controller/vms/TbVmsFormController.java

@@ -11,11 +11,11 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.List;
 
-@Api(tags = "VMS FORM")
+@Api(tags = "12.VMS-2.폼관리-1.문자식/도형식 폼관리")
 @Validated
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/api/tb_vms_form")
+@RequestMapping("/api/vms/form/manage")
 public class TbVmsFormController {
 
     private final TbVmsFormService service;

+ 1 - 1
src/main/java/com/its/api/its/controller/vms/TbVmsIfscRltnController.java

@@ -52,7 +52,7 @@ public class TbVmsIfscRltnController {
     @ApiOperation(value = "VMS 정보제공구간 관계 정보변경/생성-개별(TB_VMS_IFSC_RLTN)", response = TbVmsIfscRltnDto.class)
     @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public TbVmsIfscRltnDto.TbVmsIfscRltnUpdReq mergeInfo(
-            @PathVariable("id") Long vmsCtlrNmbr, @RequestBody @Valid final TbVmsIfscRltnDto.TbVmsIfscRltnUpdReq req) {
+            @PathVariable("id") Long id, @RequestBody @Valid final TbVmsIfscRltnDto.TbVmsIfscRltnUpdReq req) {
         return this.service.mergeInfo(req);
     }
 

+ 80 - 0
src/main/java/com/its/api/its/controller/vms/TbVmsLumSetSchController.java

@@ -0,0 +1,80 @@
+package com.its.api.its.controller.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsLumSetSchDto;
+import com.its.api.its.model.entity.vms.TbVmsLumSetSchKey;
+import com.its.api.its.service.vms.TbVmsLumSetSchService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "12.VMS-3.스케줄관리-4.휘도설정 스케줄 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/schedule/lum_set_sch")
+public class TbVmsLumSetSchController {
+
+    private final TbVmsLumSetSchService service;
+
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 전체조회(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsLumSetSchDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 개별조회(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class)
+    @GetMapping(value = "/{id}/{time}", produces = {"application/json; charset=utf8"})
+    public TbVmsLumSetSchDto findById(
+            @ApiParam(name = "id", value = "VMS 제어기 관리번호", example = "10005", required = true)
+            @PathVariable final Long id,
+            @ApiParam(name = "time", value = "스케줄설정시각", example = "0600", required = true)
+            @PathVariable final String time) {
+        TbVmsLumSetSchKey key = new TbVmsLumSetSchKey(id, time);
+        return this.service.findById(key);
+    }
+/*
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 정보변경(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsLumSetSchDto updateById(@PathVariable final TbVmsLumSetSchKey id, @RequestBody @Valid final TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req) {
+        return this.service.updateById(id, req);
+    }*/
+/*
+
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 정보변경/생성-목록(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsLumSetSchDto> mergeInfoList(@RequestBody @Valid final List<TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+*/
+
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 정보변경/생성-개별(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public TbVmsLumSetSchDto mergeInfo(
+            @RequestBody @Valid final TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 정보삭제-개별(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class)
+    @DeleteMapping(value = "/{id}/{time}", produces = {"application/json; charset=utf8"})
+    public TbVmsLumSetSchDto deleteDataById(
+            @ApiParam(name = "id", value = "VMS 제어기 관리번호", example = "10005", required = true)
+            @PathVariable final Long id,
+            @ApiParam(name = "time", value = "스케줄설정시각", example = "0600", required = true)
+            @PathVariable final String time ) {
+        TbVmsLumSetSchKey key = new TbVmsLumSetSchKey(id, time);
+        return this.service.deleteById(key);
+    }
+/*
+    @ApiOperation(value = "VMS 휘도설정 스케쥴 정보삭제-목록(TB_VMS_LUM_SET_SCH)", response = TbVmsLumSetSchDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsLumSetSchDto> deleteDataByIds(@RequestBody @Valid final List<TbVmsLumSetSchKey> ids) {
+        return this.service.deleteByIds(ids);
+    }*/
+
+}

+ 66 - 0
src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchAutoController.java

@@ -0,0 +1,66 @@
+package com.its.api.its.controller.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.service.vms.TbVmsTrfcInfrDsplSchDefaultService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "12.VMS-3.스케줄관리-1.자동 스케줄 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/schedule/auto")
+public class TbVmsTrfcInfrDsplSchAutoController {
+
+    private final TbVmsTrfcInfrDsplSchDefaultService service;
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 전체조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 개별조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto findById(@PathVariable final TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto updateById(@PathVariable final TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto deleteDataById(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> deleteDataByIds(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 66 - 0
src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchDefaultController.java

@@ -0,0 +1,66 @@
+package com.its.api.its.controller.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.service.vms.TbVmsTrfcInfrDsplSchDefaultService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "12.VMS-3.스케줄관리-3.기본 스케줄 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/schedule/default")
+public class TbVmsTrfcInfrDsplSchDefaultController {
+
+    private final TbVmsTrfcInfrDsplSchDefaultService service;
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 전체조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 개별조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto findById(@PathVariable final TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto updateById(@PathVariable final TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto deleteDataById(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> deleteDataByIds(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 66 - 0
src/main/java/com/its/api/its/controller/vms/TbVmsTrfcInfrDsplSchFixedController.java

@@ -0,0 +1,66 @@
+package com.its.api.its.controller.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.service.vms.TbVmsTrfcInfrDsplSchDefaultService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "12.VMS-3.스케줄관리-1.자동 스케줄 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/schedule/fixed")
+public class TbVmsTrfcInfrDsplSchFixedController {
+
+    private final TbVmsTrfcInfrDsplSchDefaultService service;
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 전체조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 개별조회(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto findById(@PathVariable final TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto updateById(@PathVariable final TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보변경/생성-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id, @RequestBody @Valid final TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-개별(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsTrfcInfrDsplSchDto deleteDataById(@PathVariable("id") TbVmsTrfcInfrDsplSchKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 교통 정보 표출 일정 정보삭제-목록(TB_VMS_TRFC_INFR_DSPL_SCH)", response = TbVmsTrfcInfrDsplSchDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsTrfcInfrDsplSchDto> deleteDataByIds(@RequestBody @Valid final List<TbVmsTrfcInfrDsplSchKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 80 - 0
src/main/java/com/its/api/its/controller/vms/VmsCommonController.java

@@ -30,6 +30,7 @@ public class VmsCommonController {
     private final TbVmsFontShpeService fontShpeService;
     private final TbVmsFormObjectTypeService objectTypeService;
     private final TbVmsFontColrService fontColrService;
+    private final TbVmsFormService formService;
 
     @ApiOperation(value = "VMS 목록 조회(TB_VMS_CTLR)", response = TbVmsIfscRltnDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/vms-list", produces = {"application/json; charset=utf8"})
@@ -94,4 +95,83 @@ public class VmsCommonController {
         return this.objectTypeService.findAllByFormType(type);
     }
 
+    @ApiOperation(value = "VMS 폼 정보 조회(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllByVmsType(type);
+    }
+
+    // 교통정보
+    @ApiOperation(value = "VMS 폼 정보 조회-교통정보(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/traffic/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllTrafficByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllTraffic(type);
+    }
+
+    // 정체
+    @ApiOperation(value = "VMS 폼 정보 조회-정체(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/congest/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllCongestByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllCongest(type);
+    }
+
+    // 돌발
+    @ApiOperation(value = "VMS 폼 정보 조회-돌발(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/incident/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllIncidentByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllIncident(type);
+    }
+
+    // 공사/행사
+    @ApiOperation(value = "VMS 폼 정보 조회-공사/행사(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/event/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllEventByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllEvent(type);
+    }
+
+    // 홍보
+    @ApiOperation(value = "VMS 폼 정보 조회-홍보(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/notice/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllHongboByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllHongbo(type);
+    }
+
+    // 우회도로
+    @ApiOperation(value = "VMS 폼 정보 조회-우회도로(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/detour/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllDetourByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllDetour(type);
+    }
+
+    // 재난안전
+    @ApiOperation(value = "VMS 폼 정보 조회-재난안전(TB_VMS_FORM)", response = TbVmsFormDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/vms-form/safety/{type}", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormDto> findAllSafetyByVmsType(
+            @ApiParam(name = "type", value = "VMS 유형(크기) 코드", example = "VMP2", required = true)
+            @PathVariable final String type
+    ) {
+        return this.formService.findAllSafety(type);
+    }
+
 }

+ 106 - 0
src/main/java/com/its/api/its/model/dto/vms/TbVmsLumSetSchDto.java

@@ -0,0 +1,106 @@
+package com.its.api.its.model.dto.vms;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.vms.TbVmsLumSetSch;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * VMS 휘도설정 스케쥴 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVmsLumSetSchDto(VMS 휘도설정 스케쥴)")
+public class TbVmsLumSetSchDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
+    @JsonProperty("vms_ctlr_nmbr")
+    private Long vmsCtlrNmbr;
+
+    @ApiModelProperty("설정시각(HH24MI)")  // N VARCHAR(4)
+    @JsonProperty("sch_time")
+    private String schTime;
+
+    @ApiModelProperty("휘도값(0:자동,1~100)")  // N NUMBER(3)
+    @JsonProperty("luminance")
+    private Integer luminance;
+
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함)")  // N CHAR(1)
+    @JsonProperty("use_yn")
+    private String useYn;
+
+    // Code Description Field
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함) 설명")
+    @JsonProperty("use_desc")    // USE_YN
+    private String useDesc;
+
+    @ApiModelProperty("VMS ID")  // Y VARCHAR(4)
+    @Column(name = "VMS_ID", length = 4)
+    private String vmsId;
+
+    @ApiModelProperty("VMS 제어기 ID")  // Y VARCHAR(30)
+    @Column(name = "VMS_CTLR_ID", length = 30)
+    private String vmsCtlrId;
+
+    @ApiModelProperty("VMS 명")  // Y VARCHAR(40)
+    @Column(name = "VMS_NM", length = 40)
+    private String vmsNm;
+
+    @ApiModel("TbVmsLumSetSchUpdReq(VMS 휘도설정 스케쥴 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVmsLumSetSchUpdReq {
+
+        @ApiModelProperty("VMS 제어기 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("vms_ctlr_nmbr")
+        @Positive
+        private Long vmsCtlrNmbr;
+
+        @ApiModelProperty("설정시각(HH24MI), Nullable = N, VARCHAR(4)")  // N VARCHAR(4)
+        @JsonProperty("sch_time")
+        @Size(min=1, max=4)
+        private String schTime;
+
+        @ApiModelProperty("휘도값(0:자동,1~100), Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("luminance")
+        @Positive
+        private Integer luminance;
+
+        @ApiModelProperty("사용여부(Y:시용,N:사용안함), Nullable = N, CHAR(1)")  // N CHAR(1)
+        @JsonProperty("use_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String useYn;
+
+        @Builder
+        public TbVmsLumSetSchUpdReq(Long vms_ctlr_nmbr, String sch_time, Integer luminance, String use_yn) {
+            this.vmsCtlrNmbr = vms_ctlr_nmbr;
+            this.schTime = sch_time;
+            this.luminance = luminance;
+            this.useYn = use_yn;
+        }
+
+        public TbVmsLumSetSch toEntity() {
+            TbVmsLumSetSch entity = TbVmsLumSetSch.builder()
+                    .vmsCtlrNmbr(this.vmsCtlrNmbr)
+                    .schTime(this.schTime)
+                    .luminance(this.luminance)
+                    .useYn(this.useYn)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 248 - 0
src/main/java/com/its/api/its/model/dto/vms/TbVmsTrfcInfrDsplSchDto.java

@@ -0,0 +1,248 @@
+package com.its.api.its.model.dto.vms;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSch;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * VMS 교통 정보 표출 일정 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVmsTrfcInfrDsplSchDto(VMS 교통 정보 표출 일정)")
+public class TbVmsTrfcInfrDsplSchDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
+    @JsonProperty("vms_ctlr_nmbr")
+    private Long vmsCtlrNmbr;
+
+    @ApiModelProperty("스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄)")  // N VARCHAR(7)
+    @JsonProperty("trfc_situ_type_cd")
+    private String trfcSituTypeCd;
+
+    @ApiModelProperty("PHASE")  // N NUMBER(2)
+    @JsonProperty("phase")
+    private Integer phase;
+
+    @ApiModelProperty("VMS FORM ID")  // Y NUMBER(5)
+    @JsonProperty("vms_form_id")
+    private Integer vmsFormId;
+
+    @ApiModelProperty("1단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("frst_vms_ifsc_id")
+    private Long frstVmsIfscId;
+
+    @ApiModelProperty("2단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("secd_vms_ifsc_id")
+    private Long secdVmsIfscId;
+
+    @ApiModelProperty("VMS FORM 우선순위 코드")  // Y VARCHAR(3)
+    @JsonProperty("vms_form_prrt_cd")
+    private String vmsFormPrrtCd;
+
+    @ApiModelProperty("표출 시간")  // Y NUMBER(3)
+    @JsonProperty("dspl_hh")
+    private Integer dsplHh;
+
+    @ApiModelProperty("표출 시작 시간")  // Y VARCHAR(14)
+    @JsonProperty("dspl_strt_hh")
+    private String dsplStrtHh;
+
+    @ApiModelProperty("표출 종료 시간")  // Y VARCHAR(14)
+    @JsonProperty("dspl_end_hh")
+    private String dsplEndHh;
+
+    @ApiModelProperty("3단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("thir_vms_ifsc_id")
+    private Long thirVmsIfscId;
+
+    @ApiModelProperty("4단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("four_vms_ifsc_id")
+    private Long fourVmsIfscId;
+
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함)")  // Y CHAR(1)
+    @JsonProperty("use_yn")
+    private String useYn;
+
+    @ApiModelProperty("1단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("frst_img_ifsc_id")
+    private Long frstImgIfscId;
+
+    @ApiModelProperty("2단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("secd_img_ifsc_id")
+    private Long secdImgIfscId;
+
+    @ApiModelProperty("3단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("thir_img_ifsc_id")
+    private Long thirImgIfscId;
+
+    @ApiModelProperty("4단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("four_img_ifsc_id")
+    private Long fourImgIfscId;
+
+    // Code Description Field
+    @ApiModelProperty("스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄) 설명")
+    @JsonProperty("trfc_situ_type_desc")    // TRFC_SITU_TYPE_CD
+    private String trfcSituTypeDesc;
+
+    @ApiModelProperty("VMS FORM 우선순위 코드 설명")
+    @JsonProperty("vms_form_prrt_desc")    // VMS_FORM_PRRT_CD
+    private String vmsFormPrrtDesc;
+
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함) 설명")
+    @JsonProperty("use_desc")    // USE_YN
+    private String useDesc;
+
+    @ApiModelProperty("VMS FORM 이미지")  // Y BLOB
+    @JsonProperty("vms_form_imag")
+    private byte[] vmsFormImag;
+
+    @ApiModel("TbVmsTrfcInfrDsplSchUpdReq(VMS 교통 정보 표출 일정 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVmsTrfcInfrDsplSchUpdReq {
+
+        @ApiModelProperty("VMS 제어기 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("vms_ctlr_nmbr")
+        @Positive
+        private Long vmsCtlrNmbr;
+
+        @ApiModelProperty("스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄), Nullable = N, VARCHAR(7)")  // N VARCHAR(7)
+        @JsonProperty("trfc_situ_type_cd")
+        @Size(min=1, max=7)
+        private String trfcSituTypeCd;
+
+        @ApiModelProperty("PHASE, Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("phase")
+        @Positive
+        private Integer phase;
+
+        @ApiModelProperty("VMS FORM ID, Nullable = Y, NUMBER(5)")  // Y NUMBER(5)
+        @JsonProperty("vms_form_id")
+        @Positive
+        private Integer vmsFormId;
+
+        @ApiModelProperty("1단 VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("frst_vms_ifsc_id")
+        @Positive
+        private Long frstVmsIfscId;
+
+        @ApiModelProperty("2단 VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("secd_vms_ifsc_id")
+        @Positive
+        private Long secdVmsIfscId;
+
+        @ApiModelProperty("VMS FORM 우선순위 코드, Nullable = Y, VARCHAR(3)")  // Y VARCHAR(3)
+        @JsonProperty("vms_form_prrt_cd")
+        @Size(min=1, max=3)
+        private String vmsFormPrrtCd;
+
+        @ApiModelProperty("표출 시간, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("dspl_hh")
+        @Positive
+        private Integer dsplHh;
+
+        @ApiModelProperty("표출 시작 시간, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("dspl_strt_hh")
+        @Size(min=1, max=14)
+        private String dsplStrtHh;
+
+        @ApiModelProperty("표출 종료 시간, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("dspl_end_hh")
+        @Size(min=1, max=14)
+        private String dsplEndHh;
+
+        @ApiModelProperty("3단 VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("thir_vms_ifsc_id")
+        @Positive
+        private Long thirVmsIfscId;
+
+        @ApiModelProperty("4단 VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("four_vms_ifsc_id")
+        @Positive
+        private Long fourVmsIfscId;
+
+        @ApiModelProperty("사용여부(Y:시용,N:사용안함), Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("use_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String useYn;
+
+        @ApiModelProperty("1단 이미지 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("frst_img_ifsc_id")
+        @Positive
+        private Long frstImgIfscId;
+
+        @ApiModelProperty("2단 이미지 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("secd_img_ifsc_id")
+        @Positive
+        private Long secdImgIfscId;
+
+        @ApiModelProperty("3단 이미지 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("thir_img_ifsc_id")
+        @Positive
+        private Long thirImgIfscId;
+
+        @ApiModelProperty("4단 이미지 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("four_img_ifsc_id")
+        @Positive
+        private Long fourImgIfscId;
+
+        @Builder
+        public TbVmsTrfcInfrDsplSchUpdReq(Long vms_ctlr_nmbr, String trfc_situ_type_cd, Integer phase, Integer vms_form_id, Long frst_vms_ifsc_id, Long secd_vms_ifsc_id, String vms_form_prrt_cd, Integer dspl_hh, String dspl_strt_hh, String dspl_end_hh, Long thir_vms_ifsc_id, Long four_vms_ifsc_id, String use_yn, Long frst_img_ifsc_id, Long secd_img_ifsc_id, Long thir_img_ifsc_id, Long four_img_ifsc_id) {
+            this.vmsCtlrNmbr = vms_ctlr_nmbr;
+            this.trfcSituTypeCd = trfc_situ_type_cd;
+            this.phase = phase;
+            this.vmsFormId = vms_form_id;
+            this.frstVmsIfscId = frst_vms_ifsc_id;
+            this.secdVmsIfscId = secd_vms_ifsc_id;
+            this.vmsFormPrrtCd = vms_form_prrt_cd;
+            this.dsplHh = dspl_hh;
+            this.dsplStrtHh = dspl_strt_hh;
+            this.dsplEndHh = dspl_end_hh;
+            this.thirVmsIfscId = thir_vms_ifsc_id;
+            this.fourVmsIfscId = four_vms_ifsc_id;
+            this.useYn = use_yn;
+            this.frstImgIfscId = frst_img_ifsc_id;
+            this.secdImgIfscId = secd_img_ifsc_id;
+            this.thirImgIfscId = thir_img_ifsc_id;
+            this.fourImgIfscId = four_img_ifsc_id;
+        }
+
+        public TbVmsTrfcInfrDsplSch toEntity() {
+            TbVmsTrfcInfrDsplSch entity = TbVmsTrfcInfrDsplSch.builder()
+                    .vmsCtlrNmbr(this.vmsCtlrNmbr)
+                    .trfcSituTypeCd(this.trfcSituTypeCd)
+                    .phase(this.phase)
+                    .vmsFormId(this.vmsFormId)
+                    .frstVmsIfscId(this.frstVmsIfscId)
+                    .secdVmsIfscId(this.secdVmsIfscId)
+                    .vmsFormPrrtCd(this.vmsFormPrrtCd)
+                    .dsplHh(this.dsplHh)
+                    .dsplStrtHh(this.dsplStrtHh)
+                    .dsplEndHh(this.dsplEndHh)
+                    .thirVmsIfscId(this.thirVmsIfscId)
+                    .fourVmsIfscId(this.fourVmsIfscId)
+                    .useYn(this.useYn)
+                    .frstImgIfscId(this.frstImgIfscId)
+                    .secdImgIfscId(this.secdImgIfscId)
+                    .thirImgIfscId(this.thirImgIfscId)
+                    .fourImgIfscId(this.fourImgIfscId)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 78 - 0
src/main/java/com/its/api/its/model/entity/vms/TbVmsLumSetSch.java

@@ -0,0 +1,78 @@
+package com.its.api.its.model.entity.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsLumSetSchDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * VMS 휘도설정 스케쥴 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("VMS 휘도설정 스케쥴")
+@Entity
+@Table(name = "TB_VMS_LUM_SET_SCH")
+@IdClass(TbVmsLumSetSchKey.class)
+public class TbVmsLumSetSch implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
+    @Id
+    @Column(name = "VMS_CTLR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long vmsCtlrNmbr;
+
+    @ApiModelProperty("설정시각(HH24MI)")  // N VARCHAR(4)
+    @Id
+    @Column(name = "SCH_TIME", nullable = false, length = 4)
+    private String schTime;
+
+    @ApiModelProperty("휘도값(0:자동,1~100)")  // N NUMBER(3)
+    @Column(name = "LUMINANCE", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Integer luminance;
+
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함)")  // N CHAR(1)
+    @Column(name = "USE_YN", nullable = false, columnDefinition = "CHAR", length = 1)
+    private String useYn;
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="VMS_CTLR_NMBR", referencedColumnName = "VMS_CTLR_NMBR")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbVmsCtlr vms = new TbVmsCtlr();
+
+    public TbVmsLumSetSchDto toDto() {
+        TbVmsLumSetSchDto dto = TbVmsLumSetSchDto.builder()
+                .vmsCtlrNmbr(this.vmsCtlrNmbr)
+                .schTime(this.schTime)
+                .luminance(this.luminance)
+                .useYn(this.useYn)
+                .build();
+
+        dto.setUseDesc(("Y").equals(dto.getUseYn()) ? "[Y] 사용" : "[N] 사용안함");
+
+        if (this.vms != null) {
+            dto.setVmsId(this.vms.getVmsId());
+            dto.setVmsCtlrId(this.vms.getVmsCtlrId());
+            dto.setVmsNm(this.vms.getVmsNm());
+        }
+        return dto;
+    }
+
+    public TbVmsLumSetSch(Long vmsCtlrNmbr, String schTime) {
+        this.vmsCtlrNmbr = vmsCtlrNmbr;
+        this.schTime = schTime;
+    }
+
+    public void updateInfo(TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req) {
+        this.luminance = req.getLuminance();
+        this.useYn = req.getUseYn();
+    }
+
+}

+ 25 - 0
src/main/java/com/its/api/its/model/entity/vms/TbVmsLumSetSchKey.java

@@ -0,0 +1,25 @@
+package com.its.api.its.model.entity.vms;
+
+import lombok.Data;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * VMS 휘도설정 스케쥴 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbVmsLumSetSchKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // VMS_CTLR_NMBR, VMS 제어기 번호  // N NUMBER(10)
+    private Long vmsCtlrNmbr;
+
+    // SCH_TIME, 설정시각(HH24MI)  // N VARCHAR(4)
+    private String schTime;
+
+}

+ 2 - 3
src/main/java/com/its/api/its/model/entity/vms/TbVmsStts.java

@@ -107,9 +107,8 @@ public class TbVmsStts implements Serializable {
         dto.setPwerSttsDesc(CodeManager.getCodeDescShort(CodeManager.PWER_STTS_CD, dto.getPwerSttsCd()));       // 전원상태
 
         dto.setCboxDoorSttsDesc(CodeManager.getCodeDescShort(CodeManager.DOOR_STTS_CD, dto.getCboxDoorSttsCd()));   // 도어
-        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.FAN_STTS_CD,  dto.getFanSttsCd()));              // 팬상태
-        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.HETR_STTS_CD, dto.getFanSttsCd()));             // 히터상태
-
+        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.FAN_STTS_CD,  dto.getFanSttsCd()));             // 팬상태
+        dto.setHetrSttsDesc(CodeManager.getCodeDescShort(CodeManager.HETR_STTS_CD, dto.getFanSttsCd()));            // 히터상태
 
         if (this.vms != null) {
             dto.setVmsCtlrId(this.vms.getVmsCtlrId());

+ 2 - 3
src/main/java/com/its/api/its/model/entity/vms/TbVmsSttsHs.java

@@ -108,9 +108,8 @@ public class TbVmsSttsHs implements Serializable {
         dto.setPwerSttsDesc(CodeManager.getCodeDescShort(CodeManager.PWER_STTS_CD, dto.getPwerSttsCd()));       // 전원상태
 
         dto.setCboxDoorSttsDesc(CodeManager.getCodeDescShort(CodeManager.DOOR_STTS_CD, dto.getCboxDoorSttsCd()));   // 도어
-        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.FAN_STTS_CD,  dto.getFanSttsCd()));              // 팬상태
-        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.HETR_STTS_CD, dto.getFanSttsCd()));             // 히터상태
-
+        dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.FAN_STTS_CD,  dto.getFanSttsCd()));             // 팬상태
+        dto.setHetrSttsDesc(CodeManager.getCodeDescShort(CodeManager.HETR_STTS_CD, dto.getFanSttsCd()));            // 히터상태
 
         if (this.vms != null) {
             dto.setVmsCtlrId(this.vms.getVmsCtlrId());

+ 153 - 0
src/main/java/com/its/api/its/model/entity/vms/TbVmsTrfcInfrDsplSch.java

@@ -0,0 +1,153 @@
+package com.its.api.its.model.entity.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * VMS 교통 정보 표출 일정 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("VMS 교통 정보 표출 일정")
+@Entity
+@Table(name = "TB_VMS_TRFC_INFR_DSPL_SCH")
+@IdClass(TbVmsTrfcInfrDsplSchKey.class)
+public class TbVmsTrfcInfrDsplSch implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("VMS 제어기 번호")  // N NUMBER(10)
+    @Id
+    @Column(name = "VMS_CTLR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long vmsCtlrNmbr;
+
+    @ApiModelProperty("스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄)")  // N VARCHAR(7)
+    @Id
+    @Column(name = "TRFC_SITU_TYPE_CD", nullable = false, length = 7)
+    private String trfcSituTypeCd;
+
+    @ApiModelProperty("PHASE")  // N NUMBER(2)
+    @Id
+    @Column(name = "PHASE", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer phase;
+
+    @ApiModelProperty("VMS FORM ID")  // Y NUMBER(5)
+    @Column(name = "VMS_FORM_ID", columnDefinition = "NUMBER", length = 5)
+    private Integer vmsFormId;
+
+    @ApiModelProperty("1단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "FRST_VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long frstVmsIfscId;
+
+    @ApiModelProperty("2단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "SECD_VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long secdVmsIfscId;
+
+    @ApiModelProperty("VMS FORM 우선순위 코드")  // Y VARCHAR(3)
+    @Column(name = "VMS_FORM_PRRT_CD", length = 3)
+    private String vmsFormPrrtCd;
+
+    @ApiModelProperty("표출 시간")  // Y NUMBER(3)
+    @Column(name = "DSPL_HH", columnDefinition = "NUMBER", length = 3)
+    private Integer dsplHh;
+
+    @ApiModelProperty("표출 시작 시간")  // Y VARCHAR(14)
+    @Column(name = "DSPL_STRT_HH", length = 14)
+    private String dsplStrtHh;
+
+    @ApiModelProperty("표출 종료 시간")  // Y VARCHAR(14)
+    @Column(name = "DSPL_END_HH", length = 14)
+    private String dsplEndHh;
+
+    @ApiModelProperty("3단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "THIR_VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long thirVmsIfscId;
+
+    @ApiModelProperty("4단 VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "FOUR_VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long fourVmsIfscId;
+
+    @ApiModelProperty("사용여부(Y:시용,N:사용안함)")  // Y CHAR(1)
+    @Column(name = "USE_YN", columnDefinition = "CHAR", length = 1)
+    private String useYn;
+
+    @ApiModelProperty("1단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "FRST_IMG_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long frstImgIfscId;
+
+    @ApiModelProperty("2단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "SECD_IMG_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long secdImgIfscId;
+
+    @ApiModelProperty("3단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "THIR_IMG_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long thirImgIfscId;
+
+    @ApiModelProperty("4단 이미지 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "FOUR_IMG_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long fourImgIfscId;
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="VMS_FORM_ID", referencedColumnName = "VMS_FORM_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbVmsForm form = new TbVmsForm();
+
+    public TbVmsTrfcInfrDsplSchDto toDto() {
+        TbVmsTrfcInfrDsplSchDto dto = TbVmsTrfcInfrDsplSchDto.builder()
+                .vmsCtlrNmbr(this.vmsCtlrNmbr)
+                .trfcSituTypeCd(this.trfcSituTypeCd)
+                .phase(this.phase)
+                .vmsFormId(this.vmsFormId)
+                .frstVmsIfscId(this.frstVmsIfscId)
+                .secdVmsIfscId(this.secdVmsIfscId)
+                .vmsFormPrrtCd(this.vmsFormPrrtCd)
+                .dsplHh(this.dsplHh)
+                .dsplStrtHh(this.dsplStrtHh)
+                .dsplEndHh(this.dsplEndHh)
+                .thirVmsIfscId(this.thirVmsIfscId)
+                .fourVmsIfscId(this.fourVmsIfscId)
+                .useYn(this.useYn)
+                .frstImgIfscId(this.frstImgIfscId)
+                .secdImgIfscId(this.secdImgIfscId)
+                .thirImgIfscId(this.thirImgIfscId)
+                .fourImgIfscId(this.fourImgIfscId)
+                .build();
+
+        if (this.form != null) {
+            dto.setVmsFormImag(this.form.getVmsFormImag());
+        }
+        return dto;
+    }
+
+    public TbVmsTrfcInfrDsplSch(Long vmsCtlrNmbr, String trfcSituTypeCd, Integer phase) {
+        this.vmsCtlrNmbr = vmsCtlrNmbr;
+        this.trfcSituTypeCd = trfcSituTypeCd;
+        this.phase = phase;
+    }
+
+    public void updateInfo(TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        this.vmsFormId = req.getVmsFormId();
+        this.frstVmsIfscId = req.getFrstVmsIfscId();
+        this.secdVmsIfscId = req.getSecdVmsIfscId();
+        this.vmsFormPrrtCd = req.getVmsFormPrrtCd();
+        this.dsplHh = req.getDsplHh();
+        this.dsplStrtHh = req.getDsplStrtHh();
+        this.dsplEndHh = req.getDsplEndHh();
+        this.thirVmsIfscId = req.getThirVmsIfscId();
+        this.fourVmsIfscId = req.getFourVmsIfscId();
+        this.useYn = req.getUseYn();
+        this.frstImgIfscId = req.getFrstImgIfscId();
+        this.secdImgIfscId = req.getSecdImgIfscId();
+        this.thirImgIfscId = req.getThirImgIfscId();
+        this.fourImgIfscId = req.getFourImgIfscId();
+    }
+
+}

+ 28 - 0
src/main/java/com/its/api/its/model/entity/vms/TbVmsTrfcInfrDsplSchKey.java

@@ -0,0 +1,28 @@
+package com.its.api.its.model.entity.vms;
+
+import lombok.Data;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * VMS 교통 정보 표출 일정 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbVmsTrfcInfrDsplSchKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // VMS_CTLR_NMBR, VMS 제어기 번호  // N NUMBER(10)
+    private Long vmsCtlrNmbr;
+
+    // TRFC_SITU_TYPE_CD, 스케줄 유형 코드(0:교통정보,1:돌발,2:공사/행사문안,3:홍보문안,4:우회도로,5:고정스케줄, 6:기본스케줄)  // N VARCHAR(7)
+    private String trfcSituTypeCd;
+
+    // PHASE, PHASE  // N NUMBER(2)
+    private Integer phase;
+
+}

+ 9 - 0
src/main/java/com/its/api/its/repository/vms/TbVmsFormRepository.java

@@ -3,9 +3,18 @@ package com.its.api.its.repository.vms;
 import com.its.api.its.model.entity.vms.TbVmsForm;
 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 TbVmsFormRepository extends JpaRepository<TbVmsForm, Integer>, JpaSpecificationExecutor<TbVmsForm> {
 
+    @Query("select p from TbVmsForm p where p.vmsTypeCd = :vmsTypeCd")
+    List<TbVmsForm> findAllByVmsType(String vmsTypeCd);
+
+    @Query("select p from TbVmsForm p where p.vmsTypeCd = :vmsTypeCd and p.vmsFormTypeCd in :formTypeCd")
+    List<TbVmsForm> findAllByVmsTypeAndFormType(String vmsTypeCd, List<Integer> formTypeCd);
+
 }

+ 22 - 0
src/main/java/com/its/api/its/repository/vms/TbVmsLumSetSchRepository.java

@@ -0,0 +1,22 @@
+package com.its.api.its.repository.vms;
+
+import com.its.api.its.model.entity.vms.TbVmsLumSetSch;
+import com.its.api.its.model.entity.vms.TbVmsLumSetSchKey;
+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;
+import java.util.Optional;
+
+@Repository
+public interface TbVmsLumSetSchRepository extends JpaRepository<TbVmsLumSetSch, TbVmsLumSetSchKey>, JpaSpecificationExecutor<TbVmsLumSetSch> {
+
+    @Query("select p from TbVmsLumSetSch p inner join fetch p.vms where p.vmsCtlrNmbr = :id and p.schTime = :schTime")
+    Optional<TbVmsLumSetSch> findByKey(Long id, String schTime);
+
+    @Query("select p from TbVmsLumSetSch p inner join fetch p.vms")
+    List<TbVmsLumSetSch> findAll();
+
+}

+ 12 - 0
src/main/java/com/its/api/its/repository/vms/TbVmsTrfcInfrDsplSchRepository.java

@@ -0,0 +1,12 @@
+package com.its.api.its.repository.vms;
+
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSch;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TbVmsTrfcInfrDsplSchRepository extends JpaRepository<TbVmsTrfcInfrDsplSch, TbVmsTrfcInfrDsplSchKey>, JpaSpecificationExecutor<TbVmsTrfcInfrDsplSch> {
+
+}

+ 70 - 4
src/main/java/com/its/api/its/service/vms/TbVmsFormService.java

@@ -8,10 +8,7 @@ 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;
+import java.util.*;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -37,6 +34,75 @@ public class TbVmsFormService {
         return result;
     }
 
+    /**
+     * VMS TYPE(크기) 에 해당되는 폼 정보를 조회한다.
+     * @param vmsTypeCd
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<TbVmsFormDto> findAllByVmsType(String vmsTypeCd) {
+        List<TbVmsFormDto> result = new ArrayList<>();
+        log.error("SELECT");
+        List<TbVmsForm> data = this.repo.findAllByVmsType(vmsTypeCd);
+        log.error("FETCH");
+        for (TbVmsForm entity : data) {
+            result.add(entity.toDto());
+        }
+        log.error("END");
+        return result;
+    }
+
+    /**
+     * VMS TYPE(크기) 및 폼 유형에 해당되는 폼 정보를 조회한다.
+     * @param vmsTypeCd
+     * @param formTypeCd
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<TbVmsFormDto> findAllByVmsTypeAndFormType(String vmsTypeCd, List<Integer> formTypeCd) {
+        List<TbVmsFormDto> result = new ArrayList<>();
+        List<TbVmsForm> data = this.repo.findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+        for (TbVmsForm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+    // 교통정보
+    public List<TbVmsFormDto> findAllTraffic(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(11, 12, 13, 14, 15);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 정체
+    public List<TbVmsFormDto> findAllCongest(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(16);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 돌발
+    public List<TbVmsFormDto> findAllIncident(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(20);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 공사/행사
+    public List<TbVmsFormDto> findAllEvent(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(30);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 홍보
+    public List<TbVmsFormDto> findAllHongbo(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(40);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 우회도로
+    public List<TbVmsFormDto> findAllDetour(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(50);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+    // 재난안전
+    public List<TbVmsFormDto> findAllSafety(String vmsTypeCd) {
+        List<Integer> formTypeCd = Arrays.asList(60);
+        return findAllByVmsTypeAndFormType(vmsTypeCd, formTypeCd);
+    }
+
     // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
     @Transactional(readOnly = true)
     public TbVmsFormDto findById(Integer id) {

+ 110 - 0
src/main/java/com/its/api/its/service/vms/TbVmsLumSetSchService.java

@@ -0,0 +1,110 @@
+package com.its.api.its.service.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsLumSetSchDto;
+import com.its.api.its.model.entity.vms.TbVmsLumSetSch;
+import com.its.api.its.model.entity.vms.TbVmsLumSetSchKey;
+import com.its.api.its.repository.vms.TbVmsLumSetSchRepository;
+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 TbVmsLumSetSchService {
+
+    private final TbVmsLumSetSchRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVmsLumSetSch requireOne(TbVmsLumSetSchKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbVmsLumSetSchDto> findAll() {
+        List<TbVmsLumSetSchDto> result = new ArrayList<>();
+        List<TbVmsLumSetSch> data = this.repo.findAll();
+        for (TbVmsLumSetSch entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbVmsLumSetSchDto findById(TbVmsLumSetSchKey key) {
+        Optional<TbVmsLumSetSch> data = this.repo.findByKey(key.getVmsCtlrNmbr(), key.getSchTime());
+        return data.orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + key.getVmsCtlrNmbr())).toDto();
+
+/*
+        if (data.isPresent()) {
+            return data.get().toDto();
+        }
+        throw new NoSuchElementException("데이터가 존재하지 않습니다: " + key.getVmsCtlrNmbr());
+*/
+/*
+        TbVmsLumSetSch entity = requireOne(id);
+        return entity.toDto();
+*/
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbVmsLumSetSchDto updateById(TbVmsLumSetSchKey id, TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req) {
+        TbVmsLumSetSch entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbVmsLumSetSchDto> mergeInfoList(List<TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq> reqList) {
+        List<TbVmsLumSetSchDto> result = new ArrayList<>();
+        for (TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req : reqList) {
+            TbVmsLumSetSch obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbVmsLumSetSchDto mergeInfo(TbVmsLumSetSchDto.TbVmsLumSetSchUpdReq req) {
+        TbVmsLumSetSch obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbVmsLumSetSchDto deleteById(TbVmsLumSetSchKey id) {
+        TbVmsLumSetSch entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbVmsLumSetSchDto> deleteByIds(List<TbVmsLumSetSchKey> ids) {
+        List<TbVmsLumSetSchDto> result = new ArrayList<>();
+        for (TbVmsLumSetSchKey id : ids) {
+            Optional<TbVmsLumSetSch> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 99 - 0
src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchAutoService.java

@@ -0,0 +1,99 @@
+package com.its.api.its.service.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSch;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.repository.vms.TbVmsTrfcInfrDsplSchRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbVmsTrfcInfrDsplSchAutoService {
+
+    private final TbVmsTrfcInfrDsplSchRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVmsTrfcInfrDsplSch requireOne(TbVmsTrfcInfrDsplSchKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        List<TbVmsTrfcInfrDsplSch> data = this.repo.findAll();
+        data.forEach(obj -> {
+            if (!("5").equals(obj.getTrfcSituTypeCd()) &&
+                !("6").equals(obj.getTrfcSituTypeCd())) {
+                result.add(obj.toDto());
+            }
+        });
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbVmsTrfcInfrDsplSchDto findById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto updateById(TbVmsTrfcInfrDsplSchKey id, TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> reqList) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req : reqList) {
+            TbVmsTrfcInfrDsplSch obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto deleteById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> deleteByIds(List<TbVmsTrfcInfrDsplSchKey> ids) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchKey id : ids) {
+            Optional<TbVmsTrfcInfrDsplSch> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 101 - 0
src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchDefaultService.java

@@ -0,0 +1,101 @@
+package com.its.api.its.service.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSch;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.repository.vms.TbVmsTrfcInfrDsplSchRepository;
+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 TbVmsTrfcInfrDsplSchDefaultService {
+
+    private final TbVmsTrfcInfrDsplSchRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVmsTrfcInfrDsplSch requireOne(TbVmsTrfcInfrDsplSchKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        List<TbVmsTrfcInfrDsplSch> data = this.repo.findAll();
+        data.forEach(obj -> {
+            if (("6").equals(obj.getTrfcSituTypeCd())) {
+                result.add(obj.toDto());
+            }
+        });
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbVmsTrfcInfrDsplSchDto findById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto updateById(TbVmsTrfcInfrDsplSchKey id, TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> reqList) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req : reqList) {
+            TbVmsTrfcInfrDsplSch obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto deleteById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> deleteByIds(List<TbVmsTrfcInfrDsplSchKey> ids) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchKey id : ids) {
+            Optional<TbVmsTrfcInfrDsplSch> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 101 - 0
src/main/java/com/its/api/its/service/vms/TbVmsTrfcInfrDsplSchFixedService.java

@@ -0,0 +1,101 @@
+package com.its.api.its.service.vms;
+
+import com.its.api.its.model.dto.vms.TbVmsTrfcInfrDsplSchDto;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSch;
+import com.its.api.its.model.entity.vms.TbVmsTrfcInfrDsplSchKey;
+import com.its.api.its.repository.vms.TbVmsTrfcInfrDsplSchRepository;
+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 TbVmsTrfcInfrDsplSchFixedService {
+
+    private final TbVmsTrfcInfrDsplSchRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVmsTrfcInfrDsplSch requireOne(TbVmsTrfcInfrDsplSchKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbVmsTrfcInfrDsplSchDto> findAll() {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        List<TbVmsTrfcInfrDsplSch> data = this.repo.findAll();
+        data.forEach(obj -> {
+            if (("5").equals(obj.getTrfcSituTypeCd())) {
+                result.add(obj.toDto());
+            }
+        });
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbVmsTrfcInfrDsplSchDto findById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto updateById(TbVmsTrfcInfrDsplSchKey id, TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> mergeInfoList(List<TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq> reqList) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req : reqList) {
+            TbVmsTrfcInfrDsplSch obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto mergeInfo(TbVmsTrfcInfrDsplSchDto.TbVmsTrfcInfrDsplSchUpdReq req) {
+        TbVmsTrfcInfrDsplSch obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbVmsTrfcInfrDsplSchDto deleteById(TbVmsTrfcInfrDsplSchKey id) {
+        TbVmsTrfcInfrDsplSch entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbVmsTrfcInfrDsplSchDto> deleteByIds(List<TbVmsTrfcInfrDsplSchKey> ids) {
+        List<TbVmsTrfcInfrDsplSchDto> result = new ArrayList<>();
+        for (TbVmsTrfcInfrDsplSchKey id : ids) {
+            Optional<TbVmsTrfcInfrDsplSch> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}