Commit f776304f authored by zhoushiguang's avatar zhoushiguang

干线周报接口-运行状态接口定义

parent 551f4cbd
package net.wanji.opt.controllerv2.report;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.report.design.CrossRunStateAnalysisResult;
import net.wanji.opt.controllerv2.report.design.GreenReportRunStateResult;
import net.wanji.opt.servicev2.report.AnalysisGreenWavePeakDetailService;
import net.wanji.opt.vo2.report.GreenReportRunStateResponseVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 路口运行状态 接口API
* </p>
* @version 1.0
* @author
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping("/cross-run-state")
@Api(value="CrossRunStateController", description="", tags = "路口分析报告-周报")
public class CrossRunStateController {
@ApiOperation(httpMethod="GET",value="2.1-交通运行总体情况", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossIds", value = "路口ID,多个id用','分隔【为空时查询所有】", required = true, dataType = "String",defaultValue = "1,2"),
@ApiImplicitParam(name = "year", value = "年份", required = true, dataType = "String",defaultValue = "2025"),
@ApiImplicitParam(name = "week", value = "一年的第几周", required = true, dataType = "String",defaultValue = "14"),
})
@GetMapping(value = "/getTotalitySituation")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossRunStateAnalysisResult.class),
})
public JsonViewObject getTotalitySituation(String ids,Integer year,Integer week) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
}
package net.wanji.opt.controllerv2.report.design;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossRunStateAnalysisResult extends ParentResult {
private CrossRunStateAnalysisResultResponse content;
public CrossRunStateAnalysisResultResponse getContent() {
return content;
}
public CrossRunStateAnalysisResult setContent(CrossRunStateAnalysisResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossRunStateAnalysisResultResponse {
@ApiModelProperty(value = "区域周最大流量路口名称", example = "经十路(舜耕路-山大路)")
private String maxFlowCrossName;
@ApiModelProperty(value = "区域周交通指数最大路口名称", example = "经十路(舜耕路-山大路)")
private String maxTrafficIndexCrossName;
@ApiModelProperty(value = "工作日平均流量", example = "13459899辆")
private String workDayAvgFlow;
@ApiModelProperty(value = "工作日早高峰最大小时流量", example = "300辆")
private String workDayAmPeakMaxHourFlow;
@ApiModelProperty(value = "工作日晚高峰最大小时流量", example = "300辆")
private String workDayPmPeakMaxHourFlow;
@ApiModelProperty(value = "工作日平峰最大小时流量", example = "300辆")
private String workDayFmPeakMaxHourFlow;
@ApiModelProperty(value = "周末全天平均流量", example = "提升10%")
private String weekEndAvgFlow;
@ApiModelProperty(value = "工作日早高峰平均交通指数", example = "4.5")
private String workDayAmPeakAvgTrafficIndex;
@ApiModelProperty(value = "工作日晚高峰平均交通指数", example = "5.5")
private String workDayPmPeakAvgTrafficIndex;
//========================================================================
@ApiModelProperty(value = "工作日平均流量与上周比较情况", example = "13459899辆")
private String avgFlowLastWeekCompare;
@ApiModelProperty(value = "工作日早高峰最大小时流量与上周比较情况", example = "300辆")
private String amPeakMaxHourFlowLastWeekCompare;
@ApiModelProperty(value = "工作日晚高峰最大小时流量与上周比较情况", example = "300辆")
private String pmPeakMaxHourFlowLastWeekCompare;
@ApiModelProperty(value = "工作日平峰最大小时流量与上周比较情况", example = "300辆")
private String fmPeakMaxHourFlowLastWeekCompare;
@ApiModelProperty(value = "周末全天平均流量与上周比较情况", example = "提升10%")
private String endAvgFlowLastWeekCompare;
@ApiModelProperty(value = "工作日早高峰平均交通指数与上周比较情况", example = "4.5")
private String amPeakAvgTrafficIndexLastWeekCompare;
@ApiModelProperty(value = "工作日晚高峰平均交通指数与上周比较情况", example = "5.5")
private String pmPeakAvgTrafficIndexLastWeekCompare;
//================================================================================================//
private List<CrossRunStateDetailAnalysisData> dataList = new ArrayList<>();
}
@Data
class CrossRunStateDetailAnalysisData {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)")
private String crossName;
@ApiModelProperty(value = "本周高峰最大小时流量", example = "8900")
private Integer thisWeekPeakMaxFlow;
@ApiModelProperty(value = "上周周末最大小时流量", example = "8900")
private Integer lastWeekPeakMaxFlow;
@ApiModelProperty(value = "本周周末最大小时流量", example = "8900")
private Integer thisWeekEndMaxFlow;
@ApiModelProperty(value = "上周周末最大小时流量", example = "8900")
private Integer lastWeekEndMaxFlow;
@ApiModelProperty(value = "本周工作日早高峰交通指数", example = "8900")
private Integer thisWeekWorkDayTrafficIndex;
@ApiModelProperty(value = "上周周工作日早高峰交通指数", example = "8900")
private Integer lastWeekWorkDayTrafficIndex;
}
......@@ -122,21 +122,21 @@ public class AnalysisGreenWavePeakDetailServiceImpl extends BaseDubboInterfaceIm
weekData.setThisWeekCongestSpan(DateUtil.formatDate(vo1.getCongestStartTime(), "HH:mm") + "~" + DateUtil.formatDate(vo2.getCongestEndTime(), "HH:mm"));
}
if (Objects.nonNull(lastWeekDataList)){
//上周高峰指标数据
Optional<AnalysisGreenWavePeakDetail> optional = lastWeekDataList.stream().filter(o -> Objects.equals(o.getWeekDay(), detail.getWeekDay()) && Objects.equals(o.getPeakType(), detail.getPeakType())).findFirst();
if (optional.isPresent()) {
weekData.setLastWeekAvgSpeed(optional.get().getSpeed());
weekData.setLastWeekCongestIndex(optional.get().getTrafficIndex());
weekData.setLastWeekTravelTime(optional.get().getTravelTime() == null ? 0D : ArithOfBigDecmial.div(optional.get().getTravelTime().doubleValue(), 60));
//上周峰期内拥堵时段数据获取
List<GreenCongestTimeSpanVO> congestTimeSpan2 = analysisGreenWavePeakDetailMapper.findCongestTimeSpanInPeakTime(lastWeek, k, optional.get().getPeakStartTime(), optional.get().getPeakEndTime());
GreenCongestTimeSpanVO vo3 = congestTimeSpan2.stream().min(Comparator.comparing(GreenCongestTimeSpanVO::getCongestStartTime)).orElse(new GreenCongestTimeSpanVO());
GreenCongestTimeSpanVO vo4 = congestTimeSpan2.stream().max(Comparator.comparing(GreenCongestTimeSpanVO::getCongestEndTime)).orElse(new GreenCongestTimeSpanVO());
if (vo3.getCongestStartTime() != null && vo4.getCongestEndTime() != null) {
weekData.setLastWeekCongestSpan(DateUtil.formatDate(vo3.getCongestStartTime(), "HH:mm") + "~" + DateUtil.formatDate(vo4.getCongestEndTime(), "HH:mm"));
//上周高峰指标数据
Optional<AnalysisGreenWavePeakDetail> optional = lastWeekDataList.stream().filter(o -> Objects.equals(o.getWeekDay(), detail.getWeekDay()) && Objects.equals(o.getPeakType(), detail.getPeakType())).findFirst();
if (optional.isPresent()) {
weekData.setLastWeekAvgSpeed(optional.get().getSpeed());
weekData.setLastWeekCongestIndex(optional.get().getTrafficIndex());
weekData.setLastWeekTravelTime(optional.get().getTravelTime() == null ? 0D : ArithOfBigDecmial.div(optional.get().getTravelTime().doubleValue(), 60));
//上周峰期内拥堵时段数据获取
List<GreenCongestTimeSpanVO> congestTimeSpan2 = analysisGreenWavePeakDetailMapper.findCongestTimeSpanInPeakTime(lastWeek, k, optional.get().getPeakStartTime(), optional.get().getPeakEndTime());
GreenCongestTimeSpanVO vo3 = congestTimeSpan2.stream().min(Comparator.comparing(GreenCongestTimeSpanVO::getCongestStartTime)).orElse(new GreenCongestTimeSpanVO());
GreenCongestTimeSpanVO vo4 = congestTimeSpan2.stream().max(Comparator.comparing(GreenCongestTimeSpanVO::getCongestEndTime)).orElse(new GreenCongestTimeSpanVO());
if (vo3.getCongestStartTime() != null && vo4.getCongestEndTime() != null) {
weekData.setLastWeekCongestSpan(DateUtil.formatDate(vo3.getCongestStartTime(), "HH:mm") + "~" + DateUtil.formatDate(vo4.getCongestEndTime(), "HH:mm"));
}
weekData.setLastWeekDayPeakSpan(DateUtil.formatDate(optional.get().getPeakStartTime(), "HH:mm") + "~" + DateUtil.formatDate(optional.get().getPeakEndTime(), "HH:mm"));
}
weekData.setLastWeekDayPeakSpan(DateUtil.formatDate(optional.get().getPeakStartTime(), "HH:mm") + "~" + DateUtil.formatDate(optional.get().getPeakEndTime(), "HH:mm"));
}
}
tableDataList.add(weekData);
......
......@@ -48,7 +48,7 @@ public class BaseAreaInfoServiceImpl implements BaseAreaInfoService {
/**
* 根据区划类型查询对应集合(含子集)
* @param type
* @param types
* @return
*/
public List<BaseAreaInfoPO> selectByType(String types) {
......@@ -61,7 +61,8 @@ public class BaseAreaInfoServiceImpl implements BaseAreaInfoService {
for (BaseAreaInfoPO parent : parentList) {
List<BaseAreaInfoPO> child = baseAreaInfoMapper.selectByParentCode(parent.getId());
retList.add(parent);
retList.addAll(child);
//屏蔽子区输出
//retList.addAll(child);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment