shjung 3 éve
szülő
commit
30127625e5
41 módosított fájl, 1354 hozzáadás és 843 törlés
  1. 0 37
      src/main/java/com/its/api/bis/controller/BisProcessController.java
  2. 0 30
      src/main/java/com/its/api/bis/controller/BisProcessStatusHistoryController.java
  3. 0 37
      src/main/java/com/its/api/bis/controller/BitController.java
  4. 0 30
      src/main/java/com/its/api/bis/controller/BitStatusHistoryController.java
  5. 0 2
      src/main/java/com/its/api/config/DatabaseUtisConfig.java
  6. 66 0
      src/main/java/com/its/api/its/controller/cctv/TbCctvPsetController.java
  7. 66 0
      src/main/java/com/its/api/its/controller/cctv/TbCctvScnrController.java
  8. 0 44
      src/main/java/com/its/api/its/controller/dashboard/facility/BisMapperController.java
  9. 0 69
      src/main/java/com/its/api/its/controller/dashboard/facility/ItsController.java
  10. 137 0
      src/main/java/com/its/api/its/model/dto/cctv/TbCctvPsetDto.java
  11. 87 0
      src/main/java/com/its/api/its/model/dto/cctv/TbCctvScnrDto.java
  12. 23 9
      src/main/java/com/its/api/its/model/dto/vds/TbVdsDtctDto.java
  13. 65 0
      src/main/java/com/its/api/its/model/dto/vds/TbVdsDtctLinkRltnDto.java
  14. 86 0
      src/main/java/com/its/api/its/model/entity/cctv/TbCctvPset.java
  15. 25 0
      src/main/java/com/its/api/its/model/entity/cctv/TbCctvPsetKey.java
  16. 63 0
      src/main/java/com/its/api/its/model/entity/cctv/TbCctvScnr.java
  17. 28 0
      src/main/java/com/its/api/its/model/entity/cctv/TbCctvScnrKey.java
  18. 9 0
      src/main/java/com/its/api/its/model/entity/vds/TbVdsDtct.java
  19. 45 0
      src/main/java/com/its/api/its/model/entity/vds/TbVdsDtctLinkRltn.java
  20. 25 0
      src/main/java/com/its/api/its/model/entity/vds/TbVdsDtctLinkRltnKey.java
  21. 12 0
      src/main/java/com/its/api/its/repository/cctv/TbCctvPsetRepository.java
  22. 12 0
      src/main/java/com/its/api/its/repository/cctv/TbCctvScnrRepository.java
  23. 0 16
      src/main/java/com/its/api/its/repository/dashboard/facility/BisMapper.java
  24. 0 16
      src/main/java/com/its/api/its/repository/dashboard/facility/ItsMapper.java
  25. 0 15
      src/main/java/com/its/api/its/repository/dashboard/facility/RseMapper.java
  26. 11 0
      src/main/java/com/its/api/its/repository/vds/TbVdsDtctLinkRltnRepository.java
  27. 1 1
      src/main/java/com/its/api/its/repository/vds/TbVdsDtctRepository.java
  28. 99 0
      src/main/java/com/its/api/its/service/cctv/TbCctvPsetService.java
  29. 99 0
      src/main/java/com/its/api/its/service/cctv/TbCctvScnrService.java
  30. 0 60
      src/main/java/com/its/api/its/service/dashboard/facility/BisService.java
  31. 0 94
      src/main/java/com/its/api/its/service/dashboard/facility/ItsService.java
  32. 0 26
      src/main/java/com/its/api/its/service/dashboard/facility/RseService.java
  33. 99 0
      src/main/java/com/its/api/its/service/vds/TbVdsDtctLinkRltnService.java
  34. 37 4
      src/main/java/com/its/api/its/service/vds/TbVdsDtctService.java
  35. 36 0
      src/main/resources/application-dev.yml
  36. 37 0
      src/main/resources/application-prod.yml
  37. 136 0
      src/main/resources/application-z-backup.yml
  38. 41 0
      src/main/resources/application.properties.back
  39. 9 87
      src/main/resources/application.yml
  40. 0 109
      src/main/resources/mybatis/mapper/facility/BisMapper.xml
  41. 0 157
      src/main/resources/mybatis/mapper/facility/ItsMapper.xml

+ 0 - 37
src/main/java/com/its/api/bis/controller/BisProcessController.java

