shjung 2 lat temu
rodzic
commit
dba14bf75a

+ 2 - 2
src/main/java/com/its/op/controller/its/facility/TbFcltSttsAlrmStupController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.List;
 
-@Api(tags = "01.시설물관리-4.시설물-9.시설물 상태 알람 설정")
+@Api(tags = "01.시설물관리-4.시설물 상태 알람 설정")
 @Validated
 @RestController
 @RequiredArgsConstructor
@@ -29,7 +29,7 @@ public class TbFcltSttsAlrmStupController {
 
     @ApiOperation(value = "시설물 상태 알람 설정 개별조회(TB_FCLT_STTS_ALRM_STUP)", response = TbFcltSttsAlrmStupDto.class)
     @GetMapping(value = "/{fcltType}", produces = {"application/json; charset=utf8"})
-    public List<TbFcltSttsAlrmStupDto> findById(
+    public List<TbFcltSttsAlrmStupDto> findListById(
             @ApiParam(name = "fcltType", value = "VMS/VDS/CCTV/DSRC/WCAM 선택", example = "VMS", required = true)
             @PathVariable("fcltType") final String fcltType) {
         return this.service.findListById(fcltType);

+ 4 - 0
src/main/java/com/its/op/dao/repository/its/facility/TbFcltSttsAlrmStupRepository.java

@@ -21,4 +21,8 @@ public interface TbFcltSttsAlrmStupRepository extends JpaRepository<TbFcltSttsAl
 
     @Query("select p from TbFcltSttsAlrmStup p where p.fcltType = :fcltType")
     List<TbFcltSttsAlrmStup> findListById(@Param("fcltType") String fcltType);
+
+    @Query("select p from TbFcltSttsAlrmStup p where p.useYn = 'Y'")
+    List<TbFcltSttsAlrmStup> findAllListUsed();
+
 }

+ 56 - 23
src/main/java/com/its/op/dto/its/facility/TbFcltSttsAlrmStupDto.java

@@ -83,11 +83,44 @@ public class TbFcltSttsAlrmStupDto implements Serializable {
     @JsonProperty("use_yn")
     private String useYn;
 
-    // Code Description Field
-    @ApiModelProperty("사용 여부 설명")
-    @JsonProperty("use_desc")    // USE_YN
-    private String useDesc;
+    public static TbFcltSttsAlrmStupDto build(String fcltType, String fcltId) {
+        return TbFcltSttsAlrmStupDto.builder()
+                .fcltType(fcltType)
+                .fcltId(fcltId)
+                .regDt("19700101000000")
+                .cmncStts("Y")
+                .pwerStts("Y")
+                .modlStts("Y")
+                .doorStts("Y")
+                .frontDoorStts("Y")
+                .backDoorStts("Y")
+                .videoInput("Y")
+                .cntlDevcStts("Y")
+                .atnStts("Y")
+                .atnMtns("Y")
+                .commStts("Y")
+                .userId("")
+                .useYn("N")
+                .build();
+    }
+
+    public void setInfo(TbFcltSttsAlrmStup entity) {
+        this.regDt = entity.getRegDt();
+        this.cmncStts = entity.getCmncStts();
+        this.pwerStts = entity.getPwerStts();
+        this.modlStts = entity.getModlStts();
+        this.doorStts = entity.getDoorStts();
+        this.frontDoorStts = entity.getFrontDoorStts();
+        this.backDoorStts = entity.getBackDoorStts();
+        this.videoInput = entity.getVideoInput();
+        this.cntlDevcStts = entity.getCntlDevcStts();
+        this.atnStts = entity.getAtnStts();
+        this.atnMtns = entity.getAtnMtns();
+        this.commStts = entity.getCommStts();
+        this.userId = entity.getUserId();
+        this.useYn = entity.getUseYn();
 
+    }
     @ApiModel("TbFcltSttsAlrmStupUpdReq(시설물 상태 알람 설정 정보변경)")
     @Getter
     @Setter
@@ -187,25 +220,25 @@ public class TbFcltSttsAlrmStupDto implements Serializable {
         @Pattern(regexp = "[YN]")
         private String useYn;
 
-        @Builder
-        public TbFcltSttsAlrmStupUpdReq(String fclt_type, String fclt_id, String reg_dt, String cmnc_stts, String pwer_stts, String modl_stts, String door_stts, String front_door_stts, String back_door_stts, String video_input, String cntl_devc_stts, String atn_stts, String atn_mtns, String comm_stts, String user_id, String use_yn) {
-            this.fcltType = fclt_type;
-            this.fcltId = fclt_id;
-            this.regDt = reg_dt;
-            this.cmncStts = cmnc_stts;
-            this.pwerStts = pwer_stts;
-            this.modlStts = modl_stts;
-            this.doorStts = door_stts;
-            this.frontDoorStts = front_door_stts;
-            this.backDoorStts = back_door_stts;
-            this.videoInput = video_input;
-            this.cntlDevcStts = cntl_devc_stts;
-            this.atnStts = atn_stts;
-            this.atnMtns = atn_mtns;
-            this.commStts = comm_stts;
-            this.userId = user_id;
-            this.useYn = use_yn;
-        }
+//        @Builder
+//        public TbFcltSttsAlrmStupUpdReq(String fclt_type, String fclt_id, String reg_dt, String cmnc_stts, String pwer_stts, String modl_stts, String door_stts, String front_door_stts, String back_door_stts, String video_input, String cntl_devc_stts, String atn_stts, String atn_mtns, String comm_stts, String user_id, String use_yn) {
+//            this.fcltType = fclt_type;
+//            this.fcltId = fclt_id;
+//            this.regDt = reg_dt;
+//            this.cmncStts = cmnc_stts;
+//            this.pwerStts = pwer_stts;
+//            this.modlStts = modl_stts;
+//            this.doorStts = door_stts;
+//            this.frontDoorStts = front_door_stts;
+//            this.backDoorStts = back_door_stts;
+//            this.videoInput = video_input;
+//            this.cntlDevcStts = cntl_devc_stts;
+//            this.atnStts = atn_stts;
+//            this.atnMtns = atn_mtns;
+//            this.commStts = comm_stts;
+//            this.userId = user_id;
+//            this.useYn = use_yn;
+//        }
 
         public TbFcltSttsAlrmStup toEntity() {
             return TbFcltSttsAlrmStup.builder()

+ 31 - 0
src/main/java/com/its/op/entity/its/cctv/TbCctvCtlr.java

@@ -321,4 +321,35 @@ public class TbCctvCtlr implements Serializable {
         this.delYn = req.getDelYn();
     }
 
+    public String getCmncSttsCd() {
+        String result = "CMS1";
+        if (this.state != null) {
+            result = this.state.getCmncSttsCd();
+        }
+        return result;
+    }
+
+    public TbCctvCtlrStts getState() {
+        if (this.state == null) {
+            TbCctvCtlrStts state = TbCctvCtlrStts.builder()
+                    .cctvCtlrNmbr(this.cctvCtlrNmbr)
+                    .updtDt("19700101000000")
+                    .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                    .cboxDoorSttsCd("CDS2")
+                    .frontDoorSttsCd("CDS2")
+                    .backDoorSttsCd("CDS2")
+                    .fanSttsCd("PAS2")
+                    .hetrSttsCd("HTS2")
+                    .videoInput("VDI2")
+                    .cboxTmpr(0)
+                    .cboxHmdt(0)
+                    .pan(0)
+                    .tilt(0)
+                    .zoom(0)
+                    .focus(0)
+                    .build();
+            this.state = state;
+        }
+        return this.state;
+    }
 }

+ 2 - 4
src/main/java/com/its/op/entity/its/cctv/TbCctvCtlrStts.java

@@ -3,10 +3,7 @@ package com.its.op.entity.its.cctv;
 import com.its.op.dto.its.cctv.TbCctvCtlrSttsDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -18,6 +15,7 @@ import java.io.Serializable;
  * CCTV 상태 Entity Class
  */
 @Getter
+@Setter
 @NoArgsConstructor//(access = AccessLevel.PROTECTED)
 @Builder
 @AllArgsConstructor

+ 36 - 0
src/main/java/com/its/op/entity/its/rse/TbRseCtlr.java

@@ -203,4 +203,40 @@ public class TbRseCtlr implements Serializable {
         this.delYn = req.getDelYn();
     }
 
+    public String getCmncSttsCd() {
+        String result = "CMS1";
+        if (this.state != null) {
+            result = this.state.getCmncSttsCd();
+        }
+        return result;
+    }
+
+    public TbRseCtlrStts getState() {
+        if (this.state == null) {
+            TbRseCtlrStts state = TbRseCtlrStts.builder()
+                    .rseCtlrNmbr(this.rseCtlrNmbr)
+                    .updtDt("19700101000000")
+                    .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                    .cntlDevcStts("4")
+                    .atn1Stts("1")
+                    .atn2Stts("1")
+                    .atn3Stts("1")
+                    .atn4Stts("1")
+                    .atn1Mtns("3")
+                    .atn2Mtns("3")
+                    .atn3Mtns("3")
+                    .atn4Mtns("3")
+                    .cboxDoorSttsCd("CDS2")
+                    .frontDoorSttsCd("CDS2")
+                    .backDoorSttsCd("CDS2")
+                    .fanSttsCd("PAS2")
+                    .hetrSttsCd("HTS2")
+                    .cboxTmpr(0)
+                    .cboxHmdt(0)
+                    .rtuSttsCd("RTU2")
+                    .build();
+            this.state = state;
+        }
+        return this.state;
+    }
 }

+ 2 - 4
src/main/java/com/its/op/entity/its/rse/TbRseCtlrStts.java

@@ -3,10 +3,7 @@ package com.its.op.entity.its.rse;
 import com.its.op.dto.its.rse.TbRseCtlrSttsDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -18,6 +15,7 @@ import java.io.Serializable;
  * RSE 상태 현황 Entity Class
  */
 @Getter
+@Setter
 @NoArgsConstructor//(access = AccessLevel.PROTECTED)
 @Builder
 @AllArgsConstructor

+ 29 - 0
src/main/java/com/its/op/entity/its/vds/TbVdsCtlr.java

@@ -233,4 +233,33 @@ public class TbVdsCtlr implements Serializable {
         this.delYn = req.getDelYn();
     }
 
+    public String getCmncSttsCd() {
+        String result = "CMS1";
+        if (this.state != null) {
+            result = this.state.getCmncSttsCd();
+        }
+        return result;
+    }
+
+    public TbVdsCtlrStts getState() {
+        if (this.state == null) {
+            TbVdsCtlrStts state = TbVdsCtlrStts.builder()
+                    .vdsCtlrNmbr(this.vdsCtlrNmbr)
+                    .updtDt("19700101000000")
+                    .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                    .cboxDoorSttsCd("CDS2")
+                    .frontDoorSttsCd("CDS2")
+                    .backDoorSttsCd("CDS2")
+                    .fanSttsCd("PAS2")
+                    .hetrSttsCd("HTS2")
+                    .cboxTmpr(0)
+                    .inptVolt(0)
+                    .prntVolt(0)
+                    .prntPwerSttsCd("PWS2")
+                    .videoInput("VDI2")
+                    .build();
+            this.state = state;
+        }
+        return this.state;
+    }
 }

+ 2 - 4
src/main/java/com/its/op/entity/its/vds/TbVdsCtlrStts.java

@@ -3,10 +3,7 @@ package com.its.op.entity.its.vds;
 import com.its.op.dto.its.vds.TbVdsCtlrSttsDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -18,6 +15,7 @@ import java.io.Serializable;
  * VMS 제어기 상태 현재 Entity Class
  */
 @Getter
+@Setter
 @NoArgsConstructor//(access = AccessLevel.PROTECTED)
 @Builder
 @AllArgsConstructor

+ 29 - 0
src/main/java/com/its/op/entity/its/vms/TbVmsCtlr.java

@@ -437,4 +437,33 @@ public class TbVmsCtlr implements Serializable {
         this.alttImagDsplYn = req.getAlttImagDsplYn();
     }
 
+    public String getCmncSttsCd() {
+        String result = "CMS1";
+        if (this.state != null) {
+            result = this.state.getCmncSttsCd();
+        }
+        return result;
+    }
+
+    public TbVmsCtlrStts getState() {
+        if (this.state == null) {
+            TbVmsCtlrStts state = TbVmsCtlrStts.builder()
+                    .vmsCtlrNmbr(this.vmsCtlrNmbr)
+                    .updtDt("19700101000000")
+                    .cmncSttsCd(CodeManager.CMNC_STTS_ERROR)
+                    .pwerSttsCd("PWS2")
+                    .modlSttsCd("MOS2")
+                    .cboxDoorSttsCd("CDS2")
+                    .fanSttsCd("PAS2")
+                    .hetrSttsCd("HTS2")
+                    .cboxTmpr(0)
+                    .brghVal(0)
+                    .commSttsCd(CodeManager.CMNC_STTS_ERROR)
+                    .modlStts("")
+                    .pwerStts("")
+                    .build();;
+            this.state = state;
+        }
+        return this.state;
+    }
 }

+ 1 - 0
src/main/java/com/its/op/entity/its/vms/TbVmsCtlrStts.java

@@ -11,6 +11,7 @@ import java.io.Serializable;
  * VMS 제어기 상태 현재 Entity Class
  */
 @Getter
+@Setter
 @NoArgsConstructor//(access = AccessLevel.PROTECTED)
 @Builder
 @AllArgsConstructor

+ 44 - 6
src/main/java/com/its/op/service/its/cctv/TbCctvCtlrService.java

@@ -5,8 +5,10 @@ import com.its.op.dao.repository.its.cctv.TbCctvCtlrSttsHsRepository;
 import com.its.op.dto.its.cctv.TbCctvCtlrDto;
 import com.its.op.dto.its.cctv.TbCctvCtlrSttsDto;
 import com.its.op.dto.its.common.*;
+import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
 import com.its.op.entity.its.cctv.TbCctvCtlr;
 import com.its.op.global.CodeManager;
+import com.its.op.service.its.facility.TbFcltSttsAlrmStupService;
 import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -21,8 +23,10 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class TbCctvCtlrService {
 
+    private final TbFcltSttsAlrmStupService alarmService;
     private final TbCctvCtlrRepository repo;
     private final TbCctvCtlrSttsHsRepository sttsHsRepo;
+    private String fcltType = "CCTV";
 
     // 데이터 1건 조회, 없으면 exception
     private TbCctvCtlr requireOne(Long id) throws NoSuchElementException {
@@ -71,9 +75,26 @@ public class TbCctvCtlrService {
      */
     @Transactional(readOnly = true)
     public List<TbCctvCtlrSttsDto> findAllStts() {
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup("CCTV");
         List<TbCctvCtlrSttsDto> result = new ArrayList<>();
         List<TbCctvCtlr> data = this.repo.findAllList();
         data.forEach(obj -> {
+            if (!CodeManager.CMNC_STTS_NORMAL.equals(obj.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getCctvCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn())) {
+                    if ("N".equals(alarm.getCmncStts())) {
+                        obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                        if ("N".equals(alarm.getDoorStts())) {
+                            obj.getState().setCboxDoorSttsCd("CDS0");
+                            obj.getState().setFrontDoorSttsCd("CDS0");
+                            obj.getState().setBackDoorSttsCd("CDS0");
+                        }
+                        if ("N".equals(alarm.getVideoInput())) {
+                            obj.getState().setVideoInput("VDI0");
+                        }
+                    }
+                }
+            }
             result.add(obj.toSttsDto());
         });
         return result;
@@ -110,7 +131,7 @@ public class TbCctvCtlrService {
      */
     @Transactional(readOnly = true)
     public List<SttsCommErrDto> findAllListCommError() {
-
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         Map<String, SttsCommErrDto> result = new HashMap<>();
         List<TbCctvCtlr> data = this.repo.findAllList();
         List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(ItsUtils.getFromToday());
@@ -119,6 +140,10 @@ public class TbCctvCtlrService {
         data.forEach(obj -> {
             TbCctvCtlrSttsDto dto = obj.toSttsDto();
             if (!CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getCctvCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                    return;
+                }
                 SttsCommErrDto commErrorDto = new SttsCommErrDto();
                 commErrorDto.setCtlrNmbr(String.valueOf(dto.getCctvCtlrNmbr()));
                 commErrorDto.setCtlrId(dto.getCctvCtlrId());
@@ -149,8 +174,7 @@ public class TbCctvCtlrService {
      */
     @Transactional(readOnly = true)
     public FcltSttsListDto findAllSttsListTotal(boolean total) {
-
-        String fcltType = "CCTV";
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         FcltSttsListDto result = new FcltSttsListDto();
 
         AtomicInteger error = new AtomicInteger(0);
@@ -159,10 +183,23 @@ public class TbCctvCtlrService {
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<TbCctvCtlr> ctlrList = this.repo.findAllList();
         ctlrList.forEach(obj -> {
+            TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getCctvCtlrId());
+            if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                if ("N".equals(alarm.getDoorStts())) {
+                    obj.getState().setCboxDoorSttsCd("CDS0");
+                    obj.getState().setFrontDoorSttsCd("CDS0");
+                    obj.getState().setBackDoorSttsCd("CDS0");
+                }
+                if ("N".equals(alarm.getVideoInput())) {
+                    obj.getState().setVideoInput("VDI0");
+                }
+            }
+
             TbCctvCtlrSttsDto dto = obj.toSttsDto();
             if (total) {
                 FcltSttsDto stts = FcltSttsDto.builder()
-                        .fcltType(fcltType)
+                        .fcltType(this.fcltType)
                         .fcltNmbr(String.valueOf(obj.getCctvCtlrNmbr()))
                         .fcltId(obj.getCctvCtlrId())
                         .fcltNm(obj.getIstlLctnNm())
@@ -176,6 +213,7 @@ public class TbCctvCtlrService {
 
                 sttsDtoList.add(stts);
             }
+
             if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
                 normal.getAndIncrement();
             }
@@ -185,8 +223,8 @@ public class TbCctvCtlrService {
         });
 
         FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
-                .fcltType(fcltType)
-                .fcltNm(fcltType)
+                .fcltType(this.fcltType)
+                .fcltNm(this.fcltType)
                 .totalCnt(ctlrList.size())
                 .normalCnt(normal.get())
                 .errorCnt(error.get())

+ 79 - 20
src/main/java/com/its/op/service/its/facility/TbFcltSttsAlrmStupService.java

@@ -1,18 +1,23 @@
 package com.its.op.service.its.facility;
 
+import com.its.op.dao.repository.its.cctv.TbCctvCtlrRepository;
 import com.its.op.dao.repository.its.facility.TbFcltSttsAlrmStupRepository;
+import com.its.op.dao.repository.its.rse.TbRseCtlrRepository;
+import com.its.op.dao.repository.its.vds.TbVdsCtlrRepository;
+import com.its.op.dao.repository.its.vms.TbVmsCtlrRepository;
 import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
+import com.its.op.entity.its.cctv.TbCctvCtlr;
 import com.its.op.entity.its.facility.TbFcltSttsAlrmStup;
 import com.its.op.entity.its.facility.TbFcltSttsAlrmStupKey;
+import com.its.op.entity.its.rse.TbRseCtlr;
+import com.its.op.entity.its.vds.TbVdsCtlr;
+import com.its.op.entity.its.vms.TbVmsCtlr;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Optional;
+import java.util.*;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -20,6 +25,11 @@ import java.util.Optional;
 public class TbFcltSttsAlrmStupService {
 
     private final TbFcltSttsAlrmStupRepository repo;
+    private final TbCctvCtlrRepository cctvRepo;
+    private final TbVmsCtlrRepository vmsRepo;
+    private final TbVdsCtlrRepository vdsRepo;
+    private final TbRseCtlrRepository rseRepo;
+
 
     // 데이터 1건 조회, 없으면 exception
     private TbFcltSttsAlrmStup requireOne(TbFcltSttsAlrmStupKey fcltType) throws NoSuchElementException {
@@ -34,24 +44,34 @@ public class TbFcltSttsAlrmStupService {
 
     // 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbFcltSttsAlrmStupDto> findAll() {
-        List<TbFcltSttsAlrmStupDto> result = new ArrayList<>();
-        List<TbFcltSttsAlrmStup> data = this.repo.findAll();
-        for (TbFcltSttsAlrmStup entity : data) {
-            result.add(entity.toDto());
+    public List<TbFcltSttsAlrmStupDto> findAllList() {
+        Map<String, TbFcltSttsAlrmStupDto> result = new HashMap<>();
+
+        List<TbCctvCtlr> cctvList = this.cctvRepo.findAllList();
+        List<TbVmsCtlr> vmsList = this.vmsRepo.findAllList();
+        List<TbVdsCtlr> vdsList = this.vdsRepo.findAllList();
+        List<TbRseCtlr> rseList = this.rseRepo.findAllList();
+        for (TbCctvCtlr cctv : cctvList) {
+            result.put(cctv.getCctvCtlrId(), TbFcltSttsAlrmStupDto.build("CCTV", cctv.getCctvCtlrId()));
+        }
+        for (TbVmsCtlr vms : vmsList) {
+            result.put(vms.getVmsCtlrId(), TbFcltSttsAlrmStupDto.build("VMS", vms.getVmsCtlrId()));
+        }
+        for (TbVdsCtlr vds : vdsList) {
+            result.put(vds.getVdsCtlrId(), TbFcltSttsAlrmStupDto.build("VDS", vds.getVdsCtlrId()));
+        }
+        for (TbRseCtlr rse : rseList) {
+            result.put(rse.getRseCtlrId(), TbFcltSttsAlrmStupDto.build("DSRC", rse.getRseCtlrId()));
         }
-        return result;
-    }
 
-    // 전체 데이터 조회
-    @Transactional(readOnly = true)
-    public List<TbFcltSttsAlrmStupDto> findAllList() {
-        List<TbFcltSttsAlrmStupDto> result = new ArrayList<>();
         List<TbFcltSttsAlrmStup> data = this.repo.findAllList();
         for (TbFcltSttsAlrmStup entity : data) {
-            result.add(entity.toDto());
+            TbFcltSttsAlrmStupDto dto = result.get(entity.getFcltId());
+            if (dto != null) {
+                dto.setInfo(entity);
+            }
         }
-        return result;
+        return new ArrayList<>(result.values());
     }
 
     // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
@@ -88,11 +108,50 @@ public class TbFcltSttsAlrmStupService {
      */
     @Transactional(readOnly = true)
     public List<TbFcltSttsAlrmStupDto> findListById(String fcltType) {
-        List<TbFcltSttsAlrmStupDto> result = new ArrayList<>();
+        Map<String, TbFcltSttsAlrmStupDto> result = new HashMap<>();
+
+        if ("CCTV".equals(fcltType)) {
+            List<TbCctvCtlr> cctvList = this.cctvRepo.findAllList();
+            for (TbCctvCtlr cctv : cctvList) {
+                result.put(cctv.getCctvCtlrId(), TbFcltSttsAlrmStupDto.build("CCTV", cctv.getCctvCtlrId()));
+            }
+        }
+        else if ("VMS".equals(fcltType)) {
+            List<TbVmsCtlr> vmsList = this.vmsRepo.findAllList();
+            for (TbVmsCtlr vms : vmsList) {
+                result.put(vms.getVmsCtlrId(), TbFcltSttsAlrmStupDto.build("VMS", vms.getVmsCtlrId()));
+            }
+        }
+        else if ("VDS".equals(fcltType)) {
+            List<TbVdsCtlr> vdsList = this.vdsRepo.findAllList();
+            for (TbVdsCtlr vds : vdsList) {
+                result.put(vds.getVdsCtlrId(), TbFcltSttsAlrmStupDto.build("VDS", vds.getVdsCtlrId()));
+            }
+        }
+        else if ("DSRC".equals(fcltType)) {
+            List<TbRseCtlr> rseList = this.rseRepo.findAllList();
+            for (TbRseCtlr rse : rseList) {
+                result.put(rse.getRseCtlrId(), TbFcltSttsAlrmStupDto.build("DSRC", rse.getRseCtlrId()));
+            }
+        }
+
         List<TbFcltSttsAlrmStup> data = this.repo.findListById(fcltType);
         for (TbFcltSttsAlrmStup entity : data) {
-            result.add(entity.toDto());
+            TbFcltSttsAlrmStupDto dto = result.get(entity.getFcltId());
+            if (dto != null) {
+                dto.setInfo(entity);
+            }
         }
-        return result;
+        return new ArrayList<>(result.values());
+    }
+
+    public Map<String, TbFcltSttsAlrmStupDto> loadAlarmSetup(String fcltType) {
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = new HashMap<>();
+        List<TbFcltSttsAlrmStup> alarmList = this.repo.findListById(fcltType);
+        for (TbFcltSttsAlrmStup entity : alarmList) {
+            alarmMap.put(entity.getFcltId(), entity.toDto());
+        }
+        return alarmMap;
     }
+
 }

+ 38 - 6
src/main/java/com/its/op/service/its/rse/TbRseCtlrService.java

@@ -3,10 +3,12 @@ package com.its.op.service.its.rse;
 import com.its.op.dao.repository.its.cctv.TbCctvCtlrSttsHsRepository;
 import com.its.op.dao.repository.its.rse.TbRseCtlrRepository;
 import com.its.op.dto.its.common.*;
+import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
 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 com.its.op.service.its.facility.TbFcltSttsAlrmStupService;
 import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -21,8 +23,10 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class TbRseCtlrService {
 
+    private final TbFcltSttsAlrmStupService alarmService;
     private final TbRseCtlrRepository repo;
     private final TbCctvCtlrSttsHsRepository sttsHsRepo;
+    private String fcltType = "DSRC";
 
     // 데이터 1건 조회, 없으면 exception
     private TbRseCtlr requireOne(Long id) throws NoSuchElementException {
@@ -70,9 +74,23 @@ public class TbRseCtlrService {
      */
     @Transactional(readOnly = true)
     public List<TbRseCtlrSttsDto> findAllStts() {
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup("RSE");
         List<TbRseCtlrSttsDto> result = new ArrayList<>();
         List<TbRseCtlr> data = this.repo.findAllList();
         data.forEach(obj -> {
+            if (!CodeManager.CMNC_STTS_NORMAL.equals(obj.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getRseCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn())) {
+                    if ("N".equals(alarm.getCmncStts())) {
+                        obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                        if ("N".equals(alarm.getDoorStts())) {
+                            obj.getState().setCboxDoorSttsCd("CDS0");
+                            obj.getState().setFrontDoorSttsCd("CDS0");
+                            obj.getState().setBackDoorSttsCd("CDS0");
+                        }
+                    }
+                }
+            }
             result.add(obj.toSttsDto());
         });
         return result;
@@ -157,7 +175,7 @@ public class TbRseCtlrService {
      */
     @Transactional(readOnly = true)
     public List<SttsCommErrDto> findAllListCommError() {
-
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         Map<String, SttsCommErrDto> result = new HashMap<>();
         List<TbRseCtlr> data = this.repo.findAllList();
         List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(ItsUtils.getFromToday());
@@ -166,6 +184,10 @@ public class TbRseCtlrService {
         data.forEach(obj -> {
             TbRseCtlrSttsDto dto = obj.toSttsDto();
             if (!CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getRseCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                    return;
+                }
                 SttsCommErrDto commErrorDto = new SttsCommErrDto();
                 commErrorDto.setCtlrNmbr(String.valueOf(dto.getRseCtlrNmbr()));
                 commErrorDto.setCtlrId(dto.getRseCtlrId());
@@ -196,8 +218,7 @@ public class TbRseCtlrService {
      */
     @Transactional(readOnly = true)
     public FcltSttsListDto findAllSttsListTotal(boolean total) {
-
-        String fcltType = "DSRC";
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         FcltSttsListDto result = new FcltSttsListDto();
 
         AtomicInteger error = new AtomicInteger(0);
@@ -206,10 +227,20 @@ public class TbRseCtlrService {
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<TbRseCtlr> ctlrList = this.repo.findAllList();
         ctlrList.forEach(obj -> {
+            TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getRseCtlrId());
+            if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                if ("N".equals(alarm.getDoorStts())) {
+                    obj.getState().setCboxDoorSttsCd("CDS0");
+                    obj.getState().setFrontDoorSttsCd("CDS0");
+                    obj.getState().setBackDoorSttsCd("CDS0");
+                }
+            }
+
             TbRseCtlrSttsDto dto = obj.toSttsDto();
             if (total) {
                 FcltSttsDto stts = FcltSttsDto.builder()
-                        .fcltType(fcltType)
+                        .fcltType(this.fcltType)
                         .fcltNmbr(String.valueOf(obj.getRseCtlrNmbr()))
                         .fcltId(obj.getRseCtlrId())
                         .fcltNm(obj.getIstlLctnNm())
@@ -223,6 +254,7 @@ public class TbRseCtlrService {
 
                 sttsDtoList.add(stts);
             }
+
             if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
                 normal.getAndIncrement();
             }
@@ -232,8 +264,8 @@ public class TbRseCtlrService {
         });
 
         FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
-                .fcltType(fcltType)
-                .fcltNm(fcltType)
+                .fcltType(this.fcltType)
+                .fcltNm(this.fcltType)
                 .totalCnt(ctlrList.size())
                 .normalCnt(normal.get())
                 .errorCnt(error.get())

+ 43 - 6
src/main/java/com/its/op/service/its/vds/TbVdsCtlrService.java

@@ -4,10 +4,12 @@ import com.its.op.dao.repository.its.vds.TbVdsCtlrRepository;
 import com.its.op.dao.repository.its.vds.TbVdsCtlrSttsHsRepository;
 import com.its.op.dao.repository.its.vds.TbVdsDtctClctPnstRepository;
 import com.its.op.dto.its.common.*;
+import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
 import com.its.op.dto.its.vds.TbVdsCtlrDto;
 import com.its.op.dto.its.vds.TbVdsCtlrSttsDto;
 import com.its.op.entity.its.vds.TbVdsCtlr;
 import com.its.op.global.CodeManager;
+import com.its.op.service.its.facility.TbFcltSttsAlrmStupService;
 import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -22,9 +24,11 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class TbVdsCtlrService {
 
+    private final TbFcltSttsAlrmStupService alarmService;
     private final TbVdsCtlrRepository repo;
     private final TbVdsCtlrSttsHsRepository sttsHsRepo;
     private final TbVdsDtctClctPnstRepository rawPnstRepo;
+    private String fcltType = "VDS";
 
     // 데이터 1건 조회, 없으면 exception
     private TbVdsCtlr requireOne(Long id) throws NoSuchElementException {
@@ -72,11 +76,28 @@ public class TbVdsCtlrService {
      */
     @Transactional(readOnly = true)
     public List<TbVdsCtlrSttsDto> findAllStts() {
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup("VDS");
         List<TbVdsCtlrSttsDto> result = new ArrayList<>();
         Map<String, TbVdsCtlrSttsDto> tmp = new HashMap<>();
         List<TbVdsCtlr> data = this.repo.findAllList();
         List<SttsHsErrCntInf> colList = this.rawPnstRepo.findAllCommError();
         data.forEach(obj -> {
+            if (!CodeManager.CMNC_STTS_NORMAL.equals(obj.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVdsCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn())) {
+                    if ("N".equals(alarm.getCmncStts())) {
+                        obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                        if ("N".equals(alarm.getDoorStts())) {
+                            obj.getState().setCboxDoorSttsCd("CDS0");
+                            obj.getState().setFrontDoorSttsCd("CDS0");
+                            obj.getState().setBackDoorSttsCd("CDS0");
+                        }
+                        if ("N".equals(alarm.getVideoInput())) {
+                            obj.getState().setVideoInput("VDI0");
+                        }
+                    }
+                }
+            }
             TbVdsCtlrSttsDto dto = obj.toSttsDto();
             result.add(dto);
             tmp.put(String.valueOf(dto.getVdsCtlrNmbr()), dto);
@@ -156,7 +177,7 @@ public class TbVdsCtlrService {
      */
     @Transactional(readOnly = true)
     public List<SttsCommErrDto> findAllListCommError() {
-
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         Map<String, SttsCommErrDto> result = new HashMap<>();
         List<TbVdsCtlr> data = this.repo.findAllList();
         List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(ItsUtils.getFromToday());
@@ -166,6 +187,10 @@ public class TbVdsCtlrService {
         data.forEach(obj -> {
             TbVdsCtlrSttsDto dto = obj.toSttsDto();
             if (!CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVdsCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                    return;
+                }
                 SttsCommErrDto commErrorDto = new SttsCommErrDto();
                 commErrorDto.setCtlrNmbr(String.valueOf(dto.getVdsCtlrNmbr()));
                 commErrorDto.setCtlrId(dto.getVdsCtlrId());
@@ -210,8 +235,7 @@ public class TbVdsCtlrService {
      */
     @Transactional(readOnly = true)
     public FcltSttsListDto findAllSttsListTotal(boolean total) {
-
-        String fcltType = "VDS";
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         FcltSttsListDto result = new FcltSttsListDto();
 
         AtomicInteger normal = new AtomicInteger(0);
@@ -238,10 +262,23 @@ public class TbVdsCtlrService {
 
         // 상태 설정
         ctlrList.forEach(obj -> {
+            TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVdsCtlrId());
+            if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                if ("N".equals(alarm.getDoorStts())) {
+                    obj.getState().setCboxDoorSttsCd("CDS0");
+                    obj.getState().setFrontDoorSttsCd("CDS0");
+                    obj.getState().setBackDoorSttsCd("CDS0");
+                }
+                if ("N".equals(alarm.getVideoInput())) {
+                    obj.getState().setVideoInput("VDI0");
+                }
+            }
+
             TbVdsCtlrSttsDto dto = obj.toSttsDto();
             if (total) {
                 FcltSttsDto stts = FcltSttsDto.builder()
-                        .fcltType(fcltType)
+                        .fcltType(this.fcltType)
                         .fcltNmbr(String.valueOf(obj.getVdsCtlrNmbr()))
                         .fcltId(obj.getVdsCtlrId())
                         .fcltNm(obj.getVdsNm())
@@ -291,8 +328,8 @@ public class TbVdsCtlrService {
         });
 
         FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
-                .fcltType(fcltType)
-                .fcltNm(fcltType)
+                .fcltType(this.fcltType)
+                .fcltNm(this.fcltType)
                 .totalCnt(ctlrList.size())
                 .normalCnt(normal.get())
                 .errorCnt(error.get())

+ 40 - 8
src/main/java/com/its/op/service/its/vms/TbVmsCtlrService.java

@@ -6,6 +6,7 @@ import com.its.op.dao.repository.its.vms.TbVmsDsplPrstRepository;
 import com.its.op.dao.repository.its.vms.TbVmsDsplSchRepository;
 import com.its.op.dto.its.code.TbCmmnCdDto;
 import com.its.op.dto.its.common.*;
+import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
 import com.its.op.dto.its.vms.TbVmsCtlrDto;
 import com.its.op.dto.its.vms.TbVmsCtlrSttsDto;
 import com.its.op.dto.its.vms.TbVmsDsplSchInf;
@@ -14,6 +15,7 @@ import com.its.op.entity.its.vms.TbVmsCtlr;
 import com.its.op.entity.its.vms.TbVmsDsplPrst;
 import com.its.op.global.CodeManager;
 import com.its.op.service.its.code.TbCmmnCdService;
+import com.its.op.service.its.facility.TbFcltSttsAlrmStupService;
 import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -29,11 +31,13 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class TbVmsCtlrService {
 
+    private final TbFcltSttsAlrmStupService alarmService;
     private final TbVmsCtlrRepository repo;
     private final TbVmsCtlrSttsHsRepository sttsHsRepo;
     private final TbCmmnCdService cmmnCdService;
     private final TbVmsDsplSchRepository dsplSchRepo;
     private final TbVmsDsplPrstRepository dsplPrstRepo;
+    private String fcltType = "VMS";
 
     // 데이터 1건 조회, 없으면 exception
     private TbVmsCtlr requireOne(Long id) throws NoSuchElementException {
@@ -74,16 +78,30 @@ public class TbVmsCtlrService {
         });
         return result;
     }
-
     /**
      * 삭제되지 않은 전체 VMS 상태정보 목록 조회
      * @return
      */
     @Transactional(readOnly = true)
     public List<TbVmsCtlrSttsDto> findAllStts() {
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup("VMS");
         Map<Long, TbVmsCtlrSttsDto> result = new HashMap<>();
         List<TbVmsCtlr> data = this.repo.findAllList();
         data.forEach(obj -> {
+            if (!CodeManager.CMNC_STTS_NORMAL.equals(obj.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVmsCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn())) {
+                    if ("N".equals(alarm.getCmncStts())) {
+                        obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                        if ("N".equals(alarm.getDoorStts())) {
+                            obj.getState().setCboxDoorSttsCd("CDS0");
+                        }
+                        if ("N".equals(alarm.getModlStts())) {
+                            obj.getState().setModlSttsCd("MOS0");
+                        }
+                    }
+                }
+            }
             result.put(obj.getVmsCtlrNmbr(), obj.toSttsDto());
         });
 
@@ -207,7 +225,6 @@ public class TbVmsCtlrService {
      */
     @Transactional(readOnly = true)
     public List<TbVmsCtlrDto.TbVmsType> findAllVmsType() {
-
         List<TbVmsCtlrDto.TbVmsType> result = new ArrayList<>();
         List<TbCmmnCdDto> data = this.cmmnCdService.findAllByCmmnClsfCd(CodeManager.VMS_TYPE_CD);
         if (data != null) {
@@ -225,7 +242,7 @@ public class TbVmsCtlrService {
      * @return
      */
     public List<SttsCommErrDto> findAllListCommError() {
-
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         Map<String, SttsCommErrDto> result = new HashMap<>();
         List<TbVmsCtlr> data = this.repo.findAllList();
         List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(ItsUtils.getFromToday());
@@ -234,6 +251,10 @@ public class TbVmsCtlrService {
         data.forEach(obj -> {
             TbVmsCtlrSttsDto dto = obj.toSttsDto();
             if (!CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVmsCtlrId());
+                if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                    return;
+                }
                 SttsCommErrDto commErrorDto = new SttsCommErrDto();
                 commErrorDto.setCtlrNmbr(String.valueOf(dto.getVmsCtlrNmbr()));
                 commErrorDto.setCtlrId(dto.getVmsCtlrId());
@@ -263,8 +284,7 @@ public class TbVmsCtlrService {
      * @param
      */
     public FcltSttsListDto findAllSttsListTotal(boolean total) {
-
-        String fcltType = "VMS";
+        Map<String, TbFcltSttsAlrmStupDto> alarmMap = this.alarmService.loadAlarmSetup(this.fcltType);
         FcltSttsListDto result = new FcltSttsListDto();
 
         AtomicInteger error = new AtomicInteger(0);
@@ -279,10 +299,21 @@ public class TbVmsCtlrService {
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<TbVmsCtlr> ctlrList = this.repo.findAllList();
         ctlrList.forEach(obj -> {
+            TbFcltSttsAlrmStupDto alarm = alarmMap.get(obj.getVmsCtlrId());
+            if (alarm != null && "Y".equals(alarm.getUseYn()) && "N".equals(alarm.getCmncStts())) {
+                obj.getState().setCmncSttsCd(CodeManager.CMNC_STTS_NORMAL);
+                if ("N".equals(alarm.getDoorStts())) {
+                    obj.getState().setCboxDoorSttsCd("CDS0");
+                }
+                if ("N".equals(alarm.getModlStts())) {
+                    obj.getState().setModlSttsCd("MOS0");
+                }
+            }
+
             TbVmsCtlrSttsDto dto = obj.toSttsDto();
             if (total) {
                 FcltSttsDto stts = FcltSttsDto.builder()
-                        .fcltType(fcltType)
+                        .fcltType(this.fcltType)
                         .fcltNmbr(String.valueOf(obj.getVmsCtlrNmbr()))
                         .fcltId(obj.getVmsCtlrId())
                         .fcltNm(obj.getVmsNm())
@@ -297,6 +328,7 @@ public class TbVmsCtlrService {
 
                 sttsDtoList.add(stts);
             }
+
             if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
                 normal.getAndIncrement();
                 if (("CDS1").equals(dto.getCboxDoorSttsCd())) {
@@ -324,8 +356,8 @@ public class TbVmsCtlrService {
         });
 
         FcltSttsSummaryDto summaryDto = FcltSttsSummaryDto.builder()
-                .fcltType(fcltType)
-                .fcltNm(fcltType)
+                .fcltType(this.fcltType)
+                .fcltNm(this.fcltType)
                 .totalCnt(ctlrList.size())
                 .normalCnt(normal.get())
                 .errorCnt(error.get())