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