Browse Source

Merge remote-tracking branch 'origin/develop' into develop

develop
wangsixiang 8 months ago
parent
commit
2502a9e1db
  1. 2
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
  2. 75
      zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java
  3. 28
      zc-business/src/main/java/com/zc/business/controller/DcEventController.java
  4. 8
      zc-business/src/main/java/com/zc/business/controller/DcInfoBoardVocabularyController.java
  5. 13
      zc-business/src/main/java/com/zc/business/controller/DcRoadConditionInformationController.java
  6. 36
      zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java
  7. 144
      zc-business/src/main/java/com/zc/business/controller/DcTrafficIncidentsController.java
  8. 5
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java
  9. 286
      zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java
  10. 63
      zc-business/src/main/java/com/zc/business/domain/export/AccidentVehicleAnalysis.java
  11. 61
      zc-business/src/main/java/com/zc/business/domain/export/AllEventNum.java
  12. 62
      zc-business/src/main/java/com/zc/business/domain/export/EventTrend.java
  13. 87
      zc-business/src/main/java/com/zc/business/domain/export/EventTypeAnalysis.java
  14. 61
      zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningFacility.java
  15. 49
      zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningTimeType.java
  16. 61
      zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningType.java
  17. 86
      zc-business/src/main/java/com/zc/business/domain/export/RoadSectionAnalysis.java
  18. 61
      zc-business/src/main/java/com/zc/business/domain/export/TollStationAnalysis.java
  19. 5
      zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java
  20. 4
      zc-business/src/main/java/com/zc/business/enums/ValueConverter.java
  21. 4
      zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java
  22. 3
      zc-business/src/main/java/com/zc/business/mapper/DcRoadConditionInformationMapper.java
  23. 3
      zc-business/src/main/java/com/zc/business/service/IDcRoadConditionInformationService.java
  24. 2
      zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java
  25. 46
      zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java
  26. 55
      zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java
  27. 5
      zc-business/src/main/java/com/zc/business/service/impl/DcRoadConditionInformationServiceImpl.java
  28. 65
      zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java
  29. 10
      zc-business/src/main/resources/mapper/business/DcEventMapper.xml
  30. 6
      zc-business/src/main/resources/mapper/business/DcRoadConditionInformationMapper.xml
  31. 8
      zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml

2
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java

