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 new file mode 100644 index 000000000..e384b49cc --- /dev/null +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/controller/admin/task/RemoteTaskController.java @@ -0,0 +1,45 @@ +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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 远遥任务") +@RestController +@RequestMapping("/remote/task") +@Validated +public class RemoteTaskController { + + @Autowired + private RemoteTaskService remoteTaskService; + + @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); + }*/ + +} diff --git a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/framework/system/SystemConfiguration.java b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/framework/system/SystemConfiguration.java index 5625121db..6269e41b8 100644 --- a/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/framework/system/SystemConfiguration.java +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/framework/system/SystemConfiguration.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.remote.framework.system; +import cn.iocoder.yudao.module.system.api.remote.RemoteExceptionTaskApi; import cn.iocoder.yudao.module.system.api.remote.RemoteLoginApi; import cn.iocoder.yudao.module.system.api.remote.RemoteRobotApi; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {RemoteLoginApi.class, RemoteRobotApi.class}) +@EnableFeignClients(clients = {RemoteLoginApi.class, RemoteRobotApi.class, RemoteExceptionTaskApi.class}) public class SystemConfiguration { } 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 new file mode 100644 index 000000000..abec27c50 --- /dev/null +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskService.java @@ -0,0 +1,10 @@ +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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; + +public interface RemoteTaskService { + + PageResult getExceptionTask(RemoteTaskDTO remoteTaskDTO); +} 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 new file mode 100644 index 000000000..ab80a3a6d --- /dev/null +++ b/yudao-module-remote/yudao-module-remote-biz/src/main/java/cn/iocoder/yudao/module/remote/service/task/RemoteTaskServiceImpl.java @@ -0,0 +1,28 @@ +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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Slf4j +@Service +public class RemoteTaskServiceImpl implements RemoteTaskService { + + @Resource + private RemoteExceptionTaskApi remoteExceptionTaskApi; + + /** + * 获取异常任务列表 + * @param remoteTaskDTO + * @return + */ + @Override + public PageResult getExceptionTask(RemoteTaskDTO remoteTaskDTO) { + return remoteExceptionTaskApi.getExceptionTask(remoteTaskDTO); + } +} 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 new file mode 100644 index 000000000..f9da862dd --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApi.java @@ -0,0 +1,27 @@ +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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +import cn.iocoder.yudao.module.system.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = +@Tag(name = "RPC 服务 - 远遥任务相关") +public interface RemoteExceptionTaskApi { + + String PREFIX = ApiConstants.PREFIX + "/remote"; + + /** + * 远遥查看异常列表 + * @return + */ + @PostMapping(PREFIX + "/getExceptionTask") + @Operation(summary = "保存IP和端口") + PageResult getExceptionTask(@RequestBody RemoteTaskDTO remoteTaskDTO); +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskListDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskListDTO.java new file mode 100644 index 000000000..fb25ee67e --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteExceptionTaskListDTO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.system.api.remote.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class RemoteExceptionTaskListDTO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26224") + private Long id; + + @Schema(description = "车辆编号") + private String robotNo ; + + @Schema(description = "任务号") + private String taskNo; + + @Schema(description = "取货库位编号") + private String fromLocationNo; + + @Schema(description = "放货库位编号") + private String toLocationNo; + + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") + private Long taskStage; + +} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteRobotStatusDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteRobotStatusDTO.java index e82254d7c..f303bfa28 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteRobotStatusDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteRobotStatusDTO.java @@ -22,4 +22,10 @@ public class RemoteRobotStatusDTO { @Schema(description = "是否可以点击: 任务完成(0:可以点, 1:不能点任务完成)") private Integer clickTaskDone = 1; + + @Schema(description = "车辆任务状态(3:待命 , 其他都是任务中)") + private Integer robotStatus = 2; + + @Schema(description = "任务模式(0:锁定、1:正常)") + private Integer robotTaskModel; } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskDTO.java new file mode 100644 index 000000000..a2a5b10e3 --- /dev/null +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/remote/dto/RemoteTaskDTO.java @@ -0,0 +1,14 @@ +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 RemoteTaskDTO extends PageParam { + @Schema(description = "车辆编号") + private String robotNo ; + + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") + private Long taskStage; +} \ No newline at end of file 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 new file mode 100644 index 000000000..4227a4a9f --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/remote/RemoteExceptionTaskApiImpl.java @@ -0,0 +1,33 @@ +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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; +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; + +@Slf4j +@RestController // 提供 RESTful API 接口,给 Feign 调用 +@Validated +public class RemoteExceptionTaskApiImpl implements RemoteExceptionTaskApi{ + + + @Resource + private RobotTaskDetailService taskDetailService; + + /** + * 远遥获取异常任务列表 + * @param taskStage + * @param robotNo + * @return + */ + @Override + public PageResult getExceptionTask(RemoteTaskDTO remoteTaskDTO) { + return taskDetailService.getRemoteExceptionTask(remoteTaskDTO); + } + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskPageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskPageReqVO.java index dd8e765bc..8970ed3bd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskPageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/robot/vo/RobotTaskPageReqVO.java @@ -57,7 +57,7 @@ public class RobotTaskPageReqVO extends PageParam { @Schema(description = "任务状态(0:未开始、1:执行中、2:已完成、3:已取消)", example = "2") private Integer taskStatus; - @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:运输中、4:放货中、5:结束)") + @Schema(description = "任务阶段(0:待执行、1:前往取货、2:取货中、3:前往放货、4:放货中、5:结束、6:移动中、7:正在充电、8:取消、9:人工完成、10:异常)") private Long taskStage; @Schema(description = "开始时间") 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 c7d8e3a8d..f22963ba4 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,10 +3,14 @@ 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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; 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; +import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -143,4 +147,14 @@ public interface RobotTaskDetailMapper extends BaseMapperX { * @return */ List getRobotDoingTaskNo(); + + /** + * 远遥查询异常任务列表 + * @param mpPage + * @param pageReqVO + * @return + */ + IPage selectRemoteExceptionTask(@Param("mpPage") IPage mpPage, + @Param("pageReqVO") RemoteTaskDTO 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/service/positionmap/PositionMapServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java index e5e5b9540..1b833122b 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/positionmap/PositionMapServiceImpl.java @@ -364,6 +364,15 @@ public class PositionMapServiceImpl extends ServiceImpl robotMapStopList = robotMapStopService.getStopRobotNoByRobotNoList(robotNos); + if (ObjectUtil.isNotEmpty(robotMapStopList)) { + List stopRobotNos = robotMapStopList.stream().map(RobotMapStopDO::getRobotNo).collect(Collectors.toList()); + robotNos.removeAll(stopRobotNos); + } + } + } else { //恢复 robotNos = robotMapStopService.getStopRobotNoByMapIds(id); @@ -516,7 +525,6 @@ public class PositionMapServiceImpl extends ServiceImpl robotMapStops = mapStopMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotMapStopDO::getRobotNo, robotInformationDO.getRobotNo())); + if (ObjectUtil.isNotEmpty(robotMapStops)) { + robotMapStops.forEach(v -> v.setRobotNo(updateReqVO.getRobotNo())); + mapStopMapper.updateById(robotMapStops); + } + } + // 更新AGV于地图关系表 ----- List> list = CollectionUtils.compareLists( (CollUtil.isEmpty(robotInformationDO.getFloorAreaJson()) ? Collections.emptyList() : new ArrayList<>(robotInformationDO.getFloorAreaJson())), @@ -386,6 +394,9 @@ public class RobotInformationServiceImpl extends ServiceImpl RobotDimensions = informationMapper.selectRobotDimensions(); pathPlanningApi.synchronousLineObject(RobotDimensions, PathPlanningTopicConstant.SEND_ROBOT_DIMENSIONS); @@ -399,6 +410,40 @@ public class RobotInformationServiceImpl extends ServiceImpl robotMapStops = mapStopMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotMapStopDO::getRobotNo, robotInformationDO.getRobotNo())); + if (ObjectUtil.isEmpty(robotMapStops)) { + return; + } + RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO(); + robotSimulationPose.setCommandType(RobotCommandTypeEnum.RECOVERY.getType()); + List robotNoList = Arrays.asList(robotInformationDO.getRobotNo()); + sendEmergencyStopOrRecoveryToRobot(robotSimulationPose, robotNoList, "删除车辆时恢复车辆"); + mapStopMapper.deleteRobotMapStopByRobotNos(robotNoList); + + Long positionMapId = null; + for (RobotMapStopDO robotMapStopDO : robotMapStops) { + if (ObjectUtil.isNotEmpty(robotMapStopDO.getPositionMapId()) && robotMapStopDO.getPositionMapId() > 0) { + positionMapId = robotMapStopDO.getPositionMapId(); + } + } + + if (ObjectUtil.isNotEmpty(positionMapId)) { + List mapStopDOList = mapStopMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotMapStopDO::getPositionMapId, positionMapId)); + //说明此时地图上没有其他被暂停的车辆了 + if (ObjectUtil.isNotEmpty(mapStopDOList) && mapStopDOList.size() == 1) { + PositionMapDO positionMapDO = positionMapMapper.selectById(positionMapId); + mapStopMapper.deleteRobotMapStopByMapId(positionMapId); + UserOperationLogSaveReqVO operationLogs = UserOperationLogSaveReqVO.builder() + .operateAction(positionMapDO.getFloor() + "层" + positionMapDO.getArea() + " 地图上所有车辆已经恢复,所以把地图也设置为恢复") + .nickName(SecurityFrameworkUtils.getLoginUserNickname()).build(); + userOperationLogService.createUserOperationLog(operationLogs); + } + } + } + private void validateInformationExists(Long id) { if (informationMapper.selectById(id) == null) { throw exception(ROBOT_INFORMATION_NOT_EXISTS); @@ -1328,7 +1373,7 @@ public class RobotInformationServiceImpl extends ServiceImpl= 0) { return true; - }else { + } else { log.info("机器人正在充电,还没达到充电设置的电量,暂不能接任务:{} ", robot.getRobotNo()); } 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 516da95f5..ce0895fb6 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,6 +3,8 @@ 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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; 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; @@ -108,4 +110,9 @@ public interface RobotTaskDetailService { */ List getRobotDoingTaskNo(); + /** + * 获取远遥异常列表 + * @return + */ + PageResult getRemoteExceptionTask(RemoteTaskDTO remoteTaskDTO); } \ 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 16bd07b38..1cfa3451a 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 @@ -2,11 +2,11 @@ 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.RemoteExceptionTaskListDTO; +import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskDTO; 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; -import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailRespVO; -import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailSaveReqVO; +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.RobotTaskDO; import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; @@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.system.enums.robot.RobotTaskDetailStatusEnum; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskStatusEnum; import cn.iocoder.yudao.module.system.enums.robot.task.RobotTaskStageEnum; import cn.iocoder.yudao.module.system.service.log.RobotTaskDetailActionLogService; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -197,4 +198,17 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService { public List getRobotDoingTaskNo() { return taskDetailMapper.getRobotDoingTaskNo(); } + + @Override + public PageResult getRemoteExceptionTask(RemoteTaskDTO pageReqVO) { + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); + IPage page = taskDetailMapper.selectRemoteExceptionTask(mpPage, pageReqVO); + PageResult dataPage = new PageResult<>(); + dataPage.setTotal(page.getTotal()); + 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/mapstop/RobotMapStopService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java index 4e56427fd..60dba2bc4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopService.java @@ -120,4 +120,11 @@ public interface RobotMapStopService extends IService { * @param robotNo */ void remoteRecoveryRobot(String robotNo); + + /** + * 查询已经暂停的车辆 + * @param robotNos + * @return + */ + List getStopRobotNoByRobotNoList(List robotNos); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java index 90be69260..31ca642a6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/robot/mapstop/RobotMapStopServiceImpl.java @@ -233,6 +233,13 @@ public class RobotMapStopServiceImpl extends ServiceImpl 0) { + positionMapId = robotMapStopDO.getPositionMapId(); + } + } + RobotSimulationPoseDTO robotSimulationPose = new RobotSimulationPoseDTO(); robotSimulationPose.setCommandType(RobotCommandTypeEnum.RECOVERY.getType()); List list = Arrays.asList(robotNo); @@ -240,19 +247,29 @@ public class RobotMapStopServiceImpl extends ServiceImpl mapStopDOList = mapStopMapper.selectList(new LambdaQueryWrapperX() - .eq(RobotMapStopDO::getPositionMapId, stopRobotNoByRobotNo.get(0).getPositionMapId())); + .eq(RobotMapStopDO::getPositionMapId, positionMapId)); //说明此时地图上没有其他被暂停的车辆了 - if (ObjectUtil.isNotEmpty(mapStopDOList) && mapStopDOList.size() == 1) { - PositionMapDO positionMapDO = positionMapMapper.selectById(mapStopDOList.get(0).getPositionMapId()); - deleteRobotMapStopByMapId(mapStopDOList.get(0).getPositionMapId()); + if (ObjectUtil.isNotEmpty(mapStopDOList) && mapStopDOList.size() == 1 ) { + PositionMapDO positionMapDO = positionMapMapper.selectById(positionMapId); + deleteRobotMapStopByMapId(positionMapId); UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder() .operateAction(positionMapDO.getFloor() + "层" + positionMapDO.getArea() + " 地图上所有车辆已经恢复,所以把地图也设置为恢复") .nickName(SecurityFrameworkUtils.getLoginUserNickname()).build(); userOperationLogService.createUserOperationLog(operationLog); - } } + @Override + public List getStopRobotNoByRobotNoList(List robotNos) { + return mapStopMapper.selectList(new LambdaQueryWrapperX() + .eq(RobotMapStopDO::getStopType, ZeroOneEnum.ONE.getType()) + .in(RobotMapStopDO::getRobotNo, robotNos)); + } + } 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 efb088d1f..c837fc037 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 @@ -322,6 +322,35 @@ and t2.task_status ='1' + +