From 6e15d74db05a010575fe56cab73502df85c8f737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Wed, 3 Jul 2024 18:59:05 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E8=BD=A6=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zc/business/domain/ComprehensiveIndexQuery.java | 1 + zc-business/src/main/java/com/zc/business/domain/DcEvent.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/domain/ComprehensiveIndexQuery.java b/zc-business/src/main/java/com/zc/business/domain/ComprehensiveIndexQuery.java index b3aaffca..7e7620a2 100644 --- a/zc-business/src/main/java/com/zc/business/domain/ComprehensiveIndexQuery.java +++ b/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; diff --git a/zc-business/src/main/java/com/zc/business/domain/DcEvent.java b/zc-business/src/main/java/com/zc/business/domain/DcEvent.java index 48ccfe1d..f2a65c46 100644 --- a/zc-business/src/main/java/com/zc/business/domain/DcEvent.java +++ b/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("高速名") From 1f0a6960072b31738a892712c0b054f23d36a1e6 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 3 Jul 2024 19:07:29 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=8E=87=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/business/StatusMapper.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/zc-business/src/main/resources/mapper/business/StatusMapper.xml b/zc-business/src/main/resources/mapper/business/StatusMapper.xml index a00cf156..cce1976e 100644 --- a/zc-business/src/main/resources/mapper/business/StatusMapper.xml +++ b/zc-business/src/main/resources/mapper/business/StatusMapper.xml @@ -112,7 +112,15 @@ AND s.device_no = #{status.deviceNo} - AND (d.device_type = #{status.type} or d.child_type=#{status.type}) + AND (d.device_type in + + #{typeItem} + + or d.child_type in + + #{typeItem} + + ) AND s.device_id = #{status.deviceId} From b6f2af6b041a6d9dfe521cfc5d88f4cf23897129 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 3 Jul 2024 19:36:48 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zc/business/controller/WeatherForecastController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 0f23decf..54288104 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -258,10 +258,11 @@ public class WeatherForecastController extends BaseController { if (jsonResult.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) { JSONArray data = jsonResult.getJSONArray("data"); if (data.size() != UniversalEnum.ZERO.getNumber()) { - redisCache.setCacheObject("currentWeatherAndForecastInformation", data); + redisCache.deleteObject("currentWeatherAndForecastInformation" + numStake); + redisCache.setCacheObject("currentWeatherAndForecastInformation" + numStake, data); return AjaxResult.success(data); } else { - return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation")); + return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); } } else { return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue()); @@ -269,6 +270,7 @@ public class WeatherForecastController extends BaseController { } } catch (Exception ignored) { + logger.error(String.valueOf(ignored)); } return AjaxResult.error(UniversalEnum.REQUEST_FAILED.getValue()); From 2a25e3651b77f8c61a201e8f19a82a16a3886dcc Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 3 Jul 2024 19:39:46 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zc/business/controller/WeatherForecastController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 54288104..011da9fa 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -265,7 +265,7 @@ public class WeatherForecastController extends BaseController { return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); } } else { - return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue()); + return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); } } } catch (Exception ignored) { @@ -273,7 +273,7 @@ public class WeatherForecastController extends BaseController { logger.error(String.valueOf(ignored)); } - return AjaxResult.error(UniversalEnum.REQUEST_FAILED.getValue()); + return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); } public static int findNearestMultipleOfFive(int number) { From 8d02ac076e1669bc0ba02148d52350072fd30d54 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 3 Jul 2024 19:40:50 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zc/business/controller/WeatherForecastController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 011da9fa..61716f07 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -273,7 +273,7 @@ public class WeatherForecastController extends BaseController { logger.error(String.valueOf(ignored)); } - return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); + return AjaxResult.error(UniversalEnum.REQUEST_FAILED.getValue()); } public static int findNearestMultipleOfFive(int number) { From 7f302467abdca306d22a497153717cdebb3a7de5 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 3 Jul 2024 19:48:44 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zc/business/controller/WeatherForecastController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 61716f07..54288104 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -265,7 +265,7 @@ public class WeatherForecastController extends BaseController { return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); } } else { - return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); + return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue()); } } } catch (Exception ignored) { From 3d8a61d24872f303a230d19420e12d550f1a923c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Thu, 4 Jul 2024 18:44:23 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E8=B7=AF=E5=86=B5=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E6=AF=8F=E5=8D=8A=E4=B8=AA=E5=B0=8F=E6=97=B6=E5=85=A5=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DcTimingOfTrafficConditionsController.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java b/zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java index d2b000c6..6655e47c 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcTimingOfTrafficConditionsController.java +++ b/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); - Date createTime = dcRoadConditionInformation1.getCreateTime(); + List 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); } } + } + // 将获取到的交通指标数据封装为成功的结果并返回 } From 07a4c7702f30c34a4e45bc2dae6eb5802b9a43c3 Mon Sep 17 00:00:00 2001 From: lau572 <1010031226@qq.com> Date: Fri, 5 Jul 2024 14:31:24 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E5=85=AC=E4=BC=97=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1echarts=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DcPublishManageController.java | 166 +++++++++++++++++- .../export/EventTypePublishManageMonth.java | 73 ++++++++ .../export/StatisticsPublishManage.java | 61 +++++++ .../domain/export/TrendsPublishManage.java | 73 ++++++++ 4 files changed, 372 insertions(+), 1 deletion(-) create mode 100644 zc-business/src/main/java/com/zc/business/domain/export/EventTypePublishManageMonth.java create mode 100644 zc-business/src/main/java/com/zc/business/domain/export/StatisticsPublishManage.java create mode 100644 zc-business/src/main/java/com/zc/business/domain/export/TrendsPublishManage.java diff --git a/zc-business/src/main/java/com/zc/business/controller/DcPublishManageController.java b/zc-business/src/main/java/com/zc/business/controller/DcPublishManageController.java index ac81413f..eab0b511 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcPublishManageController.java +++ b/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> data = dcPublishManageService.statisticsPublishManage(); + List list = new ArrayList<>(); + if (data != null && data.size() > 0) { + Long total = data.stream().mapToLong(item -> Long.parseLong(item.get("number").toString())).sum(); + for (HashMap 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 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> data = dcPublishManageService.eventTypePublishManage(); + List list = new ArrayList<>(); + if (data != null && data.size() > 0) { + Long total = data.stream().mapToLong(item -> Long.parseLong(item.get("number").toString())).sum(); + for (HashMap 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 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> data = dcPublishManageService.releaseTrendsPublishManage(); + List list = new ArrayList<>(); + if (data != null && data.size() > 0) { + Map>> group = data.stream().collect(Collectors.groupingBy(item -> item.get("hour").toString())); + for (String publishTime : group.keySet()) { + TrendsPublishManage trendsPublishManage = new TrendsPublishManage(); + trendsPublishManage.setPublishTime(publishTime + "时"); + List> groupData = group.get(publishTime); + for (HashMap 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 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> data = dcPublishManageService.monthTrendsPublishManage(dcPublishManage); + List list = new ArrayList<>(); + if (data != null && data.size() > 0) { + Map>> group = data.stream().collect(Collectors.groupingBy(item -> item.get("publishTime").toString())); + for (String publishTime : group.keySet()) { + TrendsPublishManage trendsPublishManage = new TrendsPublishManage(); + trendsPublishManage.setPublishTime(publishTime); + List> groupData = group.get(publishTime); + for (HashMap 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 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> data = dcPublishManageService.eventTypePublishManageMonth(dcPublishManage); + List list = new ArrayList<>(); + if (data != null && data.size() > 0) { + Map>> 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> groupData = group.get(String.valueOf(value.getCode())); + for (HashMap 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 util = new ExcelUtil<>(EventTypePublishManageMonth.class); + util.exportExcel(response, list, "各事件发布渠道分析"); + } + /** * 公众服务统计查询 */ diff --git a/zc-business/src/main/java/com/zc/business/domain/export/EventTypePublishManageMonth.java b/zc-business/src/main/java/com/zc/business/domain/export/EventTypePublishManageMonth.java new file mode 100644 index 00000000..0456bf53 --- /dev/null +++ b/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(); + } +} diff --git a/zc-business/src/main/java/com/zc/business/domain/export/StatisticsPublishManage.java b/zc-business/src/main/java/com/zc/business/domain/export/StatisticsPublishManage.java new file mode 100644 index 00000000..561ce53c --- /dev/null +++ b/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(); + } +} diff --git a/zc-business/src/main/java/com/zc/business/domain/export/TrendsPublishManage.java b/zc-business/src/main/java/com/zc/business/domain/export/TrendsPublishManage.java new file mode 100644 index 00000000..2c68c5f5 --- /dev/null +++ b/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(); + } +} From 74df6b25bf993ef70020f63810f4e6d5f7445b77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Fri, 5 Jul 2024 15:17:57 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E5=A4=96=E9=83=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DcTrafficFlowWarningDate.java | 3 +- .../task/ExternalInterfaceMonitoringTask.java | 317 +++++++++++++++++- 2 files changed, 313 insertions(+), 7 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java b/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java index ff452ca4..db6a3151 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java +++ b/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 { diff --git a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java index 43bdd7e3..dbc03869 100644 --- a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java +++ b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java @@ -1,9 +1,13 @@ 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.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.domain.AjaxResult; +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,16 +18,26 @@ 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.ApiParam; +import okhttp3.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.zip.GZIPInputStream; /** * 外部接口监控 @@ -33,7 +47,9 @@ public class ExternalInterfaceMonitoringTask { @Resource private ExternalInterfaceMonitoringMapper externalInterfaceMonitoringMapper; - + @Resource + private RedisCache redisCache; + public static final MediaType JSO= MediaType.get("application/json; charset=utf-8"); @Resource private WeatherForecastController weatherForecastController; @@ -53,8 +69,22 @@ 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(); @@ -69,6 +99,43 @@ public class ExternalInterfaceMonitoringTask { } + 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 { + JSONObject jsonResult = null; + 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秒 + } + + // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 + Map header = new HashMap<>(); + header.put("Authorization", "Bearer "+accessToken.toString()); + Response response // 请求响应 + = okHttp + .headers(header) + .url(configService.selectConfigByKey("GetMeasurePointListAPI")) // 请求地址 + .data(requestParams) // 请求参数 + .get(); // 请求方法 + return response; + } + /** * 交通流通用 */ @@ -90,6 +157,107 @@ public class ExternalInterfaceMonitoringTask { // 插入 insertIntoExternalInterface(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 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); + // 插入 + insertIntoExternalInterface(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 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); + // 插入 + insertIntoExternalInterface(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 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); + // 插入 + insertIntoExternalInterface(externalInterfaceMonitoring,response); +} /** * 全国气象数据 - 雷达数据 @@ -233,4 +401,141 @@ public class ExternalInterfaceMonitoringTask { externalInterfaceMonitoring.setOperationResult(ajaxResult.get("msg").toString()); } } + //边坡获取token + public JSONObject authenticate() throws IOException { + OkHttpClient client = new OkHttpClient(); + + // 构造请求体 + Map 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 GetMeasurePointList() throws IOException, HttpException { + JSONObject jsonResult = null; + 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秒 + } + + // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 + Map header = new HashMap<>(); + header.put("Authorization", "Bearer "+accessToken.toString()); + Response response // 请求响应 + = okHttp + .headers(header) + .url(configService.selectConfigByKey("GetMeasurePointListAPI")) // 请求地址 + .data(requestParams) // 请求参数 + .get(); // 请求方法 + + // 正确解析响应体中的JSON数据 + return response ; + } + public Response GetPointDataListAsync() throws IOException, HttpException { + //今天零点的时间戳 + long todayStartTimestamp = getTodayStartTimestamp(); + // 获取当前时间的时间戳(毫秒数) + long currentTimestamp = getCurrentTimestamp(); + + JSONObject jsonResult = null; + JSONArray jsonArray = null; + 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秒 + } + + // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 + Map header = new HashMap<>(); + header.put("Authorization", "Bearer "+accessToken.toString()); + Response response // 请求响应 + = okHttp + .headers(header) + .url(configService.selectConfigByKey("GetPointDataListAsyncAPI")) // 请求地址 + .data(requestParams) // 请求参数 + .get(); // 请求方法 + +/* if (response.body() != null) { + jsonResult = JSONObject.parseObject(response.body().string()); + String jsonObjec =jsonResult.getString("result").replace("\r\n", UniversalEnum.EMPTY_STRING.getValue()); + jsonArray = extracted(jsonObjec); + }*/ + // 正确解析响应体中的JSON数据 + return response; + } + /** + * Base64解码 + */ + private JSONArray extracted(String base64EncodedCompressedData) throws IOException { + // Base64解码 + byte[] compressedData = Base64.getDecoder().decode(base64EncodedCompressedData); + StringBuilder output = new StringBuilder(); + // 解压缩 + try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(compressedData); + GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream); + InputStreamReader inputStreamReader = new InputStreamReader(gzipInputStream, StandardCharsets.UTF_8); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { + + String line; + while ((line = bufferedReader.readLine()) != null) { + output.append(line); + } + } + // 将StringBuilder转换为字符串 + String jsonString = output.toString(); +// 将字符串转换为JSONObject + JSONArray jsonObject = JSONArray.parseArray(jsonString); + return jsonObject; + } + // 获取今天零点的时间戳(毫秒数) + 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(); + } } From a4f435273d44f9f655dcb8889d5aa3c0b1770d69 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Fri, 5 Jul 2024 15:27:20 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=AE=B0=E5=BD=95=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interfaces/OperationLogAspect.java | 84 +++++++++++++------ 1 file changed, 60 insertions(+), 24 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java b/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java index 8748dde9..16121a00 100644 --- a/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java +++ b/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 deviceIds = new ArrayList<>(); ArrayList 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,42 +185,59 @@ 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; + } + String hashMap = Objects.equals(deviceType, UniversalEnum.FIVE.getValue()) ? UniversalEnum.RELEASE_VOICE_BROADCAST.getValue() : String.valueOf( ((HashMap) (DEVICEFUNCTIONNAME.get(deviceType))) - .get(function.getString("functionId")) == null ? + .get(functionId) == null ? UniversalEnum.UNKNOWN_METHOD.getValue() : ((HashMap) (DEVICEFUNCTIONNAME.get(deviceType))) - .get(function.getString("functionId"))); + .get(functionId)); - remark.append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue()).append(sta); + remark.append(deviceName).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 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 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())) { - remark.append(UniversalEnum.COMMA.getValue()); + remark.append(UniversalEnum.SEMICOLON.getValue()); } } @@ -240,8 +257,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 +314,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) (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()); From eb8d8f7e7f7844d68a62e0209e258816aa0ba3b1 Mon Sep 17 00:00:00 2001 From: "Mr.Wang" Date: Fri, 5 Jul 2024 16:38:25 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=E5=B9=BF=E6=92=AD=E3=80=81=E8=A7=86=E9=A2=91=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=8E=A5=E5=8F=A3=E7=9A=84=E7=9B=91=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ExternalInterfaceMonitoringTask.java | 494 +++++++++++++----- 1 file changed, 365 insertions(+), 129 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java index dbc03869..1746bba4 100644 --- a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java +++ b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java @@ -20,24 +20,20 @@ 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 io.swagger.annotations.ApiParam; import okhttp3.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.zip.GZIPInputStream; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; /** * 外部接口监控 @@ -45,11 +41,17 @@ import java.util.zip.GZIPInputStream; @Component public class ExternalInterfaceMonitoringTask { + // 视频平台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"); + public static final MediaType JSO = MediaType.get("application/json; charset=utf-8"); @Resource private WeatherForecastController weatherForecastController; @@ -69,22 +71,23 @@ public class ExternalInterfaceMonitoringTask { dcTrafficStatisticsCurrency(UniversalEnum.GETS_THE_URI_OF_THE_CURRENT_CONGESTION_EVENT.getValue(), "获取当前拥堵事件信息"); // 交通流 - 获取车道占有率信息 ------------- 有起始桩号、结束桩号 - dcTrafficStatisticsCurrencyVehicle(UniversalEnum.GETS_THE_LANE_OCCUPANCY_URI.getValue(),"获取车道占有率信息"); + dcTrafficStatisticsCurrencyVehicle(UniversalEnum.GETS_THE_LANE_OCCUPANCY_URI.getValue(), "获取车道占有率信息"); // 交通流 - 获取门架指标数据 ------------- 有开始时间、结束时间 - obtainTheShelfIndicatorData(UniversalEnum.OBTAIN_THE_SHELF_INDICATOR_DATA.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()); -//边坡数据 获取边坡测点列表 + 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,"获取边坡测点列表"); -//获取边坡历史数据 + getMeasure(response, "获取边坡测点列表"); + //获取边坡历史数据 Response response1 = GetPointDataListAsync(); - getMeasure(response1,"获取边坡历史数据"); + getMeasure(response1, "获取边坡历史数据"); // 全国气象数据 - 雷达数据 getRadarData(); @@ -96,6 +99,19 @@ public class ExternalInterfaceMonitoringTask { // 天气预报 - 当前气象预警信息查询 currentWeatherWarningInformationQuery(); + // 视频平台 - 查询同步相机数据接口 + querySynchronizationCameraDataInterface(); + // 视频平台 - 获取视频流信息 + getVideoStreamInformation(); + // 视频平台 - 查询预置位列表 + queryPresetPositionList(); + // 视频平台 - 根据组织机构获取摄像机信息 + obtainCameraInformationBasedOnOrganizationalStructure(); + // 视频平台 - 云平台控制 + cloudPlatformControl(); + + // 语音广播 - 查询终端 + queryTerminal(); } @@ -107,9 +123,9 @@ public class ExternalInterfaceMonitoringTask { // 插入 insertIntoExternalInterface(externalInterfaceMonitoring, response); } -//获取边坡历史数据 + + //获取边坡历史数据 private Response getMeasurePointList() throws HttpException, IOException { - JSONObject jsonResult = null; OkHttp okHttp = new OkHttp(); RequestParams requestParams = new RequestParams(); @@ -117,16 +133,15 @@ public class ExternalInterfaceMonitoringTask { requestParams.put("unitCode", configService.selectConfigByKey("unitCode")); Object accessToken = redisCache.getCacheObject("accessToken"); - if (accessToken==null){ + if (accessToken == null) { JSONObject authenticate = authenticate(); accessToken = authenticate.getJSONObject("result").getString("accessToken"); - redisCache.setCacheObject("accessToken",accessToken); + redisCache.setCacheObject("accessToken", accessToken); redisCache.expire("accessToken", UniversalEnum.THREE.getNumber() * UniversalEnum.TWENTY_FOUR.getNumber() * UniversalEnum.THREE_THOUSAND_SIX_HUNDRED.getNumber());//设置过期时间s秒 } - // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 Map header = new HashMap<>(); - header.put("Authorization", "Bearer "+accessToken.toString()); + header.put("Authorization", "Bearer " + accessToken.toString()); Response response // 请求响应 = okHttp .headers(header) @@ -155,8 +170,9 @@ public class ExternalInterfaceMonitoringTask { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring,response); + insertIntoExternalInterface(externalInterfaceMonitoring, response); } + //车辆 public void dcTrafficStatisticsCurrencyVehicle(String path, String operationName) throws Exception { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(UniversalEnum.TIME_FORMAT_YEARS_MONTH_DAY.getValue()); @@ -186,8 +202,9 @@ public class ExternalInterfaceMonitoringTask { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring,response); + insertIntoExternalInterface(externalInterfaceMonitoring, response); } + //获取门架指标数据 public void obtainTheShelfIndicatorData(String path, String operationName) throws Exception { // 计算一小时前的时间点 @@ -199,7 +216,7 @@ public class ExternalInterfaceMonitoringTask { RequestParams requestParams = new RequestParams(); - requestParams.put("sysid", UniversalEnum.SYS_ID.getValue()); + requestParams.put("sysid", UniversalEnum.SYS_ID.getValue()); JSONObject parameters = new JSONObject() { { @@ -224,40 +241,41 @@ public class ExternalInterfaceMonitoringTask { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring,response); + insertIntoExternalInterface(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 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); + // 插入 + insertIntoExternalInterface(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 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); - // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring,response); -} /** * 全国气象数据 - 雷达数据 @@ -279,7 +297,7 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation } } else { externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ZERO.getNumber()); - externalInterfaceMonitoring.setOperationResult(response.message()); + externalInterfaceMonitoring.setOperationResult(response.toString()); } externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID()); externalInterfaceMonitoring.setOperatorName("系统"); @@ -347,19 +365,245 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation insertIntoExternalInterface(externalInterfaceMonitoring, response); } + /** + * 查询同步相机数据 + */ + public void querySynchronizationCameraDataInterface() throws Exception { + JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo")); + + Map 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 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 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 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 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 insertIntoExternalInterface(ExternalInterfaceMonitoring externalInterfaceMonitoring, Response response) throws Exception { ResponseBody body = response.body(); + if (response.code() == UniversalEnum.TWO_HUNDRED.getNumber()) { externalInterfaceMonitoring.setOperationStatus(UniversalEnum.ONE.getNumber()); - if (body != null) { - externalInterfaceMonitoring.setOperationResult(body.string()); + } 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(); + if (body != null) { + JSONObject jsonResult = JSONObject.parseObject(body.string()); + + if (jsonResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + 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.message()); + externalInterfaceMonitoring.setOperationResult(response.toString()); } externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID()); externalInterfaceMonitoring.setOperatorName("系统"); @@ -377,6 +621,17 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation .get(); // 请求方法 } + /** + * Get请求 有头 有参 + */ + public Response getRequestByHeadersByParam(Map headers, String url, RequestParams requestParams) throws Exception { + OkHttp okHttp = new OkHttp(); + return okHttp.headers(headers) + .url(url) // 请求地址 + .data(requestParams) + .get(); // 请求方法 + } + /** * Post请求 有头 有参 */ @@ -401,6 +656,7 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation externalInterfaceMonitoring.setOperationResult(ajaxResult.get("msg").toString()); } } + //边坡获取token public JSONObject authenticate() throws IOException { OkHttpClient client = new OkHttpClient(); @@ -430,64 +686,32 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation return jsonResult; } } -//获取边坡测点列表 - public Response GetMeasurePointList() throws IOException, HttpException { - JSONObject jsonResult = null; - 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秒 - } - - // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 - Map header = new HashMap<>(); - header.put("Authorization", "Bearer "+accessToken.toString()); - Response response // 请求响应 - = okHttp - .headers(header) - .url(configService.selectConfigByKey("GetMeasurePointListAPI")) // 请求地址 - .data(requestParams) // 请求参数 - .get(); // 请求方法 - // 正确解析响应体中的JSON数据 - return response ; - } public Response GetPointDataListAsync() throws IOException, HttpException { //今天零点的时间戳 long todayStartTimestamp = getTodayStartTimestamp(); // 获取当前时间的时间戳(毫秒数) long currentTimestamp = getCurrentTimestamp(); - JSONObject jsonResult = null; - JSONArray jsonArray = null; OkHttp okHttp = new OkHttp(); RequestParams requestParams = new RequestParams(); - requestParams.put("projCode",configService.selectConfigByKey("proCode"));//项目编号 如 JHGKJ + 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){ + if (accessToken == null) { JSONObject authenticate = authenticate(); accessToken = authenticate.getJSONObject("result").getString("accessToken"); - redisCache.setCacheObject("accessToken",accessToken); + redisCache.setCacheObject("accessToken", accessToken); redisCache.expire("accessToken", UniversalEnum.THREE.getNumber() * UniversalEnum.TWENTY_FOUR.getNumber() * UniversalEnum.THREE_THOUSAND_SIX_HUNDRED.getNumber());//设置过期时间s秒 } - // http://jsgl.sdgsbim.com:8616/api/RoadMajorPlatform/GetMeasurePointList?proCode=JHGKJ&unitCode=60-01.0002.00.00 Map header = new HashMap<>(); - header.put("Authorization", "Bearer "+accessToken.toString()); + header.put("Authorization", "Bearer " + accessToken.toString()); Response response // 请求响应 = okHttp .headers(header) @@ -495,38 +719,10 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation .data(requestParams) // 请求参数 .get(); // 请求方法 -/* if (response.body() != null) { - jsonResult = JSONObject.parseObject(response.body().string()); - String jsonObjec =jsonResult.getString("result").replace("\r\n", UniversalEnum.EMPTY_STRING.getValue()); - jsonArray = extracted(jsonObjec); - }*/ // 正确解析响应体中的JSON数据 return response; } - /** - * Base64解码 - */ - private JSONArray extracted(String base64EncodedCompressedData) throws IOException { - // Base64解码 - byte[] compressedData = Base64.getDecoder().decode(base64EncodedCompressedData); - StringBuilder output = new StringBuilder(); - // 解压缩 - try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(compressedData); - GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream); - InputStreamReader inputStreamReader = new InputStreamReader(gzipInputStream, StandardCharsets.UTF_8); - BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) { - - String line; - while ((line = bufferedReader.readLine()) != null) { - output.append(line); - } - } - // 将StringBuilder转换为字符串 - String jsonString = output.toString(); -// 将字符串转换为JSONObject - JSONArray jsonObject = JSONArray.parseArray(jsonString); - return jsonObject; - } + // 获取今天零点的时间戳(毫秒数) public static long getTodayStartTimestamp() { LocalDate today = LocalDate.now(); @@ -538,4 +734,44 @@ public void dcTrafficStatisticsCurrencyTollStation(String path, String operation 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"); + } + } } From 4c2fc574d8ebd9a53f28d105f02c6ea4aa5b2193 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Fri, 5 Jul 2024 16:51:08 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=AE=B0=E5=BD=95=E5=86=85=E5=AE=B9=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94=E7=BC=93=E5=AD=98=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zc/business/controller/WeatherForecastController.java | 6 +++++- .../java/com/zc/business/interfaces/OperationLogAspect.java | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 54288104..7c5a0dfc 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -257,12 +257,16 @@ 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"); + //data.forEach(item->{ + // + //}); if (data.size() != UniversalEnum.ZERO.getNumber()) { redisCache.deleteObject("currentWeatherAndForecastInformation" + numStake); redisCache.setCacheObject("currentWeatherAndForecastInformation" + numStake, data); return AjaxResult.success(data); } else { - return AjaxResult.success(redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake)); + JSONArray cacheObject = redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake); + return AjaxResult.success(cacheObject); } } else { return AjaxResult.error(jsonResult.getInteger("code"), UniversalEnum.REQUEST_FAILED.getValue()); diff --git a/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java b/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java index 16121a00..2d97e9eb 100644 --- a/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java +++ b/zc-business/src/main/java/com/zc/business/interfaces/OperationLogAspect.java @@ -208,6 +208,8 @@ public class OperationLogAspect { return; } + remark.append(deviceName); + String hashMap = Objects.equals(deviceType, UniversalEnum.FIVE.getValue()) ? UniversalEnum.RELEASE_VOICE_BROADCAST.getValue() : String.valueOf( @@ -217,7 +219,7 @@ public class OperationLogAspect { ((HashMap) (DEVICEFUNCTIONNAME.get(deviceType))) .get(functionId)); - remark.append(deviceName).append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue()); + remark.append(UniversalEnum.INVOKE.getValue()).append(hashMap).append(UniversalEnum.FEATURE.getValue()); if (i1 < functions.size() - UniversalEnum.ONE.getNumber()) { remark.append(UniversalEnum.SEMICOLON.getValue()); @@ -237,7 +239,7 @@ public class OperationLogAspect { } if (i < (devices.size() - UniversalEnum.ONE.getNumber())) { - remark.append(UniversalEnum.SEMICOLON.getValue()); + remark.append(UniversalEnum.COMMA.getValue()); } } From 3913ab75a9775a7304755d8fef07840d49a3c101 Mon Sep 17 00:00:00 2001 From: "Mr.Wang" Date: Fri, 5 Jul 2024 17:10:51 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9B=91=E6=B5=8B=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ExternalInterfaceMonitoringTask.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java index 1746bba4..6251b3a8 100644 --- a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java +++ b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java @@ -5,8 +5,11 @@ 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; @@ -20,9 +23,14 @@ 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 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.io.IOException; @@ -30,16 +38,16 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.*; /** * 外部接口监控 */ +@Api(tags = "外部接口监控") +@RestController @Component -public class ExternalInterfaceMonitoringTask { +@RequestMapping("/externalInterface") +public class ExternalInterfaceMonitoringTask extends BaseController { // 视频平台token private static String videoTOKEN; @@ -58,6 +66,28 @@ public class ExternalInterfaceMonitoringTask { @Resource private ISysConfigService configService; + /** + * 外部接口监控信息列表 + */ + @ApiOperation("外部接口监控信息列表") + @GetMapping("/list") + public TableDataInfo list(ExternalInterfaceMonitoring externalInterfaceMonitoring) + { + startPage(); + LambdaQueryWrapper 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()); + } + List list = externalInterfaceMonitoringMapper.selectList(lambdaQueryWrapper); + return getDataTable(list); + } + @Scheduled(cron = "0 0/15 * * * ?") public void externalInterfaceDataMonitoring() throws Exception { From 655b29c16a6bcaf8f3064d3f10bf11a3a6d0abea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Fri, 5 Jul 2024 17:37:52 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E6=94=B6=E8=B4=B9=E7=AB=99=E6=97=A5?= =?UTF-8?q?=E7=B4=AF=E8=AE=A1=E8=BD=A6=E6=B5=81=E8=BE=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DcTrafficStatisticsController.java | 11 +++ .../service/IDcTrafficStatisticsService.java | 6 ++ .../impl/DcTrafficStatisticsServiceImpl.java | 70 ++++++++++++++++++- 3 files changed, 86 insertions(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java b/zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java index 8986f5bb..f7fd5497 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java +++ b/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); + } /** * 导出收费站出入口实时车流量 diff --git a/zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java b/zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java index b9f99d05..70e828c3 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java +++ b/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; + } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java index f69f2428..ea658dff 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java +++ b/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 sumByName = new LinkedHashMap<>(); + Integer totalFlow1=0; List> 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 entry : sumByName.entrySet()) { Map 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 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 dcFacilityList, String stakeMarkCode) { // 将目标桩号转换为整数 From 1833fa7eb9309fff6f1816a3c755566a7cdc2c05 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Mon, 8 Jul 2024 08:44:29 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WeatherForecastController.java | 273 +++++++++++++++++- 1 file changed, 267 insertions(+), 6 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index 7c5a0dfc..ed89e427 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -19,6 +19,7 @@ import com.zc.common.core.websocket.WebSocketService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import okhttp3.Response; +import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; @@ -257,13 +258,273 @@ 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"); - //data.forEach(item->{ - // - //}); - if (data.size() != UniversalEnum.ZERO.getNumber()) { + JSONArray jsonArray = new JSONArray(); + for (int i = 0; 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", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } else if (Objects.equals(visLevel, UniversalEnum.THREE.getValue()) || Objects.equals(visLevel, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "多云"); + jsonObject.put("weatherConditionCode", "1"); + } else if (Objects.equals(visLevel, UniversalEnum.FIVE.getValue()) || Objects.equals(visLevel, UniversalEnum.SIX.getValue())) { + jsonObject.put("weatherCondition", "阴天"); + jsonObject.put("weatherConditionCode", "2"); + } + } else { + + String preLevel = jsonObject.getString("preLevel"); + String pph = jsonObject.getString("pph"); + + switch (preLevel) { + case "0": + //if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + //} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + // jsonObject.put("weatherCondition", ""); + // jsonObject.put("weatherConditionCode", ""); + //} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + // jsonObject.put("weatherCondition", ""); + // jsonObject.put("weatherConditionCode", ""); + //} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + // jsonObject.put("weatherCondition", ""); + // jsonObject.put("weatherConditionCode", ""); + //} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + // jsonObject.put("weatherCondition", ""); + // jsonObject.put("weatherConditionCode", ""); + // + //} + break; + case "1": + case "2": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "小雨"); + jsonObject.put("weatherConditionCode", "3"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "小雪"); + jsonObject.put("weatherConditionCode", "5"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + case "3": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "中雨"); + jsonObject.put("weatherConditionCode", "7"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "中雪"); + jsonObject.put("weatherConditionCode", "8"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + case "4": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "大雨"); + jsonObject.put("weatherConditionCode", "9"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "大雪"); + jsonObject.put("weatherConditionCode", "10"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + case "5": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "暴雨"); + jsonObject.put("weatherConditionCode", "11"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "暴雪"); + jsonObject.put("weatherConditionCode", "12"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + case "6": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "大暴雨"); + jsonObject.put("weatherConditionCode", "13"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "大暴雪"); + jsonObject.put("weatherConditionCode", "14"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + case "7": + if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { + jsonObject.put("weatherCondition", "特大暴雨"); + jsonObject.put("weatherConditionCode", "15"); + } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { + jsonObject.put("weatherCondition", "雨夹雪"); + jsonObject.put("weatherConditionCode", "4"); + } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { + jsonObject.put("weatherCondition", "特大暴雪"); + jsonObject.put("weatherConditionCode", "16"); + } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { + jsonObject.put("weatherCondition", "冻雨"); + jsonObject.put("weatherConditionCode", "6"); + } else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { + jsonObject.put("weatherCondition", "晴天"); + jsonObject.put("weatherConditionCode", "0"); + } + break; + } + + //if (Objects.equals(preLevel, "0")) { + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "1")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "2")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "3")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "4")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "5")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "6")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} else if (Objects.equals(preLevel, "7")) { + // + // if (Objects.equals(pph, "1")) { + // + // }else if (Objects.equals(pph, "2")) { + // + // }else if (Objects.equals(pph, "3")) { + // + // }else if (Objects.equals(pph, "4")) { + // + // }else if (Objects.equals(pph, "0")) { + // + // } + //} + + } + jsonArray.add(i,jsonObject); + }; + if (jsonArray.size() != UniversalEnum.ZERO.getNumber()) { redisCache.deleteObject("currentWeatherAndForecastInformation" + numStake); - redisCache.setCacheObject("currentWeatherAndForecastInformation" + numStake, data); - return AjaxResult.success(data); + redisCache.setCacheObject("currentWeatherAndForecastInformation" + numStake, jsonArray); + return AjaxResult.success(jsonArray); } else { JSONArray cacheObject = redisCache.getCacheObject("currentWeatherAndForecastInformation" + numStake); return AjaxResult.success(cacheObject); From ea3fb85c6257996d88897e7535af9f46a45e2b4a Mon Sep 17 00:00:00 2001 From: "Mr.Wang" Date: Mon, 8 Jul 2024 09:06:02 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=A4=E9=80=9A?= =?UTF-8?q?=E6=B5=81=E7=8A=B6=E6=80=81=E5=AD=98=E5=82=A8=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ExternalInterfaceMonitoringTask.java | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java index 6251b3a8..e44df653 100644 --- a/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java +++ b/zc-business/src/main/java/com/zc/business/task/ExternalInterfaceMonitoringTask.java @@ -84,6 +84,7 @@ public class ExternalInterfaceMonitoringTask extends BaseController { if (externalInterfaceMonitoring.getInterfaceName() != null) { lambdaQueryWrapper.like(ExternalInterfaceMonitoring::getInterfaceName, externalInterfaceMonitoring.getInterfaceName()); } + lambdaQueryWrapper.orderByDesc(ExternalInterfaceMonitoring::getOperationTime); List list = externalInterfaceMonitoringMapper.selectList(lambdaQueryWrapper); return getDataTable(list); } @@ -200,7 +201,7 @@ public class ExternalInterfaceMonitoringTask extends BaseController { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring, response); + trafficFlowResultProcessing(externalInterfaceMonitoring, response); } //车辆 @@ -232,7 +233,7 @@ public class ExternalInterfaceMonitoringTask extends BaseController { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring, response); + trafficFlowResultProcessing(externalInterfaceMonitoring, response); } //获取门架指标数据 @@ -271,7 +272,7 @@ public class ExternalInterfaceMonitoringTask extends BaseController { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring, response); + trafficFlowResultProcessing(externalInterfaceMonitoring, response); } //收费站 TollStation @@ -304,7 +305,7 @@ public class ExternalInterfaceMonitoringTask extends BaseController { externalInterfaceMonitoring.setInterfaceOwnership(InterfaceOwnershipEnum.TRAFFIC_FLOW.getCode()); externalInterfaceMonitoring.setInterfaceName(operationName); // 插入 - insertIntoExternalInterface(externalInterfaceMonitoring, response); + trafficFlowResultProcessing(externalInterfaceMonitoring, response); } /** @@ -589,6 +590,29 @@ public class ExternalInterfaceMonitoringTask extends BaseController { } + /** + * 交通流结果处理 + */ + 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); + } + /** * 存储外部接口监测数据 */ @@ -622,17 +646,14 @@ public class ExternalInterfaceMonitoringTask extends BaseController { */ public void videoResultInsertInto(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.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + if (jsonResult.containsKey("code") && jsonResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { 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()); } externalInterfaceMonitoring.setId(IdUtils.fastSimpleUUID()); From 46f561e4560de05a0c30d33ee5edccf32dd7cdd3 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Mon, 8 Jul 2024 09:21:17 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WeatherForecastController.java | 263 +++++------------- 1 file changed, 72 insertions(+), 191 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index ed89e427..f344d94d 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -19,14 +19,15 @@ import com.zc.common.core.websocket.WebSocketService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import okhttp3.Response; -import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; 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; @@ -259,7 +260,7 @@ public class WeatherForecastController extends BaseController { if (jsonResult.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) { JSONArray data = jsonResult.getJSONArray("data"); JSONArray jsonArray = new JSONArray(); - for (int i = 0; i < data.size(); i++) { + for (int i = UniversalEnum.ZERO.getNumber(); i < data.size(); i++) { JSONObject jsonObject = (JSONObject) JSON.toJSON(data.get(i)); String pre = jsonObject.getString("pre"); @@ -268,14 +269,14 @@ public class WeatherForecastController extends BaseController { String visLevel = jsonObject.getString("visLevel"); if (Objects.equals(visLevel, UniversalEnum.ONE.getValue()) || Objects.equals(visLevel, UniversalEnum.TWO.getValue())) { - jsonObject.put("weatherCondition", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "多云"); - jsonObject.put("weatherConditionCode", "1"); + 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", "阴天"); - jsonObject.put("weatherConditionCode", "2"); + jsonObject.put("weatherCondition", UniversalEnum.OVERCAST_SKY.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.OVERCAST_SKY.getNumber()); } } else { @@ -284,240 +285,120 @@ public class WeatherForecastController extends BaseController { switch (preLevel) { case "0": - //if (Objects.equals(pph, UniversalEnum.ONE.getValue())) { - jsonObject.put("weatherCondition", "晴天"); - jsonObject.put("weatherConditionCode", "0"); - //} else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { - // jsonObject.put("weatherCondition", ""); - // jsonObject.put("weatherConditionCode", ""); - //} else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - // jsonObject.put("weatherCondition", ""); - // jsonObject.put("weatherConditionCode", ""); - //} else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { - // jsonObject.put("weatherCondition", ""); - // jsonObject.put("weatherConditionCode", ""); - //} else if (Objects.equals(pph, UniversalEnum.ZERO.getValue())) { - // jsonObject.put("weatherCondition", ""); - // jsonObject.put("weatherConditionCode", ""); - // - //} + 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", "小雨"); - jsonObject.put("weatherConditionCode", "3"); + jsonObject.put("weatherCondition", UniversalEnum.SPIT.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SPIT.getNumber()); } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { - jsonObject.put("weatherCondition", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "小雪"); - jsonObject.put("weatherConditionCode", "5"); + 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", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "中雨"); - jsonObject.put("weatherConditionCode", "7"); + 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", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "中雪"); - jsonObject.put("weatherConditionCode", "8"); + 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", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "大雨"); - jsonObject.put("weatherConditionCode", "9"); + 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", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "大雪"); - jsonObject.put("weatherConditionCode", "10"); + 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", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "暴雨"); - jsonObject.put("weatherConditionCode", "11"); + jsonObject.put("weatherCondition", UniversalEnum.RAINSTORM.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.RAINSTORM.getNumber()); } else if (Objects.equals(pph, UniversalEnum.TWO.getValue())) { - jsonObject.put("weatherCondition", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "暴雪"); - jsonObject.put("weatherConditionCode", "12"); + jsonObject.put("weatherCondition", UniversalEnum.BLIZZARD.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.BLIZZARD.getNumber()); } else if (Objects.equals(pph, UniversalEnum.FOUR.getValue())) { - jsonObject.put("weatherCondition", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "大暴雨"); - jsonObject.put("weatherConditionCode", "13"); + 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", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "大暴雪"); - jsonObject.put("weatherConditionCode", "14"); + 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", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + 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", "特大暴雨"); - jsonObject.put("weatherConditionCode", "15"); + 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", "雨夹雪"); - jsonObject.put("weatherConditionCode", "4"); + jsonObject.put("weatherCondition", UniversalEnum.SLEET.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.SLEET.getNumber()); } else if (Objects.equals(pph, UniversalEnum.THREE.getValue())) { - jsonObject.put("weatherCondition", "特大暴雪"); - jsonObject.put("weatherConditionCode", "16"); + 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", "冻雨"); - jsonObject.put("weatherConditionCode", "6"); + 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", "晴天"); - jsonObject.put("weatherConditionCode", "0"); + jsonObject.put("weatherCondition", UniversalEnum.CLEAR_WEATHER.getValue()); + jsonObject.put("weatherConditionCode", UniversalEnum.CLEAR_WEATHER.getNumber()); } break; } - //if (Objects.equals(preLevel, "0")) { - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "1")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "2")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "3")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "4")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "5")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "6")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} else if (Objects.equals(preLevel, "7")) { - // - // if (Objects.equals(pph, "1")) { - // - // }else if (Objects.equals(pph, "2")) { - // - // }else if (Objects.equals(pph, "3")) { - // - // }else if (Objects.equals(pph, "4")) { - // - // }else if (Objects.equals(pph, "0")) { - // - // } - //} - } jsonArray.add(i,jsonObject); }; From 301ef04ba934f9788cacb1bb18be6195c140d2c6 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Mon, 8 Jul 2024 09:21:35 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=A4=A9=E6=B0=94?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zc/business/enums/UniversalEnum.java | 53 +++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java b/zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java index eb8e2d97..4fcf7c24 100644 --- a/zc-business/src/main/java/com/zc/business/enums/UniversalEnum.java +++ b/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, "寒潮"),