shjung 2 лет назад
Родитель
Сommit
0c46abd5a8

+ 47 - 0
src/main/java/com/its/op/controller/its/rse/TbRseOdStatHhController.java

@@ -0,0 +1,47 @@
+package com.its.op.controller.its.rse;
+
+import com.its.op.dto.its.rse.RseOdStatDto;
+import com.its.op.dto.its.rse.RseOdStatListDto;
+import com.its.op.service.its.rse.TbRseOdStatHhService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+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.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "14.RSE-3.통계조히-RSE OD 교통량 시간 통계")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/tb_rse_od_stat_hh")
+public class TbRseOdStatHhController {
+
+    private final TbRseOdStatHhService service;
+
+    @ApiOperation(value = "RSE OD 교통량 조회(출발/도착)", response = RseOdStatDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/tfvl/od", produces = {"application/json; charset=utf8"})
+    public List<RseOdStatDto> findAllOdListByDateRange(
+            @ApiParam(name = "FROM_DT", value = "조회시작시각(YYYYMMDDHH24MI00)", example = "20220122000000", required = true)
+            @RequestParam String FROM_DT,
+            @ApiParam(name = "TO_DT", value = "조회종료시각(YYYYMMDDHH24MI59)", example = "20220122235959", required = true)
+            @RequestParam String TO_DT) {
+        return this.service.findAllOdListByDateRange(FROM_DT, TO_DT);
+    }
+
+    @ApiOperation(value = "RSE OD 교통량 목록 조회(출발-도착 목록)", response = RseOdStatListDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/tfvl/od-list", produces = {"application/json; charset=utf8"})
+    public List<RseOdStatListDto> findAllListByDateRange(
+            @ApiParam(name = "FROM_DT", value = "조회시작시각(YYYYMMDDHH24MI00)", example = "20220122000000", required = true)
+            @RequestParam String FROM_DT,
+            @ApiParam(name = "TO_DT", value = "조회종료시각(YYYYMMDDHH24MI59)", example = "20220122235959", required = true)
+            @RequestParam String TO_DT) {
+        return this.service.findAllListByDateRange(FROM_DT, TO_DT);
+    }
+
+}

+ 16 - 0
src/main/java/com/its/op/dao/mapper/its/rse/RseOdStatHhMapper.java

@@ -0,0 +1,16 @@
+package com.its.op.dao.mapper.its.rse;
+
+import com.its.op.dto.its.rse.RseOdStatDto;
+import com.its.op.dto.its.rse.RseOdStatListDto;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface RseOdStatHhMapper {
+
+    List<RseOdStatDto> findAllOdListByDateRange(Map<String, String> param);
+    List<RseOdStatListDto> findAllListByDateRange(Map<String, String> param);
+
+}

+ 36 - 0
src/main/java/com/its/op/dto/its/rse/RseOdStatDto.java

@@ -0,0 +1,36 @@
+package com.its.op.dto.its.rse;
+
+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;
+
+/**
+ * RSE OD 교통량 시간 통계 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("RseOdStatDto(RSE OD 교통량 시간 통계)")
+public class RseOdStatDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("RSE 제어기 번호")
+    @JsonProperty("rse_ctlr_nmbr")
+    private Long RSE_CTLR_NMBR;
+
+    @ApiModelProperty("RSE 명")
+    @JsonProperty("rse_nm")
+    private String RSE_NM;
+
+    @ApiModelProperty("출발 교통량합")
+    @JsonProperty("depart_tfvl")
+    private Long DEPART_TFVL;
+
+    @ApiModelProperty("도착 교통량합")
+    @JsonProperty("arrival_tfvl")
+    private Long ARRIVAL_TFVL;
+
+}

+ 32 - 0
src/main/java/com/its/op/dto/its/rse/RseOdStatListDto.java

@@ -0,0 +1,32 @@
+package com.its.op.dto.its.rse;
+
+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;
+
+/**
+ * RSE OD 교통량 시간 통계 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("RseOdStatListDto(RSE OD 교통량 시간 통계)")
+public class RseOdStatListDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("RSE 제어기 번호")
+    @JsonProperty("f_rse_ctlr_nmbr")
+    private Long F_RSE_CTLR_NMBR;
+
+    @ApiModelProperty("RSE 제어기 번호")
+    @JsonProperty("t_rse_ctlr_nmbr")
+    private Long T_RSE_CTLR_NMBR;
+
+    @ApiModelProperty("교통량합")
+    @JsonProperty("tfvl")
+    private Long TFVL;
+
+}

+ 47 - 0
src/main/java/com/its/op/service/its/rse/TbRseOdStatHhService.java

@@ -0,0 +1,47 @@
+package com.its.op.service.its.rse;
+
+import com.its.op.dao.mapper.its.rse.RseOdStatHhMapper;
+import com.its.op.dto.its.rse.RseOdStatDto;
+import com.its.op.dto.its.rse.RseOdStatListDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbRseOdStatHhService {
+
+    private final RseOdStatHhMapper mapper;
+
+    /**
+     * RSE OD 교통량 통계(RSE 기준 출발-도착 교통량)
+     * @param fromDt
+     * @param toDt
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<RseOdStatDto> findAllOdListByDateRange(String fromDt, String toDt) {
+        Map<String, String> param = new HashMap<>();
+        param.put("FROM_DT", fromDt);
+        param.put("TO_DT", toDt);
+        return this.mapper.findAllOdListByDateRange(param);
+    }
+
+    /**
+     * RSE OD 교통량 통계(출발 RSE, 도착 RSE 교통량)
+     * @param fromDt
+     * @param toDt
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<RseOdStatListDto> findAllListByDateRange(String fromDt, String toDt) {
+        Map<String, String> param = new HashMap<>();
+        param.put("FROM_DT", fromDt);
+        param.put("TO_DT", toDt);
+        return this.mapper.findAllListByDateRange(param);
+    }
+}

+ 36 - 0
src/main/resources/mybatis/mapper/its/rse/RseOdStatHhMapper.xml

@@ -0,0 +1,36 @@
+<?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.op.dao.mapper.its.rse.RseOdStatHhMapper">
+
+    <select id="findAllOdListByDateRange" parameterType="java.util.HashMap" resultType="com.its.op.dto.its.rse.RseOdStatDto">
+        <![CDATA[
+        SELECT X.RSE_CTLR_NMBR, X.RSE_NM, NVL(Y.DEPART_TFVL, 0) AS DEPART_TFVL, NVL(ARRIVAL_TFVL, 0) AS ARRIVAL_TFVL
+        FROM TB_RSE_CTLR X LEFT OUTER JOIN
+             (SELECT RSE_CTLR_NMBR, SUM(DEPART_TFVL) AS DEPART_TFVL, SUM(ARRIVAL_TFVL) AS ARRIVAL_TFVL
+              FROM (SELECT A.F_RSE_CTLR_NMBR AS RSE_CTLR_NMBR, SUM(TFVL) AS DEPART_TFVL, 0 AS ARRIVAL_TFVL
+                    FROM TB_RSE_OD_STAT_HH A
+                    WHERE A.STAT_DT BETWEEN #{FROM_DT} AND #{TO_DT}
+                    GROUP BY A.F_RSE_CTLR_NMBR
+                    UNION
+                    SELECT A.T_RSE_CTLR_NMBR AS RSE_CTLR_NMBR, 0 AS DEPART_TFVL, SUM(TFVL) AS ARRIVAL_TFVL
+                    FROM TB_RSE_OD_STAT_HH A
+                    WHERE A.STAT_DT BETWEEN #{FROM_DT} AND #{TO_DT}
+                    GROUP BY A.T_RSE_CTLR_NMBR
+                   )
+              GROUP BY RSE_CTLR_NMBR) Y
+             ON X.RSE_CTLR_NMBR = Y.RSE_CTLR_NMBR
+        ORDER BY X.RSE_CTLR_NMBR
+        ]]>
+    </select>
+
+    <select id="findAllListByDateRange" parameterType="java.util.HashMap" resultType="com.its.op.dto.its.rse.RseOdStatListDto">
+        <![CDATA[
+        SELECT A.F_RSE_CTLR_NMBR, A.T_RSE_CTLR_NMBR, SUM(TFVL) AS TFVL
+        FROM TB_RSE_OD_STAT_HH A
+        WHERE A.STAT_DT BETWEEN #{FROM_DT} AND #{TO_DT}
+        GROUP BY A.F_RSE_CTLR_NMBR, A.T_RSE_CTLR_NMBR
+        ]]>
+    </select>
+
+</mapper>