shjung 2 anni fa
parent
commit
5b0ca2ce7e
23 ha cambiato i file con 169 aggiunte e 115 eliminazioni
  1. 7 0
      src/main/java/com/its/op/controller/its/facility/TbFcltSubjController.java
  2. 7 0
      src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartController.java
  3. 10 5
      src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartInController.java
  4. 10 5
      src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartOutController.java
  5. 1 1
      src/main/java/com/its/op/dao/mapper/its/rse/RseMapper.java
  6. 4 1
      src/main/java/com/its/op/dao/repository/its/facility/TbFcltFailActRepository.java
  7. 4 1
      src/main/java/com/its/op/dao/repository/its/facility/TbFcltFailRepository.java
  8. 7 2
      src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartInRepository.java
  9. 7 2
      src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartOutRepository.java
  10. 3 0
      src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartRepository.java
  11. 12 1
      src/main/java/com/its/op/dto/its/facility/TbFcltSubjPartInDto.java
  12. 14 3
      src/main/java/com/its/op/dto/its/facility/TbFcltSubjPartOutDto.java
  13. 6 12
      src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartIn.java
  14. 0 24
      src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartInKey.java
  15. 6 11
      src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartOut.java
  16. 0 27
      src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartOutKey.java
  17. 2 0
      src/main/java/com/its/op/service/its/facility/TbFcltFailService.java
  18. 15 9
      src/main/java/com/its/op/service/its/facility/TbFcltSubjPartInService.java
  19. 14 9
      src/main/java/com/its/op/service/its/facility/TbFcltSubjPartOutService.java
  20. 20 0
      src/main/java/com/its/op/service/its/facility/TbFcltSubjPartService.java
  21. 18 0
      src/main/java/com/its/op/service/its/facility/TbFcltSubjService.java
  22. 1 1
      src/main/java/com/its/op/service/its/rse/RseControlService.java
  23. 1 1
      src/main/resources/mybatis/mapper/its/rse/RseMapper.xml

+ 7 - 0
src/main/java/com/its/op/controller/its/facility/TbFcltSubjController.java

@@ -1,6 +1,7 @@
 package com.its.op.controller.its.facility;
 
 import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
 import com.its.op.dto.its.facility.TbFcltSubjDto;
 import com.its.op.service.its.facility.TbFcltSubjService;
 import io.swagger.annotations.Api;
@@ -63,4 +64,10 @@ public class TbFcltSubjController {
         return this.service.getNewSubjId(fcltType);
     }
 
+    @ApiOperation(value = "품목 번호 사용여부 체크(삭제하기 전에, 부품/장애내역에서 사용됨)", response = UsageCountDto.class)
+    @GetMapping(value = "/usage/{subjNmbr}", produces = {"application/json; charset=utf8"})
+    public UsageCountDto findUsageBySubjNmbr(@PathVariable("subjNmbr") final Long subjNmbr) {
+        return this.service.findUsageBySubjNmbr(subjNmbr);
+    }
+
 }

+ 7 - 0
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartController.java

@@ -1,6 +1,7 @@
 package com.its.op.controller.its.facility;
 
 import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartDto;
 import com.its.op.service.its.facility.TbFcltSubjPartService;
 import io.swagger.annotations.Api;
@@ -64,4 +65,10 @@ public class TbFcltSubjPartController {
         return this.service.getNewPartId(subjNmbr);
     }
 
+    @ApiOperation(value = "부품 번호 사용여부 체크(삭제하기 전에, 입고/출고/장애조치내역에서 사용됨)", response = UsageCountDto.class)
+    @GetMapping(value = "/usage/{partNmbr}", produces = {"application/json; charset=utf8"})
+    public UsageCountDto findUsageCountByPartNmbr(@PathVariable("partNmbr") final Long partNmbr) {
+        return this.service.findUsageCountByPartNmbr(partNmbr);
+    }
+
 }

+ 10 - 5
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartInController.java

@@ -1,7 +1,7 @@
 package com.its.op.controller.its.facility;
 
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartInDto;
-import com.its.op.entity.its.facility.TbFcltSubjPartInKey;
 import com.its.op.service.its.facility.TbFcltSubjPartInService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -49,10 +49,15 @@ public class TbFcltSubjPartInController {
     }
 
     @ApiOperation(value = "FMS 시설물 부품 입고 정보 정보삭제-개별(TB_FCLT_SUBJ_PART_IN)", response = TbFcltSubjPartInDto.class)
