Quellcode durchsuchen

vms ifsc management add

shjung vor 3 Jahren
Ursprung
Commit
69a22e49fe

+ 66 - 0
src/main/java/com/its/op/controller/vms/TbVmsFormObjectController.java

@@ -0,0 +1,66 @@
+package com.its.op.controller.vms;
+
+import com.its.op.model.dto.vms.TbVmsFormObjectDto;
+import com.its.op.model.entity.vms.TbVmsFormObjectKey;
+import com.its.op.service.vms.TbVmsFormObjectService;
+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 = "VMS FORM OBJECT")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/tb_vms_form_object")
+public class TbVmsFormObjectController {
+
+    private final TbVmsFormObjectService service;
+
+    @ApiOperation(value = "VMS FORM OBJECT 전체조회(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormObjectDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 개별조회(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormObjectDto findById(@PathVariable final TbVmsFormObjectKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 정보변경(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormObjectDto updateById(@PathVariable final TbVmsFormObjectKey id, @RequestBody @Valid final TbVmsFormObjectDto.TbVmsFormObjectUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 정보변경/생성-목록(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormObjectDto> mergeInfoList(@RequestBody @Valid final List<TbVmsFormObjectDto.TbVmsFormObjectUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 정보변경/생성-개별(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormObjectDto mergeInfo(@PathVariable("id") TbVmsFormObjectKey id, @RequestBody @Valid final TbVmsFormObjectDto.TbVmsFormObjectUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 정보삭제-개별(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormObjectDto deleteDataById(@PathVariable("id") TbVmsFormObjectKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS FORM OBJECT 정보삭제-목록(TB_VMS_FORM_OBJECT)", response = TbVmsFormObjectDto.class)
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbVmsFormObjectDto> deleteDataByIds(@RequestBody @Valid final List<TbVmsFormObjectKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 3 - 3
src/main/java/com/its/op/controller/vms/TbVmsIfscController.java

@@ -75,10 +75,10 @@ public class TbVmsIfscController {
         return this.cmtrGradService.saveAllIfscCmtrGradInfo(req);
     }
 
-    @ApiOperation(value = "VMS 소통정보 배경이미지 사용여부 조회(TB_VMS_SYMB_LIB)", response = Integer.class)
+    @ApiOperation(value = "VMS 정보제공구간 사용여부 조회(TB_VMS_SYMB_LIB)", response = Integer.class)
     @GetMapping(value = "/usage/{id}", produces = {"application/json; charset=utf8"})
-    public Integer findUsageCountBySymbolId(@PathVariable final Short id) {
-        return this.service.findUsageCountBySymbolId(id);
+    public Integer findUsageCountByVmsIfscId(@PathVariable final Long id) {
+        return this.service.findUsageCountByVmsIfscId(id);
     }
 
 }

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

@@ -272,7 +272,6 @@ public class TbVmsFormObjectDto implements Serializable {
             this.vmsIfscId = vms_ifsc_id;
         }
 
-
         public TbVmsFormObject toEntity() {
             TbVmsFormObject entity = TbVmsFormObject.builder()
                     .formObjectId(this.formObjectId)

+ 3 - 1
src/main/java/com/its/op/model/dto/vms/TbVmsIfscCmtrGradDto.java

@@ -40,7 +40,9 @@ public class TbVmsIfscCmtrGradDto implements Serializable {
     @JsonProperty("cmtr_grad_desc")    // CMTR_GRAD_CD
     private String cmtrGradDesc;
 
-    public class CmtrGrad {
+    @Getter
+    @Setter
+    public static class CmtrGrad {
         @ApiModelProperty("최저속도")  // Y NUMBER(3)
         @JsonProperty("lwstsped")
         private Short lwstsped;

+ 6 - 0
src/main/java/com/its/op/model/dto/vms/TbVmsIfscDto.java

@@ -10,6 +10,8 @@ import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Positive;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * VMS 정보제공구간 DTO Class
@@ -61,6 +63,10 @@ public class TbVmsIfscDto implements Serializable {
     @JsonProperty("edtn_desc")    // EDTN_CD
     private String edtnDesc;
 
+    @ApiModelProperty("정보제공구간 목록")
+    @JsonProperty("ifscs")
+    List<TbVmsIfscRltnDto> ifscs = new ArrayList<>();
+
     @ApiModel("TbVmsIfscUpdReq(VMS 정보제공구간 정보변경)")
     @Getter
     @Setter

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

@@ -1,9 +1,9 @@
 package com.its.op.model.entity.vms;
 
-import lombok.AccessLevel;
-import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
 
 import java.io.Serializable;
 

+ 9 - 6
src/main/java/com/its/op/model/entity/vms/TbVmsIfsc.java

@@ -1,15 +1,15 @@
 package com.its.op.model.entity.vms;
 
 import com.its.op.model.dto.vms.TbVmsIfscDto;
+import com.its.op.model.dto.vms.TbVmsIfscRltnDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * VMS 정보제공구간 Entity Class
@@ -61,7 +61,10 @@ public class TbVmsIfsc implements Serializable {
     @Column(name = "AXIS_YN", columnDefinition = "CHAR", length = 1)
     private String axisYn;
 
-    public TbVmsIfscDto toDto() {
+    @Transient
+    List<TbVmsIfscRltn> ifscs = new ArrayList<>();
+
+    public TbVmsIfscDto toDto(List<TbVmsIfscRltnDto> ifscs) {
         TbVmsIfscDto dto = TbVmsIfscDto.builder()
                 .vmsIfscId(this.vmsIfscId)
                 .vmsIfscNm(this.vmsIfscNm)
@@ -72,8 +75,8 @@ public class TbVmsIfsc implements Serializable {
                 .roadNm(this.roadNm)
                 .spotNm(this.spotNm)
                 .axisYn(this.axisYn)
+                .ifscs(ifscs)
                 .build();
-
         return dto;
     }
 

+ 2 - 1
src/main/java/com/its/op/model/entity/vms/TbVmsIfscRltn.java

@@ -9,6 +9,7 @@ import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.ArrayList;
 
 /**
  * VMS 정보제공구간 관계 Entity Class
@@ -54,7 +55,7 @@ public class TbVmsIfscRltn implements Serializable {
                 .vmsIfscId(this.vmsIfscId)
                 .dsplPrrt(this.dsplPrrt)
                 .vms(this.vms == null ? null : this.vms.toDto())
-                .ifsc(this.ifsc == null ? null : this.ifsc.toDto())
+                .ifsc(this.ifsc == null ? null : this.ifsc.toDto(new ArrayList<>()))
                 .build();
 
         return dto;

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

@@ -13,4 +13,7 @@ public interface TbVmsFormObjectRepository extends JpaRepository<TbVmsFormObject
     @Query(value = "select count(p.symbLibNmbr) from TbVmsFormObject p where p.symbLibNmbr = :id")
     Integer findUsageCountBySymbolId(Short id);
 
+    @Query("select count(p.vmsIfscId) from TbVmsFormObject p where p.vmsIfscId = :vmsIfscId")
+    Integer findUsageCountByVmsIfscId(Long vmsIfscId);
+
 }

+ 10 - 0
src/main/java/com/its/op/repository/vms/TbVmsIfscCmtrGradRepository.java

@@ -4,9 +4,19 @@ import com.its.op.model.entity.vms.TbVmsIfscCmtrGrad;
 import com.its.op.model.entity.vms.TbVmsIfscCmtrGradKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository
 public interface TbVmsIfscCmtrGradRepository extends JpaRepository<TbVmsIfscCmtrGrad, TbVmsIfscCmtrGradKey>, JpaSpecificationExecutor<TbVmsIfscCmtrGrad> {
 
+    @Modifying // select 문이 아님을 나타낸다
+    @Query(value = "DELETE from TB_VMS_IFSC_CMTR_GRAD", nativeQuery = true)
+    void deleteDataAll() throws Exception;
+
+    @Modifying // select 문이 아님을 나타낸다
+    @Query(value = "insert into TB_VMS_IFSC_CMTR_GRAD(VMS_IFSC_ID, CMTR_GRAD_CD, LWSTSPED, HGHSSPED) select vms_ifsc_id, :cmtr_grad_cd, :lwstsped, :hghssped from TB_VMS_IFSC ", nativeQuery = true)
+    void insertDataAll(String cmtr_grad_cd, Short lwstsped, Short hghssped);
+
 }

+ 4 - 0
src/main/java/com/its/op/repository/vms/TbVmsIfscRepository.java

@@ -3,9 +3,13 @@ package com.its.op.repository.vms;
 import com.its.op.model.entity.vms.TbVmsIfsc;
 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 TbVmsIfscRepository extends JpaRepository<TbVmsIfsc, Long>, JpaSpecificationExecutor<TbVmsIfsc> {
 
+    @Query("select count(p.detrId) from TbVmsIfsc p where p.detrId = :vmsIfscId and p.vmsIfscId <> :vmsIfscId")
+    Integer findUsageCountByVmsIfscId(Long vmsIfscId);
+
 }

+ 5 - 0
src/main/java/com/its/op/repository/vms/TbVmsIfscRltnRepository.java

@@ -15,4 +15,9 @@ public interface TbVmsIfscRltnRepository extends JpaRepository<TbVmsIfscRltn, Tb
     @Query("select p from TbVmsIfscRltn p inner join fetch p.vms inner join fetch p.ifsc")
     List<TbVmsIfscRltn> findDataAll();
 
+    @Query("select p from TbVmsIfscRltn p inner join fetch p.vms inner join fetch p.ifsc where p.vmsIfscId = :vmsIfscId")
+    List<TbVmsIfscRltn> findDataById(Long vmsIfscId);
+
+    @Query("select count(p.vmsIfscId) from TbVmsIfscRltn p where p.vmsIfscId = :vmsIfscId")
+    Integer findUsageCountByVmsIfscId(Long vmsIfscId);
 }

+ 4 - 0
src/main/java/com/its/op/repository/vms/TbVmsLinkIfscRepository.java

@@ -4,9 +4,13 @@ import com.its.op.model.entity.vms.TbVmsLinkIfsc;
 import com.its.op.model.entity.vms.TbVmsLinkIfscKey;
 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 TbVmsLinkIfscRepository extends JpaRepository<TbVmsLinkIfsc, TbVmsLinkIfscKey>, JpaSpecificationExecutor<TbVmsLinkIfsc> {
 
+    @Query("select count(p.vmsIfscId) from TbVmsLinkIfsc p where p.vmsIfscId = :vmsIfscId")
+    Integer findUsageCountByVmsIfscId(Long vmsIfscId);
+
 }

+ 5 - 3
src/main/java/com/its/op/service/database/LinkPrcsParaService.java

@@ -68,9 +68,11 @@ public class LinkPrcsParaService {
 
                 this.systRepo.deleteListById(id);
                 for (LinkParaClctSystDto.LinkParaClctSystUpdateReq obj : req.getSystList()) {
-                    LinkParaClctSyst syst = new LinkParaClctSyst(id);
-                    syst.updateInfo(obj);
-                    this.systRepo.save(syst);
+                    if (obj != null) {
+                        LinkParaClctSyst syst = new LinkParaClctSyst(id);
+                        syst.updateInfo(obj);
+                        this.systRepo.save(syst);
+                    }
                 }
             }
         }

+ 96 - 0
src/main/java/com/its/op/service/vms/TbVmsFormObjectService.java

@@ -0,0 +1,96 @@
+package com.its.op.service.vms;
+
+import com.its.op.model.dto.vms.TbVmsFormObjectDto;
+import com.its.op.model.entity.vms.TbVmsFormObject;
+import com.its.op.model.entity.vms.TbVmsFormObjectKey;
+import com.its.op.repository.vms.TbVmsFormObjectRepository;
+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 TbVmsFormObjectService {
+
+    private final TbVmsFormObjectRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVmsFormObject requireOne(TbVmsFormObjectKey id) {
+        return repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    public List<TbVmsFormObjectDto> findAll() {
+        List<TbVmsFormObjectDto> result = new ArrayList<>();
+        List<TbVmsFormObject> data = this.repo.findAll();
+        for (TbVmsFormObject entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    public TbVmsFormObjectDto findById(TbVmsFormObjectKey id) {
+        TbVmsFormObject entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    public TbVmsFormObjectDto updateById(TbVmsFormObjectKey id, TbVmsFormObjectDto.TbVmsFormObjectUpdReq req) {
+        TbVmsFormObject entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public List<TbVmsFormObjectDto> mergeInfoList(List<TbVmsFormObjectDto.TbVmsFormObjectUpdReq> reqList) {
+        List<TbVmsFormObjectDto> result = new ArrayList<>();
+        for (TbVmsFormObjectDto.TbVmsFormObjectUpdReq req : reqList) {
+            TbVmsFormObject obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public TbVmsFormObjectDto mergeInfo(TbVmsFormObjectDto.TbVmsFormObjectUpdReq req) {
+        TbVmsFormObject obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    public TbVmsFormObjectDto deleteById(TbVmsFormObjectKey id) {
+        TbVmsFormObject entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    public List<TbVmsFormObjectDto> deleteByIds(List<TbVmsFormObjectKey> ids) {
+        List<TbVmsFormObjectDto> result = new ArrayList<>();
+        for (TbVmsFormObjectKey id : ids) {
+            Optional<TbVmsFormObject> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+    // VMS_IFSC_ID 사용 중인 갯수 리턴
+    public int findUsageCountByVmsIfscId(Long vmsIfscId ) {
+        return this.repo.findUsageCountByVmsIfscId(vmsIfscId);
+    }
+
+}

+ 11 - 0
src/main/java/com/its/op/service/vms/TbVmsIfscCmtrGradService.java

@@ -96,6 +96,17 @@ public class TbVmsIfscCmtrGradService {
 
     @Transactional
     public TbVmsIfscCmtrGradDto.TbVmsIfscCmtrGradAllUpdReq saveAllIfscCmtrGradInfo(TbVmsIfscCmtrGradDto.TbVmsIfscCmtrGradAllUpdReq req) {
+        try {
+            this.repo.deleteDataAll();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+
+        this.repo.insertDataAll("1", req.getGrad1().getLwstsped(), req.getGrad1().getHghssped());
+        this.repo.insertDataAll("2", req.getGrad2().getLwstsped(), req.getGrad2().getHghssped());
+        this.repo.insertDataAll("3", req.getGrad3().getLwstsped(), req.getGrad3().getHghssped());
+
         return req;
     }
 }

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

@@ -102,4 +102,24 @@ public class TbVmsIfscRltnService {
         }
         return result;
     }
+
+    public List<TbVmsIfscRltnDto> findDataById(Long id) {
+        List<TbVmsIfscRltnDto> result = new ArrayList<>();
+        List<TbVmsIfscRltn> list = this.repo.findDataById(id);
+        for (TbVmsIfscRltn obj : list) {
+            if (obj.getIfsc() != null && obj.getVms() != null) {
+                if (!obj.getVms().getDelYn().equals("Y") && !obj.getIfsc().getEdtnCd().equals("EDI2")) {
+                    // 삭제 된것 제외
+                    result.add(obj.toDto());
+                }
+            }
+        }
+        return result;
+    }
+
+    // VMS_IFSC_ID 사용 중인 갯수 리턴
+    public int findUsageCountByVmsIfscId(Long vmsIfscId ) {
+        return this.repo.findUsageCountByVmsIfscId(vmsIfscId);
+    }
 }
+

+ 38 - 11
src/main/java/com/its/op/service/vms/TbVmsIfscService.java

@@ -1,6 +1,7 @@
 package com.its.op.service.vms;
 
 import com.its.op.model.dto.vms.TbVmsIfscDto;
+import com.its.op.model.dto.vms.TbVmsIfscRltnDto;
 import com.its.op.model.entity.vms.TbVmsIfsc;
 import com.its.op.repository.vms.TbVmsIfscRepository;
 import lombok.RequiredArgsConstructor;
@@ -18,6 +19,9 @@ import java.util.Optional;
 public class TbVmsIfscService {
 
     private final TbVmsIfscRepository repo;
+    private final TbVmsIfscRltnService ifscRltnService;
+    private final TbVmsFormObjectService formObjectService;
+    private final TbVmsLinkIfscService linkIfscService;
 
     // 데이터 1건 조회, 없으면 exception
     private TbVmsIfsc requireOne(Long id) {
@@ -30,7 +34,7 @@ public class TbVmsIfscService {
         List<TbVmsIfscDto> result = new ArrayList<>();
         List<TbVmsIfsc> data = this.repo.findAll();
         for (TbVmsIfsc entity : data) {
-            result.add(entity.toDto());
+            result.add(entity.toDto(new ArrayList<>()));
         }
         return result;
     }
@@ -38,7 +42,8 @@ public class TbVmsIfscService {
     // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
     public TbVmsIfscDto findById(Long id) {
         TbVmsIfsc entity = requireOne(id);
-        return entity.toDto();
+        List<TbVmsIfscRltnDto> list = this.ifscRltnService.findDataById(id);
+        return entity.toDto(list);
     }
 
     // 데이터 변경
@@ -46,7 +51,7 @@ public class TbVmsIfscService {
         TbVmsIfsc entity = requireOne(id);
         entity.updateInfo(req);
         this.repo.save(entity);
-        return entity.toDto();
+        return entity.toDto(new ArrayList<>());
     }
 
     // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
@@ -55,7 +60,7 @@ public class TbVmsIfscService {
         for (TbVmsIfscDto.TbVmsIfscUpdReq req : reqList) {
             TbVmsIfsc obj = req.toEntity();
             this.repo.save(obj);
-            result.add(obj.toDto());
+            result.add(obj.toDto(new ArrayList<>()));
         }
         return result;
     }
@@ -64,14 +69,14 @@ public class TbVmsIfscService {
     public TbVmsIfscDto mergeInfo(TbVmsIfscDto.TbVmsIfscUpdReq req) {
         TbVmsIfsc obj = req.toEntity();
         this.repo.save(obj);
-        return obj.toDto();
+        return obj.toDto(new ArrayList<>());
     }
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
     public TbVmsIfscDto deleteById(Long id) {
         TbVmsIfsc entity = requireOne(id);
         this.repo.deleteById(id);
-        return entity.toDto();
+        return entity.toDto(new ArrayList<>());
     }
 
     // 정보 삭제-목록, 존재하는 데이터 만 삭제
@@ -81,15 +86,37 @@ public class TbVmsIfscService {
             Optional<TbVmsIfsc> obj = this.repo.findById(id);
             if (obj.isPresent()) {
                 this.repo.deleteById(id);
-                result.add(obj.get().toDto());
+                result.add(obj.get().toDto(new ArrayList<>()));
             }
         }
         return result;
     }
 
-    // 정보 제공구간이 사용되는 갯수 리턴
-    public Integer findUsageCountBySymbolId(Short id) {
-        int useCount = 0;
-        return useCount;
+    // VMS 정보 제공구간이 사용되는 갯수 리턴
+    public Integer findUsageCountByVmsIfscId(Long vmsIfscId) {
+        Integer useCount = 0;
+
+        // TB_VMS_IFSC(VMS 정보제공구간), DETR_ID 에 설정되어 사용 중인지 확인.
+        useCount = this.repo.findUsageCountByVmsIfscId(vmsIfscId);
+        log.info("Usage TB_VMS_IFSC.DETR_ID: {}", useCount);
+        if (useCount > 0) {
+            return 1;
+        }
+
+        // TB_VMS_IFSC_RLTN(VMS 정보제공구간 관계) 설정 테이블에 사용 중인지 확인
+        useCount = useCount + this.ifscRltnService.findUsageCountByVmsIfscId(vmsIfscId);
+        log.info("Usage TB_VMS_IFSC_RLTN.VMS_IFSC_ID: {}", useCount);
+        if (useCount > 0) {
+            return 2;
+        }
+
+        // TB_VMS_FORM_OBJECT(VMS FORM OBJECT) 설정 테이블에 사용 중인지 확인
+        useCount = this.formObjectService.findUsageCountByVmsIfscId(vmsIfscId);
+        log.info("Usage TB_VMS_FORM_OBJECT.VMS_IFSC_ID: {}", useCount);
+        if (useCount > 0) {
+            return 3;
+        }
+
+        return 0;
     }
 }

+ 5 - 0
src/main/java/com/its/op/service/vms/TbVmsLinkIfscService.java

@@ -88,4 +88,9 @@ public class TbVmsLinkIfscService {
         return result;
     }
 
+    // VMS_IFSC_ID 사용 중인 갯수 리턴
+    public int findUsageCountByVmsIfscId(Long vmsIfscId ) {
+        return this.repo.findUsageCountByVmsIfscId(vmsIfscId);
+    }
+
 }