远遥登录

This commit is contained in:
cbs 2025-05-12 10:40:29 +08:00
parent 465f737edd
commit e46ccfc8ce
6 changed files with 28 additions and 12 deletions

View File

@ -1,15 +1,15 @@
package cn.iododer.yudao.module.mqtt.config;
import cn.iododer.yudao.module.mqtt.service.MqttService;
import cn.iododer.yudao.module.mqtt.service.RobotTaskStatusServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.IMqttAsyncClient;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import java.nio.charset.StandardCharsets;
/**
* MQTT回调
*/
@ -35,7 +35,7 @@ public class MqttCallBack implements MqttCallback {
*/
@Override
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
String msg = new String(mqttMessage.getPayload());
String msg = new String(mqttMessage.getPayload(), StandardCharsets.UTF_8);
// log.info("[MQTT]接收当前消息为 :{}", msg);
try {

View File

@ -228,7 +228,7 @@ public interface ErrorCodeConstants {
// ========== 机器人任务明细 1-002-036-000 ==========
ErrorCode TASK_DETAIL_NOT_EXISTS = new ErrorCode(1-002-036-001, "车辆任务明细不存在");
ErrorCode TASK_DETAIL_CHANGE_ROBOT = new ErrorCode(1-002-036-002, "非新单据不能修改车辆");
ErrorCode TASK_NOT_TAKE_RELEASE = new ErrorCode(1-002-036-003, "非取货任务,不能点击取货完成");
ErrorCode TASK_NOT_TAKE_RELEASE = new ErrorCode(1-002-036-003, "已经取完货,不能点击取货完成,只能点击任务完成");
// ========== 机器人任务明细 1-002-037-000 ==========
ErrorCode REDISSON_NOT_OBTAIN_LOCK = new ErrorCode(1-002-037-001, "有正在下发中的任务请稍后重试!");
@ -292,7 +292,6 @@ public interface ErrorCodeConstants {
ErrorCode REMOTE_NOT_HAVE_PATH_MATCH = new ErrorCode(1_002_053_007, "车辆未匹配路网");
ErrorCode REMOTE_AUTOMATIC_CAN_NOT_CHANGE_TO_FREE = new ErrorCode(1_002_053_008, "手动模式只能切换到自动模式");
ErrorCode REMOTE_FREE_CAN_NOT_CHANGE_TO_HAND_MOVEMENT = new ErrorCode(1_002_053_009, "自由模式只能切换到自动模式");
ErrorCode REMOTE_NOT_HAVE_BINDING_ROBOT = new ErrorCode(1_002_053_010, "远遥设备未选择车辆");
ErrorCode REMOTE_TASK_HAVE_CHOOSE = new ErrorCode(1_002_053_011, "此任务已经被远遥设备选中");
ErrorCode REMOTE_TASK_NOT_OCCUR_ERROR = new ErrorCode(1_002_053_012, "此任务未发发生4级异常");
ErrorCode REMOTE_TASK_NOT_TAKE_RELEASE = new ErrorCode(1_002_053_013, "非取货或者放货任务,不能转移");
@ -300,6 +299,8 @@ public interface ErrorCodeConstants {
ErrorCode REMOTE_ROBOT_HAVE_MORE_TASK = new ErrorCode(1_002_053_015, "此车辆有一个以上的处理中任务,请先检查数据");
ErrorCode REMOTE_ROBOT_HAVE_NOT_TASK = new ErrorCode(1_002_053_016, "此车辆没有处理中的任务");
ErrorCode REMOTE_ROBOT_CONNECT_FAIL = new ErrorCode(1_002_053_017, "与远遥工控机连接失败");
ErrorCode REMOTE_TRANSFER_NOT_SAME_ROBOT = new ErrorCode(1_002_053_018, "任务转移车辆与发生异常的车辆,不能是同一台车");
ErrorCode REMOTE_ROBOT_HAVE_TASK = new ErrorCode(1_002_053_019, "此车辆有处理中的任务,不能进行任务转移。请选择其他车辆");
// ========== 车辆摄像头信息 1_002_054_001 ==========
ErrorCode CAMERA_NOT_EXISTS = new ErrorCode(1_002_054_001, "车辆摄像头信息不存在");

View File

@ -8,5 +8,6 @@ package cn.iocoder.yudao.module.system.enums.oauth2;
public interface OAuth2ClientConstants {
String CLIENT_ID_DEFAULT = "default";
String CLIENT_ID_REMOTE = "remote";
}

View File

@ -51,6 +51,9 @@ public class AuthLoginReqVO {
@Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
private String socialState;
@Schema(description = "登录来源地址, 远遥传: remote")
private String clientId;
/**
* 开启验证码的 Group
*/

View File

@ -105,8 +105,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
}
String clientId = ObjectUtil.isNotEmpty(reqVO.getClientId()) ? reqVO.getClientId() : OAuth2ClientConstants.CLIENT_ID_DEFAULT;
// 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME, clientId);
}
@Override
@ -131,7 +134,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
// 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE);
return createTokenAfterLoginSuccess(user.getId(), reqVO.getMobile(), LoginLogTypeEnum.LOGIN_MOBILE, OAuth2ClientConstants.CLIENT_ID_DEFAULT);
}
private void createLoginLog(Long userId, String username,
@ -169,7 +172,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
// 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL);
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL,OAuth2ClientConstants.CLIENT_ID_DEFAULT);
}
@VisibleForTesting
@ -191,12 +194,12 @@ public class AdminAuthServiceImpl implements AdminAuthService {
}
}
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType) {
private AuthLoginRespVO createTokenAfterLoginSuccess(Long userId, String username, LoginLogTypeEnum logType, String clientId) {
// 插入登陆日志
createLoginLog(userId, username, logType, LoginResultEnum.SUCCESS);
// 创建访问令牌
OAuth2AccessTokenDO accessTokenDO = oauth2TokenService.createAccessToken(userId, getUserType().getValue(),
OAuth2ClientConstants.CLIENT_ID_DEFAULT, null);
clientId, null);
// 构建返回结果
return AuthConvert.INSTANCE.convert(accessTokenDO);
}
@ -256,7 +259,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
Long userId = userService.registerUser(registerReqVO);
// 3. 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(userId, registerReqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);
return createTokenAfterLoginSuccess(userId, registerReqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME,OAuth2ClientConstants.CLIENT_ID_DEFAULT);
}
@VisibleForTesting

