Browse Source

feat: 新增华软MQTT无机人运检平台相关接口

master
yinhuaiwei 1 month ago
parent
commit
5f4b1e5bf4
58 changed files with 1975 additions and 5 deletions
  1. +4
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java
  2. +5
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java
  3. +5
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java
  4. +11
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java
  5. +115
    -5
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java
  6. +103
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java
  7. +104
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java
  8. +31
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java
  9. +89
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java
  10. +50
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java
  11. +24
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java
  12. +82
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java
  13. +26
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java
  14. +27
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java
  15. +24
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java
  16. +24
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java
  17. +22
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java
  18. +22
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java
  19. +22
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java
  20. +21
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java
  21. +17
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java
  22. +20
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java
  23. +18
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java
  24. +60
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java
  25. +13
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java
  26. +11
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java
  27. +19
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java
  28. +13
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java
  29. +17
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java
  30. +13
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java
  31. +15
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java
  32. +23
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java
  33. +11
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java
  34. +9
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java
  35. +17
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java
  36. +11
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java
  37. +14
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java
  38. +11
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java
  39. +13
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java
  40. +24
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java
  41. +20
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java
  42. +41
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java
  43. +26
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java
  44. +32
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java
  45. +26
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java
  46. +30
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java
  47. +77
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java
  48. +22
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java
  49. +33
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java
  50. +5
    -0
      inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml
  51. +12
    -0
      inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml
  52. +94
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml
  53. +95
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml
  54. +73
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml
  55. +44
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml
  56. +79
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml
  57. +51
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml
  58. +55
    -0
      inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml

+ 4
- 0
inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/service/impl/BasedataEqpBookServiceImpl.java View File

@ -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<BasedataEqpBook> allEqpbookList = this.basedataEqpbookMapper.selectBasedataEqpBookList(basedataEqpBookQuery);
List<Long> onLineIdArray = new ArrayList<>();


+ 5
- 0
inspect-metadata/src/main/java/com/inspect/metadata/montdata/mapper/BasedataMontTaskResultMapper.java View File

@ -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);
}

+ 5
- 0
inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/IBasedataMontTaskResultService.java View File

@ -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);
}

+ 11
- 0
inspect-metadata/src/main/java/com/inspect/metadata/montdata/service/impl/BasedataMontTaskResultServiceImpl.java View File

@ -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);
}
}

+ 115
- 5
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/HuaRuanMQTTServiceImpl.java View File

@ -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<HrNestWarn> nestWarnList = objectMapper.readValue(jsonStr, new TypeReference<List<HrNestWarn>>() {
});
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 "";
}
}

+ 103
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrEmergencyController.java View File

@ -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<BasedataEqpBook> eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook);
List<Map<String, String>> list = new ArrayList<>();
for (BasedataEqpBook book : eqpBooks) {
Map<String, String> 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();
}
}
}

+ 104
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrHealthEvaluateController.java View File

@ -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<BasedataEqpBook> eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook);
List<HrHealthEvaluateVO> 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);
}
}

+ 31
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrInspectionController.java View File

@ -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<HrTaskProcess> list = iHrTaskProcessService.selectTaskProcessList(process);
for(HrTaskProcess p:list) {
p.setAdvice(HrTaskStepEnum.getDescription(p.getStepid()));
}
return getDataTable(list);
}
}

+ 89
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrLifeDetectionController.java View File

@ -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<BasedataEqpBook> eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook);
List<HrLifeDetectionVO> 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<HrDroneBattery> 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;
}
}

+ 50
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrMaintenanceController.java View File

@ -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<HrMaintenance> 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));
}
}

+ 24
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java View File

@ -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<HrWarn> list = warnService.selectWarnList(Warn);
return getDataTable(list);
}
}

+ 82
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDrone.java View File

@ -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;
}

+ 26
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneBattery.java View File

@ -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;
}

+ 27
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrDroneWarn.java View File

@ -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;
}

+ 24
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrMaintenance.java View File

@ -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;
}

+ 24
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNest.java View File

@ -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;
}

+ 22
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestBattery.java View File

@ -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;
}

+ 22
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrNestWarn.java View File

@ -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;
}

+ 22
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrTaskProcess.java View File

@ -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;
}

+ 21
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/domain/HrWarn.java View File

@ -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;
}

+ 17
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrDeviceEnum.java View File

@ -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;
}
}

+ 20
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthLevelEnum.java View File

@ -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;
}
}

+ 18
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrHealthStatusEnum.java View File

@ -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;
}
}

+ 60
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/enums/HrTaskStepEnum.java View File

@ -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 + '\'' + '}';
}
}

+ 13
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneBatteryMapper.java View File

@ -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<HrDroneBattery> selectDroneBatteryList(HrDroneBattery droneBattery);
}

+ 11
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrDroneMapper.java View File

@ -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<HrDrone> selectDroneList(HrDrone hrDrone);
}

+ 19
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrMaintenanceMapper.java View File

@ -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<HrMaintenance> selectMaintenanceList(HrMaintenance maintenance);
int insertMaintenance(HrMaintenance maintenance);
int updateMaintenance(HrMaintenance maintenance);
int deleteMaintenanceByIds(String[] ids);
HrMaintenance selectMaintenanceById(Long maintenanceId);
}

+ 13
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestBatteryMapper.java View File

@ -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<HrNestBattery> selectNestBatteryList(HrNestBattery nestBattery);
HrNestBattery selectNestBatteryByCode(String nestCode);
}

+ 17
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrNestMapper.java View File

@ -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<HrNest> selectNestList(HrNest nest);
int batchInsert(List<HrNest> batchToSave);
HrNest selectNestByCode(String nestCode);
int deleteBeforeDaysAgo(int i);
}

+ 13
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrTaskProcessMapper.java View File

@ -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<HrTaskProcess> selectTaskProcessList(HrTaskProcess process);
Integer insertTaskProcess(HrTaskProcess taskProcess);
}

+ 15
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/mapper/HrWarnMapper.java View File

@ -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<HrWarn> selectWarnList(HrWarn warn);
Integer countWarnOneWeek(HrWarn hrWarn);
Integer insertWarn(HrWarn warn);
}

+ 23
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/HrTask.java View File

@ -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);
}
}

+ 11
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneBatteryService.java View File

@ -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<HrDroneBattery> selectDroneBatteryList(HrDroneBattery droneBattery);
int insertDroneBattery(HrDroneBattery droneBattery);
}

+ 9
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrDroneService.java View File

@ -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<HrDrone> selectDroneList(HrDrone hrDrone);
}

+ 17
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrMaintenanceService.java View File

@ -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<HrMaintenance> selectMaintenanceList(HrMaintenance maintenance);
int insertMaintenance(HrMaintenance maintenance);
int updateMaintenance(HrMaintenance maintenance);
int deleteMaintenanceByIds(String ids);
HrMaintenance selectMaintenanceById(Long maintenanceId);
}

+ 11
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestBatteryService.java View File

@ -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<HrNestBattery> selectNestBatteryList(HrNestBattery nestBattery);
HrNestBattery selectNestBatteryByCode(String nestCode);
}

+ 14
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrNestService.java View File

@ -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<HrNest> selectNestList(HrNest hrNest);
HrNest selectNestByCode(String nestCode);
int deleteBeforeDaysAgo(int i);
}

+ 11
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrTaskProcessService.java View File

@ -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<HrTaskProcess> selectTaskProcessList(HrTaskProcess process);
Integer insertTaskProcess(HrTaskProcess taskProcess);
}

+ 13
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/IHrWarnService.java View File

@ -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<HrWarn> selectWarnList(HrWarn warn);
// 统计最近一个月异常数量
Integer countWarnOneWeek(HrWarn hrWarn);
Integer insertWarn(HrWarn warn);
}

+ 24
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneBatteryServiceImpl.java View File

