Commit 865283a6 by 赵剑炜

ws格式调整

parent 2d985a79
......@@ -15,6 +15,7 @@ public class WsCabinetReq {
private List<Box> boxList;
@Data
// 内部类表示box
public static class Box {
@JsonProperty("boxNum")
......@@ -23,6 +24,8 @@ public class WsCabinetReq {
@JsonProperty("state")
private int state;
@JsonProperty("errorMsg")
private String errorMsg;
// getters and setters
}
}
\ No newline at end of file
......@@ -13,7 +13,9 @@ import com.junmp.iot.server.ws.impl.DefaultWebSocketServerProtocol;
import com.junmp.jyzb.api.util.WsCabinetReq;
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.CabinetBoxService;
import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.service.impl.CabinetServiceImpl;
import com.junmp.jyzb.utils.DateTimeUtil;
......@@ -41,14 +43,19 @@ 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.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
@Component
@Slf4j
public class CabinetWebSocketServer implements WebSocketServerListener {
@Resource
public CabinetService cabinetService;
@Resource
public CabinetBoxService cabinetBoxService;
@Override
public String uri() {
return "/cabinet/ws";
......@@ -57,18 +64,50 @@ public class CabinetWebSocketServer implements WebSocketServerListener {
@SneakyThrows
@Override
public void onText(DefaultWebSocketServerProtocol protocol) {
try {
String text = protocol.readText();
ObjectMapper objectMapper = new ObjectMapper();
WsCabinetReq boxData = objectMapper.readValue(text, WsCabinetReq.class);
String channel= protocol.requestMessage().getChannelId();
String channel= protocol.requestMessage().getChannelId();
Cabinet cabinet=cabinetService.getOne(new LambdaQueryWrapper<Cabinet>()
.eq(Cabinet::getCabinetNum, boxData.getSerialNum()));
List<WsCabinetReq.Box> boxStateList=boxData.getBoxList();
List<CabinetBox> boxlist=cabinetBoxService.list(new LambdaQueryWrapper<CabinetBox>()
.eq(CabinetBox::getCabinetId, cabinet.getId()));
// 将 boxlist 转换为 Map,以 boxNum 为键
Map<Integer, CabinetBox> boxMap = boxlist.stream()
.collect(Collectors.toMap(CabinetBox::getNum, box -> box));
List<CabinetBox> updateBoxlist=new ArrayList<>();
// 比较并修改
for (WsCabinetReq.Box boxState : boxStateList) {
Integer boxNum = Integer.valueOf(boxState.getBoxNum());
CabinetBox cabinetBox = boxMap.get(boxNum);
if (cabinetBox != null) {
// 根据 boxState 中的 state 字段修改 cabinetBox 中的状态
cabinetBox.setState(boxState.getState());
cabinetBox.setErrorMsg(boxState.getErrorMsg());
updateBoxlist.add(cabinetBox);
// 可以选择更新其他字段
// cabinetBox.setOtherField(...);
}
}
cabinet.setOnlineState(1);
cabinet.setUpdateTime(DateTimeUtil.getCurrentDateTime());
cabinet.setChannelId(channel);
cabinetService.updateById(cabinet);
cabinetBoxService.updateBatchById(updateBoxlist);
protocol.response("true");
}
catch (Exception e)
{
protocol.response("false");
}
}
@Override
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论