Browse Source

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

develop
wangsixiang 8 months ago
parent
commit
489f8c0b06
  1. 166
      zc-business/src/main/java/com/zc/business/controller/DcPublishManageController.java
  2. 21
      zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java
  3. 3
      zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java
  4. 11
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java
  5. 158
      zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java
  6. 1
      zc-business/src/main/java/com/zc/business/domain/ComprehensiveIndexQuery.java
  7. 2
      zc-business/src/main/java/com/zc/business/domain/DcEvent.java
  8. 73
      zc-business/src/main/java/com/zc/business/domain/export/EventTypePublishManageMonth.java
  9. 61
      zc-business/src/main/java/com/zc/business/domain/export/StatisticsPublishManage.java
  10. 73
      zc-business/src/main/java/com/zc/business/domain/export/TrendsPublishManage.java
  11. 53
      zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java
  12. 84
      zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java
  13. 6
      zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java
  14. 70
      zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java
  15. 614
      zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java
  16. 10
      zc-business/src/main/resources/mapper/business/StatusMapper.xml

166
zc-business/src/main/java/com/zc/business/controller/DcPublishManageController.java

@ -7,8 +7,15 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.zc.business.domain.DcPublishManage;
import com.zc.business.domain.export.AllEventNum;
import com.zc.business.domain.export.EventTypePublishManageMonth;
import com.zc.business.domain.export.StatisticsPublishManage;
import com.zc.business.domain.export.TrendsPublishManage;
import com.zc.business.enums.EventTypeEnum;
import com.zc.business.enums.UniversalEnum;
import com.zc.business.enums.ValueConverter;
import com.zc.business.service.IDcPublishManageService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -17,7 +24,8 @@ 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.*;
import java.util.stream.Collectors;
/**
* 信息发布管理记录Controller
@ -105,18 +113,109 @@ public class DcPublishManageController extends BaseController
{
return AjaxResult.success(dcPublishManageService.statisticsPublishManage());
}
@ApiOperation(value = "导出今日发布渠道分析",tags = {"ECharts导出"})
@GetMapping("/exportStatisticsPublishManage")
public void exportStatisticsPublishManage(HttpServletResponse response){
List<HashMap<String,Object>> data = dcPublishManageService.statisticsPublishManage();
List<StatisticsPublishManage> list = new ArrayList<>();
if (data != null && data.size() > 0) {
Long total = data.stream().mapToLong(item -> Long.parseLong(item.get("number").toString())).sum();
for (HashMap<String, Object> datum : data) {
StatisticsPublishManage statisticsPublishManage = new StatisticsPublishManage();
if ("4".equals(datum.get("publishChannels").toString())){
statisticsPublishManage.setChannelName("情报板");
} else if ("7".equals(datum.get("publishChannels").toString())){
statisticsPublishManage.setChannelName("语音广播");
} else if ("8".equals(datum.get("publishChannels").toString())){
statisticsPublishManage.setChannelName("企业微信");
}
statisticsPublishManage.setNum(datum.get("number").toString());
//计算百分比
double ratio = (double) Long.parseLong(datum.get("number").toString()) / total * 100;
ratio = Math.round(ratio * 100.0) / 100.0;
statisticsPublishManage.setRatio(ratio + "%");
list.add(statisticsPublishManage);
}
}
ExcelUtil<StatisticsPublishManage> util = new ExcelUtil<>(StatisticsPublishManage.class);
util.exportExcel(response, list, "今日发布渠道分析");
}
//统计服务,今日发布事件类型分析
@PostMapping("/eventTypePublishManage")
public AjaxResult eventTypePublishManage()
{
return AjaxResult.success(dcPublishManageService.eventTypePublishManage());
}
@ApiOperation(value = "导出今日发布事件类型分析",tags = {"ECharts导出"})
@GetMapping("/exportEventTypePublishManage")
public void exportEventTypePublishManage(HttpServletResponse response){
List<HashMap<String,Object>> data = dcPublishManageService.eventTypePublishManage();
List<AllEventNum> list = new ArrayList<>();
if (data != null && data.size() > 0) {
Long total = data.stream().mapToLong(item -> Long.parseLong(item.get("number").toString())).sum();
for (HashMap<String, Object> datum : data) {
AllEventNum allEventNum = new AllEventNum();
allEventNum.setEventName(ValueConverter.eventTypeName(datum.get("eventType").toString()));
allEventNum.setNum(datum.get("number").toString());
//计算百分比
double ratio = (double) Long.parseLong(datum.get("number").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, "今日发布事件类型分析");
}
//统计服务,今日发布趋势分析
@PostMapping("/trendsPublishManage")
public AjaxResult releaseTrendsPublishManage()
{
return AjaxResult.success(dcPublishManageService.releaseTrendsPublishManage());
}
@ApiOperation(value = "导出今日发布趋势分析",tags = {"ECharts导出"})
@GetMapping("/exportTrendsPublishManage")
public void exportTrendsPublishManage(HttpServletResponse response){
List<HashMap<String,Object>> data = dcPublishManageService.releaseTrendsPublishManage();
List<TrendsPublishManage> list = new ArrayList<>();
if (data != null && data.size() > 0) {
Map<String,List<HashMap<String,Object>>> group = data.stream().collect(Collectors.groupingBy(item -> item.get("hour").toString()));
for (String publishTime : group.keySet()) {
TrendsPublishManage trendsPublishManage = new TrendsPublishManage();
trendsPublishManage.setPublishTime(publishTime + "时");
List<HashMap<String,Object>> groupData = group.get(publishTime);
for (HashMap<String, Object> groupDatum : groupData) {
if ("4".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setBoard(groupDatum.get("number").toString());
} else if ("7".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setBroadcast(groupDatum.get("number").toString());
} else if ("8".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setWeChat(groupDatum.get("number").toString());
}
}
list.add(trendsPublishManage);
}
list = list.stream().sorted(Comparator.comparing(item ->{
String publicTime = item.getPublishTime().substring(0,item.getPublishTime().length() -1);
return Integer.parseInt(publicTime);
})).collect(Collectors.toList());
}
ExcelUtil<TrendsPublishManage> util = new ExcelUtil<>(TrendsPublishManage.class);
util.exportExcel(response, list, "今日发布趋势分析");
}
//统计服务,月发布渠道趋势分析
@PostMapping("/monthTrendsPublishManage")
public AjaxResult monthTrendsPublishManage(@RequestBody DcPublishManage dcPublishManage)
@ -126,6 +225,39 @@ public class DcPublishManageController extends BaseController
}
return AjaxResult.success(dcPublishManageService.monthTrendsPublishManage(dcPublishManage));
}
@ApiOperation(value = "导出月发布渠道趋势分析",tags = {"ECharts导出"})
@GetMapping("/exportMonthTrendsPublishManage")
public void exportMonthTrendsPublishManage(HttpServletResponse response,DcPublishManage dcPublishManage){
List<HashMap<String,Object>> data = dcPublishManageService.monthTrendsPublishManage(dcPublishManage);
List<TrendsPublishManage> list = new ArrayList<>();
if (data != null && data.size() > 0) {
Map<String,List<HashMap<String,Object>>> group = data.stream().collect(Collectors.groupingBy(item -> item.get("publishTime").toString()));
for (String publishTime : group.keySet()) {
TrendsPublishManage trendsPublishManage = new TrendsPublishManage();
trendsPublishManage.setPublishTime(publishTime);
List<HashMap<String,Object>> groupData = group.get(publishTime);
for (HashMap<String, Object> groupDatum : groupData) {
if ("4".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setBoard(groupDatum.get("number").toString());
} else if ("7".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setBroadcast(groupDatum.get("number").toString());
} else if ("8".equals(groupDatum.get("publishChannels").toString())){
trendsPublishManage.setWeChat(groupDatum.get("number").toString());
}
}
list.add(trendsPublishManage);
}
list = list.stream().sorted(Comparator.comparing(TrendsPublishManage::getPublishTime)).collect(Collectors.toList());
}
ExcelUtil<TrendsPublishManage> util = new ExcelUtil<>(TrendsPublishManage.class);
util.exportExcel(response, list, "月发布渠道趋势分析");
}
//统计服务,事件类型对应的发布渠道发布的数量
@PostMapping("/eventTypePublishManageSum")
public AjaxResult eventTypePublishManageSum()
@ -141,6 +273,38 @@ public class DcPublishManageController extends BaseController
}
return AjaxResult.success(dcPublishManageService.eventTypePublishManageMonth(dcPublishManage));
}
@ApiOperation(value = "导出各事件发布渠道分析",tags = {"ECharts导出"})
@GetMapping("/exportEventTypePublishManageMonth")
public void exportEventTypePublishManageMonth(HttpServletResponse response,DcPublishManage dcPublishManage){
List<HashMap<String,Object>> data = dcPublishManageService.eventTypePublishManageMonth(dcPublishManage);
List<EventTypePublishManageMonth> list = new ArrayList<>();
if (data != null && data.size() > 0) {
Map<String,List<HashMap<String,Object>>> group = data.stream().collect(Collectors.groupingBy(item -> item.get("eventType").toString()));
for (EventTypeEnum value : EventTypeEnum.values()) {
EventTypePublishManageMonth eventTypePublishManageMonth = new EventTypePublishManageMonth();
eventTypePublishManageMonth.setTypeName(value.getInfo());
if (group.containsKey(String.valueOf(value.getCode()))){
List<HashMap<String,Object>> groupData = group.get(String.valueOf(value.getCode()));
for (HashMap<String, Object> groupDatum : groupData) {
if ("4".equals(groupDatum.get("publishChannels").toString())){
eventTypePublishManageMonth.setBoard(groupDatum.get("number").toString());
} else if ("7".equals(groupDatum.get("publishChannels").toString())){
eventTypePublishManageMonth.setBroadcast(groupDatum.get("number").toString());
} else if ("8".equals(groupDatum.get("publishChannels").toString())){
eventTypePublishManageMonth.setWeChat(groupDatum.get("number").toString());
}
}
}
list.add(eventTypePublishManageMonth);
}
}
ExcelUtil<EventTypePublishManageMonth> util = new ExcelUtil<>(EventTypePublishManageMonth.class);
util.exportExcel(response, list, "各事件发布渠道分析");
}
/**
* 公众服务统计查询
*/

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

