代码优化

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 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
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

View File

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

View File

@ -33,9 +33,9 @@ management:
# MQTT
mqtt:
# host: tcp://123.57.12.40:1883
host: tcp://127.0.0.1:1883
# host: tcp://10.10.7.195:1883
host: tcp://123.57.12.40:1883
# host: tcp://127.0.0.1:1883
# host: tcp://10.10.7.116:1883
username: adminuser
password: adminuser
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_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_PART_AREA = new ErrorCode(1-002-034-021, "车辆选择的楼层,不包含目前车辆停靠的楼层");
// ========== 机器人任务主表 1-002-035-000 ==========
ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "车辆任务主表不存在");

View File

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

View File

@ -30,7 +30,7 @@ public class RobotGenericsStatusApiImpl implements RobotGenericsStatusApi {
}
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())
|| ObjectUtil.isEmpty(robotStatusData.getMac())) {
log.info("参数不全 :{}", JSON.toJSONString(robotStatusData));

View File

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

View File

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

View File

@ -128,7 +128,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
@Transactional(rollbackFor = Exception.class)
public void doRobotDoneTask(RobotCompleteTaskDTO robotCompleteTaskDTO) {
log.info("机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO));
log.info("111111机器人完成任务上报 :{}", JSON.toJSONString(robotCompleteTaskDTO));
TenantContextHolder.setTenantId(1L);
String robotDoingActionKey = RobotTaskChcheConstant.ROBOT_QUERY_DOING_ACTION + robotCompleteTaskDTO.getMac();
@ -206,6 +206,12 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
* @param 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())
&& !CommandTypeEnum.MOVE_POSES.getType().equals(commandStatus.getCommandType())) {
String robotNo = robotInformationService.getRobotNoByMac(mac);
@ -247,10 +253,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
} else if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
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()
, "", PathIsReachEnum.END_WORK.getType());
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING.getType());
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
robotTaskDetailMapper.updateById(robotTaskDetailDO);
return;
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) {
@ -393,10 +399,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
// taskService.closeTaskDetail(robotCompleteTaskDTO.getOrderId().toString(),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())
|| PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
if (RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetailDO.getTaskStage())
|| RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetailDO.getTaskStage())) {
robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType());
@ -439,8 +445,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
String solve = "";
String taskNo = "";
if (!PathTaskTypeEnum.AUTO_CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
&& ObjectUtil.isEmpty(msg)) {
if (ObjectUtil.isEmpty(msg)) {
taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
solve = " 并且到任务列表关闭任务 " + taskNo;
taskDetailService.setTaskDetailError(robotCompleteTaskDTO.getOrderId());

View File

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

View File

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

View File

@ -130,4 +130,11 @@ public class RobotTaskController {
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);
/**
* 批量删除
* @param taskIds
*/
void deletByRobotTaskIds(@Param("taskIds") Set<Long> taskIds);
}

View File

@ -369,6 +369,21 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
validateInformationExists(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>()
.eq(RemoteControllerInformationDO::getRobotNo, robotInformationDO.getRobotNo())
.last("limit 1"));
@ -483,6 +498,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
/**
* 跟新车辆编号
*
* @param oldRobotNo
* @param newRobotNo
*/

View File

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

View File

@ -115,4 +115,11 @@ public interface RobotTaskService extends IService<RobotTaskDO> {
* @param 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);
taskCycleMapper.deletByRobotTaskId(robotTaskDO.getId());
if (ObjectUtil.isNotEmpty(locationIds)) {
locationMapper.releaseLocationLockList(locationIds, robotTaskDO.getId()
, 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.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
}
informationMapper.updateById(robotInformationDOS);
taskCycleMapper.deletByRobotTaskId(robotTaskDO.getId());
}
@Override
@ -582,7 +582,7 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
*/
@Override
public void assignTasks(String message) {
log.info("PP分配任务,开始更新任务状态 :{}", message);
log.info("111111PP分配任务,开始更新任务状态 :{}", message);
TaskAssignDTO taskAssignDTO = JSON.parseObject(message, TaskAssignDTO.class);
String mac = robotInformationService.getMacByRobotNo(taskAssignDTO.getRobotNo());
@ -818,6 +818,7 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
taskDetailMapper.updateById(taskDetailDO);
RobotTaskDO task = new RobotTaskDO();
task.setId(taskDetailDO.getRobotTaskId());
task.setStartTime(LocalDateTime.now());
task.setTaskStatus(RobotTaskStatusEnum.DOING.getType());
taskMapper.updateById(task);
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.dal.dataobject.robot.RobotTaskDO;
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.robot.RobotTaskDetailMapper;
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper;
@ -59,6 +60,9 @@ public class CycleServiceImpl implements CycleService {
@Resource
private RobotTaskService robotTaskService;
@Resource
private TaskCycleMapper taskCycleMapper;
/**
* 创建循环任务
*/
@ -120,6 +124,7 @@ public class CycleServiceImpl implements CycleService {
taskDetailMap.forEach((k,v) ->{
robotTaskService.addCycle(k,v);
});
taskCycleMapper.deletByRobotTaskIds(taskIds);
}
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;
Object cargoDetected = redisUtil.get(cargoDetectedKey);
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()))) {
log.info("车机上报传感器为空, 或者 被按下且任务非仅放货任务 :{} ,任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId());
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())) {
log.info("仅放货任务,传感器未被按下,所以不执行任务 :{}, 任务id {}", taskDetailDO.getRobotNo(), taskDetailDO.getId());
continue;
}
}*/
List<TaskRobotNoLimittationAreaDTO> robotNoLimitions = null;
if (ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) {
@ -550,7 +550,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
}
if (ObjectUtil.isNotEmpty(pathPlanningList)) {
log.info("作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList));
log.info("111111作业任务下发给PP :{}", JSON.toJSONString(pathPlanningList));
commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST);
}
}
@ -578,7 +578,7 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
Integer locationStorey = toLocation.getLocationStorey() - 1;
double height = locationStorey * defaultTrayHeight;
log.info("放货设置默认高度 :{}", pathPlanning.getReleaseHeight());
log.info("放货设置默认高度 :{}", height);
pathPlanning.setReleaseHeight(height);
}

View File

@ -12,4 +12,12 @@
<delete id="deletByRobotTaskId">
delete from robot_task_cycle where robot_task_id = #{robotTaskId}
</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>