消息过长时,websocket分块推送消息
指定钢化改为有一炉正在出片时不允许指定钢化
5个文件已修改
56 ■■■■ 已修改文件
UI-Project/src/utils/WebSocketService.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/utils/WebSocketService.js
@@ -1,7 +1,7 @@
// WebSocketService.js
let socket = null;
let messages = '';
export const initializeWebSocket = (socketUrl, messageHandler) => {
    if (typeof WebSocket === "undefined") {
      console.log("Your browser does not support WebSocket");
@@ -18,13 +18,24 @@
      if (!msg.data) {
        return;
      }
      const obj = JSON.parse(msg.data);
      messages += msg.data;
      const isLastChunk = msg.data.endsWith('<END>');
      //是否为最后一块消息
      if(isLastChunk) {
        messages= messages.replace('<END>', '');
        const obj = JSON.parse(messages);
      // 调用消息处理函数,将数据传递给 Vue 组件
      if (messageHandler) {
        messageHandler(obj);
      }
        messages='';
      }
    };
  
    return socket;
hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -43,8 +43,6 @@
    public void onOpen(Session session, @PathParam("username") String username) {
        this.username = username;
        this.session = session;
        this.session.setMaxTextMessageBufferSize(12*1024*1024);
        this.session.setMaxBinaryMessageBufferSize(12*1024*1024);
        List<WebSocketServer> webSocketServers = sessionMap.get(username);
        if (webSocketServers == null) {
            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
@@ -98,7 +96,7 @@
     *
     * @param message 客户端发送过来的消息
     */
    @OnMessage(maxMessageSize = 5242880)
    @OnMessage
    public void onMessage(String message, Session session, @PathParam("username") String username) {
        log.info("服务端收到用户username={}的消息:{}", username, message);
        JSONObject obj = JSONUtil.parseObj(message);
@@ -121,9 +119,27 @@
    public void sendMessage(String message) {
        try {
            // log.info("服务端给客户端[{}]发送消息{}", this.session.getId(), message);
            this.session.getBasicRemote().sendText(message);
            if(this.session.isOpen()){
                int maxChunkSize = 50000; // 定义最大的分块大小
                int length = message.length();
                int chunks = (int) Math.ceil((double) length / maxChunkSize);
                //分块发送消息
                for (int i = 0; i < chunks; i++) {
                    int startIndex = i * maxChunkSize;
                    int endIndex = Math.min(startIndex + maxChunkSize, length);
                    String chunk = message.substring(startIndex, endIndex);
                    // 判断是否是最后一块消息
                    boolean isLastChunk = (i == chunks - 1);
                    if(isLastChunk==true){
                        chunk+="<END>";
                    }
                    // 发送分块消息,并传递是否是最后一块消息的标识
                    this.session.getBasicRemote().sendText(chunk);
                }
            }
        } catch (Exception e) {
            log.error("服务端发送消息给客户端失败", e);
            log.error("发送消息给客户端失败:{}", e.getMessage(), e);
        }
    }
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -83,7 +83,7 @@
        if(result==true){
            return Result.build(200,"指定钢化成功",1);
        }else {
            return Result.build(200, "已存在钢化任务", 1);
            return Result.build(200, "已存在钢化任务,请等待钢化完成再指定钢化", 1);
        }
    }
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -353,9 +353,9 @@
    public boolean TemperingGlass(String temperingLayoutId, String engineerId){
        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper=new LambdaQueryWrapper<>();
        temperingGlassInfoLambdaQueryWrapper
                .eq(TemperingGlassInfo::getTemperingLayoutId,temperingLayoutId)
                .eq(TemperingGlassInfo::getEngineerId,engineerId);
                .eq(TemperingGlassInfo::getState,Const.TEMPERING_NEW);
        List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
        if(temperingGlassInfoList.size()==0){
            LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>();
            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -33,14 +33,13 @@
    private TemperingGlassInfoService temperingGlassInfoService;
    private JSONObject jsonObject = new JSONObject();
    private JSONObject jsonObject1 = new JSONObject();
    public void queryDataSource1() throws InterruptedException {
        List<Double> carPostion=new ArrayList<>();
        carPostion.add(0.25);
        carPostion.add(0.5);
        jsonObject.append("carPostion",carPostion);
        //界面展示笼子信息
        jsonObject1.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
        jsonObject.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
        //进片任务数据
        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectTask(1);
@@ -72,7 +71,6 @@
    @Scheduled(fixedDelay = 1000)
    public void plcStorageCageTask() throws InterruptedException {
        jsonObject = new JSONObject();
        jsonObject1 = new JSONObject();
        try {
            //查询使用数据源1查询数据
            queryDataSource1();
@@ -84,7 +82,6 @@
                for (WebSocketServer webserver : sendwServer) {
                    if (webserver != null) {
                        webserver.sendMessage(jsonObject.toString());
                        webserver.sendMessage(jsonObject1.toString());
                        List<String> messages = webserver.getMessages();
                        if (!messages.isEmpty()) {
                            // // 将最后一个消息转换为整数类型的列表