浏览代码

monitoring scenario api add and modity

shjung 3 年之前
父节点
当前提交
8283798ec8

+ 34 - 33
pom.xml

@@ -63,11 +63,11 @@
         </dependency>
 
         <!-- JpaResultMapper -->
-        <dependency>
-            <groupId>org.qlrm</groupId>
-            <artifactId>qlrm</artifactId>
-            <version>2.1.0</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.qlrm</groupId>-->
+<!--            <artifactId>qlrm</artifactId>-->
+<!--            <version>2.1.0</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>io.springfox</groupId>
@@ -234,6 +234,7 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -329,34 +330,34 @@
                     <includeSystemScope>true</includeSystemScope>
                 </configuration>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                    <!-- mapstruct-processor 을 설정해줍니다. -->
-                    <annotationProcessorPaths>
-                        <path>
-                            <groupId>org.projectlombok</groupId>
-                            <artifactId>lombok</artifactId>
-                            <version>${org.projectlombok.version}</version>
-                        </path>
-                        <path>
-                            <groupId>org.projectlombok</groupId>
-                            <artifactId>lombok-mapstruct-binding</artifactId>
-                            <version>0.2.0</version>
-                        </path>
-                        <path>
-                            <groupId>org.mapstruct</groupId>
-                            <artifactId>mapstruct-processor</artifactId>
-                            <version>${org.mapstruct.version}</version>
-                        </path>
-                        <!-- other annotation processors -->
-                    </annotationProcessorPaths>
-                </configuration>
-            </plugin>
+<!--            <plugin>-->
+<!--                <groupId>org.apache.maven.plugins</groupId>-->
+<!--                <artifactId>maven-compiler-plugin</artifactId>-->
+<!--                <version>3.5.1</version>-->
+<!--                <configuration>-->
+<!--                    <source>${java.version}</source>-->
+<!--                    <target>${java.version}</target>-->
+<!--                    &lt;!&ndash; mapstruct-processor 을 설정해줍니다. &ndash;&gt;-->
+<!--                    <annotationProcessorPaths>-->
+<!--                        <path>-->
+<!--                            <groupId>org.projectlombok</groupId>-->
+<!--                            <artifactId>lombok</artifactId>-->
+<!--                            <version>${org.projectlombok.version}</version>-->
+<!--                        </path>-->
+<!--                        <path>-->
+<!--                            <groupId>org.projectlombok</groupId>-->
+<!--                            <artifactId>lombok-mapstruct-binding</artifactId>-->
+<!--                            <version>0.2.0</version>-->
+<!--                        </path>-->
+<!--                        <path>-->
+<!--                            <groupId>org.mapstruct</groupId>-->
+<!--                            <artifactId>mapstruct-processor</artifactId>-->
+<!--                            <version>${org.mapstruct.version}</version>-->
+<!--                        </path>-->
+<!--                        &lt;!&ndash; other annotation processors &ndash;&gt;-->
+<!--                    </annotationProcessorPaths>-->
+<!--                </configuration>-->
+<!--            </plugin>-->
         </plugins>
     </build>
 

+ 7 - 1
src/main/java/com/its/api/ItsOpServerApplication.java

@@ -13,6 +13,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.context.ApplicationPidFileWriter;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -38,10 +39,15 @@ import java.util.Date;
 })*/
 @ComponentScan("com.its")
 @CrossOrigin("*")