@ -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<HrDroneBattery> selectDroneBatteryList(HrDroneBattery droneBattery) {
return droneBatteryMapper.selectDroneBatteryList(droneBattery);
}
@Override
public int insertDroneBattery(HrDroneBattery droneBattery) {
return droneBatteryMapper.insertDroneBattery(droneBattery);
}
}

+ 20
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrDroneServiceImpl.java View File

@ -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<HrDrone> selectDroneList(HrDrone hrDrone) {
return droneMapper.selectDroneList(hrDrone);
}
}

+ 41
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrMaintenanceServiceImpl.java View File

@ -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<HrMaintenance> 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);
}
}

+ 26
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestBatteryServiceImpl.java View File

@ -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<HrNestBattery> selectNestBatteryList(HrNestBattery nestBattery) {
return nestBatteryMapper.selectNestBatteryList(nestBattery);
}
@Override
public HrNestBattery selectNestBatteryByCode(String nestCode) {
return nestBatteryMapper.selectNestBatteryByCode(nestCode);
}
}

+ 32
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrNestServiceImpl.java View File

@ -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<HrNest> 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);
}
}

+ 26
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/HrTaskProcessServiceImpl.java View File

@ -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<HrTaskProcess> selectTaskProcessList(HrTaskProcess process) {
return taskProcessMapper.selectTaskProcessList(process);
}
@Override
public Integer insertTaskProcess(HrTaskProcess taskProcess) {
return taskProcessMapper.insertTaskProcess(taskProcess);
}
}

+ 30
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/service/impl/IHrWarnServiceImpl.java View File

@ -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<HrWarn> 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);
}
}

+ 77
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/utils/HrMqttBatchProcessingService.java View File

@ -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<HrNest> 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<HrNest> 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();
}
}

+ 22
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrHealthEvaluateVO.java View File

@ -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;
}

+ 33
- 0
inspect-metadata/src/main/java/com/inspect/metadata/mqtt/vo/HrLifeDetectionVO.java View File

@ -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;
}

+ 5
- 0
inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml View File

@ -151,6 +151,11 @@
and type in ('1','2','3','13')
</if>
</if>
<if test="params != null">
<if test="params.patrolDeviceTypeFlag != null and params.patrolDeviceTypeFlag != '' and params.patrolDeviceTypeFlag == 'uav'">
and type = '13'
</if>
</if>
<if test="params != null">
<if test="params.robotFlag != null and params.robotFlag == '1'">
and type in ('1','2','3')


+ 12
- 0
inspect-metadata/src/main/resources/mapper/montdata/BasedataMontTaskResultMapper.xml View File

@ -200,4 +200,16 @@
#{resultId}
</foreach>
</delete>
<select id="countTimesByPatrolDeviceCode" resultType="java.lang.Integer">
select count(distinct task_patrolled_id)
from basedata_mont_taskresult
where patrol_device_code = #{patrolDeviceCode}
</select>
<select id="selectMinCreateTimeByPatrolDeviceCode" resultType="java.util.Date">
select min(create_time)
from basedata_mont_taskresult
where patrol_device_code = #{patrolDeviceCode}
</select>
</mapper>