-    @DeleteMapping(value = "/{partNmbr}/{inDt}", produces = {"application/json; charset=utf8"})
-    public TbFcltSubjPartInDto deleteDataById(@PathVariable("partNmbr") final Long partNmbr, @PathVariable("inDt") final String inDt) {
-        TbFcltSubjPartInKey key = new TbFcltSubjPartInKey(partNmbr, inDt);
-        return this.service.deleteById(key);
+    @DeleteMapping(value = "/{inSeq}", produces = {"application/json; charset=utf8"})
+    public TbFcltSubjPartInDto deleteDataById(@PathVariable("inSeq") final Long inSeq) {
+        return this.service.deleteById(inSeq);
+    }
+
+    @ApiOperation(value = "신규 ID 조회", response = NewIdLongDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public NewIdLongDto getNewNmbr() {
+        return this.service.getNewNmbr();
     }
 
 }

+ 10 - 5
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartOutController.java

@@ -1,7 +1,7 @@
 package com.its.op.controller.its.facility;
 
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartOutDto;
-import com.its.op.entity.its.facility.TbFcltSubjPartOutKey;
 import com.its.op.service.its.facility.TbFcltSubjPartOutService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -49,10 +49,15 @@ public class TbFcltSubjPartOutController {
     }
 
     @ApiOperation(value = "FMS 시설물 부품 출고 정보 정보삭제-개별(TB_FCLT_SUBJ_PART_OUT)", response = TbFcltSubjPartOutDto.class)
-    @DeleteMapping(value = "/{partNmbr}/{fcltId}/{outDt}", produces = {"application/json; charset=utf8"})
-    public TbFcltSubjPartOutDto deleteDataById(@PathVariable("partNmbr") final Long partNmbr, @PathVariable("fcltId") final String fcltId, @PathVariable("outDt") final String outDt) {
-        TbFcltSubjPartOutKey key = new TbFcltSubjPartOutKey(partNmbr, fcltId, outDt);
-        return this.service.deleteById(key);
+    @DeleteMapping(value = "/{outSeq}", produces = {"application/json; charset=utf8"})
+    public TbFcltSubjPartOutDto deleteDataById(@PathVariable("outSeq") final Long outSeq) {
+        return this.service.deleteById(outSeq);
+    }
+
+    @ApiOperation(value = "신규 ID 조회", response = NewIdLongDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public NewIdLongDto getNewNmbr() {
+        return this.service.getNewNmbr();
     }
 
 }

+ 1 - 1
src/main/java/com/its/op/dao/mapper/its/rse/RseMapper.java

@@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface RseMapper {
 
-    NewCtrlSeqDto getNextCtrlSeq();
+    NewCtrlSeqDto getNextRseCtrlSeq();
     int insertRseCtrlHs(@Param("obj") TbRseCtrlHs obj);
 
 }

+ 4 - 1
src/main/java/com/its/op/dao/repository/its/facility/TbFcltFailActRepository.java

@@ -26,6 +26,9 @@ public interface TbFcltFailActRepository extends JpaRepository<TbFcltFailAct, Tb
     List<TbFcltFailAct> findActListByFailNo(@Param("failNo") String failNo);
 
     @Query("select count(p.failNo) from TbFcltFailAct p where p.failNo = :failNo")
-    Integer findUsageCountById(String failNo);
+    Integer findUsageCountById(@Param("failNo") String failNo);
+
+    @Query("select count(p.partNmbr) from TbFcltFailAct p where p.partNmbr = :partNmbr")
+    Integer findUsageCountByPartNmbr(@Param("partNmbr") Long partNmbr);
 
 }

+ 4 - 1
src/main/java/com/its/op/dao/repository/its/facility/TbFcltFailRepository.java

@@ -28,7 +28,6 @@ public interface TbFcltFailRepository extends JpaRepository<TbFcltFail, String>,
     @Query("select p from TbFcltFail p where p.strDt between :fromDt and :toDt")
     List<TbFcltFail> findListAll(@Param("fromDt") String fromDt, @Param("toDt") String toDt);
 
-
     @Query("select p from TbFcltFail p, TbFcltInfr m where m.fcltType = :fcltType and m.fcltNmbr = p.fcltNmbr and p.strDt between :fromDt and :toDt")
     List<TbFcltFail> findListTypeAll(@Param("fcltType") String fcltType, @Param("fromDt") String fromDt, @Param("toDt") String toDt);
 
@@ -48,4 +47,8 @@ public interface TbFcltFailRepository extends JpaRepository<TbFcltFail, String>,
 
     @Query("select p from TbFcltFail p, TbFcltInfr m where m.fcltType in (select cd.cmmnCd from TbCmmnCd cd where cd.cmmnClsfCd = :fcltGroup) and m.fcltNmbr = p.fcltNmbr and p.strDt between :fromDt and :toDt")
     List<TbFcltFail> findListGroupTypeAll(@Param("fcltGroup") String fcltGroup, @Param("fromDt") String fromDt, @Param("toDt") String toDt);
+
+    @Query("select count(p.subjNmbr) from TbFcltFail p where p.subjNmbr = :subjNmbr")
+    Integer findUsageBySubjNmbr(@Param("subjNmbr") Long subjNmbr);
+
 }

