代码优化

This commit is contained in:
cbs 2025-06-11 19:48:02 +08:00
parent 593d4d983b
commit 0f3a4ac1ed
20 changed files with 112 additions and 44 deletions

View File

@ -34,7 +34,9 @@ public class ApiAccessLogInterceptor implements HandlerInterceptor {
private static final String ATTRIBUTE_STOP_WATCH = "ApiAccessLogInterceptor.StopWatch"; private static final String ATTRIBUTE_STOP_WATCH = "ApiAccessLogInterceptor.StopWatch";
private static final List<String> ignoreInterfaceUrls = Arrays.asList("/rpc-api/system/task/robotStatusUpdate","/rpc-api/system/task/updateRobotCommonStatus"); private static final List<String> ignoreInterfaceUrls = Arrays.asList("/rpc-api/system/task/robotStatusUpdate",
"/rpc-api/system/task/robotReactiveStatus",
"/rpc-api/system/task/updateRobotCommonStatus");
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

View File

@ -22,7 +22,7 @@ public class RobotStatusServiceImpl implements MqttService {
*/ */
@Override @Override
public void analysisMessage(String message) { public void analysisMessage(String message) {
// log.info("处理RobotStatusServiceImpl的消息 :{}", message); log.info("处理RobotStatusServiceImpl的消息 :{}", message);
RobotPoseStatusDTO robotStatusData = JSON.parseObject(message, RobotPoseStatusDTO.class); RobotPoseStatusDTO robotStatusData = JSON.parseObject(message, RobotPoseStatusDTO.class);
robotStatusApi.robotStatusUpdate(robotStatusData); robotStatusApi.robotStatusUpdate(robotStatusData);
} }

View File

@ -33,9 +33,9 @@ management:
# MQTT # MQTT
mqtt: mqtt:
# host: tcp://123.57.12.40:1883 host: tcp://123.57.12.40:1883
host: tcp://127.0.0.1:1883 # host: tcp://127.0.0.1:1883
# host: tcp://10.10.7.195:1883 # host: tcp://10.10.7.116:1883
username: adminuser username: adminuser
password: adminuser password: adminuser
qos: 2 qos: 2

View File

@ -202,6 +202,7 @@ public interface ErrorCodeConstants {
ErrorCode ROBOT_PORT_NOT_COMPLIANCE = new ErrorCode(1-002-034-016, "车辆端口范围在4096至65535之间"); ErrorCode ROBOT_PORT_NOT_COMPLIANCE = new ErrorCode(1-002-034-016, "车辆端口范围在4096至65535之间");
ErrorCode ROBOT_IP_NOT_COMPLIANCE = new ErrorCode(1-002-034-017, "请检测车辆IP是否符合规范"); ErrorCode ROBOT_IP_NOT_COMPLIANCE = new ErrorCode(1-002-034-017, "请检测车辆IP是否符合规范");
ErrorCode ROBOT_IP_OR_PORT_EMPTY = new ErrorCode(1-002-034-020, "车辆IP或者端口为空"); ErrorCode ROBOT_IP_OR_PORT_EMPTY = new ErrorCode(1-002-034-020, "车辆IP或者端口为空");
ErrorCode ROBOT_PART_AREA = new ErrorCode(1-002-034-021, "车辆选择的楼层,不包含目前车辆停靠的楼层");
// ========== 机器人任务主表 1-002-035-000 ========== // ========== 机器人任务主表 1-002-035-000 ==========
ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "车辆任务主表不存在"); ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "车辆任务主表不存在");

View File

@ -108,7 +108,7 @@ public class PathApiImpl implements PathApi {
@Override @Override
public void pathPlanningMove(String message) { public void pathPlanningMove(String message) {
log.info("收到路径规划路径的消息 :{}", message); log.info("111111收到路径规划路径的消息 :{}", message);
taskExecutor.execute(() -> { taskExecutor.execute(() -> {
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
pathPlanningService.sendPosedsToRobot(message); pathPlanningService.sendPosedsToRobot(message);
@ -145,7 +145,7 @@ public class PathApiImpl implements PathApi {
@Override @Override
public void graphMatchData(String message) { public void graphMatchData(String message) {
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
log.info("匹配路网的消息 :{}",message); log.info("111111匹配路网的消息 :{}",message);
pathPlanningService.graphMatchData(message); pathPlanningService.graphMatchData(message);
} }

View File

@ -30,7 +30,7 @@ public class RobotGenericsStatusApiImpl implements RobotGenericsStatusApi {
} }
public void doUpdateRobotCommonStatus(RobotGenericsDataDTO robotStatusData) { public void doUpdateRobotCommonStatus(RobotGenericsDataDTO robotStatusData) {
// log.info("车机每3秒上报其他状态信息 :{}", JSONUtil.toJsonStr(robotStatusData)); // log.info("111111车机每3秒上报其他状态信息 :{}", JSONUtil.toJsonStr(robotStatusData));
if (ObjectUtil.isEmpty(robotStatusData) || ObjectUtil.isEmpty(robotStatusData.getHwStates()) if (ObjectUtil.isEmpty(robotStatusData) || ObjectUtil.isEmpty(robotStatusData.getHwStates())
|| ObjectUtil.isEmpty(robotStatusData.getMac())) { || ObjectUtil.isEmpty(robotStatusData.getMac())) {
log.info("参数不全 :{}", JSON.toJSONString(robotStatusData)); log.info("参数不全 :{}", JSON.toJSONString(robotStatusData));

View File

@ -41,7 +41,7 @@ public class RobotObstaclesStatusApiImpl implements RobotObstaclesStatusApi{
@Override @Override
public void robotObstaclesStatus(String message) { public void robotObstaclesStatus(String message) {
log.info("障碍物状态上报 :{}" ,message); log.info("111111障碍物状态上报 :{}" ,message);
RobotObstaclesStatusDTO data = JSON.parseObject(message, RobotObstaclesStatusDTO.class); RobotObstaclesStatusDTO data = JSON.parseObject(message, RobotObstaclesStatusDTO.class);
if (!data.getObstacles()) { if (!data.getObstacles()) {

View File

@ -41,7 +41,7 @@ public class RobotPathStatusApiImpl implements RobotPathStatusApi {
} }
private void doRobotPathStatus(String message) { private void doRobotPathStatus(String message) {
log.info("导航实时行为上报: {}", message); log.info("111111导航实时行为上报: {}", message);
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
RobotPathStatusDTO data = JSON.parseObject(message, RobotPathStatusDTO.class); RobotPathStatusDTO data = JSON.parseObject(message, RobotPathStatusDTO.class);
String robotNo = robotInformationService.getRobotNoByMac(data.getMac()); String robotNo = robotInformationService.getRobotNoByMac(data.getMac());

View File

@ -128,7 +128,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void doRobotDoneTask(RobotCompleteTaskDTO robotCompleteTaskDTO) { public void doRobotDoneTask(RobotCompleteTaskDTO robotCompleteTaskDTO) {
log.info("机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO)); log.info("111111机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO));
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
String robotDoingActionKey = RobotTaskChcheConstant.ROBOT_QUERY_DOING_ACTION + robotCompleteTaskDTO.getMac(); String robotDoingActionKey = RobotTaskChcheConstant.ROBOT_QUERY_DOING_ACTION + robotCompleteTaskDTO.getMac();
@ -193,7 +193,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
, null); , null);
if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
|| PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) ) { || PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
chargeDoing(robotCompleteTaskDTO); chargeDoing(robotCompleteTaskDTO);
} }
} }
@ -206,6 +206,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
* @param orderId * @param orderId
*/ */
public void sendStartDoActionToPP(RobotCommandStateDTO commandStatus, String mac, String orderId) { public void sendStartDoActionToPP(RobotCommandStateDTO commandStatus, String mac, String orderId) {
if (ObjectUtil.isNotEmpty(commandStatus)
|| CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(commandStatus.getCommandType())
|| CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(commandStatus.getCommandType())) {
log.info("不发作业");
return;
}
if (ObjectUtil.isNotEmpty(commandStatus) && RobotExecutionStateConstant.DOING.equals(commandStatus.getExecutionState()) if (ObjectUtil.isNotEmpty(commandStatus) && RobotExecutionStateConstant.DOING.equals(commandStatus.getExecutionState())
&& !CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) { && !CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) {
String robotNo = robotInformationService.getRobotNoByMac(mac); String robotNo = robotInformationService.getRobotNoByMac(mac);
@ -247,10 +253,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
} else if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) { } else if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId()); RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) { if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) {
log.info("告诉路径规划任务完成 :{}, 状态: {}", robotCompleteTaskDTO.getOrderId(), PathIsReachEnum.END_WORK.getType()); log.info("告诉路径规划取货任务完成 :{}, 状态: {}", robotCompleteTaskDTO.getOrderId(), PathIsReachEnum.END_WORK.getType());
pathPlanningService.updateBehavior(String.valueOf(robotCompleteTaskDTO.getOrderId()), robotTaskDetailDO.getRobotNo() pathPlanningService.updateBehavior(String.valueOf(robotCompleteTaskDTO.getOrderId()), robotTaskDetailDO.getRobotNo()
, "", PathIsReachEnum.END_WORK.getType()); , "", PathIsReachEnum.END_WORK.getType());
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType()); robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
robotTaskDetailMapper.updateById(robotTaskDetailDO); robotTaskDetailMapper.updateById(robotTaskDetailDO);
return; return;
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) { } else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) {
@ -260,7 +266,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) if (PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
|| PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) { || PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(),ChargeTaskStatusEnum.DONE.getType()); chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(), ChargeTaskStatusEnum.DONE.getType());
} }
taskDetailActionLogMapper.updateActionStatus(robotCompleteTaskDTO.getOrderId(), ActionStatusEnum.DONE.getType(), LocalDateTime.now()); taskDetailActionLogMapper.updateActionStatus(robotCompleteTaskDTO.getOrderId(), ActionStatusEnum.DONE.getType(), LocalDateTime.now());
@ -289,7 +295,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
toWareHouseLocation.setLocationLock(LocationLockEnum.YES.getType()); toWareHouseLocation.setLocationLock(LocationLockEnum.YES.getType());
toWareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.YES.getType()); toWareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.YES.getType());
locationMapper.updateById(toWareHouseLocation); locationMapper.updateById(toWareHouseLocation);
pushWareLocation(toWareHouseLocation,robotCompleteTaskDTO.getMac(),ZeroOneEnum.ONE.getType()); pushWareLocation(toWareHouseLocation, robotCompleteTaskDTO.getMac(), ZeroOneEnum.ONE.getType());
} }
/** /**
@ -345,7 +351,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
wareHouseLocationDO.setLocationLock(LocationLockEnum.YES.getType()); wareHouseLocationDO.setLocationLock(LocationLockEnum.YES.getType());
wareHouseLocationDO.setLocationUseStatus(LocationUseStatusEnum.NO.getType()); wareHouseLocationDO.setLocationUseStatus(LocationUseStatusEnum.NO.getType());
locationMapper.updateById(wareHouseLocationDO); locationMapper.updateById(wareHouseLocationDO);
pushWareLocation(wareHouseLocationDO,robotCompleteTaskDTO.getMac(),ZeroOneEnum.ZERO.getType()); pushWareLocation(wareHouseLocationDO, robotCompleteTaskDTO.getMac(), ZeroOneEnum.ZERO.getType());
} }
public void pushWareLocation(WareHouseLocationDO wareHouseLocationDO, String mac, Integer type) { public void pushWareLocation(WareHouseLocationDO wareHouseLocationDO, String mac, Integer type) {
@ -393,10 +399,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
// taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),robotCompleteTaskDTO.getMac()); // taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),robotCompleteTaskDTO.getMac());
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac()); String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
String msg = ""; String msg = null;
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType()) if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())
|| PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())) { || PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
if (RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetailDO.getTaskStage()) if (RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetailDO.getTaskStage())
|| RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetailDO.getTaskStage())) { || RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetailDO.getTaskStage())) {
robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType()); robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType());
@ -439,8 +445,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
String solve = ""; String solve = "";
String taskNo = ""; String taskNo = "";
if (!PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType()) if (ObjectUtil.isEmpty(msg)) {
&& ObjectUtil.isEmpty(msg)) {
taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId()); taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
solve = " 并且到任务列表关闭任务 " + taskNo; solve = " 并且到任务列表关闭任务 " + taskNo;
taskDetailService.setTaskDetailError(robotCompleteTaskDTO.getOrderId()); taskDetailService.setTaskDetailError(robotCompleteTaskDTO.getOrderId());
@ -478,7 +483,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
setTaskDone(robotCompleteTaskDTO); setTaskDone(robotCompleteTaskDTO);
} }
chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(),ChargeTaskStatusEnum.CHARGEING.getType()); chargeLogMapper.updateChargStatusByTaskId(robotCompleteTaskDTO.getOrderId(), ChargeTaskStatusEnum.CHARGEING.getType());
} }
public RobotTaskDetailDO setTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) { public RobotTaskDetailDO setTaskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
@ -513,7 +518,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
*/ */
private void taskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) { private void taskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
RobotTaskDetailDO robotTaskDetailDO = setTaskDone(robotCompleteTaskDTO); RobotTaskDetailDO robotTaskDetailDO = setTaskDone(robotCompleteTaskDTO);
RobotInformationDO robotInformationDO = robotInformationMapper.selectOne(new LambdaQueryWrapperX<RobotInformationDO>() RobotInformationDO robotInformationDO = robotInformationMapper.selectOne(new LambdaQueryWrapperX<RobotInformationDO>()
.eq(RobotInformationDO::getRobotNo, robotTaskDetailDO.getRobotNo())); .eq(RobotInformationDO::getRobotNo, robotTaskDetailDO.getRobotNo()));

View File

@ -50,7 +50,7 @@ public class RobotUpdatePalletHeightApiImpl implements RobotUpdatePalletHeightAp
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updatePalletHeight(String message) { public void updatePalletHeight(String message) {
log.info("高度反馈 :{}", message); log.info("111111高度反馈 :{}", message);
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
RobotUpdatePalletHeightDTO data = JSON.parseObject(message, RobotUpdatePalletHeightDTO.class); RobotUpdatePalletHeightDTO data = JSON.parseObject(message, RobotUpdatePalletHeightDTO.class);
if (RobotCommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(data.getCommandType())) { if (RobotCommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(data.getCommandType())) {

View File

@ -34,7 +34,7 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
@Override @Override
public void robotWorkStatus(String message) { public void robotWorkStatus(String message) {
log.info("作业实时行为上报: {}", message); log.info("111111作业实时行为上报: {}", message);
TenantContextHolder.setTenantId(1L); TenantContextHolder.setTenantId(1L);
RobotWorkStatusDTO data = JSON.parseObject(message, RobotWorkStatusDTO.class); RobotWorkStatusDTO data = JSON.parseObject(message, RobotWorkStatusDTO.class);

View File

@ -130,4 +130,11 @@ public class RobotTaskController {
return success(true); return success(true);
} }
@GetMapping("/getRobotTaskNum")
@Operation(summary = "获取这台车工作的任务总数")
@Parameter(name = "robotNo", description = "车辆编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('robot:task:getRobotTaskNum')")
public CommonResult<Integer> getRobotTaskNum(@RequestParam("robotNo") String robotNo) {
return success(taskService.getRobotTaskNum(robotNo));
}
} }

View File

@ -27,4 +27,10 @@ public interface TaskCycleMapper extends BaseMapperX<TaskCycleDO> {
} }
void deletByRobotTaskId(@Param("robotTaskId") Long robotTaskId); void deletByRobotTaskId(@Param("robotTaskId") Long robotTaskId);
/**
* 批量删除
* @param taskIds
*/
void deletByRobotTaskIds(@Param("taskIds") Set<Long> taskIds);
} }

View File

@ -369,6 +369,21 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
validateInformationExists(updateReqVO.getId()); validateInformationExists(updateReqVO.getId());
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId()); RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
if (RobotStatusEnum.STAND_BY.getType().equals(robotInformationDO.getRobotStatus()) ) {
PositionMapItemDO positionMapItem = positionMapItemMapper.selectOne(new LambdaQueryWrapper<PositionMapItemDO>()
.eq(PositionMapItemDO::getRobotNo, robotInformationDO.getRobotNo())
.eq(PositionMapItemDO::getUseStatus, UseStatusEnum.USEING.getType())
.eq(PositionMapItemDO::getType, PositionMapItemEnum.STOP.getType())
.last("limit 1"));
if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isEmpty(updateReqVO.getFloorAreaJson())) {
log.info("车辆 :{} ,停靠在 :{},",robotInformationDO.getRobotNo(), positionMapItem.getPositionMapId());
throw exception(ROBOT_PART_AREA);
}else if (ObjectUtil.isNotEmpty(positionMapItem) && ObjectUtil.isNotEmpty(updateReqVO.getFloorAreaJson())
&& !updateReqVO.getFloorAreaJson().contains(positionMapItem.getPositionMapId())) {
throw exception(ROBOT_PART_AREA);
}
}
RemoteControllerInformationDO remoteControllerInformation = controllerInformationMapper.selectOne(new LambdaQueryWrapper<RemoteControllerInformationDO>() RemoteControllerInformationDO remoteControllerInformation = controllerInformationMapper.selectOne(new LambdaQueryWrapper<RemoteControllerInformationDO>()
.eq(RemoteControllerInformationDO::getRobotNo, robotInformationDO.getRobotNo()) .eq(RemoteControllerInformationDO::getRobotNo, robotInformationDO.getRobotNo())
.last("limit 1")); .last("limit 1"));
@ -425,7 +440,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
checkIpAndPort(updateObj); checkIpAndPort(updateObj);
if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())) { if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())) {
updateRobotNo(robotInformationDO.getRobotNo(),updateReqVO.getRobotNo()); updateRobotNo(robotInformationDO.getRobotNo(), updateReqVO.getRobotNo());
} }
informationMapper.updateById(updateObj); informationMapper.updateById(updateObj);
@ -483,15 +498,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
/** /**
* 跟新车辆编号 * 跟新车辆编号
*
* @param oldRobotNo * @param oldRobotNo
* @param newRobotNo * @param newRobotNo
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateRobotNo(String oldRobotNo, String newRobotNo) { public void updateRobotNo(String oldRobotNo, String newRobotNo) {
deviceInformationMapper.updateRobotNo(oldRobotNo,newRobotNo); deviceInformationMapper.updateRobotNo(oldRobotNo, newRobotNo);
controllerInformationMapper.updateRobotNo(oldRobotNo,newRobotNo); controllerInformationMapper.updateRobotNo(oldRobotNo, newRobotNo);
RobotChargeLogDO robotChargeLog = chargeLogMapper.selectOne(new LambdaQueryWrapperX<RobotChargeLogDO>() RobotChargeLogDO robotChargeLog = chargeLogMapper.selectOne(new LambdaQueryWrapperX<RobotChargeLogDO>()
.eq(RobotChargeLogDO::getRobotNo, oldRobotNo) .eq(RobotChargeLogDO::getRobotNo, oldRobotNo)
@ -504,11 +520,11 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
//这表暂时不改 //这表暂时不改
// robotWorkingHoursStatisticsMapper // robotWorkingHoursStatisticsMapper
mapStopMapper.updateRobotNo(oldRobotNo,newRobotNo); mapStopMapper.updateRobotNo(oldRobotNo, newRobotNo);
moveToWaitMapper.updateRobotNo(oldRobotNo,newRobotNo); moveToWaitMapper.updateRobotNo(oldRobotNo, newRobotNo);
positionMapItemMapper.updateRobotNo(oldRobotNo,newRobotNo); positionMapItemMapper.updateRobotNo(oldRobotNo, newRobotNo);
} }
@Override @Override
@ -668,7 +684,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
if (ObjectUtil.isNotEmpty(cargoDetected) && RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))) { if (ObjectUtil.isNotEmpty(cargoDetected) && RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))) {
//说明取货完成 //说明取货完成
v.setCargoDetected("有货"); v.setCargoDetected("有货");
}else { } else {
v.setCargoDetected("空车"); v.setCargoDetected("空车");
} }
if (RobotStatisticsTypeEnum.STANDBY.getType().equals(pageReqVO.getRobotStatisticsType()) if (RobotStatisticsTypeEnum.STANDBY.getType().equals(pageReqVO.getRobotStatisticsType())
@ -1256,7 +1272,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
} else if (PathTaskTypeEnum.RELEASE.getType().equals(actionLog.getCommandType())) { } else if (PathTaskTypeEnum.RELEASE.getType().equals(actionLog.getCommandType())) {
releaseTask(pathPlanning); releaseTask(pathPlanning);
} else if (PathTaskTypeEnum.MOVE.getType().equals(actionLog.getCommandType()) } else if (PathTaskTypeEnum.MOVE.getType().equals(actionLog.getCommandType())
|| PathTaskTypeEnum.MOVE_TO_POINT.getType().equals(actionLog.getCommandType())) { || PathTaskTypeEnum.MOVE_TO_POINT.getType().equals(actionLog.getCommandType())) {
} }
} }
@ -1318,7 +1334,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
wareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.NO.getType()); wareHouseLocation.setLocationUseStatus(LocationUseStatusEnum.NO.getType());
wareHouseLocationMapper.updateById(wareHouseLocation); wareHouseLocationMapper.updateById(wareHouseLocation);
} }
}else { } else {
takeCheck(robotTaskDetail.getFromLocationId(), robotTaskDetail.getRobotTaskId(), isRemote); takeCheck(robotTaskDetail.getFromLocationId(), robotTaskDetail.getRobotTaskId(), isRemote);
} }
releaseCheck(robotTaskDetail.getToLocationId(), robotTaskDetail.getRobotTaskId()); releaseCheck(robotTaskDetail.getToLocationId(), robotTaskDetail.getRobotTaskId());
@ -1493,7 +1509,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
List<String> robotNos = robots.stream().map(RobotInformationDO::getRobotNo).collect(Collectors.toList()); List<String> robotNos = robots.stream().map(RobotInformationDO::getRobotNo).collect(Collectors.toList());
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
String floorArea = floor + CommonConstant.SYMBOL + area; String floorArea = floor + CommonConstant.SYMBOL + area;
Map<Object, Object> hmget = redisUtil.hmget(floorArea); Map<Object, Object> hmget = redisUtil.hmget(floorArea);
if (ObjectUtil.isEmpty(hmget)) { if (ObjectUtil.isEmpty(hmget)) {
return new ArrayList<>(); return new ArrayList<>();

View File

@ -246,6 +246,7 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
public void setTaskDetailError(Long id) { public void setTaskDetailError(Long id) {
RobotTaskDetailDO robotTaskDetailDO = new RobotTaskDetailDO(); RobotTaskDetailDO robotTaskDetailDO = new RobotTaskDetailDO();
robotTaskDetailDO.setId(id); robotTaskDetailDO.setId(id);
robotTaskDetailDO.setTaskStatus(RobotTaskStatusEnum.Exc.getType());
robotTaskDetailDO.setOccurError(ZeroOneEnum.ONE.getType()); robotTaskDetailDO.setOccurError(ZeroOneEnum.ONE.getType());
taskDetailMapper.updateById(robotTaskDetailDO); taskDetailMapper.updateById(robotTaskDetailDO);
} }

View File

@ -115,4 +115,11 @@ public interface RobotTaskService extends IService<RobotTaskDO> {
* @param robotNo * @param robotNo
*/ */
void chargeDone(String robotNo); void chargeDone(String robotNo);
/**
* 查询车辆的工作总数
* @param robotNo
* @return
*/
Integer getRobotTaskNum(String robotNo);
} }