+ 94
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrDroneBatteryMapper">
<resultMap id="HrDroneBatteryResult" type="com.inspect.metadata.mqtt.domain.HrDroneBattery">
<id property="droneBatteryId" column="drone_battery_id"/>
<result property="nestCode" column="nest_code"/>
<result property="isBatteryConnected" column="is_battery_connected" />
<result property="isCellDamaged" column="is_cell_damaged" />
<result property="isLowCellVoltageDetected" column="is_low_cell_voltage_detected" />
<result property="batteryCurrentConsumption" column="battery_current_consumption" />
<result property="batteryNumberOfDisCharges" column="battery_number_of_discharges" />
<result property="voltage" column="voltage" />
<result property="power" column="power" />
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectHrDroneBatteryVo">
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
</sql>
<insert id="insertDroneBattery">
insert into basedata_hr_drone_battery (
<if test="nestCode != null">nest_code,
</if>
<if test="isBatteryConnected != null">is_battery_connected,
</if>
<if test="isCellDamaged != null">
is_cell_damaged,
</if>
<if test="isLowCellVoltageDetected != null">
is_low_cell_voltage_detected,
</if>
<if test="batteryCurrentConsumption != null">
battery_current_consumption,
</if>
<if test="batteryNumberOfDisCharges != null">
battery_number_of_discharges,
</if>
<if test="voltage != null">
voltage,
</if>
<if test="power != null">
power,
</if>
create_time
) values(
<if test="nestCode != null">
#{nestCode},
</if>
<if test="isBatteryConnected != null">
#{isBatteryConnected},
</if>
<if test="isCellDamaged != null">
#{isCellDamaged},
</if>
<if test="isLowCellVoltageDetected != null">
#{isLowCellVoltageDetected},
</if>
<if test="batteryCurrentConsumption != null">
#{batteryCurrentConsumption},
</if>
<if test="batteryNumberOfDisCharges != null">
#{batteryNumberOfDisCharges},
</if>
<if test="voltage != null">
#{voltage},
</if>
<if test="power != null">
#{power},
</if>
sysdate()
)
</insert>
<select id="selectDroneBatteryList" parameterType="com.inspect.metadata.mqtt.domain.HrDroneBattery"
resultMap="HrDroneBatteryResult">
<include refid="selectHrDroneBatteryVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
</where>
order by create_time desc
</select>
</mapper>

+ 95
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrDroneMapper.xml View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrDroneMapper">
<resultMap id="BaseResultMap" type="com.inspect.metadata.mqtt.domain.HrDrone">
<id property="droneId" column="drone_id"/>
<result property="nestCode" column="nest_code"/>
<result property="UAVOnoffstate" column="uav_onoffstate"/>
<result property="droneBaseHeadDirection" column="drone_base_head_direction"/>
<result property="droneHeadDirection" column="drone_head_direction"/>
<result property="droneAlt" column="drone_alt"/>
<result property="droneLat" column="drone_lat"/>
<result property="droneLng" column="drone_lng"/>
<result property="droneRelativeAlt" column="drone_relative_alt"/>
<result property="droneFlyInSecond" column="drone_fly_in_second"/>
<result property="droneFlyDistance" column="drone_fly_distance"/>
<result property="remainFlightTimeInSecond" column="remain_flight_time_in_second"/>
<result property="droneVSpeed" column="drone_v_speed"/>
<result property="droneHSpeed" column="drone_h_speed"/>
<result property="flightMode" column="flight_mode"/>
<result property="dronePitch" column="drone_pitch"/>
<result property="droneRoll" column="drone_roll"/>
<result property="droneYaw" column="drone_yaw"/>
<result property="satelliteCount" column="satellite_count"/>
<result property="droneUavState" column="drone_uav_state"/>
<result property="gimbalPitch" column="gimbal_pitch"/>
<result property="gimbalRoll" column="gimbal_roll"/>
<result property="gimbalYaw" column="gimbal_yaw"/>
<result property="rtkState" column="rtk_state"/>
<result property="flyingAction" column="flying_action"/>
<result property="zoomRatio" column="zoom_ratio"/>
<result property="headMode" column="head_mode"/>
<result property="lensMode" column="lens_mode"/>
<result property="loudState" column="loud_state"/>
<result property="lightconnect" column="lightconnect"/>
<result property="lightonoff" column="lightonoff"/>
<result property="lightflash" column="lightflash"/>
<result property="lightluminance" column="lightluminance"/>
<result property="flightCount" column="flight_count"/>
<result property="uavcontrolpower" column="uavcontrolpower"/>
<result property="uavline" column="uavline"/>
<result property="remote" column="remote"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectDroneVo">
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
</sql>
<select id="selectDroneList" resultMap="BaseResultMap">
<include refid="selectDroneVo" />
<where>
<if test="nestCode != null ">and nestCode = #{nestCode}</if>
</where>
</select>
</mapper>

