Browse Source

感知事件监测echarts导出

develop
lau572 5 months ago
parent
commit
28eaaee55c
  1. 200
      zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java
  2. 65
      zc-business/src/main/java/com/zc/business/domain/export/ManyTimesInterval.java
  3. 62
      zc-business/src/main/java/com/zc/business/domain/export/SectionPerceivedList.java
  4. 62
      zc-business/src/main/java/com/zc/business/domain/export/SelectSection.java
  5. 115
      zc-business/src/main/java/com/zc/business/domain/export/SelectStateType.java
  6. 63
      zc-business/src/main/java/com/zc/business/domain/export/SelectWarningType.java

200
zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java

@ -3,19 +3,20 @@ package com.zc.business.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcDispatch;
import com.zc.business.domain.DcWarning;
import com.zc.business.domain.export.*;
import com.zc.business.service.IDCPerceivedEventsWarningService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author 王思祥
@ -253,6 +254,44 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.selectManyTimesInterval(dcWarning));
}
/**
* @Description 导出感知事件多发时段
*
* @author liuwenge
* @date 2024/6/25 10:34
* @param response
* @param dcWarning
* @return com.ruoyi.common.core.domain.AjaxResult
*/
@ApiOperation(value = "导出感知事件多发时段",tags = {"ECharts导出"})
@GetMapping("/exportManyTimesInterval")
public AjaxResult exportManyTimesInterval(HttpServletResponse response,DcWarning dcWarning){
if (dcWarning==null||StringUtils.isBlank(dcWarning.getType())||dcWarning.getCurrently()==null||dcWarning.getLastYear()==null
||StringUtils.isBlank(dcWarning.getStartStakeMark())||StringUtils.isBlank(dcWarning.getEndStakeMark())
||StringUtils.isBlank(dcWarning.getDirection())){
return AjaxResult.error("参数错误");
}
HashMap<String,Object> map = perceivedEventsWarningService.selectManyTimesInterval(dcWarning);
List<ManyTimesInterval> list = new ArrayList<>();
if (map != null){
List<HashMap<String,Object>> currentlyMap = (List<HashMap<String, Object>>) map.get("currentlyMap");
List<HashMap<String,Object>> lastYearMap = (List<HashMap<String, Object>>) map.get("lastYearMap");
for (int i = 0; i < currentlyMap.size(); i++) {
ManyTimesInterval manyTimesInterval = new ManyTimesInterval();
int time = Integer.parseInt(currentlyMap.get(i).get("time").toString());
manyTimesInterval.setTime(time + "点至" + (time +1) + "点");
manyTimesInterval.setCurrentData(currentlyMap.get(i).get("number").toString());
manyTimesInterval.setContemporaneousData(lastYearMap.get(i).get("number").toString());
list.add(manyTimesInterval);
}
}
ExcelUtil<ManyTimesInterval> util = new ExcelUtil<>(ManyTimesInterval.class);
util.exportExcel(response, list, "感知事件多发时段");
return AjaxResult.success("导出感知事件多发时段成功");
}
//新-感知事件类型分析
@PostMapping("/selectWarningType")
public AjaxResult selectWarningType(@RequestBody DcWarning dcWarning){
@ -263,6 +302,36 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.newSelectWarningType(dcWarning));
}
@ApiOperation(value = "导出感知事件类型分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectWarningType")
public AjaxResult exportSelectWarningType(HttpServletResponse response,DcWarning dcWarning){
if (dcWarning==null||StringUtils.isBlank(dcWarning.getType())||dcWarning.getCurrently()==null||dcWarning.getLastYear()==null
||StringUtils.isBlank(dcWarning.getStartStakeMark())||StringUtils.isBlank(dcWarning.getEndStakeMark())
||StringUtils.isBlank(dcWarning.getDirection())){
return AjaxResult.error("参数错误");
}
HashMap<String,Object> map = perceivedEventsWarningService.newSelectWarningType(dcWarning);
List<SelectWarningType> list = new ArrayList<>();
if (map != null){
List<HashMap<String,Object>> currentlyMap = (List<HashMap<String, Object>>) map.get("currentlyMap");
Integer total = 0;
for (HashMap<String, Object> stringObjectHashMap : currentlyMap) {
total += Integer.parseInt(stringObjectHashMap.get("number").toString());
}
for (int i = 0; i < currentlyMap.size(); i++) {
SelectWarningType selectWarningType = new SelectWarningType();
selectWarningType.setWarningType(currentlyMap.get(i).get("warningType").toString());
selectWarningType.setNumber(currentlyMap.get(i).get("number").toString());
double ratio = Double.parseDouble(currentlyMap.get(i).get("number").toString()) / total * 100;
selectWarningType.setRatio(String.format("%.2f", ratio) + "%");
list.add(selectWarningType);
}
}
ExcelUtil<SelectWarningType> util = new ExcelUtil<>(SelectWarningType.class);
util.exportExcel(response, list, "感知事件类型分析");
return AjaxResult.success("导出感知事件类型分析成功");
}
//新-感知事件桩号范围内事件分析
@PostMapping("/selectSection")
public AjaxResult selectSection(@RequestBody DcWarning dcWarning){
@ -273,6 +342,42 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.newSelectSection(dcWarning));
}
@ApiOperation(value = "导出桩号范围内事件分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectSection")
public AjaxResult exportSelectSection(HttpServletResponse response,DcWarning dcWarning){
if (dcWarning==null||StringUtils.isBlank(dcWarning.getType())||dcWarning.getCurrently()==null||dcWarning.getLastYear()==null
||StringUtils.isBlank(dcWarning.getStartStakeMark())||StringUtils.isBlank(dcWarning.getEndStakeMark())
||StringUtils.isBlank(dcWarning.getDirection())){
return AjaxResult.error("参数错误");
}
HashMap<String,Object> map = perceivedEventsWarningService.newSelectSection(dcWarning);
List<SelectSection> list = new ArrayList<>();
if (map != null){
HashMap<String,Object> currentlyMap = (HashMap<String, Object>) map.get("currentlyMap");
HashMap<String,Object> lastYearMap = (HashMap<String, Object>) map.get("lastYearMap");
Set<String> allKeys = new HashSet<>(currentlyMap.keySet());
allKeys.addAll(lastYearMap.keySet());
for (String key : allKeys) {
SelectSection selectSection = new SelectSection();
selectSection.setStakeMark(key);
if (currentlyMap.containsKey(key)){
selectSection.setCurrentData(currentlyMap.get(key).toString());
}
if (lastYearMap.containsKey(key)){
selectSection.setContemporaneousData(lastYearMap.get(key).toString());
}
list.add(selectSection);
}
}
ExcelUtil<SelectSection> util = new ExcelUtil<>(SelectSection.class);
util.exportExcel(response, list, "桩号范围内事件分析");
return AjaxResult.success("导出桩号范围内事件分析成功");
}
//新-感知事件路段处置类型分析
@PostMapping("/selectStateType")
public AjaxResult selectStateType(@RequestBody DcWarning dcWarning){
@ -281,9 +386,88 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.newSelectStateType(dcWarning));
}
@ApiOperation(value = "导出感知事件路段分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectStateType")
public AjaxResult exportSelectStateType(HttpServletResponse response, DcWarning dcWarning){
if (dcWarning==null||dcWarning.getCurrently()==null||dcWarning.getLastYear()==null){
return AjaxResult.error("参数错误");
}
List<SelectStateType> list = new ArrayList<>();
HashMap<String,Object> map = perceivedEventsWarningService.newSelectStateType(dcWarning);
List<Map<String,Object>> currentlyMap = (List<Map<String, Object>>) map.get("currentlyMap");
List<HashMap<String,Object>> lastYearMap = (List<HashMap<String, Object>>) map.get("lastYearMap");
List<HashMap<String,Object>> stateDuration = (List<HashMap<String, Object>>) map.get("stateDuration");
Map<String,List<Map<String,Object>>> currentlyData = currentlyMap.stream().collect(Collectors.groupingBy(item -> item.get("sectionName").toString()));
Map<String,List<Map<String,Object>>> lastYearData = lastYearMap.stream().collect(Collectors.groupingBy(item -> item.get("sectionName").toString()));
Map<String,List<Map<String,Object>>> stateDurationData = stateDuration.stream().collect(Collectors.groupingBy(item -> item.get("sectionName").toString()));
Set<String> allKeys = new HashSet<>(currentlyData.keySet());
allKeys.addAll(lastYearData.keySet());
allKeys.addAll(stateDurationData.keySet());
for (String key : allKeys) {
SelectStateType selectStateType = new SelectStateType();
selectStateType.setSectionName(key);
selectStateType.setSectionName(key);
if (currentlyData.containsKey(key)){
List<Map<String,Object>> sectionData = currentlyData.get(key);
for (int i = 0; i < sectionData.size(); i++) {
if ("1".equals(sectionData.get(i).get("warningState").toString())){
selectStateType.setReporting(sectionData.get(i).get("num").toString());
} else if ("2".equals(sectionData.get(i).get("warningState").toString())){
selectStateType.setCompleted(sectionData.get(i).get("num").toString());
} else if ("3".equals(sectionData.get(i).get("warningState").toString())){
selectStateType.setTerminated(sectionData.get(i).get("num").toString());
} else if ("4".equals(sectionData.get(i).get("warningState").toString())){
selectStateType.setAutomaticTermination(sectionData.get(i).get("num").toString());
}
}
}
if (lastYearData.containsKey(key)){
List<Map<String,Object>> sectionData = lastYearData.get(key);
Integer total = 0;
for (Map<String, Object> sectionDatum : sectionData) {
total += Integer.parseInt(sectionDatum.get("num").toString());
}
selectStateType.setContemporaneousData(total.toString());
}
if (stateDurationData.containsKey(key)){
List<Map<String,Object>> sectionData = stateDurationData.get(key);
selectStateType.setAverageDuration(sectionData.get(0).get("avg").toString());
}
list.add(selectStateType);
}
ExcelUtil<SelectStateType> util = new ExcelUtil<>(SelectStateType.class);
util.exportExcel(response, list, "感知事件路段分析");
return AjaxResult.success("导出感知事件路段分析成功");
}
//查询感知数量按照路段数量进行排名
@PostMapping("/sectionPerceivedList")
public AjaxResult getSectionPerceivedEventsList(){
return AjaxResult.success(perceivedEventsWarningService.selectSectionPerceivedEventsList());
}
@ApiOperation(value = "导出感知事件路段排名",tags = {"ECharts导出"})
@GetMapping("/exportSectionPerceivedList")
public AjaxResult exportSectionPerceivedList(HttpServletResponse response){
List<HashMap<String,Object>> dataList = perceivedEventsWarningService.selectSectionPerceivedEventsList();
List<SectionPerceivedList> list = new ArrayList<>();
if (dataList != null && dataList.size() > 0){
for (int i = 0; i < dataList.size(); i++) {
SectionPerceivedList sectionPerceivedList = new SectionPerceivedList();
sectionPerceivedList.setRank(i+1);
sectionPerceivedList.setSectionName(dataList.get(i).get("sectionName").toString());
sectionPerceivedList.setNumber(dataList.get(i).get("number").toString());
list.add(sectionPerceivedList);
}
}
ExcelUtil<SectionPerceivedList> util = new ExcelUtil<>(SectionPerceivedList.class);
util.exportExcel(response, list, "感知事件路段排名");
return AjaxResult.success("导出感知事件路段排名成功");
}
}

