Bladeren bron

link param setting

shjung 2 jaren geleden
bovenliggende
commit
97d46a1819

+ 7 - 5
src/main/java/com/its/op/controller/its/database/LinkParaClctSystController.java

@@ -3,20 +3,22 @@ package com.its.op.controller.its.database;
 import com.its.op.dto.its.link.LinkParaClctSystDto;
 import com.its.op.entity.its.link.TbLinkParaClctSyst;
 import com.its.op.service.its.link.LinkParaClctSystService;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.ArrayList;
 import java.util.List;
 
 @Slf4j
 @RequiredArgsConstructor
-@RestController
-@RequestMapping("/api/database/link-para-clct-syst")
-@Api(tags = "09.기초데이터관리-06.가공파라미터관리-04.링크파라미터수집시스템")
+//@RestController
+//@RequestMapping("/api/database/link-para-clct-syst")
+//@Api(tags = "09.기초데이터관리-06.가공파라미터관리-04.링크파라미터수집시스템")
 public class LinkParaClctSystController {
 
     private final LinkParaClctSystService service;

+ 7 - 5
src/main/java/com/its/op/controller/its/database/LinkParaDetlController.java

@@ -3,17 +3,19 @@ package com.its.op.controller.its.database;
 import com.its.op.dto.its.link.LinkParaDetlDto;
 import com.its.op.entity.its.link.TbLinkParaDetl;
 import com.its.op.service.its.link.LinkParaDetlService;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 @Slf4j
 @RequiredArgsConstructor
-@RestController
-@RequestMapping("/api/database/link-para-detl")
-@Api(tags = "09.기초데이터관리-06.가공파라미터관리-03.링크파라미터상세")
+//@RestController
+//@RequestMapping("/api/database/link-para-detl")
+//@Api(tags = "09.기초데이터관리-06.가공파라미터관리-03.링크파라미터상세")
 public class LinkParaDetlController {
 
     private final LinkParaDetlService service;

+ 0 - 64
src/main/java/com/its/op/controller/its/database/LinkParaStupController.java

@@ -1,64 +0,0 @@
-package com.its.op.controller.its.database;
-
-import com.its.op.dto.its.link.LinkParaStupDto;
-import com.its.op.entity.its.link.TbLinkParaStup;
-import com.its.op.service.its.link.LinkParaStupService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
-
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/api/database/link-para-stup")
-@Api(tags = "09.기초데이터관리-06.가공파라미터관리-02.링크파라미터설정")
-public class LinkParaStupController {
-
-    private final LinkParaStupService service;
-
-    /*
-    @ApiOperation(value = "전체조회(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<LinkParaStupDto.LinkParaStupInfo>> findAll() {
-        List<LinkParaStup> data = this.service.findAll();
-        List<LinkParaStupDto.LinkParaStupInfo> result = new ArrayList<>();
-        for (LinkParaStup obj: data) {
-            result.add(new LinkParaStupDto.LinkParaStupInfo(obj));
-        }
-        return new >(result, HttpStatus.OK);
-    }
-*/
-
-    @ApiOperation(value = "개별조회(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
-    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public LinkParaStupDto.LinkParaStupInfo findById(@PathVariable final Long id) {
-        TbLinkParaStup obj = this.service.findById(id);
-        if (obj != null) {
-            return new LinkParaStupDto.LinkParaStupInfo(obj);
-        }
-        return null;
-    }
-
-    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
-    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public LinkParaStupDto.LinkParaStupInfo updateById(
-            @PathVariable final Long id,
-            @RequestBody final LinkParaStupDto.LinkParaStupUpdateReq req) {
-        TbLinkParaStup obj = this.service.mergeById(id, req);
-        if (obj != null) {
-            return new LinkParaStupDto.LinkParaStupInfo(obj);
-        }
-        return null;
-    }
-
-    @ApiOperation(value = "전체정보변경/생성(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupUpdateReq.class)
-    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
-    public LinkParaStupDto.LinkParaStupUpdateReq updateById(@RequestBody final LinkParaStupDto.LinkParaStupUpdateReq req) {
-        LinkParaStupDto.LinkParaStupUpdateReq obj = this.service.mergeAll(req);
-        return obj;
-
-    }
-
-}

+ 7 - 5
src/main/java/com/its/op/controller/its/database/LinkPrcsParaController.java

@@ -2,20 +2,22 @@ package com.its.op.controller.its.database;
 
 import com.its.op.dto.its.link.LinkPrcsParaDto;
 import com.its.op.service.its.link.LinkPrcsParaService;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
 
 @Slf4j
 @RequiredArgsConstructor
-@RestController
-@RequestMapping("/api/database/link-prcs-para")
-@Api(tags = "09.기초데이터관리-06.가공파라미터관리-01.가공파라미터관리")
+//@RestController
+//@RequestMapping("/api/database/link-prcs-para")
+//@Api(tags = "09.기초데이터관리-06.가공파라미터관리-01.가공파라미터관리")
 public class LinkPrcsParaController {
 
     private final LinkPrcsParaService service;

+ 70 - 0
src/main/java/com/its/op/controller/its/database/TbLinkParaStupController.java

@@ -0,0 +1,70 @@
+package com.its.op.controller.its.database;
+
+import com.its.op.dto.its.atrd.TbAtrdDto;
+import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
+import com.its.op.dto.its.link.TbLinkParaClctSystDto;
+import com.its.op.dto.its.link.TbLinkParaDetlDto;
+import com.its.op.dto.its.link.TbLinkParaStupDto;
+import com.its.op.service.its.link.TbLinkParaStupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/link-para-stup")
+@Api(tags = "09.기초데이터관리-06.가공파라미터관리-02.가공파라미터설정")
+public class TbLinkParaStupController {
+
+    private final TbLinkParaStupService service;
+
+    @ApiOperation(value = "가공파라미터 정보 전체조회(TB_LINK_PARA_STUP)", response = TbLinkParaStupDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbLinkParaStupDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "개별조회(TB_LINK_PARA_STUP)", response = TbLinkParaStupDto.class)
+    @GetMapping(value = "/{paramId}", produces = {"application/json; charset=utf8"})
+    public TbLinkParaStupDto findById(@PathVariable final Long paramId) {
+        return this.service.findById(paramId);
+    }
+
+    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_STUP)", response = TbLinkParaStupDto.class)
+    @PostMapping(value = "/{paramId}", produces = {"application/json; charset=utf8"})
+    public TbLinkParaStupDto mergeInfo(
+            @PathVariable final Long paramId,
+            @RequestBody final TbLinkParaStupDto.TbLinkParaStupUpdReq para,
+            @RequestBody final TbLinkParaDetlDto.TbLinkParaDetlUpdReq detl,
+            @RequestBody final List<TbLinkParaClctSystDto.TbLinkParaClctSystUpdReq> clcts) {
+        return this.service.mergeInfo(paramId, para, detl, clcts);
+    }
+
+    @ApiOperation(value = "신규 파라미터 ID 조회(TB_LINK_PARA_STUP)", response = NewIdLongDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public NewIdLongDto getNewNmbr() {
+        return this.service.getNewNmbr();
+    }
+
+    @ApiOperation(value = "파라미터 사용여부 조회(삭제시 사용)", response = UsageCountDto.class)
+    @GetMapping(value = "/usage/{paramId}", produces = {"application/json; charset=utf8"})
+    public UsageCountDto findUsageId(
+            @ApiParam(name = "paramId", value = "파라미터 ID", example = "1", required = true)
+            @PathVariable final Long paramId) {
+        return this.service.findUsageId(paramId);
+    }
+
+    @ApiOperation(value = "파라미터 정보삭제-개별(TB_LINK_PARA_STUP)", response = TbAtrdDto.class)
+    @DeleteMapping(value = "/{paramId}", produces = {"application/json; charset=utf8"})
+    public TbLinkParaStupDto deleteDataById(@PathVariable("paramId") Long paramId) {
+        return this.service.deleteDataById(paramId);
+    }
+
+}

+ 9 - 3
src/main/java/com/its/op/dao/repository/its/link/TbLinkParaClctSystRepository.java

@@ -8,19 +8,25 @@ 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 org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
 @Repository
 public interface TbLinkParaClctSystRepository extends JpaRepository<TbLinkParaClctSyst, TbLinkParaClctSystKey>, JpaSpecificationExecutor<TbLinkParaClctSyst> {
 
-    @Query("select p from TbLinkParaClctSyst p")
+    @Query("select p from TbLinkParaClctSyst p inner join fetch p.syst m order by p.paraId, p.fusnPrrt")
     List<TbLinkParaClctSyst> findAll();
 
-    @Query(value = "select p from TbLinkParaClctSyst p where p.paraId = :para_id")
-    List<TbLinkParaClctSyst> findListById(@Param("para_id") Long para_id);
+    @Query(value = "select p from TbLinkParaClctSyst p inner join fetch p.syst m where p.paraId = :para_id order by p.paraId, p.fusnPrrt")
+    List<TbLinkParaClctSyst> findClctsById(@Param("para_id") Long para_id);
 
     @Modifying
     @Query(value = "delete from TB_LINK_PARA_CLCT_SYST where PARA_ID = :para_id", nativeQuery = true)
     void deleteListById(@Param("para_id")Long para_id);
+
+    @Transactional
+    @Modifying
+    @Query("delete from TbLinkParaClctSyst p where p.paraId = :paraId")
+    void deleteDataById(@Param("paraId") Long paraId);
 }

+ 8 - 0
src/main/java/com/its/op/dao/repository/its/link/TbLinkParaDetlRepository.java

@@ -3,8 +3,11 @@ package com.its.op.dao.repository.its.link;
 import com.its.op.entity.its.link.TbLinkParaDetl;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -13,4 +16,9 @@ public interface TbLinkParaDetlRepository extends JpaRepository<TbLinkParaDetl,
 
     @Query("select p from TbLinkParaDetl p")
     List<TbLinkParaDetl> findAll();
+
+    @Transactional
+    @Modifying
+    @Query("delete from TbLinkParaDetl p where p.paraId = :paraId")
+    void deleteDataById(@Param("paraId") Long paraId);
 }

+ 20 - 1
src/main/java/com/its/op/dao/repository/its/link/TbLinkParaStupRepository.java

@@ -3,14 +3,33 @@ package com.its.op.dao.repository.its.link;
 import com.its.op.entity.its.link.TbLinkParaStup;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Optional;
 
 @Repository
 public interface TbLinkParaStupRepository extends JpaRepository<TbLinkParaStup, Long>, JpaSpecificationExecutor<TbLinkParaStup> {
 
-    @Query("select p from TbLinkParaStup p")
+    @Query("select p from TbLinkParaStup p inner join fetch p.detl m")
     List<TbLinkParaStup> findAll();
+
+    @Query("select p from TbLinkParaStup p inner join fetch p.detl m where p.paraId = :paramId")
+    Optional<TbLinkParaStup> findById(@Param("paramId") Long paramId);
+
+    @Query(value = "SELECT NVL(MAX(PARA_ID), 0) + 1 AS NEWID FROM TB_LINK_PARA_STUP", nativeQuery = true)
+    Long getNewNmbr();
+
+    @Query("select count(p.paraId) from TbLinkParaStup p where p.paraId = :paraId")
+    Integer findUsageId(@Param("paraId") Long paraId);
+
+    @Transactional
+    @Modifying
+    @Query("delete from TbLinkParaStup p where p.paraId = :paraId")
+    void deleteDataById(@Param("paraId") Long paraId);
+
 }

+ 12 - 0
src/main/java/com/its/op/dto/its/link/TbLinkParaStupDto.java

@@ -9,6 +9,7 @@ import lombok.*;
 import javax.validation.constraints.Positive;
 import javax.validation.constraints.Size;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 링크 파라미터 설정 DTO Class
@@ -43,6 +44,16 @@ public class TbLinkParaStupDto implements Serializable {
     @JsonProperty("para_nm")
     private String paraNm;
 
+    // TB_LINK_PARA_DETL
+    @ApiModelProperty("가공 파라미터 상세")
+    @JsonProperty("detl")
+    private TbLinkParaDetlDto detl;
+
+    // TB_LINK_PARA_CLCT_SYST
+    @ApiModelProperty("가공 파라미터 수집 시스템")
+    @JsonProperty("clcts")
+    private List<TbLinkParaClctSystDto> clcts;
+
     // Code Description Field
     @ApiModelProperty("필터링 방법 코드 설명")
     @JsonProperty("fltr_mthd_desc")    // FLTR_MTHD_CD
@@ -60,6 +71,7 @@ public class TbLinkParaStupDto implements Serializable {
     @JsonProperty("smth_mthd_desc")    // SMTH_MTHD_CD
     private String smthMthdDesc;
 
+
     @ApiModel("TbLinkParaStupUpdReq(링크 파라미터 설정 정보변경)")
     @Getter
     @Setter

+ 14 - 1
src/main/java/com/its/op/entity/its/link/TbLinkParaClctSyst.java

@@ -1,12 +1,15 @@
 package com.its.op.entity.its.link;
 
 import com.its.op.dto.its.link.TbLinkParaClctSystDto;
+import com.its.op.entity.its.code.TbClctSystStup;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 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;
@@ -43,6 +46,11 @@ public class TbLinkParaClctSyst implements Serializable {
     @Column(name = "FUSN_WGHT", columnDefinition = "NUMBER", length = 5, precision = 2)
     private Double fusnWght;
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="CLCT_SYST_CD", referencedColumnName = "CLCT_SYST_CD")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbClctSystStup syst;
+
     @Transient
     private boolean isNew = true;
 
@@ -53,12 +61,17 @@ public class TbLinkParaClctSyst implements Serializable {
     }
 
     public TbLinkParaClctSystDto toDto() {
-        return TbLinkParaClctSystDto.builder()
+        TbLinkParaClctSystDto dto = TbLinkParaClctSystDto.builder()
                 .paraId(this.paraId)
                 .clctSystCd(this.clctSystCd)
                 .fusnPrrt(this.fusnPrrt)
                 .fusnWght(this.fusnWght)
                 .build();
+
+        if (this.syst != null) {
+            dto.setClctSystDesc(this.syst.getClctSystNm());
+        }
+        return dto;
     }
 
     public TbLinkParaClctSyst(Long paraId, String clctSystCd) {

+ 6 - 1
src/main/java/com/its/op/entity/its/link/TbLinkParaDetl.java

@@ -93,7 +93,7 @@ public class TbLinkParaDetl implements Serializable {
     private Double ptrnR;
 
     public TbLinkParaDetlDto toDto() {
-        return TbLinkParaDetlDto.builder()
+        TbLinkParaDetlDto dto = TbLinkParaDetlDto.builder()
                 .paraId(this.paraId)
                 .fltrMinTfvl(this.fltrMinTfvl)
                 .fltrMaxTfvl(this.fltrMaxTfvl)
@@ -111,6 +111,11 @@ public class TbLinkParaDetl implements Serializable {
                 .smthWghtAvrgPre2cycl(this.smthWghtAvrgPre2cycl)
                 .ptrnR(this.ptrnR)
                 .build();
+
+        if ("Y".equals(dto.getAdjsPtrn15mAplyYn())) dto.setAdjsPtrn15mAplyDesc("적용함");
+        else dto.setAdjsPtrn15mAplyDesc("적용안함");
+
+        return dto;
     }
 
     public TbLinkParaDetl(Long paraId) {

+ 44 - 5
src/main/java/com/its/op/entity/its/link/TbLinkParaStup.java

@@ -7,12 +7,12 @@ 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.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
+import java.util.ArrayList;
 
 /**
  * 링크 파라미터 설정 Entity Class
@@ -52,8 +52,14 @@ public class TbLinkParaStup implements Serializable {
     @Column(name = "PARA_NM", length = 40)
     private String paraNm;
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="PARA_ID", referencedColumnName = "PARA_ID")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbLinkParaDetl detl = new TbLinkParaDetl();
+
+
     public TbLinkParaStupDto toDto() {
-        return TbLinkParaStupDto.builder()
+        TbLinkParaStupDto dto = TbLinkParaStupDto.builder()
                 .paraId(this.paraId)
                 .fltrMthdCd(this.fltrMthdCd)
                 .fusnMthdCd(this.fusnMthdCd)
@@ -61,6 +67,39 @@ public class TbLinkParaStup implements Serializable {
                 .smthMthdCd(this.smthMthdCd)
                 .paraNm(this.paraNm)
                 .build();
+
+        // 필터링 파라미터
+        if ("FMT0".equals(dto.getFltrMthdCd())) dto.setFltrMthdDesc("사용안함");
+        else
+        if ("FMT1".equals(dto.getFltrMthdCd())) dto.setFltrMthdDesc("범위값 사용");
+        else dto.setFltrMthdDesc("- " + dto.getFltrMthdCd());
+
+        // 퓨전 파라미터
+        if ("FST1".equals(dto.getFusnMthdCd())) dto.setFusnMthdCd("우선순위");
+        else
+        if ("FST2".equals(dto.getFusnMthdCd())) dto.setFusnMthdCd("가중치");
+        else
+        if ("FST3".equals(dto.getFusnMthdCd())) dto.setFusnMthdCd("최대값");
+        else dto.setFusnMthdCd("- " + dto.getFusnMthdCd());
+
+        // 결측보정 파라미터
+        if ("MCA0".equals(dto.getAdjsMthdCd())) dto.setAdjsMthdDesc("사용안함");
+        else
+        if ("MCA1".equals(dto.getAdjsMthdCd())) dto.setAdjsMthdDesc("단기(15분이동평균)/ㅈ아기(5분패턴)");
+        else
+        if ("MCA2".equals(dto.getAdjsMthdCd())) dto.setAdjsMthdDesc("패턴적용");
+        else dto.setAdjsMthdDesc("- " + dto.getAdjsMthdCd());
+
+        // 평활화 파라미터
+        if ("SMT0".equals(dto.getSmthMthdCd())) dto.setSmthMthdDesc("사용안함");
+        else
+        if ("SMT1".equals(dto.getSmthMthdCd())) dto.setSmthMthdDesc("편차제한");
+        else
+        if ("SMT2".equals(dto.getSmthMthdCd())) dto.setSmthMthdDesc("15분 이동평균");
+        else dto.setSmthMthdDesc("- " + dto.getSmthMthdCd());
+
+        dto.setClcts(new ArrayList<>());
+        return dto;
     }
 
     public TbLinkParaStup(Long paraId) {

+ 1 - 1
src/main/java/com/its/op/service/its/link/LinkParaClctSystService.java

@@ -29,7 +29,7 @@ public class LinkParaClctSystService {
     }
 
     public List<TbLinkParaClctSyst> findListById(Long id) {
-        return this.repo.findListById(id);
+        return null;//this.repo.findListById(id);
     }
 
     @Transactional

+ 0 - 60
src/main/java/com/its/op/service/its/link/LinkParaStupService.java

@@ -1,60 +0,0 @@
-package com.its.op.service.its.link;
-
-import com.its.op.dao.repository.its.link.TbLinkParaStupRepository;
-import com.its.op.dao.repository.its.link.TbLinkRepository;
-import com.its.op.dto.its.link.LinkParaStupDto;
-import com.its.op.entity.its.link.TbLink;
-import com.its.op.entity.its.link.TbLinkParaStup;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import javax.transaction.Transactional;
-import java.util.List;
-import java.util.Optional;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class LinkParaStupService {
-
-    private final TbLinkParaStupRepository repo;
-    private final TbLinkRepository linkRepo;
-
-    public List<TbLinkParaStup> findAll() {
-        return this.repo.findAll();
-    }
-
-    public TbLinkParaStup findById(Long id) {
-        Optional<TbLinkParaStup> data = this.repo.findById(id);
-        if (data.isPresent()) {
-            return data.get();
-        }
-        return null;
-    }
-
-    @Transactional
-    public TbLinkParaStup mergeById(Long id, LinkParaStupDto.LinkParaStupUpdateReq req) {
-        Optional<TbLinkParaStup> data = this.repo.findById(id);
-        TbLinkParaStup obj = data.orElseGet(() -> new TbLinkParaStup(id));
-        //obj.updateInfo(req);
-        this.repo.save(obj);
-        return obj;
-    }
-
-    @Transactional
-    public LinkParaStupDto.LinkParaStupUpdateReq mergeAll(LinkParaStupDto.LinkParaStupUpdateReq req) {
-        List<TbLink> links = this.linkRepo.findAll();
-        for (TbLink link : links) {
-            if (("Y").equals(link.getDelYn())) {
-                continue;
-            }
-
-            Optional<TbLinkParaStup> data = this.repo.findById(link.getLinkId());
-            TbLinkParaStup obj = data.orElseGet(() -> new TbLinkParaStup(link.getLinkId()));
-            //obj.updateInfo(req);
-            this.repo.save(obj);
-        }
-        return req;
-    }
-}

+ 1 - 1
src/main/java/com/its/op/service/its/link/LinkPrcsParaService.java

@@ -38,7 +38,7 @@ public class LinkPrcsParaService {
         TbLinkParaDetl detl = null;
         Optional<TbLinkParaStup> stupOpt = this.stupRepo.findById(id);
         Optional<TbLinkParaDetl> detlOpt = this.detlRepo.findById(id);
-        List<TbLinkParaClctSyst> systOpt = this.systRepo.findListById(id);
+        List<TbLinkParaClctSyst> systOpt = null;//this.systRepo.findListById(id);
         if (stupOpt.isPresent()) {
             stup = stupOpt.get();
         }

+ 171 - 0
src/main/java/com/its/op/service/its/link/TbLinkParaStupService.java

@@ -0,0 +1,171 @@
+package com.its.op.service.its.link;
+
+import com.its.op.dao.repository.its.link.TbLinkParaClctSystRepository;
+import com.its.op.dao.repository.its.link.TbLinkParaDetlRepository;
+import com.its.op.dao.repository.its.link.TbLinkParaStupRepository;
+import com.its.op.dao.repository.its.link.TbLinkRepository;
+import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
+import com.its.op.dto.its.link.TbLinkParaClctSystDto;
+import com.its.op.dto.its.link.TbLinkParaDetlDto;
+import com.its.op.dto.its.link.TbLinkParaStupDto;
+import com.its.op.entity.its.link.TbLinkParaClctSyst;
+import com.its.op.entity.its.link.TbLinkParaDetl;
+import com.its.op.entity.its.link.TbLinkParaStup;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbLinkParaStupService {
+
+    private final TbLinkParaStupRepository repo;
+    private final TbLinkParaDetlRepository detlRepo;
+    private final TbLinkParaClctSystRepository clctRepo;
+    private final TbLinkRepository linkRepo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbLinkParaStup requireOne(Long paramId) throws NoSuchElementException {
+        Optional<TbLinkParaStup> info = this.repo.findById(paramId);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + paramId);
+        }
+    }
+
+    /**
+     * 가공파라미터 목록 조회(설정, 설정상세만 조회, 수집시스템은 조회 안함)
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<TbLinkParaStupDto> findAll() {
+        Map<Long, TbLinkParaStupDto> result = new HashMap<>();
+        List<TbLinkParaStup> data = this.repo.findAll();
+
+        // 파라미터, 파라미터 상세
+        for (TbLinkParaStup entity : data) {
+            TbLinkParaStupDto dto = entity.toDto();
+            dto.setDetl(entity.getDetl().toDto());
+            result.put(dto.getParaId(), dto);
+        }
+
+        // 수집 시스템, 개별적으로 읽어 올때만 사용하자....
+//        List<TbLinkParaClctSyst> clcts = this.clctRepo.findAll();
+//        for (TbLinkParaClctSyst clct : clcts) {
+//            TbLinkParaStupDto dto = result.get(clct.getParaId());
+//            if (dto != null) {
+//                dto.getClcts().add(clct.toDto());
+//            }
+//        }
+        return new ArrayList<>(result.values());
+    }
+
+    /**
+     * 가공파라미터 정보 조회(설정, 설정상세, 수집시스템)
+     * @param paramId
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public TbLinkParaStupDto findById(Long paramId) {
+        TbLinkParaStup data = requireOne(paramId);
+        TbLinkParaStupDto result = data.toDto();
+
+        List<TbLinkParaClctSyst> clcts = this.clctRepo.findClctsById(paramId);
+        for (TbLinkParaClctSyst clct : clcts) {
+            result.getClcts().add(clct.toDto());
+        }
+        return result;
+    }
+
+    /**
+     * 신규 가공 파라미터 번호 조회
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public NewIdLongDto getNewNmbr() {
+        Long newId = this.repo.getNewNmbr();
+        return NewIdLongDto.builder().newId(newId).build();
+    }
+
+    /**
+     * 파리미터가 사용 중 인지를 체크
+     * @param paramId
+     * @return
+     */
+    @Transactional
+    public UsageCountDto findUsageId(Long paramId) {
+        UsageCountDto result = UsageCountDto.builder()
+                .count(0)
+                .build();
+        Integer data = this.repo.findUsageId(paramId);
+        result.setCount(data);
+        return result;
+    }
+
+    /**
+     * 파라미터 정보 삭제
+     * @param paramId
+     * @return
+     */
+    @Transactional
+    public TbLinkParaStupDto deleteDataById(Long paramId) {
+        if (paramId == 1) {
+            throw new NoSuchElementException("첫번째 파라미터 정보는 삭제할 수 없습니다.: " + paramId);
+        }
+        TbLinkParaStupDto result = findById(paramId);
+
+        this.clctRepo.deleteDataById(paramId);
+        this.detlRepo.deleteDataById(paramId);
+        this.repo.deleteDataById(paramId);
+
+        return result;
+    }
+
+//    @Transactional
+//    public TbLinkParaStup mergeById(Long id, LinkParaStupDto.LinkParaStupUpdateReq req) {
+//        Optional<TbLinkParaStup> data = this.repo.findById(id);
+//        TbLinkParaStup obj = data.orElseGet(() -> new TbLinkParaStup(id));
+//        //obj.updateInfo(req);
+//        this.repo.save(obj);
+//        return obj;
+//    }
+
+    /**
+     * 파라미터 정보 생성 또는 업데이트
+     * @param paramId
+     * @param para
+     * @param detl
+     * @param clcts
+     * @return
+     */
+    @Transactional
+    public TbLinkParaStupDto mergeInfo(Long paramId,
+                                       TbLinkParaStupDto.TbLinkParaStupUpdReq para,
+                                       TbLinkParaDetlDto.TbLinkParaDetlUpdReq detl,
+                                       List<TbLinkParaClctSystDto.TbLinkParaClctSystUpdReq> clcts) {
+        TbLinkParaStup paraObj = para.toEntity();
+        TbLinkParaDetl detlObj = detl.toEntity();
+
+        // 수집시스템 파라미터 삭제
+        this.clctRepo.deleteDataById(paramId);
+
+        // 파라미터 정보 저장
+        this.repo.save(paraObj);
+        // 파라미터 상세 정보 저장
+        this.detlRepo.save(detlObj);
+        // 파라미터 수집 시스템 저장
+
+        for (TbLinkParaClctSystDto.TbLinkParaClctSystUpdReq clct : clcts) {
+            TbLinkParaClctSyst clctObj = clct.toEntity();
+            this.clctRepo.save(clctObj);
+        }
+        return paraObj.toDto();
+    }
+}