shjung 2 年 前
コミット
6abf5232a8

+ 2 - 0
src/main/java/com/its/op/dao/repository/its/ifsc/TbIfsc15mStatRepository.java

@@ -4,6 +4,7 @@ import com.its.op.dto.its.analysis.TbTrafStat15mCountInf;
 import com.its.op.dto.its.analysis.TbTrafStat15mListInf;
 import com.its.op.entity.its.ifsc.TbIfscStat15m;
 import com.its.op.entity.its.ifsc.TbIfscStat15mKey;
+import com.its.op.entity.its.link.TbLinkTrafHs;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -30,4 +31,5 @@ public interface TbIfsc15mStatRepository extends JpaRepository<TbIfscStat15m, Tb
             "   and b.statDt = :statDt"
     )
     List<TbTrafStat15mListInf> findAllDataByDateRange(@Param("statDt") String statDt);
+
 }

+ 11 - 0
src/main/java/com/its/op/dao/repository/its/ifsc/TbIfscTrafHsRepository.java

@@ -1,5 +1,6 @@
 package com.its.op.dao.repository.its.ifsc;
 
+import com.its.op.entity.its.ifsc.TbIfscStat15m;
 import com.its.op.entity.its.ifsc.TbIfscTrafHs;
 import com.its.op.entity.its.ifsc.TbIfscTrafHsKey;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -18,4 +19,14 @@ public interface TbIfscTrafHsRepository extends JpaRepository<TbIfscTrafHs, TbIf
 
     @Query("select p from TbIfscTrafHs p where p.ifscId = :ifscId and p.prcnDt between :fromDt and :toDt")
     List<TbIfscTrafHs> findAllByDateRange(@Param("ifscId") Long ifscId, @Param("fromDt") String fromDt, @Param("toDt") String toDt);
+
+    @Query("select p from TbIfscTrafHs p " +
+            " where (p.ifscId, p.prcnDt) in (" +
+            "        select x.ifscId, max(x.prcnDt) " +
+            "          from TbIfscTrafHs x " +
+            "         where x.prcnDt between :fromDt and :toDt " +
+            "           and x.cmtrGradCd <> 'LTC1' " +
+            "         group by x.ifscId)")
+    List<TbIfscTrafHs> findAllCongestByDateRange(@Param("fromDt") String fromDt, @Param("toDt") String toDt);
+
 }

+ 7 - 0
src/main/java/com/its/op/dao/repository/its/wcam/TbWcamCtlrSttsHsRepository.java

@@ -4,6 +4,7 @@ import com.its.op.dto.its.common.SttsHsErrCntInf;
 import com.its.op.dto.its.facility.FcltSttsErrorInf;
 import com.its.op.dto.its.report.ReportFcltSummaryInf;
 import com.its.op.dto.its.statistics.FcltSttsStatErrorInf;
+import com.its.op.entity.its.rse.TbRseCtlrSttsHs;
 import com.its.op.entity.its.wcam.TbWcamCtlrSttsHs;
 import com.its.op.entity.its.wcam.TbWcamCtrlSttsHsKey;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -42,6 +43,11 @@ public interface TbWcamCtlrSttsHsRepository extends JpaRepository<TbWcamCtlrStts
            "   and p.wcamCtlrNmbr in :ids")
     List<TbWcamCtlrSttsHs> findAllFailByDateRange(@Param("fromDt") String fromDt, @Param("toDt") String toDt, @Param("ids") List<Long> ids);
 
+    @Query("select p from TbWcamCtlrSttsHs p inner join fetch p.wcam m " +
+            " where m.delYn = 'N' and p.crtnDt between :fromDt and :toDt " +
+            "   and p.cmncSttsCd = 'CMS1' ")
+    List<TbRseCtlrSttsHs> findAllReportError(@Param("fromDt") String fromDt, @Param("toDt") String toDt);
+
     @Query(value =
            "SELECT NVL(SUM(CMS0CNT), 0) AS cms0Cnt, NVL(SUM(CMS1CNT), 0) AS cms1Cnt " +
            "  FROM (SELECT DECODE(A.CMNC_STTS_CD, 'CMS0', 1, 0) AS CMS0CNT, " +
@@ -81,4 +87,5 @@ public interface TbWcamCtlrSttsHsRepository extends JpaRepository<TbWcamCtlrStts
            "        WHERE A.DEL_YN = 'N' AND A.WCAM_CTLR_NMBR = B.WCAM_CTLR_NMBR(+)                  "
            , nativeQuery = true)
     List<FcltSttsStatErrorInf> findAllStatisticsCommErrByDateRange(@Param("fromDt") String fromDt, @Param("toDt") String toDt);
