diff --git a/zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java b/zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java index fea2d5c4..32fbf5e8 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java +++ b/zc-business/src/main/java/com/zc/business/controller/DCPerceivedEventsWarningController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author 王思祥 @@ -37,7 +38,15 @@ public class DCPerceivedEventsWarningController extends BaseController { public AjaxResult getEvenTypeList(){ return AjaxResult.success(perceivedEventsWarningService.selectEventTypeList()); } - + //感知事件详情 + @PostMapping("/getWarningById") + public AjaxResult getWarningById(@RequestBody DcWarning dcWarning){ + Long id = dcWarning.getId(); + if (id==null){ + return AjaxResult.error("参数错误"); + } + return AjaxResult.success(perceivedEventsWarningService.selectWarningById(id)); + } //根据类型和状态查询预计事件 @PostMapping("/perceivedEventsList") public TableDataInfo getPerceivedEventsList(@RequestBody DcWarning dcWarning){ @@ -68,7 +77,12 @@ public class DCPerceivedEventsWarningController extends BaseController { //按事件源统计感知事件统计信息 @PostMapping("/warningSourceGroup") public AjaxResult getWarningSourceGroup(){ - return AjaxResult.success(perceivedEventsWarningService.selectWarningSourceGroup()); + HashMap map = new HashMap<>(); + List> mapList = perceivedEventsWarningService.selectWarningSourceGroup(); + String total = perceivedEventsWarningService.selectWarningSourceGroupCount(); + map.put("warningSourceList",mapList); + map.put("total",total); + return AjaxResult.success(map); } //当日感知事件的处置情况占比 @PostMapping("/warningStateDay") @@ -96,6 +110,7 @@ public class DCPerceivedEventsWarningController extends BaseController { //某一路段某一时间段的感知事件类型占比 @PostMapping("/warningSectionType") public AjaxResult getWarningSectionType(@RequestBody DcWarning dcWarning){ + HashMap map = new HashMap<>(); String type = dcWarning.getType();//类型 String sectionId = dcWarning.getSectionId();//路段辖区id Date createTime = dcWarning.getCreateTime();//时间参数,参数根据类型配置,比如2022年,传值2022-00-00 00:00:00 @@ -103,7 +118,16 @@ public class DCPerceivedEventsWarningController extends BaseController { if (StringUtils.isBlank(type)||StringUtils.isBlank(sectionId)||createTime==null||StringUtils.isBlank(direction)){ return AjaxResult.error("参数数据异常"); } - return AjaxResult.success(perceivedEventsWarningService.selectWarningSectionType(dcWarning)); + if (type.equals("quarter")) { + List> total = perceivedEventsWarningService.selectWarningSectionTypeCountQuarter(dcWarning); + map.put("total",total); + } else { + String total = perceivedEventsWarningService.selectWarningSectionTypeCount(dcWarning); + map.put("total",total); + } + List> mapList = perceivedEventsWarningService.selectWarningSectionType(dcWarning); + map.put("warningTypeList",mapList); + return AjaxResult.success(map); } //查询某个路段下的全部桩号 @PostMapping("/sectionMarkNumber") diff --git a/zc-business/src/main/java/com/zc/business/controller/VideoController.java b/zc-business/src/main/java/com/zc/business/controller/VideoController.java index f0b08a96..b323fc53 100644 --- a/zc-business/src/main/java/com/zc/business/controller/VideoController.java +++ b/zc-business/src/main/java/com/zc/business/controller/VideoController.java @@ -3,8 +3,10 @@ package com.zc.business.controller; 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.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisCache; import com.zc.business.domain.DcDevice; import com.zc.business.service.IDcDeviceService; import com.zc.common.core.httpclient.OkHttp; @@ -22,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.io.IOException; import java.util.*; +import java.util.concurrent.TimeUnit; import static com.ruoyi.common.constant.Constants.HTTP; @@ -36,6 +39,10 @@ import static com.ruoyi.common.constant.Constants.HTTP; @RequestMapping("/video") public class VideoController extends BaseController { + private static final String ID = "admin"; + private static final String SECRET = "21232f297a57a5a743894a0e4a801fc3"; + private static final String CALLBACKURL = "http://10.0.81.209/broadcast/logIn"; + private final static String TOKENKEY = "tokenRoadTestBroadcastPlatform"; private static final String USERNAME = "jhgskj"; private static final String PASSWORD = "jhgskj@2023"; private static String TOKEN; @@ -47,6 +54,8 @@ public class VideoController extends BaseController { public static final Integer ERROR = 500; + @Resource + private RedisCache redisCache; @Resource private IDcDeviceService iDcDeviceService; @@ -55,8 +64,8 @@ public class VideoController extends BaseController { */ @ApiOperation("查询附近相机") @GetMapping(value = "/nearCamListDistance") - public JSONObject nearCamListDistance(@ApiParam(value = "纬度", name = "devLat",required = true)String devLat, - @ApiParam(value = "经度", name = "devLon",required = true)String devLon) throws HttpException, IOException { + public JSONObject nearCamListDistance(@ApiParam(value = "纬度", name = "devLat", required = true) String devLat, + @ApiParam(value = "经度", name = "devLon", required = true) String devLon) throws HttpException, IOException { JSONObject jsonResult = null; @@ -106,21 +115,21 @@ public class VideoController extends BaseController { */ @Scheduled(cron = "0 0/5 * * * ?") public void updateDeviceState() throws HttpException, IOException { - logger.debug("开始执行:同步数据平台设备的设备状态!!"); + logger.debug("开始执行:同步数据平台视频设备设备的设备状态!!"); JSONObject cameraData = synchronizeCameraData(); if (cameraData.get("code").equals(200)) { - JSONObject data =JSONObject.parseObject(JSONArray.parseArray(cameraData.get("data").toString()).get(0).toString()); - JSONObject dataChildren =JSONObject.parseObject(JSONArray.parseArray(data.get("children").toString()).get(0).toString()); - JSONObject qiLuGaoSu =JSONObject.parseObject(JSONArray.parseArray(dataChildren.get("children").toString()).get(0).toString()); - JSONObject jiHeYunGuan =JSONObject.parseObject(JSONArray.parseArray(qiLuGaoSu.get("children").toString()).get(0).toString()); + JSONObject data = JSONObject.parseObject(JSONArray.parseArray(cameraData.get("data").toString()).get(0).toString()); + JSONObject dataChildren = JSONObject.parseObject(JSONArray.parseArray(data.get("children").toString()).get(0).toString()); + JSONObject qiLuGaoSu = JSONObject.parseObject(JSONArray.parseArray(dataChildren.get("children").toString()).get(0).toString()); + JSONObject jiHeYunGuan = JSONObject.parseObject(JSONArray.parseArray(qiLuGaoSu.get("children").toString()).get(0).toString()); JSONArray jiHeYunGuanG35 = JSONArray.parseArray(jiHeYunGuan.get("children").toString()); List list = new ArrayList<>(); - for (Object json: jiHeYunGuanG35) { + for (Object json : jiHeYunGuanG35) { JSONObject item = JSONObject.parseObject(json.toString()); DcDevice device = new DcDevice(); if (item.get("status").equals("0")) { device.setDeviceState("1"); - }else { + } else { device.setDeviceState("0"); } device.setIotDeviceId(item.get("camId").toString()); @@ -131,6 +140,7 @@ public class VideoController extends BaseController { logger.debug("执行:同步数据平台视频设备的设备状态成功!!"); } + logger.debug("开始执行:同步物联平台设备的设备状态!!"); AjaxResult ajaxResult = synchronizingDeviceStatus(); if (ajaxResult.get("code").equals(200)) { JSONArray data = (JSONArray) ajaxResult.get("data"); @@ -139,28 +149,80 @@ public class VideoController extends BaseController { DcDevice dcDevice = new DcDevice(); JSONObject datum1 = (JSONObject) datum; dcDevice.setIotDeviceId(datum1.getString("id")); - dcDevice.setDeviceState(Objects.equals(datum1.getString("deviceState"), "online") ?"1":"0"); + dcDevice.setDeviceState(Objects.equals(datum1.getString("deviceState"), "online") ? "1" : "0"); dcDevices.add(dcDevice); } iDcDeviceService.batchUpdate(dcDevices); - logger.debug("执行:同步数据平台设备的设备状态成功!!"); + logger.debug("执行:同步物联平台设备的设备状态成功!!"); } + logger.debug("开始执行:同步广播设备的设备状态!!"); + AjaxResult ajaxResultBroadcast = synchronizingBroadcastDeviceStatus(); + if (Objects.equals(String.valueOf(ajaxResultBroadcast.get("retCode")), "0")) { + JSONArray data = (JSONArray) ajaxResultBroadcast.get("termList"); + for (Object datum : data) { + DcDevice dcDevice = new DcDevice(); + JSONObject datum1 = (JSONObject) datum; + dcDevice.setIotDeviceId(datum1.getString("termDN")); + dcDevice.setDeviceState(Objects.equals(datum1.getString("regState"), "online") ? "1" : "0"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DcDevice::getIotDeviceId, dcDevice.getIotDeviceId()); + iDcDeviceService.update(dcDevice, queryWrapper); + } + logger.debug("执行:同步广播设备的设备状态成功!!"); + } + } + private AjaxResult synchronizingBroadcastDeviceStatus() throws HttpException, IOException { + OkHttp okHttp = new OkHttp(); + RequestParams requestParams = new RequestParams(); + String tokenRoadTestBroadcastPlatform = redisCache.getCacheObject(TOKENKEY); + if (tokenRoadTestBroadcastPlatform == null) { + tokenRoadTestBroadcastPlatform = getBroadcastToken(); + } + requestParams.put("zoneId", "*6001"); + requestParams.put("termDN", ""); + Response response // 请求响应 + = okHttp + .headers(new HashMap<>()) + .data(requestParams) // 请求参数 + .url("http://10.0.81.106/api/REST-API/queryTerm.do?accessToken=" + tokenRoadTestBroadcastPlatform) // 请求地址 + .post(); // 请求方法 + return JSON.parseObject(response.body().string(), AjaxResult.class); + } + + public String getBroadcastToken() throws HttpException, IOException { + OkHttp okHttp = new OkHttp(); + RequestParams requestParams = new RequestParams(); + requestParams.put("id", ID); + requestParams.put("secret", SECRET); + requestParams.put("callbackUrl", CALLBACKURL); + Response response // 请求响应 + = okHttp + .headers(new HashMap<>()) + .url("http://10.0.81.106/api/REST-API/login.do") // 请求地址 + .data(requestParams) // 请求参数 + .post(); // 请求方法 + if (response.body() != null) { + String accessToken = JSONObject.parseObject(response.body().string()).getString("accessToken"); + redisCache.setCacheObject(TOKENKEY, accessToken, 100, TimeUnit.MINUTES); + return accessToken; + } + return null; } + private AjaxResult synchronizingDeviceStatus() throws HttpException, IOException { OkHttp okHttp = new OkHttp(); Response response // 请求响应 = okHttp - .url(HTTP+"10.0.81.202:8081" + "/api/iot/device/query") // 请求地址 + .url(HTTP + "10.0.81.202:8081" + "/api/iot/device/query") // 请求地址 .get(); // 请求方法 - AjaxResult ajaxResult = JSON.parseObject(response.body().string(), AjaxResult.class); - return ajaxResult; + return JSON.parseObject(response.body().string(), AjaxResult.class); } diff --git a/zc-business/src/main/java/com/zc/business/mapper/DcPerceivedEventsWarningMapper.java b/zc-business/src/main/java/com/zc/business/mapper/DcPerceivedEventsWarningMapper.java index 915f3414..eb1c3049 100644 --- a/zc-business/src/main/java/com/zc/business/mapper/DcPerceivedEventsWarningMapper.java +++ b/zc-business/src/main/java/com/zc/business/mapper/DcPerceivedEventsWarningMapper.java @@ -20,7 +20,8 @@ public interface DcPerceivedEventsWarningMapper { //感知事件类型 List selectEventTypeList(); - + //感知事件详情 + DcWarning selectWarningById(Long id); //根据类型查询预计事件 List selectPerceivedEventsList(DcWarning dcWarning); //查询感知数量按照路段进行排名 @@ -33,6 +34,7 @@ public interface DcPerceivedEventsWarningMapper { List> selectDailyCumulativeMonth(); //按事件源统计感知事件统计信息 List> selectWarningSourceGroup(DcWarning dcWarning); + String selectWarningSourceGroupCount(DcWarning dcWarning); //当日感知事件的处置情况占比 List> selectWarningStateDay(DcWarning dcWarning); //感知事件类型占比 @@ -47,12 +49,16 @@ public interface DcPerceivedEventsWarningMapper { List> selectWarningTrendYear(DcWarning dcWarning); //感知事件某路段类型日占比 List> selectWarningSectionTypeDay(DcWarning dcWarning); + String selectWarningSectionTypeDayCount(DcWarning dcWarning); //感知事件某路段类型月占比 List> selectWarningSectionTypeMonth(DcWarning dcWarning); + String selectWarningSectionTypeMonthCount(DcWarning dcWarning); //感知事件某路段类型季占比 List> selectWarningSectionTypeQuarter(DcWarning dcWarning); + List> selectWarningSectionTypeQuarterCount(DcWarning dcWarning); //感知事件某路段类型年占比 List> selectWarningSectionTypeYear(DcWarning dcWarning); + String selectWarningSectionTypeYearCount(DcWarning dcWarning); //查询某个路段下的全部桩号 List> selectSectionMark(DcWarning dcWarning); //根据桩号查询条数 diff --git a/zc-business/src/main/java/com/zc/business/service/IDCPerceivedEventsWarningService.java b/zc-business/src/main/java/com/zc/business/service/IDCPerceivedEventsWarningService.java index a1a2817a..64a63fc0 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDCPerceivedEventsWarningService.java +++ b/zc-business/src/main/java/com/zc/business/service/IDCPerceivedEventsWarningService.java @@ -14,6 +14,8 @@ import java.util.List; public interface IDCPerceivedEventsWarningService { //查询预警表所有感知事件的数量 HashMap perceivedEventsWarningNum(); + //感知事件详情 + DcWarning selectWarningById(Long id); //感知事件类型 List selectEventTypeList(); @@ -29,6 +31,7 @@ public interface IDCPerceivedEventsWarningService { List> selectDailyCumulativeMonth(); //按事件源统计感知事件统计信息 List> selectWarningSourceGroup(); + String selectWarningSourceGroupCount(); //当日感知事件的处置情况占比 List> selectWarningStateDay(); //感知事件类型占比 @@ -37,6 +40,8 @@ public interface IDCPerceivedEventsWarningService { List> selectWarningTrend(DcWarning dcWarning); //感知事件某路段类型占比 List> selectWarningSectionType(DcWarning dcWarning); + String selectWarningSectionTypeCount(DcWarning dcWarning); + List> selectWarningSectionTypeCountQuarter(DcWarning dcWarning); //查询某个路段下的全部桩号 List> selectSectionMark(DcWarning dcWarning); //预警事件,事件列表 查询状态为上报的感知事件 @@ -46,4 +51,5 @@ public interface IDCPerceivedEventsWarningService { + } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java index 93e86423..278bd24d 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/DcPerceivedEventsWarningServiceImpl.java @@ -40,6 +40,12 @@ public class DcPerceivedEventsWarningServiceImpl implements IDCPerceivedEventsWa map.put("number",number); return map; } + @Override + public DcWarning selectWarningById(Long id) { + return perceivedEventsWarningMapper.selectWarningById(id); + } + + //感知事件类型 @Override public List selectEventTypeList() { @@ -87,6 +93,15 @@ public class DcPerceivedEventsWarningServiceImpl implements IDCPerceivedEventsWa dcWarning.setCreateTime(nowDate); return perceivedEventsWarningMapper.selectWarningSourceGroup(dcWarning); } + + @Override + public String selectWarningSourceGroupCount() { + DcWarning dcWarning = new DcWarning(); + Date nowDate = DateUtils.getNowDate(); + dcWarning.setCreateTime(nowDate); + return perceivedEventsWarningMapper.selectWarningSourceGroupCount(dcWarning); + } + //当日感知事件的处置情况占比 @Override public List> selectWarningStateDay() { @@ -138,6 +153,29 @@ public class DcPerceivedEventsWarningServiceImpl implements IDCPerceivedEventsWa return null; } } + + @Override + public String selectWarningSectionTypeCount(DcWarning dcWarning) { + String type = dcWarning.getType(); + switch (type){ + case "day": + return perceivedEventsWarningMapper.selectWarningSectionTypeDayCount(dcWarning); + case "month": + return perceivedEventsWarningMapper.selectWarningSectionTypeMonthCount(dcWarning); + case "year": + return perceivedEventsWarningMapper.selectWarningSectionTypeYearCount(dcWarning); + } + return null; + } + + @Override + public List> selectWarningSectionTypeCountQuarter(DcWarning dcWarning) { + if (dcWarning.getType().equals("quarter")==false){ + return null; + } + return perceivedEventsWarningMapper.selectWarningSectionTypeQuarterCount(dcWarning); + } + //查询某个路段下的全部桩号 @Override public List> selectSectionMark(DcWarning dcWarning) { diff --git a/zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml b/zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml index 0b51272a..bcd110df 100644 --- a/zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml +++ b/zc-business/src/main/resources/mapper/business/DcPerceivedEventsWarningMapper.xml @@ -13,7 +13,17 @@ - + + + + + + + + + \ No newline at end of file