View File

@ -512,6 +512,8 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
taskDetailMapper.updateById(taskDetailDOS); taskDetailMapper.updateById(taskDetailDOS);
taskCycleMapper.deletByRobotTaskId(robotTaskDO.getId());
if (ObjectUtil.isNotEmpty(locationIds)) { if (ObjectUtil.isNotEmpty(locationIds)) {
locationMapper.releaseLocationLockList(locationIds, robotTaskDO.getId() locationMapper.releaseLocationLockList(locationIds, robotTaskDO.getId()
, LocationLockEnum.YES.getType()); , LocationLockEnum.YES.getType());
@ -536,13 +538,11 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType()); robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
}*/ }*/
//因为机器人如果正在抬叉取货这时把任务取消如果货叉刚好伸到托盘底下还是需要人为控制 //因为机器人如果正在抬叉取货这时把任务取消如果货叉刚好伸到托盘底下还是需要人为控制
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType()); // robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType()); robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
} }
informationMapper.updateById(robotInformationDOS); informationMapper.updateById(robotInformationDOS);
taskCycleMapper.deletByRobotTaskId(robotTaskDO.getId());
} }
@Override @Override
@ -582,7 +582,7 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
*/ */
@Override @Override
public void assignTasks(String message) { public void assignTasks(String message) {
log.info("PP分配任务,开始更新任务状态 :{}", message); log.info("111111PP分配任务,开始更新任务状态 :{}", message);
TaskAssignDTO taskAssignDTO = JSON.parseObject(message, TaskAssignDTO.class); TaskAssignDTO taskAssignDTO = JSON.parseObject(message, TaskAssignDTO.class);
String mac = robotInformationService.getMacByRobotNo(taskAssignDTO.getRobotNo()); String mac = robotInformationService.getMacByRobotNo(taskAssignDTO.getRobotNo());
@ -818,6 +818,7 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
taskDetailMapper.updateById(taskDetailDO); taskDetailMapper.updateById(taskDetailDO);
RobotTaskDO task = new RobotTaskDO(); RobotTaskDO task = new RobotTaskDO();
task.setId(taskDetailDO.getRobotTaskId()); task.setId(taskDetailDO.getRobotTaskId());
task.setStartTime(LocalDateTime.now());
task.setTaskStatus(RobotTaskStatusEnum.DOING.getType()); task.setTaskStatus(RobotTaskStatusEnum.DOING.getType());
taskMapper.updateById(task); taskMapper.updateById(task);
String taskNo = taskDetailMapper.getTaskNoByDetailId(detailId); String taskNo = taskDetailMapper.getTaskNoByDetailId(detailId);
@ -1622,6 +1623,15 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
} }
} }
@Override
public Integer getRobotTaskNum(String robotNo) {
List<RobotTaskDetailDO> taskDetailDOS = taskDetailMapper.selectList(new LambdaQueryWrapperX<RobotTaskDetailDO>()
.eq(RobotTaskDetailDO::getRobotNo, robotNo)
.ne(RobotTaskDetailDO::getTaskStatus, RobotTaskStatusEnum.NEW.getType()));
return ObjectUtil.isEmpty(taskDetailDOS) ? 0 : taskDetailDOS.size();
}
/** /**
* 任务日志分页 * 任务日志分页
* *

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO; import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotTaskDetailAddVO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDO; 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.RobotTaskDetailDO;
import cn.iocoder.yudao.module.system.dal.mysql.cycle.TaskCycleMapper;
import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper; import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper;
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper; 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.dal.mysql.robot.RobotTaskMapper;
@ -59,6 +60,9 @@ public class CycleServiceImpl implements CycleService {
@Resource @Resource
private RobotTaskService robotTaskService; private RobotTaskService robotTaskService;
@Resource
private TaskCycleMapper taskCycleMapper;
/** /**
* 创建循环任务 * 创建循环任务
*/ */
@ -120,6 +124,7 @@ public class CycleServiceImpl implements CycleService {
taskDetailMap.forEach((k,v) ->{ taskDetailMap.forEach((k,v) ->{
robotTaskService.addCycle(k,v); robotTaskService.addCycle(k,v);
}); });
taskCycleMapper.deletByRobotTaskIds(taskIds);
} }
private List<RobotTaskDetailDO> getTaskDetailData(RobotTaskDO taskData, Map<Long, private List<RobotTaskDetailDO> getTaskDetailData(RobotTaskDO taskData, Map<Long,

View File

@ -484,15 +484,15 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + mac; String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + mac;
Object cargoDetected = redisUtil.get(cargoDetectedKey); Object cargoDetected = redisUtil.get(cargoDetectedKey);
log.info("传感器是否按下 :{}", cargoDetected); log.info("传感器是否按下 :{}", cargoDetected);
if (ObjectUtil.isEmpty(cargoDetected) || (RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected))) /* if (ObjectUtil.isNotEmpty(cargoDetected) && (RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))
&& !RobotTaskTypeEnum.RELEASE.getType().equals(taskDetailDO.getTaskType()))) { && !RobotTaskTypeEnum.RELEASE.getType().equals(taskDetailDO.getTaskType()))) {
log.info("车机上报传感器为空, 或者 被按下且任务非仅放货任务 :{} ,任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId()); log.info("车机上报传感器为空, 或者 被按下且任务非仅放货任务 :{} ,任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId());
continue; continue;
} else if (!RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected))) } else if (ObjectUtil.isNotEmpty(cargoDetected) && !RobotStatusCodeConstant.CARGO_DETECTED.equals(Boolean.parseBoolean(String.valueOf(cargoDetected)))
&& RobotTaskTypeEnum.RELEASE.getType().equals(taskDetailDO.getTaskType())) { && RobotTaskTypeEnum.RELEASE.getType().equals(taskDetailDO.getTaskType())) {
log.info("仅放货任务,传感器未被按下,所以不执行任务 :{}, 任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId()); log.info("仅放货任务,传感器未被按下,所以不执行任务 :{}, 任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId());
continue; continue;
} }*/
List<TaskRobotNoLimittationAreaDTO> robotNoLimitions = null; List<TaskRobotNoLimittationAreaDTO> robotNoLimitions = null;
if (ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) { if (ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) {
@ -550,7 +550,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
} }
if (ObjectUtil.isNotEmpty(pathPlanningList)) { if (ObjectUtil.isNotEmpty(pathPlanningList)) {
log.info("作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList)); log.info("111111作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList));
commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST); commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST);
} }
} }
@ -578,7 +578,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
Integer locationStorey = toLocation.getLocationStorey() - 1; Integer locationStorey = toLocation.getLocationStorey() - 1;
double height = locationStorey * defaultTrayHeight; double height = locationStorey * defaultTrayHeight;
log.info("放货设置默认高度 :{}", pathPlanning.getReleaseHeight()); log.info("放货设置默认高度 :{}", height);
pathPlanning.setReleaseHeight(height); pathPlanning.setReleaseHeight(height);
} }

View File

@ -12,4 +12,12 @@
<delete id="deletByRobotTaskId"> <delete id="deletByRobotTaskId">
delete from robot_task_cycle where robot_task_id = #{robotTaskId} delete from robot_task_cycle where robot_task_id = #{robotTaskId}
</delete> </delete>
<delete id="deletByRobotTaskIds">
delete from robot_task_cycle
where robot_task_id in
<foreach collection="taskIds" item="robotTaskId" index="index" open="(" close=")"
separator=",">
#{robotTaskId}
</foreach>
</delete>
</mapper> </mapper>