@ -130,7 +130,7 @@ public class SysMenu extends BaseEntity
this.orderNum = orderNum;
}
@Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
@Size(min = 0, max = 1000, message = "路由地址不能超过1000个字符")
public String getPath()
{
return path;

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

@ -235,6 +235,33 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.selectTypeNonAutomaticWarning(dcWarning));
}
@ApiOperation(value = "导出非机预警统计分析(按事件分类)",tags = {"ECharts导出"})
@GetMapping("/exportNonAutomaticWarningType")
public void exportNonAutomaticWarningType(HttpServletResponse response, DcWarning dcWarning){
List<NonAutomaticWarningType> list = new ArrayList<>();
if (StringUtils.isBlank(dcWarning.getType())||dcWarning.getWarningTime()==null){
} else {
List<HashMap<String,Object>> data = perceivedEventsWarningService.selectTypeNonAutomaticWarning(dcWarning);
Long total = data.stream().mapToLong(item -> (long) item.get("number")).sum();
for (Map<String, Object> datum : data) {
NonAutomaticWarningType nonAutomaticWarningType = new NonAutomaticWarningType();
nonAutomaticWarningType.setSubclass(datum.get("subclass").toString());
nonAutomaticWarningType.setNumber(datum.get("number").toString());
//计算百分比
double ratio = (double) Long.parseLong(datum.get("number").toString()) / total * 100;
ratio = Math.round(ratio * 100.0) / 100.0;
nonAutomaticWarningType.setRatio(ratio + "%");
list.add(nonAutomaticWarningType);
}
}
ExcelUtil<NonAutomaticWarningType> util = new ExcelUtil<>(NonAutomaticWarningType.class);
util.exportExcel(response, list, "统计分析");
}
//查询非机预警,按照时间查询(传入时间类型type与时间warningTime)
@PostMapping("/nonAutomaticWarningTimeType")
public AjaxResult nonAutomaticWarningTimeType(@RequestBody DcWarning dcWarning){
@ -243,6 +270,28 @@ public class DCPerceivedEventsWarningController extends BaseController {
}
return AjaxResult.success(perceivedEventsWarningService.selectNonAutomaticWarningTimeType(dcWarning));
}
@ApiOperation(value = "导出非机预警统计分析(按日期)",tags = {"ECharts导出"})
@GetMapping("/exportNonAutomaticWarningTimeType")
public void exportNonAutomaticWarningTimeType(HttpServletResponse response, DcWarning dcWarning){
List<NonAutomaticWarningTimeType> list = new ArrayList<>();
if (StringUtils.isBlank(dcWarning.getType())||dcWarning.getWarningTime()==null){
} else {
List<HashMap<String,Object>> data = perceivedEventsWarningService.selectNonAutomaticWarningTimeType(dcWarning);
for (Map<String, Object> datum : data) {
NonAutomaticWarningTimeType nonAutomaticWarningTimeType = new NonAutomaticWarningTimeType();
nonAutomaticWarningTimeType.setTime(datum.get("time").toString());
nonAutomaticWarningTimeType.setNumber(datum.get("number").toString());
list.add(nonAutomaticWarningTimeType);
}
}
ExcelUtil<NonAutomaticWarningTimeType> util = new ExcelUtil<>(NonAutomaticWarningTimeType.class);
util.exportExcel(response, list, "统计分析");
}
//查询非机预警,按照时间查询收费站分组(传入时间类型type与时间warningTime)
@PostMapping("/nonAutomaticWarningFacility")
public AjaxResult nonAutomaticWarningFacility(@RequestBody DcWarning dcWarning){
@ -252,6 +301,32 @@ public class DCPerceivedEventsWarningController extends BaseController {
return AjaxResult.success(perceivedEventsWarningService.selectNonAutomaticWarningFacility(dcWarning));
}
@ApiOperation(value = "导出非机预警统计分析(按事件分类)",tags = {"ECharts导出"})
@GetMapping("/exportNonAutomaticWarningFacility")
public void exportNonAutomaticWarningFacility(HttpServletResponse response, DcWarning dcWarning){
List<NonAutomaticWarningFacility> list = new ArrayList<>();
if (StringUtils.isBlank(dcWarning.getType())||dcWarning.getWarningTime()==null){
} else {
List<HashMap<String,Object>> data = perceivedEventsWarningService.selectNonAutomaticWarningFacility(dcWarning);
Long total = data.stream().mapToLong(item -> (long) item.get("number")).sum();
for (Map<String, Object> datum : data) {
NonAutomaticWarningFacility nonAutomaticWarningFacility = new NonAutomaticWarningFacility();
nonAutomaticWarningFacility.setFacilityName(datum.get("facilityName").toString());
nonAutomaticWarningFacility.setNumber(datum.get("number").toString());
//计算百分比
double ratio = (double) Long.parseLong(datum.get("number").toString()) / total * 100;
ratio = Math.round(ratio * 100.0) / 100.0;
nonAutomaticWarningFacility.setRatio(ratio + "%");
list.add(nonAutomaticWarningFacility);
}
}
ExcelUtil<NonAutomaticWarningFacility> util = new ExcelUtil<>(NonAutomaticWarningFacility.class);
util.exportExcel(response, list, "统计分析");
}
//新-感知事件多发时段
@PostMapping("/manyTimesInterval")
public AjaxResult manyTimesInterval(@RequestBody DcWarning dcWarning){

28
zc-business/src/main/java/com/zc/business/controller/DcEventController.java

@ -14,6 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
@ -72,10 +75,31 @@ public class DcEventController extends BaseController
//@PreAuthorize("@ss.hasPermi('system:event:export')")
@Log(title = "事件信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response,@RequestBody DcEvent dcEvent)
{
public void export(HttpServletResponse response,@RequestBody DcEvent dcEvent) throws UnsupportedEncodingException {
List<DcEvent> list = dcEventService.selectDcEventList(dcEvent);
ExcelUtil<DcEvent> util = new ExcelUtil<DcEvent>(DcEvent.class);
int eventState = Math.toIntExact(dcEvent.getEventState());
String name="";
if (eventState==UniversalEnum.ZERO.getNumber()){
name="待确认事件.xlsx";
}if (eventState==UniversalEnum.ONE.getNumber()){
name="处置中事件.xlsx";
}if (eventState==UniversalEnum.TWO.getNumber()){
name="已处置事件.xlsx";
}
String percentEncodedFileName = URLEncoder.encode(name, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20");
StringBuilder contentDispositionValue = new StringBuilder();
contentDispositionValue.append("attachment; filename=")
.append(percentEncodedFileName)
.append(";")
.append("filename*=")
.append("utf-8''")
.append(percentEncodedFileName);
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");
response.setHeader("Content-disposition", contentDispositionValue.toString());
response.setHeader("download-filename", percentEncodedFileName);
util.exportExcel(response, list, UniversalEnum.EVENT_INFORMATION_DATA.getValue());
}

8
zc-business/src/main/java/com/zc/business/controller/DcInfoBoardVocabularyController.java

@ -19,6 +19,8 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
/**
@ -66,10 +68,14 @@ public class DcInfoBoardVocabularyController extends BaseController
@ApiOperation("导出敏感词模板")
@Log(title = "导出敏感词模板", businessType = BusinessType.EXPORT)
@PostMapping("/exportModel")
public void exportModel(HttpServletResponse response)
public void exportModel(HttpServletResponse response) throws Exception
{
response.setContentType(UniversalEnum.DERIVE_THE_TWO_WAY_REAL_TIME_TRAFFIC_FLOW_OF_THE_WHOLE_SECTION.getValue());
response.setCharacterEncoding(UniversalEnum.LOWERCASE_UTF_8.getValue());
String fileName = URLEncoder.encode("敏感字模板.xlsx", StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");
response.setHeader("Content-disposition", "attachment; filename="+fileName+";filename*=utf-8''"+fileName);
response.setHeader("download-filename", fileName);
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(UniversalEnum.EXPORT_SENSITIVE_WORD_TEMPLATES.getValue());
try {
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

13
zc-business/src/main/java/com/zc/business/controller/DcRoadConditionInformationController.java

@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletResponse;
import com.zc.business.domain.DcRoadConditionInformation;
import com.zc.business.service.IDcRoadConditionInformationService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -23,7 +22,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
/**DcTimingOfTrafficConditionsController
* 路况信息Controller
*
* @author ruoyi
@ -47,6 +46,12 @@ public class DcRoadConditionInformationController extends BaseController
List<DcRoadConditionInformation> list = dcRoadConditionInformationService.selectDcRoadConditionInformationList(dcRoadConditionInformation);
return getDataTable(list);
}
@GetMapping("/listTime")
public TableDataInfo listTime()
{
List<DcRoadConditionInformation> list = dcRoadConditionInformationService.selectlistTime();
return getDataTable(list);
}
/**
* 导出路况信息列表
@ -56,6 +61,10 @@ public class DcRoadConditionInformationController extends BaseController
@PostMapping("/export")
public void export(HttpServletResponse response, DcRoadConditionInformation dcRoadConditionInformation)
{
List<DcRoadConditionInformation> list = dcRoadConditionInformationService.selectDcRoadConditionInformationList(dcRoadConditionInformation);
ExcelUtil<DcRoadConditionInformation> util = new ExcelUtil<>(DcRoadConditionInformation.class);
util.exportExcel(response, list, "路况信息数据");

36
zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java

@ -0,0 +1,36 @@
package com.zc.business.controller;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcRoadConditionInformation;
import com.zc.business.service.IDcRoadConditionInformationService;
import com.zc.business.service.IDcTrafficStatisticsService;
import com.zc.common.core.httpclient.exception.HttpException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
/**
*路况信息 每小时入一次库
*/
@Component
public class DcTimingOfTrafficConditionsController {
@Autowired
private IDcTrafficStatisticsService dcTrafficStatisticsService;
@Autowired
private IDcRoadConditionInformationService dcRoadConditionInformationService;
// 调用服务层方法,获取当前交通指标数据
@Scheduled(cron = "0 0 * * * *")
public void getTheCurrentCongestedSection() throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
JSONArray jsonArray = dcTrafficStatisticsService.getTheCurrentCongestedSection();
//插入 数据库
DcRoadConditionInformation dcRoadConditionInformation =new DcRoadConditionInformation();
dcRoadConditionInformation.setOtherConfig(jsonArray.toJSONString());
dcRoadConditionInformationService.insertDcRoadConditionInformation(dcRoadConditionInformation);
// 将获取到的交通指标数据封装为成功的结果并返回
}
}

144
zc-business/src/main/java/com/zc/business/controller/DcTrafficIncidentsController.java

@ -1,7 +1,10 @@
package com.zc.business.controller;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcEventListQuery;
import com.zc.business.domain.export.*;
import com.zc.business.enums.UniversalEnum;
import com.zc.business.service.IDcTrafficIncidentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -10,8 +13,12 @@ import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Description 交通事件统计
@ -111,6 +118,31 @@ public class DcTrafficIncidentsController {
return trafficIncidentsService.getAllEventNum();
}
@ApiOperation(value = "导出事件类型分析",tags = {"ECharts导出"})
@GetMapping("/exportGetAllEventNum")
public void exportGetAllEventNum(HttpServletResponse response){
AjaxResult ajaxResult = trafficIncidentsService.getAllEventNum();
List<AllEventNum> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
List<Map<String,Object>> data = (List<Map<String,Object>>) ajaxResult.get("data");
Long total = data.stream().mapToLong(item -> (long) item.get("num")).sum();
for (Map<String, Object> datum : data) {
AllEventNum allEventNum = new AllEventNum();
allEventNum.setEventName(datum.get("eventName").toString());
allEventNum.setNum(datum.get("num").toString());
//计算百分比
double ratio = (double) Long.parseLong(datum.get("num").toString()) / total * 100;
ratio = Math.round(ratio * 100.0) / 100.0;
allEventNum.setRatio(ratio + "%");
list.add(allEventNum);
}
}
ExcelUtil<AllEventNum> util = new ExcelUtil<>(AllEventNum.class);
util.exportExcel(response, list, "事件类型分析");
}
/**
* @Description 路网管控-事件管控分析-事件源分析占比
*
@ -139,6 +171,27 @@ public class DcTrafficIncidentsController {
return trafficIncidentsService.getEventTrend();
}
@ApiOperation(value="导出今日事件趋势",tags = {"ECharts导出"})
@GetMapping("/exportGetEventTrend")
public void exportGetEventTrend(HttpServletResponse response){
AjaxResult ajaxResult = trafficIncidentsService.getEventTrend();
List<EventTrend> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
Map<String,Object> data = (Map<String,Object>) ajaxResult.get("data");
List<Map<String,Object>> perception = (List<Map<String,Object>>)data.get("perception");
List<Map<String,Object>> traffic = (List<Map<String,Object>>)data.get("traffic");
for (int i = 0; i < perception.size(); i++) {
EventTrend eventTrend = new EventTrend();
eventTrend.setHours(perception.get(i).get("hours").toString() + "时");
eventTrend.setPerception(perception.get(i).get("num").toString());
eventTrend.setTraffic(traffic.get(i).get("num").toString());
list.add(eventTrend);
}
}
ExcelUtil<EventTrend> util = new ExcelUtil<>(EventTrend.class);
util.exportExcel(response, list, "今日事件趋势");
}
/**
* @Description 路网管控-事件管控分析-事故车型分析
*
@ -157,6 +210,28 @@ public class DcTrafficIncidentsController {
@ApiParam(value="时间", name="startTime", required=true) @RequestParam ("startTime") String startTime){
return trafficIncidentsService.getAccidentVehicleAnalysis(direction,type,startTime);
}
@ApiOperation(value="导出事故车型分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectAccidentVehicleAnalysis")
public void exportSelectAccidentVehicleAnalysis(HttpServletResponse response,
@ApiParam(value="方向", name="direction", required=true) @RequestParam ("direction") String direction,
@ApiParam(value="类型(1:日, 2:月, 3:季度, 4-年)", name="type", required=true) @RequestParam ("type") String type,
@ApiParam(value="时间", name="startTime", required=true) @RequestParam ("startTime") String startTime){
AjaxResult ajaxResult = trafficIncidentsService.getAccidentVehicleAnalysis(direction,type,startTime);
List<AccidentVehicleAnalysis> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
List<Map<String,Object>> data = (List<Map<String,Object>>) ajaxResult.get("data");
for (Map<String, Object> datum : data) {
AccidentVehicleAnalysis accidentVehicleAnalysis = new AccidentVehicleAnalysis();
accidentVehicleAnalysis.setTypeName(datum.get("typeName").toString());
accidentVehicleAnalysis.setNum(datum.get("num").toString());
accidentVehicleAnalysis.setAvgTime(datum.get("avgTime").toString());
list.add(accidentVehicleAnalysis);
}
}
ExcelUtil<AccidentVehicleAnalysis> util = new ExcelUtil<>(AccidentVehicleAnalysis.class);
util.exportExcel(response, list, "事故车型分析");
}
/**
* @Description 路网管控-事件管控分析-收费站统计分析table
@ -194,6 +269,25 @@ public class DcTrafficIncidentsController {
return trafficIncidentsService.getTollStationAnalysis();
}
@ApiOperation(value="导出收费站管制分析",tags = {"ECharts导出"})
@GetMapping("/exportGetTollStationAnalysis")
public void exportGetTollStationAnalysis(HttpServletResponse response){
AjaxResult ajaxResult = trafficIncidentsService.getTollStationAnalysis();
List<TollStationAnalysis> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
List<Map<String,Object>> data = (List<Map<String,Object>>) ajaxResult.get("data");
for (Map<String, Object> datum : data) {
TollStationAnalysis tollStationAnalysis = new TollStationAnalysis();
tollStationAnalysis.setFacilityName(datum.get("facilityName").toString());
tollStationAnalysis.setTrafficClose(datum.get("trafficClose").toString());
tollStationAnalysis.setTrafficRestriction(datum.get("trafficRestriction").toString());
list.add(tollStationAnalysis);
}
}
ExcelUtil<TollStationAnalysis> util = new ExcelUtil<>(TollStationAnalysis.class);
util.exportExcel(response, list, "收费站管制分析");
}
/**
* @Description 路网管控-事件管控分析-事故多发路段分析
*
@ -212,6 +306,31 @@ public class DcTrafficIncidentsController {
return trafficIncidentsService.selectRoadSectionAnalysis(direction,type,startTime);
}
@ApiOperation(value="导出事故多发路段分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectRoadSectionAnalysis")
public void exportSelectRoadSectionAnalysis(HttpServletResponse response,
@ApiParam(value="方向", name="direction", required=true) @RequestParam ("direction") String direction,
@ApiParam(value="类型(1:日, 2:月, 3:季度, 4-年)", name="type", required=true) @RequestParam ("type") String type,
@ApiParam(value="时间", name="startTime", required=true) @RequestParam ("startTime") String startTime){
AjaxResult ajaxResult = trafficIncidentsService.selectRoadSectionAnalysis(direction,type,startTime);
List<RoadSectionAnalysis> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
List<Map<String,Object>> data = (List<Map<String,Object>>) ajaxResult.get("data");
for (Map<String, Object> datum : data) {
RoadSectionAnalysis roadSectionAnalysis = new RoadSectionAnalysis();
roadSectionAnalysis.setSection_name(datum.get("section_name").toString());
roadSectionAnalysis.setNum(datum.get("num").toString());
roadSectionAnalysis.setAvgNum(datum.get("avgNum").toString());
roadSectionAnalysis.setLastNum(datum.get("lastNum").toString());
roadSectionAnalysis.setMileage(datum.get("mileage").toString());
list.add(roadSectionAnalysis);
}
}
ExcelUtil<RoadSectionAnalysis> util = new ExcelUtil<>(RoadSectionAnalysis.class);
util.exportExcel(response, list, "事故多发路段分析");
}
/**
* @Description 路网管控-事件管控分析-事故类型分析
*
@ -229,4 +348,29 @@ public class DcTrafficIncidentsController {
@ApiParam(value="时间", name="startTime", required=true) @RequestParam ("startTime") String startTime){
return trafficIncidentsService.selectEventTypeAnalysis(direction,type,startTime);
}
@ApiOperation(value="导出事故类型分析",tags = {"ECharts导出"})
@GetMapping("/exportSelectEventTypeAnalysis")
public void exportSelectEventTypeAnalysis(HttpServletResponse response,
@ApiParam(value="方向", name="direction", required=true) @RequestParam ("direction") String direction,
@ApiParam(value="类型(1:日, 2:月, 3:季度, 4-年)", name="type", required=true) @RequestParam ("type") String type,
@ApiParam(value="时间", name="startTime", required=true) @RequestParam ("startTime") String startTime){
AjaxResult ajaxResult = trafficIncidentsService.selectEventTypeAnalysis(direction,type,startTime);
List<EventTypeAnalysis> list = new ArrayList<>();
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
List<Map<String,Object>> data = (List<Map<String,Object>>) ajaxResult.get("data");
for (Map<String, Object> datum : data) {
EventTypeAnalysis eventTypeAnalysis = new EventTypeAnalysis();
eventTypeAnalysis.setEventSubclassName(datum.get("eventSubclassName").toString());
eventTypeAnalysis.setNum(datum.get("num").toString());
eventTypeAnalysis.setLastNum(datum.get("lastNum").toString());
eventTypeAnalysis.setAvgTime(datum.get("avgTime").toString());
eventTypeAnalysis.setLastAvgTime(datum.get("lastAvgTime").toString());
list.add(eventTypeAnalysis);
}
}
ExcelUtil<EventTypeAnalysis> util = new ExcelUtil<>(EventTypeAnalysis.class);
util.exportExcel(response, list, "事故类型分析");
}
}

5
zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

@ -46,7 +46,7 @@ import java.util.stream.Collectors;
*
* @author xiepufeng
*/
@Component
@Api(tags = "交通数据统计")
@RestController
@RequestMapping("/business/traffic-statistics")
@ -745,8 +745,7 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
@Scheduled(cron = "0 */1 * * * ?")
// @Scheduled(cron = "0/30 * * * * ?")
@ApiOperation("获取当前拥堵路段")
@GetMapping("/current/getTheCurrentCongestedSection")
public AjaxResult getTheCurrentCongestedSection() throws HttpException, IOException {

286
zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java

@ -66,7 +66,7 @@ public class WeatherForecastController extends BaseController {
/***
* 定时查询气象预警信息并上报
*/
@Scheduled(cron = "0 0/1 * * * ?")
@Scheduled(cron = "0 0/15 * * * ?")
public void updateDeviceState() {
HashMap<String, Object> hashMap = new HashMap<>();
@ -80,130 +80,133 @@ public class WeatherForecastController extends BaseController {
return;
}
JSONArray data = (JSONArray) JSON.toJSON(ajaxResult.get("data"));
data.forEach(item -> {
JSONObject jsonObject = (JSONObject) JSON.toJSON(item);
String earlyWorningSignal = jsonObject.getString("earlyWorningSignal");
String[] split = earlyWorningSignal.split(UniversalEnum.EMPTY_STRING.getValue());
String earlyWarningType = split[UniversalEnum.ZERO.getNumber()];
String warningLevel = split[UniversalEnum.THREE.getNumber()];
switch (warningLevel) {
case "0":
//蓝色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.ZERO.getValue());
jsonObject.put("warningLevelString", UniversalEnum.BLUE_ALERT.toString());
break;
case "1":
//黄色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.ONE.getValue());
jsonObject.put("warningLevelString", UniversalEnum.YELLOW_ALERT.toString());
break;
case "2":
//橙色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.TWO.getValue());
jsonObject.put("warningLevelString", UniversalEnum.ORANGE_ALERT.toString());
break;
case "3":
//红色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.THREE.getValue());
jsonObject.put("warningLevelString", UniversalEnum.RED_ALERT.toString());
break;
}
if (data.size() > UniversalEnum.ZERO.getNumber()) {
List<DcNoStakeWarningTable> dcNoStakeWarningTables = noStakeWarningTableService.listDcNoStakeWarningTable(new DcNoStakeWarningTable(), null, null);
data.forEach(item -> {
JSONObject jsonObject = (JSONObject) JSON.toJSON(item);
String earlyWorningSignal = jsonObject.getString("earlyWorningSignal");
String[] split = earlyWorningSignal.split(UniversalEnum.EMPTY_STRING.getValue());
String earlyWarningType = split[UniversalEnum.ZERO.getNumber()];
String warningLevel = split[UniversalEnum.THREE.getNumber()];
switch (warningLevel) {
case "0":
//蓝色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.ZERO.getValue());
jsonObject.put("warningLevelString", UniversalEnum.BLUE_ALERT.toString());
break;
case "1":
//黄色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.ONE.getValue());
jsonObject.put("warningLevelString", UniversalEnum.YELLOW_ALERT.toString());
break;
case "2":
//橙色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.TWO.getValue());
jsonObject.put("warningLevelString", UniversalEnum.ORANGE_ALERT.toString());
break;
case "3":
//红色预警
jsonObject.put("warningLevelStringNumber", UniversalEnum.THREE.getValue());
jsonObject.put("warningLevelString", UniversalEnum.RED_ALERT.toString());
break;
}
switch (earlyWarningType) {
case "0":
//台风
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ZERO.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.TYPHOON.toString());
break;
case "1":
//暴雨
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ONE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.RAINSTORM.toString());
break;
case "2":
//暴雪
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TWO.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.BLIZZARD.toString());
break;
case "3":
//寒潮
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.THREE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.COLD_WAVE.toString());
break;
case "4":
//大风
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.FOUR.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.GALE.toString());
break;
case "5":
//沙尘暴
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.FIVE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.SANDSTORM.toString());
break;
case "6":
//高温
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.SIX.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HYPERTHERMIA.toString());
break;
case "7":
//干旱
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.SEVEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.ARIDITY.toString());
break;
case "8":
//雷电
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.EIGHT.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.AEGIS.toString());
break;
case "9":
//冰雹
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.NINE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HAILSTONE.toString());
break;
case "10":
//霜冻
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.FROST.toString());
break;
case "11":
//大雾
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ELEVEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HEAVY_FOG.toString());
break;
case "12":
//霾
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TWELVE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HAZE.toString());
break;
case "13":
//道路结冰
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.THIRTEEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.ICY_ROADS.toString());
break;
}
switch (earlyWarningType) {
case "0":
//台风
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ZERO.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.TYPHOON.toString());
break;
case "1":
//暴雨
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ONE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.RAINSTORM.toString());
break;
case "2":
//暴雪
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TWO.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.BLIZZARD.toString());
break;
case "3":
//寒潮
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.THREE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.COLD_WAVE.toString());
break;
case "4":
//大风
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.FOUR.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.GALE.toString());
break;
case "5":
//沙尘暴
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.FIVE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.SANDSTORM.toString());
break;
case "6":
//高温
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.SIX.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HYPERTHERMIA.toString());
break;
case "7":
//干旱
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.SEVEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.ARIDITY.toString());
break;
case "8":
//雷电
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.EIGHT.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.AEGIS.toString());
break;
case "9":
//冰雹
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.NINE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HAILSTONE.toString());
break;
case "10":
//霜冻
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.FROST.toString());
break;
case "11":
//大雾
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.ELEVEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HEAVY_FOG.toString());
break;
case "12":
//霾
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.TWELVE.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.HAZE.toString());
break;
case "13":
//道路结冰
jsonObject.put("earlyWarningTypeStringNumber", UniversalEnum.THIRTEEN.getValue());
jsonObject.put("earlyWarningTypeString", UniversalEnum.ICY_ROADS.toString());
break;
}
//List<JSONObject> currentWeatherAndForecastInformation = redisCache.getCacheList(UniversalEnum.CURRENT_WEATHER_AND_FORECAST_INFORMATION.getValue());
//List<JSONObject> collect = currentWeatherAndForecastInformation.stream().filter(ite ->
// !Objects.equals(ite.getString("earlyWorningIssueDate"), jsonObject.getString("earlyWorningIssueDate"))
// && !Objects.equals(ite.getString("earlyWorningTitle"), jsonObject.getString("earlyWorningTitle"))
// && !Objects.equals(ite.getString("stationName"), jsonObject.getString("stationName"))).collect(Collectors.toList());
List<DcNoStakeWarningTable> dcNoStakeWarningTables = noStakeWarningTableService.listDcNoStakeWarningTable(new DcNoStakeWarningTable(),null,null);
List<DcNoStakeWarningTable> collect = dcNoStakeWarningTables.stream().filter(ite ->
Objects.equals(ite.getWarningTime(), jsonObject.getDate("earlyWorningIssueDate"))
&& Objects.equals(ite.getWarningDescription(), jsonObject.getString("earlyWorningContent"))
&& Objects.equals(ite.getWarningType(), UniversalEnum.TWO.getValue())).collect(Collectors.toList());
if (collect.size() == UniversalEnum.ZERO.getNumber()) {
WebSocketService.broadcast(UniversalEnum.THREE.getValue(), jsonObject); //推送事件消息 不是感知事件
DcNoStakeWarningTable dcNoStakeWarningTable = new DcNoStakeWarningTable();
dcNoStakeWarningTable.setWarningDescription(jsonObject.getString("earlyWorningContent"));
dcNoStakeWarningTable.setWarningType(UniversalEnum.TWO.getValue());
dcNoStakeWarningTable.setWarningTime(jsonObject.getDate("earlyWorningIssueDate"));
dcNoStakeWarningTable.setOtherConfig(String.valueOf(jsonObject));
noStakeWarningTableService.addDcNoStakeWarningTable(dcNoStakeWarningTable);
}
//List<JSONObject> currentWeatherAndForecastInformation = redisCache.getCacheList(UniversalEnum.CURRENT_WEATHER_AND_FORECAST_INFORMATION.getValue());
//List<JSONObject> collect = currentWeatherAndForecastInformation.stream().filter(ite ->
// !Objects.equals(ite.getString("earlyWorningIssueDate"), jsonObject.getString("earlyWorningIssueDate"))
// && !Objects.equals(ite.getString("earlyWorningTitle"), jsonObject.getString("earlyWorningTitle"))
// && !Objects.equals(ite.getString("stationName"), jsonObject.getString("stationName"))).collect(Collectors.toList());
List<DcNoStakeWarningTable> collect = dcNoStakeWarningTables.stream().filter(ite ->
Objects.equals(ite.getWarningTime(), jsonObject.getDate("earlyWorningIssueDate"))
&& Objects.equals(ite.getWarningDescription(), jsonObject.getString("earlyWorningContent"))
&& Objects.equals(ite.getWarningType(), UniversalEnum.TWO.getValue())).collect(Collectors.toList());
if (collect.size() == UniversalEnum.ZERO.getNumber()) {
WebSocketService.broadcast(UniversalEnum.THREE.getValue(), jsonObject); //推送事件消息 不是感知事件
DcNoStakeWarningTable dcNoStakeWarningTable = new DcNoStakeWarningTable();
dcNoStakeWarningTable.setWarningDescription(jsonObject.getString("earlyWorningContent"));
dcNoStakeWarningTable.setWarningType(UniversalEnum.TWO.getValue());
dcNoStakeWarningTable.setWarningTime(jsonObject.getDate("earlyWorningIssueDate"));
dcNoStakeWarningTable.setOtherConfig(String.valueOf(jsonObject));
noStakeWarningTableService.addDcNoStakeWarningTable(dcNoStakeWarningTable);
}
});
});
}
//redisCache.setCacheList(UniversalEnum.CURRENT_WEATHER_AND_FORECAST_INFORMATION.getValue(), data);
@ -318,7 +321,33 @@ public class WeatherForecastController extends BaseController {
JSONObject jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) {
JSONArray jsonArray = jsonResult.getJSONArray("data");
List<Object> collect = jsonArray.stream().filter(item -> {
//List<Object> collect = jsonArray.stream().filter(item -> {
// JSONObject jsonObject = (JSONObject) JSON.toJSON(item);
// return Objects.equals(jsonObject.getString("stationName"), UniversalEnum.CHANGQING_COUNTY.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.PING_YIN.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.DONG_PING.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.MONKAMI.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.LIANG_SHAN.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.JIA_XIANG.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.JU_YE.getValue())
// || Objects.equals(jsonObject.getString("stationName"), UniversalEnum.YUNCHENG_A_COUNTY_IN_SHANDONG_PROVINCE.getValue());
// //if (Objects.equals(jsonObject.getString("stationName"), "长清")
// // || Objects.equals(jsonObject.getString("stationName"), "平阴")
// // || Objects.equals(jsonObject.getString("stationName"), "东平")
// // || Objects.equals(jsonObject.getString("stationName"), "汶上")
// // || Objects.equals(jsonObject.getString("stationName"), "梁山")
// // || Objects.equals(jsonObject.getString("stationName"), "嘉祥")
// // || Objects.equals(jsonObject.getString("stationName"), "巨野")
// // || Objects.equals(jsonObject.getString("stationName"), "郓城")) {
// // return true;
// //} else {
// // return false;
// //}
//}).collect(Collectors.toList());
//if (collect.size() != UniversalEnum.ZERO.getNumber()) {
// redisCache.deleteObject("currentWeatherWarningInformationQuery");
// redisCache.setCacheList("currentWeatherWarningInformationQuery", collect);
return AjaxResult.success(jsonArray.stream().filter(item -> {
JSONObject jsonObject = (JSONObject) JSON.toJSON(item);
return Objects.equals(jsonObject.getString("stationName"), UniversalEnum.CHANGQING_COUNTY.getValue())
|| Objects.equals(jsonObject.getString("stationName"), UniversalEnum.PING_YIN.getValue())
@ -340,13 +369,10 @@ public class WeatherForecastController extends BaseController {
//} else {
// return false;
//}
}).collect(Collectors.toList());
if (collect.size() != UniversalEnum.ZERO.getNumber()) {
redisCache.setCacheList("currentWeatherWarningInformationQuery", collect);
return AjaxResult.success(collect);
} else {
return AjaxResult.success(redisCache.getCacheList("currentWeatherWarningInformationQuery"));
}
}).collect(Collectors.toList()));
//} else {
// return AjaxResult.success(redisCache.getCacheList("currentWeatherWarningInformationQuery"));
//}
} else {
return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue());
}

