检测距离/代码优化

This commit is contained in:
cbs 2025-06-27 15:55:25 +08:00
parent 1cc7fd843d
commit fe186d3117
17 changed files with 77 additions and 12 deletions

View File

@ -147,7 +147,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
return;
}
if (RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getExecutionState())
if (ObjectUtil.isNotEmpty(robotCompleteTaskDTO.getCommandStatus())
&& RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getCommandStatus().getExecutionState())) {
log.info("任务未开始 :{}", robotCompleteTaskDTO.getOrderId());
}else if (RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getExecutionState())
|| RobotExecutionStateConstant.STOP.equals(robotCompleteTaskDTO.getExecutionState())
|| RobotExecutionStateConstant.CLOSE.equals(robotCompleteTaskDTO.getExecutionState())) {
log.info("任务未开始/暂停/取消 :{}", robotCompleteTaskDTO.getOrderId());
@ -571,6 +574,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
Long taskStage = robotTaskDetailDO.getTaskStage();
log.info("任务 :{} , 当前阶段 :{}",robotCompleteTaskDTO.getOrderId(),taskStage);
RobotTaskDO robotTask = robotTaskMapper.selectById(robotTaskDetailDO.getRobotTaskId());
@ -579,7 +583,9 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
RobotTaskDetailActionLogSaveReqVO logOne = new RobotTaskDetailActionLogSaveReqVO();
if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType) && RobotTaskStageEnum.UN_START.getType().equals(taskStage)) {
if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType) && (RobotTaskStageEnum.UN_START.getType().equals(taskStage)
|| RobotTaskStageEnum.GO_TAKE.getType().equals(taskStage)
|| RobotTaskStageEnum.TAKEING.getType().equals(taskStage))) {
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getFromLocationNo() + "取货");
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
} else if (CommandTypeEnum.WORK_PICK_UP_GOODS.getType().equals(commandType)) {

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.api.robot;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.system.api.robot.vo.RobotWorkStatusDTO;
import cn.iocoder.yudao.module.system.constant.robot.RobotExecutionStateConstant;
@ -47,6 +48,10 @@ public class RobotWorkStatusApiImpl implements RobotWorkStatusApi {
TenantContextHolder.setTenantId(1L);
RobotWorkStatusDTO data = JSON.parseObject(message, RobotWorkStatusDTO.class);
if (ObjectUtil.isEmpty(data.getOrderId())) {
log.info("任务id为空,不进行处理");
return;
}
String robotNo = robotInformationService.getRobotNoByMac(data.getMac());
RobotOperationLogSaveReqVO createReqVO = RobotOperationLogSaveReqVO.builder()
.orderId(Long.valueOf(data.getOrderId()))

View File

@ -72,9 +72,9 @@ public class MqttUtils {
}
if (message.length() > 510) {
log.info("发送的主题 :{}, 内容 :{}",topic, message.substring(0, 500));
log.info("111111发送的主题 :{}, 内容 :{}",topic, message.substring(0, 500));
}else {
log.info("发送的主题 :{}, 内容 :{}",topic, message);
log.info("111111发送的主题 :{}, 内容 :{}",topic, message);
}
}

View File

@ -36,4 +36,5 @@ public class ZnConfigConstant {
private Boolean taskNotCheck;
private Double checkShortestDistance;
private Double checkLongestDistance;
private String mapCheckDistance;
}

View File

@ -165,4 +165,12 @@ public class PositionMapItemController {
map.put("LINE",lineList);
return success(map);
}
@GetMapping("/getCheckDistance")
@Operation(summary = "获取检测点距离")
@PreAuthorize("@ss.hasPermission('system:position-map-item:getCheckDistance')")
public CommonResult<String> getCheckDistance() {
String distance = positionMapItemService.getCheckDistance();
return success(distance);
}
}

View File

@ -128,7 +128,6 @@ public class RobotInformationController {
@Operation(summary = "获得车辆信息分页")
@PreAuthorize("@ss.hasPermission('robot:information:list')")
public CommonResult<PageResult<RobotInformationPageRespVO>> getRobotList(@Valid RobotInformationPageReqVO pageReqVO) {
pageReqVO.setPageSize(300);
PageResult<RobotInformationPageRespVO> pageResult = informationService.getInformationPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, RobotInformationPageRespVO.class));
}

