shjung 2 rokov pred
rodič
commit
fbc9847ab6

+ 13 - 0
src/main/java/com/its/op/controller/its/rse/TbRseCtlrController.java

@@ -1,5 +1,6 @@
 package com.its.op.controller.its.rse;
 
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.rse.TbRseCtlrDto;
 import com.its.op.service.its.rse.TbRseCtlrService;
 import io.swagger.annotations.Api;
@@ -38,6 +39,12 @@ public class TbRseCtlrController {
         return this.service.updateById(id, req);
     }
 
+    @ApiOperation(value = "RSE 수집이상기준 전체적용(TB_RSE_CTLR)", response = Integer.class)
+    @PutMapping(value = "/{clctAbnrBasi}", produces = {"application/json; charset=utf8"})
+    public Integer updateById(@PathVariable final Integer clctAbnrBasi) {
+        return this.service.updateClctAbnrBasi(clctAbnrBasi);
+    }
+
     @ApiOperation(value = "RSE 마스터 정보 정보변경/생성-목록(TB_RSE_CTLR)", response = TbRseCtlrDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "", produces = {"application/json; charset=utf8"})
     public List<TbRseCtlrDto> mergeInfoList(@RequestBody @Valid final List<TbRseCtlrDto.TbRseCtlrUpdReq> listReq) {
@@ -62,4 +69,10 @@ public class TbRseCtlrController {
         return this.service.deleteByIds(ids);
     }
 
+    @ApiOperation(value = "신규 RSE 제어기 ID 조회(TB_RSE_CTLR)", response = NewIdLongDto.class)
+    @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
+    public NewIdLongDto getNewNmbr() {
+        return this.service.getNewNmbr();
+    }
+
 }

+ 7 - 2
src/main/java/com/its/op/controller/its/scrs/TbScSgnlCtlrController.java

@@ -41,11 +41,16 @@ public class TbScSgnlCtlrController {
         return this.service.findById(sgnlIxrNmbr);
     }
 