+ 7 - 2
src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartInRepository.java

@@ -1,7 +1,6 @@
 package com.its.op.dao.repository.its.facility;
 
 import com.its.op.entity.its.facility.TbFcltSubjPartIn;
-import com.its.op.entity.its.facility.TbFcltSubjPartInKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -11,7 +10,7 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 @Repository
-public interface TbFcltSubjPartInRepository extends JpaRepository<TbFcltSubjPartIn, TbFcltSubjPartInKey>, JpaSpecificationExecutor<TbFcltSubjPartIn> {
+public interface TbFcltSubjPartInRepository extends JpaRepository<TbFcltSubjPartIn, Long>, JpaSpecificationExecutor<TbFcltSubjPartIn> {
 
     @Query("select p from TbFcltSubjPartIn p")
     List<TbFcltSubjPartIn> findAll();
@@ -22,4 +21,10 @@ public interface TbFcltSubjPartInRepository extends JpaRepository<TbFcltSubjPart
     @Query("select p from TbFcltSubjPartIn p where p.partNmbr = :partNmbr and p.inDt between :fromDay and :toDay")
     List<TbFcltSubjPartIn> findAllByPartNmbrDateRange(@Param("partNmbr") Long partNmbr, @Param("fromDay") String fromDay, @Param("toDay") String toDay);
 
+    @Query("select count(p.partNmbr) from TbFcltSubjPartIn p where p.partNmbr = :partNmbr")
+    Integer findUsageCountByPartNmbr(@Param("partNmbr") Long partNmbr);
+
+    @Query(value = "SELECT NVL(MAX(IN_SEQ), 0) + 1 AS NEWID FROM TB_FCLT_SUBJ_PART_IN", nativeQuery = true)
+    Long getNewNmbr();
+
 }

+ 7 - 2
src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartOutRepository.java

@@ -1,7 +1,6 @@
 package com.its.op.dao.repository.its.facility;
 
 import com.its.op.entity.its.facility.TbFcltSubjPartOut;
-import com.its.op.entity.its.facility.TbFcltSubjPartOutKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -11,7 +10,7 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 @Repository
-public interface TbFcltSubjPartOutRepository extends JpaRepository<TbFcltSubjPartOut, TbFcltSubjPartOutKey>, JpaSpecificationExecutor<TbFcltSubjPartOut> {
+public interface TbFcltSubjPartOutRepository extends JpaRepository<TbFcltSubjPartOut, Long>, JpaSpecificationExecutor<TbFcltSubjPartOut> {
 
     @Query("select p from TbFcltSubjPartOut p")
     List<TbFcltSubjPartOut> findAll();
@@ -22,4 +21,10 @@ public interface TbFcltSubjPartOutRepository extends JpaRepository<TbFcltSubjPar
     @Query("select p from TbFcltSubjPartOut p where p.partNmbr = :partNmbr and p.outDt between :fromDay and :toDay")
     List<TbFcltSubjPartOut> findAllByPartNmbrDateRange(@Param("partNmbr") Long partNmbr, @Param("fromDay") String fromDay, @Param("toDay") String toDay);
 
+    @Query("select count(p.partNmbr) from TbFcltSubjPartOut p where p.partNmbr = :partNmbr")
+    Integer findUsageCountByPartNmbr(@Param("partNmbr") Long partNmbr);
+
+    @Query(value = "SELECT NVL(MAX(OUT_SEQ), 0) + 1 AS NEWID FROM TB_FCLT_SUBJ_PART_OUT", nativeQuery = true)
+    Long getNewNmbr();
+
 }

+ 3 - 0
src/main/java/com/its/op/dao/repository/its/facility/TbFcltSubjPartRepository.java

@@ -32,4 +32,7 @@ public interface TbFcltSubjPartRepository extends JpaRepository<TbFcltSubjPart,
     @Query(value = "UPDATE TB_FCLT_SUBJ_PART SET VALID_CNT = :validCnt WHERE PART_NMBR = :partNmbr", nativeQuery = true)
     Integer updateValidCount(@Param("partNmbr") Long partNmbr, @Param("validCnt") Integer validCnt);
 
+    @Query("select count(p.subjNmbr) from TbFcltSubjPart p where p.subjNmbr = :subjNmbr")
+    Integer findUsageBySubjNmbr(@Param("subjNmbr") Long subjNmbr);
+
 }

+ 12 - 1
src/main/java/com/its/op/dto/its/facility/TbFcltSubjPartInDto.java

@@ -19,6 +19,10 @@ import java.io.Serializable;
 public class TbFcltSubjPartInDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty("부품 입고 일련번호")  // N NUMBER(10)
+    @JsonProperty("in_seq")
+    private Long inSeq;
+
     @ApiModelProperty("부품 품목 번호")  // N NUMBER(10)
     @JsonProperty("part_nmbr")
     private Long partNmbr;
@@ -59,6 +63,11 @@ public class TbFcltSubjPartInDto implements Serializable {
     @NoArgsConstructor//(access = AccessLevel.PROTECTED)
     public static class TbFcltSubjPartInUpdReq {
 
+        @ApiModelProperty("부품 입고 일련번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("in_seq")
+        @PositiveOrZero
+        private Long inSeq;
+
         @ApiModelProperty("부품 품목 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
         @JsonProperty("part_nmbr")
         @PositiveOrZero
@@ -100,7 +109,8 @@ public class TbFcltSubjPartInDto implements Serializable {
         private Integer validCnt;
 
         @Builder
-        public TbFcltSubjPartInUpdReq(Long part_nmbr, String in_dt, String in_unit, Integer per_amt, Integer in_cnt, String cmpy_id, String user_id, Integer valid_cnt) {
+        public TbFcltSubjPartInUpdReq(Long in_seq, Long part_nmbr, String in_dt, String in_unit, Integer per_amt, Integer in_cnt, String cmpy_id, String user_id, Integer valid_cnt) {
+            this.inSeq = in_seq;
             this.partNmbr = part_nmbr;
             this.inDt = in_dt;
             this.inUnit = in_unit;
@@ -113,6 +123,7 @@ public class TbFcltSubjPartInDto implements Serializable {
 
         public TbFcltSubjPartIn toEntity() {
             return TbFcltSubjPartIn.builder()
+                    .inSeq(this.inSeq)
                     .partNmbr(this.partNmbr)
                     .inDt(this.inDt)
                     .inUnit(this.inUnit)

+ 14 - 3
src/main/java/com/its/op/dto/its/facility/TbFcltSubjPartOutDto.java

@@ -19,7 +19,11 @@ import java.io.Serializable;
 public class TbFcltSubjPartOutDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty("")  // N NUMBER(10)
+    @ApiModelProperty("부품 출고 일련번호")  // N NUMBER(10)
+    @JsonProperty("out_seq")
+    private Long outSeq;
+
+    @ApiModelProperty("부품 번호")  // N NUMBER(10)
     @JsonProperty("part_nmbr")
     private Long partNmbr;
 
@@ -55,7 +59,12 @@ public class TbFcltSubjPartOutDto implements Serializable {
     @NoArgsConstructor//(access = AccessLevel.PROTECTED)
     public static class TbFcltSubjPartOutUpdReq {
 
-        @ApiModelProperty(", Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @ApiModelProperty("부품 출고 일련번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("out_seq")
+        @PositiveOrZero
+        private Long outSeq;
+
+        @ApiModelProperty("부품번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
         @JsonProperty("part_nmbr")
         @PositiveOrZero
         private Long partNmbr;
@@ -91,7 +100,8 @@ public class TbFcltSubjPartOutDto implements Serializable {
         private Integer validCnt;
 
         @Builder
-        public TbFcltSubjPartOutUpdReq(Long part_nmbr, String fclt_id, String out_dt, Integer out_cnt, String out_desc, String user_id, Integer valid_cnt) {
+        public TbFcltSubjPartOutUpdReq(Long out_seq, Long part_nmbr, String fclt_id, String out_dt, Integer out_cnt, String out_desc, String user_id, Integer valid_cnt) {
+            this.outSeq = out_seq;
             this.partNmbr = part_nmbr;
             this.fcltId = fclt_id;
             this.outDt = out_dt;
@@ -103,6 +113,7 @@ public class TbFcltSubjPartOutDto implements Serializable {
 
         public TbFcltSubjPartOut toEntity() {
             return TbFcltSubjPartOut.builder()
+                    .outSeq(this.outSeq)
                     .partNmbr(this.partNmbr)
                     .fcltId(this.fcltId)
                     .outDt(this.outDt)

+ 6 - 12
src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartIn.java

@@ -21,17 +21,19 @@ import java.io.Serializable;
 @ApiModel("FMS 시설물 부품 입고 정보")
 @Entity
 @Table(name = "TB_FCLT_SUBJ_PART_IN")
-@IdClass(TbFcltSubjPartInKey.class)
 public class TbFcltSubjPartIn implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty("부품 품목 번호")  // N NUMBER(10)
+    @ApiModelProperty("부품 입고 일련번호")  // N NUMBER(10)
     @Id
+    @Column(name = "IN_SEQ", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long inSeq;
+
+    @ApiModelProperty("부품 품목 번호")  // N NUMBER(10)
     @Column(name = "PART_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
     private Long partNmbr;
 
     @ApiModelProperty("입고 일자")  // N VARCHAR2(8)
-    @Id
     @Column(name = "IN_DT", nullable = false, length = 8)
     private String inDt;
 
@@ -61,6 +63,7 @@ public class TbFcltSubjPartIn implements Serializable {
 
     public TbFcltSubjPartInDto toDto() {
         return TbFcltSubjPartInDto.builder()
+                .inSeq(this.inSeq)
                 .partNmbr(this.partNmbr)
                 .inDt(this.inDt)
                 .inUnit(this.inUnit)
@@ -77,13 +80,4 @@ public class TbFcltSubjPartIn implements Serializable {
         this.inDt = inDt;
     }
 
-    public void updateInfo(TbFcltSubjPartInDto.TbFcltSubjPartInUpdReq req) {
-        this.inUnit = req.getInUnit();
-        this.perAmt = req.getPerAmt();
-        this.inCnt = req.getInCnt();
-        this.cmpyId = req.getCmpyId();
-        this.userId = req.getUserId();
-        this.validCnt = req.getValidCnt();
-    }
-
 }

+ 0 - 24
src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartInKey.java

@@ -1,24 +0,0 @@
-package com.its.op.entity.its.facility;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * FMS 시설물 부품 입고 정보 Key Class
- */
-@Data
-@NoArgsConstructor//(access = AccessLevel.PROTECTED)
-@AllArgsConstructor
-public class TbFcltSubjPartInKey implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    // PART_NMBR, 부품 품목 번호  // N NUMBER(10)
-    private Long partNmbr;
-
-    // IN_DT, 입고 일자  // N VARCHAR2(8)
-    private String inDt;
-
-}

+ 6 - 11
src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartOut.java

@@ -21,22 +21,23 @@ import java.io.Serializable;
 @ApiModel("FMS 시설물 부품 출고 정보")
 @Entity
 @Table(name = "TB_FCLT_SUBJ_PART_OUT")
-@IdClass(TbFcltSubjPartOutKey.class)
 public class TbFcltSubjPartOut implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty("")  // N NUMBER(10)
+    @ApiModelProperty("부품 출고 일련번호")  // N NUMBER(10)
     @Id
+    @Column(name = "OUT_SEQ", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long outSeq;
+
+    @ApiModelProperty("")  // N NUMBER(10)
     @Column(name = "PART_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
     private Long partNmbr;
 
     @ApiModelProperty("출고 대상 시설물 ID")  // N VARCHAR2(30)
-    @Id
     @Column(name = "FCLT_ID", nullable = false, length = 30)
     private String fcltId;
 
     @ApiModelProperty("출고 일자")  // N VARCHAR2(8)
-    @Id
     @Column(name = "OUT_DT", nullable = false, length = 8)
     private String outDt;
 
@@ -58,6 +59,7 @@ public class TbFcltSubjPartOut implements Serializable {
 
     public TbFcltSubjPartOutDto toDto() {
         return TbFcltSubjPartOutDto.builder()
+                .outSeq(this.outSeq)
                 .partNmbr(this.partNmbr)
                 .fcltId(this.fcltId)
                 .outDt(this.outDt)
@@ -74,11 +76,4 @@ public class TbFcltSubjPartOut implements Serializable {
         this.outDt = outDt;
     }
 
-    public void updateInfo(TbFcltSubjPartOutDto.TbFcltSubjPartOutUpdReq req) {
-        this.outCnt = req.getOutCnt();
-        this.outDesc = req.getOutDesc();
-        this.userId = req.getUserId();
-        this.validCnt = req.getValidCnt();
-    }
-
 }

+ 0 - 27
src/main/java/com/its/op/entity/its/facility/TbFcltSubjPartOutKey.java

@@ -1,27 +0,0 @@
-package com.its.op.entity.its.facility;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * FMS 시설물 부품 출고 정보 Key Class
- */
-@Data
-@NoArgsConstructor//(access = AccessLevel.PROTECTED)
-@AllArgsConstructor
-public class TbFcltSubjPartOutKey implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    // PART_NMBR,   // N NUMBER(10)
-    private Long partNmbr;
-
-    // FCLT_ID, 출고 대상 시설물 ID  // N VARCHAR2(30)
-    private String fcltId;
-
-    // OUT_DT, 출고 일자  // N VARCHAR2(8)
-    private String outDt;
-
-}

+ 2 - 0
src/main/java/com/its/op/service/its/facility/TbFcltFailService.java

@@ -232,6 +232,7 @@ public class TbFcltFailService {
         return result;
     }
 
+    @Transactional(readOnly = true)
     public UsageCountDto findUsageId(String failNo) {
         UsageCountDto result = UsageCountDto.builder()
                 .count(0)
@@ -240,4 +241,5 @@ public class TbFcltFailService {
         result.setCount(data);
         return result;
     }
+
 }

+ 15 - 9
src/main/java/com/its/op/service/its/facility/TbFcltSubjPartInService.java

@@ -1,10 +1,10 @@
 package com.its.op.service.its.facility;
 
 import com.its.op.dao.repository.its.facility.TbFcltSubjPartInRepository;
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartInDto;
 import com.its.op.entity.its.facility.TbFcltSubjPartIn;
-import com.its.op.entity.its.facility.TbFcltSubjPartInKey;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -24,7 +24,7 @@ public class TbFcltSubjPartInService {
     private final TbFcltSubjPartService partService;
 
     // 데이터 1건 조회, 없으면 exception
-    private TbFcltSubjPartIn requireOne(TbFcltSubjPartInKey id) throws NoSuchElementException {
+    private TbFcltSubjPartIn requireOne(Long id) throws NoSuchElementException {
         Optional<TbFcltSubjPartIn> info = this.repo.findById(id);
         if (info.isPresent()) {
             return info.get();
@@ -50,8 +50,7 @@ public class TbFcltSubjPartInService {
     public TbFcltSubjPartInDto mergeInfo(TbFcltSubjPartInDto.TbFcltSubjPartInUpdReq req) {
         TbFcltSubjPartIn subjPart = null;
         try {
-            TbFcltSubjPartInKey key = new TbFcltSubjPartInKey(req.getPartNmbr(), req.getInDt());
-            subjPart = requireOne(key);
+            subjPart = requireOne(req.getInSeq());
         } catch (Exception e) {
             log.info("New Data: {}", req);
         }
@@ -74,14 +73,14 @@ public class TbFcltSubjPartInService {
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
     @Transactional
-    public TbFcltSubjPartInDto deleteById(TbFcltSubjPartInKey id) {
-        TbFcltSubjPartIn entity = requireOne(id);
+    public TbFcltSubjPartInDto deleteById(Long inSeq) {
+        TbFcltSubjPartIn entity = requireOne(inSeq);
 
-        this.repo.deleteById(id);
+        this.repo.deleteById(inSeq);
 
-        TbFcltSubjPartDto part = this.partService.findById(id.getPartNmbr());
+        TbFcltSubjPartDto part = this.partService.findById(entity.getPartNmbr());
         int validCnt = part.getValidCnt() - entity.getInCnt();
-        this.partService.updateValidCount(id.getPartNmbr(), validCnt);
+        this.partService.updateValidCount(entity.getPartNmbr(), validCnt);
 
         return entity.toDto();
     }
@@ -105,4 +104,11 @@ public class TbFcltSubjPartInService {
         }
         return result;
     }
+
+    @Transactional(readOnly = true)
+    public NewIdLongDto getNewNmbr() {
+        Long newId = this.repo.getNewNmbr();
+        return NewIdLongDto.builder().newId(newId).build();
+    }
+
 }

+ 14 - 9
src/main/java/com/its/op/service/its/facility/TbFcltSubjPartOutService.java

@@ -1,10 +1,10 @@
 package com.its.op.service.its.facility;
 
 import com.its.op.dao.repository.its.facility.TbFcltSubjPartOutRepository;
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartOutDto;
 import com.its.op.entity.its.facility.TbFcltSubjPartOut;
-import com.its.op.entity.its.facility.TbFcltSubjPartOutKey;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -24,7 +24,7 @@ public class TbFcltSubjPartOutService {
     private final TbFcltSubjPartService partService;
 
     // 데이터 1건 조회, 없으면 exception
-    private TbFcltSubjPartOut requireOne(TbFcltSubjPartOutKey id) throws NoSuchElementException {
+    private TbFcltSubjPartOut requireOne(Long id) throws NoSuchElementException {
         Optional<TbFcltSubjPartOut> info = this.repo.findById(id);
         if (info.isPresent()) {
             return info.get();
@@ -51,8 +51,7 @@ public class TbFcltSubjPartOutService {
 
         TbFcltSubjPartOut subjPart = null;
         try {
-            TbFcltSubjPartOutKey key = new TbFcltSubjPartOutKey(req.getPartNmbr(), req.getFcltId(), req.getOutDt());
-            subjPart = requireOne(key);
+            subjPart = requireOne(req.getOutSeq());
         } catch (Exception e) {
             log.info("New Data: {}", req);
         }
@@ -76,13 +75,13 @@ public class TbFcltSubjPartOutService {
 
     // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
     @Transactional
-    public TbFcltSubjPartOutDto deleteById(TbFcltSubjPartOutKey id) {
-        TbFcltSubjPartOut entity = requireOne(id);
-        this.repo.deleteById(id);
+    public TbFcltSubjPartOutDto deleteById(Long outSeq) {
+        TbFcltSubjPartOut entity = requireOne(outSeq);
+        this.repo.deleteById(outSeq);
 
-        TbFcltSubjPartDto part = this.partService.findById(id.getPartNmbr());
+        TbFcltSubjPartDto part = this.partService.findById(entity.getPartNmbr());
         int validCnt = part.getValidCnt() + entity.getOutCnt();
-        this.partService.updateValidCount(id.getPartNmbr(), validCnt);
+        this.partService.updateValidCount(entity.getPartNmbr(), validCnt);
 
         return entity.toDto();
     }
@@ -107,4 +106,10 @@ public class TbFcltSubjPartOutService {
         return result;
     }
 
+    @Transactional(readOnly = true)
+    public NewIdLongDto getNewNmbr() {
+        Long newId = this.repo.getNewNmbr();
+        return NewIdLongDto.builder().newId(newId).build();
+    }
+
 }

+ 20 - 0
src/main/java/com/its/op/service/its/facility/TbFcltSubjPartService.java

@@ -1,7 +1,11 @@
 package com.its.op.service.its.facility;
 
+import com.its.op.dao.repository.its.facility.TbFcltFailActRepository;
+import com.its.op.dao.repository.its.facility.TbFcltSubjPartInRepository;
+import com.its.op.dao.repository.its.facility.TbFcltSubjPartOutRepository;
 import com.its.op.dao.repository.its.facility.TbFcltSubjPartRepository;
 import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
 import com.its.op.dto.its.facility.TbFcltSubjPartDto;
 import com.its.op.entity.its.facility.TbFcltSubjPart;
 import com.its.op.global.CmmnFcltCdManager;
@@ -21,6 +25,9 @@ import java.util.Optional;
 public class TbFcltSubjPartService {
 
     private final TbFcltSubjPartRepository repo;
+    private final TbFcltSubjPartInRepository inRepo;
+    private final TbFcltSubjPartOutRepository outRepo;
+    private final TbFcltFailActRepository actRepo;
     private final CmmnFcltCdManager manager;
 
     // 데이터 1건 조회, 없으면 exception
@@ -100,4 +107,17 @@ public class TbFcltSubjPartService {
         }
         return result;
     }
+
+    @Transactional(readOnly = true)
+    public UsageCountDto findUsageCountByPartNmbr(Long partNmbr) {
+        UsageCountDto result = UsageCountDto.builder()
+                .count(0)
+                .build();
+        // 부품테이블 사용건수
+        Integer inCount = this.inRepo.findUsageCountByPartNmbr(partNmbr);
+        Integer outCount = this.outRepo.findUsageCountByPartNmbr(partNmbr);
+        Integer actCount = this.actRepo.findUsageCountByPartNmbr(partNmbr);
+        result.setCount(inCount + outCount + actCount);
+        return result;
+    }
 }

+ 18 - 0
src/main/java/com/its/op/service/its/facility/TbFcltSubjService.java

@@ -1,7 +1,10 @@
 package com.its.op.service.its.facility;
 
+import com.its.op.dao.repository.its.facility.TbFcltFailRepository;
+import com.its.op.dao.repository.its.facility.TbFcltSubjPartRepository;
 import com.its.op.dao.repository.its.facility.TbFcltSubjRepository;
 import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.common.UsageCountDto;
 import com.its.op.dto.its.facility.TbFcltSubjDto;
 import com.its.op.entity.its.facility.TbFcltSubj;
 import com.its.op.global.CmmnFcltCdManager;
@@ -21,6 +24,8 @@ import java.util.Optional;
 public class TbFcltSubjService {
 
     private final TbFcltSubjRepository repo;
+    private final TbFcltSubjPartRepository partRepo;
+    private final TbFcltFailRepository failRepo;
     private final CmmnFcltCdManager manager;
 
     // 데이터 1건 조회, 없으면 exception
@@ -95,4 +100,17 @@ public class TbFcltSubjService {
         return result;
     }
 
+    @Transactional(readOnly = true)
+    public UsageCountDto findUsageBySubjNmbr(Long subjNmbr) {
+        UsageCountDto result = UsageCountDto.builder()
+                .count(0)
+                .build();
+        // 부품테이블 사용건수
+        Integer partCount = this.partRepo.findUsageBySubjNmbr(subjNmbr);
+        // 장애내역테이블 사용건수
+        Integer failCount = this.failRepo.findUsageBySubjNmbr(subjNmbr);
+        result.setCount(partCount + failCount);
+        return result;
+    }
+
 }

+ 1 - 1
src/main/java/com/its/op/service/its/rse/RseControlService.java

@@ -54,7 +54,7 @@ public class RseControlService {
      * @return : reset result
      */
     public RseControlDto.RseControlRes controlReset(Long id, RseControlDto.RseControlResetReq req) {
-        NewCtrlSeqDto dto = this.mapper.getNextCtrlSeq();
+        NewCtrlSeqDto dto = this.mapper.getNextRseCtrlSeq();
         TbRseCtrlHs hs = TbRseCtrlHs.builder()
                 .ctrlSeq(dto.getCTRL_SEQ())
                 .rseCtlrNmbr(id)

+ 1 - 1
src/main/resources/mybatis/mapper/its/rse/RseMapper.xml

@@ -3,7 +3,7 @@
 
 <mapper namespace="com.its.op.dao.mapper.its.rse.RseMapper">
 
-    <select id="getNextCtrlSeq" resultType="com.its.op.dto.its.common.NewCtrlSeqDto">
+    <select id="getNextRseCtrlSeq" resultType="com.its.op.dto.its.common.NewCtrlSeqDto">
        <![CDATA[
         SELECT RSE_CTRL_SEQ.NEXTVAL AS CTRL_SEQ FROM DUAL
         ]]>