65
zc-business/src/main/java/com/zc/business/domain/export/ManyTimesInterval.java

@ -0,0 +1,65 @@
package com.zc.business.domain.export;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* 导出感知事件多发时段对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class ManyTimesInterval extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 时段 */
@Excel(name = "时段")
private String time;
/** 本期事件 */
@Excel(name = "本期事件")
private String currentData;
/** 去年同期 */
@Excel(name = "去年同期")
private String contemporaneousData;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getCurrentData() {
return currentData;
}
public void setCurrentData(String currentData) {
this.currentData = currentData;
}
public String getContemporaneousData() {
return contemporaneousData;
}
public void setContemporaneousData(String contemporaneousData) {
this.contemporaneousData = contemporaneousData;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("time", getTime())
.append("currentData", getCurrentData())
.append("contemporaneousData", getContemporaneousData())
.toString();
}
}

62
zc-business/src/main/java/com/zc/business/domain/export/SectionPerceivedList.java

@ -0,0 +1,62 @@
package com.zc.business.domain.export;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 导出感知事件路段排名对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class SectionPerceivedList extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 排名 */
@Excel(name = "排名")
private Integer rank;
/** 路段名称 */
@Excel(name = "路段名称")
private String sectionName;
/** 事件数量 */
@Excel(name = "事件数量")
private String number;
public Integer getRank() {
return rank;
}
public void setRank(Integer rank) {
this.rank = rank;
}
public String getSectionName() {
return sectionName;
}
public void setSectionName(String sectionName) {
this.sectionName = sectionName;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("rank", getRank())
.append("sectionName", getSectionName())
.append("number", getNumber())
.toString();
}
}

