shjung 2 yıl önce
ebeveyn
işleme
b3a367d80c

+ 58 - 29
src/main/java/com/its/op/controller/its/rse/TbRseSectRltnLinkController.java

@@ -1,8 +1,10 @@
 package com.its.op.controller.its.rse;
 
+import com.its.op.dto.its.rse.TbRseSectDto;
 import com.its.op.dto.its.rse.TbRseSectRltnLinkDto;
-import com.its.op.entity.its.rse.TbRseSectRltnLinkKey;
+import com.its.op.dto.its.vms.TbVmsRltnIfscDto;
 import com.its.op.service.its.rse.TbRseSectRltnLinkService;
+import com.its.op.service.its.rse.TbRseSectService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -20,47 +22,74 @@ import java.util.List;
 public class TbRseSectRltnLinkController {
 
     private final TbRseSectRltnLinkService service;
+    private final TbRseSectService rseSectService;
 
-    @ApiOperation(value = "RSE 구간 링크구성 정보 전체조회(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "RSE 구간 링크구성 목록 조회(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectDto.class)
+    @GetMapping(value = "/rse-sect", produces = {"application/json; charset=utf8"})
+    public List<TbRseSectDto> findVmsIfscAll() {
+        return this.rseSectService.findAll();
+    }
+
+    @ApiOperation(value = "RSE 구간 링크구성 관계 전체조회(TB_VMS_IFSC_RLTN)", response = TbRseSectRltnLinkDto.class)
     @GetMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbRseSectRltnLinkDto> findAll() {
         return this.service.findAll();
     }
 
-    @ApiOperation(value = "RSE 구간 링크구성 정보 개별조회(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+    @ApiOperation(value = "RSE 구간 링크구성 관계 개별조회(TB_RSE_SECT_RLTN_LINK)", response = TbVmsRltnIfscDto.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public TbRseSectRltnLinkDto findById(@PathVariable final TbRseSectRltnLinkKey id) {
-        return this.service.findById(id);
-    }
-
-    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
-    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public TbRseSectRltnLinkDto updateById(@PathVariable final TbRseSectRltnLinkKey id, @RequestBody @Valid final TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
-        return this.service.updateById(id, req);
+    public List<TbRseSectRltnLinkDto> findDataById(@PathVariable("id") final Long rseSectId) {
+        return this.service.findDataById(rseSectId);
     }
 
-    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경/생성-목록(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
-    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<TbRseSectRltnLinkDto> mergeInfoList(@RequestBody @Valid final List<TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq> listReq) {
-        return this.service.mergeInfoList(listReq);
-    }
-
-    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경/생성-개별(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+    @ApiOperation(value = "RSE 구간 링크구성 관계 정보변경/생성-개별(TB_RSE_SECT_RLTN_LINK)", response = TbVmsRltnIfscDto.class)
     @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public TbRseSectRltnLinkDto mergeInfo(@PathVariable("id") TbRseSectRltnLinkKey id, @RequestBody @Valid final TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
+    public TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq mergeInfo(
+            @PathVariable("id") Long rseSectId, @RequestBody @Valid final TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
         return this.service.mergeInfo(req);
     }
 
-    @ApiOperation(value = "RSE 구간 링크구성 정보 정보삭제-개별(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
-    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public TbRseSectRltnLinkDto deleteDataById(@PathVariable("id") TbRseSectRltnLinkKey id) {
-        return this.service.deleteById(id);
-    }
 
-    @ApiOperation(value = "RSE 구간 링크구성 정보 정보삭제-목록(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
-    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<TbRseSectRltnLinkDto> deleteDataByIds(@RequestBody @Valid final List<TbRseSectRltnLinkKey> ids) {
-        return this.service.deleteByIds(ids);
-    }
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 전체조회(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
+//    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbRseSectRltnLinkDto> findAll() {
+//        return this.service.findAll();
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 개별조회(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+//    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+//    public TbRseSectRltnLinkDto findById(@PathVariable final TbRseSectRltnLinkKey id) {
+//        return this.service.findById(id);
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+//    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+//    public TbRseSectRltnLinkDto updateById(@PathVariable final TbRseSectRltnLinkKey id, @RequestBody @Valid final TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
+//        return this.service.updateById(id, req);
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경/생성-목록(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
+//    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbRseSectRltnLinkDto> mergeInfoList(@RequestBody @Valid final List<TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq> listReq) {
+//        return this.service.mergeInfoList(listReq);
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 정보변경/생성-개별(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+//    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+//    public TbRseSectRltnLinkDto mergeInfo(@PathVariable("id") TbRseSectRltnLinkKey id, @RequestBody @Valid final TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
+//        return this.service.mergeInfo(req);
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 정보삭제-개별(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class)
+//    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+//    public TbRseSectRltnLinkDto deleteDataById(@PathVariable("id") TbRseSectRltnLinkKey id) {
+//        return this.service.deleteById(id);
+//    }
+//
+//    @ApiOperation(value = "RSE 구간 링크구성 정보 정보삭제-목록(TB_RSE_SECT_RLTN_LINK)", response = TbRseSectRltnLinkDto.class, responseContainer = "ArrayList")
+//    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+//    public List<TbRseSectRltnLinkDto> deleteDataByIds(@RequestBody @Valid final List<TbRseSectRltnLinkKey> ids) {
+//        return this.service.deleteByIds(ids);
+//    }
 
 }

+ 11 - 11
src/main/java/com/its/op/controller/its/vms/TbVmsRltnIfscController.java

@@ -23,22 +23,22 @@ public class TbVmsRltnIfscController {
     private final TbVmsRltnIfscService service;
     private final TbVmsIfscService vmsIfscService;
 
-    @ApiOperation(value = "VMS 정보제공구간 목록 조회(TB_VMS_CTLR)", response = TbVmsRltnIfscDto.class)
+    @ApiOperation(value = "VMS 정보제공구간 목록 조회(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
     @GetMapping(value = "/vms-ifsc", produces = {"application/json; charset=utf8"})
     public List<TbVmsIfscDto> findVmsIfscAll() {
-        return vmsIfscService.findAll();
+        return this.vmsIfscService.findAll();
     }
 
     @ApiOperation(value = "VMS 정보제공구간 관계 전체조회(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
     @GetMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbVmsRltnIfscDto> findAll() {
-        return service.findAll();
+        return this.service.findAll();
     }
 
     @ApiOperation(value = "도형식 VMS 정보제공구간 관계 전체조회(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
     @GetMapping(value = "/figure", produces = {"application/json; charset=utf8"})
     public List<TbVmsRltnIfscDto> findAllFigure() {
-        return service.findAllFigure();
+        return this.service.findAllFigure();
     }
 
     @ApiOperation(value = "VMS 정보제공구간 관계 개별조회(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
@@ -47,6 +47,13 @@ public class TbVmsRltnIfscController {
         return this.service.findDataById(vmsCtlrNmbr);
     }
 
+    @ApiOperation(value = "VMS 정보제공구간 관계 정보변경/생성-개별(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsRltnIfscDto.TbVmsIfscRltnUpdReq mergeInfo(
+            @PathVariable("id") Long id, @RequestBody @Valid final TbVmsRltnIfscDto.TbVmsIfscRltnUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
 /*
     @ApiOperation(value = "VMS 정보제공구간 관계 정보변경(TB_VMS_IFSC_RLTN)", response = TbVmsIfscRltnDto.class)
     @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
@@ -55,13 +62,6 @@ public class TbVmsRltnIfscController {
     }
 */
 
-    @ApiOperation(value = "VMS 정보제공구간 관계 정보변경/생성-개별(TB_VMS_IFSC_RLTN)", response = TbVmsRltnIfscDto.class)
-    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public TbVmsRltnIfscDto.TbVmsIfscRltnUpdReq mergeInfo(
-            @PathVariable("id") Long id, @RequestBody @Valid final TbVmsRltnIfscDto.TbVmsIfscRltnUpdReq req) {
-        return this.service.mergeInfo(req);
-    }
-
 /*
     @ApiOperation(value = "VMS 정보제공구간 관계 정보변경/생성-목록(TB_VMS_IFSC_RLTN)", response = TbVmsIfscRltnDto.class)
     @PostMapping(value = "", produces = {"application/json; charset=utf8"})

+ 9 - 0
src/main/java/com/its/op/dao/repository/its/rse/TbRseSectRltnLinkRepository.java

@@ -4,7 +4,9 @@ import com.its.op.entity.its.rse.TbRseSectRltnLink;
 import com.its.op.entity.its.rse.TbRseSectRltnLinkKey;
 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.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -18,4 +20,11 @@ public interface TbRseSectRltnLinkRepository extends JpaRepository<TbRseSectRltn
     @Query("select p from TbRseSectRltnLink p")
     List<TbRseSectRltnLink> findAllList();
 
+    @Query("select p from TbRseSectRltnLink p inner join fetch p.sect sect where p.rseSectId = :rseSectId")
+    List<TbRseSectRltnLink> findDataById(@Param("rseSectId") Long rseSectId);
+
+    @Modifying
+    @Query("delete from TbRseSectRltnLink p where p.rseSectId = :rseSectId")
+    void deleteDataById(@Param("rseSectId") Long rseSectId);
+
 }

+ 79 - 20
src/main/java/com/its/op/dto/its/rse/TbRseSectRltnLinkDto.java

@@ -8,6 +8,8 @@ import lombok.*;
 
 import javax.validation.constraints.PositiveOrZero;
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * RSE 구간 링크구성 정보 DTO Class
@@ -30,44 +32,101 @@ public class TbRseSectRltnLinkDto implements Serializable {
     @JsonProperty("link_ord")
     private Integer linkOrd;
 
-    // Code Description Field
-    @ApiModel("TbRseSectRltnLinkUpdReq(RSE 구간 링크구성 정보 정보변경)")
+    @ApiModel("RseSectRltnLink(VMS 정보제공구간 관계 정보)")
     @Getter
     @Setter
     @ToString
-    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
-    public static class TbRseSectRltnLinkUpdReq {
+    public static class RseSectRltnLink {
 
-        @ApiModelProperty("RSE 구간 아이디, Nullable = N, NUMBER(10)")  // N NUMBER(10)
-        @JsonProperty("rse_sect_id")
-        @PositiveOrZero
-        private Long rseSectId;
-
-        @ApiModelProperty("링크ID, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @ApiModelProperty("링크ID")  // N NUMBER(10)
         @JsonProperty("link_id")
         @PositiveOrZero
         private Long linkId;
 
-        @ApiModelProperty("링크 순서, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+        @ApiModelProperty("링크 순서")  // Y NUMBER(2)
         @JsonProperty("link_ord")
         @PositiveOrZero
         private Integer linkOrd;
+    }
+
+    @ApiModel("TbRseSectRltnLinkUpdReq(RSE 구간 링크구성 정보 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbRseSectRltnLinkUpdReq {
+
+        @ApiModelProperty("RSE 구간 아이디")  // N NUMBER(10)
+        @JsonProperty("rse_sect_id")
+        @PositiveOrZero
+        private Long rseSectId;
+
+        @ApiModelProperty("RSE 구간 링크 목록")
+        @JsonProperty("links")
+        List<TbRseSectRltnLinkDto.RseSectRltnLink> links;
 
         @Builder
-        public TbRseSectRltnLinkUpdReq(Long rse_sect_id, Long link_id, Integer link_ord) {
+        public TbRseSectRltnLinkUpdReq(Long rse_sect_id, List<TbRseSectRltnLinkDto.RseSectRltnLink> links) {
             this.rseSectId = rse_sect_id;
-            this.linkId = link_id;
-            this.linkOrd = link_ord;
+
+            // FOR KISA Secure Coding pass
+            //this.ifscs = ifscs;
+            List<TbRseSectRltnLinkDto.RseSectRltnLink> temp = links;
+            this.links = temp;
         }
 
-        public TbRseSectRltnLink toEntity() {
-            return TbRseSectRltnLink.builder()
-                    .rseSectId(this.rseSectId)
-                    .linkId(this.linkId)
-                    .linkOrd(this.linkOrd)
-                    .build();
+        public List<TbRseSectRltnLink> toEntity() {
+            List<TbRseSectRltnLink> result = new ArrayList<>();
+            if (this.links != null) {
+                for (TbRseSectRltnLinkDto.RseSectRltnLink rltn : this.links) {
+                    result.add(TbRseSectRltnLink.builder()
+                            .rseSectId(this.rseSectId)
+                            .linkId(rltn.getLinkId())
+                            .linkOrd(rltn.getLinkOrd())
+                            .build());
+                }
+            }
+            return result;
         }
 
     }
+//
+//    @ApiModelProperty("링크ID")  // N NUMBER(10)
+//    @JsonProperty("link_id")
+//    private Long linkId;
+//
+//    @ApiModelProperty("링크 순서")  // Y NUMBER(2)
+//    @JsonProperty("link_ord")
+//    private Integer linkOrd;
+//
+//    // Code Description Field
+//    @ApiModel("TbRseSectRltnLinkUpdReq(RSE 구간 링크구성 정보 정보변경)")
+//    @Getter
+//    @Setter
+//    @ToString
+//    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+//    public static class TbRseSectRltnLinkUpdReq {
+//
+//        @ApiModelProperty("RSE 구간 아이디, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+//        @JsonProperty("rse_sect_id")
+//        @PositiveOrZero
+//        private Long rseSectId;
+//
+//        @ApiModelProperty("링크ID, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+//        @JsonProperty("link_id")
+//        @PositiveOrZero
+//        private Long linkId;
+//
+//        @ApiModelProperty("링크 순서, Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
+//        @JsonProperty("link_ord")
+//        @PositiveOrZero
+//        private Integer linkOrd;
+//
+//        @Builder
+//        public TbRseSectRltnLinkUpdReq(Long rse_sect_id, Long link_id, Integer link_ord) {
+//            this.rseSectId = rse_sect_id;
+//            this.linkId = link_id;
+//            this.linkOrd = link_ord;
+//        }
 
 }

+ 12 - 6
src/main/java/com/its/op/entity/its/rse/TbRseSectRltnLink.java

@@ -7,6 +7,8 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 import javax.persistence.*;
 import java.io.Serializable;
@@ -39,21 +41,25 @@ public class TbRseSectRltnLink implements Serializable {
     @Column(name = "LINK_ORD", columnDefinition = "NUMBER", length = 2)
     private Integer linkOrd;
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="RSE_SECT_ID", referencedColumnName = "RSE_SECT_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbRseSect sect;
+
     public TbRseSectRltnLinkDto toDto() {
-        return TbRseSectRltnLinkDto.builder()
+        TbRseSectRltnLinkDto dto = TbRseSectRltnLinkDto.builder()
                 .rseSectId(this.rseSectId)
                 .linkId(this.linkId)
                 .linkOrd(this.linkOrd)
                 .build();
+
+        return dto;
     }
 
-    public TbRseSectRltnLink(Long rseSectId, Long linkId) {
+    public TbRseSectRltnLink(Long rseSectId, Long linkId, Integer linkOrd) {
         this.rseSectId = rseSectId;
         this.linkId = linkId;
-    }
-
-    public void updateInfo(TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
-        this.linkOrd = req.getLinkOrd();
+        this.linkOrd = linkOrd;
     }
 
 }

+ 22 - 23
src/main/java/com/its/op/service/its/rse/TbRseSectRltnLinkService.java

@@ -52,33 +52,19 @@ public class TbRseSectRltnLinkService {
         return entity.toDto();
     }
 
-    // 데이터 변경
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
     @Transactional
-    public TbRseSectRltnLinkDto updateById(TbRseSectRltnLinkKey id, TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
-        TbRseSectRltnLink entity = requireOne(id);
-        entity.updateInfo(req);
-        this.repo.save(entity);
-        return entity.toDto();
-    }
+    public TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq mergeInfo(TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
 
-    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
-    @Transactional
-    public List<TbRseSectRltnLinkDto> mergeInfoList(List<TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq> reqList) {
-        List<TbRseSectRltnLinkDto> result = new ArrayList<>();
-        for (TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req : reqList) {
-            TbRseSectRltnLink obj = req.toEntity();
+        // 기존 설정 정보를 삭제한다.
+        this.repo.deleteDataById(req.getRseSectId());
+
+        // 설정 정보를 저장한다.
+        List<TbRseSectRltnLink> data = req.toEntity();
+        for (TbRseSectRltnLink obj : data) {
             this.repo.save(obj);
-            result.add(obj.toDto());
         }
-        return result;
-    }
-
-    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
-    @Transactional
-    public TbRseSectRltnLinkDto mergeInfo(TbRseSectRltnLinkDto.TbRseSectRltnLinkUpdReq req) {
-        TbRseSectRltnLink obj = req.toEntity();
-        this.repo.save(obj);
-        return obj.toDto();
+        return req;
     }
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
@@ -103,4 +89,17 @@ public class TbRseSectRltnLinkService {
         return result;
     }
 
+    public List<TbRseSectRltnLinkDto> findDataById(Long rseSectId) {
+        List<TbRseSectRltnLinkDto> result = new ArrayList<>();
+        List<TbRseSectRltnLink> list = this.repo.findDataById(rseSectId);
+        for (TbRseSectRltnLink obj : list) {
+            if (obj.getSect() != null) {
+                if (!("Y").equals(obj.getSect().getDelYn())) {
+                    // 삭제 된것 제외
+                    result.add(obj.toDto());
+                }
+            }
+        }
+        return result;
+    }
 }