| @ -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(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| } | |||||
| @ -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)); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| } | |||||
| @ -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 + '\'' + '}'; | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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); | |||||
| } | |||||
| } | |||||
| @ -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(); | |||||
| } | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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; | |||||
| } | |||||
| @ -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> | |||||
| @ -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> | |||||
| @ -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') >= date_format(#{beginTime},'%y%m%d') | |||||
| </if> | |||||
| <if test="endTime != null and endTime != ''"><!-- 结束时间检索 --> | |||||
| and date_format(create_time,'%y%m%d') <= 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> | |||||
| @ -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> | |||||
| @ -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> | |||||
| @ -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') >= date_format(#{beginTime},'%y%m%d') | |||||
| </if> | |||||
| <if test="endTime != null and endTime != ''"><!-- 结束时间检索 --> | |||||
| and date_format(create_time,'%y%m%d') <= 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> | |||||
| @ -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') >= date_format(#{beginTime},'%y%m%d') | |||||
| </if> | |||||
| <if test="endTime != null and endTime != ''"><!-- 结束时间检索 --> | |||||
| and date_format(create_time,'%y%m%d') <= 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> | |||||