初次提交

This commit is contained in:
李玉东 2025-09-17 15:30:46 +08:00
parent ad420b3e8c
commit 720748ea1e
7 changed files with 86 additions and 40 deletions

View File

@ -19,8 +19,10 @@ import java.util.concurrent.LinkedBlockingQueue;
* @since 2025/7/22
*/
public class Global {
public static BlockingQueue<RequestCmdInfo> receiveCmdInfoQueue = new LinkedBlockingQueue<>(10000);
public static BlockingQueue<ResponseCmdInfo<?>> sendCmdInfoQueue = new LinkedBlockingQueue<>();
public static BlockingQueue<RequestCmdInfo> receiveCmdInfoQueue = new LinkedBlockingQueue<>(
10000);
public static BlockingQueue<ResponseCmdInfo<?>> sendCmdInfoQueue = new LinkedBlockingQueue<>();
public static Map<String, ScenarioWsParam> roomParamMap = new ConcurrentHashMap<>();
public static BlockingQueue<RoomLog> roomLogQueue = new LinkedBlockingQueue<>(1000);
}

View File

@ -27,11 +27,7 @@ public class RoomLogController {
@GetMapping("/list")
public ResponseData<List<RoomLog>> list(String roomId) {
QueryWrapper<RoomLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("room_id", roomId==null?"0":roomId);
queryWrapper.orderByAsc("log_time");
queryWrapper.last("limit 10");
List<RoomLog> roomLogs = roomLogService.list(queryWrapper);
return ResponseData.success(roomLogs);
return ResponseData.success(roomLogService.roomLogListLimit10(roomId));
}
}

View File

@ -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<Void> 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<Void> 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<Void> 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<Void> 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<ScenarioRoom> 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);
}
}

View File

@ -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<RoomLog> roomLogs;
}

View File

@ -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;
/**
* <p>
@ -12,5 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @since 2025-09-17
*/
public interface IRoomLogService extends IService<RoomLog> {
List<RoomLog> roomLogListLimit10(String roomId);
}

View File

@ -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;
/**
* <p>
* 服务实现类
* 服务实现类
* </p>
*
* @author liDongYu
* @since 2025-09-17
*/
@Service
public class RoomLogServiceImpl extends ServiceImpl<RoomLogMapper, RoomLog> implements IRoomLogService {
public class RoomLogServiceImpl extends ServiceImpl<RoomLogMapper, RoomLog> implements
IRoomLogService {
@Override
public List<RoomLog> roomLogListLimit10(String roomId) {
QueryWrapper<RoomLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("room_id", roomId == null ? "0" : roomId);
queryWrapper.orderByAsc("log_time");
queryWrapper.last("limit 10");
return list(queryWrapper);
}
}

View File

@ -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,