View File

@ -42,7 +42,7 @@ public class ThreeDimensionalScheduled {
private static final ExecutorService FIXED_THREAD_POOL = Executors.newFixedThreadPool(3);
// 这个方法将每200毫秒执行一次
// @Scheduled(fixedDelay = 300, timeUnit = TimeUnit.MILLISECONDS)
@Scheduled(fixedDelay = 300, timeUnit = TimeUnit.MILLISECONDS)
public void executeTask() {
FIXED_THREAD_POOL.execute(this::sendData);
}

View File

@ -174,6 +174,12 @@ public class PathPlanningServiceImpl implements PathPlanningService {
assembleDataToPP(relatedPathNode, positionMapLineDOS);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// commonApi.commonMethod(new PositionMapLineDTO(), PathPlanningTopicConstant.SYNCHRONOUS_ALL_MAP_LINE_END);
mqttUtils.pub(PathPlanningTopicConstant.SYNCHRONOUS_ALL_MAP_LINE_END,JSON.toJSONString(new PositionMapLineDO()));
}

View File

@ -151,4 +151,6 @@ public interface PositionMapItemService extends IService<PositionMapItemDO> {
* @param mapId
*/
void checkHaveBindChangePoint(Long mapId);
String getCheckDistance();
}

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.mqtt.api.task.dto.Pose2ds;
import cn.iocoder.yudao.module.system.config.poperties.ZnConfigConstant;
import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant;
import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapConditionDTO;
@ -26,6 +27,7 @@ import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService;
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@ -66,6 +68,9 @@ public class PositionMapItemServiceImpl extends ServiceImpl<PositionMapItemMappe
@Resource
private PositionChangePointBindingMapper positionChangePointBindingMapper;
@Autowired
private ZnConfigConstant znConfigConstant;
@Override
public Long createPositionMapItem(PositionMapItemSaveReqVO createReqVO) {
// 插入
@ -267,4 +272,9 @@ public class PositionMapItemServiceImpl extends ServiceImpl<PositionMapItemMappe
throw exception(MAP_EXIST_BINDING_POINT);
}
@Override
public String getCheckDistance() {
return znConfigConstant.getMapCheckDistance();
}
}

View File

@ -698,6 +698,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
List<RobotCameraAddVO> cameraAddVOList = cameraService.getCameraByRobotNo(robotInformationDO.getRobotNo());
bean.setCameraAddVOList(cameraAddVOList);
List<RobotMapStopDO> stopRobotNoByRobotNo = mapStopService.getStopRobotNoByRobotNo(robotInformationDO.getRobotNo());
if (ObjectUtil.isEmpty(stopRobotNoByRobotNo)) {
return bean;
} else if (RobotStatusEnum.STAND_BY.getType().equals(robotInformationDO.getRobotStatus())) {
robotInformationDO.setRobotStatus(RobotStatusEnum.STOP_FREE.getType());
} else {
robotInformationDO.setRobotStatus(RobotStatusEnum.STOP_DOING.getType());
}
return bean;
}
@ -712,11 +722,19 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
@Override
public PageResult<RobotInformationPageRespVO> getInformationPage(RobotInformationPageReqVO pageReqVO) {
PageResult<RobotInformationDO> pageResult = informationMapper.selectPage(pageReqVO);
List<RobotInformationDO> list = informationMapper.selectList(new LambdaQueryWrapperX<RobotInformationDO>()
.eqIfPresent(RobotInformationDO::getRobotModelId, pageReqVO.getRobotModelId())
.eqIfPresent(RobotInformationDO::getRobotModelNumber, pageReqVO.getRobotModelNumber())
.likeIfPresent(RobotInformationDO::getRobotNo, pageReqVO.getRobotNo())
.eqIfPresent(RobotInformationDO::getRobotTaskModel, pageReqVO.getRobotTaskModel())
.eqIfPresent(RobotInformationDO::getMacAddress, pageReqVO.getMacAddress())
.eqIfPresent(RobotInformationDO::getRobotStatus, pageReqVO.getRobotStatus())
.betweenIfPresent(RobotInformationDO::getCreateTime, pageReqVO.getCreateTime())
.orderByDesc(RobotInformationDO::getId));
PageResult<RobotInformationPageRespVO> dataPage = new PageResult<>();
dataPage.setTotal(pageResult.getTotal());
List<RobotInformationDO> list = pageResult.getList();
Long total = ObjectUtil.isEmpty(list) ? 0L : list.size();
dataPage.setTotal(total);
List<RobotInformationPageRespVO> targetList = BeanUtil.copyToList(list, RobotInformationPageRespVO.class);
List<RobotMapStopDO> allRobotMapStops = mapStopService.getAllRobotMapStops(ZeroOneEnum.ONE.getType());
@ -1772,6 +1790,10 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
TaskToPathPlanningDTO pathPlanning = JSONUtil.toBean((String) o, TaskToPathPlanningDTO.class);
robotInformationDO.setTaskDetailId(id);
robotInformationDO.setRobotStatus(RobotStatusEnum.DOING.getType());
informationMapper.updateById(robotInformationDO);
TaskRobotNoLimittationAreaDTO taskRobotNoLimittationAreaDTO =
robotPathPlanningService.getRobotNoLimitationArea(Collections.singletonList(robotInformationDO)).get(0);

View File

@ -1687,6 +1687,9 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
case RELEASE:
msg = "放货点 " + robotTaskRespVO.getToLocationNo();
break;
case MOVE_TO_POINT:
msg = "移动到点位 " + robotTaskRespVO.getToLocationNo();
break;
default:
log.error("任务类型不存在");
}

