Merge branch 'main' of http://git.hivekion.com:3000/liyudong/simulation-backend
This commit is contained in:
commit
e54f7fdfde
|
@ -3,12 +3,18 @@ package com.hivekion.thread;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.hivekion.Global;
|
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.RequestCmdInfo;
|
||||||
import com.hivekion.common.entity.ResponseCmdInfo;
|
import com.hivekion.common.entity.ResponseCmdInfo;
|
||||||
import com.hivekion.room.RoomManager;
|
import com.hivekion.room.RoomManager;
|
||||||
import com.hivekion.room.bean.Room;
|
import com.hivekion.room.bean.Room;
|
||||||
import com.hivekion.scenario.entity.ScenarioResource;
|
import com.hivekion.scenario.entity.ScenarioResource;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@ -39,8 +45,10 @@ public class HandleReceiveRunnable implements Runnable {
|
||||||
//消息分发业务bean处理
|
//消息分发业务bean处理
|
||||||
if (SpringUtil.getBean(WebsocketMsgWrapper.class) != null) {
|
if (SpringUtil.getBean(WebsocketMsgWrapper.class) != null) {
|
||||||
try {
|
try {
|
||||||
WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean(WebsocketMsgWrapper.class);
|
WebsocketMsgWrapper websocketMsgWrapper = SpringUtil.getBean(
|
||||||
websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(), requestCmdInfo.getRoom(),
|
WebsocketMsgWrapper.class);
|
||||||
|
websocketMsgWrapper.msgHandle(requestCmdInfo.getScenarioId(),
|
||||||
|
requestCmdInfo.getRoom(),
|
||||||
requestCmdInfo.getResourceId(), requestCmdInfo.getMessage());
|
requestCmdInfo.getResourceId(), requestCmdInfo.getMessage());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("error::", e);
|
log.error("error::", e);
|
||||||
|
@ -52,8 +60,6 @@ public class HandleReceiveRunnable implements Runnable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("error::", e);
|
log.error("error::", e);
|
||||||
}
|
}
|
||||||
|
@ -70,6 +76,9 @@ public class HandleReceiveRunnable implements Runnable {
|
||||||
case "get_room_info":
|
case "get_room_info":
|
||||||
handleGetRootInfo(requestCmdInfo);
|
handleGetRootInfo(requestCmdInfo);
|
||||||
break;
|
break;
|
||||||
|
case "get_weather":
|
||||||
|
handleGetWeather(requestCmdInfo);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
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<WeatherResource> weatherList = SpringUtil.getBean(WeatherResourceServiceImpl.class)
|
||||||
|
.list();
|
||||||
|
weatherList.forEach(weatherResource -> {
|
||||||
|
ResponseCmdInfo<Object> 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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user