From 342038226e91895773aaf2cb33c7f82e9b4d374c Mon Sep 17 00:00:00 2001 From: cbs <18617195505@163.com> Date: Thu, 24 Apr 2025 17:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9C=E9=81=A5=E5=BC=82=E5=B8=B8=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/task/RemoteTaskController.java | 26 ++++++---- .../service/task/RemoteTaskService.java | 6 +++ .../service/task/RemoteTaskServiceImpl.java | 14 ++++++ .../api/remote/RemoteExceptionTaskApi.java | 10 +++- .../dto/RemoteExceptionTaskDetailDTO.java | 24 +++++++++ .../api/remote/dto/RemoteTaskQueryDTO.java | 15 ++++++ .../remote/RemoteExceptionTaskApiImpl.java | 14 ++++++ .../api/robot/RobotReactiveStatusApiImpl.java | 23 +++++++++ .../api/robot/RobotTaskStatusApiImpl.java | 3 ++ .../admin/robot/vo/RobotWarnMsgPageReqVO.java | 6 +++ .../admin/robot/vo/RobotWarnMsgRespVO.java | 8 +++ .../admin/robot/vo/RobotWarnMsgSaveReqVO.java | 5 ++ .../dal/dataobject/robot/RobotWarnMsgDO.java | 10 ++++ .../mysql/robot/RobotTaskDetailMapper.java | 10 ++++ .../dal/mysql/robot/RobotWarnMsgMapper.java | 8 +++ .../service/robot/RobotTaskDetailService.java | 9 ++++ .../robot/RobotTaskDetailServiceImpl.java | 50 +++++++++++++++++++ .../service/robot/RobotTaskServiceImpl.java | 2 + .../service/robot/RobotWarnMsgService.java | 2 + .../robot/RobotWarnMsgServiceImpl.java | 11 ++++ .../mapper/robot/RobotTaskDetailMapper.xml | 29 +++++++++++ .../mapper/robot/RobotWarnMsgMapper.xml | 23 +++++++++ 22 files changed, 298 insertions(+), 10 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskDetailDTO.java create mode 100644 yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskQueryDTO.java diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/controller/admin/task/RemoteTaskController.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/controller/admin/task/RemoteTaskController.java index e384b49cc..f24176534 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/controller/admin/task/RemoteTaskController.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/controller/admin/task/RemoteTaskController.java @@ -3,8 +3,10 @@ package cn.iocoder.yudao.module.remote.controller.admin.task; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.remote.service.task.RemoteTaskService; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 远遥任务") @@ -26,20 +30,24 @@ public class RemoteTaskController { @Autowired private RemoteTaskService remoteTaskService; - @PostMapping("/getExceptionTask") + /*@PostMapping("/getExceptionTask") @Operation(summary = "获取异常任务列表") @PreAuthorize("@ss.hasPermission('remote:task:getExceptionTask')") public CommonResult> getExceptionTask(@RequestBody RemoteTaskDTO remoteTaskDTO) { PageResult list = remoteTaskService.getExceptionTask(remoteTaskDTO); return success(list); - } - - /*@PostMapping("/setRemoteTaskDone") - @Operation(summary = "获取异常任务列表") - @PreAuthorize("@ss.hasPermission('remote:task:getExceptionTask')") - public CommonResult setRemoteTaskDone(@RequestBody RemoteTaskDTO remoteTaskDTO) { - remoteTaskService.setRemoteTaskDone(remoteTaskDTO); - return success(true); }*/ + @PostMapping("/getExceptionTaskDetail") + @Operation(summary = "获取异常车辆任务列表") + @PreAuthorize("@ss.hasPermission('remote:task:getExceptionTaskDetail')") + public CommonResult> getExceptionTaskDetail(@RequestBody RemoteTaskQueryDTO remoteTaskQuery) { + PageResult list = remoteTaskService.getExceptionTaskDetail(remoteTaskQuery); + return success(list); + } + + + + + } diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskService.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskService.java index abec27c50..32dc780e9 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskService.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskService.java @@ -1,10 +1,16 @@ package cn.iocoder.yudao.module.remote.service.task; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; + +import java.util.List; public interface RemoteTaskService { PageResult getExceptionTask(RemoteTaskDTO remoteTaskDTO); + + PageResult getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery); } diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskServiceImpl.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskServiceImpl.java index ab80a3a6d..2debb793d 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskServiceImpl.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskServiceImpl.java @@ -2,12 +2,16 @@ package cn.iocoder.yudao.module.remote.service.task; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.api.remote.RemoteExceptionTaskApi; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; @Slf4j @Service @@ -25,4 +29,14 @@ public class RemoteTaskServiceImpl implements RemoteTaskService { public PageResult getExceptionTask(RemoteTaskDTO remoteTaskDTO) { return remoteExceptionTaskApi.getExceptionTask(remoteTaskDTO); } + + /** + * 远遥查询异常的车辆 + * @param remoteTaskQuery + * @return + */ + @Override + public PageResult getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery) { + return remoteExceptionTaskApi.getExceptionTaskDetail(remoteTaskQuery); + } } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApi.java index f9da862dd..b375b6a05 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApi.java @@ -1,8 +1,10 @@ package cn.iocoder.yudao.module.system.api.remote; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import cn.iocoder.yudao.module.system.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -11,6 +13,8 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; + @FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = @Tag(name = "RPC 服务 - 远遥任务相关") public interface RemoteExceptionTaskApi { @@ -22,6 +26,10 @@ public interface RemoteExceptionTaskApi { * @return */ @PostMapping(PREFIX + "/getExceptionTask") - @Operation(summary = "保存IP和端口") + @Operation(summary = "远遥查看异常列表") PageResult getExceptionTask(@RequestBody RemoteTaskDTO remoteTaskDTO); + + @PostMapping(PREFIX + "/getExceptionTaskDetail") + @Operation(summary = "远遥查询异常的车辆") + PageResult getExceptionTaskDetail(@RequestBody RemoteTaskQueryDTO remoteTaskQuery); } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskDetailDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskDetailDTO.java new file mode 100644 index 000000000..93e9fdb3d --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskDetailDTO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.system.api.remote.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class RemoteExceptionTaskDetailDTO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26224") + private Long id; + + @Schema(description = "车辆编号") + private String robotNo ; + + @Schema(description = "图片附件RUL", example = "https://www.iocoder.cn") + private String url; + + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "异常信息") + private String warnMsg; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskQueryDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskQueryDTO.java new file mode 100644 index 000000000..ffff73426 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskQueryDTO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.system.api.remote.dto; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class RemoteTaskQueryDTO extends PageParam { + + @Schema(description = "车辆编号") + private String robotNo ; + + @Schema(description = "任务号") + private String taskNo; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApiImpl.java index 4227a4a9f..c6ee0cf5a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApiImpl.java @@ -1,14 +1,18 @@ package cn.iocoder.yudao.module.system.api.remote; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; @Slf4j @RestController // 提供 RESTful API 接口,给 Feign 调用 @@ -30,4 +34,14 @@ public class RemoteExceptionTaskApiImpl implements RemoteExceptionTaskApi{ return taskDetailService.getRemoteExceptionTask(remoteTaskDTO); } + /** + * 远遥查询异常的车辆 + * @param remoteTaskQuery + * @return + */ + @Override + public PageResult getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery) { + return taskDetailService.getExceptionTaskDetail(remoteTaskQuery); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java index 17724306b..1dfd1a799 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotReactiveStatusApiImpl.java @@ -8,12 +8,16 @@ import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDataErrorDTO; import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDataPoseDTO; import cn.iocoder.yudao.module.system.api.robot.vo.RobotReactiveStatusDTO; import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant; +import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLogDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnCodeMappingDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotWarnCodeMappingMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotWarnMsgMapper; import cn.iocoder.yudao.module.system.enums.robot.RobotWarnType; +import cn.iocoder.yudao.module.system.enums.robot.actionlog.ActionStatusEnum; +import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService; import cn.iocoder.yudao.module.system.service.robot.RobotInformationService; +import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService; import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService; import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import com.alibaba.fastjson.JSON; @@ -55,6 +59,12 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { @Autowired private RobotInformationService robotInformationService; + @Resource + private RobotTaskDetailActionLogService taskDetailActionLogService; + + @Resource + private RobotTaskDetailService taskDetailService; + @Override public void robotReactiveStatus(String message) { TenantContextHolder.setTenantId(1L); @@ -129,6 +139,8 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { Integer level = ObjectUtil.isEmpty(errorLevel) ? 0 : Integer.valueOf(errorLevel.toString()); + RobotTaskDetailActionLogDO lastTaskByRobotNo = taskDetailActionLogService.getLastTaskByRobotNo(robotNo); + String msg = ""; int i = 0; for (RobotStatusDataErrorDTO robotStatusData : errCode) { @@ -144,6 +156,12 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { .warnMsg(robotNo + "_" + mappingDOS.get(0).getWarnMsg()) .warnSolve(mappingDOS.get(0).getWarnSolve()) .build(); + + if (ObjectUtil.isNotEmpty(lastTaskByRobotNo) && ActionStatusEnum.DOING.getType().equals(lastTaskByRobotNo.getActionStatus())) { + warnMsg.setTaskNo(lastTaskByRobotNo.getTaskNo()); + warnMsg.setTaskDetailId(lastTaskByRobotNo.getTaskDetailId()); + } + warnMsgDOS.add(warnMsg); if (level.intValue() < Integer.valueOf(robotStatusData.getCodeLevel()).intValue()) { @@ -158,6 +176,11 @@ public class RobotReactiveStatusApiImpl implements RobotReactiveStatusApi { redisUtil.set(errorLevelKey, level); redisUtil.set(errorMsgKey, errorMsg); + if (ObjectUtil.isNotEmpty(lastTaskByRobotNo) && ActionStatusEnum.DOING.getType().equals(lastTaskByRobotNo.getActionStatus()) + && 4 == i && ObjectUtil.isNotEmpty(lastTaskByRobotNo.getTaskDetailId())) { + taskDetailService.setTaskDetailError(lastTaskByRobotNo.getTaskDetailId()); + } + warnMsgService.sendWarnMsgToWebsocket(msg); warnMsgMapper.insertBatch(warnMsgDOS); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index b915dbfce..9830a80e8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -287,6 +287,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType()); robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.UN_START.getType()); robotTaskDetailDO.setRobotNo(""); + robotTaskDetailDO.setOccurError(ZeroOneEnum.ZERO.getType()); robotTaskDetailMapper.updateById(robotTaskDetailDO); String taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId()); msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo; @@ -338,6 +339,8 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { .robotNo(robotNo) .warnType(RobotWarnType.ROBOT_WARN.getType()) .warnMsg(msg) + .taskNo(taskNo) + .taskDetailId(robotCompleteTaskDTO.getOrderId()) .warnSolve(robotCompleteTaskDTO.getSolution() + solve) .build(); warnMsgMapper.insert(warnMsg); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgPageReqVO.java index 12f512cd1..90d7fa1c0 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgPageReqVO.java @@ -47,4 +47,10 @@ public class RobotWarnMsgPageReqVO extends PageParam { @Schema(description = "阅读时间") private LocalDateTime readTime; + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "任务的id") + private Long taskDetailId; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgRespVO.java index 3cac52001..453752a37 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgRespVO.java @@ -56,4 +56,12 @@ public class RobotWarnMsgRespVO { @ExcelProperty("阅读时间") private LocalDateTime readTime; + @Schema(description = "任务号") + @ExcelProperty("任务号") + private String taskNo; + + @Schema(description = "任务的id") + @ExcelProperty("任务的id") + private Long taskDetailId; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgSaveReqVO.java index 7888af2e9..9a8d00d62 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotWarnMsgSaveReqVO.java @@ -43,4 +43,9 @@ public class RobotWarnMsgSaveReqVO { @Schema(description = "阅读时间") private LocalDateTime readTime; + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "任务的id") + private Long taskDetailId; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotWarnMsgDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotWarnMsgDO.java index 28b630089..22dad2f9b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotWarnMsgDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/robot/RobotWarnMsgDO.java @@ -65,4 +65,14 @@ public class RobotWarnMsgDO extends BaseDO { */ private LocalDateTime readTime; + /** + * 任务号 + */ + private String taskNo; + + /** + * robot_task_detail的id + */ + private Long taskDetailId; + } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskDetailMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskDetailMapper.java index f22963ba4..c53073fe8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskDetailMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotTaskDetailMapper.java @@ -3,8 +3,10 @@ package cn.iocoder.yudao.module.system.dal.mysql.robot; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.detail.RobotDoingTaskDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailPageReqVO; @@ -157,4 +159,12 @@ public interface RobotTaskDetailMapper extends BaseMapperX { IPage selectRemoteExceptionTask(@Param("mpPage") IPage mpPage, @Param("pageReqVO") RemoteTaskDTO pageReqVO); + /** + * 远遥查询异常任务列表 + * @param mpPage + * @param pageReqVO + * @return + */ + IPage getExceptionTaskDetail(@Param("mpPage") IPage mpPage, + @Param("pageReqVO") RemoteTaskQueryDTO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotWarnMsgMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotWarnMsgMapper.java index 1a029adf0..f727ec3b0 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotWarnMsgMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/robot/RobotWarnMsgMapper.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotWarnMsgPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 机器人告警信息 Mapper @@ -40,4 +41,11 @@ public interface RobotWarnMsgMapper extends BaseMapperX { * 全部标记为已读 */ void updateAllRead(); + + /** + * 查询这些明细最新的4级告警信息 + * @param detailIds + * @return + */ + List getFourLevelWarnMsgByDetailIds(@Param("detailIds") List detailIds); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailService.java index ce0895fb6..fe68e63a6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailService.java @@ -3,8 +3,10 @@ package cn.iocoder.yudao.module.system.service.robot; import javax.validation.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.detail.RobotDoingTaskDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailPageReqVO; @@ -115,4 +117,11 @@ public interface RobotTaskDetailService { * @return */ PageResult getRemoteExceptionTask(RemoteTaskDTO remoteTaskDTO); + + /** + * 远遥查询异常的车辆 + * @param remoteTaskQuery + * @return + */ + PageResult getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java index 1cfa3451a..03e3a7f87 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskDetailServiceImpl.java @@ -3,13 +3,17 @@ package cn.iocoder.yudao.module.system.service.robot; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskListDTO; import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskQueryDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.detail.RobotDoingTaskDTO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.*; import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLogDO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; +import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper; import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum; @@ -31,6 +35,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.TASK_DETAIL_CHANGE_ROBOT; @@ -59,6 +65,9 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService { @Resource private RobotInformationService informationService; + @Resource + private RobotWarnMsgService warnMsgService; + @Override public Long createTaskDetail(RobotTaskDetailSaveReqVO createReqVO) { // 插入 @@ -209,6 +218,47 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService { return dataPage; } + /** + * 远遥查询异常的车辆 + * @param pageReqVO + * @return + */ + @Override + public PageResult getExceptionTaskDetail(RemoteTaskQueryDTO pageReqVO) { + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); + IPage page = taskDetailMapper.getExceptionTaskDetail(mpPage, pageReqVO); + PageResult dataPage = new PageResult<>(); + dataPage.setTotal(page.getTotal()); + if (ObjectUtil.isEmpty(page.getRecords())) { + return dataPage; + } + + List allRobot = informationService.getAllRobot(); + Map map = null; + if (ObjectUtil.isNotEmpty(allRobot)) { + map = allRobot.stream().collect(Collectors.toMap(RobotInformationDO::getRobotNo, RobotInformationDO::getUrl)); + } + + List detailIds = page.getRecords().stream().map(RemoteExceptionTaskDetailDTO::getId).collect(Collectors.toList()); + + List warnMsgs =warnMsgService.getWarnMsgByDetailIds(detailIds); + Map warnMsgMap = null; + if (ObjectUtil.isNotEmpty(warnMsgs)) { + warnMsgMap = warnMsgs.stream().collect(Collectors.toMap(RobotWarnMsgDO::getTaskDetailId, RobotWarnMsgDO::getWarnMsg)); + } + + for (RemoteExceptionTaskDetailDTO record : page.getRecords()) { + if (ObjectUtil.isNotEmpty(map)) { + record.setUrl(map.get(record.getRobotNo())); + } + if (ObjectUtil.isNotEmpty(warnMsgMap)) { + record.setWarnMsg(warnMsgMap.get(record.getId())); + } + } + + dataPage.setList(page.getRecords()); + return dataPage; + } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java index 63fbe46cb..abbf11d1c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotTaskServiceImpl.java @@ -737,6 +737,8 @@ public class RobotTaskServiceImpl extends ServiceImpl { List getReadPage(); String allRead(); + + List getWarnMsgByDetailIds(List detailIds); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotWarnMsgServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotWarnMsgServiceImpl.java index 2240d4c28..6418ba47f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotWarnMsgServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/RobotWarnMsgServiceImpl.java @@ -26,6 +26,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -146,4 +147,14 @@ public class RobotWarnMsgServiceImpl extends ServiceImpl getWarnMsgByDetailIds(List detailIds) { + return warnMsgMapper.getFourLevelWarnMsgByDetailIds(detailIds); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotTaskDetailMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotTaskDetailMapper.xml index c837fc037..1760ecdcf 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotTaskDetailMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotTaskDetailMapper.xml @@ -351,6 +351,35 @@ order by t1.create_time desc + + diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotWarnMsgMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotWarnMsgMapper.xml index 8021c8e8e..c0bb40189 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotWarnMsgMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/robot/RobotWarnMsgMapper.xml @@ -19,4 +19,27 @@ read_status = '0' LIMIT 1000 + + + \ No newline at end of file