shjung před 2 roky
rodič
revize
2f60ab8a1c

+ 3 - 3
src/main/java/com/its/op/config/JobConfig.java

@@ -18,9 +18,9 @@ import javax.annotation.PostConstruct;
 public class JobConfig {
 
     private boolean cctvPreset = false;
-    private boolean baseDbms = false;
-    private boolean fcltStts = false;
-    private boolean unitStts = false;
+    private boolean baseDbms = true;
+    private boolean fcltStts = true;
+    private boolean unitStts = true;
     private boolean dbSvrStts = true;
 
     @PostConstruct

+ 3 - 0
src/main/java/com/its/op/dao/mapper/its/scrs/ScTfvlStatisticsMapper.java

@@ -1,5 +1,6 @@
 package com.its.op.dao.mapper.its.scrs;
 
+import com.its.op.dto.its.scrs.ScIxrCmraTfvlDto;
 import com.its.op.dto.its.scrs.ScTfvlDto;
 import com.its.op.dto.its.scrs.ScTfvlParam;
 import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +28,6 @@ public interface ScTfvlStatisticsMapper {
 
     List<ScTfvlDto> findTfvlMN(@Param("cond") ScTfvlParam cond);
     List<ScTfvlDto> findTfvlMNLane(@Param("cond") ScTfvlParam cond);
+
+    List<ScIxrCmraTfvlDto> findIxtTfvlToday();
 }

+ 8 - 0
src/main/java/com/its/op/dto/its/common/FcltSttsDto.java

@@ -69,4 +69,12 @@ public class FcltSttsDto implements Serializable {
     @JsonProperty("updt_dt")
     private String updtDt;
 
+//    @ApiModelProperty("수집건수")
+//    @JsonProperty("coll_cnt")
+//    private Integer collCnt;
+//
+//    @ApiModelProperty("교통량")
+//    @JsonProperty("tfvl")
+//    private Integer tfvl;
+
 }

+ 33 - 0
src/main/java/com/its/op/dto/its/scrs/ScIxrCmraTfvlDto.java

@@ -0,0 +1,33 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 교차로 카메라 일 교통량 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("ScIxrCmraTfvlDto(교차로 카메라 일 교통량 DTO)")
+public class ScIxrCmraTfvlDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("교차로 ID")
+    @JsonProperty("ixr_id")
+    private String ixrId;
+
+    @ApiModelProperty("카메라 ID")
+    @JsonProperty("cmra_id")
+    private String cmraId;
+
+    @ApiModelProperty("교통량")
+    @JsonProperty("tfvl")
+    private Integer tfvl;
+
+
+}

+ 4 - 1
src/main/java/com/its/op/scheduler/ItsApiScheduler.java

@@ -96,8 +96,11 @@ public class ItsApiScheduler {
         this.dbmsSttsJobThread.run();
     }
 
+    /**
+     * 신호 현시
+     */
     @Async