63
zc-business/src/main/java/com/zc/business/domain/export/AccidentVehicleAnalysis.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 AccidentVehicleAnalysis extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 事故类型 */
@Excel(name = "车型")
private String typeName;
/** 事件数量 */
@Excel(name = "事件数量")
private String num;
/** 平均处置时长 */
@Excel(name = "平均处置时长")
private String avgTime;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getAvgTime() {
return avgTime;
}
public void setAvgTime(String avgTime) {
this.avgTime = avgTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("typeName", getTypeName())
.append("num", getNum())
.append("avgTime", getAvgTime())
.toString();
}
}

61
zc-business/src/main/java/com/zc/business/domain/export/AllEventNum.java

@ -0,0 +1,61 @@
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;
/**
* 导出事件类型分析对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class AllEventNum extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 类型 */
@Excel(name = "类型")
private String eventName;
/** 数量 */
@Excel(name = "数量")
private String num;
/** 占比 */
@Excel(name = "占比")
private String ratio;
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getRatio() {
return ratio;
}
public void setRatio(String ratio) {
this.ratio = ratio;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("eventName", eventName)
.append("num", num)
.append("ratio", ratio)
.toString();
}
}

62
zc-business/src/main/java/com/zc/business/domain/export/EventTrend.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 EventTrend extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 时间 */
@Excel(name = "时间")
private String hours;
/** 感知事件 */
@Excel(name = "感知事件")
private String perception;
/** 交通事件 */
@Excel(name = "交通事件")
private String traffic;
public String getHours() {
return hours;
}
public void setHours(String hours) {
this.hours = hours;
}
public String getPerception() {
return perception;
}
public void setPerception(String perception) {
this.perception = perception;
}
public String getTraffic() {
return traffic;
}
public void setTraffic(String traffic) {
this.traffic = traffic;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("hours", hours)
.append("perception", perception)
.append("traffic", traffic)
.toString();
}
}

