diff --git a/src/main/java/com/hivekion/Global.java b/src/main/java/com/hivekion/Global.java index 7adf6a1..d3e4410 100644 --- a/src/main/java/com/hivekion/Global.java +++ b/src/main/java/com/hivekion/Global.java @@ -19,8 +19,10 @@ import java.util.concurrent.LinkedBlockingQueue; * @since 2025/7/22 */ public class Global { - public static BlockingQueue receiveCmdInfoQueue = new LinkedBlockingQueue<>(10000); - public static BlockingQueue> sendCmdInfoQueue = new LinkedBlockingQueue<>(); + + public static BlockingQueue receiveCmdInfoQueue = new LinkedBlockingQueue<>( + 10000); + public static BlockingQueue> sendCmdInfoQueue = new LinkedBlockingQueue<>(); public static Map roomParamMap = new ConcurrentHashMap<>(); public static BlockingQueue roomLogQueue = new LinkedBlockingQueue<>(1000); } diff --git a/src/main/java/com/hivekion/scenario/controller/RoomLogController.java b/src/main/java/com/hivekion/scenario/controller/RoomLogController.java index 2d06871..699faaa 100644 --- a/src/main/java/com/hivekion/scenario/controller/RoomLogController.java +++ b/src/main/java/com/hivekion/scenario/controller/RoomLogController.java @@ -27,11 +27,7 @@ public class RoomLogController { @GetMapping("/list") public ResponseData> list(String roomId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("room_id", roomId==null?"0":roomId); - queryWrapper.orderByAsc("log_time"); - queryWrapper.last("limit 10"); - List roomLogs = roomLogService.list(queryWrapper); - return ResponseData.success(roomLogs); + + return ResponseData.success(roomLogService.roomLogListLimit10(roomId)); } } diff --git a/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java b/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java index c4ff97d..2f13a0c 100644 --- a/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java +++ b/src/main/java/com/hivekion/scenario/controller/ScenarioRoomController.java @@ -13,6 +13,7 @@ import com.hivekion.enums.ScenarioRoomStatusEnum; import com.hivekion.scenario.bean.ScenarioWsParam; import com.hivekion.scenario.entity.RoomLog; import com.hivekion.scenario.entity.ScenarioRoom; +import com.hivekion.scenario.service.IRoomLogService; import com.hivekion.scenario.service.ScenarioRoomService; import com.hivekion.scenario.service.ScenarioTaskService; import io.swagger.annotations.ApiOperation; @@ -48,6 +49,8 @@ public class ScenarioRoomController extends BaseController { private ScenarioService scenarioService; @Resource private ScenarioTaskService scenarioTaskService; + @Resource + private IRoomLogService roomLogService; /** * 查询想定列表 @@ -103,7 +106,8 @@ public class ScenarioRoomController extends BaseController { if (scenarioRoomService.getById(room.getId()) == null) { return ResponseData.generator(ResultCodeEnum.PARAMETER_ERROR.getCode(), "房间不存在", null); } - Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(),"启动想定",SecurityUtils.getCurrentLoginUser().getUsername())) ; + Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(), "启动想定", + SecurityUtils.getCurrentLoginUser().getUsername())); scenarioRoomService.updateStatus(room.getId(), ScenarioRoomStatusEnum.STARTED.getCode()); scenarioTaskService.start(room.getScenarioId(), room.getId()); @@ -112,7 +116,8 @@ public class ScenarioRoomController extends BaseController { @PostMapping("/break") public ResponseData breakAWhile(@RequestBody ScenarioRoom room) { - Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(),"暂停想定",SecurityUtils.getCurrentLoginUser().getUsername())) ; + Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(), "暂停想定", + SecurityUtils.getCurrentLoginUser().getUsername())); scenarioRoomService.updateStatus(room.getId(), ScenarioRoomStatusEnum.BROKEN.getCode()); scenarioTaskService.sleepWhile(room.getScenarioId(), room.getId()); return ResponseData.success(null); @@ -120,7 +125,8 @@ public class ScenarioRoomController extends BaseController { @PostMapping("/wakeUp") public ResponseData wakeUp(@RequestBody ScenarioRoom room) { - Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(),"想定继续",SecurityUtils.getCurrentLoginUser().getUsername())) ; + Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(), "想定继续", + SecurityUtils.getCurrentLoginUser().getUsername())); scenarioRoomService.updateStatus(room.getId(), ScenarioRoomStatusEnum.STARTED.getCode()); scenarioTaskService.wakeup(room.getScenarioId(), room.getId()); return ResponseData.success(null); @@ -129,7 +135,8 @@ public class ScenarioRoomController extends BaseController { @PostMapping("/mag") public ResponseData mag(@RequestBody ScenarioRoom room) { synchronized (this) { - Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(),"想定加速/减速",SecurityUtils.getCurrentLoginUser().getUsername())) ; + Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(), "想定加速/减速", + SecurityUtils.getCurrentLoginUser().getUsername())); if (Global.roomParamMap.get(room.getScenarioId() + "_" + room.getId()) == null) { Global.roomParamMap.put(room.getScenarioId() + "_" + room.getId(), new ScenarioWsParam()); } @@ -141,13 +148,34 @@ public class ScenarioRoomController extends BaseController { } - @PostMapping("/stop") public ResponseData stop(@RequestBody ScenarioRoom room) { - Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(),"想定结束",SecurityUtils.getCurrentLoginUser().getUsername())) ; + Global.roomLogQueue.add(RoomLog.createRoomLog(room.getId(), "想定结束", + SecurityUtils.getCurrentLoginUser().getUsername())); scenarioRoomService.updateStatus(room.getId(), ScenarioRoomStatusEnum.FINISHED.getCode()); scenarioTaskService.stop(room.getScenarioId(), room.getId()); return ResponseData.success(null); } + + @GetMapping("/view") + public ResponseData view(String id) { + ScenarioRoom room = scenarioRoomService.getById(id); + if (room != null) { + Scenario scenario = scenarioService.getScenarioById(room.getScenarioId()); + room.setScenarioId(scenario.getId()); + room.setScenario(scenario); + room.setScenarioName(scenario.getName()); + room.setRoomLogs(roomLogService.roomLogListLimit10(id)); + if (Global.roomParamMap.get(id) == null) { + ScenarioWsParam scenarioWsParam = new ScenarioWsParam(); + scenarioWsParam.setMag(1); + Global.roomParamMap.put(id, scenarioWsParam); + room.setMag(1); + } else { + room.setMag(Global.roomParamMap.get(id).getMag()); + } + } + return ResponseData.success(room); + } } diff --git a/src/main/java/com/hivekion/scenario/entity/ScenarioRoom.java b/src/main/java/com/hivekion/scenario/entity/ScenarioRoom.java index 87a09cb..18703ef 100644 --- a/src/main/java/com/hivekion/scenario/entity/ScenarioRoom.java +++ b/src/main/java/com/hivekion/scenario/entity/ScenarioRoom.java @@ -1,12 +1,14 @@ package com.hivekion.scenario.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.hivekion.baseData.entity.Scenario; import com.hivekion.common.entity.SearchInputVo; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import java.time.LocalDateTime; +import java.util.List; import javax.validation.constraints.NotNull; import lombok.Data; @@ -21,25 +23,30 @@ import lombok.Data; @TableName("TBL_SCENARIO_ROOM") @ApiModel(value = "ScenarioRoom对象", description = "想定房间") @Data -public class ScenarioRoom extends SearchInputVo { +public class ScenarioRoom extends SearchInputVo { - private static final long serialVersionUID = 1L; - - private String id; - @NotNull(message = "房间号不能为空") - @TableField(value="room_name") - private String roomName; - @NotNull(message = "想定ID不能为空") - @TableField(value="scenario_id") - private Integer scenarioId; - @TableField(value="user_id") - private String userId; - @TableField(value="create_time") - private LocalDateTime createTime; - @TableField(exist = false) - private Integer mag; - private Integer status = 0; + private static final long serialVersionUID = 1L; + @TableId(type = IdType.INPUT) + private String id; + @NotNull(message = "房间号不能为空") + @TableField(value = "room_name") + private String roomName; + @NotNull(message = "想定ID不能为空") + @TableField(value = "scenario_id") + private Integer scenarioId; + @TableField(value = "user_id") + private String userId; + @TableField(value = "create_time") + private LocalDateTime createTime; @TableField(exist = false) - private String scenarioName; + private Integer mag = 1; + private Integer status = 0; + @TableField(exist = false) + private String scenarioName; + @TableField(exist = false) + private Scenario scenario; + @TableField(exist = false) + private List roomLogs; + } diff --git a/src/main/java/com/hivekion/scenario/service/IRoomLogService.java b/src/main/java/com/hivekion/scenario/service/IRoomLogService.java index 24eee51..9ff3f0b 100644 --- a/src/main/java/com/hivekion/scenario/service/IRoomLogService.java +++ b/src/main/java/com/hivekion/scenario/service/IRoomLogService.java @@ -2,6 +2,7 @@ package com.hivekion.scenario.service; import com.hivekion.scenario.entity.RoomLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; /** *

@@ -12,5 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2025-09-17 */ public interface IRoomLogService extends IService { - + List roomLogListLimit10(String roomId); } diff --git a/src/main/java/com/hivekion/scenario/service/impl/RoomLogServiceImpl.java b/src/main/java/com/hivekion/scenario/service/impl/RoomLogServiceImpl.java index ca42873..1953825 100644 --- a/src/main/java/com/hivekion/scenario/service/impl/RoomLogServiceImpl.java +++ b/src/main/java/com/hivekion/scenario/service/impl/RoomLogServiceImpl.java @@ -1,20 +1,32 @@ package com.hivekion.scenario.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hivekion.scenario.entity.RoomLog; import com.hivekion.scenario.mapper.RoomLogMapper; import com.hivekion.scenario.service.IRoomLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; import org.springframework.stereotype.Service; /** *

- * 服务实现类 + * 服务实现类 *

* * @author liDongYu * @since 2025-09-17 */ @Service -public class RoomLogServiceImpl extends ServiceImpl implements IRoomLogService { +public class RoomLogServiceImpl extends ServiceImpl implements + IRoomLogService { + @Override + public List roomLogListLimit10(String roomId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("room_id", roomId == null ? "0" : roomId); + queryWrapper.orderByAsc("log_time"); + queryWrapper.last("limit 10"); + return list(queryWrapper); + + } } diff --git a/src/main/resources/mapper/tbl/ScenarioMapper.xml b/src/main/resources/mapper/tbl/ScenarioMapper.xml index feae4f9..0940fde 100644 --- a/src/main/resources/mapper/tbl/ScenarioMapper.xml +++ b/src/main/resources/mapper/tbl/ScenarioMapper.xml @@ -64,7 +64,7 @@ CreateUserId, CreateTime, start_time As startTime, - end_time, + end_time as endTime, id, left_up_lng AS leftUpLng, right_up_lng AS rightUpLng,