Merge pull request '终端位置表参数修改' (#120) from junmao_branch into develop

pull/122/head
p95fco63j 2 weeks ago
commit b48a0039ef

@ -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<List<TerminalLocationVO>> getAllLocations() {
try {
List<TerminalLocationVO> locations = locationService.getAllTerminalLocations();
return ResultVO.success(locations, "获取所有终端机位置成功");
} catch (Exception e) {
return ResultVO.error(500, "获取位置失败:" + e.getMessage());
}
List<TerminalLocationVO> list = waterTerminalLocationService.getAllTerminalLocations();
return ResultVO.success(list, "获取所有终端位置成功");
}
/**
*
*/
@GetMapping("/available")
@Operation(summary = "获取可用终端机位置", description = "仅查询状态正常的矿化水终端机位置")
@Operation(summary = "获取可用终端位置")
public ResultVO<List<TerminalLocationVO>> getAvailableLocations() {
try {
List<TerminalLocationVO> locations = locationService.getAvailableTerminalLocations();
return ResultVO.success(locations, "获取可用终端机位置成功");
} catch (Exception e) {
return ResultVO.error(500, "获取可用位置失败:" + e.getMessage());
}
List<TerminalLocationVO> list = waterTerminalLocationService.getAvailableTerminalLocations();
return ResultVO.success(list, "获取可用终端位置成功");
}
}

@ -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 {
/**
* IDdevicedevice_id
* IDterminal_id20
*/
@Id
@Column(name = "terminal_id", length = 50, nullable = false)
@Column(name = "terminal_id", length = 20, nullable = false)
private String terminalId;
/**
* devicedevice_name便
*/
@Column(name = "terminal_name", length = 100, nullable = false)
private String terminalName;
/**
* GCJ-02DECIMAL
* GCJ-02
*/
@Column(name = "longitude", nullable = false, columnDefinition = "DECIMAL(10,6)")
private BigDecimal longitude;
/**
* GCJ-02DECIMAL
* GCJ-02
*/
@Column(name = "latitude", nullable = false, columnDefinition = "DECIMAL(10,6)")
private BigDecimal latitude;
/**
* devicestatusonlinetrueoffline/faultfalse
*/
@Column(name = "is_available", nullable = false)
private Boolean isAvailable = true;
}

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

@ -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<WaterTerminalLocation, String> {
/**
*
*/
List<WaterTerminalLocation> findByIsAvailable(Boolean isAvailable);
// 原findByIsAvailable方法删除因实体已无该字段筛选逻辑移至Service层
}

@ -4,16 +4,16 @@ import com.campus.water.entity.vo.TerminalLocationVO;
import java.util.List;
/**
* deviceVO
*
*/
public interface WaterTerminalLocationService {
/**
* device
*
*/
List<com.campus.water.entity.vo.TerminalLocationVO> getAllTerminalLocations();
List<TerminalLocationVO> getAllTerminalLocations();
/**
*
*
*/
List<com.campus.water.entity.vo.TerminalLocationVO> getAvailableTerminalLocations();
List<TerminalLocationVO> getAvailableTerminalLocations();
}

@ -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<TerminalLocationVO> getAllTerminalLocations() {
List<WaterTerminalLocation> locationList = locationRepository.findAll();
List<WaterTerminalLocation> locationList = waterTerminalLocationRepository.findAll();
return convertToVO(locationList);
}
/**
*
* active
*/
@Override
public List<TerminalLocationVO> getAvailableTerminalLocations() {
List<WaterTerminalLocation> locationList = locationRepository.findByIsAvailable(true);
return convertToVO(locationList);
List<WaterTerminalLocation> locationList = waterTerminalLocationRepository.findAll();
return convertToVO(locationList).stream()
.filter(TerminalLocationVO::getIsAvailable)
.toList();
}
/**
* + VO
* VO
*/
private List<TerminalLocationVO> convertToVO(List<WaterTerminalLocation> locationList) {
List<TerminalLocationVO> 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<Device> 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<DeviceTerminalMapping> 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);
}

Loading…
Cancel
Save