Compare commits
4 Commits
a59d1ec224
...
0072a4e4d0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0072a4e4d0 | ||
![]() |
0c07ba959e | ||
![]() |
6737505fed | ||
![]() |
0f3a4ac1ed |
@ -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) {
|
||||||
|
@ -9,6 +9,8 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
|
|||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MQTT回调
|
* MQTT回调
|
||||||
@ -17,6 +19,9 @@ import java.nio.charset.StandardCharsets;
|
|||||||
@Configuration
|
@Configuration
|
||||||
public class MqttCallBack implements MqttCallback {
|
public class MqttCallBack implements MqttCallback {
|
||||||
|
|
||||||
|
|
||||||
|
private static final ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 与服务器断开的回调
|
* 与服务器断开的回调
|
||||||
*/
|
*/
|
||||||
@ -35,16 +40,19 @@ public class MqttCallBack implements MqttCallback {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
|
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
|
||||||
String msg = new String(mqttMessage.getPayload(), StandardCharsets.UTF_8);
|
fixedThreadPool.execute(() -> {
|
||||||
|
String msg = new String(mqttMessage.getPayload(), StandardCharsets.UTF_8);
|
||||||
// log.info("[MQTT]接收当前消息为 :{}", msg);
|
// log.info("[MQTT]接收当前消息为 :{}", msg);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
MqttService mqttService = MqttFactory.getMqttFactory(topic);
|
MqttService mqttService = MqttFactory.getMqttFactory(topic);
|
||||||
mqttService.analysisMessage(msg);
|
mqttService.analysisMessage(msg);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.info("消费失败的消息主题 :{},消息内容 :{}", topic, msg);
|
log.info("消费失败的消息主题 :{},消息内容 :{}", topic, msg);
|
||||||
log.info("消费消息异常 :{}", e);
|
log.info("消费消息异常 :{}", e);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -34,7 +34,8 @@ management:
|
|||||||
# MQTT
|
# MQTT
|
||||||
mqtt:
|
mqtt:
|
||||||
# host: tcp://123.57.12.40:1883
|
# host: tcp://123.57.12.40:1883
|
||||||
host: tcp://10.10.100.42:1883
|
# host: tcp://10.10.100.42:1883
|
||||||
|
host: tcp://127.0.0.1:1883
|
||||||
username: adminuser
|
username: adminuser
|
||||||
password: adminuser
|
password: adminuser
|
||||||
qos: 0
|
qos: 0
|
||||||
|
@ -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, "车辆任务主表不存在");
|
||||||
|
@ -98,6 +98,7 @@ public class PathApiImpl implements PathApi {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void ppDistributionTaskFail(String message) {
|
public void ppDistributionTaskFail(String message) {
|
||||||
|
log.info("111111路径规划上报失败的消息");
|
||||||
TenantContextHolder.setTenantId(1L);
|
TenantContextHolder.setTenantId(1L);
|
||||||
RobotWarnMsgSaveReqVO data = JSON.parseObject(message, RobotWarnMsgSaveReqVO.class);
|
RobotWarnMsgSaveReqVO data = JSON.parseObject(message, RobotWarnMsgSaveReqVO.class);
|
||||||
warnMsgService.createWarnMsg(data);
|
warnMsgService.createWarnMsg(data);
|
||||||
@ -108,7 +109,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 +146,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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()) {
|
||||||
|
@ -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());
|
||||||
|
@ -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()));
|
||||||
|
@ -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())) {
|
||||||
|
@ -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);
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
@ -84,6 +84,7 @@ public class PositionMapItemDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* AGV编号
|
* AGV编号
|
||||||
*/
|
*/
|
||||||
|
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||||
private String robotNo;
|
private String robotNo;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
@ -565,6 +565,7 @@ public class PathPlanningServiceImpl implements PathPlanningService {
|
|||||||
public void updateBehavior(String orderId, String robotNo, String behaviorId, String isReach) {
|
public void updateBehavior(String orderId, String robotNo, String behaviorId, String isReach) {
|
||||||
TaskPathPlanningDTO build = TaskPathPlanningDTO.builder().orderId(orderId).robotNo(robotNo)
|
TaskPathPlanningDTO build = TaskPathPlanningDTO.builder().orderId(orderId).robotNo(robotNo)
|
||||||
.behaviorId(behaviorId).isReach(isReach).build();
|
.behaviorId(behaviorId).isReach(isReach).build();
|
||||||
|
log.info("111111发给PP的数据 :{}",JSON.toJSONString(build));
|
||||||
commonApi.commonMethod(build, PathPlanningTopicConstant.UPDATE_BEHAVIOR);
|
commonApi.commonMethod(build, PathPlanningTopicConstant.UPDATE_BEHAVIOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,7 +575,7 @@ public class PathPlanningServiceImpl implements PathPlanningService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void pathPlanningMovePose(String message) {
|
public void pathPlanningMovePose(String message) {
|
||||||
log.info("车辆即将行走的点位 :{}",message);
|
log.info("111111路径规划车辆即将行走的点位 :{}",message);
|
||||||
PathPlanningMovePoseVO robotStatusData = JSON.parseObject(message, PathPlanningMovePoseVO.class);
|
PathPlanningMovePoseVO robotStatusData = JSON.parseObject(message, PathPlanningMovePoseVO.class);
|
||||||
String mac = robotInformationService.getMacByRobotNo(robotStatusData.getRobotNo());
|
String mac = robotInformationService.getMacByRobotNo(robotStatusData.getRobotNo());
|
||||||
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + mac;
|
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + mac;
|
||||||
|
@ -162,7 +162,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
@Value("${zn.is_simulation:false}")
|
@Value("${zn.is_simulation:false}")
|
||||||
private Boolean isSimulation;
|
private Boolean isSimulation;
|
||||||
|
|
||||||
@Value("${zn.restore_task_restart:true}")
|
@Value("${zn.restore_task_ restart:true}")
|
||||||
private Boolean restoreTaskRestart;
|
private Boolean restoreTaskRestart;
|
||||||
|
|
||||||
@Value("${zn.full_electricity:95}")
|
@Value("${zn.full_electricity:95}")
|
||||||
@ -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
|
||||||
@ -543,6 +559,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
// 删除
|
// 删除
|
||||||
informationMapper.deleteById(id);
|
informationMapper.deleteById(id);
|
||||||
|
|
||||||
|
PositionMapItemDO positionMapItem = positionMapItemMapper.selectOne(new LambdaQueryWrapper<PositionMapItemDO>()
|
||||||
|
.eq(PositionMapItemDO::getRobotNo, robotInformationDO.getRobotNo())
|
||||||
|
.eq(PositionMapItemDO::getType, PositionMapItemEnum.STOP.getType())
|
||||||
|
.last("limit 1"));
|
||||||
|
if (ObjectUtil.isNotEmpty(positionMapItem)) {
|
||||||
|
positionMapItem.setRobotNo(null);
|
||||||
|
positionMapItem.setUseStatus(UseStatusEnum.FREE.getType());
|
||||||
|
positionMapItemMapper.updateById(positionMapItem);
|
||||||
|
}
|
||||||
|
|
||||||
//释放暂停记录
|
//释放暂停记录
|
||||||
releaseRobotStop(robotInformationDO);
|
releaseRobotStop(robotInformationDO);
|
||||||
|
|
||||||
@ -668,7 +694,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 +1282,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 +1344,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 +1519,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<>();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务日志分页
|
* 任务日志分页
|
||||||
*
|
*
|
||||||
|
@ -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,
|
||||||
|
@ -205,6 +205,8 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map<Long, Long> sortMap = positionMapItems.stream().collect(Collectors.toMap(PositionMapItemDO::getId, PositionMapItemDO::getSortNum));
|
||||||
|
|
||||||
List<String> inStopPointRobotNos = new ArrayList<>();
|
List<String> inStopPointRobotNos = new ArrayList<>();
|
||||||
for (PositionMapItemDO positionMapItem : positionMapItems) {
|
for (PositionMapItemDO positionMapItem : positionMapItems) {
|
||||||
if (UseStatusEnum.USEING.getType().equals(positionMapItem.getUseStatus()) && ObjectUtil.isNotEmpty(positionMapItem.getRobotNo())) {
|
if (UseStatusEnum.USEING.getType().equals(positionMapItem.getUseStatus()) && ObjectUtil.isNotEmpty(positionMapItem.getRobotNo())) {
|
||||||
@ -285,8 +287,6 @@ public class RobotPathPlanningServiceImpl implements RobotPathPlanningService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<Long, Long> sortMap = positionMapItems.stream().collect(Collectors.toMap(PositionMapItemDO::getId, PositionMapItemDO::getSortNum));
|
|
||||||
|
|
||||||
//机器人不能行走的区域
|
//机器人不能行走的区域
|
||||||
List<TaskRobotNoLimittationAreaDTO> robotNoLimitationArea = getRobotNoLimitationArea(robots);
|
List<TaskRobotNoLimittationAreaDTO> robotNoLimitationArea = getRobotNoLimitationArea(robots);
|
||||||
Map<String, TaskRobotNoLimittationAreaDTO> robotNoLimittationAreaDTOMap =
|
Map<String, TaskRobotNoLimittationAreaDTO> robotNoLimittationAreaDTOMap =
|
||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>
|
Loading…
Reference in New Issue
Block a user