@@ -1,37 +0,0 @@
-package com.its.api.bis.controller;
-
-import com.its.api.bis.model.dto.BisProcessDto;
-import com.its.api.bis.service.BisProcessService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/process")
-public class BisProcessController {
-
-    private final BisProcessService service;
-
-    @ApiOperation(value = " 전체조회(PROCESS)", response = BisProcessDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<BisProcessDto> findAll() {
-        return service.findAll();
-    }
-
-    @ApiOperation(value = " 개별조회(PROCESS)", response = BisProcessDto.class)
-    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public BisProcessDto findById(@PathVariable final String id) {
-        return this.service.findById(id);
-    }
-
-}

+ 0 - 30
src/main/java/com/its/api/bis/controller/BisProcessStatusHistoryController.java

@@ -1,30 +0,0 @@
-package com.its.api.bis.controller;
-
-import com.its.api.bis.model.dto.BisProcessStatusHistoryDto;
-import com.its.api.bis.service.BisProcessStatusHistoryService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/processstatus_history")
-public class BisProcessStatusHistoryController {
-
-    private final BisProcessStatusHistoryService service;
-
-    @ApiOperation(value = " 전체조회(PROCESSSTATUS_HISTORY)", response = BisProcessStatusHistoryDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<BisProcessStatusHistoryDto> findAll() {
-        return service.findAll();
-    }
-
-}

+ 0 - 37
src/main/java/com/its/api/bis/controller/BitController.java

@@ -1,37 +0,0 @@
-package com.its.api.bis.controller;
-
-import com.its.api.bis.model.dto.BitDto;
-import com.its.api.bis.service.BitService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/bit")
-public class BitController {
-
-    private final BitService service;
-
-    @ApiOperation(value = " 전체조회(BIT)", response = BitDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<BitDto> findAll() {
-        return service.findAll();
-    }
-
-    @ApiOperation(value = " 개별조회(BIT)", response = BitDto.class)
-    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
-    public BitDto findById(@PathVariable final String id) {
-        return this.service.findById(id);
-    }
-
-}

+ 0 - 30
src/main/java/com/its/api/bis/controller/BitStatusHistoryController.java

@@ -1,30 +0,0 @@
-package com.its.api.bis.controller;
-
-import com.its.api.bis.model.dto.BitStatusHistoryDto;
-import com.its.api.bis.service.BitStatusHistoryService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/bitstatus_history")
-public class BitStatusHistoryController {
-
-    private final BitStatusHistoryService service;
-
-    @ApiOperation(value = " 전체조회(BITSTATUS_HISTORY)", response = BitStatusHistoryDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
-    public List<BitStatusHistoryDto> findAll() {
-        return service.findAll();
-    }
-
-}

+ 0 - 2
src/main/java/com/its/api/config/DatabaseUtisConfig.java

@@ -93,8 +93,6 @@ public class DatabaseUtisConfig {
         log.info("mapperLocations: {}", this.mapperLocations);
         SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
         factoryBean.setDataSource(dataSource);
-        //factoryBean.setTypeAliasesPackage("");
-        //factoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis/mybatis-config.xml"));
         factoryBean.setMapperLocations(applicationContext.getResources(this.mapperLocations));
         return factoryBean.getObject();
     }

+ 66 - 0
src/main/java/com/its/api/its/controller/cctv/TbCctvPsetController.java

@@ -0,0 +1,66 @@
+package com.its.api.its.controller.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvPsetDto;
+import com.its.api.its.model.entity.cctv.TbCctvPsetKey;
+import com.its.api.its.service.cctv.TbCctvPsetService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "11.CCTV-5.CCTV 프리셋 설정")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/cctv/pset")
+public class TbCctvPsetController {
+
+    private final TbCctvPsetService service;
+
+    @ApiOperation(value = "CCTV 프리셋 전체조회(TB_CCTV_PSET)", response = TbCctvPsetDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvPsetDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 개별조회(TB_CCTV_PSET)", response = TbCctvPsetDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvPsetDto findById(@PathVariable final TbCctvPsetKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 정보변경(TB_CCTV_PSET)", response = TbCctvPsetDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvPsetDto updateById(@PathVariable final TbCctvPsetKey id, @RequestBody @Valid final TbCctvPsetDto.TbCctvPsetUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 정보변경/생성-목록(TB_CCTV_PSET)", response = TbCctvPsetDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvPsetDto> mergeInfoList(@RequestBody @Valid final List<TbCctvPsetDto.TbCctvPsetUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 정보변경/생성-개별(TB_CCTV_PSET)", response = TbCctvPsetDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvPsetDto mergeInfo(@PathVariable("id") TbCctvPsetKey id, @RequestBody @Valid final TbCctvPsetDto.TbCctvPsetUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 정보삭제-개별(TB_CCTV_PSET)", response = TbCctvPsetDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvPsetDto deleteDataById(@PathVariable("id") TbCctvPsetKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "CCTV 프리셋 정보삭제-목록(TB_CCTV_PSET)", response = TbCctvPsetDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvPsetDto> deleteDataByIds(@RequestBody @Valid final List<TbCctvPsetKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 66 - 0
src/main/java/com/its/api/its/controller/cctv/TbCctvScnrController.java

@@ -0,0 +1,66 @@
+package com.its.api.its.controller.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvScnrDto;
+import com.its.api.its.model.entity.cctv.TbCctvScnrKey;
+import com.its.api.its.service.cctv.TbCctvScnrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "11.CCTV-6.CCTV 프리셋 제어 스케줄 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/cctv/pset-scnr")
+public class TbCctvScnrController {
+
+    private final TbCctvScnrService service;
+
+    @ApiOperation(value = "CCTV 시나리오 전체조회(TB_CCTV_SCNR)", response = TbCctvScnrDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvScnrDto> findAll() {
+        return service.findAll();
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 개별조회(TB_CCTV_SCNR)", response = TbCctvScnrDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvScnrDto findById(@PathVariable final TbCctvScnrKey id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 정보변경(TB_CCTV_SCNR)", response = TbCctvScnrDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvScnrDto updateById(@PathVariable final TbCctvScnrKey id, @RequestBody @Valid final TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 정보변경/생성-목록(TB_CCTV_SCNR)", response = TbCctvScnrDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvScnrDto> mergeInfoList(@RequestBody @Valid final List<TbCctvScnrDto.TbCctvScnrUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 정보변경/생성-개별(TB_CCTV_SCNR)", response = TbCctvScnrDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvScnrDto mergeInfo(@PathVariable("id") TbCctvScnrKey id, @RequestBody @Valid final TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 정보삭제-개별(TB_CCTV_SCNR)", response = TbCctvScnrDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbCctvScnrDto deleteDataById(@PathVariable("id") TbCctvScnrKey id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "CCTV 시나리오 정보삭제-목록(TB_CCTV_SCNR)", response = TbCctvScnrDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbCctvScnrDto> deleteDataByIds(@RequestBody @Valid final List<TbCctvScnrKey> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 0 - 44
src/main/java/com/its/api/its/controller/dashboard/facility/BisMapperController.java

@@ -1,44 +0,0 @@
-package com.its.api.its.controller.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.BisFacilitySttsDto;
-import com.its.api.its.model.dto.dashboard.facility.BitCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.ProcessSttsDto;
-import com.its.api.its.service.dashboard.facility.BisService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "90.시설물(DASHBOARD)-1.BIS")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/dashboard/facility/bis")
-public class BisMapperController {
-
-    private final BisService service;
-
-    @ApiOperation(value = "BIS.02.프로세스상태", response = ProcessSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/process/stts", produces = {"application/json; charset=utf8"})
-    public List<ProcessSttsDto> findAllProcessStts() {
-        return this.service.findAllProcessStts();
-    }
-
-    @ApiOperation(value = "BIS.03.시설물상태", response = BisFacilitySttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/facility/stts", produces = {"application/json; charset=utf8"})
-    public List<BisFacilitySttsDto> findAllFacilityStts() {
-        return this.service.findAllFacilityStts();
-    }
-
-    @ApiOperation(value = "BIS.04.BIT통신상태", response = BitCommSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/bit/comm", produces = {"application/json; charset=utf8"})
-    public List<BitCommSttsDto> findAllBitComm() {
-        return this.service.findAllBitComm();
-    }
-
-}

+ 0 - 69
src/main/java/com/its/api/its/controller/dashboard/facility/ItsController.java

@@ -1,69 +0,0 @@
-package com.its.api.its.controller.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.CctvCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.ItsFacilitySttsDto;
-import com.its.api.its.model.dto.dashboard.facility.VdsCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.VmsCommSttsDto;
-import com.its.api.its.model.dto.database.TbDbSvrSttsDto;
-import com.its.api.its.model.dto.unit.TbUnitSystSttsDto;
-import com.its.api.its.service.dashboard.facility.ItsService;
-import com.its.api.its.service.database.TbDbSvrSttsService;
-import com.its.api.its.service.unit.TbUnitSystService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-
-@Api(tags = "90.시설물(DASHBOARD)-2.ITS")
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/api/dashboard/facility/its")
-public class ItsController {
-
-    private final ItsService service;
-    private final TbUnitSystService unitSystService;
-    private final TbDbSvrSttsService dbSvrSttsService;
-
-    @ApiOperation(value = "ITS.02.프로세스상태", response = TbUnitSystSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/process/stts", produces = {"application/json; charset=utf8"})
-    public List<TbUnitSystSttsDto> findAllProcessStts() {
-        return this.unitSystService.findAllStts();
-    }
-
-    @ApiOperation(value = "ITS.03.시설물상태", response = ItsFacilitySttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/facility/stts", produces = {"application/json; charset=utf8"})
-    public List<ItsFacilitySttsDto> findAllFacilityStts() {
-        return this.service.findAllFacilityStts();
-    }
-
-    @ApiOperation(value = "ITS.08.VDS통신상태", response = VdsCommSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/vds/comm", produces = {"application/json; charset=utf8"})
-    public List<VdsCommSttsDto> findAllVdsComm() {
-        return this.service.findAllVdsComm();
-    }
-
-    @ApiOperation(value = "ITS.10.VMS통신상태", response = VmsCommSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/vms/comm", produces = {"application/json; charset=utf8"})
-    public List<VmsCommSttsDto> findAllVmsComm() {
-        return this.service.findAllVmsComm();
-    }
-
-    @ApiOperation(value = "ITS.13.CCTV통신상태", response = CctvCommSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/cctv/comm", produces = {"application/json; charset=utf8"})
-    public List<CctvCommSttsDto> findAllCctvComm() {
-        return this.service.findAllCctvComm();
-    }
-
-    @ApiOperation(value = "ITS.14.DB상태", response = TbDbSvrSttsDto.class, responseContainer = "ArrayList")
-    @GetMapping(value = "/dbms/stts", produces = {"application/json; charset=utf8"})
-    public List<TbDbSvrSttsDto> findAllDbmsStts() {
-        return this.dbSvrSttsService.findAll();
-    }
-
-}

+ 137 - 0
src/main/java/com/its/api/its/model/dto/cctv/TbCctvPsetDto.java

@@ -0,0 +1,137 @@
+package com.its.api.its.model.dto.cctv;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.cctv.TbCctvPset;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * CCTV 프리셋 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbCctvPsetDto(CCTV 프리셋)")
+public class TbCctvPsetDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("CCTV 관리 번호")  // N NUMBER(10)
+    @JsonProperty("cctv_mngm_nmbr")
+    private Long cctvMngmNmbr;
+
+    @ApiModelProperty("프리셋 번호")  // N VARCHAR(3)
+    @JsonProperty("pset_nmbr")
+    private String psetNmbr;
+
+    @ApiModelProperty("팬 값")  // Y NUMBER(4)
+    @JsonProperty("pan_val")
+    private Integer panVal;
+
+    @ApiModelProperty("틸트 값")  // Y NUMBER(4)
+    @JsonProperty("tilt_val")
+    private Integer tiltVal;
+
+    @ApiModelProperty("줌 값")  // Y NUMBER(4)
+    @JsonProperty("zoom_val")
+    private Integer zoomVal;
+
+    @ApiModelProperty("초점 값")  // Y NUMBER(4)
+    @JsonProperty("focs_val")
+    private Integer focsVal;
+
+    @ApiModelProperty("프리셋 명")  // Y VARCHAR(100)
+    @JsonProperty("pset_nm")
+    private String psetNm;
+
+    @ApiModelProperty("디폴트 여부")  // Y CHAR(1)
+    @JsonProperty("dflt_yn")
+    private String dfltYn;
+
+    // Code Description Field
+    @ApiModelProperty("디폴트 여부 설명")
+    @JsonProperty("dflt_desc")    // DFLT_YN
+    private String dfltDesc;
+
+    @ApiModel("TbCctvPsetUpdReq(CCTV 프리셋 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbCctvPsetUpdReq {
+
+        @ApiModelProperty("CCTV 관리 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("cctv_mngm_nmbr")
+        @Positive
+        private Long cctvMngmNmbr;
+
+        @ApiModelProperty("프리셋 번호, Nullable = N, VARCHAR(3)")  // N VARCHAR(3)
+        @JsonProperty("pset_nmbr")
+        @Size(min=1, max=3)
+        private String psetNmbr;
+
+        @ApiModelProperty("팬 값, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("pan_val")
+        @Positive
+        private Integer panVal;
+
+        @ApiModelProperty("틸트 값, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("tilt_val")
+        @Positive
+        private Integer tiltVal;
+
+        @ApiModelProperty("줌 값, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("zoom_val")
+        @Positive
+        private Integer zoomVal;
+
+        @ApiModelProperty("초점 값, Nullable = Y, NUMBER(4)")  // Y NUMBER(4)
+        @JsonProperty("focs_val")
+        @Positive
+        private Integer focsVal;
+
+        @ApiModelProperty("프리셋 명, Nullable = Y, VARCHAR(100)")  // Y VARCHAR(100)
+        @JsonProperty("pset_nm")
+        @Size(min=1, max=100)
+        private String psetNm;
+
+        @ApiModelProperty("디폴트 여부, Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("dflt_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String dfltYn;
+
+        @Builder
+        public TbCctvPsetUpdReq(Long cctv_mngm_nmbr, String pset_nmbr, Integer pan_val, Integer tilt_val, Integer zoom_val, Integer focs_val, String pset_nm, String dflt_yn) {
+            this.cctvMngmNmbr = cctv_mngm_nmbr;
+            this.psetNmbr = pset_nmbr;
+            this.panVal = pan_val;
+            this.tiltVal = tilt_val;
+            this.zoomVal = zoom_val;
+            this.focsVal = focs_val;
+            this.psetNm = pset_nm;
+            this.dfltYn = dflt_yn;
+        }
+
+        public TbCctvPset toEntity() {
+            TbCctvPset entity = TbCctvPset.builder()
+                    .cctvMngmNmbr(this.cctvMngmNmbr)
+                    .psetNmbr(this.psetNmbr)
+                    .panVal(this.panVal)
+                    .tiltVal(this.tiltVal)
+                    .zoomVal(this.zoomVal)
+                    .focsVal(this.focsVal)
+                    .psetNm(this.psetNm)
+                    .dfltYn(this.dfltYn)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 87 - 0
src/main/java/com/its/api/its/model/dto/cctv/TbCctvScnrDto.java

@@ -0,0 +1,87 @@
+package com.its.api.its.model.dto.cctv;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.cctv.TbCctvScnr;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * CCTV 시나리오 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbCctvScnrDto(CCTV 시나리오)")
+public class TbCctvScnrDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("CCTV 관리 번호")  // N NUMBER(10)
+    @JsonProperty("cctv_mngm_nmbr")
+    private Long cctvMngmNmbr;
+
+    @ApiModelProperty("시작 시각")  // N VARCHAR(6)
+    @JsonProperty("strt_hms")
+    private String strtHms;
+
+    @ApiModelProperty("종료 시각")  // N VARCHAR(6)
+    @JsonProperty("end_hms")
+    private String endHms;
+
+    @ApiModelProperty("프리셋 번호")  // Y VARCHAR(3)
+    @JsonProperty("pset_nmbr")
+    private String psetNmbr;
+
+    // Code Description Field
+    @ApiModel("TbCctvScnrUpdReq(CCTV 시나리오 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbCctvScnrUpdReq {
+
+        @ApiModelProperty("CCTV 관리 번호, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("cctv_mngm_nmbr")
+        @Positive
+        private Long cctvMngmNmbr;
+
+        @ApiModelProperty("시작 시각, Nullable = N, VARCHAR(6)")  // N VARCHAR(6)
+        @JsonProperty("strt_hms")
+        @Size(min=1, max=6)
+        private String strtHms;
+
+        @ApiModelProperty("종료 시각, Nullable = N, VARCHAR(6)")  // N VARCHAR(6)
+        @JsonProperty("end_hms")
+        @Size(min=1, max=6)
+        private String endHms;
+
+        @ApiModelProperty("프리셋 번호, Nullable = Y, VARCHAR(3)")  // Y VARCHAR(3)
+        @JsonProperty("pset_nmbr")
+        @Size(min=1, max=3)
+        private String psetNmbr;
+
+        @Builder
+        public TbCctvScnrUpdReq(Long cctv_mngm_nmbr, String strt_hms, String end_hms, String pset_nmbr) {
+            this.cctvMngmNmbr = cctv_mngm_nmbr;
+            this.strtHms = strt_hms;
+            this.endHms = end_hms;
+            this.psetNmbr = pset_nmbr;
+        }
+
+        public TbCctvScnr toEntity() {
+            TbCctvScnr entity = TbCctvScnr.builder()
+                    .cctvMngmNmbr(this.cctvMngmNmbr)
+                    .strtHms(this.strtHms)
+                    .endHms(this.endHms)
+                    .psetNmbr(this.psetNmbr)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 23 - 9
src/main/java/com/its/api/its/model/dto/vds/TbVdsDtctDto.java

@@ -1,5 +1,6 @@
 package com.its.api.its.model.dto.vds;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.its.api.its.model.entity.vds.TbVdsDtct;
 import io.swagger.annotations.ApiModel;
@@ -76,20 +77,24 @@ public class TbVdsDtctDto implements Serializable {
     @JsonProperty("del_yn")
     private String delYn;
 
-    @ApiModelProperty("최초 등록자 번호")  // Y VARCHAR(20)
-    @JsonProperty("frst_regr_nmbr")
+    //@ApiModelProperty("최초 등록자 번호")  // Y VARCHAR(20)
+    //@JsonProperty("frst_regr_nmbr")
+    @JsonIgnore
     private String frstRegrNmbr;
 
-    @ApiModelProperty("최초 등록 일시")  // Y VARCHAR(14)
-    @JsonProperty("frst_rgst_dt")
+    //@ApiModelProperty("최초 등록 일시")  // Y VARCHAR(14)
+    //@JsonProperty("frst_rgst_dt")
+    @JsonIgnore
     private String frstRgstDt;
 
-    @ApiModelProperty("최종 수정자 번호")  // Y VARCHAR(20)
-    @JsonProperty("last_crpr_nmbr")
+    //@ApiModelProperty("최종 수정자 번호")  // Y VARCHAR(20)
+    //@JsonProperty("last_crpr_nmbr")
+    @JsonIgnore
     private String lastCrprNmbr;
 
-    @ApiModelProperty("최종 수정 일시")  // Y VARCHAR(14)
-    @JsonProperty("last_crct_dt")
+    //@ApiModelProperty("최종 수정 일시")  // Y VARCHAR(14)
+    //@JsonProperty("last_crct_dt")
+    @JsonIgnore
     private String lastCrctDt;
 
     @ApiModelProperty("제어기 관리 번호")  // Y VARCHAR(20)
@@ -129,6 +134,9 @@ public class TbVdsDtctDto implements Serializable {
     @JsonProperty("dtct_type_desc")    // DTCT_TYPE_CD
     private String dtctTypeDesc;
 
+    @ApiModelProperty("링크ID")  // N NUMBER(10)
+    @JsonProperty("link_id")
+    private Long linkId;
 
     @ApiModel("TbVdsDtctMstrUpdReq(VDS 검지기 마스터 정보변경)")
     @Getter
@@ -237,8 +245,13 @@ public class TbVdsDtctDto implements Serializable {
         @Positive
         private Integer minSped;
 
+        @ApiModelProperty("링크ID")  // N NUMBER(10)
+        @JsonProperty("link_id")
+        @Positive
+        private Long linkId;
+
         @Builder
-        public TbVdsDtctMstrUpdReq(String dtct_nmbr, String dtct_type_cd, Integer stln_dstc, Integer istl_lane, String det_nmbr, Integer snst, Integer dtct_vald_dstc, Integer mdvh_uplm_lngt, Integer mdvh_lwlm_lngt, String use_yn, String chnl_nmbr, String dltr_nmbr, String del_dt, String del_yn, String frst_regr_nmbr, String frst_rgst_dt, String last_crpr_nmbr, String last_crct_dt, String ctlr_mngm_nmbr, String vds_dtct_nm, Integer max_tfvl, Integer min_tfvl, Double max_ocpy_rate, Double min_ocpy_rate, Integer max_sped, Integer min_sped) {
+        public TbVdsDtctMstrUpdReq(String dtct_nmbr, String dtct_type_cd, Integer stln_dstc, Integer istl_lane, String det_nmbr, Integer snst, Integer dtct_vald_dstc, Integer mdvh_uplm_lngt, Integer mdvh_lwlm_lngt, String use_yn, String chnl_nmbr, String dltr_nmbr, String del_dt, String del_yn, String ctlr_mngm_nmbr, String vds_dtct_nm, Integer max_tfvl, Integer min_tfvl, Double max_ocpy_rate, Double min_ocpy_rate, Integer max_sped, Integer min_sped, Long linkId) {
             this.dtctNmbr = dtct_nmbr;
             this.dtctTypeCd = dtct_type_cd;
             this.stlnDstc = stln_dstc;
@@ -259,6 +272,7 @@ public class TbVdsDtctDto implements Serializable {
             this.minOcpyRate = min_ocpy_rate;
             this.maxSped = max_sped;
             this.minSped = min_sped;
+            this.linkId = linkId;
         }
 
         public TbVdsDtct toEntity() {

+ 65 - 0
src/main/java/com/its/api/its/model/dto/vds/TbVdsDtctLinkRltnDto.java

@@ -0,0 +1,65 @@
+package com.its.api.its.model.dto.vds;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.vds.TbVdsDtctLinkRltn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * VDS 검지기 링크 관계 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbVdsDtctLinkRltnDto(VDS 검지기 링크 관계)")
+public class TbVdsDtctLinkRltnDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("검지기 번호")  // N VARCHAR(8)
+    @JsonProperty("dtct_nmbr")
+    private String dtctNmbr;
+
+    @ApiModelProperty("링크ID")  // N NUMBER(10)
+    @JsonProperty("link_id")
+    private Long linkId;
+
+    // Code Description Field
+    @ApiModel("TbVdsDtctLinkRltnUpdReq(VDS 검지기 링크 관계 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbVdsDtctLinkRltnUpdReq {
+
+        @ApiModelProperty("검지기 번호, Nullable = N, VARCHAR(8)")  // N VARCHAR(8)
+        @JsonProperty("dtct_nmbr")
+        @Size(min=1, max=8)
+        private String dtctNmbr;
+
+        @ApiModelProperty("링크ID, Nullable = N, NUMBER(10)")  // N NUMBER(10)
+        @JsonProperty("link_id")
+        @Positive
+        private Long linkId;
+
+        @Builder
+        public TbVdsDtctLinkRltnUpdReq(String dtct_nmbr, Long link_id) {
+            this.dtctNmbr = dtct_nmbr;
+            this.linkId = link_id;
+        }
+
+        public TbVdsDtctLinkRltn toEntity() {
+            TbVdsDtctLinkRltn entity = TbVdsDtctLinkRltn.builder()
+                    .dtctNmbr(this.dtctNmbr)
+                    .linkId(this.linkId)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
+}

+ 86 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvPset.java

@@ -0,0 +1,86 @@
+package com.its.api.its.model.entity.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvPsetDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * CCTV 프리셋 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("CCTV 프리셋")
+@Entity
+@Table(name = "TB_CCTV_PSET")
+@IdClass(TbCctvPsetKey.class)
+public class TbCctvPset implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("CCTV 관리 번호")  // N NUMBER(10)
+    @Id
+    @Column(name = "CCTV_MNGM_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long cctvMngmNmbr;
+
+    @ApiModelProperty("프리셋 번호")  // N VARCHAR(3)
+    @Id
+    @Column(name = "PSET_NMBR", nullable = false, length = 3)
+    private String psetNmbr;
+
+    @ApiModelProperty("팬 값")  // Y NUMBER(4)
+    @Column(name = "PAN_VAL", columnDefinition = "NUMBER", length = 4)
+    private Integer panVal;
+
+    @ApiModelProperty("틸트 값")  // Y NUMBER(4)
+    @Column(name = "TILT_VAL", columnDefinition = "NUMBER", length = 4)
+    private Integer tiltVal;
+
+    @ApiModelProperty("줌 값")  // Y NUMBER(4)
+    @Column(name = "ZOOM_VAL", columnDefinition = "NUMBER", length = 4)
+    private Integer zoomVal;
+
+    @ApiModelProperty("초점 값")  // Y NUMBER(4)
+    @Column(name = "FOCS_VAL", columnDefinition = "NUMBER", length = 4)
+    private Integer focsVal;
+
+    @ApiModelProperty("프리셋 명")  // Y VARCHAR(100)
+    @Column(name = "PSET_NM", length = 100)
+    private String psetNm;
+
+    @ApiModelProperty("디폴트 여부")  // Y CHAR(1)
+    @Column(name = "DFLT_YN", columnDefinition = "CHAR", length = 1)
+    private String dfltYn;
+
+    public TbCctvPsetDto toDto() {
+        return TbCctvPsetDto.builder()
+                .cctvMngmNmbr(this.cctvMngmNmbr)
+                .psetNmbr(this.psetNmbr)
+                .panVal(this.panVal)
+                .tiltVal(this.tiltVal)
+                .zoomVal(this.zoomVal)
+                .focsVal(this.focsVal)
+                .psetNm(this.psetNm)
+                .dfltYn(this.dfltYn)
+                .build();
+    }
+
+    public TbCctvPset(Long cctvMngmNmbr, String psetNmbr) {
+        this.cctvMngmNmbr = cctvMngmNmbr;
+        this.psetNmbr = psetNmbr;
+    }
+
+    public void updateInfo(TbCctvPsetDto.TbCctvPsetUpdReq req) {
+        this.panVal = req.getPanVal();
+        this.tiltVal = req.getTiltVal();
+        this.zoomVal = req.getZoomVal();
+        this.focsVal = req.getFocsVal();
+        this.psetNm = req.getPsetNm();
+        this.dfltYn = req.getDfltYn();
+    }
+
+}

+ 25 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvPsetKey.java

@@ -0,0 +1,25 @@
+package com.its.api.its.model.entity.cctv;
+
+import lombok.Data;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * CCTV 프리셋 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbCctvPsetKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // CCTV_MNGM_NMBR, CCTV 관리 번호  // N NUMBER(10)
+    private Long cctvMngmNmbr;
+
+    // PSET_NMBR, 프리셋 번호  // N VARCHAR(3)
+    private String psetNmbr;
+
+}

+ 63 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvScnr.java

@@ -0,0 +1,63 @@
+package com.its.api.its.model.entity.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvScnrDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * CCTV 시나리오 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("CCTV 시나리오")
+@Entity
+@Table(name = "TB_CCTV_SCNR")
+@IdClass(TbCctvScnrKey.class)
+public class TbCctvScnr implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("CCTV 관리 번호")  // N NUMBER(10)
+    @Id
+    @Column(name = "CCTV_MNGM_NMBR", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long cctvMngmNmbr;
+
+    @ApiModelProperty("시작 시각")  // N VARCHAR(6)
+    @Id
+    @Column(name = "STRT_HMS", nullable = false, length = 6)
+    private String strtHms;
+
+    @ApiModelProperty("종료 시각")  // N VARCHAR(6)
+    @Id
+    @Column(name = "END_HMS", nullable = false, length = 6)
+    private String endHms;
+
+    @ApiModelProperty("프리셋 번호")  // Y VARCHAR(3)
+    @Column(name = "PSET_NMBR", length = 3)
+    private String psetNmbr;
+
+    public TbCctvScnrDto toDto() {
+        return TbCctvScnrDto.builder()
+                .cctvMngmNmbr(this.cctvMngmNmbr)
+                .strtHms(this.strtHms)
+                .endHms(this.endHms)
+                .psetNmbr(this.psetNmbr)
+                .build();
+    }
+
+    public TbCctvScnr(Long cctvMngmNmbr, String strtHms, String endHms) {
+        this.cctvMngmNmbr = cctvMngmNmbr;
+        this.strtHms = strtHms;
+        this.endHms = endHms;
+    }
+
+    public void updateInfo(TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        this.psetNmbr = req.getPsetNmbr();
+    }
+
+}

+ 28 - 0
src/main/java/com/its/api/its/model/entity/cctv/TbCctvScnrKey.java

@@ -0,0 +1,28 @@
+package com.its.api.its.model.entity.cctv;
+
+import lombok.Data;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * CCTV 시나리오 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbCctvScnrKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // CCTV_MNGM_NMBR, CCTV 관리 번호  // N NUMBER(10)
+    private Long cctvMngmNmbr;
+
+    // STRT_HMS, 시작 시각  // N VARCHAR(6)
+    private String strtHms;
+
+    // END_HMS, 종료 시각  // N VARCHAR(6)
+    private String endHms;
+
+}

+ 9 - 0
src/main/java/com/its/api/its/model/entity/vds/TbVdsDtct.java

@@ -134,6 +134,12 @@ public class TbVdsDtct implements Serializable {
     @NotFound(action = NotFoundAction.IGNORE)
     private TbVdsCtlr vds = new TbVdsCtlr();
 
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="DTCT_NMBR", referencedColumnName = "DTCT_NMBR")
+    @NotFound(action = NotFoundAction.IGNORE)
+    private TbVdsDtctLinkRltn link = new TbVdsDtctLinkRltn();
+
     public TbVdsDtctDto toDto() {
         TbVdsDtctDto dto = TbVdsDtctDto.builder()
                 .dtctNmbr(this.dtctNmbr)
@@ -165,6 +171,9 @@ public class TbVdsDtct implements Serializable {
                 .build();
 
         dto.setDtctTypeDesc(CodeManager.getCodeDescShort(CodeManager.DTCT_TYPE_CD, this.dtctTypeCd));
+        if (this.link != null) {
+            dto.setLinkId(this.link.getLinkId());
+        }
 
         return dto;
     }

+ 45 - 0
src/main/java/com/its/api/its/model/entity/vds/TbVdsDtctLinkRltn.java

@@ -0,0 +1,45 @@
+package com.its.api.its.model.entity.vds;
+
+import com.its.api.its.model.dto.vds.TbVdsDtctLinkRltnDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+/**
+ * VDS 검지기 링크 관계 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("VDS 검지기 링크 관계")
+@Entity
+@Table(name = "TB_VDS_DTCT_LINK_RLTN")
+//@IdClass(TbVdsDtctLinkRltnKey.class)
+public class TbVdsDtctLinkRltn implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("검지기 번호")  // N VARCHAR(8)
+    @Id
+    @Column(name = "DTCT_NMBR", nullable = false, length = 8)
+    private String dtctNmbr;
+
+    @ApiModelProperty("링크ID")  // N NUMBER(10)
+    //@Id
+    @Column(name = "LINK_ID", nullable = false, columnDefinition = "NUMBER", length = 10)
+    private Long linkId;
+
+    public TbVdsDtctLinkRltnDto toDto() {
+        return TbVdsDtctLinkRltnDto.builder()
+                .dtctNmbr(this.dtctNmbr)
+                .linkId(this.linkId)
+                .build();
+    }
+
+    public void updateInfo(TbVdsDtctLinkRltnDto.TbVdsDtctLinkRltnUpdReq req) {
+    }
+
+}

+ 25 - 0
src/main/java/com/its/api/its/model/entity/vds/TbVdsDtctLinkRltnKey.java

@@ -0,0 +1,25 @@
+package com.its.api.its.model.entity.vds;
+
+import lombok.Data;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * VDS 검지기 링크 관계 Key Class
+ */
+@Data
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+public class TbVdsDtctLinkRltnKey implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // DTCT_NMBR, 검지기 번호  // N VARCHAR(8)
+    private String dtctNmbr;
+
+    // LINK_ID, 링크ID  // N NUMBER(10)
+    private Long linkId;
+
+}

+ 12 - 0
src/main/java/com/its/api/its/repository/cctv/TbCctvPsetRepository.java

@@ -0,0 +1,12 @@
+package com.its.api.its.repository.cctv;
+
+import com.its.api.its.model.entity.cctv.TbCctvPset;
+import com.its.api.its.model.entity.cctv.TbCctvPsetKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TbCctvPsetRepository extends JpaRepository<TbCctvPset, TbCctvPsetKey>, JpaSpecificationExecutor<TbCctvPset> {
+
+}

+ 12 - 0
src/main/java/com/its/api/its/repository/cctv/TbCctvScnrRepository.java

@@ -0,0 +1,12 @@
+package com.its.api.its.repository.cctv;
+
+import com.its.api.its.model.entity.cctv.TbCctvScnr;
+import com.its.api.its.model.entity.cctv.TbCctvScnrKey;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TbCctvScnrRepository extends JpaRepository<TbCctvScnr, TbCctvScnrKey>, JpaSpecificationExecutor<TbCctvScnr> {
+
+}

+ 0 - 16
src/main/java/com/its/api/its/repository/dashboard/facility/BisMapper.java

@@ -1,16 +0,0 @@
-package com.its.api.its.repository.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.BisFacilitySttsDto;
-import com.its.api.its.model.dto.dashboard.facility.BitCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.ProcessSttsDto;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-@Mapper
-public interface BisMapper {
-
-    List<ProcessSttsDto> findAllProcessStts();
-    List<BisFacilitySttsDto> findAllFacilityStts();
-    List<BitCommSttsDto> findAllBitComm();
-}

+ 0 - 16
src/main/java/com/its/api/its/repository/dashboard/facility/ItsMapper.java

@@ -1,16 +0,0 @@
-package com.its.api.its.repository.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.*;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-@Mapper
-public interface ItsMapper {
-
-    List<ItsFacilitySttsDto> findAllFacilityStts();
-    List<VdsCommSttsDto> findAllVdsComm();
-    List<VmsCommSttsDto> findAllVmsComm();
-    List<CctvCommSttsDto> findAllCctvComm();
-
-}

+ 0 - 15
src/main/java/com/its/api/its/repository/dashboard/facility/RseMapper.java

@@ -1,15 +0,0 @@
-package com.its.api.its.repository.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.RseCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.RseFacilitySttsDto;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-@Mapper
-public interface RseMapper {
-
-    List<RseFacilitySttsDto> findAllFacilityStts();
-    List<RseCommSttsDto> findAllCommStts();
-
-}

+ 11 - 0
src/main/java/com/its/api/its/repository/vds/TbVdsDtctLinkRltnRepository.java

@@ -0,0 +1,11 @@
+package com.its.api.its.repository.vds;
+
+import com.its.api.its.model.entity.vds.TbVdsDtctLinkRltn;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TbVdsDtctLinkRltnRepository extends JpaRepository<TbVdsDtctLinkRltn, String/*TbVdsDtctLinkRltnKey*/>, JpaSpecificationExecutor<TbVdsDtctLinkRltn> {
+
+}

+ 1 - 1
src/main/java/com/its/api/its/repository/vds/TbVdsDtctRepository.java

@@ -11,7 +11,7 @@ import java.util.List;
 @Repository
 public interface TbVdsDtctRepository extends JpaRepository<TbVdsDtct, String>, JpaSpecificationExecutor<TbVdsDtct> {
 
-    @Query("select p from TbVdsDtct p inner join fetch p.vds")
+    @Query("select p from TbVdsDtct p inner join fetch p.vds left outer join p.link link")
     List<TbVdsDtct> findAll();
 
 }

+ 99 - 0
src/main/java/com/its/api/its/service/cctv/TbCctvPsetService.java

@@ -0,0 +1,99 @@
+package com.its.api.its.service.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvPsetDto;
+import com.its.api.its.model.entity.cctv.TbCctvPset;
+import com.its.api.its.model.entity.cctv.TbCctvPsetKey;
+import com.its.api.its.repository.cctv.TbCctvPsetRepository;
+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;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbCctvPsetService {
+
+    private final TbCctvPsetRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbCctvPset requireOne(TbCctvPsetKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbCctvPsetDto> findAll() {
+        List<TbCctvPsetDto> result = new ArrayList<>();
+        List<TbCctvPset> data = this.repo.findAll();
+        for (TbCctvPset entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbCctvPsetDto findById(TbCctvPsetKey id) {
+        TbCctvPset entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbCctvPsetDto updateById(TbCctvPsetKey id, TbCctvPsetDto.TbCctvPsetUpdReq req) {
+        TbCctvPset entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbCctvPsetDto> mergeInfoList(List<TbCctvPsetDto.TbCctvPsetUpdReq> reqList) {
+        List<TbCctvPsetDto> result = new ArrayList<>();
+        for (TbCctvPsetDto.TbCctvPsetUpdReq req : reqList) {
+            TbCctvPset obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbCctvPsetDto mergeInfo(TbCctvPsetDto.TbCctvPsetUpdReq req) {
+        TbCctvPset obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbCctvPsetDto deleteById(TbCctvPsetKey id) {
+        TbCctvPset entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbCctvPsetDto> deleteByIds(List<TbCctvPsetKey> ids) {
+        List<TbCctvPsetDto> result = new ArrayList<>();
+        for (TbCctvPsetKey id : ids) {
+            Optional<TbCctvPset> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 99 - 0
src/main/java/com/its/api/its/service/cctv/TbCctvScnrService.java

@@ -0,0 +1,99 @@
+package com.its.api.its.service.cctv;
+
+import com.its.api.its.model.dto.cctv.TbCctvScnrDto;
+import com.its.api.its.model.entity.cctv.TbCctvScnr;
+import com.its.api.its.model.entity.cctv.TbCctvScnrKey;
+import com.its.api.its.repository.cctv.TbCctvScnrRepository;
+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;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbCctvScnrService {
+
+    private final TbCctvScnrRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbCctvScnr requireOne(TbCctvScnrKey id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbCctvScnrDto> findAll() {
+        List<TbCctvScnrDto> result = new ArrayList<>();
+        List<TbCctvScnr> data = this.repo.findAll();
+        for (TbCctvScnr entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbCctvScnrDto findById(TbCctvScnrKey id) {
+        TbCctvScnr entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbCctvScnrDto updateById(TbCctvScnrKey id, TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        TbCctvScnr entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbCctvScnrDto> mergeInfoList(List<TbCctvScnrDto.TbCctvScnrUpdReq> reqList) {
+        List<TbCctvScnrDto> result = new ArrayList<>();
+        for (TbCctvScnrDto.TbCctvScnrUpdReq req : reqList) {
+            TbCctvScnr obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbCctvScnrDto mergeInfo(TbCctvScnrDto.TbCctvScnrUpdReq req) {
+        TbCctvScnr obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbCctvScnrDto deleteById(TbCctvScnrKey id) {
+        TbCctvScnr entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbCctvScnrDto> deleteByIds(List<TbCctvScnrKey> ids) {
+        List<TbCctvScnrDto> result = new ArrayList<>();
+        for (TbCctvScnrKey id : ids) {
+            Optional<TbCctvScnr> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 0 - 60
src/main/java/com/its/api/its/service/dashboard/facility/BisService.java

@@ -1,60 +0,0 @@
-package com.its.api.its.service.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.BisFacilitySttsDto;
-import com.its.api.its.model.dto.dashboard.facility.BitCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.ProcessSttsDto;
-import com.its.api.its.repository.dashboard.facility.BisMapper;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class BisService {
-
-    private final BisMapper mapper;
-
-    public List<ProcessSttsDto> findAllProcessStts() {
-        List<ProcessSttsDto> result = this.mapper.findAllProcessStts();
-        if (result != null) {
-	        result.forEach(obj -> {
-	            if (("0").equals(obj.getRUNST())) {
-	                obj.setCOMST("0");
-	                obj.setDBSTS("0");
-	            }
-	        });
-	    }
-        return result;
-    }
-
-    public List<BisFacilitySttsDto> findAllFacilityStts() {
-        List<BisFacilitySttsDto> result = this.mapper.findAllFacilityStts();
-        if (result != null) {
-            result.forEach(obj -> {
-                obj.setERRCNT(obj.getTOTCNT() - obj.getNORCNT());
-            });
-        }
-        return result;
-    }
-
-    public List<BitCommSttsDto> findAllBitComm() {
-        List<BitCommSttsDto> result = this.mapper.findAllBitComm();
-        if (result != null) {
-            result.forEach(obj -> {
-                if (("0").equals(obj.getWCOMMSTATUS())) {
-                    obj.setCOMM_DESC("장애");
-                }
-                else if (("1").equals(obj.getWCOMMSTATUS())) {
-                    obj.setCOMM_DESC("정상");
-                }
-                else {
-                    obj.setCOMM_DESC("?");
-                }
-            });
-        }
-        return result;
-    }
-}

+ 0 - 94
src/main/java/com/its/api/its/service/dashboard/facility/ItsService.java

@@ -1,94 +0,0 @@
-package com.its.api.its.service.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.*;
-import com.its.api.its.repository.dashboard.facility.ItsMapper;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class ItsService {
-
-    private final ItsMapper mapper;
-
-    public List<ItsFacilitySttsDto> findAllFacilityStts() {
-        List<ItsFacilitySttsDto> result = this.mapper.findAllFacilityStts();
-        if (result != null) {
-	        result.forEach(obj -> {
-	            obj.setERRCNT(obj.getTOTCNT() - obj.getNORCNT());
-	        });
-	    }
-        return result;
-    }
-
-    public List<VdsCommSttsDto> findAllVdsComm() {
-        List<VdsCommSttsDto> result = this.mapper.findAllVdsComm();
-        if (result != null) {
-            result.forEach(obj -> {
-                if (("CMS0").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("정상");
-                }
-                else if (("CMS1").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("장애");
-                }
-                else {
-                    obj.setCOMM_DESC("?");
-                }
-
-                if (("CMS0").equals(obj.getCOMM_CD())) {
-                    if (obj.getCOLCNT() == 0) {
-                        obj.setCOL_DESC("이상");
-                    }
-                    else {
-                        obj.setCOL_DESC("정상");
-                    }
-                }
-                else {
-                    obj.setCOL_DESC("?");
-                }
-            });
-        }
-        return result;
-    }
-
-    public List<VmsCommSttsDto> findAllVmsComm() {
-        List<VmsCommSttsDto> result = this.mapper.findAllVmsComm();
-        if (result != null) {
-            result.forEach(obj -> {
-                if (("CMS0").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("정상");
-                }
-                else if (("CMS1").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("장애");
-                }
-                else {
-                    obj.setCOMM_DESC("?");
-                }
-            });
-        }
-        return result;
-    }
-
-    public List<CctvCommSttsDto> findAllCctvComm() {
-        List<CctvCommSttsDto> result = this.mapper.findAllCctvComm();
-        if (result != null) {
-            result.forEach(obj -> {
-                if (("CMS0").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("정상");
-                }
-                else if (("CMS1").equals(obj.getCOMM_CD())) {
-                    obj.setCOMM_DESC("장애");
-                }
-                else {
-                    obj.setCOMM_DESC("?");
-                }
-            });
-        }
-        return result;
-    }
-
-}

+ 0 - 26
src/main/java/com/its/api/its/service/dashboard/facility/RseService.java

@@ -1,26 +0,0 @@
-package com.its.api.its.service.dashboard.facility;
-
-import com.its.api.its.model.dto.dashboard.facility.RseCommSttsDto;
-import com.its.api.its.model.dto.dashboard.facility.RseFacilitySttsDto;
-import com.its.api.its.repository.dashboard.facility.RseMapper;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class RseService {
-
-    private final RseMapper mapper;
-
-    public List<RseFacilitySttsDto> findAllFacilityStts() {
-        return this.mapper.findAllFacilityStts();
-    }
-
-    public List<RseCommSttsDto> findAllCommStts() {
-        return this.mapper.findAllCommStts();
-    }
-}

+ 99 - 0
src/main/java/com/its/api/its/service/vds/TbVdsDtctLinkRltnService.java

@@ -0,0 +1,99 @@
+package com.its.api.its.service.vds;
+
+import com.its.api.its.model.dto.vds.TbVdsDtctLinkRltnDto;
+import com.its.api.its.model.entity.vds.TbVdsDtctLinkRltn;
+import com.its.api.its.model.entity.vds.TbVdsDtctLinkRltnKey;
+import com.its.api.its.repository.vds.TbVdsDtctLinkRltnRepository;
+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;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbVdsDtctLinkRltnService {
+
+    private final TbVdsDtctLinkRltnRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbVdsDtctLinkRltn requireOne(TbVdsDtctLinkRltnKey id) {
+        return this.repo.findById(id.getDtctNmbr())
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbVdsDtctLinkRltnDto> findAll() {
+        List<TbVdsDtctLinkRltnDto> result = new ArrayList<>();
+        List<TbVdsDtctLinkRltn> data = this.repo.findAll();
+        for (TbVdsDtctLinkRltn entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbVdsDtctLinkRltnDto findById(TbVdsDtctLinkRltnKey id) {
+        TbVdsDtctLinkRltn entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbVdsDtctLinkRltnDto updateById(TbVdsDtctLinkRltnKey id, TbVdsDtctLinkRltnDto.TbVdsDtctLinkRltnUpdReq req) {
+        TbVdsDtctLinkRltn entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbVdsDtctLinkRltnDto> mergeInfoList(List<TbVdsDtctLinkRltnDto.TbVdsDtctLinkRltnUpdReq> reqList) {
+        List<TbVdsDtctLinkRltnDto> result = new ArrayList<>();
+        for (TbVdsDtctLinkRltnDto.TbVdsDtctLinkRltnUpdReq req : reqList) {
+            TbVdsDtctLinkRltn obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbVdsDtctLinkRltnDto mergeInfo(TbVdsDtctLinkRltnDto.TbVdsDtctLinkRltnUpdReq req) {
+        TbVdsDtctLinkRltn obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbVdsDtctLinkRltnDto deleteById(TbVdsDtctLinkRltnKey id) {
+        TbVdsDtctLinkRltn entity = requireOne(id);
+        this.repo.deleteById(id.getDtctNmbr());
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbVdsDtctLinkRltnDto> deleteByIds(List<TbVdsDtctLinkRltnKey> ids) {
+        List<TbVdsDtctLinkRltnDto> result = new ArrayList<>();
+        for (TbVdsDtctLinkRltnKey id : ids) {
+            Optional<TbVdsDtctLinkRltn> obj = this.repo.findById(id.getDtctNmbr());
+            if (obj.isPresent()) {
+                this.repo.deleteById(id.getDtctNmbr());
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}

+ 37 - 4
src/main/java/com/its/api/its/service/vds/TbVdsDtctService.java

@@ -2,6 +2,8 @@ package com.its.api.its.service.vds;
 
 import com.its.api.its.model.dto.vds.TbVdsDtctDto;
 import com.its.api.its.model.entity.vds.TbVdsDtct;
+import com.its.api.its.model.entity.vds.TbVdsDtctLinkRltn;
+import com.its.api.its.repository.vds.TbVdsDtctLinkRltnRepository;
 import com.its.api.its.repository.vds.TbVdsDtctRepository;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -19,6 +21,7 @@ import java.util.Optional;
 public class TbVdsDtctService {
 
     private final TbVdsDtctRepository repo;
+    private final TbVdsDtctLinkRltnRepository linkRltnRepo;
 
     // 데이터 1건 조회, 없으면 exception
     private TbVdsDtct requireOne(String id) {
@@ -44,39 +47,68 @@ public class TbVdsDtctService {
         return entity.toDto();
     }
 
-    // 데이터 변경
+    /**
+     * 검지기 정보 업데이트
+     * @param id
+     * @param req
+     * @return
+     */
     @Transactional
     public TbVdsDtctDto updateById(String id, TbVdsDtctDto.TbVdsDtctMstrUpdReq req) {
         TbVdsDtct entity = requireOne(id);
         entity.updateInfo(req);
         this.repo.save(entity);
+
+        TbVdsDtctLinkRltn linkRltn = new TbVdsDtctLinkRltn(req.getDtctNmbr(), req.getLinkId());
+        this.linkRltnRepo.save(linkRltn);
+
         return entity.toDto();
     }
 
-    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    /**
+     * 검지기 정보 목록 저장
+     * @param reqList
+     * @return
+     */
     @Transactional
     public List<TbVdsDtctDto> mergeInfoList(List<TbVdsDtctDto.TbVdsDtctMstrUpdReq> reqList) {
         List<TbVdsDtctDto> result = new ArrayList<>();
         for (TbVdsDtctDto.TbVdsDtctMstrUpdReq req : reqList) {
             TbVdsDtct obj = req.toEntity();
             this.repo.save(obj);
+
+            TbVdsDtctLinkRltn linkRltn = new TbVdsDtctLinkRltn(req.getDtctNmbr(), req.getLinkId());
+            this.linkRltnRepo.save(linkRltn);
+
             result.add(obj.toDto());
         }
         return result;
     }
 
-    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    /**
+     * 검지기 정보 저장
+     * @param req
+     * @return
+     */
     @Transactional
     public TbVdsDtctDto mergeInfo(TbVdsDtctDto.TbVdsDtctMstrUpdReq req) {
         TbVdsDtct obj = req.toEntity();
         this.repo.save(obj);
+
+        TbVdsDtctLinkRltn linkRltn = new TbVdsDtctLinkRltn(req.getDtctNmbr(), req.getLinkId());
+        this.linkRltnRepo.save(linkRltn);
         return obj.toDto();
     }
 
-    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    /**
+     * 검지기 정보 개별 삭제
+     * @param id
+     * @return
+     */
     @Transactional
     public TbVdsDtctDto deleteById(String id) {
         TbVdsDtct entity = requireOne(id);
+        this.linkRltnRepo.deleteById(id);
         this.repo.deleteById(id);
         return entity.toDto();
     }
@@ -86,6 +118,7 @@ public class TbVdsDtctService {
     public List<TbVdsDtctDto> deleteByIds(List<String> ids) {
         List<TbVdsDtctDto> result = new ArrayList<>();
         for (String id : ids) {
+            this.linkRltnRepo.deleteById(id);
             Optional<TbVdsDtct> obj = this.repo.findById(id);
             if (obj.isPresent()) {
                 this.repo.deleteById(id);

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

@@ -0,0 +1,36 @@
+spring:
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  utis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: rutis
+      password: rutis
+  utis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  bis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  bis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect

+ 37 - 0
src/main/resources/application-prod.yml

@@ -0,0 +1,37 @@
+spring:
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  utis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: rutis
+      password: rutis
+  utis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  bis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  bis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+

+ 136 - 0
src/main/resources/application-z-backup.yml

@@ -0,0 +1,136 @@
+application:
+  process:
+    id: OPER00
+    name: ITS Operating Server
+    center-id: L08
+    region-code: 228
+    region-name: 용인시
+
+server:
+  port: 80
+  shutdown: graceful
+  error:
+    whitelabel:
+      enabled: true
+    include-exception: false
+    include-stacktrace: never
+  servlet:
+    session:
+      timeout: 300
+
+spring:
+  main:
+    banner-mode: off
+  application:
+    name: its-op-server
+  jackson:
+    property-naming-strategy: LOWER_CASE
+  datasource:
+    hikari:
+      auto-commit: true
+      connection-test-query: SELECT 1 FROM DUAL
+      minimum-idle: 10
+      maximum-pool-size: 50
+      #transaction-isolation: READ_COMMITTED
+      pool-name: pool-its-op-server
+  jpa:
+    #database: Oracle
+    properties:
+      hibernate:
+        format_sql: true
+        use_sql_columns: true
+        hbm2ddl.auto: validate
+        implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
+        physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+    open-in-view: false
+    show-sql: true
+    output:
+      ansi:
+        enabled: always
+    hibernate:
+      ddl-auto: none
+
+logging:
+  level:
+    #org.hibernate.SQL: INFO
+    org:
+      springframework:
+        jdbc:
+          core:
+            JdbcTemplate: DEBUG
+            StatementCreatorUtils: TRACE
+      hibernate:
+        type:
+          descriptor:
+            sql:
+              BasicBinder: TRACE
+
+---
+spring:
+  config:
+    activate:
+      on-profile: dev
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  utis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: rutis
+      password: rutis
+  utis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+  bis-datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+  bis-jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+
+---
+spring:
+  config:
+    activate:
+      on-profile: devxx
+  datasource:
+    hikari:
+      driver-class-name: oracle.jdbc.OracleDriver
+      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1521:HANTE
+      username: yiits
+      password: yiits
+  jpa:
+    database-platform: org.hibernate.dialect.Oracle10gDialect
+    properties:
+      hibernate:
+        dialect: org.hibernate.dialect.Oracle10gDialect
+---
+spring:
+  config:
+    activate:
+      on-profile: prod
+  datasource:
+    hikari:
+      driver-class-name: com.tmax.tibero.jdbc.TbDriver
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      username: yiits
+      password: yiits
+

+ 41 - 0
src/main/resources/application.properties.back

@@ -0,0 +1,41 @@
+## application
+application.process.id=OPER00
+application.process.name=ITS Operating Server
+application.process.center-id=L08
+application.process.region-code=228
+application.process.region-name=용인시
+
+## server
+server.port=80
+server.shutdown=graceful
+server.error.whitelabel.enabled=true
+server.error.include-exception=false
+server.error.include-stacktrace=never
+server.servlet.session.timeout=300
+
+## spring profiles
+spring.profiles.active=dev
+
+spring.application.name=its-op-server
+spring.main.banner-mode=off
+spring.jackson.property-naming-strategy=LOWER_CASE
+spring.datasource.hikari.auto-commit=true
+spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL
+spring.datasource.hikari.minimum-idle=10
+spring.datasource.hikari.maximum-pool-size=50
+spring.datasource.hikari.pool-name=pool-its-op-server
+#spring.datasource.hikari.transaction-isolation=READ_COMMITTED
+spring.jpa.properties.hibernate.format_sql=true
+spring.jpa.properties.hibernate.use_sql_columns=true
+spring.jpa.properties.hibernate.hbm2ddl.auto=validate
+spring.jpa.properties.hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
+spring.jpa.properties.hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+spring.jpa.properties.open-in-view=false
+spring.jpa.properties.show-sql=true
+spring.jpa.properties.output.ansi.enabled=always
+spring.jpa.properties.hibernate.ddl-auto=none
+
+#logging.level.org.hibernate.SQL=INFO
+logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
+logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
+logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

+ 9 - 87
src/main/resources/application.yml

@@ -19,45 +19,37 @@ server:
       timeout: 300
 
 spring:
+  profiles:
+    active: dev
   main:
     banner-mode: off
   application:
     name: its-op-server
   jackson:
     property-naming-strategy: LOWER_CASE
-  #LOWER_CASE
-  #SNAKE_CASE
-  #UPPER_CAMEL_CASE
-  #LOWER_CAMEL_CASE
-  #LOWER_CASE
-  #KEBAB_CASE
   datasource:
     hikari:
       auto-commit: true
       connection-test-query: SELECT 1 FROM DUAL
       minimum-idle: 10
       maximum-pool-size: 50
-      #transaction-isolation: READ_COMMITTED
       pool-name: pool-its-op-server
   jpa:
-    database: Oracle
+    #database: Oracle
+    open-in-view: false
+    show-sql: true
+    hibernate:
+      ddl-auto: none
     properties:
       hibernate:
-        #jdbc:
-        #  batch-size: 1000
-        #order_insert: true
-        #order_update: true
         format_sql: true
+        use_sql_columns: true
+        hbm2ddl.auto: validate
         implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
         physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
-        hbm2ddl.auto: validate
-    open-in-view: false
-    show-sql: true
     output:
       ansi:
         enabled: always
-    hibernate:
-      ddl-auto: validate
 
 logging:
   level:
@@ -73,73 +65,3 @@ logging:
           descriptor:
             sql:
               BasicBinder: TRACE
-
----
-spring:
-  config:
-    activate:
-      on-profile: dev
-  datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: yiits
-      password: yiits
-  jpa:
-    database-platform: org.hibernate.dialect.Oracle10gDialect
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.Oracle10gDialect
-
-  utis-datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: rutis
-      password: rutis
-  utis-jpa:
-    database-platform: org.hibernate.dialect.Oracle10gDialect
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.Oracle10gDialect
-
-  bis-datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: yiits
-      password: yiits
-  bis-jpa:
-    database-platform: org.hibernate.dialect.Oracle10gDialect
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.Oracle10gDialect
-
----
-spring:
-  config:
-    activate:
-      on-profile: devxx
-  datasource:
-    hikari:
-      driver-class-name: oracle.jdbc.OracleDriver
-      jdbc-url: jdbc:oracle:thin:@115.91.94.42:1521:HANTE
-      username: yiits
-      password: yiits
-  jpa:
-    database-platform: org.hibernate.dialect.Oracle10gDialect
-    properties:
-      hibernate:
-        dialect: org.hibernate.dialect.Oracle10gDialect
----
-spring:
-  config:
-    activate:
-      on-profile: prod
-  datasource:
-    hikari:
-      driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: yiits
-      password: yiits
-

+ 0 - 109
src/main/resources/mybatis/mapper/facility/BisMapper.xml

@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.its.api.its.repository.dashboard.facility.BisMapper">
-
-    <select id="findAllProcessStts" resultType="com.its.api.its.model.dto.dashboard.facility.ProcessSttsDto">
-        <![CDATA[
-        SELECT A.SYST_ID, A.SYST_NM,
-               NVL(B.RUNST, 2) AS RUNST, NVL(B.COMST, 2) AS COMST, NVL(B.DBSTS, 2) AS DBSTS
-        FROM (SELECT DECODE(PROCESSID, 10902, 10901,
-                            11002, 11001,
-                            11202, 11201,
-                            11102, 11101, PROCESSID) AS SYST_ID,  PROCESSNAME AS SYST_NM
-              FROM PROCESS
-              WHERE PROCESSID IN (90201, 90202, 90203, 90204, 90205,
-                                  90101, 90102, 90103, 90104, 90105,
-                                  110201,
-                                  110101,
-                                  80101, 80102,
-                                  10901,
-                                  11001,
-                                  11101,
-                                  11201)
-             ) A,
-             (SELECT PROCESSID AS SYST_ID,
-                     NVL(SUM(DECODE(PROCESSSTATEKIND, '4', DECODE(STAT, '0', 0, 1), NULL) ), 0) AS RUNST,
-                     NVL(SUM(DECODE(PROCESSSTATEKIND, '1', DECODE(STAT, '0', 0, 1), NULL) ), 2) AS COMST,
-                     NVL(SUM(DECODE(PROCESSSTATEKIND, '2', DECODE(STAT, '0', 0, 1), NULL) ), 2) AS DBSTS
-              FROM (SELECT PROCESSID, PROCESSSTATEKIND, COLLECTDATE, PROCESSSTATUS STAT
-                    FROM PROCESSSTATUS_HISTORY
-                    WHERE 1=1
-                      AND PROCESSSTATEKIND IN ('1', '2', '4')
-                   )
-              GROUP BY PROCESSID
-             ) B
-        WHERE 1=1
-          AND A.SYST_ID = B.SYST_ID(+)
-        ]]>
-    </select>
-
-    <select id="findAllFacilityStts" resultType="com.its.api.its.model.dto.dashboard.facility.BisFacilitySttsDto">
-        <![CDATA[
-        SELECT 'BIT' AS TYPE, COUNT(1) AS TOTCNT,
-               NVL(SUM(NVL(NORCNT,  0)), 0) AS NORCNT,
-               NVL(SUM(NVL(WNORCNT, 0)), 0) AS WNORCNT,
-               NVL(SUM(NVL(DOORCNT, 0)), 0) AS DOORCNT,
-               NVL(SUM(NVL(FANCNT,  0)), 0) AS FANCNT,
-               NVL(SUM(NVL(HETRCNT, 0)), 0) AS HETRCNT,
-               NVL(SUM(NVL(MOTRCNT, 0)), 0) AS MOTRCNT
-        FROM BIT A,
-             (SELECT BITID, DECODE(WCOMMSTATUS, '1', 1, 0) AS NORCNT, DECODE(WCOMMSTATUS, '1', 1, 0) AS WNORCNT,
-                     DECODE(WCOMMSTATUS, '1', DECODE(DOORSTATUS,     '0', 1, 0), 0) AS DOORCNT,
-                     DECODE(WCOMMSTATUS, '1', DECODE(FANSTATUS,      '1', 0, 1), 0) AS FANCNT,
-                     DECODE(WCOMMSTATUS, '1', DECODE(HEATEROPSTATUS, '0', 1, 0), 0) AS HETRCNT,
-                     DECODE(WCOMMSTATUS, '1', DECODE(MONITORSTATUS,  '0', 1, 0), 0) AS MOTRCNT
-              FROM (SELECT *
-                    FROM BITSTATUS_HISTORY
-                    WHERE 1=1
-                      AND RECORDDATE >= TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD')
-                   ) B
-              WHERE (BITID, RECORDDATE, RECORDTIMESTAMP) IN (SELECT BITID, MAX(RECORDDATE), MAX(RECORDTIMESTAMP)
-                                                             FROM BITSTATUS_HISTORY
-                                                             WHERE 1=1
-                                                               AND RECORDDATE >= TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD')
-                                                             GROUP BY BITID ) ) B
-        WHERE 1=1
-          AND A.USEFLAG = '1'
-          AND A.BITID = B.BITID(+)
-        ]]>
-    </select>
-
-    <select id="findAllBitComm" resultType="com.its.api.its.model.dto.dashboard.facility.BitCommSttsDto">
-        <![CDATA[
-        SELECT BITID, BITNAME, RECORDDATE, WCOMMSTATUS, COMMERRCNT
-        FROM (
-                 SELECT X.BITID, X.BITNAME, DECODE(Y.RECORDDATE, NULL, '-', TO_CHAR(Y.RECORDDATE, 'YYYYMMDDHH24MISS')) AS RECORDDATE,
-                        NVL(Y.WCOMMSTATUS, '0') AS WCOMMSTATUS, NVL(Y.COMMERRCNT, 0) AS COMMERRCNT,
-                        Y.TEMPERATURE, Y.HUMIDITY, Y.FANOPSTATUS, Y.HEATEROPSTATUS, Y.DOORSTATUS, Y.MONITORSTATUS
-                 FROM BIT X,
-                      (SELECT B.*
-                       FROM (SELECT A.*,
-                                    (SELECT COUNT(1)
-                                     FROM BITSTATUS_HISTORY
-                                     WHERE 1=1
-                                       AND BITID = A.BITID
-                                       AND WCOMMSTATUS <> '1'
-                                       AND RECORDDATE  >= TO_DATE(TO_CHAR(TRUNC(SYSDATE), 'YYYYMMDD') || '030000', 'YYYYMMDDHH24MISS')
-                                    ) AS COMMERRCNT
-                             FROM BITSTATUS_HISTORY A
-                             WHERE 1=1
-                               AND RECORDDATE >= TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD'), 'YYYYMMDD')
-                            ) B
-                       WHERE (BITID, RECORDDATE, RECORDTIMESTAMP) IN (SELECT BITID, MAX(RECORDDATE), MAX(RECORDTIMESTAMP)
-                                                                      FROM BITSTATUS_HISTORY
-                                                                      WHERE 1=1
-                                                                        AND RECORDDATE >= TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD'), 'YYYYMMDD')
-                                                                      GROUP BY BITID )
-                      ) Y
-                 WHERE 1=1
-                   AND X.USEFLAG = '1'
-                   AND X.BITID = Y.BITID(+)
-             )
-        WHERE 1=1
-          AND WCOMMSTATUS <> '1'
-        ORDER BY BITID
-        ]]>
-    </select>
-
-</mapper>

+ 0 - 157
src/main/resources/mybatis/mapper/facility/ItsMapper.xml

@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.its.api.its.repository.dashboard.facility.ItsMapper">
-
-    <select id="findAllFacilityStts" resultType="com.its.api.its.model.dto.dashboard.facility.ItsFacilitySttsDto">
-        <![CDATA[
-        SELECT 'CCTV' AS TYPE,
-               (SELECT COUNT(1) FROM TB_CCTV_CTLR WHERE DEL_YN = 'N') AS TOTCNT,
-               (SELECT COUNT(1) FROM TB_CCTV_CTLR A, TB_CCTV_STTS B
-                WHERE A.DEL_YN = 'N'
-                  AND A.CCTV_MNGM_NMBR = B.CCTV_MNGM_NMBR
-                  AND B.UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS')
-                  AND B.CMNC_STTS_CD = 'CMS0') AS NORCNT,
-               0 AS COLCNT, 0 AS DOORCNT, 0 AS FANCNT, 0 AS HETRCNT, 0 AS TEMPCNT, 0 AS MODLCNT, 0 AS MODLPWERCNT, 0 AS PWERCNT, 0 AS CAMCNT, 0 AS DTCTCNT
-        FROM DUAL
-        UNION ALL
-        SELECT 'VMS' AS TYPE, COUNT(1) AS TOTCNT, SUM(NORCNT) AS NORCNT,  0 AS COLCNT,
-               SUM(DOORCNT) AS DOORCNT, SUM(FANCNT) AS FANCNT, SUM(HETRCNT) AS HETRCNT,
-               SUM(TEMPCNT) AS TEMPCNT, SUM(MODLCNT) AS MODLCNT, SUM(MODLPWERCNT) AS MODLPWERCNT, 0 AS PWERCNT, 0 AS CAMCNT, 0 AS DTCTCNT
-        FROM (
-                 SELECT A.VMS_CTLR_NMBR, DECODE(B.CONN_STTS_CD, 'CMS0', 1, 0) AS NORCNT, 0 AS COLCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', DECODE(B.CBOXDOOR_OPEN_STTS_CD, 'CDS1', 1, 0), 0) AS DOORCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', DECODE(B.FAN_STTS_CD,           'PAS0', 1, 0), 0) AS FANCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', DECODE(B.HETR_STTS_CD,          'HTS0', 1, 0), 0) AS HETRCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', CASE WHEN B.CBOX_TMPR > 30 THEN 0
-                                                            WHEN B.CBOX_TMPR < -5 THEN 0
-                                                            ELSE 0 END
-                            , 0) AS TEMPCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', DECODE(B.CBOXFAN_STTS_CD,       'MOS1', 1, 0), 0) AS MODLCNT,
-                        DECODE(B.CONN_STTS_CD, 'CMS0', DECODE(B.PWER_STTS_CD,          'PWS1', 1, 0), 0) AS MODLPWERCNT
-                 FROM TB_VMS_CTLR A,
-                      (SELECT *
-                       FROM TB_VMS_STTS_PRST
-                       WHERE RGST_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS') ) B
-                 WHERE A.DEL_YN = 'N'
-                   AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR(+)
-             )
-        UNION ALL
-        SELECT 'VDS' AS TYPE, COUNT(1) AS TOTCNT, SUM(NORCNT) AS NORCNT, SUM(COLCNT) AS COLCNT,
-               SUM(DOORCNT) AS DOORCNT, SUM(FANCNT) AS FANCNT, SUM(HETRCNT) AS HETRCNT,
-               SUM(TEMPCNT) AS TEMPCNT, SUM(MODLCNT) AS MODLCNT, SUM(MODLPWERCNT) AS MODLPWERCNT, SUM(PWERCNT) AS PWERCNT, SUM(CAMCNT) AS CAMCNT, SUM(DTCTCNT) AS DTCTCNT
-        FROM (
-                 SELECT A.CTLR_MNGM_NMBR, DECODE(B.CMNC_STTS_CD, 'CMS0', 1, 0) AS NORCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', DECODE(B.COLCNT,        NULL, 0, 0, 1, 0), 0) AS COLCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', DECODE(B.CBOX_DOOR_STTS_CD, 'CDS1', 1, 0), 0) AS DOORCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', DECODE(B.FAN_STTS_CD,       'PAS0', 1, 0), 0) AS FANCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', DECODE(B.HETR_STTS_CD,      'HTS0', 1, 0), 0) AS HETRCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', CASE WHEN B.CBOX_TMPR > 30 THEN 0
-                                                            WHEN B.CBOX_TMPR < -5 THEN 0
-                                                            ELSE 0 END
-                             , 0) AS TEMPCNT,
-                        0                                                                            AS MODLCNT,
-                        0                                                                            AS MODLPWERCNT,
-                        DECODE(B.CMNC_STTS_CD, 'CMS0', DECODE(B.PRNT_PWER_STTS_CD, 'PWS1', 1, 0), 0) AS PWERCNT,
-                        0                                                                            AS CAMCNT,
-                        0                                                                            AS DTCTCNT
-                 FROM TB_VDS_CTLR A,
-                      (SELECT X.*, NVL(Y.COLCNT, 0) AS COLCNT
-                       FROM TB_VDS_CTLR_STTS X,
-                            (SELECT A.CTLR_MNGM_NMBR, COUNT(1) AS COLCNT
-                             FROM TB_VDS_DTCT_MSTR A, TB_VDS_DTCT_RAW_PNST B
-                             WHERE 1=1
-                               AND A.DTCT_NMBR = B.DTCT_NMBR
-                               AND B.OCRR_DT >= TO_CHAR(SYSDATE-10/1440, 'YYYYMMDDHH24MISS')
-                             GROUP BY A.CTLR_MNGM_NMBR ) Y
-                       WHERE 1=1
-                         AND X.UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS')
-                         AND X.CTLR_MNGM_NMBR = Y.CTLR_MNGM_NMBR(+) ) B
-                 WHERE A.DEL_YN = 'N' AND A.CTLR_MNGM_NMBR = B.CTLR_MNGM_NMBR(+)
-             )
-        ]]>
-    </select>
-    <select id="findAllVdsComm" resultType="com.its.api.its.model.dto.dashboard.facility.VdsCommSttsDto">
-        <![CDATA[
-        SELECT CTLR_NMBR, CTLR_ID, CTLR_NM, UPDT_DT, COMM_CD, COLCNT, COMMERRCNT
-        FROM (SELECT A.CTLR_MNGM_NMBR AS CTLR_NMBR, A.VDS_CTLR_ID AS CTLR_ID, A.LCTN AS CTLR_NM,
-                     NVL(C.UPDT_DT, '-') AS UPDT_DT, NVL(C.CMNC_STTS_CD, 'CMS1') AS COMM_CD,
-                     NVL(C.COLCNT, 0) AS COLCNT, NVL(B.COMMERRCNT, 0) AS COMMERRCNT
-              FROM TB_VDS_CTLR A,
-                   (SELECT CTLR_MNGM_NMBR, COUNT(1) AS COMMERRCNT
-                    FROM TB_VDS_CTLR_STTS_RAW
-                    WHERE 1=1
-                      AND CMNC_STTS_CD <> 'CMS0'
-                      AND OCRR_DT >= TO_CHAR(TRUNC(SYSDATE), 'YYYYMMDD') || '000000'
-                    GROUP BY CTLR_MNGM_NMBR
-                   ) B,
-                   (SELECT X.CTLR_MNGM_NMBR, X.UPDT_DT, X.CMNC_STTS_CD, NVL(Y.COLCNT, 0) AS COLCNT
-                    FROM TB_VDS_CTLR_STTS X,
-                         (SELECT A.CTLR_MNGM_NMBR, COUNT(1) AS COLCNT
-                          FROM TB_VDS_DTCT_MSTR A, TB_VDS_DTCT_RAW_PNST B
-                          WHERE 1=1
-                            AND A.DTCT_NMBR = B.DTCT_NMBR
-                            AND B.OCRR_DT >= TO_CHAR(SYSDATE-10/1440, 'YYYYMMDDHH24MISS')
-                          GROUP BY A.CTLR_MNGM_NMBR ) Y
-                    WHERE 1=1
-                      AND X.UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS')
-                      AND X.CTLR_MNGM_NMBR = Y.CTLR_MNGM_NMBR(+)
-                   ) C
-              WHERE 1=1
-                AND A.DEL_YN = 'N'
-                AND A.CTLR_MNGM_NMBR = B.CTLR_MNGM_NMBR(+)
-                AND A.CTLR_MNGM_NMBR = C.CTLR_MNGM_NMBR(+)
-             )
-        WHERE 1=1
-          AND (COMM_CD = 'CMS1' OR COLCNT = 0)
-        ORDER BY CTLR_ID
-        ]]>
-    </select>
-
-    <select id="findAllVmsComm" resultType="com.its.api.its.model.dto.dashboard.facility.VmsCommSttsDto">
-        <![CDATA[
-        SELECT A.VMS_CTLR_NMBR AS CTLR_NMBR, A.VMS_CTLR_ID AS CTLR_ID, A.VMS_NM AS CTLR_NM, NVL(B.RGST_DT, '-') AS UPDT_DT, NVL(B.CONN_STTS_CD, 'CMS1') AS COMM_CD,
-               (SELECT COUNT(1)
-                FROM TB_VMS_STTS_HS
-                WHERE 1=1
-                  AND VMS_CTLR_NMBR = A.VMS_CTLR_NMBR
-                  AND CONN_STTS_CD <> 'CMS0'
-                  AND RGST_DT >= TO_CHAR(TRUNC(SYSDATE), 'YYYYMMDD') || '000000') AS COMMERRCNT
-        FROM TB_VMS_CTLR A,
-             (SELECT VMS_CTLR_NMBR, RGST_DT, CONN_STTS_CD
-              FROM TB_VMS_STTS_PRST
-              WHERE 1=1
-                AND CONN_STTS_CD <> 'CMS0'
-                AND RGST_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS')
-             ) B
-        WHERE 1=1
-          AND A.DEL_YN = 'N'
-          AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR(+)
-        ORDER BY CTLR_ID
-        ]]>
-    </select>
-
-    <select id="findAllCctvComm" resultType="com.its.api.its.model.dto.dashboard.facility.CctvCommSttsDto">
-        <![CDATA[
-        SELECT A.CCTV_MNGM_NMBR AS CTLR_NMBR, A.CCTV_CTLR_ID AS CTLR_ID, A.ISTL_LCTN_NM AS CTLR_NM, NVL(B.UPDT_DT, '-') AS UPDT_DT, NVL(B.CMNC_STTS_CD, 'CMS1') AS COMM_CD,
-               (SELECT COUNT(1)
-                FROM TB_CCTV_STTS_HS
-                WHERE 1=1
-                  AND CCTV_MNGM_NMBR = A.CCTV_MNGM_NMBR
-                  AND CMNC_STTS_CD <> 'CMS0'
-                  AND CRTN_DT >= TO_CHAR(TRUNC(SYSDATE), 'YYYYMMDD') || '000000') AS COMMERRCNT
-        FROM TB_CCTV_CTLR A,
-             (SELECT CCTV_MNGM_NMBR, UPDT_DT, CMNC_STTS_CD
-              FROM TB_CCTV_STTS
-              WHERE 1=1
-                AND CMNC_STTS_CD <> 'CMS0'
-                AND UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS')
-             ) B
-        WHERE 1=1
-          AND A.DEL_YN = 'N'
-          AND A.CCTV_MNGM_NMBR = B.CCTV_MNGM_NMBR(+)
-        ORDER BY CTLR_ID
-        ]]>
-    </select>
-
-</mapper>