代码注释 #30

Merged
hnu202326010106 merged 1 commits from wanglei_branch into develop 1 month ago

@ -1,45 +0,0 @@
package com.campus.water.entity;
import lombok.Data;
import javax.persistence.*;
import java.time.LocalDateTime;
@Data
@Entity
@Table(name = "admin")
public class Admin {
@Id
@Column(name = "admin_id", length = 50)
private String adminId;
@Column(name = "admin_name", length = 50)
private String adminName;
@Column(name = "password", length = 200)
private String password;
@Column(name = "phone", length = 20)
private String phone;
@Enumerated(EnumType.STRING)
@Column(name = "role", length = 50)
private AdminRole role = AdminRole.area_admin;
@Enumerated(EnumType.STRING)
@Column(name = "status", length = 50)
private AdminStatus status = AdminStatus.active;
@Column(name = "created_time")
private LocalDateTime createdTime = LocalDateTime.now();
@Column(name = "updated_time")
private LocalDateTime updatedTime = LocalDateTime.now();
public enum AdminRole {
super_admin, area_admin, viewer
}
public enum AdminStatus {
active, inactive
}
}

@ -1,3 +1,8 @@
/**
*
* alert
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* area
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* device
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* device_terminal_mapping
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* drink_recommendation
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* drink_record
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* inspection_record
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* maintenance_plan
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* message_push
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* repairer_auth
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* repairman
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
* 使
* terminal_usage_stats
* 使使
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* user
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* water_maker_realtime_data
* TDS寿
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* water_quality_history
* TDS
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* water_supply_realtime_data
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -1,3 +1,8 @@
/**
*
* work_order
*
*/
package com.campus.water.entity;
import lombok.Data;

@ -9,15 +9,28 @@ import java.util.Optional;
@Repository
public interface AdminRepository extends JpaRepository<Admin, String> {
// 根据管理员ID查询
Optional<Admin> findByAdminId(String adminId);
// 根据管理员姓名模糊查询
List<Admin> findByAdminNameContaining(String adminName);
// 根据角色查询管理员
List<Admin> findByRole(Admin.AdminRole role);
// 根据状态查询管理员
List<Admin> findByStatus(Admin.AdminStatus status);
// 根据手机号查询管理员
Optional<Admin> findByPhone(String phone);
// 按角色和状态查询管理员
@Query("SELECT a FROM Admin a WHERE a.role = ?1 AND a.status = ?2")
List<Admin> findByRoleAndStatus(Admin.AdminRole role, Admin.AdminStatus status);
// 检查管理员ID是否存在
boolean existsByAdminId(String adminId);
// 检查手机号是否存在
boolean existsByPhone(String phone);
}

@ -8,13 +8,30 @@ import java.util.List;
@Repository
public interface AlertRepository extends JpaRepository<Alert, Long> {
// 根据设备ID查询告警
List<Alert> findByDeviceId(String deviceId);
// 根据告警类型查询
List<Alert> findByAlertType(String alertType);
// 根据告警状态查询
List<Alert> findByStatus(Alert.AlertStatus status);
// 根据告警级别查询
List<Alert> findByAlertLevel(Alert.AlertLevel alertLevel);
// 根据区域ID查询告警
List<Alert> findByAreaId(String areaId);
// 根据时间范围查询告警记录
List<Alert> findByTimestampBetween(LocalDateTime start, LocalDateTime end);
// 按状态和级别查询告警
List<Alert> findByStatusAndAlertLevel(Alert.AlertStatus status, Alert.AlertLevel level);
// 查询指定时间后的告警
List<Alert> findByTimestampAfter(LocalDateTime timestamp);
// 根据处理人查询告警
List<Alert> findByResolvedBy(String resolvedBy);
}

@ -8,13 +8,19 @@ import java.util.List;
@Repository
public interface AreaRepository extends JpaRepository<Area, String> {
// 根据区域类型查询
List<Area> findByAreaType(Area.AreaType areaType);
// 根据父区域ID查询子区域
List<Area> findByParentAreaId(String parentAreaId);
// 根据管理员姓名查询区域
List<Area> findByManager(String manager);
// 修复:使用正确的字段名 managerPhone
// 根据管理员手机号查询区域
List<Area> findByManagerPhone(String managerPhone);
// 查询指定类型的根级区域
@Query("SELECT a FROM Area a WHERE a.areaType = ?1 AND a.parentAreaId IS NULL")
List<Area> findRootAreasByType(Area.AreaType areaType);
}

@ -7,12 +7,18 @@ import java.util.List;
@Repository
public interface DeviceRepository extends JpaRepository<Device, String> {
// 根据区域ID查询设备
List<Device> findByAreaId(String areaId);
// 根据设备类型查询
List<Device> findByDeviceType(Device.DeviceType deviceType);
// 根据设备状态查询
List<Device> findByStatus(Device.DeviceStatus status);
// 修复确保areaId字段存在
// 按区域和设备类型查询设备
List<Device> findByAreaIdAndDeviceType(String areaId, Device.DeviceType deviceType);
// 按安装位置模糊查询设备
List<Device> findByInstallLocationContaining(String location);
}

@ -8,8 +8,15 @@ import java.util.Optional;
@Repository
public interface DeviceTerminalMappingRepository extends JpaRepository<DeviceTerminalMapping, Integer> {
// 根据终端ID查找映射关系
Optional<DeviceTerminalMapping> findByTerminalId(String terminalId);
// 根据设备ID查找所有关联终端
List<DeviceTerminalMapping> findByDeviceId(String deviceId);
// 根据终端状态查找映射关系
List<DeviceTerminalMapping> findByTerminalStatus(DeviceTerminalMapping.TerminalStatus status);
// 根据设备和终端ID精确查找映射
Optional<DeviceTerminalMapping> findByDeviceIdAndTerminalId(String deviceId, String terminalId);
}

@ -10,19 +10,28 @@ import java.util.Optional;
@Repository
public interface DrinkRecommendationRepository extends JpaRepository<DrinkRecommendation, Long> {
// 根据学生ID查询饮水推荐
List<DrinkRecommendation> findByStudentId(String studentId);
// 根据推荐日期查询
List<DrinkRecommendation> findByRecommendationDate(LocalDate recommendationDate);
// 根据日期范围查询饮水推荐
List<DrinkRecommendation> findByRecommendationDateBetween(LocalDate start, LocalDate end);
// 按学生和日期查找推荐记录
@Query("SELECT d FROM DrinkRecommendation d WHERE d.studentId = ?1 AND d.recommendationDate = ?2")
Optional<DrinkRecommendation> findByStudentIdAndRecommendationDate(String studentId, LocalDate date);
// 查询学生时间段内的饮水推荐记录
@Query("SELECT d FROM DrinkRecommendation d WHERE d.studentId = ?1 AND d.recommendationDate BETWEEN ?2 AND ?3 ORDER BY d.recommendationDate DESC")
List<DrinkRecommendation> findByStudentIdAndRecommendationDateBetween(String studentId, LocalDate start, LocalDate end);
// 统计学生某日总饮水进度
@Query("SELECT SUM(d.currentProgress) FROM DrinkRecommendation d WHERE d.studentId = ?1 AND d.recommendationDate = ?2")
Double getTotalProgressByStudentIdAndDate(String studentId, LocalDate date);
// 计算学生期间平均目标
@Query("SELECT AVG(d.dailyTarget) FROM DrinkRecommendation d WHERE d.studentId = ?1 AND d.recommendationDate BETWEEN ?2 AND ?3")
Double getAverageDailyTargetByStudentIdAndPeriod(String studentId, LocalDate start, LocalDate end);
}

