Browse Source

交通流预警 修改

develop
王兴琳 5 months ago
parent
commit
4f689a89ba
  1. 97
      zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java
  2. 16
      zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml

97
zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java

@ -1,12 +1,13 @@
package com.zc.business.controller;
import com.google.gson.Gson;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.zc.business.domain.DcHolidays;
import com.zc.business.domain.DcNoStakeWarningTable;
import com.zc.business.domain.DcTollStationStatisticsData;
import com.zc.business.domain.DcTollStationStatisticsDataMap;
import com.zc.business.service.IDcGantryStatisticsDataService;
import com.zc.business.service.IDcHolidaysService;
import com.zc.business.service.IDcTollStationStatisticsDataService;
import com.zc.business.service.impl.DcNoStakeWarningTableServiceImpl;
import com.zc.common.core.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
@ -14,9 +15,13 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
*
@ -31,11 +36,12 @@ public class DcTrafficFlowWarning {
private IDcHolidaysService dcHolidaysService;
@Autowired
private IDcGantryStatisticsDataService dcGantryStatisticsDataService;
//@Scheduled(cron = "0/10 * * * * ?")
//@Scheduled(cron = "0 0/5 * * * ?")
public void DcTrafficFlow() {
System.out.println("每隔10秒执行一次:" + new Date());
@Autowired
private IDcTollStationStatisticsDataService iDcTollStationStatisticsDataService;
//@Scheduled(cron = "0/10 * * * * ?")
@Scheduled(cron = "0 0 9 * * ?")
public void DcTrafficFlow() throws ParseException {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 获取当前年份
@ -48,8 +54,10 @@ public class DcTrafficFlowWarning {
LocalDate dateAfterSevenDays = currentDate.plusDays(7);
// 格式化日期输出(可选)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = dateAfterSevenDays.format(formatter);
//String formattedDate ="2024-05-01";
DateTimeFormatter formatterStr = DateTimeFormatter.ofPattern("yyyy年M月d日");
// String formattedDate = dateAfterSevenDays.format(formatter);
String formattedDateStr = dateAfterSevenDays.format(formatterStr);
String formattedDate ="2024-05-01";
for (DcHolidays holidays : dcHolidaysList) {
String vacation = holidays.getVacation();
@ -58,31 +66,55 @@ public class DcTrafficFlowWarning {
if (formattedDate.equals(dates[0])) {
//当前假期名称
String name = holidays.getName();
dcHolidays.setDate(currentYear-1);
dcHolidays.setDate(currentYear - 1);
DcHolidays dcHolidaysLast = dcHolidaysService.selectDcHolidaysListNameByDate(currentYear-1,name);
DcHolidays dcHolidaysLast = dcHolidaysService.selectDcHolidaysListNameByDate(currentYear - 1, name);
String vacation1 = dcHolidaysLast.getVacation();
String[] date = vacation1.split("\\|");
Map<String, Map<String, List<Map<String,String>>>> mapListOne = new HashMap<>();
Map<String, Map<String, List<Map<String, String>>>> mapListOne = new HashMap<>();
Map<String, List<Map<String,String>>> map = new HashMap<>();
Map<String, List<Map<String,String>>> map2 = new HashMap<>();
Map<String, List<Map<String, String>>> map = new HashMap<>();
Map<String, List<Map<String, String>>> map2 = new HashMap<>();
Map<String, List<Map<String, String>>> map3 = new HashMap<>();
Map<String, List<Map<String, String>>> map4 = new HashMap<>();
for (int i1 = 0; i1 < date.length; i1++) {
List<Map<String,String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow( date[i1],"1","4");
List<Map<String,String>> mapList2 = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1],"3","4");
//交通流
List<Map<String, String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1], "1", "4");
List<Map<String, String>> mapList2 = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1], "3", "4");
//收费站
// access_type 1 入口 2出口
// period_type 时间颗粒度
List<Map<String, String>> dcTollStationStatisticsDataTwo = iDcTollStationStatisticsDataService.TollBoothStatistics(date[i1], "2", "4");
List<Map<String, String>> dcTollStationStatisticsData = iDcTollStationStatisticsDataService.TollBoothStatistics(date[i1], "1", "4");
// 计算当前日期加上七天后的日期
LocalDate dateAfterSevenDay = currentDate.plusDays(7+i1);
LocalDate dateAfterSevenDay = currentDate.plusDays(7 + i1);
DateTimeFormatter formattedDateLst = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formatted = dateAfterSevenDay.format(formattedDateLst);
map.put(formatted,mapList);
map2.put(formatted,mapList2);
map.put(formatted, mapList);
map2.put(formatted, mapList2);
map3.put(formatted, dcTollStationStatisticsData);
map4.put(formatted, dcTollStationStatisticsDataTwo);
}
mapListOne.put("1",map);
mapListOne.put("3",map2);
/* //根据时间进行升序排序
Map<String, List<Map<String, String>>> sortedMap = map3.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue, // 如果有重复的key,默认保留旧值
LinkedHashMap::new // 为了保持排序,使用LinkedHashMap
));
// 用排序后的Map替换原来的map3
map3 = sortedMap;*/
mapListOne.put("1", map);//菏泽方向
mapListOne.put("3", map2);//济南方向
mapListOne.put("4", map3);//收费站入口
mapListOne.put("5", map4);//收费站出口
// 创建Gson对象
Gson gson = new Gson();
@ -90,21 +122,26 @@ public class DcTrafficFlowWarning {
String jsonString = gson.toJson(mapListOne);
DcNoStakeWarningTable dcNoStakeWarningTable = new DcNoStakeWarningTable();
dcNoStakeWarningTable.setWarningDescription(name +"交通流数据预警提醒");
// 计算当前日期加上七天的日期
LocalDate dateAfterSevenDa = currentDate.plusDays(7+date.length);
// 计算当前日期加上七天的日期
// 格式化日期输出(可选)
DateTimeFormatter formatte = DateTimeFormatter.ofPattern("M月d日");
String formattedDa = dateAfterSevenDa.format(formatte);
dcNoStakeWarningTable.setWarningDescription("预计"+ formattedDateStr+"-"+formattedDa+",高速车流量剧增。平台预警提醒您:提前调度路管人员前往匝道等交通事故多发路段巡查,以便及时救援。");
dcNoStakeWarningTable.setWarningType("1");
dcNoStakeWarningTable.setOtherConfig(jsonString);
dcNoStakeWarningTable.setWarningTime(new Date());
//存入记录
dcNoStakeWarningTableService.addDcNoStakeWarningTable(dcNoStakeWarningTable);
Map<String,Object> contentMap = new HashMap<>();
contentMap.put("content",name +"交通流数据预警提醒");
contentMap.put("trafficFlowDataEarlyWarning",jsonString);
Long id = dcNoStakeWarningTable.getId();
Map<String, Object> contentMap = new HashMap<>();
contentMap.put("content", "预计"+ formattedDateStr+"-"+formattedDa+",高速车流量剧增。平台预警提醒您:提前调度路管人员前往匝道等交通事故多发路段巡查,以便及时救援。");
contentMap.put("id", id);
WebSocketService.broadcast("trafficFlowDataEarlyWarning", contentMap);
// 打印JSON字符串
System.out.println(jsonString.length());
System.out.println(jsonString);
}
}
}

16
zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml

@ -103,14 +103,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="TollBoothStatistics" parameterType="string" resultType="com.zc.business.domain.DcTollStationStatisticsDataMap" >
SELECT
fa.facility_name,
fa.stake_mark,
dt.id,
dt.access_type,
dt.period_type,
dt.traffic_volume,
dt.toll_station_code,
dt.statistical_date
IFNULL( fa.facility_name, '') AS facility_name,
IFNULL(fa.stake_mark, '') AS stake_mark,
IFNULL(dt.id,'') AS id,
IFNULL( dt.access_type, '') AS access_type,
IFNULL( dt.period_type, '') AS period_type,
IFNULL( dt.traffic_volume, 0) AS traffic_volume,
IFNULL( dt.toll_station_code, '') AS toll_station_code,
IFNULL( dt.statistical_date, '') AS statistical_date
FROM
dc_facility AS fa
LEFT JOIN

Loading…
Cancel
Save