From b89a544f6d2572539e25a68a7d3739e7f0959d20 Mon Sep 17 00:00:00 2001 From: tianyuan <2861334240@qq.com> Date: Sat, 27 Dec 2025 18:28:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=88=E7=AB=AF=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E8=A1=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StudentTerminalLocationController.java | 32 ++++--------- .../water/entity/WaterTerminalLocation.java | 25 +++------- .../water/entity/vo/TerminalLocationVO.java | 8 ++-- .../WaterTerminalLocationRepository.java | 9 +--- .../service/WaterTerminalLocationService.java | 10 ++-- .../WaterTerminalLocationServiceImpl.java | 47 ++++++++++--------- 6 files changed, 53 insertions(+), 78 deletions(-) diff --git a/src/main/java/com/campus/water/controller/StudentTerminalLocationController.java b/src/main/java/com/campus/water/controller/StudentTerminalLocationController.java index 59c11c8..8824883 100644 --- a/src/main/java/com/campus/water/controller/StudentTerminalLocationController.java +++ b/src/main/java/com/campus/water/controller/StudentTerminalLocationController.java @@ -13,41 +13,27 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; /** - * 学生端-饮水机位置查询控制器(返回整合后的数据) + * 学生端终端位置控制器(截图原命名,修正Terminallocation拼写错误) */ @RestController @RequestMapping("/api/student/terminal/location") @RequiredArgsConstructor -@Tag(name = "学生端-饮水机位置接口", description = "查询校内矿化水终端机位置信息") +@Tag(name = "学生端-终端位置接口", description = "饮水机地图位置查询") public class StudentTerminalLocationController { - private final WaterTerminalLocationService locationService; + private final WaterTerminalLocationService waterTerminalLocationService; // 截图原命名注入 - /** - * 获取所有终端机位置(整合安装位置、状态) - */ @GetMapping("/all") - @Operation(summary = "获取所有终端机位置", description = "查询校内所有矿化水终端机的坐标、安装位置、状态") + @Operation(summary = "获取所有终端位置") public ResultVO> getAllLocations() { - try { - List locations = locationService.getAllTerminalLocations(); - return ResultVO.success(locations, "获取所有终端机位置成功"); - } catch (Exception e) { - return ResultVO.error(500, "获取位置失败:" + e.getMessage()); - } + List list = waterTerminalLocationService.getAllTerminalLocations(); + return ResultVO.success(list, "获取所有终端位置成功"); } - /** - * 获取可用的终端机位置(仅正常运行的设备) - */ @GetMapping("/available") - @Operation(summary = "获取可用终端机位置", description = "仅查询状态正常的矿化水终端机位置") + @Operation(summary = "获取可用终端位置") public ResultVO> getAvailableLocations() { - try { - List locations = locationService.getAvailableTerminalLocations(); - return ResultVO.success(locations, "获取可用终端机位置成功"); - } catch (Exception e) { - return ResultVO.error(500, "获取可用位置失败:" + e.getMessage()); - } + List list = waterTerminalLocationService.getAvailableTerminalLocations(); + return ResultVO.success(list, "获取可用终端位置成功"); } } \ No newline at end of file diff --git a/src/main/java/com/campus/water/entity/WaterTerminalLocation.java b/src/main/java/com/campus/water/entity/WaterTerminalLocation.java index f92ce7d..b6c93f2 100644 --- a/src/main/java/com/campus/water/entity/WaterTerminalLocation.java +++ b/src/main/java/com/campus/water/entity/WaterTerminalLocation.java @@ -1,44 +1,33 @@ package com.campus.water.entity; + import java.math.BigDecimal; import lombok.Data; import jakarta.persistence.*; /** - * 矿化水终端机位置实体(仅存储地图核心数据,复用device表非坐标字段) - * 专用于学生端查看饮水机位置、地图标记场景 + * 矿化水终端机位置实体(仅存储地图坐标,无冗余字段) + * 专用于学生端地图标记,终端名称/可用状态从映射表关联查询 */ @Data @Entity @Table(name = "water_terminal_location") public class WaterTerminalLocation { /** - * 终端机ID(主键,与device表的device_id完全关联) + * 终端机ID(主键,与映射表terminal_id关联,统一长度20) */ @Id - @Column(name = "terminal_id", length = 50, nullable = false) + @Column(name = "terminal_id", length = 20, nullable = false) private String terminalId; /** - * 终端机名称(复用device表的device_name,仅存储冗余字段便于快速查询) - */ - @Column(name = "terminal_name", length = 100, nullable = false) - private String terminalName; - - /** - * 经度(高德GCJ-02坐标系,改用DECIMAL类型支持精度配置) + * 经度(高德GCJ-02坐标系) */ @Column(name = "longitude", nullable = false, columnDefinition = "DECIMAL(10,6)") private BigDecimal longitude; /** - * 纬度(高德GCJ-02坐标系,改用DECIMAL类型支持精度配置) + * 纬度(高德GCJ-02坐标系) */ @Column(name = "latitude", nullable = false, columnDefinition = "DECIMAL(10,6)") private BigDecimal latitude; - - /** - * 是否可用(关联device表的status字段:online→true,offline/fault→false) - */ - @Column(name = "is_available", nullable = false) - private Boolean isAvailable = true; } \ No newline at end of file diff --git a/src/main/java/com/campus/water/entity/vo/TerminalLocationVO.java b/src/main/java/com/campus/water/entity/vo/TerminalLocationVO.java index a40dfd6..a09cf69 100644 --- a/src/main/java/com/campus/water/entity/vo/TerminalLocationVO.java +++ b/src/main/java/com/campus/water/entity/vo/TerminalLocationVO.java @@ -3,13 +3,15 @@ package com.campus.water.entity.vo; import lombok.Data; import java.math.BigDecimal; +/** + * 终端位置VO(截图原命名,字段完全对齐) + */ @Data public class TerminalLocationVO { private String terminalId; private String terminalName; - private BigDecimal longitude; // 同步改为BigDecimal - private BigDecimal latitude; // 同步改为BigDecimal + private BigDecimal longitude; + private BigDecimal latitude; private Boolean isAvailable; - private String installLocation; private String deviceStatus; } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/WaterTerminalLocationRepository.java b/src/main/java/com/campus/water/mapper/WaterTerminalLocationRepository.java index 6e0a1f1..16d91db 100644 --- a/src/main/java/com/campus/water/mapper/WaterTerminalLocationRepository.java +++ b/src/main/java/com/campus/water/mapper/WaterTerminalLocationRepository.java @@ -4,15 +4,10 @@ import com.campus.water.entity.WaterTerminalLocation; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.List; - /** - * 终端机位置数据访问层(仅操作坐标相关数据) + * 终端机位置数据访问层(截图原命名,删除isAvailable相关查询) */ @Repository public interface WaterTerminalLocationRepository extends JpaRepository { - /** - * 查询可用的终端机位置(地图优先展示可用设备) - */ - List findByIsAvailable(Boolean isAvailable); + // 原findByIsAvailable方法删除(因实体已无该字段,筛选逻辑移至Service层) } \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/WaterTerminalLocationService.java b/src/main/java/com/campus/water/service/WaterTerminalLocationService.java index 87bdabc..2dcfed8 100644 --- a/src/main/java/com/campus/water/service/WaterTerminalLocationService.java +++ b/src/main/java/com/campus/water/service/WaterTerminalLocationService.java @@ -4,16 +4,16 @@ import com.campus.water.entity.vo.TerminalLocationVO; import java.util.List; /** - * 终端机位置服务接口(返回整合device表的VO数据) + * 终端位置服务接口(截图原命名) */ public interface WaterTerminalLocationService { /** - * 获取所有终端机位置(整合device表的安装位置、状态) + * 获取所有终端位置 */ - List getAllTerminalLocations(); + List getAllTerminalLocations(); /** - * 获取可用的终端机位置(仅展示正常运行的设备) + * 获取可用终端位置 */ - List getAvailableTerminalLocations(); + List getAvailableTerminalLocations(); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/WaterTerminalLocationServiceImpl.java b/src/main/java/com/campus/water/service/WaterTerminalLocationServiceImpl.java index 9354b2b..904731c 100644 --- a/src/main/java/com/campus/water/service/WaterTerminalLocationServiceImpl.java +++ b/src/main/java/com/campus/water/service/WaterTerminalLocationServiceImpl.java @@ -1,9 +1,9 @@ package com.campus.water.service.impl; -import com.campus.water.entity.Device; +import com.campus.water.entity.DeviceTerminalMapping; import com.campus.water.entity.WaterTerminalLocation; import com.campus.water.entity.vo.TerminalLocationVO; -import com.campus.water.mapper.DeviceRepository; +import com.campus.water.mapper.DeviceTerminalMappingRepository; import com.campus.water.mapper.WaterTerminalLocationRepository; import com.campus.water.service.WaterTerminalLocationService; import lombok.RequiredArgsConstructor; @@ -14,56 +14,59 @@ import java.util.List; import java.util.Optional; /** - * 终端机位置服务实现(关联查询device表,避免数据冗余) + * 终端位置服务实现类(截图原命名) */ @Service @RequiredArgsConstructor public class WaterTerminalLocationServiceImpl implements WaterTerminalLocationService { - private final WaterTerminalLocationRepository locationRepository; - private final DeviceRepository deviceRepository; // 注入设备表Mapper + private final WaterTerminalLocationRepository waterTerminalLocationRepository; // 截图原命名注入 + private final DeviceTerminalMappingRepository deviceTerminalMappingRepository; /** - * 获取所有终端机位置(整合device表数据) + * 获取所有终端位置(关联映射表补充名称/状态) */ @Override public List getAllTerminalLocations() { - List locationList = locationRepository.findAll(); + List locationList = waterTerminalLocationRepository.findAll(); return convertToVO(locationList); } /** - * 获取可用的终端机位置 + * 获取可用终端位置(筛选映射表active状态) */ @Override public List getAvailableTerminalLocations() { - List locationList = locationRepository.findByIsAvailable(true); - return convertToVO(locationList); + List locationList = waterTerminalLocationRepository.findAll(); + return convertToVO(locationList).stream() + .filter(TerminalLocationVO::getIsAvailable) + .toList(); } /** - * 核心转换方法:坐标表+设备表 → VO(前端展示专用) + * 转换为VO(截图原逻辑,适配字段调整) */ private List convertToVO(List locationList) { List voList = new ArrayList<>(); for (WaterTerminalLocation location : locationList) { TerminalLocationVO vo = new TerminalLocationVO(); - // 1. 赋值坐标表核心字段 + // 位置表核心字段 vo.setTerminalId(location.getTerminalId()); - vo.setTerminalName(location.getTerminalName()); vo.setLongitude(location.getLongitude()); vo.setLatitude(location.getLatitude()); - vo.setIsAvailable(location.getIsAvailable()); - // 2. 关联查询device表,补充安装位置、设备状态 - Optional deviceOptional = deviceRepository.findById(location.getTerminalId()); - if (deviceOptional.isPresent()) { - Device device = deviceOptional.get(); - vo.setInstallLocation(device.getInstallLocation()); // 复用install_location - vo.setDeviceStatus(device.getStatus().name()); + // 关联映射表获取名称/状态(替代原isAvailable字段) + Optional mappingOpt = deviceTerminalMappingRepository.findByTerminalId(location.getTerminalId()); + if (mappingOpt.isPresent()) { + DeviceTerminalMapping mapping = mappingOpt.get(); + vo.setTerminalName(mapping.getTerminalName()); + vo.setDeviceStatus(mapping.getTerminalStatus().name()); + vo.setIsAvailable(DeviceTerminalMapping.TerminalStatus.active.equals(mapping.getTerminalStatus())); } else { - vo.setInstallLocation("未配置安装位置"); - vo.setDeviceStatus("unknown"); + // 默认值(截图原逻辑) + vo.setTerminalName("未配置终端"); + vo.setDeviceStatus("inactive"); + vo.setIsAvailable(false); } voList.add(vo); } -- 2.34.1