远遥异常任务列表

This commit is contained in:
cbs 2025-04-24 17:26:11 +08:00
parent feaa3a76c6
commit 342038226e
22 changed files with 298 additions and 10 deletions

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

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

View File

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

View File

@ -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);
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -43,4 +43,9 @@ public class RobotWarnMsgSaveReqVO {
@Schema(description = "阅读时间")
private LocalDateTime readTime;
@Schema(description = "任务号")
private String taskNo;
@Schema(description = "任务的id")
private Long taskDetailId;
}

View File

@ -65,4 +65,14 @@ public class RobotWarnMsgDO extends BaseDO {
*/
private LocalDateTime readTime;
/**
* 任务号
*/
private String taskNo;
/**
* robot_task_detail的id
*/
private Long taskDetailId;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

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

View File

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

View File

@ -65,4 +65,6 @@ public interface RobotWarnMsgService extends IService<RobotWarnMsgDO> {
List<RobotWarnMsgDO> getReadPage();
String allRead();
List<RobotWarnMsgDO> getWarnMsgByDetailIds(List<Long> detailIds);
}

View File

@ -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);
}
}

View File

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

View File

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