Commit 68c1dacb by 李小惠

Merge branch 'develop' of http://gitlab.sothing.top/843502640/jyzb_platformV2 into develop-lxh

parents 550ee063 6cd6f563
......@@ -16,7 +16,6 @@ public class WarehouseReq extends BaseRequest {
@NotBlank(message = "仓库主键不能为空", groups = {updateStatus.class, delete.class, detail.class})
private String id;
//查询仓库设备时使用
private String warehouseId;
private String name;
private String location;
......
......@@ -10,20 +10,30 @@ import java.util.List;
public class WsWarehouseReq {
@JsonProperty("deviceId")
private String deviceId;
@JsonProperty("orgId")
private String orgId;
@JsonProperty("onlineState")
private String onlineState;
@JsonProperty("warehouseId")
private String warehouseId;
@JsonProperty("orgId")
private String orgId;
@JsonProperty("warehouse")
private List<warehouse> warehouse;
@JsonProperty("warehouseDevs")
private List<warehouseDevs> warehouseDevs;
@Data
// 内部类表示box
public static class warehouse {
@JsonProperty("warehouseId")
private String warehouseId;
@JsonProperty("warehouseName")
private String warehouseName;
@JsonProperty("warehouseDev")
private List<warehouseDev> warehouseDev;
}
@Data
// 内部类表示box
public static class warehouseDevs {
public static class warehouseDev {
@JsonProperty("devId")
private String devId;
......
......@@ -78,10 +78,10 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper,Warehouse>
public WsWarehouseReq CheckState(WarehouseReq req) {
WsWarehouseReq warehouseReq=new WsWarehouseReq();
String deviceData= redisCache.get(req.getWarehouseId());
String deviceData= redisCache.get(req.getOrgId().toString());
if (ObjectUtil.isNull(deviceData))
{
warehouseReq.setWarehouseId(req.getWarehouseId());
warehouseReq.setOrgId(req.getOrgId().toString());
warehouseReq.setOnlineState("false");
}
else
......
......@@ -73,23 +73,21 @@ public class WarehouseWebSocketServer implements WebSocketServerListener {
String text = protocol.readText();
ObjectMapper objectMapper = new ObjectMapper();
WsWarehouseReq deviceData = objectMapper.readValue(text, WsWarehouseReq.class);
String warehouseId = deviceData.getWarehouseId();
deviceData.getOrgId();
String redisExist= redisCache.get(warehouseId);
deviceData.getOrgId();
String orgId = deviceData.getOrgId();
String redisExist= redisCache.get(orgId);
if(redisExist!=null)//已有存在数据
{
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(warehouseId, jsonData);
redisCache.put(orgId, jsonData);
}
else
{
String channel = protocol.requestMessage().getChannelId();
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(warehouseId, jsonData);
redisCache.put(channel, warehouseId);
redisCache.put(orgId, jsonData);
redisCache.put(channel, orgId);
}
protocol.response("true");
......
package com.junmp.jyzb.websocket;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.junmp.iot.server.ws.WebSocketServerListener;
import com.junmp.iot.server.ws.impl.DefaultWebSocketServerProtocol;
import com.junmp.junmpProcess.redis.FlowRedisCache;
import com.junmp.jyzb.api.util.WsCabinetReq;
import com.junmp.jyzb.api.util.WsWarehouseReq;
import com.junmp.jyzb.cache.DeviceRedisCache;
import com.junmp.jyzb.cache.OnlineRedisCache;
import com.junmp.jyzb.entity.Cabinet;
import com.junmp.jyzb.entity.CabinetBox;
import com.junmp.jyzb.entity.Temp.OnlineState;
import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.v2.ws.api.enums.ClientMsgType;
import com.junmp.v2.ws.api.enums.ServerMsgType;
import com.junmp.v2.ws.api.enums.SysMsgTypeEnum;
import com.junmp.v2.ws.api.message.WsCallbackApi;
import com.junmp.v2.ws.api.session.bean.WsSession;
import com.junmp.v2.ws.bean.WsMsgDto;
import com.junmp.v2.ws.channel.WsSessionContainer;
import com.junmp.v2.ws.message.WsMessageHandle;
import com.junmp.v2.ws.session.WsSessionHandle;
import io.jsonwebtoken.JwtException;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Component
@Slf4j
public class WarehouseWebSocketServer implements WebSocketServerListener {
// private static final Logger log = LoggerFactory.getLogger(com.junmp.v2.ws.server.ScreenWebSocketServer.class);
@Resource
public CabinetService cabinetService;
@Resource
private DeviceRedisCache redisCache;
@Override
public String uri() {
return "/device/ws";
}
@SneakyThrows
@Override
public void onText(DefaultWebSocketServerProtocol protocol) {
try {
String text = protocol.readText();
ObjectMapper objectMapper = new ObjectMapper();
WsWarehouseReq deviceData = objectMapper.readValue(text, WsWarehouseReq.class);
String orgId = deviceData.getOrgId();
deviceData.getOrgId();
if(redisExist!=null)//已有存在数据
{
String jsonData = objectMapper.writeValueAsString(deviceData);
if(redisExist!=null)//已有存在数据
{
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(orgId, jsonData);
}
else
{
String channel = protocol.requestMessage().getChannelId();
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(orgId, jsonData);
redisCache.put(channel, orgId);
}
protocol.response("true");
}
catch (Exception e)
{
protocol.response("false");
}
}
@Override
public void onClose(DefaultWebSocketServerProtocol protocol) {
String channel= protocol.requestMessage().getChannelId();
String orgId= redisCache.get(channel);
redisCache.remove(channel);
redisCache.remove(orgId);
WebSocketServerListener.super.onClose(protocol);
}
@Override
public void onBinary(DefaultWebSocketServerProtocol protocol) {
WebSocketServerListener.super.onBinary(protocol);
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论