+
 }

+ 30 - 3
src/main/java/com/its/op/dto/its/report/ReportTrafficCongestDto.java

@@ -1,6 +1,8 @@
 package com.its.op.dto.its.report;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.ifsc.TbIfsc;
+import com.its.op.global.CmmnCdManager;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
@@ -14,9 +16,9 @@ import java.io.Serializable;
 @ApiModel("ReportTrafficCongestDto(교통보고서-지/정체 현황)")
 public class ReportTrafficCongestDto  implements Serializable {
 
-    @ApiModelProperty("링크 ID")
-    @JsonProperty("link_id")
-    private String linkId;
+    @ApiModelProperty("구간 ID")
+    @JsonProperty("sect_id")
+    private String sectId;
 
     @ApiModelProperty("가공시각")
     @JsonProperty("prcn_Dt")
@@ -29,4 +31,29 @@ public class ReportTrafficCongestDto  implements Serializable {
     @ApiModelProperty("속도")
     @JsonProperty("sped")
     private int    sped;
+
+    @ApiModelProperty("구간명")
+    @JsonProperty("sect_name")
+    private String sectName;
+
+    @ApiModelProperty("구간시작명")
+    @JsonProperty("f_name")
+    private String fName;
+
+    @ApiModelProperty("구간종료명")
+    @JsonProperty("t_name")
+    private String tName;
+
+    @ApiModelProperty("소통등급설명")
+    @JsonProperty("cmtr_grad_desc")
+    private String cmtrGradDesc;
+
+    public void setSect(TbIfsc sect) {
+        if (sect != null) {
+            this.sectName = sect.getIfscNm();
+            this.fName = sect.getStrtNm();
+            this.tName = sect.getEndNm();
+        }
+        this.cmtrGradDesc = CmmnCdManager.getCodeDescShort(CmmnCdManager.CMTR_GRAD_CD, this.cmtrGradCd);
+    }
 }

+ 35 - 10
src/main/java/com/its/op/service/its/report/ReportService.java

@@ -1,20 +1,21 @@
 package com.its.op.service.its.report;
 
 import com.its.op.dao.repository.its.cctv.TbCctvCtlrSttsHsRepository;
+import com.its.op.dao.repository.its.ifsc.TbIfscTrafHsRepository;
 import com.its.op.dao.repository.its.incident.TbIncdOcrrRepository;
-import com.its.op.dao.repository.its.link.TbLinkTrafHsRepository;
 import com.its.op.dao.repository.its.rse.TbRseCtlrSttsHsRepository;
 import com.its.op.dao.repository.its.vds.TbVdsCtlrSttsHsRepository;
 import com.its.op.dao.repository.its.vms.TbVmsCtlrSttsHsRepository;
 import com.its.op.dao.repository.its.wcam.TbWcamCtlrSttsHsRepository;
 import com.its.op.dto.its.report.*;
 import com.its.op.entity.its.cctv.TbCctvCtlrSttsHs;
+import com.its.op.entity.its.ifsc.TbIfscTrafHs;
 import com.its.op.entity.its.incident.TbIncdOcrr;
-import com.its.op.entity.its.link.TbLinkTrafHs;
 import com.its.op.entity.its.rse.TbRseCtlrSttsHs;
 import com.its.op.entity.its.vds.TbVdsCtlrSttsHs;
 import com.its.op.entity.its.vms.TbVmsCtlrSttsHs;
 import com.its.op.global.CmmnCdManager;
+import com.its.op.global.TbIfscManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -34,8 +35,9 @@ public class ReportService {
     private final TbRseCtlrSttsHsRepository rseSttsHsRepo;
     private final TbWcamCtlrSttsHsRepository wcamSttsHsRepo;
     private final TbIncdOcrrRepository incdOcrrRepo;
-    private final TbLinkTrafHsRepository linkTrafHsRepo;
-    private final CmmnCdManager cmmnCdManager;
+    //private final TbLinkTrafHsRepository linkTrafHsRepo;
+    private final TbIfscTrafHsRepository ifscTrafHsRepo;
+    private final TbIfscManager ifscManager;
 
     /**
      * 보고서 - 시설물 보고서 - 시설물 현황
@@ -145,6 +147,17 @@ public class ReportService {
                     .build());
         });
 
+        List<TbRseCtlrSttsHs>  wcamError = this.wcamSttsHsRepo.findAllReportError(fromDt, toDt);
+        wcamError.forEach(obj -> {
+            result.add(ReportFacilityErrorDto.builder()
+                    .fcltSeq(5)
+                    .fcltType("WCAM")
+                    .fcltId(obj.getRse() != null ? obj.getRse().getRseCtlrId() : String.valueOf(obj.getRseCtlrNmbr()))
+                    .fcltNm(obj.getRse() != null ? obj.getRse().getRseNm() : String.valueOf(obj.getRseCtlrNmbr()))
+                    .rgstDt(obj.getCrtnDt())
+                    .build());
+        });
+
         return result;
     }
 
@@ -159,12 +172,11 @@ public class ReportService {
 
         List<ReportTrafficIncidentDto> result = new ArrayList<>();
 
-        //CodeManager.loadCode(CodeManager.INCD_CODE_IDTU);
         List<TbIncdOcrr> data = this.incdOcrrRepo.findAllProgressIncidentByDateRange(fromDt, toDt);
         data.forEach(obj -> {
             result.add(ReportTrafficIncidentDto.builder()
                     .incdStrtDt(obj.getIncdStrtDt())
-                    .cmmnCdKorNm(this.cmmnCdManager.getCodeDescShort(CmmnCdManager.INCD_CODE_IDTU, obj.getIncdTypeClsfCd()))
+                    .cmmnCdKorNm(CmmnCdManager.getCodeDescShort(CmmnCdManager.INCD_CODE_IDTU, obj.getIncdTypeClsfCd()))
                     .linkId(String.valueOf(obj.getLinkId()))
                     .incdTitl(obj.getIncdTitl()).build());
         });
@@ -181,15 +193,28 @@ public class ReportService {
     public List<ReportTrafficCongestDto> findAllTrafficCongest(String fromDt, String toDt) {
 
         List<ReportTrafficCongestDto> result = new ArrayList<>();
-        List<TbLinkTrafHs> data = this.linkTrafHsRepo.findAllCongestByDateRange(fromDt, toDt);
+        List<TbIfscTrafHs> data = this.ifscTrafHsRepo.findAllCongestByDateRange(fromDt, toDt);
         data.forEach(obj -> {
-            result.add(ReportTrafficCongestDto.builder()
-                    .linkId(String.valueOf(obj.getLinkId()))
+            ReportTrafficCongestDto dto = ReportTrafficCongestDto.builder()
+                    .sectId(String.valueOf(obj.getIfscId()))
                     .prcnDt(obj.getPrcnDt())
                     .cmtrGradCd(obj.getCmtrGradCd())
                     .sped(obj.getSped())
-                    .build());
+                    .build();
+
+            dto.setSect(this.ifscManager.get(obj.getIfscId()));
+
+            result.add(dto);
         });
+//        List<TbLinkTrafHs> data = this.linkTrafHsRepo.findAllCongestByDateRange(fromDt, toDt);
+//        data.forEach(obj -> {
+//            result.add(ReportTrafficCongestDto.builder()
+//                    .linkId(String.valueOf(obj.getLinkId()))
+//                    .prcnDt(obj.getPrcnDt())
+//                    .cmtrGradCd(obj.getCmtrGradCd())
+//                    .sped(obj.getSped())
+//                    .build());
+//        });
         return result;
     }