-    @ApiOperation(value = "신호 제어기 전체조회(TB_SC_SGNL_CTLR)", response = TbScSgnlCtlrPhaseDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    @ApiOperation(value = "신호 제어기 현시정보 전체조회(TB_SC_SGNL_CTLR)", response = TbScSgnlCtlrPhaseDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/phase/list", produces = {"application/json; charset=utf8"})
     public List<TbScSgnlCtlrPhaseDto> findAllPhaseList() {
         return this.service.findAllPhaseList();
     }
+    @ApiOperation(value = "신호 제어기 현시정보 개별조회(TB_SC_SGNL_CTLR)", response = TbScSgnlCtlrPhaseDto.class)
+    @GetMapping(value = "/phase/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})
+    public TbScSgnlCtlrPhaseDto findByIdPhase(@PathVariable("sgnlIxrNmbr") final Integer sgnlIxrNmbr) {
+        return this.service.findByIdPhase(sgnlIxrNmbr);
+    }
 
 //    @ApiOperation(value = "신호 제어기 정보변경(TB_SC_SGNL_CTLR)", response = TbScSgnlCtlrDto.class)
 //    @PutMapping(value = "/{sgnlIxrNmbr}", produces = {"application/json; charset=utf8"})

+ 8 - 0
src/main/java/com/its/op/dao/repository/its/rse/TbRseCtlrRepository.java

@@ -3,7 +3,9 @@ package com.its.op.dao.repository.its.rse;
 import com.its.op.entity.its.rse.TbRseCtlr;
 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;
@@ -17,4 +19,10 @@ public interface TbRseCtlrRepository extends JpaRepository<TbRseCtlr, Long>, Jpa
     @Query("select p from TbRseCtlr p")
     List<TbRseCtlr> findAllList();
 
+    @Query(value = "SELECT NVL(MAX(RSE_CTLR_NMBR), 1000) + 1 AS NEWID FROM TB_RSE_CTLR", nativeQuery = true)
+    Long getNewNmbr();
+
+    @Modifying
+    @Query("update TbRseCtlr m set m.clctAbnrBasi = :clctAbnrBasi")
+    void updateClctAbnrBasi(@Param("clctAbnrBasi") Integer clctAbnrBasi);
 }

+ 79 - 105
src/main/java/com/its/op/dto/its/rse/TbRseCtlrSttsDto.java

@@ -1,13 +1,12 @@
 package com.its.op.dto.its.rse;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.its.op.entity.its.rse.TbRseCtlrStts;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
+import lombok.Builder;
+import lombok.Data;
 
-import javax.validation.constraints.PositiveOrZero;
-import javax.validation.constraints.Size;
+import javax.persistence.Column;
 import java.io.Serializable;
 
 /**
@@ -67,111 +66,86 @@ public class TbRseCtlrSttsDto implements Serializable {
     @JsonProperty("atn_4_mtns")
     private String atn4Mtns;
 
+    @ApiModelProperty("함체 문 상태 코드('CDS')-앞문/뒷문상태가 모두닫힌경우 닫힘")  // Y VARCHAR2(7)
+    @JsonProperty("cbox_door_stts_cd")
+    private String cboxDoorSttsCd;
+
+    @ApiModelProperty("앞문 상태 코드('CDS')")  // Y VARCHAR2(7)
+    @JsonProperty("front_door_stts_cd")
+    private String frontDoorSttsCd;
+
+    @ApiModelProperty("뒷문 상태 코드('CDS')")  // Y VARCHAR2(7)
+    @JsonProperty("back_door_stts_cd")
+    private String backDoorSttsCd;
+
+    @ApiModelProperty("팬 상태 코드('PAS')")  // Y VARCHAR2(7)
+    @JsonProperty("fan_stts_cd")
+    private String fanSttsCd;
+
+    @ApiModelProperty("히터 상태 코드('HTS')")  // Y VARCHAR2(7)
+    @JsonProperty("hetr_stts_cd")
+    private String hetrSttsCd;
+
+    @ApiModelProperty("함체 온도")  // Y NUMBER(3)
+    @JsonProperty("cbox_tmpr")
+    private Integer cboxTmpr;
+
+    @ApiModelProperty("함체 습도")  // Y NUMBER(3)
+    @JsonProperty("cbox_hmdt")
+    private Integer cboxHmdt;
+
+    @ApiModelProperty("RTU 상태 코드('RTU')")  // Y VARCHAR2(7)
+    @JsonProperty("rtu_stts_cd")
+    private String rtuSttsCd;
+
     // Code Description Field
+    @ApiModelProperty("RSE 제어기 ID")  // Y VARCHAR2(30)
+    @Column(name = "RSE_CTLR_ID", length = 30)
+    private String rseCtlrId;
+
+    @ApiModelProperty("RSE 명칭")  // Y VARCHAR2(40)
+    @Column(name = "RSE_NM", length = 40)
+    private String rseNm;
+
+    @ApiModelProperty("설치 위치 명")  // Y VARCHAR2(40)
+    @Column(name = "ISTL_LCTN_NM", length = 40)
+    private String istlLctnNm;
+
     @ApiModelProperty("통신 상태 코드('CMS') 설명")
     @JsonProperty("cmnc_stts_desc")    // CMNC_STTS_CD
     private String cmncSttsDesc;
 
-    @ApiModel("TbRseCtlrSttsUpdReq(RSE 상태 현황 정보변경)")
-    @Getter
-    @Setter
-    @ToString
-    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
-    public static class TbRseCtlrSttsUpdReq {
-
-        @ApiModelProperty("RSE 제어기 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
-        @JsonProperty("rse_ctlr_nmbr")
-        @PositiveOrZero
-        private Long rseCtlrNmbr;
-
-        @ApiModelProperty("수집 일시, Nullable = N, VARCHAR2(14)")  // N VARCHAR2(14)
-        @JsonProperty("updt_dt")
-        @Size(min=1, max=14)
-        private String updtDt;
-
-        @ApiModelProperty("통신 상태 코드('CMS'), Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("cmnc_stts_cd")
-        @Size(min=1, max=7)
-        private String cmncSttsCd;
-
-        @ApiModelProperty("제어 장치 상태, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("cntl_devc_stts")
-        @Size(min=1, max=7)
-        private String cntlDevcStts;
-
-        @ApiModelProperty("안테나 1 상태, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_1_stts")
-        @Size(min=1, max=7)
-        private String atn1Stts;
-
-        @ApiModelProperty("안테나 2 상태, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_2_stts")
-        @Size(min=1, max=7)
-        private String atn2Stts;
-
-        @ApiModelProperty("안테나 3 상태, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_3_stts")
-        @Size(min=1, max=7)
-        private String atn3Stts;
-
-        @ApiModelProperty("안테나 4 상태, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_4_stts")
-        @Size(min=1, max=7)
-        private String atn4Stts;
-
-        @ApiModelProperty("안테나 1 동작, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_1_mtns")
-        @Size(min=1, max=7)
-        private String atn1Mtns;
-
-        @ApiModelProperty("안테나 2 동작, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_2_mtns")
-        @Size(min=1, max=7)
-        private String atn2Mtns;
-
-        @ApiModelProperty("안테나 3 동작, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_3_mtns")
-        @Size(min=1, max=7)
-        private String atn3Mtns;
-
-        @ApiModelProperty("안테나 4 동작, Nullable = Y, VARCHAR2(7)")  // Y VARCHAR2(7)
-        @JsonProperty("atn_4_mtns")
-        @Size(min=1, max=7)
-        private String atn4Mtns;
-
-        @Builder
-        public TbRseCtlrSttsUpdReq(Long rse_ctlr_nmbr, String updt_dt, String cmnc_stts_cd, String cntl_devc_stts, String atn_1_stts, String atn_2_stts, String atn_3_stts, String atn_4_stts, String atn_1_mtns, String atn_2_mtns, String atn_3_mtns, String atn_4_mtns) {
-            this.rseCtlrNmbr = rse_ctlr_nmbr;
-            this.updtDt = updt_dt;
-            this.cmncSttsCd = cmnc_stts_cd;
-            this.cntlDevcStts = cntl_devc_stts;
-            this.atn1Stts = atn_1_stts;
-            this.atn2Stts = atn_2_stts;
-            this.atn3Stts = atn_3_stts;
-            this.atn4Stts = atn_4_stts;
-            this.atn1Mtns = atn_1_mtns;
-            this.atn2Mtns = atn_2_mtns;
-            this.atn3Mtns = atn_3_mtns;
-            this.atn4Mtns = atn_4_mtns;
-        }
-
-        public TbRseCtlrStts toEntity() {
-            return TbRseCtlrStts.builder()
-                    .rseCtlrNmbr(this.rseCtlrNmbr)
-                    .updtDt(this.updtDt)
-                    .cmncSttsCd(this.cmncSttsCd)
-                    .cntlDevcStts(this.cntlDevcStts)
-                    .atn1Stts(this.atn1Stts)
-                    .atn2Stts(this.atn2Stts)
-                    .atn3Stts(this.atn3Stts)
-                    .atn4Stts(this.atn4Stts)
-                    .atn1Mtns(this.atn1Mtns)
-                    .atn2Mtns(this.atn2Mtns)
-                    .atn3Mtns(this.atn3Mtns)
-                    .atn4Mtns(this.atn4Mtns)
-                    .build();
-        }
-
-    }
+    @ApiModelProperty("함체 문 상태 코드('CDS')-앞문/뒷문상태가 모두닫힌경우 닫힘 설명")
+    @JsonProperty("cbox_door_stts_desc")    // CBOX_DOOR_STTS_CD
+    private String cboxDoorSttsDesc;
+
+    @ApiModelProperty("앞문 상태 코드('CDS') 설명")
+    @JsonProperty("front_door_stts_desc")    // FRONT_DOOR_STTS_CD
+    private String frontDoorSttsDesc;
+
+    @ApiModelProperty("뒷문 상태 코드('CDS') 설명")
+    @JsonProperty("back_door_stts_desc")    // BACK_DOOR_STTS_CD
+    private String backDoorSttsDesc;
+
+    @ApiModelProperty("팬 상태 코드('PAS') 설명")
+    @JsonProperty("fan_stts_desc")    // FAN_STTS_CD
+    private String fanSttsDesc;
+
+    @ApiModelProperty("히터 상태 코드('HTS') 설명")
+    @JsonProperty("hetr_stts_desc")    // HETR_STTS_CD
+    private String hetrSttsDesc;
+
+    @ApiModelProperty("RTU 상태 코드('RTU') 설명")
+    @JsonProperty("rtu_stts_desc")    // RTU_STTS_CD
+    private String rtuSttsDesc;
+
+    @ApiModelProperty("상태정보 결측 여부")
+    @JsonProperty("miss_stts_yn")
+    private String missSttsYn;
+
+    @ApiModelProperty("수집건수")
+    @JsonProperty("coll_cnt")
+    private Integer collCnt;
+
 
 }

+ 12 - 1
src/main/java/com/its/op/dto/its/scrs/TbScIxrMngmDto.java

@@ -55,6 +55,10 @@ public class TbScIxrMngmDto implements Serializable {
     @JsonProperty("use_en")
     private Integer useEn;
 
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @JsonProperty("sgnl_ixr_nmbr")
+    private Integer sgnlIxrNmbr;
+
     @ApiModelProperty("노드ID")  // N NUMBER(10)
     @JsonProperty("node_id")
     private Long nodeId;
@@ -112,13 +116,18 @@ public class TbScIxrMngmDto implements Serializable {
         @PositiveOrZero
         private Integer useEn;
 
+        @ApiModelProperty("신호 교차로 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
+        @JsonProperty("sgnl_ixr_nmbr")
+        @PositiveOrZero
+        private Integer sgnlIxrNmbr;
+
         @ApiModelProperty("노드ID, Nullable = Y, NUMBER(10)")  // N NUMBER(10)
         @JsonProperty("node_id")
         @PositiveOrZero
         private Long nodeId;
 
         @Builder
-        public TbScIxrMngmUpdReq(String ixr_id, String ixr_nm, Integer phas_cnt, String spot_fetr, String ixr_x_crdn, String ixr_y_crdn, Integer ixr_type, Integer dvsn, Integer use_en, Long node_id) {
+        public TbScIxrMngmUpdReq(String ixr_id, String ixr_nm, Integer phas_cnt, String spot_fetr, String ixr_x_crdn, String ixr_y_crdn, Integer ixr_type, Integer dvsn, Integer use_en, Integer sgnl_ixr_nmbr, Long node_id) {
             this.ixrId = ixr_id;
             this.ixrNm = ixr_nm;
             this.phasCnt = phas_cnt;
@@ -128,6 +137,7 @@ public class TbScIxrMngmDto implements Serializable {
             this.ixrType = ixr_type;
             this.dvsn = dvsn;
             this.useEn = use_en;
+            this.sgnlIxrNmbr = sgnl_ixr_nmbr;
             this.nodeId = node_id;
         }
 
@@ -142,6 +152,7 @@ public class TbScIxrMngmDto implements Serializable {
                     .ixrType(this.ixrType)
                     .dvsn(this.dvsn)
                     .useEn(this.useEn)
+                    .sgnlIxrNmbr(this.sgnlIxrNmbr)
                     .nodeId(this.nodeId)
                     .build();
         }

+ 18 - 58
src/main/java/com/its/op/dto/its/scrs/TbScSgnlCtlrPhaseDto.java

@@ -33,68 +33,28 @@ public class TbScSgnlCtlrPhaseDto implements Serializable {
     @JsonProperty("spcl_cntl")
     private Integer spclCntl;
 
-    @ApiModelProperty("A링 1현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_1phas_cd")
-    private Integer aring1phasCd;
+    @ApiModelProperty("A링 방향 코드")
+    @JsonProperty("dir_a")
+    private Integer dirA;
 
-    @ApiModelProperty("A링 2현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_2phas_cd")
-    private Integer aring2phasCd;
+    @ApiModelProperty("A링 진입각")
+    @JsonProperty("deg_ai")
+    private Integer degAI;
 
-    @ApiModelProperty("A링 3현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_3phas_cd")
-    private Integer aring3phasCd;
+    @ApiModelProperty("A링 진출각")
+    @JsonProperty("deg_ao")
+    private Integer degAO;
 
-    @ApiModelProperty("A링 4현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_4phas_cd")
-    private Integer aring4phasCd;
+    @ApiModelProperty("B링 방향 코드")
+    @JsonProperty("dir_b")
+    private Integer dirB;
 
-    @ApiModelProperty("A링 5현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_5phas_cd")
-    private Integer aring5phasCd;
+    @ApiModelProperty("B링 진입각")
+    @JsonProperty("deg_bi")
+    private Integer degBI;
 
-    @ApiModelProperty("A링 6현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_6phas_cd")
-    private Integer aring6phasCd;
-
-    @ApiModelProperty("A링 7현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_7phas_cd")
-    private Integer aring7phasCd;
-
-    @ApiModelProperty("A링 8현시 코드")  // Y NUMBER(7)
-    @JsonProperty("aring_8phas_cd")
-    private Integer aring8phasCd;
-
-    @ApiModelProperty("B링 1현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_1phas_cd")
-    private Integer bring1phasCd;
-
-    @ApiModelProperty("B링 2현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_2phas_cd")
-    private Integer bring2phasCd;
-
-    @ApiModelProperty("B링 3현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_3phas_cd")
-    private Integer bring3phasCd;
-
-    @ApiModelProperty("B링 4현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_4phas_cd")
-    private Integer bring4phasCd;
-
-    @ApiModelProperty("B링 5현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_5phas_cd")
-    private Integer bring5phasCd;
-
-    @ApiModelProperty("B링 6현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_6phas_cd")
-    private Integer bring6phasCd;
-
-    @ApiModelProperty("B링 7현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_7phas_cd")
-    private Integer bring7phasCd;
-
-    @ApiModelProperty("B링 8현시 코드")  // Y NUMBER(7)
-    @JsonProperty("bring_8phas_cd")
-    private Integer bring8phasCd;
+    @ApiModelProperty("B링 진출각")
+    @JsonProperty("deg_bo")
+    private Integer degBO;
 
 }

+ 27 - 202
src/main/java/com/its/op/dto/its/scrs/TbScSgnlIxrSttsDto.java

@@ -1,12 +1,12 @@
 package com.its.op.dto.its.scrs;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.its.op.entity.its.scrs.TbScSgnlIxrStts;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
+import lombok.Builder;
+import lombok.Data;
 
-import javax.validation.constraints.PositiveOrZero;
+import javax.persistence.Column;
 import java.io.Serializable;
 
 /**
@@ -123,204 +123,29 @@ public class TbScSgnlIxrSttsDto implements Serializable {
     private Integer cboxStts;
 
     // Code Description Field
-    @ApiModel("TbScSgnlIxrSttsUpdReq(신호 교차로 상태 정보변경)")
-    @Getter
-    @Setter
-    @ToString
-    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
-    public static class TbScSgnlIxrSttsUpdReq {
-
-        @ApiModelProperty("신호 교차로 번호, Nullable = N, NUMBER(4)")  // N NUMBER(4)
-        @JsonProperty("sgnl_ixr_nmbr")
-        @PositiveOrZero
-        private Integer sgnlIxrNmbr;
-
-        @ApiModelProperty("LC 카운트, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("lc_cnt")
-        @PositiveOrZero
-        private Integer lcCnt;
-
-        @ApiModelProperty("제어모드(0: TRC, 1: TOD, 2: MAN), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
-        @JsonProperty("cntl_mode")
-        @PositiveOrZero
-        private Integer cntlMode;
-
-        @ApiModelProperty("제어상태(0: 온라인, 1: 오프라인, 2: 트랜스, 3: 통신장애), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
-        @JsonProperty("cntl_stts")
-        @PositiveOrZero
-        private Integer cntlStts;
-
-        @ApiModelProperty("특수제어(0: 없음, 1: 점멸, 2: 소등, 3: 수동, 4: 감응), Nullable = Y, NUMBER(2)")  // Y NUMBER(2)
-        @JsonProperty("spcl_cntl")
-        @PositiveOrZero
-        private Integer spclCntl;
-
-        @ApiModelProperty("주기, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("cycl")
-        @PositiveOrZero
-        private Integer cycl;
-
-        @ApiModelProperty("옵셋, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("ofst")
-        @PositiveOrZero
-        private Integer ofst;
-
-        @ApiModelProperty("A링 1현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_1phas")
-        @PositiveOrZero
-        private Integer aring1phas;
-
-        @ApiModelProperty("A링 2현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_2phas")
-        @PositiveOrZero
-        private Integer aring2phas;
-
-        @ApiModelProperty("A링 3현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_3phas")
-        @PositiveOrZero
-        private Integer aring3phas;
-
-        @ApiModelProperty("A링 4현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_4phas")
-        @PositiveOrZero
-        private Integer aring4phas;
-
-        @ApiModelProperty("A링 5현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_5phas")
-        @PositiveOrZero
-        private Integer aring5phas;
-
-        @ApiModelProperty("A링 6현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_6phas")
-        @PositiveOrZero
-        private Integer aring6phas;
-
-        @ApiModelProperty("A링 7현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_7phas")
-        @PositiveOrZero
-        private Integer aring7phas;
-
-        @ApiModelProperty("A링 8현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("aring_8phas")
-        @PositiveOrZero
-        private Integer aring8phas;
-
-        @ApiModelProperty("B링 1현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_1phas")
-        @PositiveOrZero
-        private Integer bring1phas;
-
-        @ApiModelProperty("B링 2현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_2phas")
-        @PositiveOrZero
-        private Integer bring2phas;
-
-        @ApiModelProperty("B링 3현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_3phas")
-        @PositiveOrZero
-        private Integer bring3phas;
-
-        @ApiModelProperty("B링 4현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_4phas")
-        @PositiveOrZero
-        private Integer bring4phas;
-
-        @ApiModelProperty("B링 5현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_5phas")
-        @PositiveOrZero
-        private Integer bring5phas;
-
-        @ApiModelProperty("B링 6현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_6phas")
-        @PositiveOrZero
-        private Integer bring6phas;
-
-        @ApiModelProperty("B링 7현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_7phas")
-        @PositiveOrZero
-        private Integer bring7phas;
-
-        @ApiModelProperty("B링 8현시, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
-        @JsonProperty("bring_8phas")
-        @PositiveOrZero
-        private Integer bring8phas;
-
-        @ApiModelProperty("현재 A링 현시, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
-        @JsonProperty("prst_aring_phas")
-        @PositiveOrZero
-        private Integer prstAringPhas;
-
-        @ApiModelProperty("현재 B링 현시, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
-        @JsonProperty("prst_bring_phas")
-        @PositiveOrZero
-        private Integer prstBringPhas;
-
-        @ApiModelProperty("함체 상태, Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
-        @JsonProperty("cbox_stts")
-        @PositiveOrZero
-        private Integer cboxStts;
-
-        @Builder
-        public TbScSgnlIxrSttsUpdReq(Integer sgnl_ixr_nmbr, Integer lc_cnt, Integer cntl_mode, Integer cntl_stts, Integer spcl_cntl, Integer cycl, Integer ofst, Integer aring_1phas, Integer aring_2phas, Integer aring_3phas, Integer aring_4phas, Integer aring_5phas, Integer aring_6phas, Integer aring_7phas, Integer aring_8phas, Integer bring_1phas, Integer bring_2phas, Integer bring_3phas, Integer bring_4phas, Integer bring_5phas, Integer bring_6phas, Integer bring_7phas, Integer bring_8phas, Integer prst_aring_phas, Integer prst_bring_phas, Integer cbox_stts) {
-            this.sgnlIxrNmbr = sgnl_ixr_nmbr;
-            this.lcCnt = lc_cnt;
-            this.cntlMode = cntl_mode;
-            this.cntlStts = cntl_stts;
-            this.spclCntl = spcl_cntl;
-            this.cycl = cycl;
-            this.ofst = ofst;
-            this.aring1phas = aring_1phas;
-            this.aring2phas = aring_2phas;
-            this.aring3phas = aring_3phas;
-            this.aring4phas = aring_4phas;
-            this.aring5phas = aring_5phas;
-            this.aring6phas = aring_6phas;
-            this.aring7phas = aring_7phas;
-            this.aring8phas = aring_8phas;
-            this.bring1phas = bring_1phas;
-            this.bring2phas = bring_2phas;
-            this.bring3phas = bring_3phas;
-            this.bring4phas = bring_4phas;
-            this.bring5phas = bring_5phas;
-            this.bring6phas = bring_6phas;
-            this.bring7phas = bring_7phas;
-            this.bring8phas = bring_8phas;
-            this.prstAringPhas = prst_aring_phas;
-            this.prstBringPhas = prst_bring_phas;
-            this.cboxStts = cbox_stts;
-        }
-
-        public TbScSgnlIxrStts toEntity() {
-            return TbScSgnlIxrStts.builder()
-                    .sgnlIxrNmbr(this.sgnlIxrNmbr)
-                    .lcCnt(this.lcCnt)
-                    .cntlMode(this.cntlMode)
-                    .cntlStts(this.cntlStts)
-                    .spclCntl(this.spclCntl)
-                    .cycl(this.cycl)
-                    .ofst(this.ofst)
-                    .aring1phas(this.aring1phas)
-                    .aring2phas(this.aring2phas)
-                    .aring3phas(this.aring3phas)
-                    .aring4phas(this.aring4phas)
-                    .aring5phas(this.aring5phas)
-                    .aring6phas(this.aring6phas)
-                    .aring7phas(this.aring7phas)
-                    .aring8phas(this.aring8phas)
-                    .bring1phas(this.bring1phas)
-                    .bring2phas(this.bring2phas)
-                    .bring3phas(this.bring3phas)
-                    .bring4phas(this.bring4phas)
-                    .bring5phas(this.bring5phas)
-                    .bring6phas(this.bring6phas)
-                    .bring7phas(this.bring7phas)
-                    .bring8phas(this.bring8phas)
-                    .prstAringPhas(this.prstAringPhas)
-                    .prstBringPhas(this.prstBringPhas)
-                    .cboxStts(this.cboxStts)
-                    .build();
-        }
-
-    }
+    @ApiModelProperty("교차로 명")  // Y VARCHAR2(50)
+    @Column(name = "IXR_NM", length = 50)
+    private String ixrNm;
+
+    @ApiModelProperty("수집 일시")  // N VARCHAR2(14)
+    @JsonProperty("updt_dt")
+    private String updtDt;
+
+    @ApiModelProperty("통신 상태 코드('CMS')")  // Y VARCHAR2(7)
+    @JsonProperty("cmnc_stts_cd")
+    private String cmncSttsCd;
+
+    @ApiModelProperty("수집건수")
+    @JsonProperty("coll_cnt")
+    private Integer collCnt;
+
+    @ApiModelProperty("상태정보 결측 여부")
+    @JsonProperty("miss_stts_yn")
+    private String missSttsYn;
+
+    // Code Description Field
+    @ApiModelProperty("통신 상태 코드('CMS') 설명")
+    @JsonProperty("cmnc_stts_desc")    // CMNC_STTS_CD
+    private String cmncSttsDesc;
 
 }

+ 66 - 4
src/main/java/com/its/op/entity/its/rse/TbRseCtlr.java

@@ -1,17 +1,19 @@
 package com.its.op.entity.its.rse;
 
 import com.its.op.dto.its.rse.TbRseCtlrDto;
+import com.its.op.dto.its.rse.TbRseCtlrSttsDto;
+import com.its.op.global.CodeManager;
+import com.its.utils.ItsUtils;
 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.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
 
 /**
@@ -96,6 +98,15 @@ public class TbRseCtlr implements Serializable {
     @Column(name = "DEL_YN", columnDefinition = "CHAR", length = 1)
     private String delYn;
 
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="RSE_CTLR_NMBR", referencedColumnName = "RSE_CTLR_NMBR")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbRseCtlrStts state;
+
+    public void setDelete() {
+        this.delYn = "Y";
+    }
+
     public TbRseCtlrDto toDto() {
         return TbRseCtlrDto.builder()
                 .rseCtlrNmbr(this.rseCtlrNmbr)
@@ -118,6 +129,57 @@ public class TbRseCtlr implements Serializable {
                 .build();
     }
 
+    public TbRseCtlrSttsDto toSttsDto() {
+        TbRseCtlrSttsDto dto = TbRseCtlrSttsDto.builder()
+                .rseCtlrNmbr(this.rseCtlrNmbr)
+                .collCnt(100)
+                .rseCtlrId(this.rseCtlrId)
+                .rseNm(this.rseNm)
+                .istlLctnNm(this.istlLctnNm)
+                .updtDt(CodeManager.CMNC_STTS_ERROR_DT)
+                .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                .build();
+
+        if (this.state != null) {
+            dto.setUpdtDt(this.state.getUpdtDt());
+
+            dto.setCmncSttsCd(this.state.getCmncSttsCd());
+            dto.setCntlDevcStts(this.state.getCntlDevcStts());
+            dto.setAtn1Stts(this.state.getAtn1Stts());
+            dto.setAtn2Stts(this.state.getAtn2Stts());
+            dto.setAtn3Stts(this.state.getAtn3Stts());
+            dto.setAtn4Stts(this.state.getAtn4Stts());
+            dto.setAtn1Mtns(this.state.getAtn1Mtns());
+            dto.setAtn2Mtns(this.state.getAtn2Mtns());
+            dto.setAtn3Mtns(this.state.getAtn3Mtns());
+            dto.setAtn4Mtns(this.state.getAtn4Mtns());
+
+            dto.setCboxDoorSttsCd(this.state.getCboxDoorSttsCd());
+            dto.setFrontDoorSttsCd(this.state.getFrontDoorSttsCd());
+            dto.setBackDoorSttsCd(this.state.getBackDoorSttsCd());
+            dto.setFanSttsCd(this.state.getFanSttsCd());
+            dto.setHetrSttsCd(this.state.getHetrSttsCd());
+            dto.setRtuSttsCd(this.state.getRtuSttsCd());
+            dto.setCboxTmpr(this.state.getCboxTmpr());
+            dto.setCboxHmdt(this.state.getCboxHmdt());
+
+            dto.setCboxDoorSttsDesc(CodeManager.getCodeDescShort(CodeManager.DOOR_STTS_CD, dto.getCboxDoorSttsCd()));
+            dto.setFrontDoorSttsDesc(CodeManager.getCodeDescShort(CodeManager.DOOR_STTS_CD, dto.getFrontDoorSttsCd()));
+            dto.setBackDoorSttsDesc(CodeManager.getCodeDescShort(CodeManager.DOOR_STTS_CD, dto.getBackDoorSttsCd()));
+            dto.setFanSttsDesc(CodeManager.getCodeDescShort(CodeManager.FAN_STTS_CD, dto.getFanSttsCd()));
+            dto.setHetrSttsDesc(CodeManager.getCodeDescShort(CodeManager.HETR_STTS_CD, dto.getHetrSttsCd()));
+            dto.setRtuSttsDesc(CodeManager.getCodeDescShort("RTU", dto.getRtuSttsCd()));
+        }
+        dto.setMissSttsYn(ItsUtils.getMissSttsYn(dto.getUpdtDt()));
+        if (("Y").equals(dto.getMissSttsYn())) {
+            // 기준시각 보다 크기 때문에 상태정보를 통신두절로 설정
+            dto.setCmncSttsCd(CodeManager.CMNC_STTS_ERROR);
+        }
+        dto.setCmncSttsDesc(CodeManager.getCodeDescShort(CodeManager.CMNC_STTS_CD, dto.getCmncSttsCd()));
+
+        return dto;
+    }
+
     public TbRseCtlr(Long rseCtlrNmbr) {
         this.rseCtlrNmbr = rseCtlrNmbr;
     }

+ 40 - 15
src/main/java/com/its/op/entity/its/rse/TbRseCtlrStts.java

@@ -76,6 +76,38 @@ public class TbRseCtlrStts implements Serializable {
     @Column(name = "ATN_4_MTNS", length = 7)
     private String atn4Mtns;
 
+    @ApiModelProperty("함체 문 상태 코드('CDS')-앞문/뒷문상태가 모두닫힌경우 닫힘")  // Y VARCHAR2(7)
+    @Column(name = "CBOX_DOOR_STTS_CD", length = 7)
+    private String cboxDoorSttsCd;
+
+    @ApiModelProperty("앞문 상태 코드('CDS')")  // Y VARCHAR2(7)
+    @Column(name = "FRONT_DOOR_STTS_CD", length = 7)
+    private String frontDoorSttsCd;
+
+    @ApiModelProperty("뒷문 상태 코드('CDS')")  // Y VARCHAR2(7)
+    @Column(name = "BACK_DOOR_STTS_CD", length = 7)
+    private String backDoorSttsCd;
+
+    @ApiModelProperty("팬 상태 코드('PAS')")  // Y VARCHAR2(7)
+    @Column(name = "FAN_STTS_CD", length = 7)
+    private String fanSttsCd;
+
+    @ApiModelProperty("히터 상태 코드('HTS')")  // Y VARCHAR2(7)
+    @Column(name = "HETR_STTS_CD", length = 7)
+    private String hetrSttsCd;
+
+    @ApiModelProperty("함체 온도")  // Y NUMBER(3)
+    @Column(name = "CBOX_TMPR", columnDefinition = "NUMBER", length = 3)
+    private Integer cboxTmpr;
+
+    @ApiModelProperty("함체 습도")  // Y NUMBER(3)
+    @Column(name = "CBOX_HMDT", columnDefinition = "NUMBER", length = 3)
+    private Integer cboxHmdt;
+
+    @ApiModelProperty("RTU 상태 코드('RTU')")  // Y VARCHAR2(7)
+    @Column(name = "RTU_STTS_CD", length = 7)
+    private String rtuSttsCd;
+
     public TbRseCtlrSttsDto toDto() {
         return TbRseCtlrSttsDto.builder()
                 .rseCtlrNmbr(this.rseCtlrNmbr)
@@ -90,22 +122,15 @@ public class TbRseCtlrStts implements Serializable {
                 .atn2Mtns(this.atn2Mtns)
                 .atn3Mtns(this.atn3Mtns)
                 .atn4Mtns(this.atn4Mtns)
+                .cboxDoorSttsCd(this.cboxDoorSttsCd)
+                .frontDoorSttsCd(this.frontDoorSttsCd)
+                .backDoorSttsCd(this.backDoorSttsCd)
+                .fanSttsCd(this.fanSttsCd)
+                .hetrSttsCd(this.hetrSttsCd)
+                .cboxTmpr(this.cboxTmpr)
+                .cboxHmdt(this.cboxHmdt)
+                .rtuSttsCd(this.rtuSttsCd)
                 .build();
     }
 
-    public void updateInfo(TbRseCtlrSttsDto.TbRseCtlrSttsUpdReq req) {
-        this.rseCtlrNmbr = req.getRseCtlrNmbr();
-        this.updtDt = req.getUpdtDt();
-        this.cmncSttsCd = req.getCmncSttsCd();
-        this.cntlDevcStts = req.getCntlDevcStts();
-        this.atn1Stts = req.getAtn1Stts();
-        this.atn2Stts = req.getAtn2Stts();
-        this.atn3Stts = req.getAtn3Stts();
-        this.atn4Stts = req.getAtn4Stts();
-        this.atn1Mtns = req.getAtn1Mtns();
-        this.atn2Mtns = req.getAtn2Mtns();
-        this.atn3Mtns = req.getAtn3Mtns();
-        this.atn4Mtns = req.getAtn4Mtns();
-    }
-
 }

+ 6 - 0
src/main/java/com/its/op/entity/its/scrs/TbScIxrMngm.java

@@ -64,6 +64,10 @@ public class TbScIxrMngm implements Serializable {
     @Column(name = "USE_EN", columnDefinition = "NUMBER", length = 1)
     private Integer useEn;
 
+    @ApiModelProperty("신호 교차로 번호")  // N NUMBER(4)
+    @Column(name = "SGNL_IXR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
+    private Integer sgnlIxrNmbr;
+
     @ApiModelProperty("노드ID")  // N NUMBER(10)
     @Column(name = "NODE_ID", nullable = false, columnDefinition = "NUMBER", length = 10)
     private Long nodeId;
@@ -79,6 +83,7 @@ public class TbScIxrMngm implements Serializable {
                 .ixrType(this.ixrType)
                 .dvsn(this.dvsn)
                 .useEn(this.useEn)
+                .sgnlIxrNmbr(this.sgnlIxrNmbr)
                 .nodeId(this.nodeId)
                 .build();
     }
@@ -96,6 +101,7 @@ public class TbScIxrMngm implements Serializable {
         this.ixrType = req.getIxrType();
         this.dvsn = req.getDvsn();
         this.useEn = req.getUseEn();
+        this.sgnlIxrNmbr = req.getSgnlIxrNmbr();
         this.nodeId = req.getNodeId();
     }
 

+ 98 - 0
src/main/java/com/its/op/entity/its/scrs/TbScSgnlCtlr.java

@@ -2,6 +2,10 @@ package com.its.op.entity.its.scrs;
 
 import com.its.op.dto.its.scrs.TbScSgnlCtlrDto;
 import com.its.op.dto.its.scrs.TbScSgnlCtlrPhaseDto;
+import com.its.op.dto.its.scrs.TbScSgnlIxrSttsDto;
+import com.its.op.global.CodeManager;
+import com.its.utils.ItsUtils;
+import com.its.utils.SysUtils;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -32,6 +36,10 @@ public class TbScSgnlCtlr implements Serializable {
     @Column(name = "SGNL_IXR_NMBR", nullable = false, columnDefinition = "NUMBER", length = 4)
     private Integer sgnlIxrNmbr;
 
+    @ApiModelProperty("교차로 명")  // Y VARCHAR2(50)
+    @Column(name = "IXR_NM", length = 50)
+    private String ixrNm;
+
     @ApiModelProperty("X 좌표")  // Y NUMBER(10)
     @Column(name = "X_CRDN", columnDefinition = "NUMBER", length = 10)
     private Long xCrdn;
@@ -109,6 +117,16 @@ public class TbScSgnlCtlr implements Serializable {
     @NotFound(action = NotFoundAction.IGNORE)
     private TbScSgnlIxrStts stts;
 
+    public Double getXPos() {
+        String xCrdn = String.format("%09d", this.xCrdn);
+        Double x_crdn = (Integer.parseInt(xCrdn) / 1000000.);
+        return x_crdn;
+    }
+    public Double getYPos() {
+        String yCrdn = String.format("%09d", this.yCrdn);
+        Double y_crdn = (Integer.parseInt(yCrdn) / 1000000.);
+        return y_crdn;
+    }
     public TbScSgnlCtlrDto toDto() {
         String xCrdn = String.format("%09d", this.xCrdn);
         String yCrdn = String.format("%09d", this.yCrdn);
@@ -165,6 +183,12 @@ public class TbScSgnlCtlr implements Serializable {
     public TbScSgnlCtlrPhaseDto toPhaseDto() {
         TbScSgnlCtlrPhaseDto dto = TbScSgnlCtlrPhaseDto.builder()
                 .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                .dirA(0)
+                .degAI(0)
+                .degAO(0)
+                .dirB(0)
+                .degBI(0)
+                .degBO(0)
                 .build();
 
         if (this.stts == null) {
@@ -198,6 +222,80 @@ public class TbScSgnlCtlr implements Serializable {
             case 7: bRingPhase = this.bring7phasCd; break;
             case 8: bRingPhase = this.bring8phasCd; break;
         }
+        if (aRingPhase >= 1000000) {
+            String aPhase = String.format("%07d", aRingPhase);
+            dto.setDirA(Integer.parseInt(aPhase.substring(0, 1)));
+            dto.setDegAI(Integer.parseInt(aPhase.substring(1, 4)));
+            dto.setDegAO(Integer.parseInt(aPhase.substring(4, 7)));
+            if (dto.getDegAI() > 360) {
+                dto.setDegAI(dto.getDegAI() - 360);
+            }
+            if (dto.getDegAO() > 360) {
+                dto.setDegAO(dto.getDegAO() - 360);
+            }
+        }
+        if (bRingPhase >= 1000000) {
+            String bPhase = String.format("%07d", bRingPhase);
+            dto.setDirB(Integer.parseInt(bPhase.substring(0, 1)));
+            dto.setDegBI(Integer.parseInt(bPhase.substring(1, 4)));
+            dto.setDegBO(Integer.parseInt(bPhase.substring(4, 7)));
+            if (dto.getDegBI() > 360) {
+                dto.setDegBI(dto.getDegBI() - 360);
+            }
+            if (dto.getDegBO() > 360) {
+                dto.setDegBO(dto.getDegBO() - 360);
+            }
+        }
+
+        return dto;
+    }
+
+    public TbScSgnlIxrSttsDto toSttsDto() {
+        TbScSgnlIxrSttsDto dto = TbScSgnlIxrSttsDto.builder()
+                .sgnlIxrNmbr(this.sgnlIxrNmbr)
+                .ixrNm(this.ixrNm)
+                .updtDt(CodeManager.CMNC_STTS_ERROR_DT)
+                .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                .build();
+
+        if (this.stts != null) {
+            dto.setUpdtDt(SysUtils.getSysTime());
+
+            dto.setLcCnt(this.stts.getLcCnt());
+            dto.setCntlMode(this.stts.getCntlMode());
+            dto.setCntlStts(this.stts.getCntlStts());
+            if (this.stts.getCntlStts() != 3) {
+                dto.setCmncSttsCd("CMS0");
+            }
+            dto.setSpclCntl(this.stts.getSpclCntl());
+            dto.setCycl(this.stts.getCycl());
+            dto.setOfst(this.stts.getOfst());
+//            dto.setAring1phas(this.stts.getAring1phas());
+//            dto.setAring2phas(this.stts.getAring1phas());
+//            dto.setAring3phas(this.stts.getAring2phas());
+//            dto.setAring4phas(this.stts.getAring3phas());
+//            dto.setAring5phas(this.stts.getAring4phas());
+//            dto.setAring6phas(this.stts.getAring5phas());
+//            dto.setAring7phas(this.stts.getAring6phas());
+//            dto.setAring8phas(this.stts.getAring7phas());
+//            dto.setBring1phas(this.stts.getBring1phas());
+//            dto.setBring2phas(this.stts.getBring2phas());
+//            dto.setBring3phas(this.stts.getBring3phas());
+//            dto.setBring4phas(this.stts.getBring4phas());
+//            dto.setBring5phas(this.stts.getBring5phas());
+//            dto.setBring6phas(this.stts.getBring6phas());
+//            dto.setBring7phas(this.stts.getBring7phas());
+//            dto.setBring8phas(this.stts.getBring8phas());
+            dto.setPrstAringPhas(this.stts.getPrstAringPhas());
+            dto.setPrstBringPhas(this.stts.getPrstBringPhas());
+            dto.setCboxStts(this.stts.getCboxStts());
+        }
+        dto.setMissSttsYn(ItsUtils.getMissSttsYn(dto.getUpdtDt()));
+        if (("Y").equals(dto.getMissSttsYn())) {
+            // 기준시각 보다 크기 때문에 상태정보를 통신두절로 설정
+            dto.setCmncSttsCd(CodeManager.CMNC_STTS_ERROR);
+        }
+        dto.setCmncSttsDesc(CodeManager.getCodeDescShort(CodeManager.CMNC_STTS_CD, dto.getCmncSttsCd()));
 
         return dto;
     }

+ 16 - 3
src/main/java/com/its/op/service/its/common/CommonSttsService.java

@@ -4,6 +4,9 @@ import com.its.op.dto.its.common.FcltSttsListDto;
 import com.its.op.dto.its.common.FcltSttsSummaryDto;
 import com.its.op.dto.its.facility.FcltSttsCntDto;
 import com.its.op.dto.its.facility.FcltSttsDto;
+import com.its.op.service.its.cctv.TbCctvCtlrService;
+import com.its.op.service.its.rse.TbRseCtlrService;
+import com.its.op.service.its.scrs.TbScSgnlCtlrService;
 import com.its.op.service.its.vds.TbVdsCtlrService;
 import com.its.op.service.its.vms.TbVmsCtlrService;
 import lombok.RequiredArgsConstructor;
@@ -22,9 +25,11 @@ import java.util.List;
 @Service
 public class CommonSttsService {
 
-    //private final TbCctvCtlrService cctvService;
+    private final TbCctvCtlrService cctvService;
     private final TbVmsCtlrService vmsService;
     private final TbVdsCtlrService vdsService;
+    private final TbRseCtlrService rseService;
+    private final TbScSgnlCtlrService sgnlService;
     private final Environment environment;
     private boolean isRunUtis = false;
     //private RsemstService rseService = null;
@@ -48,8 +53,8 @@ public class CommonSttsService {
         FcltSttsListDto result = new FcltSttsListDto();
 
         // CCTV
-//        FcltSttsListDto cctv = this.cctvService.findAllSttsListTotal(true);
-//        result.getFcltList().add(cctv.getFcltList().get(0));
+        FcltSttsListDto cctv = this.cctvService.findAllSttsListTotal(true);
+        result.getFcltList().add(cctv.getFcltList().get(0));
 
         // VMS
         FcltSttsListDto vms = this.vmsService.findAllSttsListTotal(true);
@@ -59,6 +64,14 @@ public class CommonSttsService {
         FcltSttsListDto vds = this.vdsService.findAllSttsListTotal(true);
         result.getFcltList().add(vds.getFcltList().get(0));
 
+        // RSE
+        FcltSttsListDto rse = this.rseService.findAllSttsListTotal(true);
+        result.getFcltList().add(rse.getFcltList().get(0));
+
+        // 신호제어기
+        FcltSttsListDto sgnl = this.sgnlService.findAllSttsListTotal(true);
+        result.getFcltList().add(sgnl.getFcltList().get(0));
+
         return result;
     }
 

+ 82 - 0
src/main/java/com/its/op/service/its/rse/TbRseCtlrService.java

@@ -1,8 +1,14 @@
 package com.its.op.service.its.rse;
 
 import com.its.op.dao.repository.its.rse.TbRseCtlrRepository;
+import com.its.op.dto.its.common.FcltSttsDto;
+import com.its.op.dto.its.common.FcltSttsListDto;
+import com.its.op.dto.its.common.FcltSttsSummaryDto;
+import com.its.op.dto.its.common.NewIdLongDto;
 import com.its.op.dto.its.rse.TbRseCtlrDto;
+import com.its.op.dto.its.rse.TbRseCtlrSttsDto;
 import com.its.op.entity.its.rse.TbRseCtlr;
+import com.its.op.global.CodeManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -12,6 +18,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -102,4 +109,79 @@ public class TbRseCtlrService {
         return result;
     }
 
+    /**
+     * 신규 제어기 번호 조회
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public NewIdLongDto getNewNmbr() {
+        Long newId = this.repo.getNewNmbr();
+        return NewIdLongDto.builder().newId(newId).build();
+    }
+
+    //@Transactional
+    public Integer updateClctAbnrBasi(Integer clctAbnrBasi) {
+        this.repo.updateClctAbnrBasi(clctAbnrBasi);
+        return clctAbnrBasi;
+    }
+
+    /**
+     * 상태 목록
+     * @param
+     */
+    @Transactional(readOnly = true)
+    public FcltSttsListDto findAllSttsListTotal(boolean total) {
+
+        String fcltType = "DSRC";
+        FcltSttsListDto result = new FcltSttsListDto();
+
+        AtomicInteger error = new AtomicInteger(0);
+        AtomicInteger normal = new AtomicInteger(0);
+
+        List<FcltSttsDto> sttsDtoList = new ArrayList<>();
+        List<TbRseCtlr> ctlrList = this.repo.findAllList();
+        ctlrList.forEach(obj -> {
+            TbRseCtlrSttsDto dto = obj.toSttsDto();
+            if (total) {
+                FcltSttsDto stts = FcltSttsDto.builder()
+                        .fcltType(fcltType)
+                        .fcltNmbr(String.valueOf(obj.getRseCtlrNmbr()))
+                        .fcltId(obj.getRseCtlrId())
+                        .fcltNm(obj.getIstlLctnNm())
+                        .fcltKind(obj.getRseTypeCd())
+                        .xCrdn(obj.getXCrdn())
+                        .yCrdn(obj.getYCrdn())
+                        .strmUrl("")
+                        .sttsCd(dto.getCmncSttsCd())
+                        .sttsDesc(dto.getCmncSttsDesc())
+                        .build();
+
+                sttsDtoList.add(stts);
+            }
+            if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                normal.getAndIncrement();
+            }
+            else {
+                error.getAndIncrement();
+            }
+        });
+
+        FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
+                .fcltType(fcltType)
+                .fcltNm(fcltType)
+                .totalCnt(ctlrList.size())
+                .normalCnt(normal.get())
+                .errorCnt(error.get())
+                .colErrCnt(0)
+                .build();
+
+        summaryDto.init();
+        if (total) {
+            summaryDto.setFcltObjs(sttsDtoList);
+        }
+        result.getFcltList().add(summaryDto);
+
+        return result;
+    }
+
 }