-    @Scheduled(cron = "0/3 * * * * *")  // 2초 주기 작업 실행
+    @Scheduled(cron = "0/3 * * * * *")  // 3초 주기 작업 실행
     public void jobSignalPhaseCurrent() {
         if (!this.applicationConfig.isStartSchedule()) {
             return;

+ 7 - 5
src/main/java/com/its/op/scheduler/job/BaseDbmsJobThread.java

@@ -19,6 +19,7 @@ public class BaseDbmsJobThread {
     private final VdsManager vdsManager;
     private final VmsManager vmsManager;
     private final VmsIfscManager vmsIfscManager;
+    private final FcltCodeManager fcltCodeManager;
 
     @PostConstruct
     private void init() {
@@ -32,11 +33,12 @@ public class BaseDbmsJobThread {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
 
-        codeManager.load();
-        cctvManager.load();
-        vdsManager.load();
-        vmsManager.load();
-        vmsIfscManager.load();
+        this.codeManager.load();
+        this.cctvManager.load();
+        this.vdsManager.load();
+        this.vmsManager.load();
+        this.vmsIfscManager.load();
+        this.fcltCodeManager.load();
 
         stopWatch.stop();
         long totalTimeMillis = stopWatch.getTotalTimeMillis();

+ 18 - 1
src/main/java/com/its/op/service/its/scrs/TbScIxrCmraMngmService.java

@@ -1,10 +1,12 @@
 package com.its.op.service.its.scrs;
 
+import com.its.op.dao.mapper.its.scrs.ScTfvlStatisticsMapper;
 import com.its.op.dao.repository.its.scrs.TbScIxrCmraMngmRepository;
 import com.its.op.dto.its.common.FcltSttsDto;
 import com.its.op.dto.its.common.FcltSttsListDto;
 import com.its.op.dto.its.common.FcltSttsSummaryDto;
 import com.its.op.dto.its.facility.TbFcltSttsAlrmStupDto;
+import com.its.op.dto.its.scrs.ScIxrCmraTfvlDto;
 import com.its.op.dto.its.scrs.TbScIxrCmraMngmDto;
 import com.its.op.dto.its.scrs.TbScIxrCmraSttsDto;
 import com.its.op.entity.its.scrs.TbScIxrCmraMngm;
@@ -26,6 +28,7 @@ public class TbScIxrCmraMngmService {
 
     private final TbFcltSttsAlrmStupService alarmService;
     private final TbScIxrCmraMngmRepository repo;
+    private final ScTfvlStatisticsMapper tfvlMapper;
     private String fcltType = "CCAM";
 
     // 데이터 1건 조회, 없으면 exception
@@ -127,15 +130,27 @@ public class TbScIxrCmraMngmService {
         AtomicInteger error = new AtomicInteger(0);
         AtomicInteger normal = new AtomicInteger(0);
 
+        // 일 교통량 조회
+        HashMap<String, ScIxrCmraTfvlDto> tfvlMap = new HashMap<>();
+        List<ScIxrCmraTfvlDto> tfvlList = this.tfvlMapper.findIxtTfvlToday();
+        tfvlList.forEach(tfvl -> {
+            tfvlMap.put(tfvl.getIxrId(), tfvl);
+        });
+
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<TbScIxrCmraMngm> ctlrList = this.repo.findAllList();
         ctlrList.forEach(obj -> {
             TbScIxrCmraSttsDto dto = obj.toSttsDto();
             if (total) {
+                int tfvl = 0;
+                ScIxrCmraTfvlDto tfvlDto = tfvlMap.get(obj.getIxrId());
+                if (tfvlDto != null) {
+                    tfvl = tfvlDto.getTfvl();
+                }
                 FcltSttsDto stts = FcltSttsDto.builder()
                         .fcltType(this.fcltType)
                         .fcltNmbr(obj.getCmraId())
-                        .fcltId(String.valueOf(obj.getCmraId()))
+                        .fcltId(obj.getCmraId())
                         .fcltNm(obj.getIstlLctn())
                         .fcltKind(String.valueOf(obj.getDrctDvsnCd()))
 //                        .xCrdn(Double.parseDouble(obj.getCmraYCrdn()))
@@ -144,6 +159,8 @@ public class TbScIxrCmraMngmService {
                         .yCrdn(Double.parseDouble(obj.getCmraYCrdn()))
                         .sttsCd(dto.getCmncSttsCd())
                         .sttsDesc(dto.getCmncSttsDesc())
+                        .fcltInfo1(String.valueOf(tfvl))
+                        .fcltInfo2("")
                         .build();
 
                 sttsDtoList.add(stts);

+ 19 - 0
src/main/resources/mybatis/mapper/its/scrs/ScTfvlStatisticsMapper.xml

@@ -575,4 +575,23 @@
         AND A.CLCT_DT BETWEEN #{cond.fromDt} AND #{cond.toDt}
     </select>
 
+
+    <select id="findIxtTfvlToday" resultType="com.its.op.dto.its.scrs.ScIxrCmraTfvlDto">
+        SELECT T.IXR_ID AS ixrId, T.CMRA_ID AS cmraId,
+               SUM(NVL(LRG_GO_TFVL, 0) +
+                   NVL(MDDL_GO_TFVL, 0) +
+                   NVL(SMAL_GO_TFVL, 0) +
+                   NVL(LRG_LEFT_TFVL, 0) +
+                   NVL(MDDL_LEFT_TFVL, 0) +
+                   NVL(SMAL_LEFT_TFVL, 0) +
+                   NVL(LRG_RGHT_TFVL, 0) +
+                   NVL(MDDL_RGHT_TFVL, 0) +
+                   NVL(SMAL_RGHT_TFVL, 0) +
+                   NVL(BUS_DVRS_LANE_GO_TFVL, 0) +
+                   NVL(BUS_DVRS_LANE_LEFT_TFVL, 0)) AS tfvl
+        FROM TB_SC_LANE_STAT_15M T
+        WHERE T.CLCT_DT BETWEEN TO_CHAR(SYSDATE, 'YYYYMMDD') || '000000' AND TO_CHAR(SYSDATE, 'YYYYMMDD') || '235959'
+        GROUP BY T.IXR_ID, T.CMRA_ID
+    </select>
+
 </mapper>