远遥登录
This commit is contained in:
parent
465f737edd
commit
e46ccfc8ce
@ -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 {
|
||||
|
@ -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, "车辆摄像头信息不存在");
|
||||
|
@ -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";
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
@ -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())
|
||||
|
Loading…
Reference in New Issue
Block a user