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