远遥异常任务列表
This commit is contained in:
parent
feaa3a76c6
commit
342038226e
@ -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<PageResult<RemoteExceptionTaskListDTO>> getExceptionTask(@RequestBody RemoteTaskDTO remoteTaskDTO) {
|
||||
PageResult<RemoteExceptionTaskListDTO> list = remoteTaskService.getExceptionTask(remoteTaskDTO);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/*@PostMapping("/setRemoteTaskDone")
|
||||
@Operation(summary = "获取异常任务列表")
|
||||
@PreAuthorize("@ss.hasPermission('remote:task:getExceptionTask')")
|
||||
public CommonResult<Boolean> setRemoteTaskDone(@RequestBody RemoteTaskDTO remoteTaskDTO) {
|
||||
remoteTaskService.setRemoteTaskDone(remoteTaskDTO);
|
||||
return success(true);
|
||||
}*/
|
||||
|
||||
@PostMapping("/getExceptionTaskDetail")
|
||||
@Operation(summary = "获取异常车辆任务列表")
|
||||
@PreAuthorize("@ss.hasPermission('remote:task:getExceptionTaskDetail')")
|
||||
public CommonResult<PageResult<RemoteExceptionTaskDetailDTO>> getExceptionTaskDetail(@RequestBody RemoteTaskQueryDTO remoteTaskQuery) {
|
||||
PageResult<RemoteExceptionTaskDetailDTO> list = remoteTaskService.getExceptionTaskDetail(remoteTaskQuery);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -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<RemoteExceptionTaskListDTO> getExceptionTask(RemoteTaskDTO remoteTaskDTO);
|
||||
|
||||
PageResult<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery);
|
||||
}
|
||||
|
@ -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<RemoteExceptionTaskListDTO> getExceptionTask(RemoteTaskDTO remoteTaskDTO) {
|
||||
return remoteExceptionTaskApi.getExceptionTask(remoteTaskDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 远遥查询异常的车辆
|
||||
* @param remoteTaskQuery
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public PageResult<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery) {
|
||||
return remoteExceptionTaskApi.getExceptionTaskDetail(remoteTaskQuery);
|
||||
}
|
||||
}
|
||||
|
@ -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<RemoteExceptionTaskListDTO> getExceptionTask(@RequestBody RemoteTaskDTO remoteTaskDTO);
|
||||
|
||||
@PostMapping(PREFIX + "/getExceptionTaskDetail")
|
||||
@Operation(summary = "远遥查询异常的车辆")
|
||||
PageResult<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(@RequestBody RemoteTaskQueryDTO remoteTaskQuery);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery) {
|
||||
return taskDetailService.getExceptionTaskDetail(remoteTaskQuery);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -43,4 +43,9 @@ public class RobotWarnMsgSaveReqVO {
|
||||
@Schema(description = "阅读时间")
|
||||
private LocalDateTime readTime;
|
||||
|
||||
@Schema(description = "任务号")
|
||||
private String taskNo;
|
||||
|
||||
@Schema(description = "任务的id")
|
||||
private Long taskDetailId;
|
||||
}
|
@ -65,4 +65,14 @@ public class RobotWarnMsgDO extends BaseDO {
|
||||
*/
|
||||
private LocalDateTime readTime;
|
||||
|
||||
/**
|
||||
* 任务号
|
||||
*/
|
||||
private String taskNo;
|
||||
|
||||
/**
|
||||
* robot_task_detail的id
|
||||
*/
|
||||
private Long taskDetailId;
|
||||
|
||||
}
|
@ -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<RobotTaskDetailDO> {
|
||||
IPage<RemoteExceptionTaskListDTO> selectRemoteExceptionTask(@Param("mpPage") IPage mpPage,
|
||||
@Param("pageReqVO") RemoteTaskDTO pageReqVO);
|
||||
|
||||
/**
|
||||
* 远遥查询异常任务列表
|
||||
* @param mpPage
|
||||
* @param pageReqVO
|
||||
* @return
|
||||
*/
|
||||
IPage<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(@Param("mpPage") IPage mpPage,
|
||||
@Param("pageReqVO") RemoteTaskQueryDTO pageReqVO);
|
||||
}
|
@ -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<RobotWarnMsgDO> {
|
||||
* 全部标记为已读
|
||||
*/
|
||||
void updateAllRead();
|
||||
|
||||
/**
|
||||
* 查询这些明细最新的4级告警信息
|
||||
* @param detailIds
|
||||
* @return
|
||||
*/
|
||||
List<RobotWarnMsgDO> getFourLevelWarnMsgByDetailIds(@Param("detailIds") List<Long> detailIds);
|
||||
}
|
@ -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<RemoteExceptionTaskListDTO> getRemoteExceptionTask(RemoteTaskDTO remoteTaskDTO);
|
||||
|
||||
/**
|
||||
* 远遥查询异常的车辆
|
||||
* @param remoteTaskQuery
|
||||
* @return
|
||||
*/
|
||||
PageResult<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(RemoteTaskQueryDTO remoteTaskQuery);
|
||||
}
|
@ -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<RemoteExceptionTaskDetailDTO> getExceptionTaskDetail(RemoteTaskQueryDTO pageReqVO) {
|
||||
IPage mpPage = MyBatisUtils.buildPage(pageReqVO);
|
||||
IPage<RemoteExceptionTaskDetailDTO> page = taskDetailMapper.getExceptionTaskDetail(mpPage, pageReqVO);
|
||||
PageResult<RemoteExceptionTaskDetailDTO> dataPage = new PageResult<>();
|
||||
dataPage.setTotal(page.getTotal());
|
||||
if (ObjectUtil.isEmpty(page.getRecords())) {
|
||||
return dataPage;
|
||||
}
|
||||
|
||||
List<RobotInformationDO> allRobot = informationService.getAllRobot();
|
||||
Map<String, String> map = null;
|
||||
if (ObjectUtil.isNotEmpty(allRobot)) {
|
||||
map = allRobot.stream().collect(Collectors.toMap(RobotInformationDO::getRobotNo, RobotInformationDO::getUrl));
|
||||
}
|
||||
|
||||
List<Long> detailIds = page.getRecords().stream().map(RemoteExceptionTaskDetailDTO::getId).collect(Collectors.toList());
|
||||
|
||||
List<RobotWarnMsgDO> warnMsgs =warnMsgService.getWarnMsgByDetailIds(detailIds);
|
||||
Map<Long, String> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -737,6 +737,8 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
||||
task.setId(taskDetailDO.getRobotTaskId());
|
||||
task.setTaskStatus(RobotTaskStatusEnum.DOING.getType());
|
||||
taskMapper.updateById(task);
|
||||
String taskNo = taskDetailMapper.getTaskNoByDetailId(detailId);
|
||||
task.setTaskNo(taskNo);
|
||||
return task;
|
||||
}
|
||||
|
||||
|
@ -65,4 +65,6 @@ public interface RobotWarnMsgService extends IService<RobotWarnMsgDO> {
|
||||
List<RobotWarnMsgDO> getReadPage();
|
||||
|
||||
String allRead();
|
||||
|
||||
List<RobotWarnMsgDO> getWarnMsgByDetailIds(List<Long> detailIds);
|
||||
}
|
||||
|
@ -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<RobotWarnMsgMapper, Rob
|
||||
return "更新成功";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询这些明细对应的最新的4级告警信息
|
||||
* @param detailIds
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<RobotWarnMsgDO> getWarnMsgByDetailIds(List<Long> detailIds) {
|
||||
return warnMsgMapper.getFourLevelWarnMsgByDetailIds(detailIds);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -351,6 +351,35 @@
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="getExceptionTaskDetail"
|
||||
resultType="cn.iocoder.yudao.module.system.api.remote.dto.RemoteExceptionTaskDetailDTO">
|
||||
select
|
||||
t2.id,
|
||||
t2.robot_no as robotNo,
|
||||
t1.task_no as taskNo,
|
||||
t2.from_location_no as fromLocationNo,
|
||||
t2.to_location_no as toLocationNo,
|
||||
t2.task_stage as taskStage
|
||||
from
|
||||
robot_task t1 inner join robot_task_detail t2
|
||||
on t1.id = t2.robot_task_id
|
||||
<where>
|
||||
t1.deleted = '0'
|
||||
and t2.deleted = '0'
|
||||
and t2.occur_error = '1'
|
||||
and ((t2.task_type = '1' and t2.task_stage in ('2','3','4')) or (t2.task_type = '6') or (t2.task_type = '5' and t2.task_stage = '2'))
|
||||
and t2.task_status = '1'
|
||||
and t1.task_status = '1'
|
||||
<if test="pageReqVO.robotNo != null and pageReqVO.robotNo != ''">
|
||||
and t2.robot_no = #{pageReqVO.robotNo}
|
||||
</if>
|
||||
<if test="pageReqVO.taskNo != null and pageReqVO.taskNo != ''">
|
||||
and t1.task_no = #{pageReqVO.taskNo}
|
||||
</if>
|
||||
</where>
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
|
||||
|
||||
<!--通过主键修改数据-->
|
||||
<update id="updateRobotDetailById">
|
||||
|
@ -19,4 +19,27 @@
|
||||
read_status = '0'
|
||||
LIMIT 1000
|
||||
</update>
|
||||
|
||||
|
||||
<select id="getFourLevelWarnMsgByDetailIds"
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO">
|
||||
SELECT
|
||||
t1.*
|
||||
FROM
|
||||
robot_warn_msg t1
|
||||
WHERE
|
||||
( robot_no, create_time ) IN ( SELECT robot_no, MAX( create_time )
|
||||
FROM
|
||||
robot_warn_msg
|
||||
where
|
||||
deleted = '0'
|
||||
and warn_level = '4'
|
||||
and task_detail_id
|
||||
in
|
||||
<foreach collection="detailIds" item="taskDetailId" index="index" open="(" close=")"
|
||||
separator=",">
|
||||
#{taskDetailId}
|
||||
</foreach>
|
||||
GROUP BY robot_no )
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user