From eea03062dd28f6a34f120628a60e5cad65374f8b Mon Sep 17 00:00:00 2001 From: mi9688 Date: Mon, 18 Nov 2024 10:52:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=9C=E4=B8=9A=E5=A4=A7=E5=B1=8F=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../deviceData/DeviceAlarmController.java | 115 ++++++++++++++++++ ...viceRealtimedataMeteorologyController.java | 2 +- ...taService.java => DevLinkBaseService.java} | 24 +++- .../service/DevLinkMetDataService.java | 2 +- .../service/DevLinkMiaoQingDataService.java | 4 +- .../service/DevLinkMoistureDataService.java | 5 +- .../DevLinkPhotovoltaicDataService.java | 2 +- .../iot/service/impl/DeviceServiceImpl.java | 2 +- 8 files changed, 141 insertions(+), 15 deletions(-) create mode 100644 fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceAlarmController.java rename fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/{DevLinkRealTimeDataService.java => DevLinkBaseService.java} (80%) diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceAlarmController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceAlarmController.java new file mode 100644 index 0000000..c468148 --- /dev/null +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceAlarmController.java @@ -0,0 +1,115 @@ +package com.fastbee.data.controller.deviceData; + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.dtflys.forest.annotation.Get; +import com.fastbee.common.core.controller.BaseController; +import com.fastbee.common.core.domain.AjaxResult; +import com.fastbee.deviceData.api.devlink.service.DevLinkAuthorizationService; +import com.fastbee.deviceData.api.devlink.service.DevLinkBaseService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +/** + * 设备告警 + */ +@RestController +@RequestMapping("/device/statistics") +public class DeviceAlarmController extends BaseController { + + @Autowired + private DevLinkBaseService devLinkBaseService; + + /** + * 获取设备告警数量 + */ + @GetMapping("/alarm/count") + public AjaxResult getDeviceAlarmCount() { + + HashMap body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/statistics/months"); + JSONObject data = devLinkBaseService.baseRequest(body); + return AjaxResult.success(data); + } + + /** + * 获取设备相关统计 + */ + @GetMapping("/count") + public AjaxResult getDeviceStatusCount() { + HashMap body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/statistics"); + JSONObject data = devLinkBaseService.baseRequest(body); + //计算安全状态等级 + String securityLevel="?"; + JSONObject total = JSONUtil.parseObj(data.get("deviceTotal")); + + int alarmTotal = Integer.parseInt(total.get("alarmTotal").toString()); + if(alarmTotal < 2){ + securityLevel= "A"; + } + else if(alarmTotal<4){ + securityLevel = "B"; + }else if(alarmTotal<6){ + securityLevel = "C"; + }else if(alarmTotal<8){ + securityLevel = "D"; + } + total.put("securityLevel",securityLevel); + return AjaxResult.success(total); + } + + /** + * 统计不同设备数量 + */ + @GetMapping("/countByType") + public AjaxResult getDeviceCountByType() { + HashMap body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/list"); + JSONObject data = devLinkBaseService.baseRequest(body); + //设备列表 + JSONArray devArray = JSONUtil.parseArray(data); + //分组统计 + Map map = new HashMap<>(); + for (int i = 0; i < devArray.size(); i++) { + JSONObject dev = devArray.getJSONObject(i); + String type = dev.get("type").toString(); + if(map.containsKey(type)){ + map.put(type,map.get(type)+1); + }else + map.put(type,1); + } + return AjaxResult.success(); + } + + /** + * 统计设备在线率 + */ + @GetMapping("/onlineRate") + public AjaxResult getDeviceOnlineRate() { + HashMap body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/list"); + JSONObject data = devLinkBaseService.baseRequest(body); + //设备列表 + JSONArray devArray = JSONUtil.parseArray(data); + //分组统计 + + return AjaxResult.success(); + } + + + + + +} diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceRealtimedataMeteorologyController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceRealtimedataMeteorologyController.java index 9a011af..b8e9b75 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceRealtimedataMeteorologyController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/deviceData/DeviceRealtimedataMeteorologyController.java @@ -18,7 +18,7 @@ public class DeviceRealtimedataMeteorologyController { * 获取最新的一条气象数据 * @return */ - @GetMapping(value = "/weather/realtimedata") + @GetMapping(value = "/weather/realtimedata") public AjaxResult getLatestWeatherRealtimedata() { return AjaxResult.success(deviceRealtimedataMeteorologyService.getLatestWeatherRealtimedata()); } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java similarity index 80% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java index 7269dd0..41e2d26 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java @@ -4,7 +4,7 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.fastbee.common.utils.DateUtils; +import com.fastbee.common.exception.ServiceException; import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,7 +14,7 @@ import java.util.HashMap; import java.util.Map; @Component -public class DevLinkRealTimeDataService { +public class DevLinkBaseService { @Autowired private DevLinkAuthorizationService authorizationService; @@ -92,6 +92,22 @@ public class DevLinkRealTimeDataService { return HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr); } + /** + * 基本请求 + * @return 请求结果data + */ + public JSONObject baseRequest(Map body){ + DevLinkAuthorizationService authorization = new DevLinkAuthorizationService(); + String jsonStr = JSONUtil.toJsonStr(body); + System.err.println(authorization.getBaseUrl() + authorization.getAuth()); + String respStr = HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr); + JSONObject resp = JSONUtil.parseObj(respStr); + if(!resp.get("code").toString().equals("200")){ + throw new ServiceException(resp.get("message").toString()); + } + return resp.getJSONObject("data"); + } + public BigDecimal toBigDecimalValue(String str) { if (str == null||"".equals(str)) { return null; @@ -106,8 +122,8 @@ public class DevLinkRealTimeDataService { } public static void main(String[] args) { - DevLinkRealTimeDataService devLinkRealTimeDataService = new DevLinkRealTimeDataService(); - Map metDeviceRealData = devLinkRealTimeDataService.getMetDeviceRealData("3270"); + DevLinkBaseService devLinkBaseService = new DevLinkBaseService(); + Map metDeviceRealData = devLinkBaseService.getMetDeviceRealData("3270"); // System.err.println(metDeviceRealData); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java index d8587b5..ecde9f9 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java @@ -17,7 +17,7 @@ import java.util.Map; * devLink气象设备数据服务 */ @Service -public class DevLinkMetDataService extends DevLinkRealTimeDataService { +public class DevLinkMetDataService extends DevLinkBaseService { @Autowired private DevLinkAuthorizationService authorizationService; diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java index 2d80e44..1f901fd 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java @@ -3,9 +3,7 @@ package com.fastbee.deviceData.api.devlink.service; import com.fastbee.common.exception.ServiceException; import com.fastbee.common.utils.DateUtils; import com.fastbee.deviceData.domain.DeviceRealtimedataMiaoqing; -import com.fastbee.deviceData.domain.DeviceRealtimedataPhotovoltaic; import com.fastbee.deviceData.mapper.DeviceRealtimedataMiaoqingMapper; -import com.fastbee.deviceData.mapper.DeviceRealtimedataPhotovoltaicMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,7 +16,7 @@ import java.util.Map; * devLink苗情设备数据服务 */ @Service -public class DevLinkMiaoQingDataService extends DevLinkRealTimeDataService { +public class DevLinkMiaoQingDataService extends DevLinkBaseService { @Autowired private DevLinkAuthorizationService authorizationService; @Autowired diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java index d6b6691..c579844 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java @@ -2,14 +2,11 @@ package com.fastbee.deviceData.api.devlink.service; import com.fastbee.common.exception.ServiceException; import com.fastbee.common.utils.DateUtils; -import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology; import com.fastbee.deviceData.domain.DeviceRealtimedataMoisture; -import com.fastbee.deviceData.mapper.DeviceRealtimedataMeteorologyMapper; import com.fastbee.deviceData.mapper.DeviceRealtimedataMoistureMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -19,7 +16,7 @@ import java.util.Map; * devLink墒情设备数据服务 */ @Service -public class DevLinkMoistureDataService extends DevLinkRealTimeDataService{ +public class DevLinkMoistureDataService extends DevLinkBaseService { @Autowired private DevLinkAuthorizationService authorizationService; @Autowired diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java index b588484..d6d0479 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java @@ -16,7 +16,7 @@ import java.util.Map; * devLink光伏设备数据服务 */ @Service -public class DevLinkPhotovoltaicDataService extends DevLinkRealTimeDataService{ +public class DevLinkPhotovoltaicDataService extends DevLinkBaseService { @Autowired private DevLinkAuthorizationService authorizationService; @Autowired diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java index c683f97..4d15527 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java @@ -73,7 +73,7 @@ import static com.fastbee.common.utils.SecurityUtils.isAdmin; * 设备Service业务层处理 * * @author kerwincui - * @date 2021-12-16 + * @date 2021-12-16 */ @Service public class DeviceServiceImpl implements IDeviceService {