62
zc-business/src/main/java/com/zc/business/domain/export/SelectSection.java

@ -0,0 +1,62 @@
package com.zc.business.domain.export;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 导出桩号范围内事件分析对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class SelectSection extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 桩号 */
@Excel(name = "桩号")
private String stakeMark;
/** 本期事件 */
@Excel(name = "本期事件")
private String currentData;
/** 去年同期 */
@Excel(name = "去年同期")
private String contemporaneousData;
public String getStakeMark() {
return stakeMark;
}
public void setStakeMark(String stakeMark) {
this.stakeMark = stakeMark;
}
public String getCurrentData() {
return currentData;
}
public void setCurrentData(String currentData) {
this.currentData = currentData;
}
public String getContemporaneousData() {
return contemporaneousData;
}
public void setContemporaneousData(String contemporaneousData) {
this.contemporaneousData = contemporaneousData;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("stakeMark", getStakeMark())
.append("currentData", getCurrentData())
.append("contemporaneousData", getContemporaneousData())
.toString();
}
}

115
zc-business/src/main/java/com/zc/business/domain/export/SelectStateType.java

@ -0,0 +1,115 @@
package com.zc.business.domain.export;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 导出感知事件路段分析对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class SelectStateType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 路段 */
@Excel(name = "路段")
private String sectionName;
/** 上报 */
@Excel(name = "上报")
private String reporting;
/** 已完成 */
@Excel(name = "已完成")
private String completed;
/** 已终止 */
@Excel(name = "已终止")
private String terminated;
/** 自动结束 */
@Excel(name = "自动结束")
private String automaticTermination;
/** 去年同期 */
@Excel(name = "去年同期")
private String contemporaneousData;
/** 平均时长 */
@Excel(name = "平均时长")
private String averageDuration;
public String getSectionName() {
return sectionName;
}
public void setSectionName(String sectionName) {
this.sectionName = sectionName;
}
public String getReporting() {
return reporting;
}
public void setReporting(String reporting) {
this.reporting = reporting;
}
public String getCompleted() {
return completed;
}
public void setCompleted(String completed) {
this.completed = completed;
}
public String getTerminated() {
return terminated;
}
public void setTerminated(String terminated) {
this.terminated = terminated;
}
public String getAutomaticTermination() {
return automaticTermination;
}
public void setAutomaticTermination(String automaticTermination) {
this.automaticTermination = automaticTermination;
}
public String getContemporaneousData() {
return contemporaneousData;
}
public void setContemporaneousData(String contemporaneousData) {
this.contemporaneousData = contemporaneousData;
}
public String getAverageDuration() {
return averageDuration;
}
public void setAverageDuration(String averageDuration) {
this.averageDuration = averageDuration;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("sectionName", getSectionName())
.append("reporting", getReporting())
.append("completed", getCompleted())
.append("terminated", getTerminated())
.append("automaticTermination", getAutomaticTermination())
.append("contemporaneousData", getContemporaneousData())
.append("averageDuration", getAverageDuration())
.toString();
}
}

63
zc-business/src/main/java/com/zc/business/domain/export/SelectWarningType.java

@ -0,0 +1,63 @@
package com.zc.business.domain.export;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 导出感知事件类型分析对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class SelectWarningType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 事件类型 */
@Excel(name = "事件类型",readConverterExp = "1=交通拥堵,2=行人,3=非机动车,4=停车,5=倒车/逆行,6=烟火,7=撒落物,8=异常天气,9=护栏碰撞,10=交通事故,11=车辆故障,99=其他")
private String warningType;
/** 数量 */
@Excel(name = "数量")
private String number;
/** 占比 */
@Excel(name = "占比")
private String ratio;
public String getWarningType() {
return warningType;
}
public void setWarningType(String warningType) {
this.warningType = warningType;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getRatio() {
return ratio;
}
public void setRatio(String ratio) {
this.ratio = ratio;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("warningType", getWarningType())
.append("number", getNumber())
.append("ratio", getRatio())
.toString();
}
}
Loading…
Cancel
Save