View File

@ -307,6 +307,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
@Override
@Transactional(rollbackFor = Exception.class)
public RemoteRobotTransferDTO robotChangeMode(Integer remoteMode, String remoteIp, String robotNo, int remoteControllerPort, String remoteControllerIp) {
log.info("切换的模式 :{}, 远遥IP :{}, 车辆编号 :{}, 驾舱端口:{}, 驾舱IP :{}",remoteMode,remoteIp,robotNo,remoteControllerPort,remoteControllerIp);
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
if (lock.tryLock()) {
try {
@ -464,7 +465,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
.eq(RemoteControllerInformationDO::getRemoteIp, remoteIp)
.last("limit 1"));
if (ObjectUtil.isEmpty(information) || ObjectUtil.isEmpty(information.getRobotNo())) {
throw exception(REMOTE_NOT_HAVE_BINDING_ROBOT);
throw exception(REMOTE_DEVICE_NOT_SET_UP);
}
return information;
}
@ -491,9 +492,16 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
//任务异常
RobotTaskDetailDO taskDetail = taskDetailService.getTaskDetail(data.getId());
String oldRobotNo = taskDetail.getRobotNo();
List<RobotDoingTaskDTO> robotDoingTaskNo = taskDetailService.getRobotDoingTaskNo(oldRobotNo);
if (ObjectUtil.isNotEmpty(robotDoingTaskNo)) {
throw exception(REMOTE_ROBOT_HAVE_TASK);
}
if (ZeroOneEnum.ZERO.getType().equals(taskDetail.getOccurError())) {
throw exception(REMOTE_TASK_NOT_OCCUR_ERROR);
}
if (information.getRobotNo().equals(oldRobotNo)) {
throw exception(REMOTE_TRANSFER_NOT_SAME_ROBOT);
}
taskDetail.setRobotNo(information.getRobotNo());
if (!RobotTaskTypeEnum.TAKE_RELEASE.getType().equals(taskDetail.getTaskType())
&& !RobotTaskTypeEnum.TAKE.getType().equals(taskDetail.getTaskType())