diff --git a/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java b/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java index 61ff83e..3de07e1 100644 --- a/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java +++ b/src/main/java/com/hivekion/thread/HandleReceiveRunnable.java @@ -3,12 +3,18 @@ package com.hivekion.thread; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.hivekion.Global; +import com.hivekion.baseData.entity.Scenario; +import com.hivekion.baseData.entity.WeatherResource; +import com.hivekion.baseData.service.impl.ScenarioServiceImpl; +import com.hivekion.baseData.service.impl.WeatherResourceServiceImpl; import com.hivekion.common.entity.RequestCmdInfo; import com.hivekion.common.entity.ResponseCmdInfo; import com.hivekion.room.RoomManager; import com.hivekion.room.bean.Room; import com.hivekion.scenario.entity.ScenarioResource; +import java.time.LocalDateTime; import java.util.HashMap; +import java.util.List; import java.util.Map; import lombok.extern.slf4j.Slf4j; @@ -39,8 +45,10 @@ public class HandleReceiveRunnable implements Runnable { //消息分发业务bean处理 if (SpringUtil.getBean(WebsocketMsgWrapper.class) != null) { try { - WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean(WebsocketMsgWrapper.class); - websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), requestCmdInfo.getRoom(), + WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean( + WebsocketMsgWrapper.class); + websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), + requestCmdInfo.getRoom(), requestCmdInfo.getResourceId(), requestCmdInfo.getMessage()); } catch (Exception e) { log.error("error::", e); @@ -52,8 +60,6 @@ public class HandleReceiveRunnable implements Runnable { } - - } catch (Exception e) { log.error("error::", e); } @@ -70,6 +76,9 @@ public class HandleReceiveRunnable implements Runnable { case "get_room_info": handleGetRootInfo(requestCmdInfo); break; + case "get_weather": + handleGetWeather(requestCmdInfo); + break; default: break; @@ -130,4 +139,32 @@ public class HandleReceiveRunnable implements Runnable { }); } } + + private void handleGetWeather(RequestCmdInfo requestCmdInfo) { + //获取想定 + Scenario scenario = SpringUtil.getBean(ScenarioServiceImpl.class) + .getScenarioById(requestCmdInfo.getScenarioId()); + LocalDateTime startTime = scenario.getStartTime(); + Room room = RoomManager.getRoom(requestCmdInfo.getRoom()); + if (room != null) { + long duringTime = room.getDuringTime(); + List weatherList = SpringUtil.getBean(WeatherResourceServiceImpl.class) + .list(); + weatherList.forEach(weatherResource -> { + ResponseCmdInfo respObj = new ResponseCmdInfo<>(); + LocalDateTime weatherTime = weatherResource.getLastBegTime(); + LocalDateTime weatherEndTime = weatherResource.getLastEndTime(); + if (startTime.plusSeconds(duringTime).isAfter(weatherTime) && startTime.plusSeconds( + duringTime).isBefore(weatherEndTime)) { + + respObj.setCmdType("start_" + weatherResource.getWeatherType()); + } + if (startTime.plusSeconds(duringTime).isAfter(weatherEndTime)) { + respObj.setCmdType("stop_" + weatherResource.getWeatherType()); + } + Global.sendCmdInfoQueue.add(respObj); + }); + } + + } }