济菏高速数据中心代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

415 lines
19 KiB

package com.zc.business.controller;
import com.alibaba.fastjson.JSONArray;
10 months ago
import com.ruoyi.common.annotation.Log;
10 months ago
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
10 months ago
import com.ruoyi.common.core.page.TableDataInfo;
10 months ago
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.*;
import com.zc.business.request.DcTrafficMetricsDataRequest;
import com.zc.business.request.DcTrafficSectionDataRequest;
import com.zc.business.service.*;
import com.zc.common.core.httpclient.exception.HttpException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
10 months ago
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
10 months ago
/**
* 交通数据统计
*
* @author xiepufeng
*/
@Api(tags = "交通数据统计")
@RestController
@RequestMapping("/business/traffic-statistics")
10 months ago
public class DcTrafficStatisticsController extends BaseController {
@Autowired
private IDcTrafficSectionStatisticsService dcTrafficSectionStatisticsService;
@Autowired
12 months ago
private IDcTrafficStatisticsService dcTrafficStatisticsService;
@Autowired
private IDcTollStationStatisticsDataService dcTollStationStatisticsDataService;
@Autowired
private IDcGantryStatisticsDataService dcGantryStatisticsDataService;
@Autowired
private IDcGantryMetricsStatisticsDataService dcGantryMetricsStatisticsDataService;
/**
* 获取当前交通截面数据
*
* @param request 请求参数封装了对于交通截面数据查询的详细要求
* @return 返回一个AjaxResult对象其中包含了查询结果如果查询成功则结果中封装了当前交通截面的数据DcTrafficSectionData类型
*/
@ApiOperation("获取当前交通截面数据")
@GetMapping("/current/sections")
public AjaxResult currentSections(DcTrafficSectionDataRequest request){
// 调用服务层方法,查询当前交通截面数据
List<DcTrafficSectionData> dcTrafficMetricsData = dcTrafficSectionStatisticsService.currentSections(request);
// 将查询结果封装为AjaxResult对象返回
return AjaxResult.success(dcTrafficMetricsData);
}
/**
* 获取历史交通截面数据
*
* @param request 包含交通截面数据请求参数的对象
* @return 返回一个包含历史交通截面数据的AjaxResult对象
*/
@ApiOperation("获取历史交通截面数据")
@GetMapping("/history/sections")
public AjaxResult historySections(DcTrafficSectionDataRequest request){
// 调用服务层方法,获取历史交通截面的统计数据
List<DcTrafficSectionData> dcTrafficMetricsData = dcTrafficSectionStatisticsService.historySections(request);
// 将获取到的历史交通截面数据封装成AjaxResult对象并返回
return AjaxResult.success(dcTrafficMetricsData);
}
/**
* 获取当前交通特征指数
*
* @param request 请求参数封装了获取交通指标所需的数据和条件
* @return 返回当前交通特征指数的数据结果使用AjaxResult包装
*/
@ApiOperation("获取当前交通特征指数")
@GetMapping("/current/metrics")
public AjaxResult currentTrafficMetrics(DcTrafficMetricsDataRequest request){
// 调用服务层方法,获取当前交通指标数据
List<DcTrafficMetricsData> dcTrafficMetricsData = dcTrafficSectionStatisticsService.currentTrafficMetrics(request);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(dcTrafficMetricsData);
}
/**
* 获取历史交通特征指数
*
* @param request 请求参数包含需要查询的历史交通特征指数的详细信息
* @return 返回一个AjaxResult对象其中包含了查询结果的成功状态和历史交通特征指数数据列表
*/
@ApiOperation("获取历史交通特征指数")
@GetMapping("/history/metrics")
public AjaxResult historyTrafficMetrics(DcTrafficMetricsDataRequest request){
// 调用服务层方法,查询历史交通特征指数数据
List<DcTrafficMetricsData> dcTrafficMetricsDataList = dcTrafficSectionStatisticsService.historyTrafficMetrics(request);
// 将查询结果封装成成功响应并返回
return AjaxResult.success(dcTrafficMetricsDataList);
}
/**
* 获取当前拥堵路段
*
* @param direction 交通方向指定查询哪个方向的拥堵路段具体方向的定义根据实际业务而定
* @return 返回一个AjaxResult对象其中包含了查询结果如果查询成功则结果中封装了当前拥堵路段的数据列表
*/
@ApiOperation("获取当前拥堵路段")
@GetMapping("/current/congested")
public AjaxResult currentCongestedSection(Byte direction){
// 调用服务层方法,获取当前交通指标数据
List<DcCongestedSectionData> dcTrafficMetricsData = dcTrafficSectionStatisticsService.currentCongestedSection(direction);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(dcTrafficMetricsData);
}
/**
* 获取收费站统计数据
*
* @param request 包含查询条件的请求对象用于筛选历史收费站统计数据
* @return 返回一个AjaxResult对象其中包含了查询到的收费站统计数据列表
*/
@ApiOperation("获取收费站统计数据")
@GetMapping("/history/toll-station")
public AjaxResult historyTollStation(DcTollStationStatisticsData request){
// 调用服务层方法,根据请求条件查询历史车收费站数据
List<DcTollStationStatisticsData> dcStatisticsData = dcTollStationStatisticsDataService.tollStationData(request);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(dcStatisticsData);
}
/**
* 获取累计车流量
*
* @param request 包含查询条件的请求对象用于筛选历史收费站统计数据
* @return 返回一个AjaxResult对象其中包含了查询到的收费站统计数据列表
*/
@ApiOperation("获取累计车流量")
@GetMapping("/history/accumulated-flow")
public AjaxResult accumulatedFlow(DcTollStationStatisticsData request){
// 调用服务层方法,根据请求条件查询历史车收费站数据
List<DcTollStationStatisticsData> dcStatisticsData = dcTollStationStatisticsDataService.accumulatedFlow(request);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(dcStatisticsData);
}
/**
* 获取门架统计数据
*
* @param request 包含查询条件的请求对象用于筛选历史门架统计数据
* @return 返回一个AjaxResult对象其中包含了查询到的门架统计数据列表
*/
@ApiOperation("获取门架统计数据")
@GetMapping("/history/gantry")
public AjaxResult historyGantryData(DcGantryStatisticsData request){
// 调用服务层方法,根据请求条件查询历史车门架数据
List<DcGantryStatisticsData> dcStatisticsData = dcGantryStatisticsDataService.gantryData(request);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(dcStatisticsData);
}
/**
* 交通流统计 列表
* @param startDate
* @param endDate
* @param direction
* @param periodType
* @return
*/
@ApiOperation("交通流统计")
@GetMapping("/history/trafficFlowStatistics")
10 months ago
public TableDataInfo trafficFlowStatistics(String startDate, String endDate, String direction, String periodType){
startPage();
List<Map<String,String>> mapList = dcGantryStatisticsDataService.trafficFlowStatistics(startDate,endDate,direction,periodType);
// 将查询结果封装为成功响应并返回
10 months ago
return getDataTable(mapList);
}
/**
* 全路段双向实时车流量
* @param startDate 时间
* @param direction 方向
* @param periodType 时间粒子
*/
10 months ago
@ApiOperation("全路段车流量状况分析")
@GetMapping("/history/realTimeTrafficFlow")
public AjaxResult realTimeTrafficFlow(String startDate, String direction,String periodType ){
List<Map<String,String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow(startDate,direction,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
/**
* 车流量时段分析
* @param startDate 时间
* @param direction 方向
* @param periodType 时间粒子
*/
@ApiOperation("车流量时段分析")
@GetMapping("/history/trafficPeriodAnalysis")
public AjaxResult trafficPeriodAnalysis(String startDate, String direction,String periodType ){
List<Map<String,String>> mapList = dcGantryStatisticsDataService.trafficPeriodAnalysis(startDate,direction,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
10 months ago
@ApiOperation("断面车流量排名")
@GetMapping("/history/sectionTrafficRanking")
public AjaxResult sectionTrafficRanking(String startDate, String direction,String periodType ){
List<Map<String, String>> dcStatisticsData = dcGantryStatisticsDataService.sectionTrafficRanking(startDate,direction,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(dcStatisticsData);
}
/**
* sectionTrafficIndexAnalysis
* @param startDate 时间
* @param direction 方向
* @param periodType 时间粒子
* @param ranking 排名 1 饱和度 2拥挤度 3交通特征指数
*
*/
@ApiOperation("路段交通指标分析")
@GetMapping("/history/sectionTrafficIndexAnalysis")
public AjaxResult sectionTrafficIndexAnalysis(String startDate, String direction,String periodType,Long ranking ){
List<Map<String, Object>> mapList = dcGantryMetricsStatisticsDataService.sectionTrafficIndexAnalysis(startDate,direction,periodType,ranking);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
@ApiOperation("通指标时间分布")
@GetMapping("/history/passIndicatorTimeDistribution")
public AjaxResult passIndicatorTimeDistribution(String startDate, String direction,String periodType ){
List<Map<String, Object>> mapList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(startDate,direction,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
@ApiOperation("交通指标雷达图")
@GetMapping("/history/radarMapOfTrafficIndicators")
public AjaxResult radarMapOfTrafficIndicators(String startDate, String direction,String periodType ){
Map<String, Object> map = dcGantryMetricsStatisticsDataService.radarMapOfTrafficIndicators(startDate,direction,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(map);
}
10 months ago
@ApiOperation("综合指标查询")
@GetMapping("/history/comprehensiveIndexQuery")
public TableDataInfo comprehensiveIndexQuery(ComprehensiveIndexQuery comprehensiveIndexQuery){
startPage();
List<ComprehensiveIndexQuery> mapList = dcGantryMetricsStatisticsDataService.comprehensiveIndexQuery(comprehensiveIndexQuery);
// 将查询结果封装为成功响应并返回
return getDataTable(mapList);
}
10 months ago
@ApiOperation("导出综合指标")
//@PreAuthorize("@ss.hasPermi('system:event:export')")
@Log(title = "导出综合指标", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, @RequestBody ComprehensiveIndexQuery comprehensiveIndexQuery)
{
List<ComprehensiveIndexQuery> list = dcGantryMetricsStatisticsDataService.comprehensiveIndexQuery(comprehensiveIndexQuery);
ExcelUtil<ComprehensiveIndexQuery> util = new ExcelUtil<ComprehensiveIndexQuery>(ComprehensiveIndexQuery.class);
util.exportExcel(response, list, "事件信息数据");
}
/**
* 获取门架指标统计数据
*
* @param request 包含查询条件的请求对象用于筛选历史门架指标统计数据
* @return 返回一个AjaxResult对象其中包含了查询到的门架指标统计数据列表
*/
@ApiOperation("获取门架交通特指数数据")
@GetMapping("/history/gantry-metrics")
public AjaxResult historyGantryMetrics(DcGantryMetricsStatisticsData request){
// 调用服务层方法,根据请求条件查询历史车门架数据
List<DcGantryMetricsStatisticsData> dcStatisticsData = dcGantryMetricsStatisticsDataService.gantryMetricsData(request);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(dcStatisticsData);
}
/********************************************* 智慧高速平接口 **************************************************/
/**
* 获取在途车辆流量分车型
* 该接口不接受任何参数调用后返回在途车辆的统计数据数据格式为JSONObject
*
* @return AjaxResult 返回类型为AjaxResult其中包含了操作结果和在途车辆统计数据的JSONObject
*/
@ApiOperation("获取在途车辆流量(分车型)")
@GetMapping("/current/in-transit-vehicles")
public AjaxResult vehiclesInTransit() throws HttpException, IOException {
// 调用服务层方法,获取在途车辆的统计数据
JSONArray dcStatisticsData = dcTrafficStatisticsService.vehiclesInTransit();
return AjaxResult.success(dcStatisticsData);
}
@ApiOperation("获取在途车路段平均车速")
@GetMapping("/current/average-speed")
public AjaxResult currentAverageSpeed() throws HttpException, IOException {
// 调用服务层方法,获取在途车辆的统计数据
JSONArray dcStatisticsData = dcTrafficStatisticsService.currentAverageSpeed();
return AjaxResult.success(dcStatisticsData);
}
/**
* 获取当前拥堵事件信息智慧高速平台
*
* @return 返回一个AjaxResult对象其中包含了查询结果如果查询成功则结果中封装了当前拥堵路段的数据列表
*/
@ApiOperation("获取当前拥堵事件信息")
@GetMapping("/current/event-congested")
public AjaxResult currentEventCongested() throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
JSONArray jsonArray = dcTrafficStatisticsService.currentEventCongested();
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
/**
* 获取当前拥堵路段信息
*
* @return 返回一个AjaxResult对象其中包含了查询结果如果查询成功则结果中封装了当前拥堵路段的数据列表
*/
@ApiOperation("获取当前路段拥堵信息")
@GetMapping("/current/section-congested")
public AjaxResult currentSectionCongested() throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
List<DcRoadSectionCongestion> roadSectionCongestions = dcTrafficStatisticsService.currentSectionCongested();
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(roadSectionCongestions);
}
/**
* 获取车道占有率信息
*
*/
@ApiOperation("获取车道占有率信息")
@GetMapping("/history/lane-occupancy")
public AjaxResult laneOccupancy(String startDate, String endDate) throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
JSONArray jsonArray = dcTrafficStatisticsService.laneOccupancy(startDate, endDate);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
/**
* 断面小时车流量分车型
*/
@ApiOperation("断面小时车流量分车型")
@GetMapping("/history/sectionHourlyTrafficFlow")
public AjaxResult sectionHourlyTrafficFlow(String startDate, String endDate) throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
JSONArray jsonArray = dcTrafficStatisticsService.sectionHourlyTrafficFlow(startDate, endDate);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}/**
* 各收费站入口分车型车流量
*/
10 months ago
@ApiOperation("各收费站入口分车型小时车流量")
@GetMapping("/history/trafficFlowAtTollStationEntranceHour")
public AjaxResult trafficFlowAtTollStationEntranceHour(String startDate, String endDate,String stationType) throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
List<Map<String, String>> jsonArray = dcTrafficStatisticsService.trafficFlowAtTollStationEntrance(startDate, endDate, stationType);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
/**
* 各收费站入口分车型小时车流量
*/
10 months ago
@ApiOperation("各收费站入口分车型车流量")
@GetMapping("/history/trafficFlowAtTollStationEntrance")
public AjaxResult trafficFlowAtTollStationEntrance(String startDate, String endDate,String stationType) throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
JSONArray jsonArray = dcTrafficStatisticsService.trafficFlowAtTollStationEntranceHour(startDate, endDate, stationType);
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
/**
* 全路段双向实时车流量
* @param startDate 时间
* @param direction 方向
*/
@ApiOperation("全路段双向实时车流量")
@GetMapping("/history/realTimeTrafficFlowHour")
public AjaxResult realTimeTrafficFlowHour(String startDate,Long direction) throws HttpException, IOException{
List<Map<String,Object>> mapList = dcTrafficStatisticsService.realTimeTrafficFlowHour(startDate,direction);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
/**
* 全路段双向实时车流量
* @param startDate 时间
* @param direction 方向
*/
@ApiOperation("集团双向实时车流量")
@GetMapping("/history/realTimeTrafficFlowHour2")
public AjaxResult realTimeTrafficFlowHour2(String startDate,Long direction) throws HttpException, IOException{
JSONArray mapList = dcTrafficStatisticsService.realTimeTrafficFlowHour2(startDate,direction);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}
}