+ 73
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrMaintenanceMapper.xml View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrMaintenanceMapper">
<resultMap id="BaseResultMap" type="com.inspect.metadata.mqtt.domain.HrMaintenance">
<id property="maintenanceId" column="maintenance_id"/>
<result property="nestIds" column="nest_ids"/>
<result property="droneIds" column="drone_ids"/>
<result property="content" column="content"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectMaintenanceVo">
select maintenance_id,
nest_ids,
drone_ids,
content,
create_time,
update_time
from basedata_hr_maintenance
</sql>
<select id="selectMaintenanceList" parameterType="com.inspect.metadata.mqtt.domain.HrMaintenance"
resultMap="BaseResultMap">
<include refid="selectMaintenanceVo"/>
<where>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
</where>
order by create_time desc
</select>
<select id="selectMaintenanceById" parameterType="Long" resultMap="BaseResultMap">
<include refid="selectMaintenanceVo"/>
where maintenance_id = #{maintenanceId}
</select>
<insert id="insertMaintenance" parameterType="com.inspect.metadata.mqtt.domain.HrMaintenance">
insert into basedata_hr_maintenance (
<if test="nestIds != null and nestIds != '' ">nest_ids,</if>
<if test="droneIds != null and droneIds != '' ">drone_ids,</if>
<if test="content != null and content != '' ">content,</if>
create_time
)values(
<if test="nestIds != null and nestIds != '' ">#{nestIds},</if>
<if test="droneIds != null and droneIds != '' ">#{droneIds},</if>
<if test="content != null and content != '' ">#{content},</if>
sysdate()
)
</insert>
<update id="updateMaintenance" parameterType="com.inspect.metadata.mqtt.domain.HrMaintenance">
update basedata_hr_maintenance
<set>
<if test="nestIds != null and nestIds != '' ">nest_ids = #{nestIds},</if>
<if test="droneIds != null and droneIds != '' ">drone_ids = #{droneIds},</if>
<if test="content != null and content != '' ">content = #{content},</if>
update_time = sysdate()
</set>
where maintenance_id = #{maintenanceId}
</update>
<delete id="deleteMaintenanceByIds" parameterType="String">
delete from basedata_hr_maintenance where maintenance_id in
<foreach item="maintenanceId" collection="array" open="(" separator="," close=")">
#{maintenanceId}
</foreach>
</delete>
</mapper>

+ 44
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrNestBatteryMapper.xml View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrNestBatteryMapper">
<resultMap id="HrNestBatteryResult" type="com.inspect.metadata.mqtt.domain.HrNestBattery">
<id property="nestBatteryId" column="nest_battery_id"/>
<result property="nestCode" column="nest_code"/>
<result property="no" column="no"/>
<result property="power" column="power"/>
<result property="state" column="state"/>
<result property="temp" column="temp"/>
<result property="exist" column="exist"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectHrNestBatteryVo">
select nest_battery_id,
nest_code,
no,
power,
state,
temp,
exist,
create_time,
update_time
from basedata_hr_nest_battery
</sql>
<select id="selectNestBatteryList" parameterType="com.inspect.metadata.mqtt.domain.HrNestBattery"
resultMap="HrNestBatteryResult">
<include refid="selectHrNestBatteryVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
</where>
</select>
<select id="selectNestBatteryByCode" resultType="com.inspect.metadata.mqtt.domain.HrNestBattery">
<include refid="selectHrNestBatteryVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
</where>
order by create_time desc
</select>
</mapper>