87
zc-business/src/main/java/com/zc/business/domain/export/EventTypeAnalysis.java

@ -0,0 +1,87 @@
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 EventTypeAnalysis extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 事故类型 */
@Excel(name = "事故类型")
private String eventSubclassName;
/** 事件数量 */
@Excel(name = "事件数量")
private String num;
/** 去年同期总量 */
@Excel(name = "去年同期总量")
private String lastNum;
/** 平均处置时长 */
@Excel(name = "平均处置时长")
private String avgTime;
/** 去年同期平均处置时长 */
@Excel(name = "去年同期平均处置时长")
private String lastAvgTime;
public String getEventSubclassName() {
return eventSubclassName;
}
public void setEventSubclassName(String eventSubclassName) {
this.eventSubclassName = eventSubclassName;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getLastNum() {
return lastNum;
}
public void setLastNum(String lastNum) {
this.lastNum = lastNum;
}
public String getAvgTime() {
return avgTime;
}
public void setAvgTime(String avgTime) {
this.avgTime = avgTime;
}
public String getLastAvgTime() {
return lastAvgTime;
}
public void setLastAvgTime(String lastAvgTime) {
this.lastAvgTime = lastAvgTime;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("eventSubclassName", getEventSubclassName())
.append("num", getNum())
.append("avgTime", getAvgTime())
.append("lastNum", getLastNum())
.append("lastAvgTime", getLastAvgTime())
.toString();
}
}