View File

@ -80,11 +80,11 @@ public class DistributeTasksServiceImpl implements DistributeTasksService {
CommonConfigDO commonConfigDO = configMapper.selectOne(new LambdaQueryWrapper<CommonConfigDO>()
.eq(CommonConfigDO::getConfigType, CommandConfigTypeEnum.CHARG_CONFIG.getType()));
Boolean needDoCharge = needDoCharge(commonConfigDO);
/*Boolean needDoCharge = needDoCharge(commonConfigDO);
if (needDoCharge) {
log.info("所有机器人都需要去执行充电任务");
return pair;
}
}*/
List<String> remoteRobotNos = controllerInformationMapper.getRemoteControllerRobotNos();
log.info("远遥中的车辆 :{}",JSON.toJSONString(remoteRobotNos));

View File

@ -120,7 +120,7 @@ public class RobotMapStopServiceImpl extends ServiceImpl<RobotMapStopMapper, Rob
@Override
public List<String> getStopRobotNoByMapIds(Long id) {
List<RobotMapStopDO> positionMapItems = mapStopMapper.selectList(new LambdaQueryWrapperX<RobotMapStopDO>()
.eq(RobotMapStopDO::getStopType, ZeroOneEnum.ZERO.getType())
.eq(RobotMapStopDO::getStopType, ZeroOneEnum.ONE.getType())
.eq(RobotMapStopDO::getPositionMapId, id));
if (ObjectUtil.isEmpty(positionMapItems)) {
return new ArrayList<>();

View File

@ -214,6 +214,7 @@ zn:
task_not_check: true # 创建任务不校验
check_shortest_distance: 1.5 # 检测点最短距离
check_longest_distance: 3.0 # 检测点最长距离
map_check_distance: 2.2 #检测点成成距离
#海康威视的相关配置

View File

@ -249,6 +249,7 @@ zn:
task_not_check: true # 创建任务不校验
check_shortest_distance: 1.5 # 检测点最短距离
check_longest_distance: 3.0 # 检测点最长距离
map_check_distance: 2.2 #检测点成成距离
logging:
file:

View File

@ -242,6 +242,7 @@ zn:
task_not_check: true # 创建任务不校验
check_shortest_distance: 1.5 # 检测点最短距离
check_longest_distance: 3.0 # 检测点最长距离
map_check_distance: 2.2 #检测点成成距离
#海康威视的相关配置
isc: