处理车机上报的信息
This commit is contained in:
parent
ecfcac2b65
commit
3aaff006c2
@ -749,50 +749,34 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper,RobotTaskD
|
||||
|
||||
List<TaskPPDistribution> list = Arrays.asList(distribution);
|
||||
|
||||
List<TaskPPDistribution> taskList = list.stream()
|
||||
.filter(v -> TaskTypeEnum.TASK.getType().equals(v.getType()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<TaskPPDistribution> chargeList = list.stream()
|
||||
.filter(v -> TaskTypeEnum.CHARGE.getType().equals(v.getType()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<Long> detailIds = new ArrayList<>();
|
||||
|
||||
Map<Long, TaskPPDistribution> taskMap =
|
||||
list.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity()));
|
||||
|
||||
Map<Long,String> deviceNoMap = new HashMap<>();
|
||||
List<RobotChargeLogDO> robotChargeLogs = null;
|
||||
RobotChargeLogDO robotChargeLogs = null;
|
||||
Set<String> robotNos = new HashSet<>();
|
||||
robotNos.add(distribution.getRobotNo());
|
||||
/**
|
||||
* 充电
|
||||
*/
|
||||
if (ObjectUtil.isNotEmpty(chargeList)) {
|
||||
List<Long> chargeIds = chargeList.stream().map(TaskPPDistribution::getId).collect(Collectors.toList());
|
||||
robotChargeLogs = chargeLogMapper.selectBatchIds(chargeIds);
|
||||
robotChargeLogs.stream().forEach(taskDetailDO -> {
|
||||
taskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType());
|
||||
});
|
||||
if (TaskTypeEnum.CHARGE.getType().equals(distribution.getType())) {
|
||||
robotChargeLogs = chargeLogMapper.selectById(distribution.getId());
|
||||
|
||||
robotChargeLogs.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType());
|
||||
chargeLogMapper.updateBatch(robotChargeLogs);
|
||||
Set<String> robotNos = chargeList.stream().map(TaskPPDistribution::getRobotNo).collect(Collectors.toSet());
|
||||
|
||||
robotInformationMapper.updateRobotListStatus(robotNos,RobotStatusEnum.CHARGE.getType());
|
||||
robotChargeLogs.stream()
|
||||
.filter(v -> ObjectUtil.isNotEmpty(v.getTaskDetailId()))
|
||||
.forEach(v -> {
|
||||
deviceNoMap.put(v.getTaskDetailId(),v.getDeviceNo());
|
||||
detailIds.add(v.getTaskDetailId());
|
||||
});
|
||||
if (ObjectUtil.isNotEmpty(robotChargeLogs.getTaskDetailId())) {
|
||||
deviceNoMap.put(robotChargeLogs.getTaskDetailId(),robotChargeLogs.getDeviceNo());
|
||||
detailIds.add(robotChargeLogs.getTaskDetailId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务
|
||||
*/
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
Set<String> robotNos = taskList.stream().map(TaskPPDistribution::getRobotNo).collect(Collectors.toSet());
|
||||
if (TaskTypeEnum.TASK.getType().equals(distribution.getType())) {
|
||||
robotInformationMapper.updateRobotListStatus(robotNos,RobotStatusEnum.DOING.getType());
|
||||
|
||||
List<Long> ids = taskList.stream().map(TaskPPDistribution::getId).collect(Collectors.toList());
|
||||
detailIds.addAll(ids);
|
||||
detailIds.add(distribution.getId());
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(detailIds)) {
|
||||
@ -800,9 +784,8 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper,RobotTaskD
|
||||
taskDetailDOS.stream().forEach(taskDetailDO -> {
|
||||
taskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.DOING.getType());
|
||||
taskDetailDO.setStartTime(LocalDateTime.now());
|
||||
TaskPPDistribution taskPPDistribution = taskMap.get(taskDetailDO.getId());
|
||||
if (ObjectUtil.isNotEmpty(taskPPDistribution) && ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) {
|
||||
taskDetailDO.setRobotNo(taskPPDistribution.getRobotNo());
|
||||
if ( ObjectUtil.isEmpty(taskDetailDO.getRobotNo())) {
|
||||
taskDetailDO.setRobotNo(distribution.getRobotNo());
|
||||
}
|
||||
if (ObjectUtil.isEmpty(taskDetailDO.getToLocationNo())
|
||||
&& ObjectUtil.isNotEmpty(deviceNoMap.get(taskDetailDO.getId()))) {
|
||||
@ -821,8 +804,8 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper,RobotTaskD
|
||||
taskMapper.updateBatch(tasks);
|
||||
}
|
||||
|
||||
robotCommonTaskService.sendTaskToRobot(taskList);
|
||||
robotCommonTaskService.sendChargeTaskToRobot(chargeList,robotChargeLogs);
|
||||
robotCommonTaskService.sendTaskToRobot(distribution);
|
||||
robotCommonTaskService.sendChargeTaskToRobot(distribution,robotChargeLogs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,11 +16,11 @@ public interface RobotCommonTaskService {
|
||||
* 组装任务下发给车机
|
||||
* @param list
|
||||
*/
|
||||
void sendTaskToRobot(List<TaskPPDistribution> list);
|
||||
void sendTaskToRobot(TaskPPDistribution taskPPDistribution);
|
||||
|
||||
/**
|
||||
* 发送充电任务给车机
|
||||
* @param chargeList
|
||||
*/
|
||||
void sendChargeTaskToRobot(List<TaskPPDistribution> chargeList,List<RobotChargeLogDO> robotChargeLogs);
|
||||
void sendChargeTaskToRobot(TaskPPDistribution chargeList,RobotChargeLogDO robotChargeLogs);
|
||||
}
|
||||
|
@ -133,54 +133,51 @@ public class RobotCommonTaskServiceImpl implements RobotCommonTaskService {
|
||||
*/
|
||||
@Override
|
||||
@Async(NOTIFY_THREAD_POOL_TASK_EXECUTOR)
|
||||
public void sendTaskToRobot(List<TaskPPDistribution> list) {
|
||||
List<Long> detailIds = list.stream().map(TaskPPDistribution::getId).collect(Collectors.toList());
|
||||
List<RobotTaskDetailDO> taskDetailDOS = taskDetailMapper.selectBatchIds(detailIds);
|
||||
Map<Long, RobotTaskDetailDO> taskDetailMap =
|
||||
taskDetailDOS.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity()));
|
||||
public void sendTaskToRobot(TaskPPDistribution v) {
|
||||
RobotTaskDetailDO robotTaskDetailDO = taskDetailMapper.selectById(v.getId());
|
||||
|
||||
Set<Long> fromLocationIds = taskDetailDOS.stream().map(v -> v.getFromLocationId()).collect(Collectors.toSet());
|
||||
Set<Long> toLocationIds = taskDetailDOS.stream().map(v -> v.getToLocationId()).collect(Collectors.toSet());
|
||||
Set<Long> locationIds = new HashSet<>();
|
||||
locationIds.addAll(fromLocationIds);
|
||||
locationIds.addAll(toLocationIds);
|
||||
if (ObjectUtil.isNotEmpty(robotTaskDetailDO.getFromLocationId())) {
|
||||
locationIds.add(robotTaskDetailDO.getFromLocationId());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(robotTaskDetailDO.getToLocationId())) {
|
||||
locationIds.add(robotTaskDetailDO.getToLocationId());
|
||||
}
|
||||
|
||||
List<WareHouseLocationDO> wareHouseLocationDOS =
|
||||
houseLocationMapper.selectList(new LambdaQueryWrapperX<WareHouseLocationDO>()
|
||||
.in(WareHouseLocationDO::getId, locationIds));
|
||||
Map<Long, WareHouseLocationDO> locationMap =
|
||||
wareHouseLocationDOS.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity()));
|
||||
wareHouseLocationDOS.stream().collect(Collectors.toMap(s -> s.getId(), Function.identity()));
|
||||
|
||||
List<RobotTaskDetailActionLogDO> logs = new ArrayList<>();
|
||||
for (TaskPPDistribution v : list) {
|
||||
RobotTaskDetailDO robotTaskDetailDO = taskDetailMap.get(v.getId());
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrder_id(v.getId().toString());
|
||||
|
||||
String mac = robotInformationService.getMacByRobotNo(v.getRobotNo());
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac);
|
||||
robotTask.setOrder_type(RobotTaksOrderTypeEnum.TASK.getType());
|
||||
//取放
|
||||
Pair<List<RobotAcceptTaskData>, List<RobotTaskDetailActionLogDO>> pair = null;
|
||||
if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = takeReleaseTask(v, robotTaskDetailDO, locationMap);
|
||||
//移动
|
||||
} else if (RobotTaskTypeEnum.MOVE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = moveTask(v, robotTaskDetailDO, locationMap);
|
||||
//仅取货
|
||||
} else if (RobotTaskTypeEnum.TAKE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = takeTask(v, robotTaskDetailDO, locationMap);
|
||||
//仅放货
|
||||
} else if (RobotTaskTypeEnum.RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = releaseTask(v, robotTaskDetailDO, locationMap);
|
||||
}
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrder_id(v.getId().toString());
|
||||
|
||||
if (ObjectUtil.isNotEmpty(pair)) {
|
||||
robotTask.setData(pair.getLeft());
|
||||
logs.addAll(pair.getRight());
|
||||
log.info("发送给车机下发任务 :{}", JSON.toJSONString(robotTask));
|
||||
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
||||
}
|
||||
String mac = robotInformationService.getMacByRobotNo(v.getRobotNo());
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac);
|
||||
robotTask.setOrder_type(RobotTaksOrderTypeEnum.TASK.getType());
|
||||
//取放
|
||||
Pair<List<RobotAcceptTaskData>, List<RobotTaskDetailActionLogDO>> pair = null;
|
||||
if (RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = takeReleaseTask(v, robotTaskDetailDO, locationMap);
|
||||
//移动
|
||||
} else if (RobotTaskTypeEnum.MOVE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = moveTask(v, robotTaskDetailDO, locationMap);
|
||||
//仅取货
|
||||
} else if (RobotTaskTypeEnum.TAKE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = takeTask(v, robotTaskDetailDO, locationMap);
|
||||
//仅放货
|
||||
} else if (RobotTaskTypeEnum.RELEASE.getType().equals(robotTaskDetailDO.getTaskType())) {
|
||||
pair = releaseTask(v, robotTaskDetailDO, locationMap);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(pair)) {
|
||||
robotTask.setData(pair.getLeft());
|
||||
logs.addAll(pair.getRight());
|
||||
log.info("发送给车机下发任务 :{}", JSON.toJSONString(robotTask));
|
||||
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
||||
}
|
||||
|
||||
taskDetailActionLogService.addLogInCache(logs);
|
||||
@ -667,41 +664,35 @@ public class RobotCommonTaskServiceImpl implements RobotCommonTaskService {
|
||||
*/
|
||||
@Override
|
||||
@Async(NOTIFY_THREAD_POOL_TASK_EXECUTOR)
|
||||
public void sendChargeTaskToRobot(List<TaskPPDistribution> chargeList, List<RobotChargeLogDO> robotChargeLogs) {
|
||||
if (ObjectUtil.isEmpty(chargeList) || ObjectUtil.isEmpty(robotChargeLogs)) {
|
||||
public void sendChargeTaskToRobot(TaskPPDistribution v, RobotChargeLogDO chargeLogDO) {
|
||||
if (ObjectUtil.isEmpty(v) || ObjectUtil.isEmpty(chargeLogDO)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Long, RobotChargeLogDO> chargeMap =
|
||||
robotChargeLogs.stream().collect(Collectors.toMap(v -> v.getId(), Function.identity()));
|
||||
|
||||
List<RobotTaskDetailActionLogDO> logList = new ArrayList<>();
|
||||
for (TaskPPDistribution v : chargeList) {
|
||||
RobotChargeLogDO chargeLogDO = chargeMap.get(v.getId());
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrder_id(v.getId().toString());
|
||||
|
||||
String mac = robotInformationService.getMacByRobotNo(v.getRobotNo());
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac);
|
||||
robotTask.setOrder_type(RobotTaksOrderTypeEnum.AUTO_CHARGE.getType());
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrder_id(v.getId().toString());
|
||||
|
||||
Integer serial = 1;
|
||||
String mac = robotInformationService.getMacByRobotNo(v.getRobotNo());
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_TOPIC + mac);
|
||||
robotTask.setOrder_type(RobotTaksOrderTypeEnum.AUTO_CHARGE.getType());
|
||||
|
||||
List<RobotAcceptTaskData> list = new ArrayList<>();
|
||||
//移动
|
||||
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
||||
String msg = charge + chargeLogDO.getDeviceNo();
|
||||
RobotAcceptTaskData oneMoveAndFork = onlyMove(logOne, serial, v, msg);
|
||||
Integer serial = 1;
|
||||
|
||||
list.add(oneMoveAndFork);
|
||||
robotTask.setData(list);
|
||||
logList.add(logOne);
|
||||
List<RobotAcceptTaskData> list = new ArrayList<>();
|
||||
//移动
|
||||
RobotTaskDetailActionLogDO logOne = new RobotTaskDetailActionLogDO();
|
||||
String msg = charge + chargeLogDO.getDeviceNo();
|
||||
RobotAcceptTaskData oneMoveAndFork = onlyMove(logOne, serial, v, msg);
|
||||
|
||||
log.info("发送给车机下发--充电任务 :{}", JSON.toJSONString(robotTask));
|
||||
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
||||
}
|
||||
list.add(oneMoveAndFork);
|
||||
robotTask.setData(list);
|
||||
logList.add(logOne);
|
||||
|
||||
log.info("发送给车机下发--充电任务 :{}", JSON.toJSONString(robotTask));
|
||||
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
||||
|
||||
//todo 充电后往 task_detail更新下 to_location_no
|
||||
taskDetailActionLogService.addLogInCache(logList);
|
||||
}
|
||||
|
||||
|
@ -245,8 +245,8 @@ zn:
|
||||
scan: 机器人正在扫描
|
||||
parking_space: 机器人正在前往停车位
|
||||
charge: 机器人正在前往充电位
|
||||
action_entity_cache_time: 8*60*60 #机器人所有动作缓存时间
|
||||
doing_action_cache_time: 3*60*60 #单个动作缓存时间
|
||||
action_entity_cache_time: 28800 #机器人所有动作缓存时间 8小时
|
||||
doing_action_cache_time: 28800 #单个动作缓存时间 8小时
|
||||
robot_chearg: #机器人充电的配置
|
||||
release_location_number_config: 50 #同一组序号,越大越先执行
|
||||
priority_config: 50 #优先级
|
||||
|
Loading…
Reference in New Issue
Block a user