@ -10,26 +10,36 @@ import java.util.List;
@Repository
public interface DrinkRecordRepository extends JpaRepository<DrinkRecord, Long> {
// 根据学生ID查询饮水记录
List<DrinkRecord> findByStudentId(String studentId);
// 根据终端ID查询饮水记录
List<DrinkRecord> findByTerminalId(String terminalId);
// 根据设备ID查询饮水记录
List<DrinkRecord> findByDeviceId(String deviceId);
// 修正:使用 drink_time 字段进行日期范围查询
// 查询学生某日的饮水记录
@Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND DATE(d.drinkTime) = ?2")
List<DrinkRecord> findByStudentIdAndDrinkDate(String studentId, LocalDate drinkDate);
// 查询学生时间段内的饮水记录
@Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND d.drinkTime BETWEEN ?2 AND ?3")
List<DrinkRecord> findByStudentIdAndDrinkTimeBetween(String studentId, LocalDateTime start, LocalDateTime end);
// 统计学生单日总饮水量
@Query("SELECT SUM(d.waterConsumption) FROM DrinkRecord d WHERE d.studentId = ?1 AND DATE(d.drinkTime) = ?2")
Double getTotalWaterConsumptionByStudentIdAndDate(String studentId, LocalDate date);
// 查询学生时间段内的饮水记录(按时间倒序)
@Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND d.drinkTime BETWEEN ?2 AND ?3 ORDER BY d.drinkTime DESC")
List<DrinkRecord> findByStudentIdAndDrinkTimeBetweenOrdered(String studentId, LocalDateTime start, LocalDateTime end);
// 查询终端时间段内的饮水记录
@Query("SELECT d FROM DrinkRecord d WHERE d.terminalId = ?1 AND d.drinkTime BETWEEN ?2 AND ?3")
List<DrinkRecord> findByTerminalIdAndDrinkTimeBetween(String terminalId, LocalDateTime start, LocalDateTime end);
// 统计终端单日使用次数
@Query("SELECT COUNT(d) FROM DrinkRecord d WHERE d.terminalId = ?1 AND DATE(d.drinkTime) = ?2")
Long countByTerminalIdAndDrinkDate(String terminalId, LocalDate drinkDate);
}

@ -8,11 +8,24 @@ import java.util.List;
@Repository
public interface InspectionRecordRepository extends JpaRepository<InspectionRecord, Long> {
// 根据工单ID查询巡检记录
List<InspectionRecord> findByOrderId(String orderId);
// 根据维修人员ID查询巡检记录
List<InspectionRecord> findByRepairmanId(String repairmanId);
// 根据设备ID查询巡检记录
List<InspectionRecord> findByDeviceId(String deviceId);
// 根据巡检状态查询记录
List<InspectionRecord> findByInspectionStatus(InspectionRecord.InspectionStatus status);
// 根据巡检时间范围查询记录
List<InspectionRecord> findByInspectionTimeBetween(LocalDateTime start, LocalDateTime end);
// 查询维修人员期间巡检记录
List<InspectionRecord> findByRepairmanIdAndInspectionTimeBetween(String repairmanId, LocalDateTime start, LocalDateTime end);
// 根据提交时间范围查询记录
List<InspectionRecord> findBySubmittedAtBetween(LocalDateTime start, LocalDateTime end);
}

@ -9,13 +9,25 @@ import java.util.List;
@Repository
public interface MaintenancePlanRepository extends JpaRepository<MaintenancePlan, Long> {
// 根据设备ID查询维护计划
List<MaintenancePlan> findByDeviceId(String deviceId);
// 根据计划状态查询维护计划
List<MaintenancePlan> findByPlanStatus(MaintenancePlan.PlanStatus planStatus);
// 根据维护类型查询维护计划
List<MaintenancePlan> findByMaintenanceType(String maintenanceType);
// 查询指定日期前的维护计划
List<MaintenancePlan> findByNextMaintenanceDateBefore(LocalDate date);
// 根据下次维护日期范围查询维护计划
List<MaintenancePlan> findByNextMaintenanceDateBetween(LocalDate start, LocalDate end);
// 查询设备特定状态的维护计划
List<MaintenancePlan> findByDeviceIdAndPlanStatus(String deviceId, MaintenancePlan.PlanStatus planStatus);
// 查询到期需要执行的维护计划
@Query("SELECT mp FROM MaintenancePlan mp WHERE mp.nextMaintenanceDate <= ?1 AND mp.planStatus = 'active'")
List<MaintenancePlan> findDueMaintenancePlans(LocalDate date);
}

@ -9,22 +9,37 @@ import java.util.List;
@Repository
public interface MessagePushRepository extends JpaRepository<MessagePush, Integer> {
// 根据学生ID查询消息
List<MessagePush> findByStudentId(String studentId);
// 根据管理员ID查询消息
List<MessagePush> findByAdminId(String adminId);
// 根据维修人员ID查询消息
List<MessagePush> findByRepairmanId(String repairmanId);
// 根据用户类型查询消息
List<MessagePush> findByUserType(String userType);
// 根据消息类型查询
List<MessagePush> findByMessageType(String messageType);
// 根据阅读状态查询消息
List<MessagePush> findByIsRead(Boolean isRead);
// 按用户ID和类型查询消息
@Query("SELECT m FROM MessagePush m WHERE m.userId = ?1 AND m.userType = ?2")
List<MessagePush> findByUserIdAndUserType(String userId, String userType);
// 按推送时间范围查询消息
@Query("SELECT m FROM MessagePush m WHERE m.pushTime BETWEEN ?1 AND ?2")
List<MessagePush> findByPushTimeBetween(LocalDateTime start, LocalDateTime end);
// 根据相关ID查询消息
@Query("SELECT m FROM MessagePush m WHERE m.relatedId = ?1")
List<MessagePush> findByRelatedId(String relatedId);
// 统计用户未读消息数量
@Query("SELECT COUNT(m) FROM MessagePush m WHERE m.userId = ?1 AND m.isRead = false")
Long countUnreadMessagesByUserId(String userId);
}

@ -9,13 +9,22 @@ import java.util.Optional;
@Repository
public interface RepairerAuthRepository extends JpaRepository<RepairerAuth, Long> {
// 根据用户名查询认证信息
Optional<RepairerAuth> findByUsername(String username);
// 根据维修人员ID查询认证信息
Optional<RepairerAuth> findByRepairmanId(String repairmanId);
// 根据账户状态查询认证信息
List<RepairerAuth> findByAccountStatus(RepairerAuth.AccountStatus accountStatus);
// 查找活跃状态的维修人员账号
@Query("SELECT ra FROM RepairerAuth ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'")
Optional<RepairerAuth> findActiveByUsername(String username);
// 检查用户名是否存在
boolean existsByUsername(String username);
// 检查维修工ID是否存在
boolean existsByRepairmanId(String repairmanId);
}

@ -7,9 +7,18 @@ import java.util.List;
@Repository
public interface RepairmanRepository extends JpaRepository<Repairman, String> {
// 根据区域ID查询维修人员
List<Repairman> findByAreaId(String areaId);
// 根据状态查询维修人员
List<Repairman> findByStatus(Repairman.RepairmanStatus status);
// 按技能关键词查询维修人员
List<Repairman> findBySkillsContaining(String skill);
// 按区域和状态查询维修人员
List<Repairman> findByAreaIdAndStatus(String areaId, Repairman.RepairmanStatus status);
// 查询评分高于阈值的维修人员
List<Repairman> findByRatingGreaterThanEqual(Double minRating);
}

@ -10,19 +10,28 @@ import java.util.Optional;
@Repository
public interface TerminalUsageStatsRepository extends JpaRepository<TerminalUsageStats, Long> {
// 根据终端ID查找使用统计
List<TerminalUsageStats> findByTerminalId(String terminalId);
// 根据统计日期查找使用统计
List<TerminalUsageStats> findByStatDate(LocalDate statDate);
// 根据日期范围查找使用统计
List<TerminalUsageStats> findByStatDateBetween(LocalDate start, LocalDate end);
// 根据终端ID和日期范围查询统计数据
@Query("SELECT t FROM TerminalUsageStats t WHERE t.terminalId = ?1 AND t.statDate BETWEEN ?2 AND ?3")
List<TerminalUsageStats> findByTerminalIdAndStatDateBetween(String terminalId, LocalDate start, LocalDate end);
// 查询使用次数超过阈值的终端
@Query("SELECT t FROM TerminalUsageStats t WHERE t.usageCount > ?1")
List<TerminalUsageStats> findByUsageCountGreaterThan(Integer usageCount);
// 查询总出水量超过阈值的终端
@Query("SELECT t FROM TerminalUsageStats t WHERE t.totalWaterOutput > ?1")
List<TerminalUsageStats> findByTotalWaterOutputGreaterThan(Double totalWaterOutput);
// 按终端和日期查找统计记录
@Query("SELECT t FROM TerminalUsageStats t WHERE t.terminalId = ?1 AND t.statDate = ?2")
Optional<TerminalUsageStats> findByTerminalIdAndStatDate(String terminalId, LocalDate statDate);
}

@ -9,16 +9,31 @@ import java.util.Optional;
@Repository
public interface UserRepository extends JpaRepository<User, String> {
// 根据学号查找用户
Optional<User> findByStudentId(String studentId);
// 根据学生姓名模糊查询
List<User> findByStudentNameContaining(String studentName);
// 根据用户状态查询
List<User> findByStatus(User.UserStatus status);
// 根据手机号查询用户
Optional<User> findByPhone(String phone);
// 根据邮箱查询用户
Optional<User> findByEmail(String email);
// 按姓名模糊查询和状态筛选
@Query("SELECT u FROM User u WHERE u.studentName LIKE %?1% AND u.status = ?2")
List<User> findByStudentNameContainingAndStatus(String studentName, User.UserStatus status);
// 检查学号是否已存在
boolean existsByStudentId(String studentId);
// 检查手机号是否已存在
boolean existsByPhone(String phone);
// 检查邮箱是否已存在
boolean existsByEmail(String email);
}

@ -10,35 +10,48 @@ import java.util.Optional;
@Repository
public interface WaterMakerRealtimeDataRepository extends JpaRepository<WaterMakerRealtimeData, Long> {
// 根据设备ID查询实时数据
List<WaterMakerRealtimeData> findByDeviceId(String deviceId);
// 根据记录时间范围查询数据
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.recordTime BETWEEN ?1 AND ?2 ORDER BY w.recordTime DESC")
List<WaterMakerRealtimeData> findByRecordTimeBetween(LocalDateTime start, LocalDateTime end);
// 查询设备时间段内的实时数据
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.deviceId = ?1 AND w.recordTime BETWEEN ?2 AND ?3 ORDER BY w.recordTime DESC")
List<WaterMakerRealtimeData> findByDeviceIdAndRecordTimeBetween(String deviceId, LocalDateTime start, LocalDateTime end);
// 获取设备最近10条记录
@Query(value = "SELECT * FROM water_maker_realtime_data w WHERE w.device_id = ?1 ORDER BY w.record_time DESC LIMIT 10", nativeQuery = true)
List<WaterMakerRealtimeData> findTop10ByDeviceIdOrderByRecordTimeDesc(String deviceId);
// 根据泄漏状态查询设备数据
List<WaterMakerRealtimeData> findByLeakage(Boolean leakage);
// 根据设备状态查询数据
List<WaterMakerRealtimeData> findByStatus(WaterMakerRealtimeData.DeviceStatus status);
// 查询滤芯寿命低的设备
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.filterLife < ?1")
List<WaterMakerRealtimeData> findByFilterLifeLessThan(Integer filterLife);
// 按TDS阈值查询设备数据原水TDS
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue1 > ?1")
List<WaterMakerRealtimeData> findByTdsValue1GreaterThan(Double tdsValue);
// 按TDS阈值查询设备数据纯水TDS
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue2 > ?1")
List<WaterMakerRealtimeData> findByTdsValue2GreaterThan(Double tdsValue);
// 按TDS阈值查询设备数据矿化水TDS
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue3 > ?1")
List<WaterMakerRealtimeData> findByTdsValue3GreaterThan(Double tdsValue);
// 查询水压低于阈值的设备
@Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.waterPress < ?1")
List<WaterMakerRealtimeData> findByWaterPressLessThan(Double waterPress);
// 获取设备最新运行数据
@Query(value = "SELECT * FROM water_maker_realtime_data w WHERE w.device_id = ?1 ORDER BY w.record_time DESC LIMIT 1", nativeQuery = true)
Optional<WaterMakerRealtimeData> findLatestByDeviceId(String deviceId);
}

@ -10,36 +10,49 @@ import java.util.Optional;
@Repository
public interface WaterQualityHistoryRepository extends JpaRepository<WaterQualityHistory, Long> {
// 根据终端ID查询水质历史
List<WaterQualityHistory> findByTerminalId(String terminalId);
// 根据设备ID查询水质历史
List<WaterQualityHistory> findByDeviceId(String deviceId);
// 查询终端时间段内的水质记录
@Query("SELECT w FROM WaterQualityHistory w WHERE w.terminalId = ?1 AND w.detectedTime BETWEEN ?2 AND ?3 ORDER BY w.detectedTime DESC")
List<WaterQualityHistory> findByTerminalIdAndDetectedTimeBetween(String terminalId, LocalDateTime start, LocalDateTime end);
// 获取终端最近5次检测记录
@Query(value = "SELECT * FROM water_quality_history w WHERE w.terminal_id = ?1 ORDER BY w.detected_time DESC LIMIT 5", nativeQuery = true)
List<WaterQualityHistory> findTop5ByTerminalIdOrderByDetectedTimeDesc(String terminalId);
// 根据水质评级查询
@Query("SELECT w FROM WaterQualityHistory w WHERE w.waterQuality = ?1")
List<WaterQualityHistory> findByWaterQuality(String waterQuality);
// 按TDS阈值查询水质记录原水TDS
@Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue1 > ?1")
List<WaterQualityHistory> findByTdsValue1GreaterThan(Double tdsValue);
// 按TDS阈值查询水质记录纯水TDS
@Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue2 > ?1")
List<WaterQualityHistory> findByTdsValue2GreaterThan(Double tdsValue);
// 按TDS阈值查询水质记录矿化水TDS
@Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue3 > ?1")
List<WaterQualityHistory> findByTdsValue3GreaterThan(Double tdsValue);
// 查询设备时间段内的水质记录
@Query("SELECT w FROM WaterQualityHistory w WHERE w.deviceId = ?1 AND w.detectedTime BETWEEN ?2 AND ?3 ORDER BY w.detectedTime DESC")
List<WaterQualityHistory> findByDeviceIdAndDetectedTimeBetween(String deviceId, LocalDateTime start, LocalDateTime end);
// 获取终端最新水质记录
@Query(value = "SELECT * FROM water_quality_history w WHERE w.terminal_id = ?1 ORDER BY w.detected_time DESC LIMIT 1", nativeQuery = true)
Optional<WaterQualityHistory> findLatestByTerminalId(String terminalId);
// 获取设备最新水质记录
@Query(value = "SELECT * FROM water_quality_history w WHERE w.device_id = ?1 ORDER BY w.detected_time DESC LIMIT 1", nativeQuery = true)
Optional<WaterQualityHistory> findLatestByDeviceId(String deviceId);
// 根据检测时间范围查询水质记录
@Query("SELECT w FROM WaterQualityHistory w WHERE w.detectedTime BETWEEN ?1 AND ?2 ORDER BY w.detectedTime DESC")
List<WaterQualityHistory> findByDetectedTimeBetween(LocalDateTime start, LocalDateTime end);
}