+ 79
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrNestMapper.xml View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrNestMapper">
<resultMap id="HrNestResult" type="com.inspect.metadata.mqtt.domain.HrNest">
<id property="nestId" column="nest_id"/>
<result property="nestCode" column="nest_code"/>
<result property="nestStateConstant" column="nest_state_constant"/>
<result property="droneStateConstant" column="drone_state_constant"/>
<result property="isDroneConnected" column="is_drone_connected"/>
<result property="isRemoteConnected" column="is_remote_connected"/>
<result property="nestBatteryAvailable" column="nest_battery_available"/>
<result property="chargingState" column="charging_state"/>
<result property="nestPower" column="nest_power"/>
<result property="nestEasyLockStus" column="nest_easy_lock_stus"/>
<result property="nestFireWarn" column="nest_fire_warn"/>
<result property="nestAutoCheck" column="nest_auto_check"/>
<result property="nestAutoCheckErr" column="nest_auto_check_err"/>
<result property="nestPowerMode" column="nest_power_mode"/>
<result property="nestFireBombNum" column="nest_fire_bomb_num"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectHrNestVo">
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
</sql>
<select id="selectNestList" parameterType="com.inspect.metadata.mqtt.domain.HrNest"
resultMap="HrNestResult">
<include refid="selectHrNestVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
</where>
order by create_time desc
</select>
<select id="selectNestByCode" parameterType="com.inspect.metadata.mqtt.domain.HrNest"
resultMap="HrNestResult">
<include refid="selectHrNestVo"/>
WHERE nest_code = #{nestCode}
ORDER BY create_time DESC
LIMIT 1
</select>
<insert id="batchInsert" parameterType="java.util.List">
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
<foreach collection="list" item="item" separator=",">
(#{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())
</foreach>
</insert>
<delete id="deleteBeforeDaysAgo" parameterType="java.lang.Integer">
delete from basedata_hr_nest where <![CDATA[ create_time < date_sub(now(), INTERVAL #{days} DAY) ]]>
</delete>
</mapper>

+ 51
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrTaskProcessMapper">
<resultMap id="HrTaskProcessResult" type="com.inspect.metadata.mqtt.domain.HrTaskProcess">
<id property="processId" column="process_id"/>
<result property="nestCode" column="nest_code"/>
<result property="content" column="content"/>
<result property="stepid" column="stepid"/>
<result property="result" column="result"/>
<result property="state" column="state"/>
<result property="time" column="time"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectHrTaskProcessVo">
select process_id,
nest_code,
content,
stepid,
result,
state,
time,
create_time,
update_time
from basedata_hr_task_process
</sql>
<select id="selectTaskProcessList" parameterType="com.inspect.metadata.mqtt.domain.HrTaskProcess"
resultMap="HrTaskProcessResult">
<include refid="selectHrTaskProcessVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
<if test="result != null ">and result = #{result}</if>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
</where>
order by create_time desc
</select>
<insert id="insertTaskProcess">
insert into basedata_hr_task_process(nest_code, content, stepid, result, state, time, create_time)
values (#{nestCode}, #{content}, #{stepid}, #{result}, #{state}, #{time}, sysdate())
</insert>
</mapper>

+ 55
- 0
inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.inspect.metadata.mqtt.mapper.HrWarnMapper">
<resultMap id="BaseResultMap" type="com.inspect.metadata.mqtt.domain.HrWarn">
<id column="warn_id" property="warnId"/>
<result column="nest_code" property="nestCode"/>
<result column="type" property="type"/>
<result column="err_code" property="errCode"/>
<result column="err_msg" property="errMsg"/>
<result column="err_grade" property="errGrade"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<sql id="selectHrWarnVo">
select warn_id,
nest_code,
type,
err_code,
err_msg,
err_grade,
create_time,
update_time
from basedata_hr_warn
</sql>
<select id="selectWarnList" parameterType="com.inspect.metadata.mqtt.domain.HrWarn"
resultMap="BaseResultMap">
<include refid="selectHrWarnVo"/>
<where>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
and date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
</if>
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
and date_format(create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
</if>
</where>
order by create_time desc
</select>
<select id="countWarnOneWeek" resultType="java.lang.Integer">
select count(1) from basedata_hr_warn
<where>
<if test="type != null ">and type = #{type}</if>
<if test="nestCode != null ">and nest_code = #{nestCode}</if>
</where>
and create_time >= DATE_SUB(CURDATE(),INTERVAL 1 WEEK)
</select>
<insert id="insertWarn">
insert into basedata_hr_warn(nest_code, type, err_code, err_msg, err_grade, create_time)
values (#{nestCode}, #{type}, #{errCode}, #{errMsg}, #{errGrade}, sysdate())
</insert>
</mapper>

Loading…
Cancel
Save