修改远遥socket连接
This commit is contained in:
parent
fb593e35f8
commit
e768ed379e
@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.module.remote.controller.admin.robot.dto.RemoteControllerSocketDTO;
|
||||
import cn.iocoder.yudao.module.remote.enums.robot.RemoteIpTypeEnum;
|
||||
import cn.iocoder.yudao.module.remote.util.crc.CRCUtil;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -52,7 +53,7 @@ public class RemoteControllerProcessor {
|
||||
private final String ONE = "01";
|
||||
private final String TWO = "02";
|
||||
|
||||
public void addCache() {
|
||||
public void addCache(RemoteRobotTransferDTO dto) {
|
||||
RemoteControllerSocketDTO remoteControllerSocketDTO = cache.get(remoteControllerIp);
|
||||
log.info("缓存的数据 :{}", JSON.toJSONString(remoteControllerSocketDTO));
|
||||
if (ObjectUtil.isNotEmpty(remoteControllerSocketDTO)) {
|
||||
@ -71,15 +72,15 @@ public class RemoteControllerProcessor {
|
||||
}
|
||||
remoteControllerSocketDTO.setHost(remoteControllerIp);
|
||||
remoteControllerSocketDTO.setPort(remoteControllerPort);
|
||||
Socket socket = new Socket();
|
||||
try {
|
||||
Socket socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(remoteControllerIp, remoteControllerPort), 1000);
|
||||
remoteControllerSocketDTO.setSocket(socket);
|
||||
} catch (IOException e) {
|
||||
log.error("添加socket失败 :{}", e);
|
||||
throw exception(REMOTE_ROBOT_CONNECT_FAIL);
|
||||
}
|
||||
setMsg(remoteControllerSocketDTO, RemoteIpTypeEnum.ONE.getType());
|
||||
setMsg(remoteControllerSocketDTO, RemoteIpTypeEnum.ONE.getType(), dto);
|
||||
cache.put(remoteControllerIp, remoteControllerSocketDTO);
|
||||
}
|
||||
|
||||
@ -89,7 +90,7 @@ public class RemoteControllerProcessor {
|
||||
* @param remoteControllerSocket
|
||||
* @param type
|
||||
*/
|
||||
public void setMsg(RemoteControllerSocketDTO remoteControllerSocket, Integer type) {
|
||||
public void setMsg(RemoteControllerSocketDTO remoteControllerSocket, Integer type, RemoteRobotTransferDTO dto) {
|
||||
String msg = defaultMsg;
|
||||
if (RemoteIpTypeEnum.ONE.getType().equals(type)) {
|
||||
msg = msg + " " + ONE;
|
||||
@ -97,14 +98,14 @@ public class RemoteControllerProcessor {
|
||||
msg = msg + " " + TWO;
|
||||
}
|
||||
|
||||
String[] split = remoteControllerSocket.getHost().split("\\.");
|
||||
String[] split = dto.getRobotIp().split("\\.");
|
||||
for (String ipItem : split) {
|
||||
String hex = Integer.toHexString(Integer.valueOf(ipItem));
|
||||
msg = msg + " " + hex;
|
||||
log.info("组装 :{}", hex);
|
||||
}
|
||||
|
||||
String portHex = Integer.toHexString(remoteControllerSocket.getPort());
|
||||
String portHex = Integer.toHexString(dto.getRobotPort().intValue());
|
||||
String portHexOne = portHex.substring(0, 2);
|
||||
String portHexTwo = portHex.substring(2);
|
||||
msg = msg + " " + portHexOne + " " + portHexTwo;
|
||||
@ -135,24 +136,31 @@ public class RemoteControllerProcessor {
|
||||
remoteControllerSocket.setMsg(msg);
|
||||
}
|
||||
|
||||
public void remoteCache() {
|
||||
public void remoteCache(RemoteRobotTransferDTO dto) {
|
||||
RemoteControllerSocketDTO remoteControllerSocketDTO = cache.get(remoteControllerIp);
|
||||
if (ObjectUtil.isEmpty(remoteControllerSocketDTO)) {
|
||||
return;
|
||||
}
|
||||
setMsg(remoteControllerSocketDTO, RemoteIpTypeEnum.THREE.getType());
|
||||
setMsg(remoteControllerSocketDTO, RemoteIpTypeEnum.THREE.getType(), dto);
|
||||
cache.remove(remoteControllerIp);
|
||||
|
||||
Socket socket = remoteControllerSocketDTO.getSocket();
|
||||
if (socket == null ||socket.isClosed()) {
|
||||
try {
|
||||
socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(remoteControllerIp, remoteControllerPort), 1000);
|
||||
} catch (IOException e) {
|
||||
log.error("连接socket出现异常 :{}", remoteControllerIp);
|
||||
}
|
||||
}
|
||||
|
||||
OutputStream os = null;
|
||||
try {
|
||||
if (socket != null && !socket.isClosed()) {
|
||||
os = socket.getOutputStream();
|
||||
log.info("断开连接 :{},对应的IP :{}", remoteControllerSocketDTO.getMsg(), remoteControllerSocketDTO.getHost());
|
||||
os.write(remoteControllerSocketDTO.getMsg().getBytes());
|
||||
socket.close();
|
||||
}
|
||||
os = socket.getOutputStream();
|
||||
log.info("断开连接 :{} ,对应的IP :{}", remoteControllerSocketDTO.getMsg(), remoteControllerSocketDTO.getHost());
|
||||
os.write(remoteControllerSocketDTO.getMsg().getBytes());
|
||||
socket.shutdownInput();
|
||||
socket.close();
|
||||
log.info("关闭socket :{}", remoteControllerIp);
|
||||
} catch (IOException e) {
|
||||
log.error("关闭socket出现异常 :{}", remoteControllerIp);
|
||||
@ -165,7 +173,7 @@ public class RemoteControllerProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
remoteCache();
|
||||
remoteCache(dto);
|
||||
}
|
||||
|
||||
|
||||
@ -197,8 +205,8 @@ public class RemoteControllerProcessor {
|
||||
|
||||
Socket socket = remoteControllerSocketDTO.getSocket();
|
||||
if (socket == null || socket.isClosed()) {
|
||||
socket = new Socket();
|
||||
try {
|
||||
socket = new Socket();
|
||||
socket.connect(new InetSocketAddress(v.getKey(), remoteControllerPort), 1000);
|
||||
remoteControllerSocketDTO.setSocket(socket);
|
||||
} catch (IOException e) {
|
||||
@ -210,7 +218,7 @@ public class RemoteControllerProcessor {
|
||||
try {
|
||||
os = socket.getOutputStream();
|
||||
String str = remoteControllerSocketDTO.getMsg();
|
||||
System.out.println(str);
|
||||
log.info("socket推送的数据 :{}", str);
|
||||
os.write(remoteControllerSocketDTO.getMsg().getBytes());
|
||||
} catch (IOException e) {
|
||||
log.error("socket发送异常 :{}", e);
|
||||
|
@ -0,0 +1,62 @@
|
||||
package cn.iocoder.yudao.module.remote.config.server;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class TCPServerApplicationRunner implements ApplicationRunner {
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
initServer();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
public void initServer() {
|
||||
try {
|
||||
log.info("开始初始化socket服务");
|
||||
ServerSocket server=new ServerSocket(9000);
|
||||
while (true){
|
||||
// 监听客户端的请求,没有的话就会进行阻塞
|
||||
Socket socket=server.accept();
|
||||
//开启一个线程进行处理客户端的请求
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
|
||||
InputStream is=socket.getInputStream();
|
||||
byte[] bytes=new byte[1024];
|
||||
int len=is.read(bytes);
|
||||
System.out.println(new String(bytes,0,len));
|
||||
OutputStream os= socket.getOutputStream();
|
||||
//响应给客户端
|
||||
os.write("收到谢谢".getBytes());
|
||||
socket.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}).start();
|
||||
log.info("初始化socket服务完成");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -18,6 +18,7 @@ import cn.iocoder.yudao.module.remote.util.redis.RedisUtil;
|
||||
import cn.iocoder.yudao.module.system.api.remote.RemoteRobotApi;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotStatusDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.api.robot.dto.FloorZoneDTO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -126,15 +127,15 @@ public class RemoteRobotServiceImpl implements RemoteRobotService {
|
||||
@Override
|
||||
public void robotChangeMode(RemoteRobotChangeModeDTO data, HttpServletRequest request) {
|
||||
String ip = IpUtils.getIp(request);
|
||||
CommonResult<Boolean> result = remoteRobotApi.robotChangeMode(data.getRemoteMode(), ip, data.getRobotNo(),remoteControllerPort,remoteControllerIp);
|
||||
CommonResult<RemoteRobotTransferDTO> result = remoteRobotApi.robotChangeMode(data.getRemoteMode(), ip, data.getRobotNo(),remoteControllerPort,remoteControllerIp);
|
||||
if (!result.isSuccess()) {
|
||||
throw exception0(TASK_COMMONG_FAIL.getCode(), result.getMsg());
|
||||
}
|
||||
//非自动模式
|
||||
if (0!= data.getRemoteMode()) {
|
||||
remoteControllerProcessor.addCache();
|
||||
remoteControllerProcessor.addCache(result.getData());
|
||||
}else {
|
||||
remoteControllerProcessor.remoteCache();
|
||||
remoteControllerProcessor.remoteCache(result.getData());
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,11 +152,17 @@ public class RemoteRobotServiceImpl implements RemoteRobotService {
|
||||
@Override
|
||||
public void remoteDisconnect(HttpServletRequest request) {
|
||||
String ip = IpUtils.getIp(request);
|
||||
CommonResult<Boolean> result = remoteRobotApi.remoteDisconnect(ip);
|
||||
CommonResult<RemoteRobotTransferDTO> result = remoteRobotApi.remoteDisconnect(ip);
|
||||
if (!result.isSuccess()) {
|
||||
throw exception0(TASK_COMMONG_FAIL.getCode(), result.getMsg());
|
||||
}
|
||||
remoteControllerProcessor.remoteCache();
|
||||
|
||||
if (ObjectUtil.isEmpty(result.getData())) {
|
||||
log.info("断开连接, 未查到远遥绑定的信息 :{}",ip);
|
||||
return;
|
||||
}
|
||||
|
||||
remoteControllerProcessor.remoteCache(result.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -54,7 +54,7 @@ logging:
|
||||
|
||||
remote:
|
||||
controller-port: 9000
|
||||
controller-ip: 10.10.110.17
|
||||
controller-ip: 127.0.0.1
|
||||
msg: AA 55 13 04 01 88 88 # 驾舱socket头信息
|
||||
cockpit-time-out: 120 # 驾舱超时报警时间
|
||||
industrial-control-time-out: 120 # 工控通信超时报警时间
|
||||
|
@ -54,7 +54,7 @@ logging:
|
||||
|
||||
remote:
|
||||
controller-port: 9000
|
||||
controller-ip: 10.10.110.17
|
||||
controller-ip: 127.0.0.1
|
||||
msg: AA 55 13 04 01 88 88 # 驾舱socket头信息
|
||||
cockpit-time-out: 120 # 驾舱超时报警时间
|
||||
industrial-control-time-out: 120 # 工控通信超时报警时间
|
||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.api.remote;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotStatusDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.enums.ApiConstants;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -40,11 +41,11 @@ public interface RemoteRobotApi {
|
||||
|
||||
@PostMapping(PREFIX + "/robotChangeMode")
|
||||
@Operation(summary = "切换模式")
|
||||
CommonResult<Boolean> robotChangeMode(@RequestParam(value = "remoteMode") Integer remoteMode,
|
||||
@RequestParam(value = "ip") String ip,
|
||||
@RequestParam(value = "robotNo") String robotNo,
|
||||
@RequestParam(value = "remoteControllerPort") int remoteControllerPort,
|
||||
@RequestParam(value = "remoteControllerIp") String remoteControllerIp);
|
||||
CommonResult<RemoteRobotTransferDTO> robotChangeMode(@RequestParam(value = "remoteMode") Integer remoteMode,
|
||||
@RequestParam(value = "ip") String ip,
|
||||
@RequestParam(value = "robotNo") String robotNo,
|
||||
@RequestParam(value = "remoteControllerPort") int remoteControllerPort,
|
||||
@RequestParam(value = "remoteControllerIp") String remoteControllerIp);
|
||||
|
||||
@PostMapping(PREFIX + "/getRemotePositionMapList")
|
||||
@Operation(summary = "远遥查询地图")
|
||||
@ -52,7 +53,7 @@ public interface RemoteRobotApi {
|
||||
|
||||
@PostMapping(PREFIX + "/remoteDisconnect")
|
||||
@Operation(summary = "断开连接")
|
||||
CommonResult<Boolean> remoteDisconnect(@RequestParam(value = "remoteIp") String remoteIp);
|
||||
CommonResult<RemoteRobotTransferDTO> remoteDisconnect(@RequestParam(value = "remoteIp") String remoteIp);
|
||||
|
||||
@PostMapping(PREFIX + "/remoteTaskDone")
|
||||
@Operation(summary = "任务完成/取货完成")
|
||||
|
@ -0,0 +1,22 @@
|
||||
package cn.iocoder.yudao.module.system.api.remote.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RemoteRobotTransferDTO {
|
||||
@Schema(description = "车辆IP")
|
||||
private String robotIp;
|
||||
|
||||
@Schema(description = "车辆端口")
|
||||
private Long robotPort;
|
||||
|
||||
@Schema(description = "AGV编号")
|
||||
private String robotNo;
|
||||
}
|
@ -201,6 +201,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode ROBOT_HAVE_TASK = new ErrorCode(1-002-034-015, "车辆当前有处理中的任务,请断开连接后,选取其他空闲车辆");
|
||||
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_OR_PORT_EMPTY = new ErrorCode(1-002-034-020, "车辆IP或者端口为空");
|
||||
|
||||
// ========== 机器人任务主表 1-002-035-000 ==========
|
||||
ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "车辆任务主表不存在");
|
||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.api.remote;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotStatusDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapDTO;
|
||||
import cn.iocoder.yudao.module.system.service.positionmap.PositionMapService;
|
||||
import cn.iocoder.yudao.module.system.service.remote.RemoteControllerInformationService;
|
||||
@ -100,9 +101,9 @@ public class RemoteRobotApiImpl implements RemoteRobotApi {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public CommonResult<Boolean> robotChangeMode(Integer remoteMode, String remoteIp, String robotNo,int remoteControllerPort,String remoteControllerIp) {
|
||||
controllerInformationService.robotChangeMode(remoteMode, remoteIp, robotNo,remoteControllerPort,remoteControllerIp);
|
||||
return CommonResult.success(true);
|
||||
public CommonResult<RemoteRobotTransferDTO> robotChangeMode(Integer remoteMode, String remoteIp, String robotNo, int remoteControllerPort, String remoteControllerIp) {
|
||||
RemoteRobotTransferDTO dto = controllerInformationService.robotChangeMode(remoteMode, remoteIp, robotNo,remoteControllerPort,remoteControllerIp);
|
||||
return CommonResult.success(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -118,9 +119,9 @@ public class RemoteRobotApiImpl implements RemoteRobotApi {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public CommonResult<Boolean> remoteDisconnect(String remoteIp) {
|
||||
controllerInformationService.remoteDisconnect(remoteIp);
|
||||
return CommonResult.success(true);
|
||||
public CommonResult<RemoteRobotTransferDTO> remoteDisconnect(String remoteIp) {
|
||||
RemoteRobotTransferDTO data = controllerInformationService.remoteDisconnect(remoteIp);
|
||||
return CommonResult.success(data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,6 +6,7 @@ import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.mqtt.api.path.dto.PathPosedsDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.LoginCheckDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotStatusDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.remote.vo.RemoteControllerInformationPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.remote.vo.RemoteControllerInformationSaveReqVO;
|
||||
@ -103,7 +104,7 @@ public interface RemoteControllerInformationService extends IService<RemoteContr
|
||||
* @param remoteMode
|
||||
* @param remoteIp
|
||||
*/
|
||||
void robotChangeMode(Integer remoteMode, String remoteIp, String robotNo,int remoteControllerPort,String remoteControllerIp);
|
||||
RemoteRobotTransferDTO robotChangeMode(Integer remoteMode, String remoteIp, String robotNo, int remoteControllerPort, String remoteControllerIp);
|
||||
|
||||
/**
|
||||
* 任务转移给空闲车辆
|
||||
@ -121,7 +122,7 @@ public interface RemoteControllerInformationService extends IService<RemoteContr
|
||||
* 断开连接
|
||||
* @param remoteIp
|
||||
*/
|
||||
void remoteDisconnect(String remoteIp);
|
||||
RemoteRobotTransferDTO remoteDisconnect(String remoteIp);
|
||||
|
||||
/**
|
||||
* 重复发送断开连接的请求
|
||||
|
@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.mqtt.api.path.dto.remote.RemotePathPlanningDTO;
|
||||
import cn.iocoder.yudao.module.mqtt.api.path.dto.remote.RobotModeDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.LoginCheckDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotStatusDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteRobotTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.api.remote.dto.RemoteTaskTransferDTO;
|
||||
import cn.iocoder.yudao.module.system.constant.path.PathPlanningChcheConstant;
|
||||
import cn.iocoder.yudao.module.system.constant.path.PathPlanningTopicConstant;
|
||||
@ -305,7 +306,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void robotChangeMode(Integer remoteMode, String remoteIp, String robotNo,int remoteControllerPort,String remoteControllerIp) {
|
||||
public RemoteRobotTransferDTO robotChangeMode(Integer remoteMode, String remoteIp, String robotNo, int remoteControllerPort, String remoteControllerIp) {
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
@ -316,7 +317,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
doRobotChangeMode(remoteMode, remoteIp, robotNo,remoteControllerPort,remoteControllerIp);
|
||||
return doRobotChangeMode(remoteMode, remoteIp, robotNo,remoteControllerPort,remoteControllerIp);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
@ -377,12 +378,12 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void remoteDisconnect(String remoteIp) {
|
||||
public RemoteRobotTransferDTO remoteDisconnect(String remoteIp) {
|
||||
RemoteControllerInformationDO information = controllerInformationMapper.selectOne(new LambdaQueryWrapper<RemoteControllerInformationDO>()
|
||||
.eq(RemoteControllerInformationDO::getRemoteIp, remoteIp)
|
||||
.last("limit 1"));
|
||||
if (ObjectUtil.isEmpty(information.getRobotNo())) {
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
checkGraphMatch(information.getRobotNo());
|
||||
|
||||
@ -403,6 +404,12 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
|
||||
RemoteSendMessage remoteSendMessage = RemoteSendMessage.builder().robotNo(robotNo).build();
|
||||
remoteControllerProducer.sendSmsSendMessage(remoteSendMessage);
|
||||
|
||||
RobotInformationDO robotInformation = informationService.getInformationByRobotNo(robotNo);
|
||||
return RemoteRobotTransferDTO.builder()
|
||||
.robotNo(robotInformation.getRobotNo())
|
||||
.robotIp(robotInformation.getRobotIp())
|
||||
.robotPort(robotInformation.getRobotPort()).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -554,7 +561,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
* @param robotNo
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doRobotChangeMode(Integer remoteMode, String remoteIp, String robotNo,int remoteControllerPort,String remoteControllerIp) {
|
||||
public RemoteRobotTransferDTO doRobotChangeMode(Integer remoteMode, String remoteIp, String robotNo,int remoteControllerPort,String remoteControllerIp) {
|
||||
log.info("切换模式的车辆 :{}", robotNo);
|
||||
|
||||
//后续判断下,如果协控中,能不能切换模式
|
||||
@ -581,6 +588,15 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
}
|
||||
|
||||
RobotInformationDO robotInformation = informationService.getInformationByRobotNo(robotNo);
|
||||
informationService.checkIpAndPort(robotInformation);
|
||||
if (ObjectUtil.isEmpty(robotInformation.getRobotIp()) || ObjectUtil.isEmpty(robotInformation.getRobotPort()) ) {
|
||||
throw exception(ROBOT_IP_OR_PORT_EMPTY);
|
||||
}
|
||||
RemoteRobotTransferDTO build =
|
||||
RemoteRobotTransferDTO.builder()
|
||||
.robotNo(robotInformation.getRobotNo())
|
||||
.robotIp(robotInformation.getRobotIp())
|
||||
.robotPort(robotInformation.getRobotPort()).build();
|
||||
|
||||
|
||||
if (ObjectUtil.isNotEmpty(information.getRobotNo()) && !information.getRobotNo().equals(robotNo)) {
|
||||
@ -608,7 +624,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
setRemoteChangeLog(information, robotNo, remoteMode, operateAction);
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.AUTO.getType());
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.AUTO.getType());
|
||||
return;
|
||||
return build;
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(information.getRobotNo()) && information.getRobotNo().equals(robotNo)
|
||||
@ -619,7 +635,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
userOperationLogService.createUserOperationLog(operationLog);
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.getType(information.getRemoteMode()));
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.getType(remoteMode));
|
||||
return;
|
||||
return build;
|
||||
}
|
||||
|
||||
//自动切手动
|
||||
@ -636,7 +652,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
setRemoteChangeLog(information, robotNo, remoteMode, operateAction);
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.MAN.getType());
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.MAN.getType());
|
||||
return;
|
||||
return build;
|
||||
}
|
||||
|
||||
//自动切自由
|
||||
@ -661,7 +677,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
setRemoteChangeLog(information, robotNo, remoteMode, operateAction);
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.MAN.getType());
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.MAN.getType());
|
||||
return;
|
||||
return build;
|
||||
}
|
||||
|
||||
//手动切自动
|
||||
@ -672,7 +688,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
setRemoteChangeLog(information, robotNo, remoteMode, operateAction);
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.AUTO.getType());
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.AUTO.getType());
|
||||
return;
|
||||
return build;
|
||||
}
|
||||
|
||||
//手动切自由
|
||||
@ -695,7 +711,7 @@ public class RemoteControllerInformationServiceImpl extends ServiceImpl<RemoteCo
|
||||
sendRemoteMsgToPP(robotNo, PathPlanningTopicConstant.START_REMOTE_CONTROLLER, RemoteOperationModeEnum.AUTO.getType());
|
||||
sendModeToRobot(robotNo, RemoteOperationModeEnum.AUTO.getType());
|
||||
}
|
||||
|
||||
return build;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -227,4 +227,10 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
||||
* @param robotNo
|
||||
*/
|
||||
void setRobotFree(String robotNo);
|
||||
|
||||
/**
|
||||
* 校验端口和IP
|
||||
* @param updateObj
|
||||
*/
|
||||
void checkIpAndPort(RobotInformationDO updateObj);
|
||||
}
|
||||
|
@ -190,8 +190,6 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
throw exception(ROBOT_MAC_ADDRESS_EXISTS);
|
||||
}
|
||||
|
||||
checkIpAndPort(createReqVO);
|
||||
|
||||
//判断机器人编号
|
||||
RobotInformationDO existRobotNo = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||
.eq(RobotInformationDO::getRobotNo, createReqVO.getRobotNo())
|
||||
@ -218,6 +216,9 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
createReqVO.setChargeType(robotModelDO.getChargeType());
|
||||
// 插入
|
||||
RobotInformationDO information = BeanUtils.toBean(createReqVO, RobotInformationDO.class);
|
||||
|
||||
checkIpAndPort(information);
|
||||
|
||||
informationMapper.insert(information);
|
||||
redisUtil.set(RobotTaskChcheConstant.ROBOT_GET_ROBOTNO_BY_MAC + information.getMacAddress(), information.getRobotNo());
|
||||
redisUtil.set(RobotTaskChcheConstant.ROBOT_GET_MAC_BY_NO + information.getRobotNo(), information.getMacAddress());
|
||||
@ -246,15 +247,16 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
return information.getId();
|
||||
}
|
||||
|
||||
private void checkIpAndPort(RobotInformationSaveReqVO createReqVO) {
|
||||
if (ObjectUtil.isNotEmpty(createReqVO.getRobotPort())) {
|
||||
String hexString = Integer.toHexString(createReqVO.getRobotPort().intValue());
|
||||
@Override
|
||||
public void checkIpAndPort(RobotInformationDO updateObj) {
|
||||
if (ObjectUtil.isNotEmpty(updateObj.getRobotPort())) {
|
||||
String hexString = Integer.toHexString(updateObj.getRobotPort().intValue());
|
||||
if (hexString.length() != 4) {
|
||||
throw exception(ROBOT_PORT_NOT_COMPLIANCE);
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(createReqVO.getRobotIp())) {
|
||||
boolean validSubnet = isValidIpAddress(createReqVO.getRobotIp());
|
||||
if (ObjectUtil.isNotEmpty(updateObj.getRobotIp())) {
|
||||
boolean validSubnet = isValidIpAddress(updateObj.getRobotIp());
|
||||
if (!validSubnet) {
|
||||
throw exception(ROBOT_IP_NOT_COMPLIANCE);
|
||||
}
|
||||
@ -294,8 +296,6 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
}
|
||||
|
||||
checkIpAndPort(updateReqVO);
|
||||
|
||||
//校验MAC地址
|
||||
RobotInformationDO query = new RobotInformationDO();
|
||||
query.setMacAddress(updateReqVO.getMacAddress());
|
||||
@ -332,6 +332,9 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
// 更新
|
||||
RobotInformationDO updateObj = BeanUtils.toBean(updateReqVO, RobotInformationDO.class);
|
||||
|
||||
checkIpAndPort(updateObj);
|
||||
|
||||
informationMapper.updateById(updateObj);
|
||||
|
||||
if (!robotInformationDO.getRobotNo().equals(updateReqVO.getRobotNo())) {
|
||||
|
@ -4,6 +4,7 @@ package cn.iocoder.yudao.module.system.util.socket;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
|
||||
//客服端
|
||||
@ -16,7 +17,8 @@ public class TCPClient {
|
||||
public void run() {
|
||||
try {
|
||||
//和服务器创建连接
|
||||
Socket socket =new Socket("127.0.0.1",8800);
|
||||
Socket socket = new Socket();
|
||||
socket.connect(new InetSocketAddress("10.10.100.17", 9000), 1000);
|
||||
|
||||
OutputStream os = socket.getOutputStream();
|
||||
String str="你好服务器====:___:";
|
||||
|
Loading…
Reference in New Issue
Block a user