From 5f4b1e5bf452561758d42da604691a900f22916c Mon Sep 17 00:00:00 2001 From: yinhuaiwei Date: Wed, 5 Nov 2025 17:35:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=8D=8E=E8=BD=AFMQT?= =?UTF-8?q?T=E6=97=A0=E6=9C=BA=E4=BA=BA=E8=BF=90=E6=A3=80=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=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 --- .../impl/BasedataEqpBookServiceImpl.java | 4 + .../mapper/BasedataMontTaskResultMapper.java | 5 + .../IBasedataMontTaskResultService.java | 5 + .../BasedataMontTaskResultServiceImpl.java | 11 ++ .../metadata/mqtt/HuaRuanMQTTServiceImpl.java | 120 +++++++++++++++++- .../controller/HrEmergencyController.java | 103 +++++++++++++++ .../HrHealthEvaluateController.java | 104 +++++++++++++++ .../controller/HrInspectionController.java | 31 +++++ .../controller/HrLifeDetectionController.java | 89 +++++++++++++ .../controller/HrMaintenanceController.java | 50 ++++++++ .../mqtt/controller/HrWarnController.java | 24 ++++ .../inspect/metadata/mqtt/domain/HrDrone.java | 82 ++++++++++++ .../metadata/mqtt/domain/HrDroneBattery.java | 26 ++++ .../metadata/mqtt/domain/HrDroneWarn.java | 27 ++++ .../metadata/mqtt/domain/HrMaintenance.java | 24 ++++ .../inspect/metadata/mqtt/domain/HrNest.java | 24 ++++ .../metadata/mqtt/domain/HrNestBattery.java | 22 ++++ .../metadata/mqtt/domain/HrNestWarn.java | 22 ++++ .../metadata/mqtt/domain/HrTaskProcess.java | 22 ++++ .../inspect/metadata/mqtt/domain/HrWarn.java | 21 +++ .../metadata/mqtt/enums/HrDeviceEnum.java | 17 +++ .../mqtt/enums/HrHealthLevelEnum.java | 20 +++ .../mqtt/enums/HrHealthStatusEnum.java | 18 +++ .../metadata/mqtt/enums/HrTaskStepEnum.java | 60 +++++++++ .../mqtt/mapper/HrDroneBatteryMapper.java | 13 ++ .../metadata/mqtt/mapper/HrDroneMapper.java | 11 ++ .../mqtt/mapper/HrMaintenanceMapper.java | 19 +++ .../mqtt/mapper/HrNestBatteryMapper.java | 13 ++ .../metadata/mqtt/mapper/HrNestMapper.java | 17 +++ .../mqtt/mapper/HrTaskProcessMapper.java | 13 ++ .../metadata/mqtt/mapper/HrWarnMapper.java | 15 +++ .../inspect/metadata/mqtt/service/HrTask.java | 23 ++++ .../mqtt/service/IHrDroneBatteryService.java | 11 ++ .../mqtt/service/IHrDroneService.java | 9 ++ .../mqtt/service/IHrMaintenanceService.java | 17 +++ .../mqtt/service/IHrNestBatteryService.java | 11 ++ .../metadata/mqtt/service/IHrNestService.java | 14 ++ .../mqtt/service/IHrTaskProcessService.java | 11 ++ .../metadata/mqtt/service/IHrWarnService.java | 13 ++ .../impl/HrDroneBatteryServiceImpl.java | 24 ++++ .../mqtt/service/impl/HrDroneServiceImpl.java | 20 +++ .../impl/HrMaintenanceServiceImpl.java | 41 ++++++ .../impl/HrNestBatteryServiceImpl.java | 26 ++++ .../mqtt/service/impl/HrNestServiceImpl.java | 32 +++++ .../impl/HrTaskProcessServiceImpl.java | 26 ++++ .../mqtt/service/impl/IHrWarnServiceImpl.java | 30 +++++ .../utils/HrMqttBatchProcessingService.java | 77 +++++++++++ .../metadata/mqtt/vo/HrHealthEvaluateVO.java | 22 ++++ .../metadata/mqtt/vo/HrLifeDetectionVO.java | 33 +++++ .../mapper/eqpbook/BasedataEqpBookMapper.xml | 5 + .../montdata/BasedataMontTaskResultMapper.xml | 12 ++ .../mapper/mqtt/HrDroneBatteryMapper.xml | 94 ++++++++++++++ .../resources/mapper/mqtt/HrDroneMapper.xml | 95 ++++++++++++++ .../mapper/mqtt/HrMaintenanceMapper.xml | 73 +++++++++++ .../mapper/mqtt/HrNestBatteryMapper.xml | 44 +++++++ .../resources/mapper/mqtt/HrNestMapper.xml | 79 ++++++++++++ .../mapper/mqtt/HrTaskProcessMapper.xml | 51 ++++++++ .../resources/mapper/mqtt/HrWarnMapper.xml | 55 ++++++++ 58 files changed, 1975 insertions(+), 5 deletions(-) create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java create mode 100644 inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml create mode 100644 inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java index c105e1e..a22ea92 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java @@ -207,6 +207,10 @@ public class BasedataEqpBookServiceImpl implements IBasedataEqpBookService { params.put("patrolDeviceTypeFlag", "robotAndUav"); } + if (null != patroldeviceTyepFlag && patroldeviceTyepFlag.equals("uav")) { + params.put("patrolDeviceTypeFlag", "uav"); + } + basedataEqpBookQuery.setParams(params); List allEqpbookList = this.basedataEqpbookMapper.selectBasedataEqpBookList(basedataEqpBookQuery); List onLineIdArray = new ArrayList<>(); diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java index 068fbd8..b5b1be1 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java @@ -3,6 +3,7 @@ package com.inspect.metadata.montdata.mapper; import com.inspect.metadata.montdata.domain.BasedataMontTaskResult; import org.apache.ibatis.annotations.Mapper; +import java.util.Date; import java.util.List; @Mapper @@ -18,4 +19,8 @@ public interface BasedataMontTaskResultMapper { int deleteBasedataMontTaskResultByTaskResultId(Long taskResultId); int deleteBasedataMontTaskResultByTaskResultIds(Long[] taskResultIds); + + Integer countTimesByPatrolDeviceCode(String patrolDeviceCode); + + Date selectMinCreateTimeByPatrolDeviceCode(String patrolDeviceCode); } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java index f0760b1..47e0e52 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java @@ -2,6 +2,7 @@ package com.inspect.metadata.montdata.service; import com.inspect.metadata.montdata.domain.BasedataMontTaskResult; +import java.util.Date; import java.util.List; public interface IBasedataMontTaskResultService { @@ -16,4 +17,8 @@ public interface IBasedataMontTaskResultService { int deleteBasedataMontTaskResultByTaskResultIds(Long[] resultIds); int deleteBasedataMontTaskResultByTaskResultId(Long resultId); + + Integer countTimesByPatrolDeviceCode(String patrolDeviceCode); + + Date selectMinCreateTimeByPatrolDeviceCode(String patrolDeviceCode); } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java index d10e5a9..0a6efcb 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java @@ -4,6 +4,7 @@ import com.inspect.metadata.montdata.domain.BasedataMontTaskResult; import com.inspect.metadata.montdata.mapper.BasedataMontTaskResultMapper; import com.inspect.metadata.montdata.service.IBasedataMontTaskResultService; +import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -40,4 +41,14 @@ public class BasedataMontTaskResultServiceImpl implements IBasedataMontTaskResul public int deleteBasedataMontTaskResultByTaskResultId(Long taskResultId) { return this.basedataMontTaskresultMapper.deleteBasedataMontTaskResultByTaskResultId(taskResultId); } + + @Override + public Integer countTimesByPatrolDeviceCode(String patrolDeviceCode) { + return this.basedataMontTaskresultMapper.countTimesByPatrolDeviceCode(patrolDeviceCode); + } + + @Override + public Date selectMinCreateTimeByPatrolDeviceCode(String patrolDeviceCode) { + return this.basedataMontTaskresultMapper.selectMinCreateTimeByPatrolDeviceCode(patrolDeviceCode); + } } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java index 142048c..e4710ad 100644 --- a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java @@ -1,5 +1,15 @@ package com.inspect.metadata.mqtt; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspect.metadata.mqtt.domain.*; +import com.inspect.metadata.mqtt.enums.HrDeviceEnum; +import com.inspect.metadata.mqtt.service.IHrDroneBatteryService; +import com.inspect.metadata.mqtt.service.IHrTaskProcessService; +import com.inspect.metadata.mqtt.service.IHrWarnService; +import com.inspect.metadata.mqtt.utils.HrMqttBatchProcessingService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; @@ -8,15 +18,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @Slf4j @Service -@ConditionalOnProperty( - name = {"hua-ruan.mqtt.enable"}, - havingValue = "true" -) +@ConditionalOnProperty(name = {"hua-ruan.mqtt.enable"}, havingValue = "true") public class HuaRuanMQTTServiceImpl { private final MQTTUtils mqttUtils; + + @Autowired + private IHrTaskProcessService taskProcessService; + + @Autowired + private IHrWarnService warnService; + + @Autowired + private IHrDroneBatteryService droneBatteryService; + + @Autowired + private HrMqttBatchProcessingService batchProcessingService; + @Autowired public HuaRuanMQTTServiceImpl(MQTTUtils mqttUtils) { this.mqttUtils = mqttUtils; @@ -46,6 +70,92 @@ public class HuaRuanMQTTServiceImpl { } private void handleIncomingMessage(String topic, MqttMessage message) { - // 处理接收到的消息 + try { + String nestCode = getNestCode(topic); + if (nestCode.equals("")) { + throw new Exception("nestCode is null"); + } + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + String jsonStr = new String(message.getPayload()); + // 机巢基础状态 + if (topic.endsWith("/thing/property/nest")) { + log.info("机巢基础状态: {}", nestCode); + HrNest hrNest = objectMapper.readValue(jsonStr, HrNest.class); + hrNest.setNestCode(nestCode); + batchProcessingService.addNest(hrNest); + } + // 机巢电池状态 + else if (topic.endsWith("/thing/property/nest_battery")) { + log.info("机巢电池状态: {}", nestCode); + } + // 航站状态告警 + else if (topic.endsWith("thing/service/nest/warn")) { + log.info("航站状态告警: {}", nestCode); + List nestWarnList = objectMapper.readValue(jsonStr, new TypeReference>() { + }); + for (HrNestWarn nestWarn : nestWarnList) { + HrWarn warn = new HrWarn(); + warn.setNestCode(nestCode); + warn.setType(HrDeviceEnum.Nest.getCode()); + warn.setErrCode(nestWarn.getErrCode()); + warn.setErrMsg(nestWarn.getErrMsg()); + warn.setErrGrade(nestWarn.getErrGrade()); + warnService.insertWarn(warn); + } + } + // 无人机基础信息 + else if (topic.endsWith("/thing/property/drone")) { + log.info("无人机基础信息: {}", nestCode); + } + // 无机人电池状态 + else if (topic.endsWith("/thing/property/drone_battery")) { + log.info("无人机电池状态: {}", nestCode); + HrDroneBattery droneBattery = objectMapper.readValue(jsonStr, HrDroneBattery.class); + droneBattery.setNestCode(nestCode); + droneBatteryService.insertDroneBattery(droneBattery); + } + // 无人机告警信息 + else if (topic.endsWith("/thing/property/errmsg")) { + log.info("无人机告警信息: {}", nestCode); + HrDroneWarn droneWarn = objectMapper.readValue(jsonStr, HrDroneWarn.class); + HrWarn warn = new HrWarn(); + warn.setNestCode(nestCode); + warn.setType(droneWarn.getErrType()); + warn.setErrCode(droneWarn.getErrCode()); + warn.setErrMsg(droneWarn.getErrMsg()); + warn.setErrGrade(droneWarn.getErrRank()); + warnService.insertWarn(warn); + } + // 巡检任务执行过程 + else if (topic.endsWith("/thing/property/task_process")) { + log.info("巡检任务执行过程: {}", nestCode); + JSONObject jsonObject = JSONObject.parseObject(jsonStr); + HrTaskProcess taskProcess = new HrTaskProcess(); + taskProcess.setNestCode(nestCode); + taskProcess.setPatrolTaskCode(jsonObject.getString("patrolTaskCode")); + taskProcess.setState(jsonObject.getInteger("state")); + JSONObject params = jsonObject.getJSONObject("param"); + taskProcess.setContent(params.getString("Content")); + taskProcess.setStepid(params.getInteger("stepid")); + taskProcess.setResult(params.getInteger("result")); + taskProcess.setTime(params.getString("Time")); + taskProcessService.insertTaskProcess(taskProcess); + } + } catch (Exception e) { + log.error("MQTT handle error {}: {}", topic, e.getMessage()); + } + } + + private static Pattern pattern = Pattern.compile("/sys/([^/]+)/.*"); + + public String getNestCode(String topic) { + Matcher matcher = pattern.matcher(topic); + + if (matcher.find()) { + return matcher.group(1); + } + + return ""; } } diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java new file mode 100644 index 0000000..2f7e2ac --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java @@ -0,0 +1,103 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.domain.AjaxResult; +import com.inspect.metadata.eqpbook.domain.BasedataEqpBook; +import com.inspect.metadata.eqpbook.service.IBasedataEqpBookService; +import com.inspect.metadata.mqtt.MQTTUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/hr/emergency") +public class HrEmergencyController extends BaseController { + @Resource + private MQTTUtils mqttUtils; + + @Autowired + private IBasedataEqpBookService iBasedataEqpBookService; + + @GetMapping("/list") + public AjaxResult list() { + BasedataEqpBook eqpBook = new BasedataEqpBook(); + eqpBook.setAreaName("华软无人机"); + List eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook); + List> list = new ArrayList<>(); + for (BasedataEqpBook book : eqpBooks) { + Map map = new HashMap<>(); + map.put("name", book.getPatrolDeviceName()); + map.put("nestCode", book.getPatrolDeviceCode()); + list.add(map); + } + + return AjaxResult.success(list); + } + + // 机巢紧急锁停 + @GetMapping("/selfcheck/{nestCode}") + public AjaxResult selfcheck(@PathVariable String nestCode) { + try { + Thread.sleep(2000); + // 2.7.1 机巢控制:自检 + String content = "{\"code\":\"12000\",\"command\":\"4\"}"; + mqttUtils.publish(1, "/sys/" + nestCode + "/thing/service/nest/control", content); + return AjaxResult.success(); + } catch (Exception e) { + logger.error("[HR Emergency selfcheck] error :{}", e.getMessage()); + return AjaxResult.error(); + } + } + + // 机巢紧急锁停 + @GetMapping("/lockdown/{nestCode}") + public AjaxResult lockdown(@PathVariable String nestCode) { + try { + Thread.sleep(2000); + // 2.7.1 机巢控制:急停 + String content = "{\"code\":\"12000\",\"command\":\"2\"}"; + mqttUtils.publish(1, "/sys/" + nestCode + "/thing/service/nest/control", content); + return AjaxResult.success(); + } catch (Exception e) { + logger.error("[HR Emergency lockdown] error :{}", e.getMessage()); + return AjaxResult.error(); + } + } + + @GetMapping("/releaseLockdown/{nestCode}") + public AjaxResult releaseLockdown(@PathVariable String nestCode) { + try { + Thread.sleep(2000); + // 2.7.1 机巢控制:解除急停 + String content = "{\"code\":\"12000\",\"command\":\"3\"}"; + mqttUtils.publish(1, "/sys/" + nestCode + "/thing/service/nest/control", content); + return AjaxResult.success(); + } catch (Exception e) { + logger.error("[HR Emergency release lockdown] error :{}", e.getMessage()); + return AjaxResult.error(); + } + } + + //无人机紧急降落 + @GetMapping("/landing/{nestCode}") + public AjaxResult landing(@PathVariable String nestCode) { + try { + Thread.sleep(2000); + // 2.8.5 无人机控制:一键返航 + String content = "{\"code\":\"22004\",\"command\":\"1\"}"; + mqttUtils.publish(1, "/sys/" + nestCode + "/thing/service/drone/drone_control", content); + return AjaxResult.success(); + } catch (Exception e) { + logger.error("[HR Emergency landing] error :{}", e.getMessage()); + return AjaxResult.error(); + } + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java new file mode 100644 index 0000000..21b6c9a --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java @@ -0,0 +1,104 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.domain.AjaxResult; +import com.inspect.metadata.eqpbook.domain.BasedataEqpBook; +import com.inspect.metadata.eqpbook.service.IBasedataEqpBookService; +import com.inspect.metadata.mqtt.domain.HrNest; +import com.inspect.metadata.mqtt.domain.HrWarn; +import com.inspect.metadata.mqtt.enums.HrDeviceEnum; +import com.inspect.metadata.mqtt.enums.HrHealthLevelEnum; +import com.inspect.metadata.mqtt.enums.HrHealthStatusEnum; +import com.inspect.metadata.mqtt.service.IHrNestService; +import com.inspect.metadata.mqtt.service.IHrWarnService; +import com.inspect.metadata.mqtt.vo.HrHealthEvaluateVO; +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.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/hr/healthEvaluate") +public class HrHealthEvaluateController extends BaseController { + @Autowired + private IHrNestService iHrNestService; + + @Autowired + private IBasedataEqpBookService iBasedataEqpBookService; + + @Autowired + private IHrWarnService iHrWarnService; + + // 判断健康水平 + private static HrHealthLevelEnum getHealthLevel(Integer count, Integer status) { + if (status == null || status != HrHealthStatusEnum.Normal.getCode()) { + return HrHealthLevelEnum.Poor; + } + if (count == null || count < 0) { + return HrHealthLevelEnum.Poor; + } + if (count == 0) { + return HrHealthLevelEnum.Excellent; + } else if (count == 1) { + return HrHealthLevelEnum.Good; + } else if (count < 3) { + return HrHealthLevelEnum.Average; + } else if (count < 5) { + return HrHealthLevelEnum.Poor; + } else { + return HrHealthLevelEnum.Danger; + } + } + + @GetMapping("/list") + public AjaxResult nestListLatest() { + BasedataEqpBook eqpBook = new BasedataEqpBook(); + eqpBook.setAreaName("华软无人机"); + List eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook); + List evaluateList = new ArrayList<>(); + for (BasedataEqpBook book : eqpBooks) { + String patrolDeviceName = book.getPatrolDeviceName(); + String patrolDeviceCode = book.getPatrolDeviceCode(); + HrNest nest = iHrNestService.selectNestByCode(patrolDeviceCode); + if (nest == null) { + HrHealthEvaluateVO evaluate = new HrHealthEvaluateVO(patrolDeviceName, patrolDeviceCode, HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Poor.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Poor.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Poor.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Poor.getCode()); + evaluateList.add(evaluate); + } else { + // 航站状态 + Integer nestAutoCheck = nest.getNestFireWarn(); + Integer nestStatus = nestAutoCheck == 0 ? HrHealthStatusEnum.Normal.getCode() : HrHealthStatusEnum.Abnormal.getCode(); + // 统计一周内异常 + HrWarn nestWarn = new HrWarn(); + nestWarn.setType(HrDeviceEnum.Nest.getCode()); + nestWarn.setNestCode(patrolDeviceCode); + Integer nestWarnCount = iHrWarnService.countWarnOneWeek(nestWarn); + Integer nestWarnLevel = getHealthLevel(nestWarnCount, nestStatus).getCode(); + // 无人机状态 + Boolean isDroneConnected = nest.getIsDroneConnected(); + Integer droneStatus = isDroneConnected ? HrHealthStatusEnum.Normal.getCode() : HrHealthStatusEnum.Abnormal.getCode(); + // 统计一个月内异常 + HrWarn droneWarn = new HrWarn(); + droneWarn.setType(HrDeviceEnum.Nest.getCode()); + droneWarn.setNestCode(patrolDeviceCode); + Integer droneWarnCount = iHrWarnService.countWarnOneWeek(droneWarn); + Integer droneWarnLevel = getHealthLevel(droneWarnCount, droneStatus).getCode(); + // 电池状态(电池数量大于0即为正常) + Integer batteryAvailable = nest.getNestBatteryAvailable(); + Integer batteryStatus = batteryAvailable > 0 ? HrHealthStatusEnum.Normal.getCode() : HrHealthStatusEnum.Abnormal.getCode(); + Integer batteryLevel = batteryStatus == HrHealthStatusEnum.Normal.getCode() ? HrHealthLevelEnum.Excellent.getCode() : HrHealthLevelEnum.Poor.getCode(); + // 载荷状态 + Boolean isRemoteConnected = nest.getIsRemoteConnected(); + Integer loadStatus = isRemoteConnected ? HrHealthStatusEnum.Normal.getCode() : HrHealthStatusEnum.Abnormal.getCode(); + Integer loadLevel = loadStatus == HrHealthStatusEnum.Normal.getCode() ? HrHealthLevelEnum.Excellent.getCode() : HrHealthLevelEnum.Poor.getCode(); + + HrHealthEvaluateVO evaluate = new HrHealthEvaluateVO(patrolDeviceName, patrolDeviceCode, nestStatus, nestWarnLevel, droneStatus, droneWarnLevel, batteryStatus, batteryLevel, loadStatus, loadLevel); + evaluateList.add(evaluate); + } + } + logger.info("nestListLatest:{}", evaluateList); + return AjaxResult.success(evaluateList); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java new file mode 100644 index 0000000..1168310 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java @@ -0,0 +1,31 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.page.TableDataInfo; +import com.inspect.metadata.mqtt.domain.HrTaskProcess; +import com.inspect.metadata.mqtt.enums.HrTaskStepEnum; +import com.inspect.metadata.mqtt.service.IHrTaskProcessService; +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.List; + +@RestController +@RequestMapping("/hr/inspection") +public class HrInspectionController extends BaseController { + @Autowired + private IHrTaskProcessService iHrTaskProcessService; + + @GetMapping("/list") + public TableDataInfo list(HrTaskProcess process) { + startPage(); + process.setResult(2); + List list = iHrTaskProcessService.selectTaskProcessList(process); + for(HrTaskProcess p:list) { + p.setAdvice(HrTaskStepEnum.getDescription(p.getStepid())); + } + return getDataTable(list); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java new file mode 100644 index 0000000..f9ac3d4 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java @@ -0,0 +1,89 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.domain.AjaxResult; +import com.inspect.metadata.eqpbook.domain.BasedataEqpBook; +import com.inspect.metadata.eqpbook.service.IBasedataEqpBookService; +import com.inspect.metadata.montdata.service.IBasedataMontTaskResultService; +import com.inspect.metadata.mqtt.domain.HrDroneBattery; +import com.inspect.metadata.mqtt.service.IHrDroneBatteryService; +import com.inspect.metadata.mqtt.vo.HrLifeDetectionVO; +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.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/hr/lifeDetection") +public class HrLifeDetectionController extends BaseController { + @Autowired + private IBasedataEqpBookService iBasedataEqpBookService; + + @Autowired + private IBasedataMontTaskResultService iBasedataMontTaskResultService; + + @Autowired + private IHrDroneBatteryService droneBatteryService; + + @GetMapping("/list") + public AjaxResult list() { + BasedataEqpBook eqpBook = new BasedataEqpBook(); + eqpBook.setAreaName("华软无人机"); + List eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook); + List detectionList = new ArrayList<>(); + for (BasedataEqpBook book : eqpBooks) { + HrLifeDetectionVO vo = new HrLifeDetectionVO(); + String patrolDeviceCode = book.getPatrolDeviceCode(); + // 设备名称 + vo.setName(book.getPatrolDeviceName()); + // 设备编码 + vo.setNestCode(patrolDeviceCode); + // 已使用寿命 + Date createTime = iBasedataMontTaskResultService.selectMinCreateTimeByPatrolDeviceCode(patrolDeviceCode); + LocalDateTime createTimeLocal = createTime.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDateTime(); + Double useYears = calculateYearsDifference(createTimeLocal, LocalDateTime.now()); + vo.setServiceLife(useYears); + // 飞行次数 + Integer countTimes = iBasedataMontTaskResultService.countTimesByPatrolDeviceCode(patrolDeviceCode); + vo.setFlightCount(countTimes); + HrDroneBattery droneBattery = new HrDroneBattery(); + droneBattery.setNestCode(patrolDeviceCode); + // 电池充电次数 + List batteryList = droneBatteryService.selectDroneBatteryList(droneBattery); + if (batteryList.size() > 0) { + HrDroneBattery battery = batteryList.get(0); + vo.setChargingTimes(battery.getBatteryNumberOfDisCharges()); + } + // 剩余使用寿命 + vo.setDroneUsefulLife(vo.getDroneLife() - vo.getServiceLife()); + vo.setNestUsefulLife(vo.getNestLife() - vo.getServiceLife()); + vo.setBatteryUsefulLife(vo.getBatteryLife() - vo.getServiceLife()); + vo.setLoadUsefulLife(vo.getLoadLife() - vo.getServiceLife()); + detectionList.add(vo); + } + logger.info("lifeDetection:{}", detectionList); + return AjaxResult.success(detectionList); + } + + /** + * 计算两个时间之间的年数差 + * + * @param targetTime + * @param sourceTime + * @return 年数差(保留一位小数) + */ + public static double calculateYearsDifference(LocalDateTime targetTime, LocalDateTime sourceTime) { + long daysBetween = ChronoUnit.DAYS.between(targetTime, sourceTime); + // 计算年数(考虑闰年) + double years = daysBetween / 365.25; + + // 保留一位小数 + return Math.round(years * 10.0) / 10.0; + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java new file mode 100644 index 0000000..c42aac0 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java @@ -0,0 +1,50 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.domain.AjaxResult; +import com.inspect.base.core.web.page.TableDataInfo; +import com.inspect.metadata.eqpbook.service.IBasedataEqpBookService; +import com.inspect.metadata.mqtt.domain.HrMaintenance; +import com.inspect.metadata.mqtt.service.IHrMaintenanceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/hr/maintenance") +public class HrMaintenanceController extends BaseController { + @Autowired + private IHrMaintenanceService maintenanceService; + + @Autowired + private IBasedataEqpBookService bookService; + + @GetMapping("/list") + public TableDataInfo list(HrMaintenance maintenance) { + startPage(); + List list = maintenanceService.selectMaintenanceList(maintenance); + return getDataTable(list); + } + + @GetMapping("/view/{maintenanceId}") + public AjaxResult view(@PathVariable("maintenanceId") Long maintenanceId) { + return AjaxResult.success(maintenanceService.selectMaintenanceById(maintenanceId)); + } + + @PostMapping("/add") + public AjaxResult add(@Validated @RequestBody HrMaintenance maintenance) { + return toAjax(maintenanceService.insertMaintenance(maintenance)); + } + + @PostMapping("/edit") + public AjaxResult edit(@RequestBody HrMaintenance maintenance) { + return toAjax(maintenanceService.updateMaintenance(maintenance)); + } + + @PostMapping("/remove") + public AjaxResult remove(@RequestBody String ids) { + return toAjax(maintenanceService.deleteMaintenanceByIds(ids)); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java new file mode 100644 index 0000000..29209f9 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java @@ -0,0 +1,24 @@ +package com.inspect.metadata.mqtt.controller; + +import com.inspect.base.core.web.controller.BaseController; +import com.inspect.base.core.web.page.TableDataInfo; +import com.inspect.metadata.mqtt.domain.HrWarn; +import com.inspect.metadata.mqtt.service.IHrWarnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/hr/warn") +public class HrWarnController extends BaseController { + @Autowired + private IHrWarnService warnService; + + @GetMapping("/list") + public TableDataInfo list(HrWarn Warn) { + startPage(); + List list = warnService.selectWarnList(Warn); + return getDataTable(list); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java new file mode 100644 index 0000000..65668cb --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java @@ -0,0 +1,82 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrDrone extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long droneId; + private String nestCode; + // 无人机是否开机 + private Integer UAVOnoffstate; + // 初始机头方向 + private Double droneBaseHeadDirection; + // 机头方向 + private Double droneHeadDirection; + // 无人机高度 + private Double droneAlt; + // 无人机纬度 + private Double droneLat; + // 无人机经度 + private Double droneLng; + // 相对高度 + private Double droneRelativeAlt; + // 飞行时间 + private Long droneFlyInSecond; + // 距离起飞点距离 + private Double droneFlyDistance; + // 剩余电量飞行时间 + private String remainFlightTimeInSecond; + //水平飞行速度 + private Double droneVSpeed; + // 垂直飞行速度 + private Double droneHSpeed; + // 飞行模式 + private String flightMode; + // 倾斜角度 + private Double dronePitch; + // 翻滚角度 + private Double droneRoll; + // 偏航角度 + private Double droneYaw; + // 卫星数量 + private Integer satelliteCount; + // 无人机状态 + private Integer droneUavState; + // 云台俯仰角度 + private Double gimbalPitch; + // 云台翻滚角度 + private Double gimbalRoll; + // 云台偏航角 + private Double gimbalYaw; + // RTK状态 + private Integer rtkState; + // 飞行器动作 + private Integer flyingAction; + // 变焦倍数 + private String zoomRatio; + // 云台模式 + private String headMode; + // 镜头模式 + private String lensMode; + //喊话器状态 + private String loudState; + // 探照灯连接状态 + private String lightconnect; + // 探照灯开关状态 + private String lightonoff; + // 探照灯爆闪状态 + private String lightflash; + // 探照灯当前亮度值 + private String lightluminance; + // 飞行总次数 + private String flightCount; + // 无人机控制权 + private String uavcontrolpower; + // 无人机在线状态 + private Integer uavline; + // 遥控器在线状态 + private String remote; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java new file mode 100644 index 0000000..8f7924c --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java @@ -0,0 +1,26 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrDroneBattery extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long droneBatteryId; + private String nestCode; + // 电池是否安装 + private Boolean isBatteryConnected; + // 电芯是否损坏 + private Boolean isCellDamaged; + // 是否低电压检测 + private Boolean isLowCellVoltageDetected; + // 实时电流消耗 + private Integer batteryCurrentConsumption; + // 充放电次数-循环次数 + private Integer batteryNumberOfDisCharges; + // 电池电压 + private Integer voltage; + // 电池电量 + private Integer power; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java new file mode 100644 index 0000000..f703ead --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java @@ -0,0 +1,27 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrDroneWarn extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long droneWarnId; + + private String errCode; + + /** + * 错误类型 + * 1:华软 2:大疆 + */ + private Integer errType; + + /** + * 错误等级 + * 1:告警 2:严重告警 + */ + private String errRank; + + private String errMsg; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java new file mode 100644 index 0000000..cadf15f --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java @@ -0,0 +1,24 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +@Data +public class HrMaintenance extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long maintenanceId; + private String nestIds; + private String droneIds; + private String nestEqpIds; + private String droneEqpIds; + @NotBlank(message = "维护内容不能为空") + @Size(min = 0, max = 100, message = "维护内容不能超过100个字符") + private String content; + + private String beginTime; + private String endTime; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java new file mode 100644 index 0000000..9d03f79 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java @@ -0,0 +1,24 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrNest extends BaseEntity { + private static final long serialVersionUID = 1L; + private Long nestId; + private String nestCode; + private Integer nestStateConstant; + private Integer droneStateConstant; + private Boolean isDroneConnected; + private Boolean isRemoteConnected; + private Integer nestBatteryAvailable; + private Integer chargingState; + private Integer nestPower; + private Integer nestEasyLockStus; + private Integer nestFireWarn; + private Integer nestAutoCheck; + private String nestAutoCheckErr; + private Integer nestPowerMode; + private Integer nestFireBombNum; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java new file mode 100644 index 0000000..8fe2817 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java @@ -0,0 +1,22 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrNestBattery extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long nestBatteryId; + private String nestCode; + // 电池编号 + private Integer no; + // 电池电量 + private Integer power; + // 充电状态:0(未充电)1(正在充电)2(已充满)255(状态异常) + private Integer state; + // 电池温度 + private Integer temp; + // 电池在位 + private Boolean exist; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java new file mode 100644 index 0000000..a06b813 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java @@ -0,0 +1,22 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrNestWarn extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long nestWarnId; + + private String nestCode; + + // 错误码 + private String errCode; + + // 错误描述 + private String errMsg; + + // 错误等级,1:告警;2:严重;3:危急 + private String errGrade; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java new file mode 100644 index 0000000..2f15f5b --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java @@ -0,0 +1,22 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrTaskProcess extends BaseEntity { + private final static long serialVersionUID = 1L; + + private Long processId; + private String nestCode; + private String patrolTaskCode; + private Integer state; + private String content; + private Integer stepid; + private Integer result; + private String time; + + private String advice; + private String beginTime; + private String endTime; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java new file mode 100644 index 0000000..53d35ad --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java @@ -0,0 +1,21 @@ +package com.inspect.metadata.mqtt.domain; + +import com.inspect.base.core.web.domain.BaseEntity; +import lombok.Data; + +@Data +public class HrWarn extends BaseEntity { + private Long warnId; + private String nestCode; + // 0:机巢;1: 华软无人机 + private Integer type; + // 错误码 + private String errCode; + // 错误描述 + private String errMsg; + // 错误等级,1:告警;2:严重;3:危急 + private String errGrade; + + private String beginTime; + private String endTime; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java new file mode 100644 index 0000000..530f0a4 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java @@ -0,0 +1,17 @@ +package com.inspect.metadata.mqtt.enums; + +import lombok.Getter; + +@Getter +public enum HrDeviceEnum { + Nest(0, "机巢"), + Drone(1, "无人机"); + + private final Integer code; + private final String value; + + HrDeviceEnum(Integer code, String value) { + this.code = code; + this.value = value; + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java new file mode 100644 index 0000000..f33687b --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java @@ -0,0 +1,20 @@ +package com.inspect.metadata.mqtt.enums; + +import lombok.Getter; + +@Getter +public enum HrHealthLevelEnum { + Excellent(0, "优秀"), + Good(1, "良好"), + Average(2, "一般"), + Poor(3, "较差"), + Danger(4, "危险"); + + private final Integer code; + private final String value; + + HrHealthLevelEnum(Integer code, String value) { + this.code = code; + this.value = value; + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java new file mode 100644 index 0000000..c04cf14 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java @@ -0,0 +1,18 @@ +package com.inspect.metadata.mqtt.enums; + +import lombok.Getter; + +@Getter +public enum HrHealthStatusEnum { + Normal(0, "正常状态"), + Abnormal(1, "异常状态"), + Fault(2, "故障状态"); + + private final Integer code; + private final String value; + + HrHealthStatusEnum(Integer code, String value) { + this.code = code; + this.value = value; + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java new file mode 100644 index 0000000..d6d5932 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java @@ -0,0 +1,60 @@ +package com.inspect.metadata.mqtt.enums; + +import lombok.Getter; + +/** + * 表示无人机系统中的各种控制与状态命令。 + */ +@Getter +public enum HrTaskStepEnum { + UNKNOWN(-1, "未知"), ALL(0, "全流程"), // 控制命令 + ONE_KEY_PREPARE(1, "一键准备"), ONE_KEY_LAUNCH(2, "一键放飞"), ONE_KEY_CLOSE(3, "一键关门"), ONE_KEY_LAND(4, "一键接机"), ONE_KEY_RECOVER(5, "一键回收"), ONE_KEY_POWER_OFF(6, "一键卸电"), ONE_KEY_POWER_TOGGLE(7, "一键开关机"), ONE_KEY_RESET(8, "一键复位"), WAIT(10, "等待"), ANTENNA_OUT(11, "天线伸出"), REMOTE_CONTROLLER_POWER_ON(12, "遥控器开机"), APP_START(13, "APP启动"), ANTENNA_RETRACT(14, "天线收回"), + + // 状态/任务命令 + DRONE_READY(101, "无人机就绪状态"), CONTROL_RIGHT_ACQUIRED(102, "控制权获取"), MISSION_DOWNLOAD(103, "航线下载"), MISSION_EXECUTE(104, "航线执行"), ONE_KEY_RETURN_HOME(105, "一键回家"), MEDIA_DOWNLOAD(106, "媒体文件下载"), EMERGENCY_LANDING(107, "备降点降落"), ONE_KEY_RELAND(108, "一键复降"), FOLLOW_LANDING(110, "跟随降落"), RETURN_TO_ALT_LAND(111, "返航备降悬停"), RESUME_FROM_BREAKPOINT(112, "断点续飞"), + + // 检查类命令 + RAIN_SNOW_CHECK(201, "雨雪检查"), WIND_SPEED_CHECK(202, "风速检查"), REMOTE_POWER_ON_CHECK(203, "遥控器上电"), TAKEOFF_CHECK(204, "起飞检查"), FLY_AWAY_30M_CHECK(205, "飞离30米检查"), RETURN_CHECK(206, "返航检查"), HOVER_CHECK(207, "悬停检查"), DISTANCE_CHECK(208, "距航站距离检查"), LANDING_CHECK(209, "降落检查"), + + PLATFORM_PRE_LAUNCH_CHECK(210, "平台放飞前检查"), LAUNCH_READY_CHECK(211, "放飞准备就绪检查"), PLATFORM_PRE_RECOVER_CHECK(212, "平台回收前检查"), RECOVER_READY_CHECK(213, "回收准备就绪检查"), RECOVER_COMPLETE_CHECK(214, "平台回收完成检查"); + + private final Integer stepid; + private final String description; + + HrTaskStepEnum(Integer stepid, String description) { + this.stepid = stepid; + this.description = description; + } + + /** + * 根据命令ID字符串获取对应的枚举实例 + * + * @param stepid 命令ID,如 "01", "101" 等 + * @return 对应的枚举值,若未找到返回 null + */ + public static HrTaskStepEnum fromstepid(Integer stepid) { + for (HrTaskStepEnum command : values()) { + if (command.stepid.equals(stepid)) { + return command; + } + } + return null; + } + + /** + * 判断某个 stepid 是否存在 + */ + public static boolean contains(Integer stepid) { + return fromstepid(stepid) != null; + } + + public static String getDescription(Integer stepid) { + HrTaskStepEnum command = fromstepid(stepid); + return command != null ? command.getDescription() + "异常,请检查" : "未知异常"; + } + + @Override + public String toString() { + return "HrTaskStepEnum{" + "stepid='" + stepid + '\'' + ", description='" + description + '\'' + '}'; + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java new file mode 100644 index 0000000..3cfe7b7 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java @@ -0,0 +1,13 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrDroneBattery; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrDroneBatteryMapper { + int insertDroneBattery(HrDroneBattery droneBattery); + + List selectDroneBatteryList(HrDroneBattery droneBattery); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java new file mode 100644 index 0000000..3864fb8 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java @@ -0,0 +1,11 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrDrone; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrDroneMapper { + List selectDroneList(HrDrone hrDrone); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java new file mode 100644 index 0000000..02c790b --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java @@ -0,0 +1,19 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrMaintenance; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrMaintenanceMapper { + List selectMaintenanceList(HrMaintenance maintenance); + + int insertMaintenance(HrMaintenance maintenance); + + int updateMaintenance(HrMaintenance maintenance); + + int deleteMaintenanceByIds(String[] ids); + + HrMaintenance selectMaintenanceById(Long maintenanceId); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java new file mode 100644 index 0000000..e653993 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java @@ -0,0 +1,13 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrNestBattery; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrNestBatteryMapper { + List selectNestBatteryList(HrNestBattery nestBattery); + + HrNestBattery selectNestBatteryByCode(String nestCode); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java new file mode 100644 index 0000000..3f972b7 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java @@ -0,0 +1,17 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrNest; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrNestMapper { + List selectNestList(HrNest nest); + + int batchInsert(List batchToSave); + + HrNest selectNestByCode(String nestCode); + + int deleteBeforeDaysAgo(int i); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java new file mode 100644 index 0000000..91d21d6 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java @@ -0,0 +1,13 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrTaskProcess; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrTaskProcessMapper { + List selectTaskProcessList(HrTaskProcess process); + + Integer insertTaskProcess(HrTaskProcess taskProcess); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java new file mode 100644 index 0000000..6911a8c --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java @@ -0,0 +1,15 @@ +package com.inspect.metadata.mqtt.mapper; + +import com.inspect.metadata.mqtt.domain.HrWarn; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface HrWarnMapper { + List selectWarnList(HrWarn warn); + + Integer countWarnOneWeek(HrWarn hrWarn); + + Integer insertWarn(HrWarn warn); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java new file mode 100644 index 0000000..2ef358f --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java @@ -0,0 +1,23 @@ +package com.inspect.metadata.mqtt.service; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@EnableScheduling +@Component +@Slf4j +public class HrTask { + @Autowired + private IHrNestService nestService; + + @Scheduled(cron = "${hua-ruan.mqtt.clean.corn: 0 0 1 ? * 5}") + public void cleanNest() { + // 默认清理三天之前的所有数据 + int cleanDays = 7; + int deletedCount = nestService.deleteBeforeDaysAgo(cleanDays); + log.info("[HR NEST CLEAN] count: {} ", deletedCount); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java new file mode 100644 index 0000000..29bd7d0 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java @@ -0,0 +1,11 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrDroneBattery; + +import java.util.List; + +public interface IHrDroneBatteryService { + List selectDroneBatteryList(HrDroneBattery droneBattery); + + int insertDroneBattery(HrDroneBattery droneBattery); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java new file mode 100644 index 0000000..67fc9a7 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java @@ -0,0 +1,9 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrDrone; + +import java.util.List; + +public interface IHrDroneService { + List selectDroneList(HrDrone hrDrone); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java new file mode 100644 index 0000000..45ff9c8 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java @@ -0,0 +1,17 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrMaintenance; + +import java.util.List; + +public interface IHrMaintenanceService { + List selectMaintenanceList(HrMaintenance maintenance); + + int insertMaintenance(HrMaintenance maintenance); + + int updateMaintenance(HrMaintenance maintenance); + + int deleteMaintenanceByIds(String ids); + + HrMaintenance selectMaintenanceById(Long maintenanceId); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java new file mode 100644 index 0000000..52c03c7 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java @@ -0,0 +1,11 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrNestBattery; + +import java.util.List; + +public interface IHrNestBatteryService { + List selectNestBatteryList(HrNestBattery nestBattery); + + HrNestBattery selectNestBatteryByCode(String nestCode); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java new file mode 100644 index 0000000..3345b6c --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java @@ -0,0 +1,14 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrNest; +import com.inspect.metadata.mqtt.vo.HrHealthEvaluateVO; + +import java.util.List; + +public interface IHrNestService { + List selectNestList(HrNest hrNest); + + HrNest selectNestByCode(String nestCode); + + int deleteBeforeDaysAgo(int i); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java new file mode 100644 index 0000000..7a508e8 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java @@ -0,0 +1,11 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrTaskProcess; + +import java.util.List; + +public interface IHrTaskProcessService { + List selectTaskProcessList(HrTaskProcess process); + + Integer insertTaskProcess(HrTaskProcess taskProcess); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java new file mode 100644 index 0000000..ab72e31 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java @@ -0,0 +1,13 @@ +package com.inspect.metadata.mqtt.service; + +import com.inspect.metadata.mqtt.domain.HrWarn; + +import java.util.List; + +public interface IHrWarnService { + List selectWarnList(HrWarn warn); + // 统计最近一个月异常数量 + Integer countWarnOneWeek(HrWarn hrWarn); + + Integer insertWarn(HrWarn warn); +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java new file mode 100644 index 0000000..44c4275 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java @@ -0,0 +1,24 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrDroneBattery; +import com.inspect.metadata.mqtt.mapper.HrDroneBatteryMapper; +import com.inspect.metadata.mqtt.service.IHrDroneBatteryService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrDroneBatteryServiceImpl implements IHrDroneBatteryService { + private final HrDroneBatteryMapper droneBatteryMapper; + @Override + public List selectDroneBatteryList(HrDroneBattery droneBattery) { + return droneBatteryMapper.selectDroneBatteryList(droneBattery); + } + + @Override + public int insertDroneBattery(HrDroneBattery droneBattery) { + return droneBatteryMapper.insertDroneBattery(droneBattery); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java new file mode 100644 index 0000000..24674b4 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java @@ -0,0 +1,20 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrDrone; +import com.inspect.metadata.mqtt.mapper.HrDroneMapper; +import com.inspect.metadata.mqtt.service.IHrDroneService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrDroneServiceImpl implements IHrDroneService { + private final HrDroneMapper droneMapper; + + @Override + public List selectDroneList(HrDrone hrDrone) { + return droneMapper.selectDroneList(hrDrone); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java new file mode 100644 index 0000000..3983239 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java @@ -0,0 +1,41 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.base.core.text.Convert; +import com.inspect.metadata.mqtt.domain.HrMaintenance; +import com.inspect.metadata.mqtt.mapper.HrMaintenanceMapper; +import com.inspect.metadata.mqtt.service.IHrMaintenanceService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrMaintenanceServiceImpl implements IHrMaintenanceService { + private final HrMaintenanceMapper maintenanceMapper; + + @Override + public List selectMaintenanceList(HrMaintenance maintenance) { + return maintenanceMapper.selectMaintenanceList(maintenance); + } + + @Override + public int insertMaintenance(HrMaintenance maintenance) { + return maintenanceMapper.insertMaintenance(maintenance); + } + + @Override + public int updateMaintenance(HrMaintenance maintenance) { + return maintenanceMapper.updateMaintenance(maintenance); + } + + @Override + public int deleteMaintenanceByIds(String ids) { + return maintenanceMapper.deleteMaintenanceByIds(Convert.toStrArray(ids)); + } + + @Override + public HrMaintenance selectMaintenanceById(Long maintenanceId) { + return maintenanceMapper.selectMaintenanceById(maintenanceId); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java new file mode 100644 index 0000000..c4c121f --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java @@ -0,0 +1,26 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrNestBattery; +import com.inspect.metadata.mqtt.mapper.HrNestBatteryMapper; +import com.inspect.metadata.mqtt.service.IHrNestBatteryService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrNestBatteryServiceImpl implements IHrNestBatteryService { + private final HrNestBatteryMapper nestBatteryMapper; + + @Override + public List selectNestBatteryList(HrNestBattery nestBattery) { + return nestBatteryMapper.selectNestBatteryList(nestBattery); + } + + @Override + public HrNestBattery selectNestBatteryByCode(String nestCode) { + return nestBatteryMapper.selectNestBatteryByCode(nestCode); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java new file mode 100644 index 0000000..75bc560 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java @@ -0,0 +1,32 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrNest; +import com.inspect.metadata.mqtt.mapper.HrNestMapper; +import com.inspect.metadata.mqtt.service.IHrNestService; +import com.inspect.metadata.mqtt.vo.HrHealthEvaluateVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrNestServiceImpl implements IHrNestService { + private final HrNestMapper hrNestMapper; + + @Override + public List selectNestList(HrNest nest) { + return hrNestMapper.selectNestList(nest); + } + + @Override + public HrNest selectNestByCode(String nestCode) { + return hrNestMapper.selectNestByCode(nestCode); + } + + @Override + public int deleteBeforeDaysAgo(int days) { + return hrNestMapper.deleteBeforeDaysAgo(days); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java new file mode 100644 index 0000000..39503dc --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java @@ -0,0 +1,26 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrTaskProcess; +import com.inspect.metadata.mqtt.mapper.HrTaskProcessMapper; +import com.inspect.metadata.mqtt.service.IHrTaskProcessService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class HrTaskProcessServiceImpl implements IHrTaskProcessService { + private final HrTaskProcessMapper taskProcessMapper; + + @Override + public List selectTaskProcessList(HrTaskProcess process) { + return taskProcessMapper.selectTaskProcessList(process); + } + + @Override + public Integer insertTaskProcess(HrTaskProcess taskProcess) { + return taskProcessMapper.insertTaskProcess(taskProcess); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java new file mode 100644 index 0000000..c528652 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java @@ -0,0 +1,30 @@ +package com.inspect.metadata.mqtt.service.impl; + +import com.inspect.metadata.mqtt.domain.HrWarn; +import com.inspect.metadata.mqtt.mapper.HrWarnMapper; +import com.inspect.metadata.mqtt.service.IHrWarnService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class IHrWarnServiceImpl implements IHrWarnService { + private final HrWarnMapper warnMapper; + + @Override + public List selectWarnList(HrWarn warn) { + return warnMapper.selectWarnList(warn); + } + + @Override + public Integer countWarnOneWeek(HrWarn hrWarn) { + return warnMapper.countWarnOneWeek(hrWarn); + } + + @Override + public Integer insertWarn(HrWarn warn) { + return warnMapper.insertWarn(warn); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java new file mode 100644 index 0000000..03d6286 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java @@ -0,0 +1,77 @@ +package com.inspect.metadata.mqtt.utils; + +import com.inspect.metadata.mqtt.domain.HrNest; +import com.inspect.metadata.mqtt.mapper.HrNestMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +@Service +public class HrMqttBatchProcessingService { + private final static Logger log = LoggerFactory.getLogger(HrMqttBatchProcessingService.class); + + @Autowired + private HrNestMapper hrNestMapper; + + private final List buffer = new ArrayList<>(); + private final Object lock = new Object(); + + private int batchSize = 20; + + private long flushInterval = 20; + + @PostConstruct + public void init() { + // 启动定时刷新线程 + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.scheduleAtFixedRate(this::flushBuffer, flushInterval, flushInterval, TimeUnit.SECONDS); + } + + public void addNest(HrNest nest) { + synchronized (lock) { + buffer.add(nest); + if (buffer.size() >= batchSize) { + flushBuffer(); + } + } + } + + private void flushBuffer() { + if (buffer.isEmpty()) { + return; + } + + List batchToSave; + synchronized (lock) { + batchToSave = new ArrayList<>(buffer); + buffer.clear(); + } + + try { + int affectedRows = hrNestMapper.batchInsert(batchToSave); + log.debug("批量插入 {} 条数据,成功 {} 条", batchToSave.size(), affectedRows); + System.out.println("批量插入" + affectedRows + "条数据"); + } catch (Exception e) { + log.error("批量插入数据失败,将数据重新放回缓冲区", e); + // 失败时重新加入缓冲区(可根据业务需求调整重试策略) + synchronized (lock) { + buffer.addAll(0, batchToSave); + } + } + } + + @PreDestroy + public void destroy() { + // 应用关闭前强制刷新缓冲区 + flushBuffer(); + } +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java new file mode 100644 index 0000000..4e419ce --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java @@ -0,0 +1,22 @@ +package com.inspect.metadata.mqtt.vo; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +// 健康评估对象 +public class HrHealthEvaluateVO { + private String name; + private String nestCode; + private Integer nestStatus; + private Integer nestLevel; + private Integer droneStatus; + private Integer droneLevel; + private Integer batteryStatus; + private Integer batteryLevel; + private Integer loadStatus; + private Integer loadLevel; +} diff --git a/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java new file mode 100644 index 0000000..868d975 --- /dev/null +++ b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java @@ -0,0 +1,33 @@ +package com.inspect.metadata.mqtt.vo; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class HrLifeDetectionVO { + private String name; + private String nestCode; + // 飞行次数 + private Integer flightCount; + // 使用寿命 + private Double serviceLife; + // 无人机寿命 + private Double droneLife = 4.5; + // 无人机剩余使用寿命 + private Double droneUsefulLife; + // 机巢寿命 + private Double nestLife = 5.0; + // 机巢剩余使用寿命 + private Double nestUsefulLife; + // 电池寿命 + private Double batteryLife = 3.0; + // 电池剩余使用寿命 + private Double batteryUsefulLife; + // 充电次数 + private Integer chargingTimes; + // 载荷寿命 + private Double loadLife = 5.0; + // 载荷剩余使用寿命 + private Double loadUsefulLife; +} diff --git a/inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml b/inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml index 97cfe9d..c5476ae 100644 --- a/inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml @@ -151,6 +151,11 @@ and type in ('1','2','3','13') + + + and type = '13' + + and type in ('1','2','3') diff --git a/inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml b/inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml index 96ba3cc..db4bec9 100644 --- a/inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml @@ -200,4 +200,16 @@ #{resultId} + + + + diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml new file mode 100644 index 0000000..5fafd7c --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + select drone_battery_id, + nest_code, + is_battery_connected, + is_cell_damaged, + is_low_cell_voltage_detected, + battery_current_consumption, + battery_number_of_discharges, + voltage, + power, + create_time, + update_time + from basedata_hr_drone_battery + + + insert into basedata_hr_drone_battery ( + nest_code, + + is_battery_connected, + + + is_cell_damaged, + + + is_low_cell_voltage_detected, + + + battery_current_consumption, + + + battery_number_of_discharges, + + + voltage, + + + power, + + create_time + ) values( + + #{nestCode}, + + + #{isBatteryConnected}, + + + #{isCellDamaged}, + + + #{isLowCellVoltageDetected}, + + + #{batteryCurrentConsumption}, + + + #{batteryNumberOfDisCharges}, + + + #{voltage}, + + + #{power}, + + sysdate() + ) + + + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml new file mode 100644 index 0000000..a2f5c58 --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select drone_id, + nest_code, + uav_onoffstate, + drone_base_head_direction, + drone_head_direction, + drone_alt, + drone_lat, + drone_lng, + drone_relative_alt, + drone_fly_in_second, + drone_fly_distance, + remain_flight_time_in_second, + drone_v_speed, + drone_h_speed, + flight_mode, + drone_pitch, + drone_roll, + drone_yaw, + satellite_count, + drone_uav_state, + gimbal_pitch, + gimbal_roll, + gimbal_yaw, + rtk_state, + flying_action, + zoom_ratio, + head_mode, + lens_mode, + loud_state, + lightconnect, + lightonoff, + lightflash, + lightluminance, + flight_count, + uavcontrolpower, + uavline, + remote, + create_time, + update_time + from basedata_hr_drone + + + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml new file mode 100644 index 0000000..150fbe4 --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + select maintenance_id, + nest_ids, + drone_ids, + content, + create_time, + update_time + from basedata_hr_maintenance + + + + + + + + insert into basedata_hr_maintenance ( + nest_ids, + drone_ids, + content, + create_time + )values( + #{nestIds}, + #{droneIds}, + #{content}, + sysdate() + ) + + + + update basedata_hr_maintenance + + nest_ids = #{nestIds}, + drone_ids = #{droneIds}, + content = #{content}, + update_time = sysdate() + + where maintenance_id = #{maintenanceId} + + + + delete from basedata_hr_maintenance where maintenance_id in + + #{maintenanceId} + + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml new file mode 100644 index 0000000..e54a262 --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + select nest_battery_id, + nest_code, + no, + power, + state, + temp, + exist, + create_time, + update_time + from basedata_hr_nest_battery + + + + + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml new file mode 100644 index 0000000..4eb07b1 --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select nest_id, + nest_code, + nest_state_constant, + drone_state_constant, + is_drone_connected, + is_remote_connected, + nest_battery_available, + charging_state, + nest_power, + nest_easy_lock_stus, + nest_fire_warn, + nest_auto_check, + nest_auto_check_err, + nest_power_mode, + nest_fire_bomb_num, + create_time, + update_time + from basedata_hr_nest + + + + + + + + insert into basedata_hr_nest (nest_code, nest_state_constant, drone_state_constant, is_drone_connected, + is_remote_connected, nest_battery_available, charging_state, nest_power, nest_easy_lock_stus, nest_fire_warn, + nest_auto_check, nest_auto_check_err, nest_power_mode, nest_fire_bomb_num, create_time) values + + (#{item.nestCode}, #{item.nestStateConstant}, #{item.droneStateConstant}, #{item.isDroneConnected}, + #{item.isRemoteConnected}, + #{item.nestBatteryAvailable}, #{item.chargingState}, #{item.nestPower}, #{item.nestEasyLockStus}, + #{item.nestFireWarn}, + #{item.nestAutoCheck}, #{item.nestAutoCheckErr}, #{item.nestPowerMode}, #{item.nestFireBombNum}, sysdate()) + + + + + delete from basedata_hr_nest where + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml new file mode 100644 index 0000000..5f80bee --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + select process_id, + nest_code, + content, + stepid, + result, + state, + time, + create_time, + update_time + from basedata_hr_task_process + + + + + + insert into basedata_hr_task_process(nest_code, content, stepid, result, state, time, create_time) + values (#{nestCode}, #{content}, #{stepid}, #{result}, #{state}, #{time}, sysdate()) + + + \ No newline at end of file diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml new file mode 100644 index 0000000..4d2ce62 --- /dev/null +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + select warn_id, + nest_code, + type, + err_code, + err_msg, + err_grade, + create_time, + update_time + from basedata_hr_warn + + + + + + + insert into basedata_hr_warn(nest_code, type, err_code, err_msg, err_grade, create_time) + values (#{nestCode}, #{type}, #{errCode}, #{errMsg}, #{errGrade}, sysdate()) + + + \ No newline at end of file