@ -3,6 +3,7 @@ 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.enums.UniversalEnum;
import com.zc.business.service.IDcRoadConditionInformationService;
import com.zc.business.service.IDcTrafficStatisticsService;
import com.zc.common.core.httpclient.exception.HttpException;
@ -13,6 +14,7 @@ import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
*路况信息 每小时入一次库
@ -25,7 +27,7 @@ public class DcTimingOfTrafficConditionsController {
private IDcRoadConditionInformationService dcRoadConditionInformationService;
// 调用服务层方法,获取当前交通指标数据
@Scheduled(cron = "0 0 * * * *")
@Scheduled(cron = "0 0/30 * * * *")
//@Scheduled(cron = "0 0/1 * * * ?")
public void getTheCurrentCongestedSection() throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
@ -33,20 +35,25 @@ public class DcTimingOfTrafficConditionsController {
//插入 数据库
DcRoadConditionInformation dcRoadConditionInformation =new DcRoadConditionInformation();
dcRoadConditionInformation.setOtherConfig(jsonArray.toJSONString());
DcRoadConditionInformation dcRoadConditionInformation1 = dcRoadConditionInformationService.selectlistTime().get(0);
List<DcRoadConditionInformation> dcRoadConditionInformations = dcRoadConditionInformationService.selectlistTime();
if (dcRoadConditionInformations.size()==UniversalEnum.ZERO.getNumber()){
dcRoadConditionInformationService.insertDcRoadConditionInformation(dcRoadConditionInformation);
}else {
DcRoadConditionInformation dcRoadConditionInformation1 = dcRoadConditionInformations.get(UniversalEnum.ZERO.getNumber());
Date createTime = dcRoadConditionInformation1.getCreateTime();
Calendar createTimeCalendar = Calendar.getInstance();
createTimeCalendar.setTime(createTime);
// 获取 createTime 的小时
int createHour = createTimeCalendar.get(Calendar.HOUR_OF_DAY);
// 获取当前时间的小时
// 获取 createTime 的分钟
int createMinute = createTimeCalendar.get(Calendar.MINUTE);// 获取当前时间的小时
Calendar currentCalendar = Calendar.getInstance();
int currentHour = currentCalendar.get(Calendar.HOUR_OF_DAY);
if (createHour != currentHour) {
int currentMinute = currentCalendar.get(Calendar.MINUTE);
if (createMinute != currentMinute) {
dcRoadConditionInformationService.insertDcRoadConditionInformation(dcRoadConditionInformation);
}
}
}
// 将获取到的交通指标数据封装为成功的结果并返回
}

3
zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java

@ -7,6 +7,7 @@ import com.zc.business.domain.DcHolidays;
import com.zc.business.enums.UniversalEnum;
import com.zc.business.service.IDcHolidaysService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
@ -27,7 +28,7 @@ public class DcTrafficFlowWarningDate {
@Autowired
private ISysConfigService configService;
//@Scheduled(cron = "0/10 * * * * ?")
@Scheduled(cron = "0 0 0 1 * ?")
public void yearPriorToAcquisition() {
try {

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

@ -803,6 +803,17 @@ public AjaxResult trafficFlowAtTollStationEntranceHour(String startDate, String
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray);
}
/**
* 各收费站入口分车型车流量
*/
@ApiOperation("收费站日累计车流辆")
@GetMapping("/history/trafficFlowAtToll")
public AjaxResult trafficFlowAtToll() throws HttpException, IOException {
// 调用服务层方法,获取当前交通指标数据
int a = dcTrafficStatisticsService.trafficFlowAtToll();
// 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(a);
}
/**
* 导出收费站出入口实时车流量

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

@ -25,7 +25,9 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@ -257,11 +259,156 @@ public class WeatherForecastController extends BaseController {
JSONObject jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) {
JSONArray data = jsonResult.getJSONArray("data");
if (data.size() != UniversalEnum.ZERO.getNumber()) {
redisCache.setCacheObject("currentWeatherAndForecastInformation", data);
return AjaxResult.success(data);
JSONArray jsonArray = new JSONArray();
for (int i = UniversalEnum.ZERO.getNumber(); i < data.size(); i++) {
JSONObject jsonObject = (JSONObject) JSON.toJSON(data.get(i));
String pre = jsonObject.getString("pre");
if (Objects.equals(pre, UniversalEnum.ZERO.getValue())) {
String visLevel = jsonObject.getString("visLevel");
if (Objects.equals(visLevel, UniversalEnum.ONE.getValue()) || Objects.equals(visLevel, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
} else if (Objects.equals(visLevel, UniversalEnum.THREE.getValue()) || Objects.equals(visLevel, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLOUDY.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLOUDY.getNumber());
} else if (Objects.equals(visLevel, UniversalEnum.FIVE.getValue()) || Objects.equals(visLevel, UniversalEnum.SIX.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.OVERCAST_SKY.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.OVERCAST_SKY.getNumber());
}
} else {
String preLevel = jsonObject.getString("preLevel");
String pph = jsonObject.getString("pph");
switch (preLevel) {
case "0":
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
break;
case "1":
case "2":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SPIT.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SPIT.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.LIGHT_SNOW.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.LIGHT_SNOW.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
case "3":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.MODERATE_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.MODERATE_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.MODERATE_SNOW.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.MODERATE_SNOW.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
case "4":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.HEAVY_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.HEAVY_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.HEAVY_SNOW.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.HEAVY_SNOW.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
case "5":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.RAINSTORM.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.RAINSTORM.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.BLIZZARD.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.BLIZZARD.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
case "6":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.BIG_RAINSTORM.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.BIG_RAINSTORM.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.BIG_BLIZZARD.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.BIG_BLIZZARD.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
case "7":
if (Objects.equals(pph, UniversalEnum.ONE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.EXTREMELY_HEAVY_RAINSTORM.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.EXTREMELY_HEAVY_RAINSTORM.getNumber());
} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber());
} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.HEAVY_SNOWSTORM.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.HEAVY_SNOWSTORM.getNumber());
} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.FREEZING_RAIN.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.FREEZING_RAIN.getNumber());
} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) {
jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue());
jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber());
}
break;
}
}
jsonArray.add(i,jsonObject);
};
if (jsonArray.size() != UniversalEnum.ZERO.getNumber()) {
redisCache.deleteObject("currentWeatherAndForecastInformation" + numStake);
redisCache.setCacheObject("currentWeatherAndForecastInformation" + numStake, jsonArray);
return AjaxResult.success(jsonArray);
} else {
return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation"));
JSONArray cacheObject = redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake);
return AjaxResult.success(cacheObject);
}
} else {
return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue());
@ -269,6 +416,7 @@ public class WeatherForecastController extends BaseController {
}
} catch (Exception ignored) {
logger.error(String.valueOf(ignored));
}
return AjaxResult.error(UniversalEnum.REQUEST_FAILED.getValue());

1
zc-business/src/main/java/com/zc/business/domain/ComprehensiveIndexQuery.java

@ -21,6 +21,7 @@ public class ComprehensiveIndexQuery {
private String facilityCode;
private String facilityName;
@Excel(name = "方向", readConverterExp = "1=菏泽方向,3=济南方向")
private String direction;
@Excel(name = "饱和度")
private Float saturationRate;

2
zc-business/src/main/java/com/zc/business/domain/DcEvent.java

@ -219,7 +219,7 @@ public class DcEvent {
@ApiModelProperty("是否是感知事件 0 表示 false,1 表示 true")
private Integer isPerceived;
@Excel(name = "影响车道")
@Excel(name = "影响车道",readConverterExp ="0=应急车道,1=行1,2=行2,3=行3,4=行4")
@ApiModelProperty("影响车道 车道占用:0-应急1-行1,2-行2,3-行3,4-行4")
private String lang;
@ApiModelProperty("高速名")

73
zc-business/src/main/java/com/zc/business/domain/export/EventTypePublishManageMonth.java

@ -0,0 +1,73 @@
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 EventTypePublishManageMonth extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 事件类型 */
@Excel(name = "事件类型")
private String typeName;
/** 情报板 */
@Excel(name = "情报板")
private String board;
/** 语音广播 */
@Excel(name = "语音广播")
private String broadcast;
/** 企业微信 */
@Excel(name = "企业微信")
private String weChat;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public String getBoard() {
return board;
}
public void setBoard(String board) {
this.board = board;
}
public String getBroadcast() {
return broadcast;
}
public void setBroadcast(String broadcast) {
this.broadcast = broadcast;
}
public String getWeChat() {
return weChat;
}
public void setWeChat(String weChat) {
this.weChat = weChat;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("typeName", typeName)
.append("board", board)
.append("broadcast", broadcast)
.append("weChat", weChat)
.toString();
}
}

61
zc-business/src/main/java/com/zc/business/domain/export/StatisticsPublishManage.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 StatisticsPublishManage extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 渠道 */
@Excel(name = "渠道")
private String channelName;
/** 数量 */
@Excel(name = "数量")
private String num;
/** 占比 */
@Excel(name = "占比")
private String ratio;
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
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("channelName", channelName)
.append("num", num)
.append("ratio", ratio)
.toString();
}
}