+ 81 - 0
src/main/java/com/its/op/service/its/scrs/TbScSgnlCtlrService.java

@@ -1,9 +1,14 @@
 package com.its.op.service.its.scrs;
 
 import com.its.op.dao.repository.its.scrs.TbScSgnlCtlrRepository;
+import com.its.op.dto.its.common.FcltSttsDto;
+import com.its.op.dto.its.common.FcltSttsListDto;
+import com.its.op.dto.its.common.FcltSttsSummaryDto;
+import com.its.op.dto.its.rse.TbRseCtlrSttsDto;
 import com.its.op.dto.its.scrs.TbScSgnlCtlrDto;
 import com.its.op.dto.its.scrs.TbScSgnlCtlrPhaseDto;
 import com.its.op.entity.its.scrs.TbScSgnlCtlr;
+import com.its.op.global.CodeManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -13,6 +18,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -112,6 +118,10 @@ public class TbScSgnlCtlrService {
         return result;
     }
 
+    /**
+     * 신호현시정보 전체조회
+     * @return
+     */
     @Transactional(readOnly = true)
     public List<TbScSgnlCtlrPhaseDto> findAllPhaseList() {
         List<TbScSgnlCtlrPhaseDto> result = new ArrayList<>();
@@ -121,4 +131,75 @@ public class TbScSgnlCtlrService {
         }
         return result;
     }
