Forráskód Böngészése

vms symbol management add

shjung 3 éve
szülő
commit
e351b3730a

+ 98 - 0
src/main/java/com/its/op/model/dto/vms/TbVmsSymbIfscDto.java

@@ -0,0 +1,98 @@
+package com.its.op.model.dto.vms;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.model.entity.vms.TbVmsSymbIfsc;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Positive;
+import java.io.Serializable;
+
+/**
+ * VMS 심벌 라이브러리 셀 구간정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVmsSymbIfscDto(VMS 심벌 라이브러리 셀 구간정보)")
+public class TbVmsSymbIfscDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("심벌라이브러리 번호")  // N NUMBER(4)
+    @JsonProperty("symblib_nmbr")
+    private Short symblibNmbr;
+
+    @ApiModelProperty("셀 ID")  // N NUMBER(4)
+    @JsonProperty("cell_id")
+    private Short cellId;
+
+    @ApiModelProperty("이미지내 셀좌표 X")  // Y NUMBER(4)
+    @JsonProperty("posx")
+    private Short posx;
+
+    @ApiModelProperty("이미지내 셀좌표 Y")  // Y NUMBER(4)
+    @JsonProperty("posy")
+    private Short posy;
+
+    @ApiModelProperty("VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @JsonProperty("vms_ifsc_id")
+    private Long vmsIfscId;
+
+    // Code Description Field
+    @ApiModel("TbVmsSymbIfscUpdReq(VMS 심벌 라이브러리 셀 구간정보 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVmsSymbIfscUpdReq {
+
+        @ApiModelProperty("심벌라이브러리 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("symblib_nmbr")
+        @Positive
+        private Short symblibNmbr;
+
+        @ApiModelProperty("셀 ID, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("cell_id")
+        @Positive
+        private Short cellId;
+
+        @ApiModelProperty("이미지내 셀좌표 X, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("posx")
+        @Positive
+        private Short posx;
+
+        @ApiModelProperty("이미지내 셀좌표 Y, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("posy")
+        @Positive
+        private Short posy;
+
+        @ApiModelProperty("VMS 정보제공구간 ID, Nullable = Y, NUMBER(10)")  // Y NUMBER(10)
+        @JsonProperty("vms_ifsc_id")
+        @Positive
+        private Long vmsIfscId;
+
+        @Builder
+        public TbVmsSymbIfscUpdReq(Short symblib_nmbr, Short cell_id, Short posx, Short posy, Long vms_ifsc_id) {
+            this.symblibNmbr = symblib_nmbr;
+            this.cellId = cell_id;
+            this.posx = posx;
+            this.posy = posy;
+            this.vmsIfscId = vms_ifsc_id;
+        }
+
+
+        public TbVmsSymbIfsc toEntity() {
+            TbVmsSymbIfsc entity = TbVmsSymbIfsc.builder()
+                    .symblibNmbr(this.symblibNmbr)
+                    .cellId(this.cellId)
+                    .posx(this.posx)
+                    .posy(this.posy)
+                    .vmsIfscId(this.vmsIfscId)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 70 - 0
src/main/java/com/its/op/model/entity/vms/TbVmsSymbIfsc.java

@@ -0,0 +1,70 @@
+package com.its.op.model.entity.vms;
+
+import com.its.op.model.dto.vms.TbVmsSymbIfscDto;
+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_IFSC")
+@IdClass(TbVmsSymbIfscKey.class)
+public class TbVmsSymbIfsc 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("셀 ID")  // N NUMBER(4)
+    @Id
+    @Column(name = "CELL_ID", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Short cellId;
+
+    @ApiModelProperty("이미지내 셀좌표 X")  // Y NUMBER(4)
+    @Column(name = "POSX", columnDefinition = "NUMBER", length = 4)
+    private Short posx;
+
+    @ApiModelProperty("이미지내 셀좌표 Y")  // Y NUMBER(4)
+    @Column(name = "POSY", columnDefinition = "NUMBER", length = 4)
+    private Short posy;
+
+    @ApiModelProperty("VMS 정보제공구간 ID")  // Y NUMBER(10)
+    @Column(name = "VMS_IFSC_ID", columnDefinition = "NUMBER", length = 10)
+    private Long vmsIfscId;
+
+    public TbVmsSymbIfscDto toDto() {
+        TbVmsSymbIfscDto dto = TbVmsSymbIfscDto.builder()
+                .symblibNmbr(this.symblibNmbr)
+                .cellId(this.cellId)
+                .posx(this.posx)
+                .posy(this.posy)
+                .vmsIfscId(this.vmsIfscId)
+                .build();
+
+        return dto;
+    }
+
+    public TbVmsSymbIfsc(Short symblibNmbr, Short cellId) {
+        this.symblibNmbr = symblibNmbr;
+        this.cellId = cellId;
+    }
+
+    public void updateInfo(TbVmsSymbIfscDto.TbVmsSymbIfscUpdReq req) {
+        this.posx = req.getPosx();
+        this.posy = req.getPosy();
+        this.vmsIfscId = req.getVmsIfscId();
+    }
+
+}

+ 25 - 0
src/main/java/com/its/op/model/entity/vms/TbVmsSymbIfscKey.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 심벌 라이브러리 셀 구간정보 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbVmsSymbIfscKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // SYMBLIB_NMBR, 심벌라이브러리 번호  // N NUMBER(4)
+    private Short symblibNmbr;
+
+    // CELL_ID, 셀 ID  // N NUMBER(4)
+    private Short cellId;
+
+}

+ 12 - 0
src/main/java/com/its/op/repository/vms/TbVmsSymbIfscRepository.java

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

+ 91 - 0
src/main/java/com/its/op/service/vms/TbVmsSymbIfscService.java

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