Bladeren bron

vms symbol management add

shjung 3 jaren geleden
bovenliggende
commit
16c5ec9565

+ 77 - 0
src/main/java/com/its/op/controller/vms/TbVmsSymbLibControllerVMP0.java

@@ -0,0 +1,77 @@
+package com.its.op.controller.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbLibDto;
+import com.its.op.service.vms.TbVmsSymbLibServiceVMP0;
+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-1.VMS 관리-4.VMS 심벌이미지 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/manager/symbl-vmp0")
+public class TbVmsSymbLibControllerVMP0 {
+
+    private final TbVmsSymbLibServiceVMP0 service;
+
+    @ApiOperation(value = "VMS 심벌이미지 전체조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 개별조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto findById(@PathVariable final Short id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보변경(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto updateById(@PathVariable final Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보변경/생성-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> mergeInfoList(@RequestBody @Valid final List<TbVmsSymbLibDto.TbVmsSymbLibUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보변경/생성-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto mergeInfo(@PathVariable("id") Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보삭제-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto deleteDataById(@PathVariable("id") Short id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보삭제-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> deleteDataByIds(@RequestBody @Valid final List<Short> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 사용여부 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/usage/{id}", produces = {"application/json; charset=utf8"})
+    public Integer findUsageCountBySymbolId(@PathVariable final Short id) {
+        return this.service.findUsageCountBySymbolId(id);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 신규 ID 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public Short getNewSymbolId() {
+        return this.service.getNewSymbolId();
+    }
+
+}

+ 77 - 0
src/main/java/com/its/op/controller/vms/TbVmsSymbLibControllerVMP1.java

@@ -0,0 +1,77 @@
+package com.its.op.controller.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbLibDto;
+import com.its.op.service.vms.TbVmsSymbLibServiceVMP1;
+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-1.VMS 관리-5.VMS 소통정보 배경이미지 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/manager/symbl-vmp1")
+public class TbVmsSymbLibControllerVMP1 {
+
+    private final TbVmsSymbLibServiceVMP1 service;
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 전체조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 개별조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto findById(@PathVariable final Short id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 정보변경(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto updateById(@PathVariable final Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 정보변경/생성-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> mergeInfoList(@RequestBody @Valid final List<TbVmsSymbLibDto.TbVmsSymbLibUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 정보변경/생성-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto mergeInfo(@PathVariable("id") Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 정보삭제-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto deleteDataById(@PathVariable("id") Short id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 정보삭제-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> deleteDataByIds(@RequestBody @Valid final List<Short> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 사용여부 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/usage/{id}", produces = {"application/json; charset=utf8"})
+    public Integer findUsageCountBySymbolId(@PathVariable final Short id) {
+        return this.service.findUsageCountBySymbolId(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 배경이미지 신규 ID 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public Short getNewSymbolId() {
+        return this.service.getNewSymbolId();
+    }
+
+}

+ 77 - 0
src/main/java/com/its/op/controller/vms/TbVmsSymbLibControllerVMP2.java

@@ -0,0 +1,77 @@
+package com.its.op.controller.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbLibDto;
+import com.its.op.service.vms.TbVmsSymbLibServiceVMP2;
+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-1.VMS 관리-6.VMS 소통정보 이미지 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/vms/manager/symbl-vmp2")
+public class TbVmsSymbLibControllerVMP2 {
+
+    private final TbVmsSymbLibServiceVMP2 service;
+
+    @ApiOperation(value = "VMS 소통정보 이미지 전체조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 개별조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto findById(@PathVariable final Short id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 정보변경(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto updateById(@PathVariable final Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 정보변경/생성-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> mergeInfoList(@RequestBody @Valid final List<TbVmsSymbLibDto.TbVmsSymbLibUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 정보변경/생성-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto mergeInfo(@PathVariable("id") Short id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 정보삭제-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto deleteDataById(@PathVariable("id") Short id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 정보삭제-목록(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsSymbLibDto> deleteDataByIds(@RequestBody @Valid final List<Short> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 사용여부 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/usage/{id}", produces = {"application/json; charset=utf8"})
+    public Integer findUsageCountBySymbolId(@PathVariable final Short id) {
+        return this.service.findUsageCountBySymbolId(id);
+    }
+
+    @ApiOperation(value = "VMS 소통정보 이미지 신규 ID 조회(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public Short getNewSymbolId() {
+        return this.service.getNewSymbolId();
+    }
+
+}

+ 307 - 0
src/main/java/com/its/op/model/dto/vms/TbVmsFormObjectDto.java

@@ -0,0 +1,307 @@
+package com.its.op.model.dto.vms;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.model.entity.vms.TbVmsFormObject;
+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 FORM OBJECT DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVmsFormObjectDto(VMS FORM OBJECT)")
+public class TbVmsFormObjectDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("FORM OBJECT ID")  // N NUMBER(5)
+    @JsonProperty("form_object_id")
+    private Short formObjectId;
+
+    @ApiModelProperty("VMS FORM ID")  // N NUMBER(5)
+    @JsonProperty("vms_form_id")
+    private Short vmsFormId;
+
+    @ApiModelProperty("VMS FORM 표출 행")  // Y NUMBER(2)
+    @JsonProperty("vms_form_dspl_row")
+    private Short vmsFormDsplRow;
+
+    @ApiModelProperty("VMS FORM 표출 칼럼")  // Y NUMBER(2)
+    @JsonProperty("vms_form_dspl_clmn")
+    private Short vmsFormDsplClmn;
+
+    @ApiModelProperty("VMS FORM OBJECT 유형 코드")  // N NUMBER(3)
+    @JsonProperty("vms_form_object_type_cd")
+    private Short vmsFormObjectTypeCd;
+
+    @ApiModelProperty("VMS 글꼴 유형 코드")  // N NUMBER(3)
+    @JsonProperty("vms_font_type_cd")
+    private Short vmsFontTypeCd;
+
+    @ApiModelProperty("VMS 글꼴 색상 코드")  // N NUMBER(9)
+    @JsonProperty("vms_font_hue_cd")
+    private Short vmsFontHueCd;
+
+    @ApiModelProperty("VMS 글꼴 방식 코드")  // Y NUMBER(3)
+    @JsonProperty("vms_font_styl_cd")
+    private Short vmsFontStylCd;
+
+    @ApiModelProperty("VMS 글꼴 크기")  // Y NUMBER(3)
+    @JsonProperty("vms_font_size")
+    private Short vmsFontSize;
+
+    @ApiModelProperty("VMS 표출 문자열정열방식(0:LEFT,1:RIGHT,2:CENTER)")  // Y NUMBER(1)
+    @JsonProperty("vms_font_align")
+    private Short vmsFontAlign;
+
+    @ApiModelProperty("VMS 표출 텍스트")  // Y VARCHAR(200)
+    @JsonProperty("vms_dspl_txt")
+    private String vmsDsplTxt;
+
+    @ApiModelProperty("VMS 표출 도형")  // Y BLOB
+    @JsonProperty("vms_dspl_figr")
+    private byte[] vmsDsplFigr;
+
+    @ApiModelProperty("VMS 표출 X좌표")  // Y NUMBER(5)
+    @JsonProperty("vms_dspl_xcrdn")
+    private Short vmsDsplXcrdn;
+
+    @ApiModelProperty("VMS 표출 Y좌표")  // Y NUMBER(5)
+    @JsonProperty("vms_dspl_ycrdn")
+    private Short vmsDsplYcrdn;
+
+    @ApiModelProperty("VMS 표출 넓이")  // Y NUMBER(5)
+    @JsonProperty("vms_dspl_width")
+    private Short vmsDsplWidth;
+
+    @ApiModelProperty("VMS 표출 높이")  // Y NUMBER(5)
+    @JsonProperty("vms_dspl_height")
+    private Short vmsDsplHeight;
+
+    @ApiModelProperty("VMS 표출 점멸 여부(0:지속, 1:점멸)")  // Y NUMBER(1)
+    @JsonProperty("vms_dspl_blinking")
+    private Short vmsDsplBlinking;
+
+    @ApiModelProperty("VMS 표출 배경색상코드")  // Y NUMBER(1)
+    @JsonProperty("vms_dspl_bkcolor")
+    private Short vmsDsplBkcolor;
+
+    @ApiModelProperty("VMS 표출 크기(문자:문자길이,이미지:이미지전체크기)")  // Y NUMBER(7)
+    @JsonProperty("vms_dspl_size")
+    private Short vmsDsplSize;
+
+    @ApiModelProperty("FILL-IN 메시지 여부")  // Y CHAR(1)
+    @JsonProperty("trfc_fill_cd")
+    private String trfcFillCd;
+
+    @ApiModelProperty("심벌라이브러리 번호")  // Y NUMBER(4)
+    @JsonProperty("symb_lib_nmbr")
+    private Short symbLibNmbr;
+
+    @ApiModelProperty("VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("vms_ifsc_id")
+    private Long vmsIfscId;
+
+    // Code Description Field
+    @ApiModelProperty("VMS FORM OBJECT 유형 코드 설명")
+    @JsonProperty("vms_form_object_type_desc")    // VMS_FORM_OBJECT_TYPE_CD
+    private Short vmsFormObjectTypeDesc;
+
+    @ApiModelProperty("VMS 글꼴 유형 코드 설명")
+    @JsonProperty("vms_font_type_desc")    // VMS_FONT_TYPE_CD
+    private Short vmsFontTypeDesc;
+
+    @ApiModelProperty("VMS 글꼴 색상 코드 설명")
+    @JsonProperty("vms_font_hue_desc")    // VMS_FONT_HUE_CD
+    private Short vmsFontHueDesc;
+
+    @ApiModelProperty("VMS 글꼴 방식 코드 설명")
+    @JsonProperty("vms_font_styl_desc")    // VMS_FONT_STYL_CD
+    private Short vmsFontStylDesc;
+
+    @ApiModelProperty("FILL-IN 메시지 여부 설명")
+    @JsonProperty("trfc_fill_desc")    // TRFC_FILL_CD
+    private String trfcFillDesc;
+
+    @ApiModel("TbVmsFormObjectUpdReq(VMS FORM OBJECT 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVmsFormObjectUpdReq {
+
+        @ApiModelProperty("FORM OBJECT ID, Nullable = N, NUMBER(5)")  // N NUMBER(5)
+        @JsonProperty("form_object_id")
+        @Positive
+        private Short formObjectId;
+
+        @ApiModelProperty("VMS FORM ID, Nullable = N, NUMBER(5)")  // N NUMBER(5)
+        @JsonProperty("vms_form_id")
+        @Positive
+        private Short vmsFormId;
+
+        @ApiModelProperty("VMS FORM 표출 행, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("vms_form_dspl_row")
+        @Positive
+        private Short vmsFormDsplRow;
+
+        @ApiModelProperty("VMS FORM 표출 칼럼, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @JsonProperty("vms_form_dspl_clmn")
+        @Positive
+        private Short vmsFormDsplClmn;
+
+        @ApiModelProperty("VMS FORM OBJECT 유형 코드, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("vms_form_object_type_cd")
+        @Positive
+        private Short vmsFormObjectTypeCd;
+
+        @ApiModelProperty("VMS 글꼴 유형 코드, Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @JsonProperty("vms_font_type_cd")
+        @Positive
+        private Short vmsFontTypeCd;
+
+        @ApiModelProperty("VMS 글꼴 색상 코드, Nullable = N, NUMBER(9)")  // N NUMBER(9)
+        @JsonProperty("vms_font_hue_cd")
+        @Positive
+        private Short vmsFontHueCd;
+
+        @ApiModelProperty("VMS 글꼴 방식 코드, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("vms_font_styl_cd")
+        @Positive
+        private Short vmsFontStylCd;
+
+        @ApiModelProperty("VMS 글꼴 크기, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("vms_font_size")
+        @Positive
+        private Short vmsFontSize;
+
+        @ApiModelProperty("VMS 표출 문자열정열방식(0:LEFT,1:RIGHT,2:CENTER), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("vms_font_align")
+        @Positive
+        private Short vmsFontAlign;
+
+        @ApiModelProperty("VMS 표출 텍스트, Nullable = Y, VARCHAR(200)")  // Y VARCHAR(200)
+        @JsonProperty("vms_dspl_txt")
+        @Size(min=1, max=200)
+        private String vmsDsplTxt;
+
+        @ApiModelProperty("VMS 표출 도형, Nullable = Y, Image Data")  // Y BLOB
+        @JsonProperty("vms_dspl_figr")
+        private byte[] vmsDsplFigr;
+
+        @ApiModelProperty("VMS 표출 X좌표, Nullable = Y, NUMBER(5)")  // Y NUMBER(5)
+        @JsonProperty("vms_dspl_xcrdn")
+        @Positive
+        private Short vmsDsplXcrdn;
+
+        @ApiModelProperty("VMS 표출 Y좌표, Nullable = Y, NUMBER(5)")  // Y NUMBER(5)
+        @JsonProperty("vms_dspl_ycrdn")
+        @Positive
+        private Short vmsDsplYcrdn;
+
+        @ApiModelProperty("VMS 표출 넓이, Nullable = Y, NUMBER(5)")  // Y NUMBER(5)
+        @JsonProperty("vms_dspl_width")
+        @Positive
+        private Short vmsDsplWidth;
+
+        @ApiModelProperty("VMS 표출 높이, Nullable = Y, NUMBER(5)")  // Y NUMBER(5)
+        @JsonProperty("vms_dspl_height")
+        @Positive
+        private Short vmsDsplHeight;
+
+        @ApiModelProperty("VMS 표출 점멸 여부(0:지속, 1:점멸), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("vms_dspl_blinking")
+        @Positive
+        private Short vmsDsplBlinking;
+
+        @ApiModelProperty("VMS 표출 배경색상코드, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("vms_dspl_bkcolor")
+        @Positive
+        private Short vmsDsplBkcolor;
+
+        @ApiModelProperty("VMS 표출 크기(문자:문자길이,이미지:이미지전체크기), Nullable = Y, NUMBER(7)")  // Y NUMBER(7)
+        @JsonProperty("vms_dspl_size")
+        @Positive
+        private Short vmsDsplSize;
+
+        @ApiModelProperty("FILL-IN 메시지 여부, Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("trfc_fill_cd")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String trfcFillCd;
+
+        @ApiModelProperty("심벌라이브러리 번호, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("symb_lib_nmbr")
+        @Positive
+        private Short symbLibNmbr;
+
+        @ApiModelProperty("VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("vms_ifsc_id")
+        @Positive
+        private Long vmsIfscId;
+
+        @Builder
+        public TbVmsFormObjectUpdReq(Short form_object_id, Short vms_form_id, Short vms_form_dspl_row, Short vms_form_dspl_clmn, Short vms_form_object_type_cd, Short vms_font_type_cd, Short vms_font_hue_cd, Short vms_font_styl_cd, Short vms_font_size, Short vms_font_align, String vms_dspl_txt, byte[] vms_dspl_figr, Short vms_dspl_xcrdn, Short vms_dspl_ycrdn, Short vms_dspl_width, Short vms_dspl_height, Short vms_dspl_blinking, Short vms_dspl_bkcolor, Short vms_dspl_size, String trfc_fill_cd, Short symb_lib_nmbr, Long vms_ifsc_id) {
+            this.formObjectId = form_object_id;
+            this.vmsFormId = vms_form_id;
+            this.vmsFormDsplRow = vms_form_dspl_row;
+            this.vmsFormDsplClmn = vms_form_dspl_clmn;
+            this.vmsFormObjectTypeCd = vms_form_object_type_cd;
+            this.vmsFontTypeCd = vms_font_type_cd;
+            this.vmsFontHueCd = vms_font_hue_cd;
+            this.vmsFontStylCd = vms_font_styl_cd;
+            this.vmsFontSize = vms_font_size;
+            this.vmsFontAlign = vms_font_align;
+            this.vmsDsplTxt = vms_dspl_txt;
+            this.vmsDsplFigr = vms_dspl_figr;
+            this.vmsDsplXcrdn = vms_dspl_xcrdn;
+            this.vmsDsplYcrdn = vms_dspl_ycrdn;
+            this.vmsDsplWidth = vms_dspl_width;
+            this.vmsDsplHeight = vms_dspl_height;
+            this.vmsDsplBlinking = vms_dspl_blinking;
+            this.vmsDsplBkcolor = vms_dspl_bkcolor;
+            this.vmsDsplSize = vms_dspl_size;
+            this.trfcFillCd = trfc_fill_cd;
+            this.symbLibNmbr = symb_lib_nmbr;
+            this.vmsIfscId = vms_ifsc_id;
+        }
+
+
+        public TbVmsFormObject toEntity() {
+            TbVmsFormObject entity = TbVmsFormObject.builder()
+                    .formObjectId(this.formObjectId)
+                    .vmsFormId(this.vmsFormId)
+                    .vmsFormDsplRow(this.vmsFormDsplRow)
+                    .vmsFormDsplClmn(this.vmsFormDsplClmn)
+                    .vmsFormObjectTypeCd(this.vmsFormObjectTypeCd)
+                    .vmsFontTypeCd(this.vmsFontTypeCd)
+                    .vmsFontHueCd(this.vmsFontHueCd)
+                    .vmsFontStylCd(this.vmsFontStylCd)
+                    .vmsFontSize(this.vmsFontSize)
+                    .vmsFontAlign(this.vmsFontAlign)
+                    .vmsDsplTxt(this.vmsDsplTxt)
+                    .vmsDsplFigr(this.vmsDsplFigr)
+                    .vmsDsplXcrdn(this.vmsDsplXcrdn)
+                    .vmsDsplYcrdn(this.vmsDsplYcrdn)
+                    .vmsDsplWidth(this.vmsDsplWidth)
+                    .vmsDsplHeight(this.vmsDsplHeight)
+                    .vmsDsplBlinking(this.vmsDsplBlinking)
+                    .vmsDsplBkcolor(this.vmsDsplBkcolor)
+                    .vmsDsplSize(this.vmsDsplSize)
+                    .trfcFillCd(this.trfcFillCd)
+                    .symbLibNmbr(this.symbLibNmbr)
+                    .vmsIfscId(this.vmsIfscId)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 156 - 0
src/main/java/com/its/op/model/dto/vms/TbVmsSymbLibDto.java

@@ -0,0 +1,156 @@
+package com.its.op.model.dto.vms;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.model.entity.vms.TbVmsSymbLib;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * VMS 심벌 라이브러리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVmsSymbLibDto(VMS 심벌 라이브러리)")
+public class TbVmsSymbLibDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("심벌라이브러리 번호")  // N NUMBER(4)
+    @JsonProperty("symb_lib_nmbr")
+    private Short symbLibNmbr;
+
+    @ApiModelProperty("등록 일시")  // Y VARCHAR(14)
+    @JsonProperty("rgst_dt")
+    private String rgstDt;
+
+    @JsonIgnore
+    //@ApiModelProperty("RED 데이터")  // Y BLOB
+    //@JsonProperty("red_data")
+    private byte[] redData;
+
+    @JsonIgnore
+    //@ApiModelProperty("GREEN 데이터")  // Y BLOB
+    //@JsonProperty("green_data")
+    private byte[] greenData;
+
+    @ApiModelProperty("심벌 설명")  // Y VARCHAR(200)
+    @JsonProperty("symb_expl")
+    private String symbExpl;
+
+    @ApiModelProperty("이미지 데이터")  // Y BLOB
+    @JsonProperty("imag_data")
+    private byte[] imagData;
+
+    @JsonIgnore
+    //@ApiModelProperty("VMS 유형 코드")  // Y VARCHAR(7)
+    //@JsonProperty("vms_type_cd")
+    private String vmsTypeCd;
+
+    @JsonIgnore
+    //@ApiModelProperty("심벌 이미지 유형")  // Y VARCHAR(7)
+    //@JsonProperty("symb_imag_type")
+    private String symbImagType;
+
+    @JsonIgnore
+    //@ApiModelProperty("심벌 파일 명")  // Y VARCHAR(40)
+    //@JsonProperty("symb_file_nm")
+    private String symbFileNm;
+
+    // Code Description Field
+    //@JsonIgnore
+    //@ApiModelProperty("VMS 유형 코드 설명")
+    //@JsonProperty("vms_type_desc")    // VMS_TYPE_CD
+    //private String vmsTypeDesc;
+
+    @ApiModel("TbVmsSymbLibUpdReq(VMS 심벌 라이브러리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVmsSymbLibUpdReq {
+
+        @ApiModelProperty("심벌라이브러리 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("symb_lib_nmbr")
+        @Positive
+        private Short symbLibNmbr;
+
+        @ApiModelProperty("등록 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("rgst_dt")
+        @Size(min=1, max=14)
+        private String rgstDt;
+
+        @JsonIgnore
+        //@ApiModelProperty("RED 데이터, Nullable = Y, Image Data")  // Y BLOB
+        //@JsonProperty("red_data")
+        private byte[] redData;
+
+        @JsonIgnore
+        //@ApiModelProperty("GREEN 데이터, Nullable = Y, Image Data")  // Y BLOB
+        //@JsonProperty("green_data")
+        private byte[] greenData;
+
+        @ApiModelProperty("심벌 설명, Nullable = Y, VARCHAR(200)")  // Y VARCHAR(200)
+        @JsonProperty("symb_expl")
+        @Size(min=1, max=200)
+        private String symbExpl;
+
+        @ApiModelProperty("이미지 데이터, Nullable = Y, Image Data")  // Y BLOB
+        @JsonProperty("imag_data")
+        private byte[] imagData;
+
+        @JsonIgnore
+        //@ApiModelProperty("VMS 유형 코드, Nullable = Y, VARCHAR(7)")  // Y VARCHAR(7)
+        //@JsonProperty("vms_type_cd")
+        //@Size(min=1, max=7)
+        private String vmsTypeCd;
+
+        @JsonIgnore
+        //@ApiModelProperty("심벌 이미지 유형, Nullable = Y, VARCHAR(7)")  // Y VARCHAR(7)
+        //@JsonProperty("symb_imag_type")
+        //@Size(min=1, max=7)
+        private String symbImagType;
+
+        @JsonIgnore
+        //@ApiModelProperty("심벌 파일 명, Nullable = Y, VARCHAR(40)")  // Y VARCHAR(40)
+        //@JsonProperty("symb_file_nm")
+        //@Size(min=1, max=40)
+        private String symbFileNm;
+
+        @Builder
+        public TbVmsSymbLibUpdReq(Short symb_lib_nmbr, String rgst_dt, byte[] red_data, byte[] green_data, String symb_expl, byte[] imag_data, String vms_type_cd, String symb_imag_type, String symb_file_nm) {
+            this.symbLibNmbr = symb_lib_nmbr;
+            this.rgstDt = rgst_dt;
+            this.redData = red_data;
+            this.greenData = green_data;
+            this.symbExpl = symb_expl;
+            this.imagData = imag_data;
+            this.vmsTypeCd = vms_type_cd;
+            this.symbImagType = symb_imag_type;
+            this.symbFileNm = symb_file_nm;
+        }
+
+
+        public TbVmsSymbLib toEntity() {
+            TbVmsSymbLib entity = TbVmsSymbLib.builder()
+                    .symbLibNmbr(this.symbLibNmbr)
+                    .rgstDt(this.rgstDt)
+                    .redData(this.redData)
+                    .greenData(this.greenData)
+                    .symbExpl(this.symbExpl)
+                    .imagData(this.imagData)
+                    .vmsTypeCd(this.vmsTypeCd)
+                    .symbImagType(this.symbImagType)
+                    .symbFileNm(this.symbFileNm)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 173 - 0
src/main/java/com/its/op/model/entity/vms/TbVmsFormObject.java

@@ -0,0 +1,173 @@
+package com.its.op.model.entity.vms;
+
+import com.its.op.model.dto.vms.TbVmsFormObjectDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * VMS FORM OBJECT Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("VMS FORM OBJECT")
+@Entity
+@Table(name = "TB_VMS_FORM_OBJECT")
+@IdClass(TbVmsFormObjectKey.class)
+public class TbVmsFormObject implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("FORM OBJECT ID")  // N NUMBER(5)
+    @Id
+    @Column(name = "FORM_OBJECT_ID", nullable = false, columnDefinition = "NUMBER", length = 5)
+    private Short formObjectId;
+
+    @ApiModelProperty("VMS FORM ID")  // N NUMBER(5)
+    @Id
+    @Column(name = "VMS_FORM_ID", nullable = false, columnDefinition = "NUMBER", length = 5)
+    private Short vmsFormId;
+
+    @ApiModelProperty("VMS FORM 표출 행")  // Y NUMBER(2)
+    @Column(name = "VMS_FORM_DSPL_ROW", columnDefinition = "NUMBER", length = 2)
+    private Short vmsFormDsplRow;
+
+    @ApiModelProperty("VMS FORM 표출 칼럼")  // Y NUMBER(2)
+    @Column(name = "VMS_FORM_DSPL_CLMN", columnDefinition = "NUMBER", length = 2)
+    private Short vmsFormDsplClmn;
+
+    @ApiModelProperty("VMS FORM OBJECT 유형 코드")  // N NUMBER(3)
+    @Column(name = "VMS_FORM_OBJECT_TYPE_CD", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Short vmsFormObjectTypeCd;
+
+    @ApiModelProperty("VMS 글꼴 유형 코드")  // N NUMBER(3)
+    @Column(name = "VMS_FONT_TYPE_CD", nullable = false, columnDefinition = "NUMBER", length = 3)
+    private Short vmsFontTypeCd;
+
+    @ApiModelProperty("VMS 글꼴 색상 코드")  // N NUMBER(9)
+    @Column(name = "VMS_FONT_HUE_CD", nullable = false, columnDefinition = "NUMBER", length = 9)
+    private Short vmsFontHueCd;
+
+    @ApiModelProperty("VMS 글꼴 방식 코드")  // Y NUMBER(3)
+    @Column(name = "VMS_FONT_STYL_CD", columnDefinition = "NUMBER", length = 3)
+    private Short vmsFontStylCd;
+
+    @ApiModelProperty("VMS 글꼴 크기")  // Y NUMBER(3)
+    @Column(name = "VMS_FONT_SIZE", columnDefinition = "NUMBER", length = 3)
+    private Short vmsFontSize;
+
+    @ApiModelProperty("VMS 표출 문자열정열방식(0:LEFT,1:RIGHT,2:CENTER)")  // Y NUMBER(1)
+    @Column(name = "VMS_FONT_ALIGN", columnDefinition = "NUMBER", length = 1)
+    private Short vmsFontAlign;
+
+    @ApiModelProperty("VMS 표출 텍스트")  // Y VARCHAR(200)
+    @Column(name = "VMS_DSPL_TXT", length = 200)
+    private String vmsDsplTxt;
+
+    @ApiModelProperty("VMS 표출 도형")  // Y BLOB
+    @Lob
+    @Column(name = "VMS_DSPL_FIGR")
+    private byte[] vmsDsplFigr;
+
+    @ApiModelProperty("VMS 표출 X좌표")  // Y NUMBER(5)
+    @Column(name = "VMS_DSPL_XCRDN", columnDefinition = "NUMBER", length = 5)
+    private Short vmsDsplXcrdn;
+
+    @ApiModelProperty("VMS 표출 Y좌표")  // Y NUMBER(5)
+    @Column(name = "VMS_DSPL_YCRDN", columnDefinition = "NUMBER", length = 5)
+    private Short vmsDsplYcrdn;
+
+    @ApiModelProperty("VMS 표출 넓이")  // Y NUMBER(5)
+    @Column(name = "VMS_DSPL_WIDTH", columnDefinition = "NUMBER", length = 5)
+    private Short vmsDsplWidth;
+
+    @ApiModelProperty("VMS 표출 높이")  // Y NUMBER(5)
+    @Column(name = "VMS_DSPL_HEIGHT", columnDefinition = "NUMBER", length = 5)
+    private Short vmsDsplHeight;
+
+    @ApiModelProperty("VMS 표출 점멸 여부(0:지속, 1:점멸)")  // Y NUMBER(1)
+    @Column(name = "VMS_DSPL_BLINKING", columnDefinition = "NUMBER", length = 1)
+    private Short vmsDsplBlinking;
+
+    @ApiModelProperty("VMS 표출 배경색상코드")  // Y NUMBER(1)
+    @Column(name = "VMS_DSPL_BKCOLOR", columnDefinition = "NUMBER", length = 1)
+    private Short vmsDsplBkcolor;
+
+    @ApiModelProperty("VMS 표출 크기(문자:문자길이,이미지:이미지전체크기)")  // Y NUMBER(7)
+    @Column(name = "VMS_DSPL_SIZE", columnDefinition = "NUMBER", length = 7)
+    private Short vmsDsplSize;
+
+    @ApiModelProperty("FILL-IN 메시지 여부")  // Y CHAR(1)
+    @Column(name = "TRFC_FILL_CD", columnDefinition = "CHAR", length = 1)
+    private String trfcFillCd;
+
+    @ApiModelProperty("심벌라이브러리 번호")  // Y NUMBER(4)
+    @Column(name = "SYMBLIB_NMBR", columnDefinition = "NUMBER", length = 4)
+    private Short symbLibNmbr;
+
+    @ApiModelProperty("VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long vmsIfscId;
+
+    public TbVmsFormObjectDto toDto() {
+        TbVmsFormObjectDto dto = TbVmsFormObjectDto.builder()
+                .formObjectId(this.formObjectId)
+                .vmsFormId(this.vmsFormId)
+                .vmsFormDsplRow(this.vmsFormDsplRow)
+                .vmsFormDsplClmn(this.vmsFormDsplClmn)
+                .vmsFormObjectTypeCd(this.vmsFormObjectTypeCd)
+                .vmsFontTypeCd(this.vmsFontTypeCd)
+                .vmsFontHueCd(this.vmsFontHueCd)
+                .vmsFontStylCd(this.vmsFontStylCd)
+                .vmsFontSize(this.vmsFontSize)
+                .vmsFontAlign(this.vmsFontAlign)
+                .vmsDsplTxt(this.vmsDsplTxt)
+                .vmsDsplFigr(this.vmsDsplFigr)
+                .vmsDsplXcrdn(this.vmsDsplXcrdn)
+                .vmsDsplYcrdn(this.vmsDsplYcrdn)
+                .vmsDsplWidth(this.vmsDsplWidth)
+                .vmsDsplHeight(this.vmsDsplHeight)
+                .vmsDsplBlinking(this.vmsDsplBlinking)
+                .vmsDsplBkcolor(this.vmsDsplBkcolor)
+                .vmsDsplSize(this.vmsDsplSize)
+                .trfcFillCd(this.trfcFillCd)
+                .symbLibNmbr(this.symbLibNmbr)
+                .vmsIfscId(this.vmsIfscId)
+                .build();
+
+        return dto;
+    }
+
+    public TbVmsFormObject(Short formObjectId, Short vmsFormId) {
+        this.formObjectId = formObjectId;
+        this.vmsFormId = vmsFormId;
+    }
+
+    public void updateInfo(TbVmsFormObjectDto.TbVmsFormObjectUpdReq req) {
+        this.vmsFormDsplRow = req.getVmsFormDsplRow();
+        this.vmsFormDsplClmn = req.getVmsFormDsplClmn();
+        this.vmsFormObjectTypeCd = req.getVmsFormObjectTypeCd();
+        this.vmsFontTypeCd = req.getVmsFontTypeCd();
+        this.vmsFontHueCd = req.getVmsFontHueCd();
+        this.vmsFontStylCd = req.getVmsFontStylCd();
+        this.vmsFontSize = req.getVmsFontSize();
+        this.vmsFontAlign = req.getVmsFontAlign();
+        this.vmsDsplTxt = req.getVmsDsplTxt();
+        this.vmsDsplFigr = req.getVmsDsplFigr();
+        this.vmsDsplXcrdn = req.getVmsDsplXcrdn();
+        this.vmsDsplYcrdn = req.getVmsDsplYcrdn();
+        this.vmsDsplWidth = req.getVmsDsplWidth();
+        this.vmsDsplHeight = req.getVmsDsplHeight();
+        this.vmsDsplBlinking = req.getVmsDsplBlinking();
+        this.vmsDsplBkcolor = req.getVmsDsplBkcolor();
+        this.vmsDsplSize = req.getVmsDsplSize();
+        this.trfcFillCd = req.getTrfcFillCd();
+        this.symbLibNmbr = req.getSymbLibNmbr();
+        this.vmsIfscId = req.getVmsIfscId();
+    }
+
+}

+ 25 - 0
src/main/java/com/its/op/model/entity/vms/TbVmsFormObjectKey.java

@@ -0,0 +1,25 @@
+package com.its.op.model.entity.vms;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * VMS FORM OBJECT Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbVmsFormObjectKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // FORM_OBJECT_ID, FORM OBJECT ID  // N NUMBER(5)
+    private Short formObjectId;
+
+    // VMS_FORM_ID, VMS FORM ID  // N NUMBER(5)
+    private Short vmsFormId;
+
+}

+ 95 - 0
src/main/java/com/its/op/model/entity/vms/TbVmsSymbLib.java

@@ -0,0 +1,95 @@
+package com.its.op.model.entity.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbLibDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * VMS 심벌 라이브러리 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("VMS 심벌 라이브러리")
+@Entity
+@Table(name = "TB_VMS_SYMB_LIB")
+public class TbVmsSymbLib implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("심벌라이브러리 번호")  // N NUMBER(4)
+    @Id
+    @Column(name = "SYMBLIB_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Short symbLibNmbr;
+
+    @ApiModelProperty("등록 일시")  // Y VARCHAR(14)
+    @Column(name = "RGST_DT", length = 14)
+    private String rgstDt;
+
+    @ApiModelProperty("RED 데이터")  // Y BLOB
+    @Lob
+    @Column(name = "RED_DATA")
+    private byte[] redData;
+
+    @ApiModelProperty("GREEN 데이터")  // Y BLOB
+    @Lob
+    @Column(name = "GREEN_DATA")
+    private byte[] greenData;
+
+    @ApiModelProperty("심벌 설명")  // Y VARCHAR(200)
+    @Column(name = "SYMB_EXPL", length = 200)
+    private String symbExpl;
+
+    @ApiModelProperty("이미지 데이터")  // Y BLOB
+    @Lob
+    @Column(name = "IMAG_DATA")
+    private byte[] imagData;
+
+    @ApiModelProperty("VMS 유형 코드")  // Y VARCHAR(7)
+    @Column(name = "VMS_TYPE_CD", length = 7)
+    private String vmsTypeCd;
+
+    @ApiModelProperty("심벌 이미지 유형")  // Y VARCHAR(7)
+    @Column(name = "SYMB_IMAG_TYPE", length = 7)
+    private String symbImagType;
+
+    @ApiModelProperty("심벌 파일 명")  // Y VARCHAR(40)
+    @Column(name = "SYMB_FILE_NM", length = 40)
+    private String symbFileNm;
+
+    public TbVmsSymbLibDto toDto() {
+        TbVmsSymbLibDto dto = TbVmsSymbLibDto.builder()
+                .symbLibNmbr(this.symbLibNmbr)
+                .rgstDt(this.rgstDt)
+                .redData(this.redData)
+                .greenData(this.greenData)
+                .symbExpl(this.symbExpl)
+                .imagData(this.imagData)
+                .vmsTypeCd(this.vmsTypeCd)
+                .symbImagType(this.symbImagType)
+                .symbFileNm(this.symbFileNm)
+                .build();
+
+        return dto;
+    }
+
+    public TbVmsSymbLib(Short symbLibNmbr) {
+        this.symbLibNmbr = symbLibNmbr;
+    }
+
+    public void updateInfo(TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        this.rgstDt = req.getRgstDt();
+        this.redData = req.getRedData();
+        this.greenData = req.getGreenData();
+        this.symbExpl = req.getSymbExpl();
+        this.imagData = req.getImagData();
+        this.vmsTypeCd = req.getVmsTypeCd();
+        this.symbImagType = req.getSymbImagType();
+        this.symbFileNm = req.getSymbFileNm();
+    }
+
+}

+ 16 - 0
src/main/java/com/its/op/repository/vms/TbVmsFormObjectRepository.java

@@ -0,0 +1,16 @@
+package com.its.op.repository.vms;
+
+import com.its.op.model.entity.vms.TbVmsFormObject;
+import com.its.op.model.entity.vms.TbVmsFormObjectKey;
+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;
+
+@Repository
+public interface TbVmsFormObjectRepository extends JpaRepository<TbVmsFormObject, TbVmsFormObjectKey>, JpaSpecificationExecutor<TbVmsFormObject> {
+
+    @Query(value = "select count(p.symbLibNmbr) from TbVmsFormObject p where p.symbLibNmbr = :id")
+    Integer findUsageCountBySymbolId(Short id);
+
+}

+ 14 - 0
src/main/java/com/its/op/repository/vms/TbVmsSymbLibRepository.java

@@ -0,0 +1,14 @@
+package com.its.op.repository.vms;
+
+import com.its.op.model.entity.vms.TbVmsSymbLib;
+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;
+
+@Repository
+public interface TbVmsSymbLibRepository extends JpaRepository<TbVmsSymbLib, Short>, JpaSpecificationExecutor<TbVmsSymbLib> {
+
+    @Query(value = "SELECT NVL(MAX(SYMBLIB_NMBR), :min_val-1)+1 FROM TB_VMS_SYMB_LIB WHERE SYMBLIB_NMBR BETWEEN :min_val AND :max_val", nativeQuery = true)
+    Short getNewSymbolId(Short min_val, Short max_val);
+}

+ 109 - 0
src/main/java/com/its/op/service/vms/TbVmsSymbLibService.java

@@ -0,0 +1,109 @@
+package com.its.op.service.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbLibDto;
+import com.its.op.model.entity.vms.TbVmsSymbLib;
+import com.its.op.repository.vms.TbVmsFormObjectRepository;
+import com.its.op.repository.vms.TbVmsSymbLibRepository;
+import com.its.op.utils.ItsUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+@Slf4j
+//@RequiredArgsConstructor
+//@Service
+public class TbVmsSymbLibService {
+
+    private final String VMP_TYPE_CD;
+    private final TbVmsSymbLibRepository repo;
+    private final TbVmsFormObjectRepository formObjectRepository;
+
+    public TbVmsSymbLibService(String vmp_type_cd, TbVmsSymbLibRepository repo, TbVmsFormObjectRepository formObjectRepository) {
+        this.VMP_TYPE_CD = vmp_type_cd;
+        this.repo = repo;
+        this.formObjectRepository = formObjectRepository;
+    }
+
+    // 데이터 1건 조회, 없으면 exception
+    public TbVmsSymbLib requireOne(Short id) {
+        return repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    public List<TbVmsSymbLibDto> findAll() {
+        List<TbVmsSymbLibDto> result = new ArrayList<>();
+        List<TbVmsSymbLib> data = this.repo.findAll();
+        for (TbVmsSymbLib entity : data) {
+            if (entity.getVmsTypeCd().equals(this.VMP_TYPE_CD)) {
+                result.add(entity.toDto());
+            }
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    public TbVmsSymbLibDto findById(Short id) {
+        TbVmsSymbLib entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    public TbVmsSymbLibDto updateById(Short id, TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        TbVmsSymbLib entity = requireOne(id);
+        req.setRgstDt(ItsUtils.getSysTime());   // 현재시각으로 업데이트
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public List<TbVmsSymbLibDto> mergeInfoList(List<TbVmsSymbLibDto.TbVmsSymbLibUpdReq> reqList) {
+        List<TbVmsSymbLibDto> result = new ArrayList<>();
+        for (TbVmsSymbLibDto.TbVmsSymbLibUpdReq req : reqList) {
+            req.setRgstDt(ItsUtils.getSysTime());   // 현재시각으로 업데이트
+            TbVmsSymbLib obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public TbVmsSymbLibDto mergeInfo(TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        TbVmsSymbLib obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    public TbVmsSymbLibDto deleteById(Short id) {
+        TbVmsSymbLib entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    public List<TbVmsSymbLibDto> deleteByIds(List<Short> ids) {
+        List<TbVmsSymbLibDto> result = new ArrayList<>();
+        for (Short id : ids) {
+            Optional<TbVmsSymbLib> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+    public Integer findUsageCountBySymbolId(Short id) {
+        return this.formObjectRepository.findUsageCountBySymbolId(id);
+    }
+
+    public Short getNewSymbolId(Short min_val, Short max_val) {
+        return this.repo.getNewSymbolId(min_val, max_val);
+    }
+}

+ 20 - 0
src/main/java/com/its/op/service/vms/TbVmsSymbLibServiceVMP0.java

@@ -0,0 +1,20 @@
+package com.its.op.service.vms;
+
+import com.its.op.repository.vms.TbVmsFormObjectRepository;
+import com.its.op.repository.vms.TbVmsSymbLibRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class TbVmsSymbLibServiceVMP0 extends TbVmsSymbLibService {
+
+    public TbVmsSymbLibServiceVMP0(TbVmsSymbLibRepository repo, TbVmsFormObjectRepository formObjectRepository) {
+        super("VMP0", repo, formObjectRepository);
+    }
+
+    public Short getNewSymbolId() {
+        return getNewSymbolId((short)6000, (short)6999);
+    }
+
+}

+ 20 - 0
src/main/java/com/its/op/service/vms/TbVmsSymbLibServiceVMP1.java

@@ -0,0 +1,20 @@
+package com.its.op.service.vms;
+
+import com.its.op.repository.vms.TbVmsFormObjectRepository;
+import com.its.op.repository.vms.TbVmsSymbLibRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class TbVmsSymbLibServiceVMP1 extends TbVmsSymbLibService {
+
+    public TbVmsSymbLibServiceVMP1(TbVmsSymbLibRepository repo, TbVmsFormObjectRepository formObjectRepository) {
+        super("VMP1", repo, formObjectRepository);
+    }
+
+    public Short getNewSymbolId() {
+        return getNewSymbolId((short)7000, (short)7999);
+    }
+
+}

+ 20 - 0
src/main/java/com/its/op/service/vms/TbVmsSymbLibServiceVMP2.java

@@ -0,0 +1,20 @@
+package com.its.op.service.vms;
+
+import com.its.op.repository.vms.TbVmsFormObjectRepository;
+import com.its.op.repository.vms.TbVmsSymbLibRepository;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class TbVmsSymbLibServiceVMP2 extends TbVmsSymbLibService {
+
+    public TbVmsSymbLibServiceVMP2(TbVmsSymbLibRepository repo, TbVmsFormObjectRepository formObjectRepository) {
+        super("VMP2", repo, formObjectRepository);
+    }
+
+    public Short getNewSymbolId() {
+        return getNewSymbolId((short)8000, (short)8999);
+    }
+
+}

+ 7 - 0
src/main/java/com/its/op/utils/ItsUtils.java

@@ -66,4 +66,11 @@ public final class ItsUtils
 		return min > 10 ? "Y" : "N";
 	}
 
+	public static String getSysTime()
+	{
+		SimpleDateFormat sdfDate = new SimpleDateFormat("yyyyMMddHHmmss");
+		Date dtLog = new Date();
+		return sdfDate.format(dtLog);
+	}
+
 }