-public class ItsOpServerApplication implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
+public class ItsOpServerApplication extends SpringBootServletInitializer implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
 
     private static final String applicationName = "its-op-server";
 
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
+        return builder.sources(ItsOpServerApplication.class);
+    }
+
     public static void main(String[] args) {
         //System.setProperty("log4j.skipJansi", String.valueOf(true));
 

+ 12 - 5
src/main/java/com/its/api/its/controller/cctv/TbCctvMonitoringController.java

@@ -1,6 +1,7 @@
 package com.its.api.its.controller.cctv;
 
 import com.its.api.its.model.dto.cctv.TbCctvMonitoringDto;
+import com.its.api.its.model.dto.common.MonitoringListDto;
 import com.its.api.its.service.cctv.TbCctvMonitoringService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -21,13 +22,19 @@ public class TbCctvMonitoringController {
 
     private final TbCctvMonitoringService service;
 
-    @ApiOperation(value = "웹카메라 모니터링 화면 전체조회(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "CCTV 카메라 모니터링 화면 목록 조회(TB_CCTV_MONITORING)", response = MonitoringListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/camera/list", produces = {"application/json; charset=utf8"})
+    public List<MonitoringListDto> findAllMonitoringList() {
+        return service.findAllMonitoringList(3);
+    }
+
+    @ApiOperation(value = "CCTV 카메라 모니터링 화면 전체조회(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/camera", produces = {"application/json; charset=utf8"})
     public List<TbCctvMonitoringDto> findAll() {
-        return service.findAll();
+        return service.findAllMonitoring(3);
     }
 
-    @ApiOperation(value = "웹카메라 모니터링 화면 개별조회-모니터링 명칭(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "CCTV 카메라 모니터링 화면 개별조회-모니터링 명칭(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbCctvMonitoringDto> findByName(
             @ApiParam(name = "name", value = "모니터링이름", example = "Default", required = true)
@@ -36,7 +43,7 @@ public class TbCctvMonitoringController {
         return service.findByName(3, name);
     }
 
-    @ApiOperation(value = "카메라 모니터링 화면 정보변경/생성(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "CCTV 카메라 모니터링 화면 정보변경/생성(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbCctvMonitoringDto> mergeInfo(
             @ApiParam(name = "name", value = "모니터링이름", example = "Default", required = true)
@@ -46,7 +53,7 @@ public class TbCctvMonitoringController {
         return this.service.mergeInfo(3, name, req);
     }
 
-    @ApiOperation(value = "카메라 모니터링 화면 정보삭제-모니터링 명칭(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "CCTV 카메라 모니터링 화면 정보삭제-모니터링 명칭(TB_CCTV_MONITORING)", response = TbCctvMonitoringDto.class, responseContainer = "ArrayList")
     @DeleteMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbCctvMonitoringDto> deleteByName(@PathVariable("name") String name) {
         return this.service.deleteByName(3, name);

+ 48 - 19
src/main/java/com/its/api/its/controller/vms/TbVmsMonitoringController.java

@@ -1,15 +1,18 @@
 package com.its.api.its.controller.vms;
 
+import com.its.api.its.model.dto.common.MonitoringListDto;
 import com.its.api.its.model.dto.vms.TbVmsMonitoringDto;
 import com.its.api.its.service.vms.TbVmsMonitoringService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
+@Slf4j
 @Api(tags = "12.VMS-0.시스템-2.모니터링-0.모니터링 시나리오 관리")
 @Validated
 @RestController
@@ -19,6 +22,11 @@ public class TbVmsMonitoringController {
 
     private final TbVmsMonitoringService service;
 
+    // 모니터링 유형별 전체 등록 데이터 조회
+    public List<MonitoringListDto> findAllMonitoringList(Integer monitoringType) {
+        return service.findAllMonitoringList(monitoringType);
+    }
+
     // 모니터링 유형별 전체 등록 데이터 조회
     public List<TbVmsMonitoringDto> findAllMonitoring(Integer monitoringType) {
         return this.service.findAllMonitoring(monitoringType);
@@ -26,6 +34,7 @@ public class TbVmsMonitoringController {
 
     // 이름으로 등록 데이터 조회
     public List<TbVmsMonitoringDto> findByName(Integer monitoringType, String name) {
+        log.error("{}, {}", monitoringType, name);
         return this.service.findByName(monitoringType, name);
     }
 
@@ -41,19 +50,24 @@ public class TbVmsMonitoringController {
     }
 
     //////////////////////////////////////// 현시모니터링
-    @ApiOperation(value = "현시 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "현시 모니터링 화면 목록 조회(TB_CCTV_MONITORING)", response = MonitoringListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/phase/list", produces = {"application/json; charset=utf8"})
+    public List<MonitoringListDto> findAllPhaseMonitoringList() {
+        return service.findAllMonitoringList(1);
+    }
+    @ApiOperation(value = "현시 모니터링 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/phase", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findAllPhase() {
         return findAllMonitoring(1);
     }
 
-    @ApiOperation(value = "현시 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "현시 모니터링 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/phase/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findByNamePhase(@PathVariable final String name) {
         return findByName(1, name);
     }
 
-    @ApiOperation(value = "현시 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "현시 모니터링 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "/phase/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> mergeInfoPhase(
             @PathVariable("name") String name,
@@ -61,7 +75,7 @@ public class TbVmsMonitoringController {
         return mergeInfo(1, name, req);
     }
 
-    @ApiOperation(value = "현시 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "현시 모니터링 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @DeleteMapping(value = "/phase/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> deleteByNamePhase(@PathVariable("name") String name) {
         return deleteByName(1, name);
@@ -69,19 +83,24 @@ public class TbVmsMonitoringController {
 
 
     //////////////////////////////////////// 시나리오모니터링
-    @ApiOperation(value = "시나리오 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "시나리오 모니터링 화면 목록 조회(TB_CCTV_MONITORING)", response = MonitoringListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/scenario/list", produces = {"application/json; charset=utf8"})
+    public List<MonitoringListDto> findAllScenarioMonitoringList() {
+        return service.findAllMonitoringList(2);
+    }
+    @ApiOperation(value = "시나리오 모니터링 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/scenario", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findAllScenario() {
-        return findAllMonitoring(1);
+        return findAllMonitoring(2);
     }
 
-    @ApiOperation(value = "시나리오 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "시나리오 모니터링 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/scenario/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findByNameScenario(@PathVariable final String name) {
         return findByName(2, name);
     }
 
-    @ApiOperation(value = "시나리오 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "시나리오 모니터링 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "/scenario/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> mergeInfoScenario(
             @PathVariable("name") String name,
@@ -89,7 +108,7 @@ public class TbVmsMonitoringController {
         return mergeInfo(2, name, req);
     }
 
-    @ApiOperation(value = "시나리오 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "시나리오 모니터링 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @DeleteMapping(value = "/scenario/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> deleteByNameScenario(@PathVariable("name") String name) {
         return deleteByName(2, name);
@@ -97,19 +116,24 @@ public class TbVmsMonitoringController {
 
 
     //////////////////////////////////////// 영상모니터링
-    @ApiOperation(value = "영상 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "영상 모니터링 화면 목록 조회(TB_CCTV_MONITORING)", response = MonitoringListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/camera/list", produces = {"application/json; charset=utf8"})
+    public List<MonitoringListDto> findAllCameraMonitoringList() {
+        return service.findAllMonitoringList(3);
+    }
+    @ApiOperation(value = "영상 모니터링 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/camera", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findAllCamera() {
-        return findAllMonitoring(1);
+        return findAllMonitoring(3);
     }
 
-    @ApiOperation(value = "영상 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "영상 모니터링 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findByNameCamera(@PathVariable final String name) {
         return findByName(3, name);
     }
 
-    @ApiOperation(value = "영상 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "영상 모니터링 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> mergeInfoCamera(
             @PathVariable("name") String name,
@@ -117,7 +141,7 @@ public class TbVmsMonitoringController {
         return mergeInfo(3, name, req);
     }
 
-    @ApiOperation(value = "영상 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "영상 모니터링 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @DeleteMapping(value = "/camera/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> deleteByNameCamera(@PathVariable("name") String name) {
         return deleteByName(3, name);
@@ -125,19 +149,24 @@ public class TbVmsMonitoringController {
 
 
     //////////////////////////////////////// 모듈모니터링
-    @ApiOperation(value = "모듈 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "영상 모니터링 화면 목록 조회(TB_CCTV_MONITORING)", response = MonitoringListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/module/list", produces = {"application/json; charset=utf8"})
+    public List<MonitoringListDto> findAllModuleMonitoringList() {
+        return service.findAllMonitoringList(4);
+    }
+    @ApiOperation(value = "모듈 모니터링 정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/module", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findAllModule() {
-        return findAllMonitoring(1);
+        return findAllMonitoring(4);
     }
 
-    @ApiOperation(value = "모듈 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "모듈 모니터링 개별정보조회(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/module/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> findByNameModule(@PathVariable final String name) {
         return findByName(4, name);
     }
 
-    @ApiOperation(value = "모듈 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "모듈 모니터링 정보변경/생성(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @PostMapping(value = "/module/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> mergeInfoModule(
             @PathVariable("name") String name,
@@ -145,7 +174,7 @@ public class TbVmsMonitoringController {
         return mergeInfo(4, name, req);
     }
 
-    @ApiOperation(value = "모듈 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "모듈 모니터링 정보삭제(TB_VMS_MONITORING)", response = TbVmsMonitoringDto.class, responseContainer = "ArrayList")
     @DeleteMapping(value = "/module/{name}", produces = {"application/json; charset=utf8"})
     public List<TbVmsMonitoringDto> deleteByNameModule(@PathVariable("name") String name) {
         return deleteByName(4, name);

+ 5 - 0
src/main/java/com/its/api/its/model/dto/cctv/TbCctvMonitoringDto.java

@@ -51,8 +51,13 @@ public class TbCctvMonitoringDto implements Serializable {
 
     @ApiModelProperty("스트리밍 RTMP 주소")  // Y VARCHAR(200)
     @JsonProperty("strm_rtmp_addr")
+    @JsonIgnore
     private String strmRtmpAddr;
 
+    @ApiModelProperty("스트리밍 HTTP 주소")  // Y VARCHAR(200)
+    @JsonProperty("strm_http_addr")
+    private String strmHttpAddr;
+
     @ApiModel("TbCctvMonitoringUpdReq(웹카메라 모니터링 화면 정보변경)")
     @Getter
     @Setter

+ 32 - 0
src/main/java/com/its/api/its/model/dto/common/MonitoringListDto.java

@@ -0,0 +1,32 @@
+package com.its.api.its.model.dto.common;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * VMS 모니터링 화면 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbMonitoringListDto(모니터링 화면 목록 조회)")
+public class MonitoringListDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("모니터링유형")
+    @JsonProperty("monitoring_type")
+    private Integer monitoringType;
+
+    @ApiModelProperty("모니터링명칭")
+    @JsonProperty("monitoring_nm")
+    private String monitoringNm;
+
+    @ApiModelProperty("모니터링 화면 갯수")
+    @JsonProperty("count")
+    private Integer count;
+
+}

+ 13 - 0
src/main/java/com/its/api/its/model/dto/common/MonitoringListInf.java

@@ -0,0 +1,13 @@
+package com.its.api.its.model.dto.common;
+
+import java.math.BigDecimal;
+
+/**
+ * 시설물 오류 갯수 조회 Interface Class
+ */
+public interface MonitoringListInf {
+
+    String getName();
+    BigDecimal getCount();
+
+}

+ 4 - 1
src/main/java/com/its/api/its/model/dto/vms/TbVmsMonitoringDto.java

@@ -47,6 +47,9 @@ public class TbVmsMonitoringDto implements Serializable {
     @ApiModelProperty("스트리밍 세션 명")  // Y VARCHAR(200)
     @JsonProperty("strm_sesn_nm")
     private String strmSesnNm;
+    public void setType(Integer monitoringType) {
+        this.monitoringType = monitoringType;
+    }
 
     @ApiModel("TbVmsMonitoringUpdReq(VMS 모니터링 화면 정보변경)")
     @Getter
@@ -55,7 +58,7 @@ public class TbVmsMonitoringDto implements Serializable {
     @NoArgsConstructor(access = AccessLevel.PROTECTED)
     public static class TbVmsMonitoringUpdReq {
 
-        @ApiModelProperty("모니터링유형(1:현시,2,시나리오,3,영상), Nullable = N, NUMBER(3)")  // N NUMBER(3)
+        @ApiModelProperty("모니터링유형(1:현시,2:시나리오,3:영상:4모듈), Nullable = N, NUMBER(3)")  // N NUMBER(3)
         @JsonProperty("monitoring_type")
         @PositiveOrZero
         private Integer monitoringType;

+ 4 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvMonitoring.java

@@ -52,6 +52,9 @@ public class TbCctvMonitoring implements Serializable {
     @NotFound(action = NotFoundAction.IGNORE)
     private TbCctvCtlr cctv = new TbCctvCtlr();
 
+    public void setType(Integer monitoringType) {
+        this.monitoringType = monitoringType;
+    }
     public TbCctvMonitoringDto toDto() {
         TbCctvMonitoringDto dto = TbCctvMonitoringDto.builder()
                 .monitoringType(this.monitoringType)
@@ -65,6 +68,7 @@ public class TbCctvMonitoring implements Serializable {
             dto.setCctvCtlrId(this.cctv.getCctvCtlrId());
             dto.setIstlLctnNm(this.cctv.getIstlLctnNm());
             dto.setStrmRtmpAddr(this.cctv.getStrmRtmpAddr());
+            dto.setStrmHttpAddr(this.cctv.getStrmHttpAddr());
         }
         else {
             dto.setCctvCtlrId("-");

+ 4 - 0
src/main/java/com/its/api/its/model/entity/vms/TbVmsMonitoring.java

@@ -48,6 +48,10 @@ public class TbVmsMonitoring implements Serializable {
     @NotFound(action = NotFoundAction.IGNORE)
     private TbVmsCtlr vms = new TbVmsCtlr();
 
+    public void setType(Integer monitoringType) {
+        this.monitoringType = monitoringType;
+    }
+
     public TbVmsMonitoringDto toDto() {
         TbVmsMonitoringDto dto = TbVmsMonitoringDto.builder()
                 .monitoringType(this.monitoringType)

+ 10 - 1
src/main/java/com/its/api/its/repository/cctv/TbCctvMonitoringRepository.java

@@ -1,12 +1,13 @@
 package com.its.api.its.repository.cctv;
 
+import com.its.api.its.model.dto.common.MonitoringListInf;
 import com.its.api.its.model.entity.cctv.TbCctvMonitoring;
 import com.its.api.its.model.entity.cctv.TbCctvMonitoringKey;
-import org.springframework.data.repository.query.Param;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -17,6 +18,14 @@ public interface TbCctvMonitoringRepository extends JpaRepository<TbCctvMonitori
 
     @Query("select p from TbCctvMonitoring p inner join fetch p.cctv cctv")
     List<TbCctvMonitoring> findAll();
+    @Query("select p.monitoringNm as name, count(p.monitoringNm) as count " +
+            "  from TbCctvMonitoring p " +
+            " where p.monitoringType = :monitoringType " +
+            " group by p.monitoringNm")
+    List<MonitoringListInf> findAllMonitoringList(@Param("monitoringType") Integer monitoringType);
+
+    @Query("select p from TbCctvMonitoring p inner join fetch p.cctv cctv where p.monitoringType = :monitoringType")
+    List<TbCctvMonitoring> findAllMonitoring(@Param("monitoringType") Integer monitoringType);
 
     @Query("select p from TbCctvMonitoring p inner join fetch p.cctv cctv where p.monitoringType = :monitoringType and p.monitoringNm = :monitoringNm")
     List<TbCctvMonitoring> findByName(@Param("monitoringType") Integer monitoringType, @Param("monitoringNm") String monitoringNm);

+ 9 - 1
src/main/java/com/its/api/its/repository/vms/TbVmsMonitoringRepository.java

@@ -1,5 +1,6 @@
 package com.its.api.its.repository.vms;
 
+import com.its.api.its.model.dto.common.MonitoringListInf;
 import com.its.api.its.model.entity.vms.TbVmsMonitoring;
 import com.its.api.its.model.entity.vms.TbVmsMonitoringKey;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -15,13 +16,20 @@ import java.util.List;
 @Repository
 public interface TbVmsMonitoringRepository extends JpaRepository<TbVmsMonitoring, TbVmsMonitoringKey>, JpaSpecificationExecutor<TbVmsMonitoring> {
 
+    @Query("select p.monitoringNm as name, count(p.monitoringNm) as count " +
+            "  from TbVmsMonitoring p " +
+            " where p.monitoringType = :monitoringType " +
+            " group by p.monitoringNm")
+    List<MonitoringListInf> findAllMonitoringList(@Param("monitoringType") Integer monitoringType);
+
     @Query("select p from TbVmsMonitoring p inner join fetch p.vms vms inner join fetch vms.type tp inner join fetch vms.usagType utp inner join fetch vms.state where p.monitoringType = :monitoringType")
     List<TbVmsMonitoring> findAllMonitoring(@Param("monitoringType") Integer monitoringType);
 
     @Query("select p from TbVmsMonitoring p inner join fetch p.vms vms inner join fetch vms.type tp inner join fetch vms.usagType utp inner join fetch vms.state")
     List<TbVmsMonitoring> findAll();
 
-    @Query("select p from TbVmsMonitoring p inner join fetch p.vms vms inner join fetch vms.type tp inner join fetch vms.usagType utp inner join fetch vms.state where p.monitoringType = :monitoringType and p.monitoringNm = :monitoringNm")
+    @Query("select p from TbVmsMonitoring p inner join fetch p.vms vms inner join fetch vms.type tp inner join fetch vms.usagType utp inner join fetch vms.state " +
+           " where p.monitoringType = :monitoringType and p.monitoringNm = :monitoringNm")
     List<TbVmsMonitoring> findByName(@Param("monitoringType") Integer monitoringType, @Param("monitoringNm") String monitoringNm);
 
     @Transactional

+ 60 - 1
src/main/java/com/its/api/its/service/cctv/TbCctvMonitoringService.java

@@ -1,6 +1,9 @@
 package com.its.api.its.service.cctv;
 
+import com.its.api.its.model.dto.cctv.TbCctvCtlrDto;
 import com.its.api.its.model.dto.cctv.TbCctvMonitoringDto;
+import com.its.api.its.model.dto.common.MonitoringListDto;
+import com.its.api.its.model.dto.common.MonitoringListInf;
 import com.its.api.its.model.entity.cctv.TbCctvMonitoring;
 import com.its.api.its.model.entity.cctv.TbCctvMonitoringKey;
 import com.its.api.its.repository.cctv.TbCctvMonitoringRepository;
@@ -19,6 +22,7 @@ import java.util.NoSuchElementException;
 public class TbCctvMonitoringService {
 
     private final TbCctvMonitoringRepository repo;
+    private final TbCctvCtlrService ctlrService;
 
     // 데이터 1건 조회, 없으면 exception
     private TbCctvMonitoring requireOne(TbCctvMonitoringKey id) {
@@ -28,7 +32,7 @@ public class TbCctvMonitoringService {
 
     // 전체 데이터 조회
     @Transactional(readOnly = true)
-    public List<TbCctvMonitoringDto> findAll() {
+    public List<TbCctvMonitoringDto> findAll(Integer monitoringType) {
         List<TbCctvMonitoringDto> result = new ArrayList<>();
         List<TbCctvMonitoring> data = this.repo.findAll();
         for (TbCctvMonitoring entity : data) {
@@ -36,6 +40,18 @@ public class TbCctvMonitoringService {
         }
         return result;
     }
+    // 모니터링 유형에 속한 모든 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbCctvMonitoringDto> findAllMonitoring(Integer monitoringType) {
+        List<TbCctvMonitoringDto> result = new ArrayList<>();
+        List<TbCctvMonitoring> data = this.repo.findAllMonitoring(monitoringType);
+        if (data != null) {
+            data.forEach(obj -> {
+                result.add(obj.toDto());
+            });
+        }
+        return result;
+    }
 
     // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
     @Transactional(readOnly = true)
@@ -79,6 +95,7 @@ public class TbCctvMonitoringService {
         // 이름에 해당하는 모든 데이터 저장
         for (TbCctvMonitoringDto.TbCctvMonitoringUpdReq req : reqList) {
             TbCctvMonitoring obj = req.toEntity(monitoringType, name);
+            obj.setType(monitoringType);
             this.repo.save(obj);
         }
 
@@ -97,4 +114,46 @@ public class TbCctvMonitoringService {
         return result;
     }
 
+    /**
+     * 모니터링 화면 리스트 소회
+     * @param monitoringType
+     * @return
+     */
+    public List<MonitoringListDto> findAllMonitoringList(Integer monitoringType) {
+        List<MonitoringListDto> result = new ArrayList<>();
+        List<MonitoringListInf> data = this.repo.findAllMonitoringList(monitoringType);
+        data.forEach(obj -> {
+            result.add(MonitoringListDto.builder()
+                    .monitoringType(monitoringType)
+                    .monitoringNm(obj.getName())
+                    .count(obj.getCount().intValue())
+                    .build());
+        });
+
+        if (result.size() == 0) {
+            // 모니터링 화면이 없으면 Default 화면 목록을 만든다
+            List<TbCctvCtlrDto> ctlrList = this.ctlrService.findAllList();
+            int seq = 1;
+            for (int ii = 0; ii < ctlrList.size(); ii++) {
+                TbCctvCtlrDto obj = ctlrList.get(ii);
+                TbCctvMonitoring entity = TbCctvMonitoring.builder()
+                        .monitoringType(monitoringType)
+                        .monitoringNm("Default")
+                        .monitoringSeq(seq++)
+                        .cctvCtlrNmbr(obj.getCctvMngmNmbr())
+                        .viewMode(1)
+                        .build();
+                this.repo.save(entity);
+                if (seq == 16) {
+                    break;
+                }
+            }
+            result.add(MonitoringListDto.builder()
+                    .monitoringType(monitoringType)
+                    .monitoringNm("Default")
+                    .count(seq)
+                    .build());
+        }
+        return result;
+    }
 }

+ 48 - 1
src/main/java/com/its/api/its/service/vms/TbVmsMonitoringService.java

@@ -1,5 +1,8 @@
 package com.its.api.its.service.vms;
 
+import com.its.api.its.model.dto.common.MonitoringListDto;
+import com.its.api.its.model.dto.common.MonitoringListInf;
+import com.its.api.its.model.dto.vms.TbVmsCtlrDto;
 import com.its.api.its.model.dto.vms.TbVmsMonitoringDto;
 import com.its.api.its.model.entity.vms.TbVmsMonitoring;
 import com.its.api.its.model.entity.vms.TbVmsMonitoringKey;
@@ -19,6 +22,7 @@ import java.util.NoSuchElementException;
 public class TbVmsMonitoringService {
 
     private final TbVmsMonitoringRepository repo;
+    private final TbVmsCtlrService ctlrService;
 
     // 데이터 1건 조회, 없으면 exception
     private TbVmsMonitoring requireOne(TbVmsMonitoringKey id) {
@@ -38,6 +42,7 @@ public class TbVmsMonitoringService {
     }
 
     // 모니터링 유형에 속한 모든 데이터 조회
+    @Transactional(readOnly = true)
     public List<TbVmsMonitoringDto> findAllMonitoring(Integer monitoringType) {
         List<TbVmsMonitoringDto> result = new ArrayList<>();
         List<TbVmsMonitoring> data = this.repo.findAllMonitoring(monitoringType);
@@ -60,7 +65,7 @@ public class TbVmsMonitoringService {
     @Transactional(readOnly = true)
     public List<TbVmsMonitoringDto> findByName(Integer monitoringType, String name) {
 
-        //	모니터링유형(1:예비,2,예비,3,영상,4:예비)
+        //	모니터링유형(1:현시,2,시나리오,3,영상,4:모듈상태)
         List<TbVmsMonitoringDto> result = new ArrayList<>();
         List<TbVmsMonitoring> data = this.repo.findByName(monitoringType, name);
         if (data != null) {
@@ -93,6 +98,7 @@ public class TbVmsMonitoringService {
         // 이름에 해당하는 모든 데이터 저장
         for (TbVmsMonitoringDto.TbVmsMonitoringUpdReq req : reqList) {
             TbVmsMonitoring obj = req.toEntity(monitoringType, name);
+            obj.setType(monitoringType);
             this.repo.save(obj);
         }
 
@@ -100,4 +106,45 @@ public class TbVmsMonitoringService {
         return findByName(monitoringType, name);
     }
 
+    /**
+     * 모니터링 화면 리스트 소회
+     * @param monitoringType
+     * @return
+     */
+    public List<MonitoringListDto> findAllMonitoringList(Integer monitoringType) {
+        List<MonitoringListDto> result = new ArrayList<>();
+        List<MonitoringListInf> data = this.repo.findAllMonitoringList(monitoringType);
+        data.forEach(obj -> {
+            result.add(MonitoringListDto.builder()
+                    .monitoringType(monitoringType)
+                    .monitoringNm(obj.getName())
+                    .count(obj.getCount().intValue())
+                    .build());
+        });
+
+        if (result.size() == 0) {
+            // 모니터링 화면이 없으면 Default 화면 목록을 만든다
+            List<TbVmsCtlrDto> ctlrList = this.ctlrService.findAllList();
+            int seq = 1;
+            for (int ii = 0; ii < ctlrList.size(); ii++) {
+                TbVmsCtlrDto obj = ctlrList.get(ii);
+                TbVmsMonitoring entity = TbVmsMonitoring.builder()
+                        .monitoringType(monitoringType)
+                        .monitoringNm("Default")
+                        .monitoringSeq(seq++)
+                        .vmsCtlrNmbr(obj.getVmsCtlrNmbr())
+                        .build();
+                this.repo.save(entity);
+                if (seq == 16) {
+                    break;
+                }
+            }
+            result.add(MonitoringListDto.builder()
+                    .monitoringType(monitoringType)
+                    .monitoringNm("Default")
+                    .count(seq)
+                    .build());
+        }
+        return result;
+    }
 }

+ 0 - 2
src/main/resources/application-dev.yml

@@ -1,6 +1,4 @@
 spring:
-  resources:
-    static-locations: file:src/main/resources/static/
   devtools:
     livereload:
       enabled: true

+ 4 - 1
src/main/resources/application.yml

@@ -25,6 +25,7 @@ server:
     include-exception: false
     include-stacktrace: never
   servlet:
+    context-path: /
     session:
       timeout: 300
 
@@ -32,6 +33,8 @@ spring:
   output:
     ansi:
       enabled: always
+  resources:
+    static-locations: file:src/main/resources/static/
   profiles:
     active: dev
   main:
@@ -67,7 +70,7 @@ spring:
 
 logging:
   level:
-    //org.hibernate.SQL: INFO
+    org.hibernate.SQL: INFO
     org:
       springframework:
         jdbc:

+ 2 - 1
src/main/resources/static/js/utils/restApi.js

@@ -1,4 +1,5 @@
-const _apiUrl = "http://115.91.94.42:8999";
+//const _apiUrl = "http://115.91.94.42:8999";
+const _apiUrl = "";
 
 export function apiGet(uri) {
     const apiUri = _apiUrl + uri;

+ 2 - 1
src/main/resources/static/js/websocket/websocket.js

@@ -1,4 +1,5 @@
-const _websocketUrl = "http://115.91.94.42:8999";
+const _websocketUrl = "";
+//const _websocketUrl = "http://115.91.94.42:8999";
 //const _websocketUrl = "http://192.168.20.93:8999";
 //const sockJs = new SockJS("http://" + window.location.hostname + ":8999/ws/register.do");
 //const sockJs = new SockJS("http://" + window.location.hostname + ":8999/ws/register.do", null, { transports: ["websocket", "xhr-streaming", "xhr-polling"] });