61
zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningFacility.java

@ -0,0 +1,61 @@
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;
/**
* 导出非机预警统计分析(按站点)对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class NonAutomaticWarningFacility extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 站点 */
@Excel(name = "站点")
private String facilityName;
/** 数量 */
@Excel(name = "数量")
private String number;
/** 占比 */
@Excel(name = "占比")
private String ratio;
public String getFacilityName() {
return facilityName;
}
public void setFacilityName(String facilityName) {
this.facilityName = facilityName;
}
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)
.append("facilityName", facilityName)
.append("number", number)
.append("ratio", ratio)
.toString();
}
}

49
zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningTimeType.java

@ -0,0 +1,49 @@
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;
/**
* 导出非机预警统计分析(按日期)对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class NonAutomaticWarningTimeType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 时间 */
@Excel(name = "时间")
private String time;
/** 数量 */
@Excel(name = "数量")
private String number;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("time", time)
.append("number", number)
.toString();
}
}

61
zc-business/src/main/java/com/zc/business/domain/export/NonAutomaticWarningType.java

@ -0,0 +1,61 @@
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;
/**
* 导出非机预警统计分析(按事件分类)对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class NonAutomaticWarningType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 类型 */
@Excel(name = "类型")
private String subclass;
/** 数量 */
@Excel(name = "数量")
private String number;
/** 占比 */
@Excel(name = "占比")
private String ratio;
public String getSubclass() {
return subclass;
}
public void setSubclass(String subclass) {
this.subclass = subclass;
}
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)
.append("subclass", subclass)
.append("number", number)
.append("ratio", ratio)
.toString();
}
}

86
zc-business/src/main/java/com/zc/business/domain/export/RoadSectionAnalysis.java

@ -0,0 +1,86 @@
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 RoadSectionAnalysis extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 路段 */
@Excel(name = "路段")
private String section_name;
/** 事故总量 */
@Excel(name = "事故总量")
private String num;
/** 百公里事故总量 */
@Excel(name = "百公里事故总量")
private String avgNum;
/** 去年事故总量 */
@Excel(name = "去年事故总量")
private String lastNum;
/** 路段里程数 */
@Excel(name = "路段里程数")
private String mileage;
public String getSection_name() {
return section_name;
}
public void setSection_name(String section_name) {
this.section_name = section_name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getAvgNum() {
return avgNum;
}
public void setAvgNum(String avgNum) {
this.avgNum = avgNum;
}
public String getLastNum() {
return lastNum;
}
public void setLastNum(String lastNum) {
this.lastNum = lastNum;
}
public String getMileage() {
return mileage;
}
public void setMileage(String mileage) {
this.mileage = mileage;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("section_name", getSection_name())
.append("num", getNum())
.append("avgNum", getAvgNum())
.append("lastNum", getLastNum())
.append("mileage", getMileage())
.toString();
}
}

61
zc-business/src/main/java/com/zc/business/domain/export/TollStationAnalysis.java

