Commit 865283a6 by 赵剑炜

ws格式调整

parent 2d985a79
...@@ -15,6 +15,7 @@ public class WsCabinetReq { ...@@ -15,6 +15,7 @@ public class WsCabinetReq {
private List<Box> boxList; private List<Box> boxList;
@Data
// 内部类表示box // 内部类表示box
public static class Box { public static class Box {
@JsonProperty("boxNum") @JsonProperty("boxNum")
...@@ -23,6 +24,8 @@ public class WsCabinetReq { ...@@ -23,6 +24,8 @@ public class WsCabinetReq {
@JsonProperty("state") @JsonProperty("state")
private int state; private int state;
@JsonProperty("errorMsg")
private String errorMsg;
// getters and setters // getters and setters
} }
} }
\ No newline at end of file
...@@ -13,7 +13,9 @@ import com.junmp.iot.server.ws.impl.DefaultWebSocketServerProtocol; ...@@ -13,7 +13,9 @@ import com.junmp.iot.server.ws.impl.DefaultWebSocketServerProtocol;
import com.junmp.jyzb.api.util.WsCabinetReq; import com.junmp.jyzb.api.util.WsCabinetReq;
import com.junmp.jyzb.cache.OnlineRedisCache; import com.junmp.jyzb.cache.OnlineRedisCache;
import com.junmp.jyzb.entity.Cabinet; import com.junmp.jyzb.entity.Cabinet;
import com.junmp.jyzb.entity.CabinetBox;
import com.junmp.jyzb.entity.Temp.OnlineState; import com.junmp.jyzb.entity.Temp.OnlineState;
import com.junmp.jyzb.service.CabinetBoxService;
import com.junmp.jyzb.service.CabinetService; import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.service.impl.CabinetServiceImpl; import com.junmp.jyzb.service.impl.CabinetServiceImpl;
import com.junmp.jyzb.utils.DateTimeUtil; import com.junmp.jyzb.utils.DateTimeUtil;
...@@ -41,14 +43,19 @@ import javax.websocket.server.PathParam; ...@@ -41,14 +43,19 @@ import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint; import javax.websocket.server.ServerEndpoint;
import java.io.IOException; import java.io.IOException;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component @Component
@Slf4j @Slf4j
public class CabinetWebSocketServer implements WebSocketServerListener { public class CabinetWebSocketServer implements WebSocketServerListener {
@Resource @Resource
public CabinetService cabinetService; public CabinetService cabinetService;
@Resource
public CabinetBoxService cabinetBoxService;
@Override @Override
public String uri() { public String uri() {
return "/cabinet/ws"; return "/cabinet/ws";
...@@ -57,18 +64,50 @@ public class CabinetWebSocketServer implements WebSocketServerListener { ...@@ -57,18 +64,50 @@ public class CabinetWebSocketServer implements WebSocketServerListener {
@SneakyThrows @SneakyThrows
@Override @Override
public void onText(DefaultWebSocketServerProtocol protocol) { public void onText(DefaultWebSocketServerProtocol protocol) {
try {
String text = protocol.readText(); String text = protocol.readText();
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
WsCabinetReq boxData = objectMapper.readValue(text, WsCabinetReq.class); WsCabinetReq boxData = objectMapper.readValue(text, WsCabinetReq.class);
String channel= protocol.requestMessage().getChannelId(); String channel= protocol.requestMessage().getChannelId();
Cabinet cabinet=cabinetService.getOne(new LambdaQueryWrapper<Cabinet>() Cabinet cabinet=cabinetService.getOne(new LambdaQueryWrapper<Cabinet>()
.eq(Cabinet::getCabinetNum, boxData.getSerialNum())); .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.setOnlineState(1);
cabinet.setUpdateTime(DateTimeUtil.getCurrentDateTime()); cabinet.setUpdateTime(DateTimeUtil.getCurrentDateTime());
cabinet.setChannelId(channel); cabinet.setChannelId(channel);
cabinetService.updateById(cabinet); cabinetService.updateById(cabinet);
cabinetBoxService.updateBatchById(updateBoxlist);
protocol.response("true"); protocol.response("true");
}
catch (Exception e)
{
protocol.response("false");
}
} }
@Override @Override
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论