+
+    /**
+     * 신호현시정보 개별조회
+     * @param sgnlIxrNmbr
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public TbScSgnlCtlrPhaseDto findByIdPhase(Integer sgnlIxrNmbr) {
+        TbScSgnlCtlr entity = requireOne(sgnlIxrNmbr);
+        return entity.toPhaseDto();
+    }
+
+    /**
+     * 상태 목록
+     * @param
+     */
+    @Transactional(readOnly = true)
+    public FcltSttsListDto findAllSttsListTotal(boolean total) {
+
+        String fcltType = "신호제어기";
+        FcltSttsListDto result = new FcltSttsListDto();
+
+        AtomicInteger error = new AtomicInteger(0);
+        AtomicInteger normal = new AtomicInteger(0);
+
+        List<FcltSttsDto> sttsDtoList = new ArrayList<>();
+        List<TbScSgnlCtlr> ctlrList = this.repo.findAllList();
+        ctlrList.forEach(obj -> {
+            TbRseCtlrSttsDto dto = obj.toSttsDto();
+            if (total) {
+                FcltSttsDto stts = FcltSttsDto.builder()
+                        .fcltType(fcltType)
+                        .fcltNmbr(String.valueOf(obj.getSgnlIxrNmbr()))
+                        .fcltId(String.valueOf(obj.getSgnlIxrNmbr()))
+                        .fcltNm(obj.getIxrNm())
+                        .fcltKind("1")
+                        .xCrdn(obj.getXPos())
+                        .yCrdn(obj.getYPos())
+                        .strmUrl("")
+                        .sttsCd(dto.getCmncSttsCd())
+                        .sttsDesc(dto.getCmncSttsDesc())
+                        .build();
+
+                sttsDtoList.add(stts);
+            }
+            if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                normal.getAndIncrement();
+            }
+            else {
+                error.getAndIncrement();
+            }
+        });
+
+        FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
+                .fcltType(fcltType)
+                .fcltNm(fcltType)
+                .totalCnt(ctlrList.size())
+                .normalCnt(normal.get())
+                .errorCnt(error.get())
+                .colErrCnt(0)
+                .build();
+
+        summaryDto.init();
+        if (total) {
+            summaryDto.setFcltObjs(sttsDtoList);
+        }
+        result.getFcltList().add(summaryDto);
+
+        return result;
+    }
+
 }