73
zc-business/src/main/java/com/zc/business/domain/export/TrendsPublishManage.java

@ -0,0 +1,73 @@
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 TrendsPublishManage extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 时间 */
@Excel(name = "时间")
private String publishTime;
/** 情报板 */
@Excel(name = "情报板")
private String board;
/** 语音广播 */
@Excel(name = "语音广播")
private String broadcast;
/** 企业微信 */
@Excel(name = "企业微信")
private String weChat;
public String getPublishTime() {
return publishTime;
}
public void setPublishTime(String publishTime) {
this.publishTime = publishTime;
}
public String getBoard() {
return board;
}
public void setBoard(String board) {
this.board = board;
}
public String getBroadcast() {
return broadcast;
}
public void setBroadcast(String broadcast) {
this.broadcast = broadcast;
}
public String getWeChat() {
return weChat;
}
public void setWeChat(String weChat) {
this.weChat = weChat;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("publishTime", publishTime)
.append("board", board)
.append("broadcast", broadcast)
.append("weChat", weChat)
.toString();
}
}

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

@ -856,14 +856,59 @@ public enum UniversalEnum {
// 道路结冰
ICY_ROADS(0, "道路结冰"),
// 台风
TYPHOON(0, "台风"),
// 晴天
CLEAR_WEATHER(0, "晴天"),
// 多云
CLOUDY(1, "多云"),
// 阴天
OVERCAST_SKY(2, "阴天"),
// 小雨
SPIT(3, "小雨"),
// 雨夹雪
SLEET(4, "雨夹雪"),
// 小雪
LIGHT_SNOW(5 ,"小雪"),
// 冻雨
FREEZING_RAIN(6 ,"冻雨"),
// 中雨
MODERATE_RAIN(7 ,"中雨"),
// 中雪
MODERATE_SNOW(8 ,"中雪"),
// 大雨
HEAVY_RAIN(9 ,"大雨"),
// 大雪
HEAVY_SNOW(10 ,"大雪"),
// 暴雨
RAINSTORM(0, "暴雨"),
RAINSTORM(11 ,"暴雨"),
// 暴雪
BLIZZARD(0, "暴雪"),
BLIZZARD(12 ,"暴雪"),
// 大暴雨
BIG_RAINSTORM(13 ,"大暴雨"),
// 大暴雪
BIG_BLIZZARD(14 ,"大暴雪"),
// 特大暴雨
EXTREMELY_HEAVY_RAINSTORM(15 ,"特大暴雨"),
// 特大暴雪
HEAVY_SNOWSTORM(16 ,"特大暴雪"),
// 台风
TYPHOON(0, "台风"),
// 寒潮
COLD_WAVE(0, "寒潮"),

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

@ -139,21 +139,21 @@ public class OperationLogAspect {
}
SimpleDateFormat df = new SimpleDateFormat(UniversalEnum.TIME_FORMAT_ALL.getValue());
String date = df.format(new Date());
String sta = UniversalEnum.EMPTY_STRING.getValue();
//SimpleDateFormat df = new SimpleDateFormat(UniversalEnum.TIME_FORMAT_ALL.getValue());
//String date = df.format(new Date());
//String sta = UniversalEnum.EMPTY_STRING.getValue();
if (Objects.equals(state, UniversalEnum.ZERO.getValue()) && Objects.equals(String.valueOf(((AjaxResult) jsonResult).get("code")), UniversalEnum.TWO_HUNDRED.getValue()) && !Objects.equals(String.valueOf(((AjaxResult) jsonResult).get("msg")), UniversalEnum.FIVE_HUNDRED.getValue())) {
operLog.setStatus(UniversalEnum.ZERO.getNumber());
sta = UniversalEnum.SUCCESSFUL.getValue();
//sta = UniversalEnum.SUCCESSFUL.getValue();
} else {
operLog.setStatus(UniversalEnum.ONE.getNumber());
sta = UniversalEnum.LOSE.getValue();
//sta = UniversalEnum.LOSE.getValue();
}
ArrayList<String> deviceIds = new ArrayList<>();
ArrayList<String> deviceNames = new ArrayList<>();
String deviceType = UniversalEnum.EMPTY_STRING.getValue();
StringBuilder remark = new StringBuilder("在" + date + UniversalEnum.INVOKE.getValue());
StringBuilder remark = new StringBuilder();
if (operUrl.contains(UniversalEnum.BATCH_FUNCTIONS.getValue())) {
//批量调用
JSONObject pointArg = null;
@ -162,7 +162,7 @@ public class OperationLogAspect {
} else {
pointArg = (JSONObject) JSON.toJSON(pointArgs[UniversalEnum.ZERO.getNumber()]);
}
String contentDetails = UniversalEnum.EMPTY_STRING.getValue();
//String contentDetails = UniversalEnum.EMPTY_STRING.getValue();
JSONArray devices = pointArg.getJSONArray("devices");
JSONArray functions = pointArg.getJSONArray("functions");
@ -185,38 +185,57 @@ public class OperationLogAspect {
deviceIds.add(String.valueOf(deviceId));
deviceNames.add(deviceName);
remark.append(deviceName).append("的");
//remark.append(deviceName);
for (int i1 = UniversalEnum.ZERO.getNumber(); i1 < functions.size(); i1++) {
JSONObject function = (JSONObject) JSON.toJSON(functions.get(i1));
String functionId = function.getString("functionId");
if (Objects.equals(functionId, UniversalEnum.A_ONE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_TWO.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_THREE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_FOUR.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_FIVE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_SIX.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKMD.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKTM.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKDF.getValue()) ||
Objects.equals(functionId, UniversalEnum.FIFTY_TWO.getValue()) ||
Objects.equals(functionId, UniversalEnum.THREE_D.getValue()) ||
Objects.equals(functionId, UniversalEnum.THREE_C.getValue())) {
return;
}
remark.append(deviceName);
String hashMap = Objects.equals(deviceType, UniversalEnum.FIVE.getValue()) ?
UniversalEnum.RELEASE_VOICE_BROADCAST.getValue() :
String.valueOf(
((HashMap<String, Object>) (DEVICEFUNCTIONNAME.get(deviceType)))
.get(function.getString("functionId")) == null ?
.get(functionId) == null ?
UniversalEnum.UNKNOWN_METHOD.getValue() :
((HashMap<String, Object>) (DEVICEFUNCTIONNAME.get(deviceType)))
.get(function.getString("functionId")));
.get(functionId));
remark.append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue()).append(sta);
remark.append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue());
if (i1 < functions.size() - UniversalEnum.ONE.getNumber()) {
remark.append(UniversalEnum.SEMICOLON.getValue());
}
if (Objects.equals(function.getString("functionId"), UniversalEnum.THIRTEEN.getValue()) && Objects.equals(deviceType, UniversalEnum.TWO.getValue())) {
JSONArray parameters = function.getJSONObject("params").getJSONArray("parameters");
List<String> content = parameters.stream().map(item -> ((JSONObject) item).getString("CONTENT")).collect(Collectors.toList());
contentDetails = content.toString().replace(UniversalEnum.LEFT_CENTER_BRACKET.getValue(), UniversalEnum.EMPTY_STRING.getValue()).replace(UniversalEnum.CLOSE_CENTER_BRACKET.getValue(), UniversalEnum.EMPTY_STRING.getValue());
}
if (Objects.equals(deviceType, UniversalEnum.FIVE.getValue())) {
contentDetails = function.getJSONObject("params").getString("text");
}
//if (Objects.equals(function.getString("functionId"), UniversalEnum.THIRTEEN.getValue()) && Objects.equals(deviceType, UniversalEnum.TWO.getValue())) {
// JSONArray parameters = function.getJSONObject("params").getJSONArray("parameters");
// List<String> content = parameters.stream().map(item -> ((JSONObject) item).getString("CONTENT")).collect(Collectors.toList());
// contentDetails = content.toString().replace(UniversalEnum.LEFT_CENTER_BRACKET.getValue(), UniversalEnum.EMPTY_STRING.getValue()).replace(UniversalEnum.CLOSE_CENTER_BRACKET.getValue(), UniversalEnum.EMPTY_STRING.getValue());
//}
//
//
//if (Objects.equals(deviceType, UniversalEnum.FIVE.getValue())) {
// contentDetails = function.getJSONObject("params").getString("text");
//}
}
if (i < (devices.size() - UniversalEnum.ONE.getNumber())) {
@ -240,8 +259,11 @@ public class OperationLogAspect {
operLog.setOperType(UniversalEnum.ONE.getValue());
}
saveOperLog(jsonResult, operLog, pointArgs, request, deviceIds, deviceNames, deviceType, remark);
//if (Objects.equals(deviceType, UniversalEnum.FIFTEEN.getValue())) {
// return;
//}
saveOperLog(jsonResult, operLog, pointArgs, request, deviceIds, deviceNames, deviceType, remark);
if ((Objects.equals(deviceType, UniversalEnum.TWO.getValue()) || Objects.equals(deviceType, UniversalEnum.FIVE.getValue())) && Objects.nonNull(operLog.getId())) {
@ -294,9 +316,25 @@ public class OperationLogAspect {
deviceNames.add(deviceName);
String functionId = String.valueOf(pointArgs[UniversalEnum.ONE.getNumber()]);
if (Objects.equals(functionId, UniversalEnum.A_ONE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_TWO.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_THREE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_FOUR.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_FIVE.getValue()) ||
Objects.equals(functionId, UniversalEnum.A_SIX.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKMD.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKTM.getValue()) ||
Objects.equals(functionId, UniversalEnum.ASKDF.getValue()) ||
Objects.equals(functionId, UniversalEnum.FIFTY_TWO.getValue()) ||
Objects.equals(functionId, UniversalEnum.THREE_D.getValue()) ||
Objects.equals(functionId, UniversalEnum.THREE_C.getValue())) {
return;
}
String hashMap = Objects.equals(deviceType, UniversalEnum.FIVE.getValue()) ? UniversalEnum.RELEASE_VOICE_BROADCAST.getValue() : String.valueOf(((HashMap<String, Object>) (DEVICEFUNCTIONNAME.get(deviceType))).get(functionId));
remark.append(deviceName).append("的").append(hashMap).append("功能并且调用").append(sta).append("了");
remark.append(deviceName).append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue());
if (loginUser != null) {
SysDept sysDept = deptService.selectDeptById(loginUser.getDeptId());

6
zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java

@ -58,4 +58,10 @@ public interface IDcTrafficStatisticsService {
JSONArray getTheCurrentCongestedSection()throws HttpException, IOException;
/**
* 各收费站日累计车流辆
* @return
*/
int trafficFlowAtToll()throws HttpException, IOException;
}

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

@ -9,6 +9,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.sun.xml.bind.v2.TODO;
import com.zc.business.constant.RedisKeyConstants;
import com.zc.business.domain.*;
import com.zc.business.enums.StakeMarkRange;
@ -683,9 +684,13 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
if (body != null) {
JSONArray jsonArray = JSON.parseArray(body.string());
Map<String, Integer> sumByName = new LinkedHashMap<>();
Integer totalFlow1=0;
List<Map<String, String>> list = new ArrayList();
for (Object item : jsonArray) { // 这里做了微调,直接遍历jsonArray的Object
JSONObject jsonObject = (JSONObject) item;
totalFlow1=totalFlow1+ jsonObject.getInteger("total_flow");
// 获取当前时间
LocalTime now = LocalTime.now();
// 获取当前小时数(24小时制)
@ -693,10 +698,11 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
if (jsonObject.getInteger("data_hour") == currentHour) {
String name = jsonObject.getString("ts_name"); // 更安全的取值方式
int totalFlow = jsonObject.getInteger("total_flow"); // 专门针对Integer类型
sumByName.put(name, totalFlow);
}
}
System.out.println("总数===:"+totalFlow1);
// 正确创建新的映射对象并添加到list中
for (Map.Entry<String, Integer> entry : sumByName.entrySet()) {
Map<String, String> singleResult = new LinkedHashMap<>(); // 每次循环都创建一个新的映射
@ -1036,6 +1042,68 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
return new JSONArray();
}
/**
* 各收费站日累计车流辆
* @return
*/
@Override
public int trafficFlowAtToll()throws HttpException, IOException {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue());
LocalDate currentDate = LocalDate.now();
String startDate = currentDate.format(formatter);
Response response = getResponseTrafficFlowAtToll(startDate,UniversalEnum.ONE.getValue());
Response responseTwo = getResponseTrafficFlowAtToll(startDate,UniversalEnum.TWO.getValue());
ResponseBody body = response.body();
ResponseBody bodyTwo = responseTwo.body();
Integer totalFlow1=UniversalEnum.ZERO.getNumber();
Integer totalFlow2=UniversalEnum.ZERO.getNumber();
if (body != null) {
JSONArray jsonArray = JSON.parseArray(body.string());
for (Object item : jsonArray) {
JSONObject jsonObject = (JSONObject) item;
totalFlow1=totalFlow1+ jsonObject.getInteger("total_flow");
}
}
if (bodyTwo != null) {
JSONArray jsonArray = JSON.parseArray(bodyTwo.string());
for (Object item : jsonArray) {
JSONObject jsonObject = (JSONObject) item;
totalFlow2=totalFlow2+ jsonObject.getInteger("total_flow");
}
}
return totalFlow1+totalFlow2;
}
private Response getResponseTrafficFlowAtToll(String startDate,String stationType) throws HttpException, IOException {
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("sysid", sysid);
JSONObject parameters = new JSONObject() {
{
put("start_date", startDate);
put("end_date", startDate);
put("station_type", stationType);
}
};
requestParams.put("parameters", parameters.toJSONString());
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", getAccessToken());
Response response // 请求响应
= okHttp
.headers(headers)
.url(baseUrl + UniversalEnum.EACH_TOLL_STATION_ENTRANCE_BY_TYPE_OF_HOURLY_TRAFFIC_FLOW.getValue()) // 请求地址
.data(requestParams) // 请求参数
.post(); // 请求方法
return response;
}
public DcFacility findNearestFacility(List<DcFacility> dcFacilityList, String stakeMarkCode) {
// 将目标桩号转换为整数

614
zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java

@ -1,9 +1,16 @@
package com.zc.business.task;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.ObjectMapper;
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.core.redis.RedisCache;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService;
import com.zc.business.controller.DcNmcController;
@ -14,32 +21,74 @@ import com.zc.business.enums.UniversalEnum;
import com.zc.business.mapper.ExternalInterfaceMonitoringMapper;
import com.zc.business.service.impl.DcTrafficStatisticsServiceImpl;
import com.zc.common.core.httpclient.OkHttp;
import com.zc.common.core.httpclient.exception.HttpException;
import com.zc.common.core.httpclient.request.RequestParams;
import okhttp3.Response;
import okhttp3.ResponseBody;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import okhttp3.*;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* 外部接口监控
*/
@Api(tags = "外部接口监控")
@RestController
@Component
public class ExternalInterfaceMonitoringTask {
@RequestMapping("/externalInterface")
public class ExternalInterfaceMonitoringTask extends BaseController {
// 视频平台token
private static String videoTOKEN;
// 语音广播token
private static String voiceBroadcastingToken;
@Resource
private ExternalInterfaceMonitoringMapper externalInterfaceMonitoringMapper;
@Resource
private RedisCache redisCache;
public static final MediaType JSO = MediaType.get("application/json; charset=utf-8");
@Resource
private WeatherForecastController weatherForecastController;
@Resource
private ISysConfigService configService;
/**
* 外部接口监控信息列表
*/
@ApiOperation("外部接口监控信息列表")
@GetMapping("/list")
public TableDataInfo list(ExternalInterfaceMonitoring externalInterfaceMonitoring)
{
startPage();
LambdaQueryWrapper<ExternalInterfaceMonitoring> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (externalInterfaceMonitoring.getInterfaceOwnership() != null) {
lambdaQueryWrapper.eq(ExternalInterfaceMonitoring::getInterfaceOwnership, externalInterfaceMonitoring.getInterfaceOwnership());
}
if (externalInterfaceMonitoring.getOperationStatus() != null) {
lambdaQueryWrapper.eq(ExternalInterfaceMonitoring::getOperationStatus, externalInterfaceMonitoring.getOperationStatus());
}
if (externalInterfaceMonitoring.getInterfaceName() != null) {
lambdaQueryWrapper.like(ExternalInterfaceMonitoring::getInterfaceName, externalInterfaceMonitoring.getInterfaceName());
}
lambdaQueryWrapper.orderByDesc(ExternalInterfaceMonitoring::getOperationTime);
List<ExternalInterfaceMonitoring> list = externalInterfaceMonitoringMapper.selectList(lambdaQueryWrapper);
return getDataTable(list);
}
@Scheduled(cron = "0 0/15 * * * ?")
public void externalInterfaceDataMonitoring() throws Exception {
@ -53,8 +102,23 @@ public class ExternalInterfaceMonitoringTask {
dcTrafficStatisticsCurrency(UniversalEnum.GETS_THE_URI_OF_THE_CURRENT_CONGESTION_EVENT.getValue(),
"获取当前拥堵事件信息");
// 交通流 - 获取车道占有率信息 ------------- 有起始桩号、结束桩号
dcTrafficStatisticsCurrencyVehicle(UniversalEnum.GETS_THE_LANE_OCCUPANCY_URI.getValue(), "获取车道占有率信息");
// 交通流 - 获取门架指标数据 ------------- 有开始时间、结束时间
obtainTheShelfIndicatorData(UniversalEnum.OBTAIN_THE_SHELF_INDICATOR_DATA.getValue(), "获取门架指标数据");
// 交通流 - 断面小时车流量分车型 ------------ 有开始时间、结束时间
dcTrafficStatisticsCurrencyVehicle(UniversalEnum.SECTION_HOURLY_TRAFFIC_FLOW_BY_VEHICLE_TYPE.getValue(), "断面小时车流量分车型");
// 交通流 - 各收费站入口分车型 ------------ 有开始时间、结束时间 ,出入口 1,2
dcTrafficStatisticsCurrencyTollStation(UniversalEnum.EACH_TOLL_STATION_ENTRANCE_BY_TYPE_OF_HOURLY_TRAFFIC_FLOW.getValue(), "各收费站入口分车型", UniversalEnum.ONE.getValue());
//边坡数据 获取边坡测点列表
Response response = getMeasurePointList();
getMeasure(response, "获取边坡测点列表");
//获取边坡历史数据
Response response1 = GetPointDataListAsync();
getMeasure(response1, "获取边坡历史数据");
// 全国气象数据 - 雷达数据
getRadarData();
@ -66,9 +130,58 @@ public class ExternalInterfaceMonitoringTask {
// 天气预报 - 当前气象预警信息查询
currentWeatherWarningInformationQuery();
// 视频平台 - 查询同步相机数据接口
querySynchronizationCameraDataInterface();
// 视频平台 - 获取视频流信息
getVideoStreamInformation();
// 视频平台 - 查询预置位列表
queryPresetPositionList();
// 视频平台 - 根据组织机构获取摄像机信息
obtainCameraInformationBasedOnOrganizationalStructure();
// 视频平台 - 云平台控制
cloudPlatformControl();
// 语音广播 - 查询终端
queryTerminal();
}
private void getMeasure(Response response, String operationName) throws Exception {
// 构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.SIDE_SLOPE.getCode());
externalInterfaceMonitoring.setInterfaceName(operationName);
// 插入
insertIntoExternalInterface(externalInterfaceMonitoring, response);
}
//获取边坡历史数据
private Response getMeasurePointList() throws HttpException, IOException {
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("proCode", configService.selectConfigByKey("proCode"));
requestParams.put("unitCode", configService.selectConfigByKey("unitCode"));
Object accessToken = redisCache.getCacheObject("accessToken");
if (accessToken == null) {
JSONObject authenticate = authenticate();
accessToken = authenticate.getJSONObject("result").getString("accessToken");
redisCache.setCacheObject("accessToken", accessToken);
redisCache.expire("accessToken", UniversalEnum.THREE.getNumber() * UniversalEnum.TWENTY_FOUR.getNumber() * UniversalEnum.THREE_THOUSAND_SIX_HUNDRED.getNumber());//设置过期时间s秒
}
Map<String, String> header = new HashMap<>();
header.put("Authorization", "Bearer " + accessToken.toString());
Response response // 请求响应
= okHttp
.headers(header)
.url(configService.selectConfigByKey("GetMeasurePointListAPI")) // 请求地址
.data(requestParams) // 请求参数
.get(); // 请求方法
return response;
}
/**
* 交通流通用
*/
@ -88,7 +201,111 @@ public class ExternalInterfaceMonitoringTask {
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode());
externalInterfaceMonitoring.setInterfaceName(operationName);
// 插入
insertIntoExternalInterface(externalInterfaceMonitoring,response);
trafficFlowResultProcessing(externalInterfaceMonitoring, response);
}
//车辆
public void dcTrafficStatisticsCurrencyVehicle(String path, String operationName) throws Exception {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue());
LocalDate currentDate = LocalDate.now();
String nowYear = currentDate.format(formatter);
// 参数
RequestParams requestParams = new RequestParams();
requestParams.put("sysid", UniversalEnum.SYS_ID.getValue());
JSONObject parameters = new JSONObject() {
{
put("start_date", nowYear);
put("end_date", nowYear);
}
};
requestParams.put("parameters", parameters.toJSONString());
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", DcTrafficStatisticsServiceImpl.getAccessToken());
String url = UniversalEnum.DATA_CENTER_TRAFFIC_STATISTICS_IP_PORT.getValue() + path;
// 请求
Response response = postRequestByHeadersAndParams(headers, url, requestParams);
// 构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode());
externalInterfaceMonitoring.setInterfaceName(operationName);
// 插入
trafficFlowResultProcessing(externalInterfaceMonitoring, response);
}
//获取门架指标数据
public void obtainTheShelfIndicatorData(String path, String operationName) throws Exception {
// 计算一小时前的时间点
DateTime lastHour = DateUtil.offsetHour(new Date(), UniversalEnum.MINUS_ONE.getNumber());
String startTime = DateUtil.beginOfHour(lastHour).toString();
String endTime = DateUtil.endOfHour(lastHour).toString();
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("sysid", UniversalEnum.SYS_ID.getValue());
JSONObject parameters = new JSONObject() {
{
put("start_time", startTime);
put("end_time", endTime);
}
};
requestParams.put("parameters", parameters.toJSONString());
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", DcTrafficStatisticsServiceImpl.getAccessToken());
Response response // 请求响应
= okHttp
.headers(headers)
.url(UniversalEnum.DATA_CENTER_TRAFFIC_STATISTICS_IP_PORT.getValue() + path) // 请求地址
.data(requestParams) // 请求参数
.post(); // 请求方法
// 构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode());
externalInterfaceMonitoring.setInterfaceName(operationName);
// 插入
trafficFlowResultProcessing(externalInterfaceMonitoring, response);
}
//收费站 TollStation
public void dcTrafficStatisticsCurrencyTollStation(String path, String operationName, String stationType) throws Exception {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue());
LocalDate currentDate = LocalDate.now();
String nowYear = currentDate.format(formatter);
// 参数
RequestParams requestParams = new RequestParams();
requestParams.put("sysid", UniversalEnum.SYS_ID.getValue());
JSONObject parameters = new JSONObject() {
{
put("start_date", nowYear);
put("end_date", nowYear);
put("station_type", stationType);
}
};
requestParams.put("parameters", parameters.toJSONString());
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", DcTrafficStatisticsServiceImpl.getAccessToken());
String url = UniversalEnum.DATA_CENTER_TRAFFIC_STATISTICS_IP_PORT.getValue() + path;
// 请求
Response response = postRequestByHeadersAndParams(headers, url, requestParams);
// 构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode());
externalInterfaceMonitoring.setInterfaceName(operationName);
// 插入
trafficFlowResultProcessing(externalInterfaceMonitoring, response);
}
/**
@ -111,7 +328,7 @@ public class ExternalInterfaceMonitoringTask {
}
} else {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
externalInterfaceMonitoring.setOperationResult(response.message());
externalInterfaceMonitoring.setOperationResult(response.toString());
}
externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID());
externalInterfaceMonitoring.setOperatorName("系统");
@ -179,19 +396,265 @@ public class ExternalInterfaceMonitoringTask {
insertIntoExternalInterface(externalInterfaceMonitoring, response);
}
/**
* 查询同步相机数据
*/
public void querySynchronizationCameraDataInterface() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
Map<String, String> header = new HashMap<>();
if (ExternalInterfaceMonitoringTask.videoTOKEN == null) {
getVideoToken();
}
header.put("Authorization", videoTOKEN);
Response response = getRequestByHeaders(header,
cameraInfo.getString("URL") + UniversalEnum.EXAMPLE_QUERY_SYNC_CAMERA_DATA.getValue());
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.VIDEO.getCode());
externalInterfaceMonitoring.setInterfaceName("查询同步相机数据");
//插入
videoResultInsertInto(externalInterfaceMonitoring, response);
}
/**
* 获取视频流信息
*/
public void getVideoStreamInformation() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
RequestParams requestParams = new RequestParams();
requestParams.put("type", UniversalEnum.ONE.getValue());
requestParams.put("camId", "57941");
Map<String, String> header = new HashMap<>();
if (ExternalInterfaceMonitoringTask.videoTOKEN == null) {
getVideoToken();
}
header.put("Authorization", videoTOKEN);
Response response = postRequestByHeadersAndParams(header,
cameraInfo.getString("URL") + UniversalEnum.GET_VIDEO_STREAM_INFORMATION.getValue(),
requestParams);
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.VIDEO.getCode());
externalInterfaceMonitoring.setInterfaceName("获取视频流信息");
//插入
videoResultInsertInto(externalInterfaceMonitoring, response);
}
/**
* 查询预置位列表
*/
public void queryPresetPositionList() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("camId", "57941");
Map<String, String> header = new HashMap<>();
if (ExternalInterfaceMonitoringTask.videoTOKEN == null) {
getVideoToken();
}
header.put("Authorization", videoTOKEN);
Response response = getRequestByHeadersByParam(header,
cameraInfo.getString("URL") + UniversalEnum.EXAMPLE_QUERY_THE_PRESET_BIT_LIST.getValue(),
requestParams);
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.VIDEO.getCode());
externalInterfaceMonitoring.setInterfaceName("查询预置位列表");
//插入
videoResultInsertInto(externalInterfaceMonitoring, response);
}
/**
* 根据组织机构获取摄像机信息
*/
public void obtainCameraInformationBasedOnOrganizationalStructure() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
RequestParams requestParams = new RequestParams();
requestParams.put("deptId", cameraInfo.getString("CAM_DEPT_ID"));
Map<String, String> header = new HashMap<>();
if (ExternalInterfaceMonitoringTask.videoTOKEN == null) {
getVideoToken();
}
header.put("Authorization", videoTOKEN);
Response response = getRequestByHeadersByParam(header,
cameraInfo.getString("URL") + UniversalEnum.GET_CAMERA_INFORMATION_BY_ORGANIZATION.getValue(),
requestParams);
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.VIDEO.getCode());
externalInterfaceMonitoring.setInterfaceName("根据组织机构获取摄像机信息");
//插入
videoResultInsertInto(externalInterfaceMonitoring, response);
}
/**
* 云平台控制
*/
public void cloudPlatformControl() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
RequestParams requestParams = new RequestParams();
requestParams.put("msgType", UniversalEnum.THREE.getValue());
requestParams.put("camId", "57941");
// (关雨刷)
requestParams.put("cmdType", "48");
requestParams.put("speed", "10");
Map<String, String> header = new HashMap<>();
header.put("Authorization", videoTOKEN);
Response response = getRequestByHeadersByParam(header,
cameraInfo.getString("URL") + UniversalEnum.CLOUD_PLATFORM_CONTROL.getValue(),
requestParams);
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.VIDEO.getCode());
externalInterfaceMonitoring.setInterfaceName("云平台控制");
//插入
videoResultInsertInto(externalInterfaceMonitoring, response);
}
/**
* 查询终端
*/
public void queryTerminal() {
JSONObject broadcast = JSONObject.parseObject(configService.selectConfigByKey("broadcast"));
//构造
ExternalInterfaceMonitoring externalInterfaceMonitoring = new ExternalInterfaceMonitoring();
externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.RADIO_BROADCAST.getCode());
externalInterfaceMonitoring.setInterfaceName("查询终端");
try {
if (voiceBroadcastingToken == null) {
getVoiceBroadcastingToken();
}
RequestParams requestParams = new RequestParams();
requestParams.put("zoneId", UniversalEnum.ASTERISK_ASTERISK_SIX_THOUSAND_AND_ONE.getValue());
requestParams.put("termDN", UniversalEnum.EMPTY_STRING.getValue());
OkHttp okHttp = new OkHttp(15);
Response response // 请求响应
= okHttp
.headers(new HashMap<>())
.data(requestParams) // 请求参数
.url(broadcast.getString("URL") + UniversalEnum.QUERY_TERM_DO_ACCESS_TOKEN.getValue() + voiceBroadcastingToken) // 请求地址
.post(); // 请求方法
//插入
ResponseBody body = response.body();
if (body != null) {
JSONObject jsonResult = JSONObject.parseObject(body.string());
if (jsonResult.get("retCode").equals(UniversalEnum.ZERO.getValue())) {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ONE.getNumber());
} else {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
}
externalInterfaceMonitoring.setOperationResult(JSON.toJSONString(jsonResult));
} else {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
externalInterfaceMonitoring.setOperationResult(response.toString());
}
}catch (Exception e) {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
externalInterfaceMonitoring.setOperationResult(e.toString());
}finally {
externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID());
externalInterfaceMonitoring.setOperatorName("系统");
externalInterfaceMonitoring.setOperationTime(new Date());
externalInterfaceMonitoringMapper.insert(externalInterfaceMonitoring);
}
}
/**
* 交通流结果处理
*/
public void trafficFlowResultProcessing(ExternalInterfaceMonitoring externalInterfaceMonitoring, Response response) throws Exception {
ResponseBody body = response.body();
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
if (body != null) {
JSONObject jsonResult = JSONObject.parseObject(body.string());
if (jsonResult.containsKey("code") && jsonResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ONE.getNumber());
}
externalInterfaceMonitoring.setOperationResult(body.string());
} else {
externalInterfaceMonitoring.setOperationResult(response.toString());
}
externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID());
externalInterfaceMonitoring.setOperatorName("系统");
externalInterfaceMonitoring.setOperationTime(new Date());
externalInterfaceMonitoringMapper.insert(externalInterfaceMonitoring);
}
/**
* 存储外部接口监测数据
*/
public void insertIntoExternalInterface(ExternalInterfaceMonitoring externalInterfaceMonitoring, Response response) throws Exception {
ResponseBody body = response.body();
if (response.code() == UniversalEnum.TWO_HUNDRED.getNumber()) {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ONE.getNumber());
} else {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
}
if (body != null) {
externalInterfaceMonitoring.setOperationResult(body.string());
}
} else {
externalInterfaceMonitoring.setOperationResult(response.toString());
}
externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID());
externalInterfaceMonitoring.setOperatorName("系统");
externalInterfaceMonitoring.setOperationTime(new Date());
externalInterfaceMonitoringMapper.insert(externalInterfaceMonitoring);
}
/**
* 视频流结果处理
*
* @param externalInterfaceMonitoring
* @param response
* @throws Exception
*/
public void videoResultInsertInto(ExternalInterfaceMonitoring externalInterfaceMonitoring, Response response) throws Exception {
ResponseBody body = response.body();
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber());
externalInterfaceMonitoring.setOperationResult(response.message());
if (body != null) {
JSONObject jsonResult = JSONObject.parseObject(body.string());
if (jsonResult.containsKey("code") && jsonResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) {
externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ONE.getNumber());
}
externalInterfaceMonitoring.setOperationResult(JSON.toJSONString(jsonResult));
} else {
externalInterfaceMonitoring.setOperationResult(response.toString());
}
externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID());
externalInterfaceMonitoring.setOperatorName("系统");
@ -209,6 +672,17 @@ public class ExternalInterfaceMonitoringTask {
.get(); // 请求方法
}
/**
* Get请求 有头 有参
*/
public Response getRequestByHeadersByParam(Map<String, String> headers, String url, RequestParams requestParams) throws Exception {
OkHttp okHttp = new OkHttp();
return okHttp.headers(headers)
.url(url) // 请求地址
.data(requestParams)
.get(); // 请求方法
}
/**
* Post请求 有头 有参
*/
@ -233,4 +707,122 @@ public class ExternalInterfaceMonitoringTask {
externalInterfaceMonitoring.setOperationResult(ajaxResult.get("msg").toString());
}
}
//边坡获取token
public JSONObject authenticate() throws IOException {
OkHttpClient client = new OkHttpClient();
// 构造请求体
Map<String, String> map = new LinkedHashMap<>();
map.put("UserNameOrEmailAddress", configService.selectConfigByKey("UserNameOrEmailAddress"));//用户名
map.put("Password", configService.selectConfigByKey("Password"));//登录密码
ObjectMapper objectMapper = new ObjectMapper();
String jsonInput = objectMapper.writeValueAsString(map);
RequestBody requestBody = RequestBody.create(JSO, jsonInput);
// 创建请求
Request request = new Request.Builder()
.url(configService.selectConfigByKey("accessTokenApi"))
.post(requestBody)
.build();
// 发送请求并处理响应
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
// 正确解析响应体中的JSON数据
String responseBody = response.body().string();
JSONObject jsonResult = JSONObject.parseObject(responseBody);
return jsonResult;
}
}
public Response GetPointDataListAsync() throws IOException, HttpException {
//今天零点的时间戳
long todayStartTimestamp = getTodayStartTimestamp();
// 获取当前时间的时间戳(毫秒数)
long currentTimestamp = getCurrentTimestamp();
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("projCode", configService.selectConfigByKey("proCode"));//项目编号 如 JHGKJ
requestParams.put("unitCode", configService.selectConfigByKey("unitCode"));//项目单位工程编号 如 60-01.0002.00.00
requestParams.put("meaPointNum", "PR-YLJ01-067441-05/05");//测点编号如 PR-YLJ01-067441-05/05
requestParams.put("starttime", todayStartTimestamp);//开始时间如 1713369599000
requestParams.put("endtime", currentTimestamp);//结束时间 如 1713887999000
Object accessToken = redisCache.getCacheObject("accessToken");
if (accessToken == null) {
JSONObject authenticate = authenticate();
accessToken = authenticate.getJSONObject("result").getString("accessToken");
redisCache.setCacheObject("accessToken", accessToken);
redisCache.expire("accessToken", UniversalEnum.THREE.getNumber() * UniversalEnum.TWENTY_FOUR.getNumber() * UniversalEnum.THREE_THOUSAND_SIX_HUNDRED.getNumber());//设置过期时间s秒
}
Map<String, String> header = new HashMap<>();
header.put("Authorization", "Bearer " + accessToken.toString());
Response response // 请求响应
= okHttp
.headers(header)
.url(configService.selectConfigByKey("GetPointDataListAsyncAPI")) // 请求地址
.data(requestParams) // 请求参数
.get(); // 请求方法
// 正确解析响应体中的JSON数据
return response;
}
// 获取今天零点的时间戳(毫秒数)
public static long getTodayStartTimestamp() {
LocalDate today = LocalDate.now();
LocalDateTime todayStart = today.atStartOfDay();
return todayStart.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}
// 获取当前时间的时间戳(毫秒数)
public static long getCurrentTimestamp() {
return System.currentTimeMillis();
}
/**
* 获取视频平台 token
*
* @throws Exception
*/
public void getVideoToken() throws Exception {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
RequestParams requestParams = new RequestParams();
requestParams.put("username", cameraInfo.getString("USERNAME"));
requestParams.put("password", cameraInfo.getString("PASSWORD"));
Response response = postRequestByHeadersAndParams(new HashMap<>(),
cameraInfo.getString("URL") + UniversalEnum.GET_THE_CAMERA_TOKEN.getValue(),
requestParams);
if (response.body() != null) {
JSONObject jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.containsKey("token")) {
ExternalInterfaceMonitoringTask.videoTOKEN = jsonResult.getString("token");
}
}
}
/**
* 获取语音广播token
*/
public void getVoiceBroadcastingToken() throws Exception {
JSONObject broadcast = JSONObject.parseObject(configService.selectConfigByKey("broadcast"));
RequestParams requestParams = new RequestParams();
requestParams.put("id", broadcast.getString("ID"));
requestParams.put("secret", broadcast.getString("SECRET"));
requestParams.put("callbackUrl", broadcast.getString("CALLBACKURL"));
Response response = postRequestByHeadersAndParams(new HashMap<>(), UniversalEnum.BROADCAST_LOG_URL.getValue(), requestParams);
if (response.body() != null) {
voiceBroadcastingToken = JSONObject.parseObject(response.body().string()).getString("accessToken");
}
}
}

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

@ -112,7 +112,15 @@
AND s.device_no = #{status.deviceNo}
</if>
<if test="status.type != null">
AND (d.device_type = #{status.type} or d.child_type=#{status.type})
AND (d.device_type in
<foreach item="typeItem" collection="status.types" open="(" separator="," close=")">
#{typeItem}
</foreach>
or d.child_type in
<foreach item="typeItem" collection="status.types" open="(" separator="," close=")">
#{typeItem}
</foreach>
)
</if>
<if test="status.deviceId != null">
AND s.device_id = #{status.deviceId}

Loading…
Cancel
Save