This commit is contained in:
tangzh 2025-07-13 10:14:18 +08:00
parent bd214436d8
commit 06466a4e45
3 changed files with 47 additions and 24 deletions

View File

@ -56,6 +56,8 @@ public class BusDeviceServiceImpl extends ServiceImpl<BusDeviceMapper, BusDevice
private final BusUserCommandMapper busUserCommandMapper;
private final BusCommandLogMapper busCommandLogMapper;
private final WeChatService weChatService;
private final WebSocketSdcpServiceImpl webSocketSdcpService;
private final WebSocketVueServiceImpl webSocketVueService;
private final RedisUtils redisUtils;
@Override
@ -134,6 +136,10 @@ public class BusDeviceServiceImpl extends ServiceImpl<BusDeviceMapper, BusDevice
}
resources.setDeviceCode((new Random().nextInt(900000) + 100000) + "");
busDeviceMapper.insert(resources);
// 刷新设备
webSocketVueService.refreshDeviceList();
// 设备初始化
webSocketSdcpService.openDeviceStatus(resources.getDeviceSn());
}
@Override
@ -142,12 +148,18 @@ public class BusDeviceServiceImpl extends ServiceImpl<BusDeviceMapper, BusDevice
BusDevice busDevice = getById(resources.getId());
busDevice.copy(resources);
busDeviceMapper.updateById(busDevice);
// 刷新设备
webSocketVueService.refreshDeviceList();
// 设备初始化
webSocketSdcpService.openDeviceStatus(resources.getDeviceSn());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(List<Long> ids) {
busDeviceMapper.deleteBatchIds(ids);
// 刷新设备
webSocketVueService.refreshDeviceList();
}
@Override

View File

@ -39,7 +39,7 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
this.channel = WebSocketConfig.TOPIC_PREFIX;
log.info("SDCP服务端 连接成功channel={}", channel);
clients.put(channel, this);
openDeviceStatus();
openDeviceStatus(null);
}
/**
* 连接关闭调用的方法
@ -94,33 +94,43 @@ public class WebSocketSdcpServiceImpl extends WebSocketService {
sendVueMessage(JSON.toJSONString(new SocketMsg(new HashMap<>() , remark, MsgEnum.CLOSE)), null, null);
}
// 初始状态刷新消息(Cmd:0) 指令
private void openDeviceStatus() {
public void openDeviceStatus(String thisDeviceSn) {
log.info(">>> 初始化设备状态");
WebSocketService socket = getSocket(WebSocketConfig.TOPIC_PREFIX);
for (String deviceSn : deviceList) {
long currentTimeLong = System.currentTimeMillis();
Map<String, Object> dataParam = new HashMap<>();
dataParam.put("UserId", socket.session.getId());
WebSocketReqData data = new WebSocketReqData();
data.setCmd(0);
data.setData(dataParam);
data.setRequestID(currentTimeLong + "");
data.setMainboardID(deviceSn);
data.setTimeStamp(currentTimeLong);
data.setFrom(0);
WebSocketReqDTO reqDTO = new WebSocketReqDTO();
reqDTO.setTopic(WebSocketConfig.TOPIC_PREFIX + "/" + MethodEnum.request.name() + "/" + deviceSn);
reqDTO.setData(data);
String message = JSON.toJSONString(reqDTO);
try {
log.info("发送【初始化】指令channel={}message={}", channel, message);
socket.session.getBasicRemote().sendText(message);
} catch (IOException e) { throw new RuntimeException(e); }
if (StringUtils.isEmpty(thisDeviceSn)) {
for (String deviceSn : deviceList) {
pushDeviceStatus(deviceSn);
}
} else {
pushDeviceStatus(thisDeviceSn);
}
log.info("<<< 初始化设备");
}
// 初始状态刷新消息(Cmd:0) 指令
private void pushDeviceStatus(String deviceSn) {
WebSocketService socket = getSocket(WebSocketConfig.TOPIC_PREFIX);
long currentTimeLong = System.currentTimeMillis();
Map<String, Object> dataParam = new HashMap<>();
dataParam.put("UserId", socket.session.getId());
WebSocketReqData data = new WebSocketReqData();
data.setCmd(0);
data.setData(dataParam);
data.setRequestID(currentTimeLong + "");
data.setMainboardID(deviceSn);
data.setTimeStamp(currentTimeLong);
data.setFrom(0);
WebSocketReqDTO reqDTO = new WebSocketReqDTO();
reqDTO.setTopic(WebSocketConfig.TOPIC_PREFIX + "/" + MethodEnum.request.name() + "/" + deviceSn);
reqDTO.setData(data);
String message = JSON.toJSONString(reqDTO);
try {
log.info("发送【初始化】指令channel={}message={}", channel, message);
socket.session.getBasicRemote().sendText(message);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
// 处理二进制图片
private void byteImgDataHandle(String message) {
Map<String, String> dataMap = Arrays.stream(message.split("&"))

View File

@ -35,7 +35,8 @@ public class WebSocketVueServiceImpl extends WebSocketService {
log.info("<<< 设备初始化");
}
@Scheduled(fixedRate = 60000)
// 每30秒刷新设备
@Scheduled(fixedRate = 30000)
public void refreshDeviceList() {
deviceList = new ArrayList<>();
List<BusDevice> devices = myDeviceService.queryAll(new BusDeviceQueryCriteria());