@ -10,28 +10,37 @@ import java.util.Optional;
@Repository
public interface WaterSupplyRealtimeDataRepository extends JpaRepository<WaterSupplyRealtimeData, Long> {
// 根据设备ID查询实时数据
List<WaterSupplyRealtimeData> findByDeviceId(String deviceId);
// 根据时间戳范围查询数据
@Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.timestamp BETWEEN ?1 AND ?2 ORDER BY w.timestamp DESC")
List<WaterSupplyRealtimeData> findByTimestampBetween(LocalDateTime start, LocalDateTime end);
// 查询设备时间段内的实时数据
@Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.deviceId = ?1 AND w.timestamp BETWEEN ?2 AND ?3 ORDER BY w.timestamp DESC")
List<WaterSupplyRealtimeData> findByDeviceIdAndTimestampBetween(String deviceId, LocalDateTime start, LocalDateTime end);
// 获取设备最近10条记录
@Query(value = "SELECT * FROM water_supply_realtime_data w WHERE w.device_id = ?1 ORDER BY w.timestamp DESC LIMIT 10", nativeQuery = true)
List<WaterSupplyRealtimeData> findTop10ByDeviceIdOrderByTimestampDesc(String deviceId);
// 根据设备状态查询数据
List<WaterSupplyRealtimeData> findByStatus(WaterSupplyRealtimeData.DeviceStatus status);
// 查询水位低于阈值的设备
@Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.waterLevel < ?1")
List<WaterSupplyRealtimeData> findByWaterLevelLessThan(Double waterLevel);
// 查询温度高于阈值的设备
@Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.temperature > ?1")
List<WaterSupplyRealtimeData> findByTemperatureGreaterThan(Double temperature);
// 查询水压低于阈值的设备
@Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.waterPress < ?1")
List<WaterSupplyRealtimeData> findByWaterPressLessThan(Double waterPress);
// 获取设备最新供水数据
@Query(value = "SELECT * FROM water_supply_realtime_data w WHERE w.device_id = ?1 ORDER BY w.timestamp DESC LIMIT 1", nativeQuery = true)
Optional<WaterSupplyRealtimeData> findLatestByDeviceId(String deviceId);
}

@ -8,16 +8,39 @@ import java.util.List;
@Repository
public interface WorkOrderRepository extends JpaRepository<WorkOrder, String> {
// 根据区域ID查询工单
List<WorkOrder> findByAreaId(String areaId);
// 根据工单状态查询
List<WorkOrder> findByStatus(WorkOrder.OrderStatus status);
// 根据分配的维修人员ID查询工单
List<WorkOrder> findByAssignedRepairmanId(String assignedRepairmanId);
// 按区域和状态查询工单
List<WorkOrder> findByAreaIdAndStatus(String areaId, WorkOrder.OrderStatus status);
// 根据优先级查询工单
List<WorkOrder> findByPriority(WorkOrder.OrderPriority priority);
// 根据设备ID查询工单
List<WorkOrder> findByDeviceId(String deviceId);
// 根据工单类型查询
List<WorkOrder> findByOrderType(WorkOrder.OrderType orderType);
// 根据创建时间范围查询工单
List<WorkOrder> findByCreatedTimeBetween(LocalDateTime start, LocalDateTime end);
// 查询超时未完成工单
List<WorkOrder> findByDeadlineBeforeAndStatusNot(LocalDateTime deadline, WorkOrder.OrderStatus status);
// 查询维修人员负责的工单
List<WorkOrder> findByAssignedRepairmanIdAndStatus(String assignedRepairmanId, WorkOrder.OrderStatus status);
// 根据告警ID查询工单
List<WorkOrder> findByAlertId(Long alertId);
// 根据创建人查询工单
List<WorkOrder> findByCreatedBy(String createdBy);
}
Loading…
Cancel
Save