Explorar o código

scrc vechicle type and size setting

shjung hai 1 ano
pai
achega
b0a32f7778

+ 59 - 0
src/main/java/com/its/op/controller/its/scrs/TbScVhclSizePceMngmController.java

@@ -0,0 +1,59 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScVhclSizePceMngmDto;
+import com.its.op.service.its.scrs.TbScVhclSizePceMngmService;
+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 = "14.스마트교차로-1.관리-6.차량크기별 승용차 환산계수 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/vhcl/size_pce_mngm")
+public class TbScVhclSizePceMngmController {
+
+    private final TbScVhclSizePceMngmService service;
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 전체조회(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclSizePceMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 전체조회(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclSizePceMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 개별조회(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class)
+    @GetMapping(value = "/{vhclSize}", produces = {"application/json; charset=utf8"})
+    public TbScVhclSizePceMngmDto findById(@PathVariable("vhclSize") final Integer vhclSize) {
+        return this.service.findById(vhclSize);
+    }
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 정보변경(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class)
+    @PutMapping(value = "/{vhclSize}", produces = {"application/json; charset=utf8"})
+    public TbScVhclSizePceMngmDto updateById(@PathVariable("vhclSize") final Integer vhclSize, final @RequestBody @Valid TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req) {
+        return this.service.updateById(vhclSize, req);
+    }
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 정보변경/생성-목록(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclSizePceMngmDto> mergeInfoList(final @RequestBody @Valid List<TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "차량크기별 승용차 환산계수 관리 정보변경/생성-개별(TB_SC_VHCL_SIZE_PCE_MNGM)", response = TbScVhclSizePceMngmDto.class)
+    @PostMapping(value = "/{vhclSize}", produces = {"application/json; charset=utf8"})
+    public TbScVhclSizePceMngmDto mergeInfo(@PathVariable("vhclSize") final Integer vhclSize, final @RequestBody @Valid TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+}

+ 59 - 0
src/main/java/com/its/op/controller/its/scrs/TbScVhclTypeSizeMngmController.java

@@ -0,0 +1,59 @@
+package com.its.op.controller.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScVhclTypeSizeMngmDto;
+import com.its.op.service.its.scrs.TbScVhclTypeSizeMngmService;
+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 = "14.스마트교차로-1.관리-5.차종별 차량크기 관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/scrs/vhcl/type_size_mngm")
+public class TbScVhclTypeSizeMngmController {
+
+    private final TbScVhclTypeSizeMngmService service;
+
+    @ApiOperation(value = "차종별 차량크기 관리 전체조회(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclTypeSizeMngmDto> findAll() {
+        return this.service.findAll();
+    }
+
+    @ApiOperation(value = "차종별 차량크기 관리 전체조회(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/list", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclTypeSizeMngmDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "차종별 차량크기 관리 개별조회(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class)
+    @GetMapping(value = "/{vhclType}", produces = {"application/json; charset=utf8"})
+    public TbScVhclTypeSizeMngmDto findById(@PathVariable("vhclType") final Integer vhclType) {
+        return this.service.findById(vhclType);
+    }
+
+    @ApiOperation(value = "차종별 차량크기 관리 정보변경(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class)
+    @PutMapping(value = "/{vhclType}", produces = {"application/json; charset=utf8"})
+    public TbScVhclTypeSizeMngmDto updateById(@PathVariable("vhclType") final Integer vhclType, final @RequestBody @Valid TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req) {
+        return this.service.updateById(vhclType, req);
+    }
+
+    @ApiOperation(value = "차종별 차량크기 관리 정보변경/생성-목록(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbScVhclTypeSizeMngmDto> mergeInfoList(final @RequestBody @Valid List<TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "차종별 차량크기 관리 정보변경/생성-개별(TB_SC_VHCL_TYPE_SIZE_MNGM)", response = TbScVhclTypeSizeMngmDto.class)
+    @PostMapping(value = "/{vhclType}", produces = {"application/json; charset=utf8"})
+    public TbScVhclTypeSizeMngmDto mergeInfo(@PathVariable("vhclType") final Integer vhclType, final @RequestBody @Valid TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+}

+ 20 - 0
src/main/java/com/its/op/dao/repository/its/scrs/TbScVhclSizePceMngmRepository.java

@@ -0,0 +1,20 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScVhclSizePceMngm;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface TbScVhclSizePceMngmRepository extends JpaRepository<TbScVhclSizePceMngm, Integer>, JpaSpecificationExecutor<TbScVhclSizePceMngm> {
+
+    @Query("select p from TbScVhclSizePceMngm p")
+    List<TbScVhclSizePceMngm> findAll();
+
+    @Query("select p from TbScVhclSizePceMngm p")
+    List<TbScVhclSizePceMngm> findAllList();
+
+}

+ 20 - 0
src/main/java/com/its/op/dao/repository/its/scrs/TbScVhclTypeSizeMngmRepository.java

@@ -0,0 +1,20 @@
+package com.its.op.dao.repository.its.scrs;
+
+import com.its.op.entity.its.scrs.TbScVhclTypeSizeMngm;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface TbScVhclTypeSizeMngmRepository extends JpaRepository<TbScVhclTypeSizeMngm, Integer>, JpaSpecificationExecutor<TbScVhclTypeSizeMngm> {
+
+    @Query("select p from TbScVhclTypeSizeMngm p")
+    List<TbScVhclTypeSizeMngm> findAll();
+
+    @Query("select p from TbScVhclTypeSizeMngm p")
+    List<TbScVhclTypeSizeMngm> findAllList();
+
+}

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

@@ -29,5 +29,12 @@ public class ScIxrCmraTfvlDto implements Serializable {
     @JsonProperty("tfvl")
     private Integer tfvl;
 
+    @ApiModelProperty("환산 교통량")
+    @JsonProperty("pce_tfvl")
+    private Integer pceTfvl;
+
+    @ApiModelProperty("버스교통량")
+    @JsonProperty("bus_tfvl")
+    private Integer busTfvl;
 
 }

+ 61 - 0
src/main/java/com/its/op/dto/its/scrs/ScTfvlDto.java

@@ -138,4 +138,65 @@ public class ScTfvlDto implements Serializable {
     @JsonProperty("uncn_rght_tfvl")
     private Integer uncnRghtTfvl;
 
+    // 20230904: 스마트교차로 추가
+    @ApiModelProperty("대 U턴 교통량")
+    @JsonProperty("lrg_uturn_tfvl")
+    private Integer lrgUturnTfvl;
+
+    @ApiModelProperty("중 U턴 교통량")
+    @JsonProperty("mddl_uturn_tfvl")
+    private Integer mddlUturnTfvl;
+
+    @ApiModelProperty("소 U턴 교통량")
+    @JsonProperty("smal_uturn_tfvl")
+    private Integer smalUturnTfvl;
+
+    @ApiModelProperty("환산 대 직진 교통량")
+    @JsonProperty("pce_lrg_go_tfvl")
+    private Integer pceLrgGoTfvl;
+
+    @ApiModelProperty("환산 중 직진 교통량")
+    @JsonProperty("pce_mddl_go_tfvl")
+    private Integer pceMddlGoTfvl;
+
+    @ApiModelProperty("환산 소 직진 교통량")
+    @JsonProperty("pce_smal_go_tfvl")
+    private Integer pceSmalGoTfvl;
+
+    @ApiModelProperty("환산 대 좌회전 교통량")
+    @JsonProperty("pce_lrg_left_tfvl")
+    private Integer pceLrgLeftTfvl;
+
+    @ApiModelProperty("환산 중 좌회전 교통량")
+    @JsonProperty("pce_mddl_left_tfvl")
+    private Integer pceMddlLeftTfvl;
+
+    @ApiModelProperty("환산 소 좌회전 교통량")
+    @JsonProperty("pce_smal_left_tfvl")
+    private Integer pceSmalLeftTfvl;
+
+    @ApiModelProperty("환산 대 우회전 교통량")
+    @JsonProperty("pce_lrg_rght_tfvl")
+    private Integer pceLrgRghtTfvl;
+
+    @ApiModelProperty("환산 중 우회전 교통량")
+    @JsonProperty("pce_mddl_rght_tfvl")
+    private Integer pceMddlRghtTfvl;
+
+    @ApiModelProperty("환산 소 우회전 교통량")
+    @JsonProperty("pce_smal_rght_tfvl")
+    private Integer pceSmalRghtTfvl;
+
+    @ApiModelProperty("환산 대 U턴 교통량")
+    @JsonProperty("pce_lrg_uturn_tfvl")
+    private Integer pceLrgUturnTfvl;
+
+    @ApiModelProperty("환산 중 U턴 교통량")
+    @JsonProperty("pce_mddl_uturn_tfvl")
+    private Integer pceMddlUturnTfvl;
+
+    @ApiModelProperty("환산 소 U턴 교통량")
+    @JsonProperty("pce_smal_uturn_tfvl")
+    private Integer pceSmalUturnTfvl;
+
 }

+ 72 - 0
src/main/java/com/its/op/dto/its/scrs/TbScVhclSizePceMngmDto.java

@@ -0,0 +1,72 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScVhclSizePceMngm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 차량크기별 승용차 환산계수 관리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScVhclSizePceMngmDto(차량크기별 승용차 환산계수 관리)")
+public class TbScVhclSizePceMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("차량크기(1:소, 2:중, 3:대)")  // N NUMBER(1)
+    @JsonProperty("vhcl_size")
+    private Integer vhclSize;
+
+    @ApiModelProperty("승용차 환산계수")  // Y NUMBER(5,2)
+    @JsonProperty("pce")
+    private Double pce;
+
+    @ApiModelProperty("차량크기 설명")  // Y VARCHAR2(50)
+    @JsonProperty("vhcl_desc")
+    private String vhclDesc;
+
+    @ApiModel("TbScVhclSizePceMngmUpdReq(차량크기별 승용차 환산계수 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScVhclSizePceMngmUpdReq {
+
+        @ApiModelProperty("차량크기(1:소, 2:중, 3:대), Nullable = N, NUMBER(1)")  // N NUMBER(1)
+        @JsonProperty("vhcl_size")
+        @PositiveOrZero
+        private Integer vhclSize;
+
+        @ApiModelProperty("승용차 환산계수, , NUMBER(5,2)")  // Y NUMBER(5,2)
+        @JsonProperty("pce")
+        private Double pce;
+
+        @ApiModelProperty("차량크기 설명, Nullable = Y, VARCHAR2(50)")  // Y VARCHAR2(50)
+        @JsonProperty("vhcl_desc")
+        @Size(min=1, max=50)
+        private String vhclDesc;
+
+        @Builder
+        public TbScVhclSizePceMngmUpdReq(Integer vhcl_size, Double pce, String vhcl_desc) {
+            this.vhclSize = vhcl_size;
+            this.pce = pce;
+            this.vhclDesc = vhcl_desc;
+        }
+
+        public TbScVhclSizePceMngm toEntity() {
+            return TbScVhclSizePceMngm.builder()
+                    .vhclSize(this.vhclSize)
+                    .pce(this.pce)
+                    .vhclDesc(this.vhclDesc)
+                    .build();
+        }
+
+    }
+
+}

+ 95 - 0
src/main/java/com/its/op/dto/its/scrs/TbScVhclTypeSizeMngmDto.java

@@ -0,0 +1,95 @@
+package com.its.op.dto.its.scrs;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.entity.its.scrs.TbScVhclTypeSizeMngm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.PositiveOrZero;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 차종별 차량크기 관리 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbScVhclTypeSizeMngmDto(차종별 차량크기 관리)")
+public class TbScVhclTypeSizeMngmDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("차종(1,2,3,4,5,6,7,8,9,10,11,12)")  // N NUMBER(2)
+    @JsonProperty("vhcl_type")
+    private Integer vhclType;
+
+    @ApiModelProperty("차량크기(1:소, 2:중, 3:대)")  // Y NUMBER(1)
+    @JsonProperty("vhcl_size")
+    private Integer vhclSize;
+
+    @ApiModelProperty("차종 종별")  // Y VARCHAR2(100)
+    @JsonProperty("vhcl_type_desc")
+    private String vhclTypeDesc;
+
+    @ApiModelProperty("차종 분류기준")  // Y VARCHAR2(200)
+    @JsonProperty("vhcl_type_rmrk")
+    private String vhclTypeRmrk;
+
+    @ApiModelProperty("차종 예시차량")  // Y VARCHAR2(1000)
+    @JsonProperty("vhcl_type_exam")
+    private String vhclTypeExam;
+
+    @ApiModel("TbScVhclTypeSizeMngmUpdReq(차종별 차량크기 관리 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor//(access = AccessLevel.PROTECTED)
+    public static class TbScVhclTypeSizeMngmUpdReq {
+
+        @ApiModelProperty("차종(1,2,3,4,5,6,7,8,9,10,11,12), Nullable = N, NUMBER(2)")  // N NUMBER(2)
+        @JsonProperty("vhcl_type")
+        @PositiveOrZero
+        private Integer vhclType;
+
+        @ApiModelProperty("차량크기(1:소, 2:중, 3:대), Nullable = Y, NUMBER(1)")  // Y NUMBER(1)
+        @JsonProperty("vhcl_size")
+        @PositiveOrZero
+        private Integer vhclSize;
+
+        @ApiModelProperty("차종 종별, Nullable = Y, VARCHAR2(100)")  // Y VARCHAR2(100)
+        @JsonProperty("vhcl_type_desc")
+        @Size(min=1, max=100)
+        private String vhclTypeDesc;
+
+        @ApiModelProperty("차종 분류기준, Nullable = Y, VARCHAR2(200)")  // Y VARCHAR2(200)
+        @JsonProperty("vhcl_type_rmrk")
+        @Size(min=1, max=200)
+        private String vhclTypeRmrk;
+
+        @ApiModelProperty("차종 예시차량, Nullable = Y, VARCHAR2(1000)")  // Y VARCHAR2(1000)
+        @JsonProperty("vhcl_type_exam")
+        @Size(min=1, max=1000)
+        private String vhclTypeExam;
+
+        @Builder
+        public TbScVhclTypeSizeMngmUpdReq(Integer vhcl_type, Integer vhcl_size, String vhcl_type_desc, String vhcl_type_rmrk, String vhcl_type_exam) {
+            this.vhclType = vhcl_type;
+            this.vhclSize = vhcl_size;
+            this.vhclTypeDesc = vhcl_type_desc;
+            this.vhclTypeRmrk = vhcl_type_rmrk;
+            this.vhclTypeExam = vhcl_type_exam;
+        }
+
+        public TbScVhclTypeSizeMngm toEntity() {
+            return TbScVhclTypeSizeMngm.builder()
+                    .vhclType(this.vhclType)
+                    .vhclSize(this.vhclSize)
+                    .vhclTypeDesc(this.vhclTypeDesc)
+                    .vhclTypeRmrk(this.vhclTypeRmrk)
+                    .vhclTypeExam(this.vhclTypeExam)
+                    .build();
+        }
+
+    }
+
+}

+ 60 - 0
src/main/java/com/its/op/entity/its/scrs/TbScVhclSizePceMngm.java

@@ -0,0 +1,60 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScVhclSizePceMngmDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 차량크기별 승용차 환산계수 관리 Entity Class
+ */
+@ApiModel("차량크기별 승용차 환산계수 관리")
+@Getter
+@Builder
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_SC_VHCL_SIZE_PCE_MNGM")
+public class TbScVhclSizePceMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("차량크기(1:소, 2:중, 3:대)")  // N NUMBER(1)
+    @Id
+    @Column(name = "VHCL_SIZE", nullable = false, columnDefinition = "NUMBER", length = 1)
+    private Integer vhclSize;
+
+    @ApiModelProperty("승용차 환산계수")  // Y NUMBER(5,2)
+    @Column(name = "PCE", columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double pce;
+
+    @ApiModelProperty("차량크기 설명")  // Y VARCHAR2(50)
+    @Column(name = "VHCL_DESC", length = 50)
+    private String vhclDesc;
+
+    public TbScVhclSizePceMngmDto toDto() {
+        return TbScVhclSizePceMngmDto.builder()
+                .vhclSize(this.vhclSize)
+                .pce(this.pce)
+                .vhclDesc(this.vhclDesc)
+                .build();
+    }
+
+    public TbScVhclSizePceMngm(Integer vhclSize) {
+        this.vhclSize = vhclSize;
+    }
+
+    public void updateInfo(TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req) {
+        this.pce = req.getPce();
+        this.vhclDesc = req.getVhclDesc();
+    }
+
+}

+ 72 - 0
src/main/java/com/its/op/entity/its/scrs/TbScVhclTypeSizeMngm.java

@@ -0,0 +1,72 @@
+package com.its.op.entity.its.scrs;
+
+import com.its.op.dto.its.scrs.TbScVhclTypeSizeMngmDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 차종별 차량크기 관리 Entity Class
+ */
+@ApiModel("차종별 차량크기 관리")
+@Getter
+@Builder
+@NoArgsConstructor//(access = AccessLevel.PROTECTED)
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_SC_VHCL_TYPE_SIZE_MNGM")
+public class TbScVhclTypeSizeMngm implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("차종(1,2,3,4,5,6,7,8,9,10,11,12)")  // N NUMBER(2)
+    @Id
+    @Column(name = "VHCL_TYPE", nullable = false, columnDefinition = "NUMBER", length = 2)
+    private Integer vhclType;
+
+    @ApiModelProperty("차량크기(1:소, 2:중, 3:대)")  // Y NUMBER(1)
+    @Column(name = "VHCL_SIZE", columnDefinition = "NUMBER", length = 1)
+    private Integer vhclSize;
+
+    @ApiModelProperty("차종 종별")  // Y VARCHAR2(100)
+    @Column(name = "VHCL_TYPE_DESC", length = 100)
+    private String vhclTypeDesc;
+
+    @ApiModelProperty("차종 분류기준")  // Y VARCHAR2(200)
+    @Column(name = "VHCL_TYPE_RMRK", length = 200)
+    private String vhclTypeRmrk;
+
+    @ApiModelProperty("차종 예시차량")  // Y VARCHAR2(1000)
+    @Column(name = "VHCL_TYPE_EXAM", length = 1000)
+    private String vhclTypeExam;
+
+    public TbScVhclTypeSizeMngmDto toDto() {
+        return TbScVhclTypeSizeMngmDto.builder()
+                .vhclType(this.vhclType)
+                .vhclSize(this.vhclSize)
+                .vhclTypeDesc(this.vhclTypeDesc)
+                .vhclTypeRmrk(this.vhclTypeRmrk)
+                .vhclTypeExam(this.vhclTypeExam)
+                .build();
+    }
+
+    public TbScVhclTypeSizeMngm(Integer vhclType) {
+        this.vhclType = vhclType;
+    }
+
+    public void updateInfo(TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req) {
+        this.vhclSize = req.getVhclSize();
+        this.vhclTypeDesc = req.getVhclTypeDesc();
+        this.vhclTypeRmrk = req.getVhclTypeRmrk();
+        this.vhclTypeExam = req.getVhclTypeExam();
+    }
+
+}

+ 92 - 0
src/main/java/com/its/op/service/its/scrs/TbScVhclSizePceMngmService.java

@@ -0,0 +1,92 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScVhclSizePceMngmRepository;
+import com.its.op.dto.its.scrs.TbScVhclSizePceMngmDto;
+import com.its.op.entity.its.scrs.TbScVhclSizePceMngm;
+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 TbScVhclSizePceMngmService {
+
+    private final TbScVhclSizePceMngmRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScVhclSizePceMngm requireOne(Integer vhclSize) throws NoSuchElementException {
+        Optional<TbScVhclSizePceMngm> info = this.repo.findById(vhclSize);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + vhclSize);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScVhclSizePceMngmDto> findAll() {
+        List<TbScVhclSizePceMngmDto> result = new ArrayList<>();
+        List<TbScVhclSizePceMngm> data = this.repo.findAll();
+        for (TbScVhclSizePceMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScVhclSizePceMngmDto> findAllList() {
+        List<TbScVhclSizePceMngmDto> result = new ArrayList<>();
+        List<TbScVhclSizePceMngm> data = this.repo.findAllList();
+        for (TbScVhclSizePceMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScVhclSizePceMngmDto findById(Integer vhclSize) {
+        TbScVhclSizePceMngm entity = requireOne(vhclSize);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScVhclSizePceMngmDto updateById(Integer vhclSize, TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req) {
+        TbScVhclSizePceMngm entity = requireOne(vhclSize);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScVhclSizePceMngmDto> mergeInfoList(List<TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq> reqList) {
+        List<TbScVhclSizePceMngmDto> result = new ArrayList<>();
+        for (TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req : reqList) {
+            TbScVhclSizePceMngm obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScVhclSizePceMngmDto mergeInfo(TbScVhclSizePceMngmDto.TbScVhclSizePceMngmUpdReq req) {
+        TbScVhclSizePceMngm obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+}

+ 92 - 0
src/main/java/com/its/op/service/its/scrs/TbScVhclTypeSizeMngmService.java

@@ -0,0 +1,92 @@
+package com.its.op.service.its.scrs;
+
+import com.its.op.dao.repository.its.scrs.TbScVhclTypeSizeMngmRepository;
+import com.its.op.dto.its.scrs.TbScVhclTypeSizeMngmDto;
+import com.its.op.entity.its.scrs.TbScVhclTypeSizeMngm;
+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 TbScVhclTypeSizeMngmService {
+
+    private final TbScVhclTypeSizeMngmRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbScVhclTypeSizeMngm requireOne(Integer vhclType) throws NoSuchElementException {
+        Optional<TbScVhclTypeSizeMngm> info = this.repo.findById(vhclType);
+        if (info.isPresent()) {
+            return info.get();
+        }
+        else {
+            throw new NoSuchElementException("데이터가 존재하지 않습니다: " + vhclType);
+        }
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScVhclTypeSizeMngmDto> findAll() {
+        List<TbScVhclTypeSizeMngmDto> result = new ArrayList<>();
+        List<TbScVhclTypeSizeMngm> data = this.repo.findAll();
+        for (TbScVhclTypeSizeMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbScVhclTypeSizeMngmDto> findAllList() {
+        List<TbScVhclTypeSizeMngmDto> result = new ArrayList<>();
+        List<TbScVhclTypeSizeMngm> data = this.repo.findAllList();
+        for (TbScVhclTypeSizeMngm entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbScVhclTypeSizeMngmDto findById(Integer vhclType) {
+        TbScVhclTypeSizeMngm entity = requireOne(vhclType);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbScVhclTypeSizeMngmDto updateById(Integer vhclType, TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req) {
+        TbScVhclTypeSizeMngm entity = requireOne(vhclType);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbScVhclTypeSizeMngmDto> mergeInfoList(List<TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq> reqList) {
+        List<TbScVhclTypeSizeMngmDto> result = new ArrayList<>();
+        for (TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req : reqList) {
+            TbScVhclTypeSizeMngm obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbScVhclTypeSizeMngmDto mergeInfo(TbScVhclTypeSizeMngmDto.TbScVhclTypeSizeMngmUpdReq req) {
+        TbScVhclTypeSizeMngm obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+}

+ 212 - 15
src/main/resources/mybatis/mapper/its/scrs/ScTfvlStatisticsMapper.xml

@@ -33,7 +33,22 @@
                SUM(A.BIKE_RGHT_TFVL) AS bikeRghtTfvl,
                SUM(A.UNCN_GO_TFVL) AS uncnGoTfvl,
                SUM(A.UNCN_LEFT_TFVL) AS uncnLeftTfvl,
-               SUM(A.UNCN_RGHT_TFVL) AS uncnRghtTfvl
+               SUM(A.UNCN_RGHT_TFVL) AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
         FROM TB_SC_IMGN_DTCT_RAW_CLCT A,
              (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                      B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -84,7 +99,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
           FROM TB_SC_ACRD_STAT_15M A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                        B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -135,7 +165,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
         FROM TB_SC_ACRD_STAT_30M A,
              (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                      B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -186,7 +231,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
         FROM TB_SC_ACRD_STAT_HH A,
              (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                      B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -237,7 +297,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
         FROM TB_SC_ACRD_STAT_DD A,
              (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                      B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -288,7 +363,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               SUM(A.LRG_UTURN_TFVL) AS lrgUturnTfvl,
+               SUM(A.MDDL_UTURN_TFVL) AS mddlUturnTfvl,
+               SUM(A.SMAL_UTURN_TFVL) AS smalUturnTfvl,
+               SUM(A.PCE_LRG_GO_TFVL) AS pceLrgGoTfvl,
+               SUM(A.PCE_MDDL_GO_TFVL) AS pceMddlGoTfvl,
+               SUM(A.PCE_SMAL_GO_TFVL) AS pceSmalGoTfvl,
+               SUM(A.PCE_LRG_LEFT_TFVL) AS pceLrgLeftTfvl,
+               SUM(A.PCE_MDDL_LEFT_TFVL) AS pceMddlLeftTfvl,
+               SUM(A.PCE_SMAL_LEFT_TFVL) AS pceSmalLeftTfvl,
+               SUM(A.PCE_LRG_RGHT_TFVL) AS pceLrgRghtTfvl,
+               SUM(A.PCE_MDDL_RGHT_TFVL) AS pceMddlRghtTfvl,
+               SUM(A.PCE_SMAL_RGHT_TFVL) AS pceSmalRghtTfvl,
+               SUM(A.PCE_LRG_UTURN_TFVL) AS pceLrgUturnTfvl,
+               SUM(A.PCE_MDDL_UTURN_TFVL) AS pceMddlUturnTfvl,
+               SUM(A.PCE_SMAL_UTURN_TFVL) AS pceSmalUturnTfvl
         FROM TB_SC_ACRD_STAT_MN A,
              (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                      B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -339,7 +429,22 @@
                A.BIKE_RGHT_TFVL AS bikeRghtTfvl,
                A.UNCN_GO_TFVL AS uncnGoTfvl,
                A.UNCN_LEFT_TFVL AS uncnLeftTfvl,
-               A.UNCN_RGHT_TFVL AS uncnRghtTfvl
+               A.UNCN_RGHT_TFVL AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_IMGN_DTCT_RAW_CLCT A,
                 (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -395,7 +500,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_LANE_STAT_15M A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -445,7 +565,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_LANE_STAT_30M A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -495,7 +630,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_LANE_STAT_HH A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -545,7 +695,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_LANE_STAT_DD A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -595,7 +760,22 @@
                0 AS bikeRghtTfvl,
                0 AS uncnGoTfvl,
                0 AS uncnLeftTfvl,
-               0 AS uncnRghtTfvl
+               0 AS uncnRghtTfvl,
+               A.LRG_UTURN_TFVL AS lrgUturnTfvl,
+               A.MDDL_UTURN_TFVL AS mddlUturnTfvl,
+               A.SMAL_UTURN_TFVL AS smalUturnTfvl,
+               A.PCE_LRG_GO_TFVL AS pceLrgGoTfvl,
+               A.PCE_MDDL_GO_TFVL AS pceMddlGoTfvl,
+               A.PCE_SMAL_GO_TFVL AS pceSmalGoTfvl,
+               A.PCE_LRG_LEFT_TFVL AS pceLrgLeftTfvl,
+               A.PCE_MDDL_LEFT_TFVL AS pceMddlLeftTfvl,
+               A.PCE_SMAL_LEFT_TFVL AS pceSmalLeftTfvl,
+               A.PCE_LRG_RGHT_TFVL AS pceLrgRghtTfvl,
+               A.PCE_MDDL_RGHT_TFVL AS pceMddlRghtTfvl,
+               A.PCE_SMAL_RGHT_TFVL AS pceSmalRghtTfvl,
+               A.PCE_LRG_UTURN_TFVL AS pceLrgUturnTfvl,
+               A.PCE_MDDL_UTURN_TFVL AS pceMddlUturnTfvl,
+               A.PCE_SMAL_UTURN_TFVL AS pceSmalUturnTfvl
           FROM TB_SC_LANE_STAT_MN A,
                (SELECT A.IXR_ID, A.IXR_NM, B.CMRA_ID, B.ISTL_LCTN,
                 B.DRCT_DVSN_CD, fn_codeName('DRCT', B.DRCT_DVSN_CD) AS DRCT_DVSN_NM
@@ -627,9 +807,26 @@
                    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) +
-                   NVL(UTURN_TFVL, 0)) AS tfvl
+                   NVL(LRG_UTURN_TFVL, 0) +
+                   NVL(MDDL_UTURN_TFVL, 0) +
+                   NVL(SMAL_UTURN_TFVL, 0)
+                   ) AS tfvl,
+               SUM(NVL(PCE_LRG_GO_TFVL, 0) +
+                   NVL(PCE_MDDL_GO_TFVL, 0) +
+                   NVL(PCE_SMAL_GO_TFVL, 0) +
+                   NVL(PCE_LRG_LEFT_TFVL, 0) +
+                   NVL(PCE_MDDL_LEFT_TFVL, 0) +
+                   NVL(PCE_SMAL_LEFT_TFVL, 0) +
+                   NVL(PCE_LRG_RGHT_TFVL, 0) +
+                   NVL(PCE_MDDL_RGHT_TFVL, 0) +
+                   NVL(PCE_SMAL_RGHT_TFVL, 0) +
+                   NVL(PCE_LRG_UTURN_TFVL, 0) +
+                   NVL(PCE_MDDL_UTURN_TFVL, 0) +
+                   NVL(PCE_SMAL_UTURN_TFVL, 0)
+                   ) AS pceTfvl,
+               SUM(NVL(BUS_DVRS_LANE_GO_TFVL, 0) +
+                   NVL(BUS_DVRS_LANE_LEFT_TFVL, 0)
+                   ) AS busTfvl
         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