@ -0,0 +1,61 @@
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;
/**
* 导出收费站管制分析对象
*
* @author ruoyi
* @date 2024-01-13
*/
public class TollStationAnalysis extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 时间 */
@Excel(name = "收费站")
private String facilityName;
/** 封闭 */
@Excel(name = "封闭")
private String trafficClose;
/** 限行 */
@Excel(name = "限行")
private String trafficRestriction;
public String getFacilityName() {
return facilityName;
}
public void setFacilityName(String facilityName) {
this.facilityName = facilityName;
}
public String getTrafficClose() {
return trafficClose;
}
public void setTrafficClose(String trafficClose) {
this.trafficClose = trafficClose;
}
public String getTrafficRestriction() {
return trafficRestriction;
}
public void setTrafficRestriction(String trafficRestriction) {
this.trafficRestriction = trafficRestriction;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("facilityName", facilityName)
.append("trafficClose", trafficClose)
.append("trafficRestriction", trafficRestriction)
.toString();
}
}

5
zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java

@ -1234,6 +1234,9 @@ public enum UniversalEnum {
// 18
EIGHTEEN(18, "18"),
// 19
NINETEEN(19, "19"),
// 20
TWENTY(20, "20"),
@ -1896,6 +1899,7 @@ public enum UniversalEnum {
//dcEventTrafficControl.limitedType
DC_EVENT_TRAFFIC_CONTROL_LIMITED_TYPE(0, "dcEventTrafficControl.limitedType"),
DC_EVENT_TRAFFIC_CONTROL_VEHICLE_TYPE(0, "dcEventTrafficControl.vehicleType"),
//dcEventAccident.facilityId
DC_EVENT_ACCIDENT_FACILITY_ID(0, "dcEventAccident.facilityId"),
@ -1917,6 +1921,7 @@ public enum UniversalEnum {
//dcEventAccident.location
DC_EVENT_ACCIDENT_LOCATION(0, "dcEventAccident.location"),
DC_EVENT_ACCIDENT_RAMP_ID(0, "dcEventAccident.rampId"),
// warningStrategy
WARNING_STRATEGY(0, "warningStrategy"),

4
zc-business/src/main/java/com/zc/business/enums/ValueConverter.java

@ -231,7 +231,7 @@ public class ValueConverter {
eventLabel.put("dcEventAccident.fatalities","死亡(人)");
eventLabel.put("dcEventAccident.isPrivate","私密事件");
eventLabel.put("dcEventAccident.facilityId","设施");
// eventLabel.put("dcEventAccident.rampId","匝道id");
eventLabel.put("dcEventAccident.rampId","匝道");
eventLabel.put("dcEventAccident.location","地点");
eventLabel.put("dcEventConstruction.controlMode","管制方式");
eventLabel.put("dcEventConstruction.locationType","地点类型");
@ -288,7 +288,7 @@ public class ValueConverter {
eventLabel.put("dcEventTrafficControl.measure","措施");
eventLabel.put("dcEventTrafficControl.classify","分类");
eventLabel.put("dcEventTrafficControl.limitedType","限制类型");
// eventLabel.put("dcEventTrafficControl.vehicleType","车辆类型");
eventLabel.put("dcEventTrafficControl.vehicleType","车辆类型");
eventImportantLabel.put("plateNumber","车型及车牌号");

4
zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java

@ -196,7 +196,7 @@ public class OperationLogAspect {
String.valueOf(
((HashMap<String, Object>) (DEVICEFUNCTIONNAME.get(deviceType)))
.get(function.getString("functionId")) == null ?
UniversalEnum.UNKNOWN_METHOD.getNumber() :
UniversalEnum.UNKNOWN_METHOD.getValue() :
((HashMap<String, Object>) (DEVICEFUNCTIONNAME.get(deviceType)))
.get(function.getString("functionId")));
@ -220,7 +220,7 @@ public class OperationLogAspect {
}
if (i < (devices.size() - UniversalEnum.ONE.getNumber())) {
remark.append(UniversalEnum.COMMA.getNumber());
remark.append(UniversalEnum.COMMA.getValue());
}
}

3
zc-business/src/main/java/com/zc/business/mapper/DcRoadConditionInformationMapper.java

@ -59,4 +59,7 @@ public interface DcRoadConditionInformationMapper
* @return 结果
*/
int deleteDcRoadConditionInformationByIds(Long[] ids);
List<DcRoadConditionInformation> selectlistTime();
}

3
zc-business/src/main/java/com/zc/business/service/IDcRoadConditionInformationService.java

@ -59,4 +59,7 @@ public interface IDcRoadConditionInformationService
* @return 结果
*/
int deleteDcRoadConditionInformationById(Long id);
List<DcRoadConditionInformation> selectlistTime();
}

2
zc-business/src/main/java/com/zc/business/service/impl/DcDeviceServiceImpl.java

@ -439,7 +439,7 @@ public class DcDeviceServiceImpl extends ServiceImpl<DcDeviceMapper, DcDevice> i
String direction = String.valueOf(parameter.get("direction"));
String useState = String.valueOf(parameter.get("useState"));
DcDevice device = new DcDevice();
if (!Objects.equals(useState, "null")) {
if (!Objects.equals(useState, UniversalEnum.NULL.getValue())) {
device.setUseState(Integer.parseInt(useState));
}
if (!Objects.equals(childType, UniversalEnum.NULL.getValue())) {

46
zc-business/src/main/java/com/zc/business/service/impl/DcEmergencyPlansServiceImpl.java

@ -491,7 +491,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
end.add(markArray[UniversalEnum.ONE.getNumber()]);
parameter.put("startStakeMark", start);
parameter.put("endStakeMark", end);
parameter.put("useState",UniversalEnum.ONE.getValue());
parameter.put("useState",UniversalEnum.ONE.getNumber());
dcDevices = dcDeviceService.devicePileNumberQueryDevice(parameter);
Collections.sort(dcDevices, new Comparator<DcDevice>() {
@Override
@ -515,7 +515,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
end.add(UniversalEnum.ONE_HUNDRED_AND_FIFTY_FOUR.getValue());
parameter.put("startStakeMark", start);
parameter.put("endStakeMark", end);
parameter.put("useState",UniversalEnum.ONE.getValue());
parameter.put("useState",UniversalEnum.ONE.getNumber());
dcDevices = dcDeviceService.devicePileNumberQueryDevice(parameter);
Collections.sort(dcDevices, new Comparator<DcDevice>() {
@Override
@ -542,7 +542,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
end.add(UniversalEnum.ONE_HUNDRED_AND_FIFTY_FOUR.getValue());
parameter.put("startStakeMark", start);
parameter.put("endStakeMark", end);
parameter.put("useState",UniversalEnum.ONE.getValue());
parameter.put("useState",UniversalEnum.ONE.getNumber());
dcDevices = dcDeviceService.devicePileNumberQueryDevice(parameter);
Collections.sort(dcDevices, new Comparator<DcDevice>() {
@Override
@ -566,7 +566,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
end.add(markArray[UniversalEnum.ONE.getNumber()]);
parameter.put("startStakeMark", start);
parameter.put("endStakeMark", end);
parameter.put("useState",UniversalEnum.ONE.getValue());
parameter.put("useState",UniversalEnum.ONE.getNumber());
dcDevices = dcDeviceService.devicePileNumberQueryDevice(parameter);
Collections.sort(dcDevices, new Comparator<DcDevice>() {
@Override
@ -595,7 +595,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
parameter.put("startStakeMark", start);
parameter.put("endStakeMark", end);
parameter.put("deviceType", dcExecuteAction.getDeviceType());
parameter.put("useState",UniversalEnum.ONE.getValue());
parameter.put("useState",UniversalEnum.ONE.getNumber());
// 根据桩号范围,查询附近设备
dcDevices = dcDeviceService.devicePileNumberQueryDevice(parameter);
}
@ -782,7 +782,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
.map(String::valueOf)
.collect(Collectors.joining(UniversalEnum.COMMA.getValue()));
// 存储设备id 到 deviceIds 中
deviceIds.append(UniversalEnum.COLON.getNumber());
deviceIds.append(UniversalEnum.COLON.getValue());
deviceIds.append(deviceId);
} catch (Exception e) {
e.printStackTrace();
@ -839,7 +839,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
if (dcDevices.size() == UniversalEnum.ZERO.getNumber()) {
JSONObject result = new JSONObject();
JSONObject errorResult = new JSONObject();
errorResult.put("code",UniversalEnum.FIVE_HUNDRED.getValue());
errorResult.put("code",UniversalEnum.FIVE_HUNDRED.getNumber());
errorResult.put("msg",UniversalEnum.OPERATION_FAILURE.getValue());
result.put("deviceName", deviceTypeName);
result.put("content", UniversalEnum.NO_DEVICE_FOUND.getValue());
@ -875,7 +875,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
SimpleDateFormat dateFormat = new SimpleDateFormat(UniversalEnum.TIME_FORMAT_ALL.getValue());
Calendar calendar = Calendar.getInstance();
remark.append(dateFormat.format(calendar.getTime()));
remark.append(UniversalEnum.INVOKE.getNumber());
remark.append(UniversalEnum.INVOKE.getValue());
remark.append(device.getDeviceName());
try {
if (device.getDeviceType().equals(DeviceTypeConstants.DRIVING_GUIDANCE.toString())) {
@ -909,10 +909,10 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
status = UniversalEnum.ZERO.getNumber();
remark.append(UniversalEnum.SUCCESSFUL.getNumber());
remark.append(UniversalEnum.SUCCESSFUL.getValue());
} else {
status = UniversalEnum.ONE.getNumber();
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
}
result.put("result", ajaxResult);
resultArray.add(result);
@ -935,10 +935,10 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
resultArray.add(result);
if (ajaxResult1B.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
status = UniversalEnum.ZERO.getNumber();
remark.append(UniversalEnum.SUCCESSFUL.getNumber());
remark.append(UniversalEnum.SUCCESSFUL.getValue());
} else {
status = UniversalEnum.ONE.getNumber();
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
}
} else {
// 情报板发布全流程
@ -953,23 +953,23 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
// 说明没有匹配到设备
JSONObject errorResult = new JSONObject();
errorResult.put("device", device.getId());
errorResult.put("content", UniversalEnum.THE_CORRESPONDING_TEMPLATE_CONTENT_IS_NOT_MATCHED.getNumber());
errorResult.put("content", UniversalEnum.THE_CORRESPONDING_TEMPLATE_CONTENT_IS_NOT_MATCHED.getValue());
errorResult.put("deviceName", device.getDeviceName());
JSONObject result = new JSONObject();
result.put("result",errorResult);
result.put("code",UniversalEnum.FIVE_HUNDRED.getNumber());
result.put("msg",UniversalEnum.OPERATION_FAILURE.getNumber());
result.put("msg",UniversalEnum.OPERATION_FAILURE.getValue());
resultArray.add(result);
status = UniversalEnum.ONE.getNumber();
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
} else {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dcInfoBoardTemplate", foundContent);
status = boardReleaseProcess(props, iotDeviceId, jsonObject, device, resultArray, functionList);
if (status.equals(UniversalEnum.ZERO.getNumber())) {
remark.append(UniversalEnum.SUCCESSFUL.getNumber());
remark.append(UniversalEnum.SUCCESSFUL.getValue());
} else {
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
}
}
@ -1021,10 +1021,10 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
resultArray.add(result);
if (Objects.equals(returnResult.getString("retCode"), UniversalEnum.ZERO.getValue())) {
status = UniversalEnum.ZERO.getNumber();
remark.append(UniversalEnum.SUCCESSFUL.getNumber());
remark.append(UniversalEnum.SUCCESSFUL.getValue());
} else {
status = UniversalEnum.ONE.getNumber();
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
}
@ -1057,10 +1057,10 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
if (ajaxResultState.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber()) && ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
status = UniversalEnum.ZERO.getNumber();
remark.append(UniversalEnum.SUCCESSFUL.getNumber());
remark.append(UniversalEnum.SUCCESSFUL.getValue());
} else {
status = UniversalEnum.ONE.getNumber();
remark.append(UniversalEnum.LOSE.getNumber());
remark.append(UniversalEnum.LOSE.getValue());
}
}
@ -1068,7 +1068,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
propsList.add(proDevice);
// 语音广播恢复操作不存记录
if (!(device.getDeviceType().equals(DeviceTypeConstants.ROAD_SECTION_VOICE_BROADCASTING.toString())
&& operationType.equals(UniversalEnum.TWO.getValue()))) {
&& operationType.equals(UniversalEnum.TWO.getNumber()))) {
insertEquipmentControlRecordTable(device, propsList, resultArray, status, remark.toString(),eventId);
}
@ -1224,7 +1224,7 @@ public class DcEmergencyPlansServiceImpl implements DcEmergencyPlansService {
// 插入公众服务统计记录表
if (Objects.equals(dcDevice.getDeviceType(), UniversalEnum.TWO.getValue()) || Objects.equals(dcDevice.getDeviceType(), UniversalEnum.FIVE.getValue())) {
DcPublishManage dcPublishManage = new DcPublishManage();
if (Objects.equals(status, UniversalEnum.ZERO.getValue())) {
if (Objects.equals(status, UniversalEnum.ZERO.getNumber())) {
dcPublishManage.setPublishStatus(UniversalEnum.ONE.getNumber());//发布状态1-成功2-失败
} else {
dcPublishManage.setPublishStatus(UniversalEnum.TWO.getNumber());//发布状态1-成功2-失败

55
zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java

@ -1758,6 +1758,56 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
} else if (UniversalEnum.FOURTEEN.getValue().equals(result.getRight())) {
result.setRight(UniversalEnum.SERVICE_AREA_CLOSED.getValue());
}
} else if (UniversalEnum.DC_EVENT_TRAFFIC_CONTROL_VEHICLE_TYPE.getValue().equals(result.getRightPath())) {
if (UniversalEnum.ONE.getValue().equals(result.getRight())) {
result.setRight("10座以下客车");
} else if (UniversalEnum.TWO.getValue().equals(result.getRight())) {
result.setRight("10座以下客车(间隔放行)");
} else if (UniversalEnum.THREE.getValue().equals(result.getRight())) {
result.setRight("19座以上客车");
} else if (UniversalEnum.FOUR.getValue().equals(result.getRight())) {
result.setRight("一型客车");
} else if (UniversalEnum.FIVE.getValue().equals(result.getRight())) {
result.setRight("两客一危");
} else if (UniversalEnum.SIX.getValue().equals(result.getRight())) {
result.setRight("三类以上班线客车");
} else if (UniversalEnum.SEVEN.getValue().equals(result.getRight())) {
result.setRight("四轴及四轴以上货车(运送生鲜果蔬、抗疫物资车辆除外)");
} else if (UniversalEnum.EIGHT.getValue().equals(result.getRight())) {
result.setRight("三轴及以上(含三轴)货车");
} else if (UniversalEnum.NINE.getValue().equals(result.getRight())) {
result.setRight("3轴以上货车(不含危险品运输车)");
} else if (UniversalEnum.TEN.getValue().equals(result.getRight())) {
result.setRight("3轴以上货车");
} else if (UniversalEnum.ELEVEN.getValue().equals(result.getRight())) {
result.setRight("四轴及以上(含四轴)货车");
} else if (UniversalEnum.TWELVE.getValue().equals(result.getRight())) {
result.setRight("4轴以上货车(不含危险品运输车)");
} else if (UniversalEnum.THIRTEEN.getValue().equals(result.getRight())) {
result.setRight("4轴以上货车");
} else if (UniversalEnum.FOURTEEN.getValue().equals(result.getRight())) {
result.setRight("4轴以下货车");
} else if (UniversalEnum.FIFTEEN.getValue().equals(result.getRight())) {
result.setRight("57座以上客车");
} else if (UniversalEnum.SIXTEEN.getValue().equals(result.getRight())) {
result.setRight("五轴及以上货车");
} else if (UniversalEnum.SEVENTEEN.getValue().equals(result.getRight())) {
result.setRight("5轴以上货车");
} else if (UniversalEnum.EIGHTEEN.getValue().equals(result.getRight())) {
result.setRight("5轴以上货车(不含危险品运输车)");
} else if (UniversalEnum.NINETEEN.getValue().equals(result.getRight())) {
result.setRight("5轴以下货车");
} else if (UniversalEnum.TWENTY.getValue().equals(result.getRight())) {
result.setRight("6座以上客车");
} else if (UniversalEnum.TWENTY_ONE.getValue().equals(result.getRight())) {
result.setRight("6座以上面包车");
} else if (UniversalEnum.TWENTY_TWO.getValue().equals(result.getRight())) {
result.setRight("7座以上客车");
} else if (UniversalEnum.TWENTY_THREE.getValue().equals(result.getRight())) {
result.setRight("7座以下客车");
} else if (UniversalEnum.TWENTY_FOUR.getValue().equals(result.getRight())) {
result.setRight("8座以上客车");
}
} else if (UniversalEnum.DC_EVENT_TRAFFIC_CONTROL_LIMITED_TYPE.getValue().equals(result.getRightPath())) {
if (UniversalEnum.ONE.getValue().equals(result.getRight())) {
result.setRight(UniversalEnum.ONLY_ALLOW.getValue());
@ -1774,11 +1824,12 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
if (dcFacility != null){
result.setRight(dcFacility.getFacilityName());
}
} else if (UniversalEnum.DC_EVENT_ACCIDENT_LOCATION.getValue().equals(result.getRightPath())){
} else if (UniversalEnum.DC_EVENT_ACCIDENT_LOCATION.getValue().equals(result.getRightPath())
|| UniversalEnum.DC_EVENT_ACCIDENT_RAMP_ID.getValue().equals(result.getRightPath())){
DcEventAccident dcEventAccident = newEvent.getDcEventAccident();
if (dcEventAccident.getLocationType() == UniversalEnum.THREE.getNumber()){
DcRamp dcRamp = dcRampMapper.selectDcRampById((Long) result.getRight());
DcRamp dcRamp = dcRampMapper.selectDcRampById(Long.valueOf(result.getRight().toString()));
if (dcRamp != null){
result.setRight(dcRamp.getRampName());
}

5
zc-business/src/main/java/com/zc/business/service/impl/DcRoadConditionInformationServiceImpl.java

@ -94,4 +94,9 @@ public class DcRoadConditionInformationServiceImpl implements IDcRoadConditionIn
{
return dcRoadConditionInformationMapper.deleteDcRoadConditionInformationById(id);
}
@Override
public List<DcRoadConditionInformation> selectlistTime() {
return dcRoadConditionInformationMapper.selectlistTime();
}
}

65
zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java

@ -37,6 +37,8 @@ import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -57,8 +59,6 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
@Resource
private IDcFacilityService facilityService;
@Autowired
private IDcRoadConditionInformationService dcRoadConditionInformationService;
@Resource
private IDcRoadSectionService roadSectionService;
@ -81,6 +81,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
* 3. 在请求成功时解析响应体中的令牌信息并更新本地存储的令牌
*/
//@Scheduled(cron = "0 0 */5 * * ?")
/*
public static void refreshAccessToken() {
OkHttp okHttp = new OkHttp();
try {
@ -116,7 +117,42 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
}
}
*/
public static CompletableFuture<String> refreshAccessToken() {
CompletableFuture<String> future = new CompletableFuture<>();
OkHttp okHttp = new OkHttp();
try {
okHttp.url(baseUrl + UniversalEnum.DATA_CENTER_TRAFFIC_STATISTICS_OBTAIN_THE_TOKEN_URI.getValue())
.post(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
future.completeExceptionally(e);
}
@Override
public void onResponse(Call call, Response response) {
try {
if (response.isSuccessful() && response.body() != null) {
JSONObject token = JSON.parseObject(response.body().string());
String accessToken = token.getString("access_token");
// 将 access token 存储到 Redis
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
redisCache.setCacheObject(RedisKeyConstants.TRAFFIC_FLOW, token.getString("token_type") + " " + accessToken, token.getInteger("expires_in"), TimeUnit.SECONDS);
future.complete(accessToken);
} else {
future.completeExceptionally(new IOException("意外响应码:" + response.code()));
}
} catch (IOException e) {
future.completeExceptionally(e);
}
}
});
} catch (HttpException e) {
future.completeExceptionally(e);
}
return future;
}
/**
* 获取访问令牌
@ -130,13 +166,21 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
String token = redisCache.getCacheObject(RedisKeyConstants.TRAFFIC_FLOW);
// 检查token是否存在
if (token == null) {
// 组合并返回token类型和访问令牌
refreshAccessToken();
token = redisCache.getCacheObject(RedisKeyConstants.TRAFFIC_FLOW);
// // 组合并返回token类型和访问令牌
// refreshAccessToken();
// token = redisCache.getCacheObject(RedisKeyConstants.TRAFFIC_FLOW);
// 异步获取新token,并更新缓存
try {
// 异步获取新token,并更新缓存
token = refreshAccessToken().get(); // 等待异步操作完成
} catch (InterruptedException | ExecutionException e) {
// 处理异常情况
e.printStackTrace();
}
}
// 如果token不存在,返回null
return token;
}
@ -965,11 +1009,9 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
// System.out.printf("最大距离为: %.2f 米%n", distanceM);
jsonObject.put("max_jam_dist", distanceM);//最大拥堵距离
double endMake = startPileNo +Double.parseDouble(String.format("%.3f", distanceM));
String endmark = formatNumber(endMake);
jsonObject.put("endMark", endmark);//结束桩号
String[] split = string1.split(",");
double firstLon = Double.parseDouble(split[UniversalEnum.ZERO.getNumber()]);
double firstLat = Double.parseDouble(split[UniversalEnum.ONE.getNumber()]);
@ -984,14 +1026,9 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
double distanceMeters = distanceKm * UniversalEnum.THOUSAND.getNumber(); // 将距离转换为米
//System.out.printf("两点之间的距离为: %.2f 米%n", distanceMeters);
jsonObject.put("jam_dist", distanceMeters);//当前拥堵距离
}
}
//插入 数据库 road_condition_information
DcRoadConditionInformation dcRoadConditionInformation =new DcRoadConditionInformation();
dcRoadConditionInformation.setOtherConfig(jsonArray.toJSONString());
dcRoadConditionInformationService.insertDcRoadConditionInformation(dcRoadConditionInformation);
return jsonArray;
}

10
zc-business/src/main/resources/mapper/business/DcEventMapper.xml

@ -153,10 +153,7 @@
dc_event.dept_id as dept_id,
sys_dept.dept_name,
stake_mark,
CASE direction
WHEN '1' THEN '菏泽方向'
WHEN '3' THEN '济南方向'
END AS direction,
direction,
dc_event.user_id as user_id,
sys_user.nick_name as nickName,
start_time,
@ -403,10 +400,7 @@
SELECT dc_event.id AS id,
dc_event.stake_mark,
dc_event.link_id,
CASE dc_event.direction
WHEN '1' THEN '菏泽方向'
WHEN '3' THEN '济南方向'
END AS direction,
dc_event.direction AS direction,
dc_event.user_id,
dc_event.is_perceived,
dc_event.user_id as user_id,

6
zc-business/src/main/resources/mapper/business/DcRoadConditionInformationMapper.xml

@ -23,6 +23,12 @@
ORDER BY create_time DESC
</select>
<select id="selectlistTime" parameterType="DcRoadConditionInformation" resultMap="DcRoadConditionInformationResult">
SELECT id, create_time
FROM dc_road_condition_information
WHERE DATE(create_time) = CURDATE()
ORDER BY create_time DESC;
</select>
<select id="selectDcRoadConditionInformationById" parameterType="Long" resultMap="DcRoadConditionInformationResult">
<include refid="selectDcRoadConditionInformationVo"/>

8
zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml

@ -65,9 +65,11 @@
</select>
<select id="selectStatusCountByEventType" resultType="java.util.Map" parameterType="String">
select event_state eventState,count(*) num from dc_event
where event_type = #{eventType} and date_format(start_time,'%y%m%d') = date_format(now(),'%y%m%d')
group by event_state
(SELECT '0' eventState,count(*) num FROM dc_event where event_type = #{eventType} and date_format(create_time,'%y%m%d') = date_format(now(),'%y%m%d') and event_state = '0')
UNION All
(SELECT '1' eventState,count(*) num FROM dc_event where event_type = #{eventType} and date_format(start_time,'%y%m%d') = date_format(now(),'%y%m%d') and event_state = '1')
UNION All
(SELECT '2' eventState,count(*) num FROM dc_event where event_type = #{eventType} and date_format(end_time,'%y%m%d') = date_format(now(),'%y%m%d') and event_state = '2')
</select>
<select id="getEventTypeRatio" resultType="java.util.Map">

Loading…
Cancel
Save