a-tuoheng-device/src/main/java/com/ruoyi/device/controller/GroupController.java

211 lines
6.7 KiB
Java
Raw Normal View History

2026-01-20 13:20:39 +08:00
package com.ruoyi.device.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
2026-01-22 20:04:09 +08:00
import com.ruoyi.device.api.domain.*;
2026-01-21 13:18:33 +08:00
import com.ruoyi.device.controller.convert.DockVOConvert;
2026-01-22 20:04:09 +08:00
import com.ruoyi.device.controller.convert.DockWithGPSVOConvert;
2026-01-21 14:04:29 +08:00
import com.ruoyi.device.controller.convert.GroupVOConvert;
2026-01-30 15:29:11 +08:00
import com.ruoyi.device.domain.api.IDockDomain;
import com.ruoyi.device.domain.model.Dock;
2026-02-04 16:36:18 +08:00
import com.ruoyi.device.service.impl.DefaultBufferDeviceImpl;
2026-01-20 13:20:39 +08:00
import com.ruoyi.device.service.api.IGroupService;
2026-01-20 17:05:25 +08:00
import com.ruoyi.device.service.dto.DockDetailDTO;
import com.ruoyi.device.service.dto.DockGroupDTO;
2026-01-20 13:20:39 +08:00
import com.ruoyi.device.service.dto.GroupDTO;
import org.springframework.beans.factory.annotation.Autowired;
2026-01-24 17:23:44 +08:00
import org.springframework.util.CollectionUtils;
2026-01-20 13:20:39 +08:00
import org.springframework.web.bind.annotation.*;
2026-01-30 15:34:59 +08:00
import java.util.*;
2026-01-20 13:20:39 +08:00
/**
* 分组Controller
*
* @author ruoyi
* @date 2026-01-20
*/
@RestController
@RequestMapping("/group")
public class GroupController extends BaseController
{
@Autowired
private IGroupService groupService;
2026-01-20 17:05:25 +08:00
@Autowired
2026-02-04 16:36:18 +08:00
private DefaultBufferDeviceImpl bufferDeviceService;
2026-01-30 15:29:11 +08:00
@Autowired
private IDockDomain dockDomain;
2026-01-20 13:20:39 +08:00
/**
* 创建分组
*
2026-01-20 13:45:42 +08:00
* @param request 分组创建请求
2026-01-20 13:20:39 +08:00
* @return 分组ID
*/
2026-01-20 14:07:45 +08:00
//@InnerAuth
2026-01-20 13:20:39 +08:00
@PostMapping("/create")
2026-01-20 13:45:42 +08:00
public R<Long> createGroup(@RequestBody GroupCreateRequest request)
2026-01-20 13:20:39 +08:00
{
2026-01-24 15:23:43 +08:00
try
{
GroupDTO dto = new GroupDTO();
dto.setGroupName(request.getGroupName());
Long groupId = groupService.createGroup(dto);
return R.ok(groupId);
}
catch (RuntimeException e)
{
return R.fail("新增分组'" + request.getGroupName() + "'失败,分组名称已存在");
}
2026-01-20 13:20:39 +08:00
}
/**
* 删除分组
*
* @param groupId 分组ID
* @return 结果
*/
2026-01-20 14:13:29 +08:00
//@InnerAuth
2026-01-20 13:20:39 +08:00
@DeleteMapping("/delete/{groupId}")
public R<Void> deleteGroup(@PathVariable("groupId") Long groupId)
{
groupService.deleteGroup(groupId);
return R.ok();
}
2026-01-22 09:40:03 +08:00
/**
* 修改分组名称
*
* @param request 分组更新请求
* @return 结果
*/
//@InnerAuth
@PostMapping("/update")
public R<Void> updateGroup(@RequestBody GroupUpdateRequest request)
{
2026-01-24 15:23:43 +08:00
try
{
GroupDTO dto = new GroupDTO();
dto.setGroupId(request.getGroupId());
dto.setGroupName(request.getGroupName());
groupService.updateGroup(dto);
return R.ok();
}
catch (RuntimeException e)
{
return R.fail("修改分组'" + request.getGroupName() + "'失败,分组名称已存在");
}
2026-01-22 09:40:03 +08:00
}
2026-01-20 13:20:39 +08:00
/**
* 切换机场所在的分组
*
2026-01-20 14:20:08 +08:00
* @param request 切换分组请求
2026-01-20 13:20:39 +08:00
* @return 结果
*/
2026-01-20 14:20:08 +08:00
@PostMapping("/switch")
public R<Void> switchDockGroup(@RequestBody SwitchDockGroupRequest request)
2026-01-20 13:20:39 +08:00
{
2026-01-26 09:02:11 +08:00
2026-01-24 17:23:44 +08:00
if(!CollectionUtils.isEmpty(request.getDockIds())){
for (Long dockId : request.getDockIds()) {
groupService.switchDockGroup(dockId, request.getGroupId());
}
}
2026-01-20 13:20:39 +08:00
return R.ok();
}
/**
* 查看分组下的机场
*
* @param groupId 分组ID
* @return 机场列表
*/
2026-01-20 14:13:29 +08:00
//@InnerAuth
2026-01-20 13:20:39 +08:00
@GetMapping("/docks/{groupId}")
2026-01-22 20:04:09 +08:00
public R<List<DockWithGPSVO>> getDocksByGroupId(@PathVariable("groupId") Long groupId)
2026-01-20 13:20:39 +08:00
{
2026-01-21 14:08:21 +08:00
logger.info("getDocksByGroupId {}", groupId);
2026-01-30 15:29:11 +08:00
if(Objects.equals(groupId, -1L)){
2026-02-04 16:20:50 +08:00
// List<DockGroupDTO> groupDTOS = groupService.getDocksByGroupId(groupId);
2026-01-30 15:29:11 +08:00
List<DockDetailDTO> dtoList = new ArrayList<>();
Dock queryDock = new Dock();
List<Dock> allDocks = dockDomain.selectDockList(queryDock);
if (allDocks != null) {
for (Dock dock : allDocks) {
if (dock.getLastActiveTime() != null) {
2026-02-04 16:36:18 +08:00
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dock.getDockId());
2026-02-04 16:20:50 +08:00
if (dockDetailDTO != null) {
dockDetailDTO.setLastActiveTime(dock.getLastActiveTime());
2026-03-14 09:26:42 +08:00
dockDetailDTO.setCabinVideoUrl(dock.getCabinVideoUrl());
dockDetailDTO.setOutsideVideoUrl(dock.getOutsideVideoUrl());
dockDetailDTO.setLiveVideoUrl(dock.getLiveVideoUrl());
2026-02-04 16:20:50 +08:00
dtoList.add(dockDetailDTO);
}
2026-01-30 15:29:11 +08:00
}
}
}
2026-01-30 15:34:59 +08:00
dtoList.sort(Comparator.comparing(DockDetailDTO::getLastActiveTime).reversed());
2026-01-30 15:29:11 +08:00
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
}else {
List<DockGroupDTO> groupDTOS = groupService.getDocksByGroupId(groupId);
List<DockDetailDTO> dtoList = new ArrayList<>();
for (DockGroupDTO dockGroupDTO : groupDTOS) {
2026-02-04 16:36:18 +08:00
DockDetailDTO dockDetailDTO = bufferDeviceService.getDockDetailById(dockGroupDTO.getDockId());
2026-02-04 16:20:50 +08:00
if (dockDetailDTO != null) {
dtoList.add(dockDetailDTO);
}
2026-01-30 15:29:11 +08:00
}
return R.ok(DockWithGPSVOConvert.fromList(dtoList));
2026-01-20 17:05:25 +08:00
}
2026-01-21 13:18:33 +08:00
2026-01-20 13:20:39 +08:00
}
/**
* 查看所有分组
*
* @return 分组ID列表
*/
2026-01-20 14:13:29 +08:00
//@InnerAuth
2026-01-20 13:20:39 +08:00
@GetMapping("/list")
2026-01-21 14:04:29 +08:00
public R<List<GroupVO>> getAllGroupIds()
2026-01-20 13:20:39 +08:00
{
2026-01-22 09:29:48 +08:00
List<GroupDTO> groupDTOs = groupService.getAllGroupIds();
List<GroupVO> groupVOS = new ArrayList<>();
2026-01-30 15:29:11 +08:00
// 添加虚拟的"最近使用"分组groupId = -1
// 统计 last_active_time 不为空的机场数量
Dock queryDock = new Dock();
List<Dock> allDocks = dockDomain.selectDockList(queryDock);
int recentlyUsedCount = 0;
if (allDocks != null) {
for (Dock dock : allDocks) {
if (dock.getLastActiveTime() != null) {
recentlyUsedCount++;
}
}
}
// 创建"最近使用"虚拟分组
GroupVO recentlyUsedGroup = new GroupVO();
recentlyUsedGroup.setGroupId(-1L);
recentlyUsedGroup.setGroupName("最近使用");
recentlyUsedGroup.setDockCount(recentlyUsedCount);
groupVOS.add(recentlyUsedGroup);
// 添加其他真实分组
2026-01-22 09:29:48 +08:00
for(GroupDTO groupDTO : groupDTOs){
GroupVO groupVO = GroupVOConvert.from(groupDTO);
List<DockGroupDTO> dockGroupDTOs = groupService.getDocksByGroupId(groupDTO.getGroupId());
groupVO.setDockCount(dockGroupDTOs.size());
groupVOS.add(groupVO);
}
return R.ok(groupVOS);
2026-01-20 13:20:39 +08:00
}
}