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 cc780a3..528c72a 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 @@ -72,7 +72,7 @@ public class HuaRuanMQTTServiceImpl { private void handleIncomingMessage(String topic, MqttMessage message) { try { String nestCode = getNestCode(topic); - if (nestCode.equals("")) { + if (nestCode.isEmpty()) { throw new Exception("nestCode is null"); } ObjectMapper objectMapper = new ObjectMapper(); @@ -101,7 +101,7 @@ public class HuaRuanMQTTServiceImpl { warn.setErrCode(nestWarn.getErrCode()); warn.setErrMsg(nestWarn.getErrMsg()); warn.setErrGrade(nestWarn.getErrGrade()); - warnService.insertWarn(warn); + warnService.handleWarn(warn); } } // 无人机基础信息 @@ -125,7 +125,7 @@ public class HuaRuanMQTTServiceImpl { warn.setErrCode(droneWarn.getErrCode()); warn.setErrMsg(droneWarn.getErrMsg()); warn.setErrGrade(droneWarn.getErrRank()); - warnService.insertWarn(warn); + warnService.handleWarn(warn); } // 巡检任务执行过程 else if (topic.endsWith("/thing/property/task_process")) { @@ -143,11 +143,11 @@ public class HuaRuanMQTTServiceImpl { taskProcessService.insertTaskProcess(taskProcess); } } catch (Exception e) { - log.error("MQTT handle error {}: {}", topic, e.getMessage()); + log.error("MQTT handle error, topic: {}", topic, e); } } - private static Pattern pattern = Pattern.compile("/sys/([^/]+)/.*"); + private final static Pattern pattern = Pattern.compile("/sys/([^/]+)/.*"); public String getNestCode(String topic) { Matcher matcher = pattern.matcher(topic); 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 index bb7b0eb..e4c477d 100644 --- 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 @@ -6,13 +6,11 @@ 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.boot.autoconfigure.condition.ConditionalOnProperty; 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; @@ -20,9 +18,8 @@ import java.util.Map; @RestController @RequestMapping("/hr/emergency") -@ConditionalOnProperty(name = "hua-ruan.mqtt.enable", havingValue = "true") public class HrEmergencyController extends BaseController { - @Resource + @Autowired(required = false) private MQTTUtils mqttUtils; @Autowired @@ -44,14 +41,12 @@ public class HrEmergencyController extends BaseController { 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); + executeMqttCommand(nestCode, "12000", "4", "/thing/service/nest/control"); return AjaxResult.success(); } catch (Exception e) { logger.error("[HR Emergency selfcheck] error :{}", e.getMessage()); @@ -63,10 +58,8 @@ public class HrEmergencyController extends BaseController { @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); + executeMqttCommand(nestCode, "12000", "2", "/thing/service/nest/control"); return AjaxResult.success(); } catch (Exception e) { logger.error("[HR Emergency lockdown] error :{}", e.getMessage()); @@ -77,10 +70,8 @@ public class HrEmergencyController extends BaseController { @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); + executeMqttCommand(nestCode, "12000", "3", "/thing/service/nest/control"); return AjaxResult.success(); } catch (Exception e) { logger.error("[HR Emergency release lockdown] error :{}", e.getMessage()); @@ -92,14 +83,23 @@ public class HrEmergencyController extends BaseController { @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); + executeMqttCommand(nestCode, "22004", "1", "/thing/service/drone/drone_control"); return AjaxResult.success(); } catch (Exception e) { logger.error("[HR Emergency landing] error :{}", e.getMessage()); return AjaxResult.error(); } } + + private void executeMqttCommand(String nestCode, String code, String command, String topicSuffix) throws InterruptedException { + // 模拟延迟 + Thread.sleep(2000); + if (mqttUtils == null) { + logger.warn("MQTT is disabled, skipping command execution for nestCode: {}", nestCode); + } else { + String content = String.format("{\"code\":\"%s\",\"command\":\"%s\"}", code, command); + mqttUtils.publish(1, "/sys/" + nestCode + topicSuffix, content); + } + } } 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 index 21b6c9a..5a28218 100644 --- 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 @@ -5,13 +5,16 @@ 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.HrTaskProcess; 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.IHrTaskProcessService; import com.inspect.metadata.mqtt.service.IHrWarnService; import com.inspect.metadata.mqtt.vo.HrHealthEvaluateVO; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; +@Slf4j @RestController @RequestMapping("/hr/healthEvaluate") public class HrHealthEvaluateController extends BaseController { @@ -32,21 +36,25 @@ public class HrHealthEvaluateController extends BaseController { @Autowired private IHrWarnService iHrWarnService; + @Autowired + private IHrTaskProcessService iHrTaskProcessService; + // 判断健康水平 private static HrHealthLevelEnum getHealthLevel(Integer count, Integer status) { - if (status == null || status != HrHealthStatusEnum.Normal.getCode()) { - return HrHealthLevelEnum.Poor; + log.info("count: {}, status: {}",count, status); + if (status == null || !status.equals(HrHealthStatusEnum.Normal.getCode())) { + return HrHealthLevelEnum.Good; } if (count == null || count < 0) { return HrHealthLevelEnum.Poor; } - if (count == 0) { + if (count < 5) { return HrHealthLevelEnum.Excellent; - } else if (count == 1) { + } else if (count == 10) { return HrHealthLevelEnum.Good; - } else if (count < 3) { + } else if (count < 20) { return HrHealthLevelEnum.Average; - } else if (count < 5) { + } else if (count < 30) { return HrHealthLevelEnum.Poor; } else { return HrHealthLevelEnum.Danger; @@ -64,35 +72,35 @@ public class HrHealthEvaluateController extends BaseController { 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()); + HrHealthEvaluateVO evaluate = new HrHealthEvaluateVO(patrolDeviceName, patrolDeviceCode, HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Average.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Average.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Average.getCode(), HrHealthStatusEnum.Abnormal.getCode(), HrHealthLevelEnum.Average.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 nestWarnCount = iHrWarnService.countWarnThreeDay(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); + // 统计三天内异常 + HrTaskProcess taskProcess = new HrTaskProcess(); + taskProcess.setNestCode(patrolDeviceCode); + taskProcess.setResult(2); + Integer droneWarnCount = iHrTaskProcessService.countWarnThreeDay(taskProcess); 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(); + Integer batteryLevel = batteryStatus.equals(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(); + Integer loadLevel = loadStatus.equals(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); 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 index f9ac3d4..bf7b4a4 100644 --- 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 @@ -31,11 +31,25 @@ public class HrLifeDetectionController extends BaseController { @Autowired private IHrDroneBatteryService droneBatteryService; + /** + * 计算两个时间之间的年数差 + */ + 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; + } + @GetMapping("/list") public AjaxResult list() { BasedataEqpBook eqpBook = new BasedataEqpBook(); eqpBook.setAreaName("华软无人机"); List eqpBooks = iBasedataEqpBookService.selectBasedataEqpBookList(eqpBook); + String[] patrolDeviceCodes = eqpBooks.stream().map(book -> book.getPatrolDeviceCode()).toArray(String[]::new); + List detectionList = new ArrayList<>(); for (BasedataEqpBook book : eqpBooks) { HrLifeDetectionVO vo = new HrLifeDetectionVO(); @@ -46,18 +60,21 @@ public class HrLifeDetectionController extends BaseController { 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); + if (createTime != null) { + LocalDateTime createTimeLocal = createTime.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDateTime(); + Double useYears = calculateYearsDifference(createTimeLocal, LocalDateTime.now()); + vo.setServiceLife(useYears); + } else { + vo.setServiceLife(0.0); + } // 飞行次数 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); + HrDroneBattery battery = droneBatteryService.selectDroneBatteryOne(patrolDeviceCode); + if (battery != null) { vo.setChargingTimes(battery.getBatteryNumberOfDisCharges()); } // 剩余使用寿命 @@ -70,20 +87,4 @@ public class HrLifeDetectionController extends BaseController { 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/HrWarnController.java b/inspect-metadata/src/main/java/com/inspect/metadata/mqtt/controller/HrWarnController.java index 29209f9..64debb1 100644 --- 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 @@ -3,9 +3,13 @@ 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.enums.HrDeviceEnum; +import com.inspect.metadata.mqtt.service.IHrTaskProcessService; import com.inspect.metadata.mqtt.service.IHrWarnService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +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; @@ -16,9 +20,14 @@ public class HrWarnController extends BaseController { private IHrWarnService warnService; @GetMapping("/list") - public TableDataInfo list(HrWarn Warn) { + public TableDataInfo list(HrWarn warn) { startPage(); - List list = warnService.selectWarnList(Warn); + List list = warnService.selectWarnList(warn); + list.forEach(item -> { + String device = item.getType().equals(HrDeviceEnum.Nest.getCode()) ? "机巢" : "无人机"; + String errMsg = device + ":" + item.getNestCode() + "," + item.getErrMsg(); + item.setErrMsg(errMsg); + }); return getDataTable(list); } } 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 index 3cfe7b7..ac8af3d 100644 --- 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 @@ -9,5 +9,7 @@ import java.util.List; public interface HrDroneBatteryMapper { int insertDroneBattery(HrDroneBattery droneBattery); - List selectDroneBatteryList(HrDroneBattery droneBattery); + List selectDroneBatteryList(String nestCode); + + HrDroneBattery selectDroneBatteryOne(String nestCode); } 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 index 91d21d6..ef1110c 100644 --- 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 @@ -10,4 +10,6 @@ public interface HrTaskProcessMapper { List selectTaskProcessList(HrTaskProcess process); Integer insertTaskProcess(HrTaskProcess taskProcess); + + Integer countWarnThreeDay(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 index 6911a8c..0770ee5 100644 --- 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 @@ -9,7 +9,11 @@ import java.util.List; public interface HrWarnMapper { List selectWarnList(HrWarn warn); - Integer countWarnOneWeek(HrWarn hrWarn); + Integer countWarnThreeDay(HrWarn hrWarn); Integer insertWarn(HrWarn warn); + + HrWarn selectWarn(HrWarn warn); + + Integer updateWarn(HrWarn warn); } 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 index 29bd7d0..9b046c5 100644 --- 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 @@ -5,7 +5,9 @@ import com.inspect.metadata.mqtt.domain.HrDroneBattery; import java.util.List; public interface IHrDroneBatteryService { - List selectDroneBatteryList(HrDroneBattery droneBattery); + List selectDroneBatteryList(String nestCode); int insertDroneBattery(HrDroneBattery droneBattery); + + HrDroneBattery selectDroneBatteryOne(String nestCode); } 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 index 7a508e8..1253897 100644 --- 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 @@ -8,4 +8,6 @@ public interface IHrTaskProcessService { List selectTaskProcessList(HrTaskProcess process); Integer insertTaskProcess(HrTaskProcess taskProcess); + + Integer countWarnThreeDay(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 index ab72e31..7b9e07f 100644 --- 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 @@ -7,7 +7,9 @@ import java.util.List; public interface IHrWarnService { List selectWarnList(HrWarn warn); // 统计最近一个月异常数量 - Integer countWarnOneWeek(HrWarn hrWarn); + Integer countWarnThreeDay(HrWarn hrWarn); Integer insertWarn(HrWarn warn); + + Integer handleWarn(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 index 44c4275..3fb6e69 100644 --- 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 @@ -13,12 +13,17 @@ import java.util.List; public class HrDroneBatteryServiceImpl implements IHrDroneBatteryService { private final HrDroneBatteryMapper droneBatteryMapper; @Override - public List selectDroneBatteryList(HrDroneBattery droneBattery) { - return droneBatteryMapper.selectDroneBatteryList(droneBattery); + public List selectDroneBatteryList(String nestCode) { + return droneBatteryMapper.selectDroneBatteryList(nestCode); } @Override public int insertDroneBattery(HrDroneBattery droneBattery) { return droneBatteryMapper.insertDroneBattery(droneBattery); } + + @Override + public HrDroneBattery selectDroneBatteryOne(String nestCode) { + return droneBatteryMapper.selectDroneBatteryOne(nestCode); + } } 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 index 39503dc..2a6230e 100644 --- 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 @@ -6,7 +6,6 @@ import com.inspect.metadata.mqtt.service.IHrTaskProcessService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.Collections; import java.util.List; @Service @@ -23,4 +22,9 @@ public class HrTaskProcessServiceImpl implements IHrTaskProcessService { public Integer insertTaskProcess(HrTaskProcess taskProcess) { return taskProcessMapper.insertTaskProcess(taskProcess); } + + @Override + public Integer countWarnThreeDay(HrTaskProcess taskProcess) { + return taskProcessMapper.countWarnThreeDay(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 index c528652..aab8db7 100644 --- 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 @@ -4,10 +4,13 @@ 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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.time.Instant; import java.util.List; +@Slf4j @Service @RequiredArgsConstructor public class IHrWarnServiceImpl implements IHrWarnService { @@ -19,12 +22,25 @@ public class IHrWarnServiceImpl implements IHrWarnService { } @Override - public Integer countWarnOneWeek(HrWarn hrWarn) { - return warnMapper.countWarnOneWeek(hrWarn); + public Integer countWarnThreeDay(HrWarn hrWarn) { + return warnMapper.countWarnThreeDay(hrWarn); } @Override public Integer insertWarn(HrWarn warn) { return warnMapper.insertWarn(warn); } + + @Override + public Integer handleWarn(HrWarn warn) { + log.info("warn: {}", warn); + HrWarn activeWarn = warnMapper.selectWarn(warn); + log.info("activeWarn: {}", activeWarn); + // 五分钟内连续上报归为同一条记录更新,否则新增一条记录 + if (activeWarn.getUpdateTime() != null && Instant.now().isAfter(activeWarn.getUpdateTime().toInstant().plusSeconds(5 * 60))) { + return warnMapper.insertWarn(warn); + } else { + return warnMapper.updateWarn(activeWarn); + } + } } diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml index 5fafd7c..3fe34d1 100644 --- a/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrDroneBatteryMapper.xml @@ -89,6 +89,14 @@ and nest_code = #{nestCode} - order by create_time desc + order by create_time + + + \ 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 index 5f80bee..804c904 100644 --- a/inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrTaskProcessMapper.xml @@ -43,6 +43,15 @@ order by create_time desc + + insert into basedata_hr_task_process(nest_code, content, stepid, result, state, time, create_time) values (#{nestCode}, #{content}, #{stepid}, #{result}, #{state}, #{time}, sysdate()) diff --git a/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml b/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml index 4d2ce62..780368f 100644 --- a/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml +++ b/inspect-metadata/src/main/resources/mapper/mqtt/HrWarnMapper.xml @@ -23,6 +23,17 @@ update_time from basedata_hr_warn + + update basedata_hr_warn + + nest_code = #{nestCode}, + type = #{type}, + err_code = #{errCode}, + err_msg = #{errMsg}, + err_grade = #{errGrade}, + + where warn_id = #{warnId} + - select count(1) from basedata_hr_warn and type = #{type} and nest_code = #{nestCode} - and create_time >= DATE_SUB(CURDATE(),INTERVAL 1 WEEK) + and update_time >= DATE_SUB(CURDATE(),INTERVAL 3 DAY) + + +