From 0413e412402fcf4b12d672deadbb4a67be855e10 Mon Sep 17 00:00:00 2001 From: wanglei <3085637232@qq.com> Date: Sun, 30 Nov 2025 20:23:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=8B=E7=A3=8A=E2=80=94=E2=80=94=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/campus/water/entity/Admin.java | 45 ------------------- .../java/com/campus/water/entity/Alert.java | 5 +++ .../java/com/campus/water/entity/Area.java | 5 +++ .../java/com/campus/water/entity/Device.java | 5 +++ .../water/entity/DeviceTerminalMapping.java | 5 +++ .../water/entity/DrinkRecommendation.java | 5 +++ .../com/campus/water/entity/DrinkRecord.java | 5 +++ .../campus/water/entity/InspectionRecord.java | 5 +++ .../campus/water/entity/MaintenancePlan.java | 5 +++ .../com/campus/water/entity/MessagePush.java | 5 +++ .../com/campus/water/entity/RepairerAuth.java | 5 +++ .../com/campus/water/entity/Repairman.java | 5 +++ .../water/entity/TerminalUsageStats.java | 5 +++ .../java/com/campus/water/entity/User.java | 5 +++ .../water/entity/WaterMakerRealtimeData.java | 5 +++ .../water/entity/WaterQualityHistory.java | 5 +++ .../water/entity/WaterSupplyRealtimeData.java | 5 +++ .../com/campus/water/entity/WorkOrder.java | 5 +++ .../campus/water/mapper/AdminRepository.java | 13 ++++++ .../campus/water/mapper/AlertRepository.java | 17 +++++++ .../campus/water/mapper/AreaRepository.java | 8 +++- .../campus/water/mapper/DeviceRepository.java | 8 +++- .../DeviceTerminalMappingRepository.java | 7 +++ .../mapper/DrinkRecommendationRepository.java | 9 ++++ .../water/mapper/DrinkRecordRepository.java | 12 ++++- .../mapper/InspectionRecordRepository.java | 13 ++++++ .../mapper/MaintenancePlanRepository.java | 12 +++++ .../water/mapper/MessagePushRepository.java | 15 +++++++ .../water/mapper/RepairerAuthRepository.java | 9 ++++ .../water/mapper/RepairmanRepository.java | 9 ++++ .../mapper/TerminalUsageStatsRepository.java | 9 ++++ .../campus/water/mapper/UserRepository.java | 15 +++++++ .../WaterMakerRealtimeDataRepository.java | 13 ++++++ .../mapper/WaterQualityHistoryRepository.java | 13 ++++++ .../WaterSupplyRealtimeDataRepository.java | 9 ++++ .../water/mapper/WorkOrderRepository.java | 23 ++++++++++ 36 files changed, 296 insertions(+), 48 deletions(-) delete mode 100644 src/main/java/com/campus/water/entity/Admin.java diff --git a/src/main/java/com/campus/water/entity/Admin.java b/src/main/java/com/campus/water/entity/Admin.java deleted file mode 100644 index 4b7335a..0000000 --- a/src/main/java/com/campus/water/entity/Admin.java +++ /dev/null @@ -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 - } -} \ No newline at end of file diff --git a/src/main/java/com/campus/water/entity/Alert.java b/src/main/java/com/campus/water/entity/Alert.java index d99b944..3ae7e19 100644 --- a/src/main/java/com/campus/water/entity/Alert.java +++ b/src/main/java/com/campus/water/entity/Alert.java @@ -1,3 +1,8 @@ +/** + * 告警信息实体类 + * 对应表:alert + * 用于记录设备告警信息,包括告警级别、状态、处理人等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/Area.java b/src/main/java/com/campus/water/entity/Area.java index 2a64434..dddbd04 100644 --- a/src/main/java/com/campus/water/entity/Area.java +++ b/src/main/java/com/campus/water/entity/Area.java @@ -1,3 +1,8 @@ +/** + * 区域信息实体类 + * 对应表:area + * 用于管理校园、楼宇、区域等层级结构信息 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/Device.java b/src/main/java/com/campus/water/entity/Device.java index f536268..3d9e48b 100644 --- a/src/main/java/com/campus/water/entity/Device.java +++ b/src/main/java/com/campus/water/entity/Device.java @@ -1,3 +1,8 @@ +/** + * 设备信息实体类 + * 对应表:device + * 用于存储设备基本信息,如设备类型、安装位置、状态等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/DeviceTerminalMapping.java b/src/main/java/com/campus/water/entity/DeviceTerminalMapping.java index 1a1ef24..2e3e18a 100644 --- a/src/main/java/com/campus/water/entity/DeviceTerminalMapping.java +++ b/src/main/java/com/campus/water/entity/DeviceTerminalMapping.java @@ -1,3 +1,8 @@ +/** + * 设备与终端映射实体类 + * 对应表:device_terminal_mapping + * 用于关联设备与终端设备,记录终端状态和安装信息 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/DrinkRecommendation.java b/src/main/java/com/campus/water/entity/DrinkRecommendation.java index 9b913c3..f1a09b8 100644 --- a/src/main/java/com/campus/water/entity/DrinkRecommendation.java +++ b/src/main/java/com/campus/water/entity/DrinkRecommendation.java @@ -1,3 +1,8 @@ +/** + * 饮水推荐实体类 + * 对应表:drink_recommendation + * 用于记录学生的每日饮水目标和当前进度 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/DrinkRecord.java b/src/main/java/com/campus/water/entity/DrinkRecord.java index b875653..a51d510 100644 --- a/src/main/java/com/campus/water/entity/DrinkRecord.java +++ b/src/main/java/com/campus/water/entity/DrinkRecord.java @@ -1,3 +1,8 @@ +/** + * 饮水记录实体类 + * 对应表:drink_record + * 用于记录学生的每次饮水行为,包括用水量、水质、时间、位置等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/InspectionRecord.java b/src/main/java/com/campus/water/entity/InspectionRecord.java index 913eb7c..1311b24 100644 --- a/src/main/java/com/campus/water/entity/InspectionRecord.java +++ b/src/main/java/com/campus/water/entity/InspectionRecord.java @@ -1,3 +1,8 @@ +/** + * 巡检记录实体类 + * 对应表:inspection_record + * 用于记录维修人员的巡检结果,包括状态、异常描述、照片等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/MaintenancePlan.java b/src/main/java/com/campus/water/entity/MaintenancePlan.java index fcecb4d..ac08897 100644 --- a/src/main/java/com/campus/water/entity/MaintenancePlan.java +++ b/src/main/java/com/campus/water/entity/MaintenancePlan.java @@ -1,3 +1,8 @@ +/** + * 维护计划实体类 + * 对应表:maintenance_plan + * 用于制定和管理设备的定期维护计划 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/MessagePush.java b/src/main/java/com/campus/water/entity/MessagePush.java index affa0f7..58cda06 100644 --- a/src/main/java/com/campus/water/entity/MessagePush.java +++ b/src/main/java/com/campus/water/entity/MessagePush.java @@ -1,3 +1,8 @@ +/** + * 消息推送记录实体类 + * 对应表:message_push + * 用于存储系统向用户、管理员、维修人员推送的消息记录 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/RepairerAuth.java b/src/main/java/com/campus/water/entity/RepairerAuth.java index 06cd23c..875d7d3 100644 --- a/src/main/java/com/campus/water/entity/RepairerAuth.java +++ b/src/main/java/com/campus/water/entity/RepairerAuth.java @@ -1,3 +1,8 @@ +/** + * 维修人员认证信息实体类 + * 对应表:repairer_auth + * 用于存储维修人员的登录账号、密码、状态等信息 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/Repairman.java b/src/main/java/com/campus/water/entity/Repairman.java index 70e02e4..766d988 100644 --- a/src/main/java/com/campus/water/entity/Repairman.java +++ b/src/main/java/com/campus/water/entity/Repairman.java @@ -1,3 +1,8 @@ +/** + * 维修人员信息实体类 + * 对应表:repairman + * 用于存储维修人员信息,包括技能、状态、工作量、评分等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/TerminalUsageStats.java b/src/main/java/com/campus/water/entity/TerminalUsageStats.java index 521d437..65ca04d 100644 --- a/src/main/java/com/campus/water/entity/TerminalUsageStats.java +++ b/src/main/java/com/campus/water/entity/TerminalUsageStats.java @@ -1,3 +1,8 @@ +/** + * 终端使用统计实体类 + * 对应表:terminal_usage_stats + * 用于记录终端设备的每日使用情况统计,如用水量、使用次数等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/User.java b/src/main/java/com/campus/water/entity/User.java index f4d4c92..57b5c82 100644 --- a/src/main/java/com/campus/water/entity/User.java +++ b/src/main/java/com/campus/water/entity/User.java @@ -1,3 +1,8 @@ +/** + * 用户信息实体类(学生用户) + * 对应表:user + * 用于存储学生用户的基本信息、登录状态等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/WaterMakerRealtimeData.java b/src/main/java/com/campus/water/entity/WaterMakerRealtimeData.java index 30e8896..05dd509 100644 --- a/src/main/java/com/campus/water/entity/WaterMakerRealtimeData.java +++ b/src/main/java/com/campus/water/entity/WaterMakerRealtimeData.java @@ -1,3 +1,8 @@ +/** + * 实时制水数据实体类 + * 对应表:water_maker_realtime_data + * 用于存储制水设备的实时运行数据,如TDS、流量、压力、滤芯寿命等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/WaterQualityHistory.java b/src/main/java/com/campus/water/entity/WaterQualityHistory.java index c58ec59..7477408 100644 --- a/src/main/java/com/campus/water/entity/WaterQualityHistory.java +++ b/src/main/java/com/campus/water/entity/WaterQualityHistory.java @@ -1,3 +1,8 @@ +/** + * 水质历史数据实体类 + * 对应表:water_quality_history + * 用于记录终端设备检测的水质历史数据,包括多个TDS值和水质评级 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/WaterSupplyRealtimeData.java b/src/main/java/com/campus/water/entity/WaterSupplyRealtimeData.java index e63e223..ac0a344 100644 --- a/src/main/java/com/campus/water/entity/WaterSupplyRealtimeData.java +++ b/src/main/java/com/campus/water/entity/WaterSupplyRealtimeData.java @@ -1,3 +1,8 @@ +/** + * 实时供水数据实体类 + * 对应表:water_supply_realtime_data + * 用于存储供水设备的实时运行数据,如流量、压力、水位、温度等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/entity/WorkOrder.java b/src/main/java/com/campus/water/entity/WorkOrder.java index d8fcd1c..298123b 100644 --- a/src/main/java/com/campus/water/entity/WorkOrder.java +++ b/src/main/java/com/campus/water/entity/WorkOrder.java @@ -1,3 +1,8 @@ +/** + * 工单实体类 + * 对应表:work_order + * 用于管理维修、保养、巡检等工单信息,包括状态、优先级、处理记录等 + */ package com.campus.water.entity; import lombok.Data; diff --git a/src/main/java/com/campus/water/mapper/AdminRepository.java b/src/main/java/com/campus/water/mapper/AdminRepository.java index d72c736..e93c9c4 100644 --- a/src/main/java/com/campus/water/mapper/AdminRepository.java +++ b/src/main/java/com/campus/water/mapper/AdminRepository.java @@ -9,15 +9,28 @@ import java.util.Optional; @Repository public interface AdminRepository extends JpaRepository { + // 根据管理员ID查询 Optional findByAdminId(String adminId); + + // 根据管理员姓名模糊查询 List findByAdminNameContaining(String adminName); + + // 根据角色查询管理员 List findByRole(Admin.AdminRole role); + + // 根据状态查询管理员 List findByStatus(Admin.AdminStatus status); + + // 根据手机号查询管理员 Optional findByPhone(String phone); + // 按角色和状态查询管理员 @Query("SELECT a FROM Admin a WHERE a.role = ?1 AND a.status = ?2") List findByRoleAndStatus(Admin.AdminRole role, Admin.AdminStatus status); + // 检查管理员ID是否存在 boolean existsByAdminId(String adminId); + + // 检查手机号是否存在 boolean existsByPhone(String phone); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/AlertRepository.java b/src/main/java/com/campus/water/mapper/AlertRepository.java index adef168..63cf7aa 100644 --- a/src/main/java/com/campus/water/mapper/AlertRepository.java +++ b/src/main/java/com/campus/water/mapper/AlertRepository.java @@ -8,13 +8,30 @@ import java.util.List; @Repository public interface AlertRepository extends JpaRepository { + // 根据设备ID查询告警 List findByDeviceId(String deviceId); + + // 根据告警类型查询 List findByAlertType(String alertType); + + // 根据告警状态查询 List findByStatus(Alert.AlertStatus status); + + // 根据告警级别查询 List findByAlertLevel(Alert.AlertLevel alertLevel); + + // 根据区域ID查询告警 List findByAreaId(String areaId); + + // 根据时间范围查询告警记录 List findByTimestampBetween(LocalDateTime start, LocalDateTime end); + + // 按状态和级别查询告警 List findByStatusAndAlertLevel(Alert.AlertStatus status, Alert.AlertLevel level); + + // 查询指定时间后的告警 List findByTimestampAfter(LocalDateTime timestamp); + + // 根据处理人查询告警 List findByResolvedBy(String resolvedBy); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/AreaRepository.java b/src/main/java/com/campus/water/mapper/AreaRepository.java index 4eb7a3d..3638d5b 100644 --- a/src/main/java/com/campus/water/mapper/AreaRepository.java +++ b/src/main/java/com/campus/water/mapper/AreaRepository.java @@ -8,13 +8,19 @@ import java.util.List; @Repository public interface AreaRepository extends JpaRepository { + // 根据区域类型查询 List findByAreaType(Area.AreaType areaType); + + // 根据父区域ID查询子区域 List findByParentAreaId(String parentAreaId); + + // 根据管理员姓名查询区域 List findByManager(String manager); - // 修复:使用正确的字段名 managerPhone + // 根据管理员手机号查询区域 List findByManagerPhone(String managerPhone); + // 查询指定类型的根级区域 @Query("SELECT a FROM Area a WHERE a.areaType = ?1 AND a.parentAreaId IS NULL") List findRootAreasByType(Area.AreaType areaType); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/DeviceRepository.java b/src/main/java/com/campus/water/mapper/DeviceRepository.java index 3173c37..b5dc00a 100644 --- a/src/main/java/com/campus/water/mapper/DeviceRepository.java +++ b/src/main/java/com/campus/water/mapper/DeviceRepository.java @@ -7,12 +7,18 @@ import java.util.List; @Repository public interface DeviceRepository extends JpaRepository { + // 根据区域ID查询设备 List findByAreaId(String areaId); + + // 根据设备类型查询 List findByDeviceType(Device.DeviceType deviceType); + + // 根据设备状态查询 List findByStatus(Device.DeviceStatus status); - // 修复:确保areaId字段存在 + // 按区域和设备类型查询设备 List findByAreaIdAndDeviceType(String areaId, Device.DeviceType deviceType); + // 按安装位置模糊查询设备 List findByInstallLocationContaining(String location); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/DeviceTerminalMappingRepository.java b/src/main/java/com/campus/water/mapper/DeviceTerminalMappingRepository.java index 53b2bd7..de016ce 100644 --- a/src/main/java/com/campus/water/mapper/DeviceTerminalMappingRepository.java +++ b/src/main/java/com/campus/water/mapper/DeviceTerminalMappingRepository.java @@ -8,8 +8,15 @@ import java.util.Optional; @Repository public interface DeviceTerminalMappingRepository extends JpaRepository { + // 根据终端ID查找映射关系 Optional findByTerminalId(String terminalId); + + // 根据设备ID查找所有关联终端 List findByDeviceId(String deviceId); + + // 根据终端状态查找映射关系 List findByTerminalStatus(DeviceTerminalMapping.TerminalStatus status); + + // 根据设备和终端ID精确查找映射 Optional findByDeviceIdAndTerminalId(String deviceId, String terminalId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/DrinkRecommendationRepository.java b/src/main/java/com/campus/water/mapper/DrinkRecommendationRepository.java index 2c311db..0841a4a 100644 --- a/src/main/java/com/campus/water/mapper/DrinkRecommendationRepository.java +++ b/src/main/java/com/campus/water/mapper/DrinkRecommendationRepository.java @@ -10,19 +10,28 @@ import java.util.Optional; @Repository public interface DrinkRecommendationRepository extends JpaRepository { + // 根据学生ID查询饮水推荐 List findByStudentId(String studentId); + + // 根据推荐日期查询 List findByRecommendationDate(LocalDate recommendationDate); + + // 根据日期范围查询饮水推荐 List findByRecommendationDateBetween(LocalDate start, LocalDate end); + // 按学生和日期查找推荐记录 @Query("SELECT d FROM DrinkRecommendation d WHERE d.studentId = ?1 AND d.recommendationDate = ?2") Optional 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 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); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/DrinkRecordRepository.java b/src/main/java/com/campus/water/mapper/DrinkRecordRepository.java index 544d217..23b8364 100644 --- a/src/main/java/com/campus/water/mapper/DrinkRecordRepository.java +++ b/src/main/java/com/campus/water/mapper/DrinkRecordRepository.java @@ -10,26 +10,36 @@ import java.util.List; @Repository public interface DrinkRecordRepository extends JpaRepository { + // 根据学生ID查询饮水记录 List findByStudentId(String studentId); + + // 根据终端ID查询饮水记录 List findByTerminalId(String terminalId); + + // 根据设备ID查询饮水记录 List findByDeviceId(String deviceId); - // 修正:使用 drink_time 字段进行日期范围查询 + // 查询学生某日的饮水记录 @Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND DATE(d.drinkTime) = ?2") List findByStudentIdAndDrinkDate(String studentId, LocalDate drinkDate); + // 查询学生时间段内的饮水记录 @Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND d.drinkTime BETWEEN ?2 AND ?3") List 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 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 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); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/InspectionRecordRepository.java b/src/main/java/com/campus/water/mapper/InspectionRecordRepository.java index 06d1c64..5959b2b 100644 --- a/src/main/java/com/campus/water/mapper/InspectionRecordRepository.java +++ b/src/main/java/com/campus/water/mapper/InspectionRecordRepository.java @@ -8,11 +8,24 @@ import java.util.List; @Repository public interface InspectionRecordRepository extends JpaRepository { + // 根据工单ID查询巡检记录 List findByOrderId(String orderId); + + // 根据维修人员ID查询巡检记录 List findByRepairmanId(String repairmanId); + + // 根据设备ID查询巡检记录 List findByDeviceId(String deviceId); + + // 根据巡检状态查询记录 List findByInspectionStatus(InspectionRecord.InspectionStatus status); + + // 根据巡检时间范围查询记录 List findByInspectionTimeBetween(LocalDateTime start, LocalDateTime end); + + // 查询维修人员期间巡检记录 List findByRepairmanIdAndInspectionTimeBetween(String repairmanId, LocalDateTime start, LocalDateTime end); + + // 根据提交时间范围查询记录 List findBySubmittedAtBetween(LocalDateTime start, LocalDateTime end); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/MaintenancePlanRepository.java b/src/main/java/com/campus/water/mapper/MaintenancePlanRepository.java index e8b7aec..485df05 100644 --- a/src/main/java/com/campus/water/mapper/MaintenancePlanRepository.java +++ b/src/main/java/com/campus/water/mapper/MaintenancePlanRepository.java @@ -9,13 +9,25 @@ import java.util.List; @Repository public interface MaintenancePlanRepository extends JpaRepository { + // 根据设备ID查询维护计划 List findByDeviceId(String deviceId); + + // 根据计划状态查询维护计划 List findByPlanStatus(MaintenancePlan.PlanStatus planStatus); + + // 根据维护类型查询维护计划 List findByMaintenanceType(String maintenanceType); + + // 查询指定日期前的维护计划 List findByNextMaintenanceDateBefore(LocalDate date); + + // 根据下次维护日期范围查询维护计划 List findByNextMaintenanceDateBetween(LocalDate start, LocalDate end); + + // 查询设备特定状态的维护计划 List findByDeviceIdAndPlanStatus(String deviceId, MaintenancePlan.PlanStatus planStatus); + // 查询到期需要执行的维护计划 @Query("SELECT mp FROM MaintenancePlan mp WHERE mp.nextMaintenanceDate <= ?1 AND mp.planStatus = 'active'") List findDueMaintenancePlans(LocalDate date); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/MessagePushRepository.java b/src/main/java/com/campus/water/mapper/MessagePushRepository.java index dd0a65d..9ed6717 100644 --- a/src/main/java/com/campus/water/mapper/MessagePushRepository.java +++ b/src/main/java/com/campus/water/mapper/MessagePushRepository.java @@ -9,22 +9,37 @@ import java.util.List; @Repository public interface MessagePushRepository extends JpaRepository { + // 根据学生ID查询消息 List findByStudentId(String studentId); + + // 根据管理员ID查询消息 List findByAdminId(String adminId); + + // 根据维修人员ID查询消息 List findByRepairmanId(String repairmanId); + + // 根据用户类型查询消息 List findByUserType(String userType); + + // 根据消息类型查询 List findByMessageType(String messageType); + + // 根据阅读状态查询消息 List findByIsRead(Boolean isRead); + // 按用户ID和类型查询消息 @Query("SELECT m FROM MessagePush m WHERE m.userId = ?1 AND m.userType = ?2") List findByUserIdAndUserType(String userId, String userType); + // 按推送时间范围查询消息 @Query("SELECT m FROM MessagePush m WHERE m.pushTime BETWEEN ?1 AND ?2") List findByPushTimeBetween(LocalDateTime start, LocalDateTime end); + // 根据相关ID查询消息 @Query("SELECT m FROM MessagePush m WHERE m.relatedId = ?1") List findByRelatedId(String relatedId); + // 统计用户未读消息数量 @Query("SELECT COUNT(m) FROM MessagePush m WHERE m.userId = ?1 AND m.isRead = false") Long countUnreadMessagesByUserId(String userId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java b/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java index 96e9148..f25311f 100644 --- a/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java +++ b/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java @@ -9,13 +9,22 @@ import java.util.Optional; @Repository public interface RepairerAuthRepository extends JpaRepository { + // 根据用户名查询认证信息 Optional findByUsername(String username); + + // 根据维修人员ID查询认证信息 Optional findByRepairmanId(String repairmanId); + + // 根据账户状态查询认证信息 List findByAccountStatus(RepairerAuth.AccountStatus accountStatus); + // 查找活跃状态的维修人员账号 @Query("SELECT ra FROM RepairerAuth ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'") Optional findActiveByUsername(String username); + // 检查用户名是否存在 boolean existsByUsername(String username); + + // 检查维修工ID是否存在 boolean existsByRepairmanId(String repairmanId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/RepairmanRepository.java b/src/main/java/com/campus/water/mapper/RepairmanRepository.java index 56fc165..ee1841d 100644 --- a/src/main/java/com/campus/water/mapper/RepairmanRepository.java +++ b/src/main/java/com/campus/water/mapper/RepairmanRepository.java @@ -7,9 +7,18 @@ import java.util.List; @Repository public interface RepairmanRepository extends JpaRepository { + // 根据区域ID查询维修人员 List findByAreaId(String areaId); + + // 根据状态查询维修人员 List findByStatus(Repairman.RepairmanStatus status); + + // 按技能关键词查询维修人员 List findBySkillsContaining(String skill); + + // 按区域和状态查询维修人员 List findByAreaIdAndStatus(String areaId, Repairman.RepairmanStatus status); + + // 查询评分高于阈值的维修人员 List findByRatingGreaterThanEqual(Double minRating); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/TerminalUsageStatsRepository.java b/src/main/java/com/campus/water/mapper/TerminalUsageStatsRepository.java index dafc11b..c44a8dc 100644 --- a/src/main/java/com/campus/water/mapper/TerminalUsageStatsRepository.java +++ b/src/main/java/com/campus/water/mapper/TerminalUsageStatsRepository.java @@ -10,19 +10,28 @@ import java.util.Optional; @Repository public interface TerminalUsageStatsRepository extends JpaRepository { + // 根据终端ID查找使用统计 List findByTerminalId(String terminalId); + + // 根据统计日期查找使用统计 List findByStatDate(LocalDate statDate); + + // 根据日期范围查找使用统计 List findByStatDateBetween(LocalDate start, LocalDate end); + // 根据终端ID和日期范围查询统计数据 @Query("SELECT t FROM TerminalUsageStats t WHERE t.terminalId = ?1 AND t.statDate BETWEEN ?2 AND ?3") List findByTerminalIdAndStatDateBetween(String terminalId, LocalDate start, LocalDate end); + // 查询使用次数超过阈值的终端 @Query("SELECT t FROM TerminalUsageStats t WHERE t.usageCount > ?1") List findByUsageCountGreaterThan(Integer usageCount); + // 查询总出水量超过阈值的终端 @Query("SELECT t FROM TerminalUsageStats t WHERE t.totalWaterOutput > ?1") List findByTotalWaterOutputGreaterThan(Double totalWaterOutput); + // 按终端和日期查找统计记录 @Query("SELECT t FROM TerminalUsageStats t WHERE t.terminalId = ?1 AND t.statDate = ?2") Optional findByTerminalIdAndStatDate(String terminalId, LocalDate statDate); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/UserRepository.java b/src/main/java/com/campus/water/mapper/UserRepository.java index 30ae620..1bc3dc6 100644 --- a/src/main/java/com/campus/water/mapper/UserRepository.java +++ b/src/main/java/com/campus/water/mapper/UserRepository.java @@ -9,16 +9,31 @@ import java.util.Optional; @Repository public interface UserRepository extends JpaRepository { + // 根据学号查找用户 Optional findByStudentId(String studentId); + + // 根据学生姓名模糊查询 List findByStudentNameContaining(String studentName); + + // 根据用户状态查询 List findByStatus(User.UserStatus status); + + // 根据手机号查询用户 Optional findByPhone(String phone); + + // 根据邮箱查询用户 Optional findByEmail(String email); + // 按姓名模糊查询和状态筛选 @Query("SELECT u FROM User u WHERE u.studentName LIKE %?1% AND u.status = ?2") List findByStudentNameContainingAndStatus(String studentName, User.UserStatus status); + // 检查学号是否已存在 boolean existsByStudentId(String studentId); + + // 检查手机号是否已存在 boolean existsByPhone(String phone); + + // 检查邮箱是否已存在 boolean existsByEmail(String email); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java b/src/main/java/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java index 7546bc0..5e2f02e 100644 --- a/src/main/java/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java +++ b/src/main/java/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java @@ -10,35 +10,48 @@ import java.util.Optional; @Repository public interface WaterMakerRealtimeDataRepository extends JpaRepository { + // 根据设备ID查询实时数据 List findByDeviceId(String deviceId); + // 根据记录时间范围查询数据 @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.recordTime BETWEEN ?1 AND ?2 ORDER BY w.recordTime DESC") List 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 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 findTop10ByDeviceIdOrderByRecordTimeDesc(String deviceId); + // 根据泄漏状态查询设备数据 List findByLeakage(Boolean leakage); + + // 根据设备状态查询数据 List findByStatus(WaterMakerRealtimeData.DeviceStatus status); + // 查询滤芯寿命低的设备 @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.filterLife < ?1") List findByFilterLifeLessThan(Integer filterLife); + // 按TDS阈值查询设备数据(原水TDS) @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue1 > ?1") List findByTdsValue1GreaterThan(Double tdsValue); + // 按TDS阈值查询设备数据(纯水TDS) @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue2 > ?1") List findByTdsValue2GreaterThan(Double tdsValue); + // 按TDS阈值查询设备数据(矿化水TDS) @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue3 > ?1") List findByTdsValue3GreaterThan(Double tdsValue); + // 查询水压低于阈值的设备 @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.waterPress < ?1") List 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 findLatestByDeviceId(String deviceId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/WaterQualityHistoryRepository.java b/src/main/java/com/campus/water/mapper/WaterQualityHistoryRepository.java index 74d956b..08a7a74 100644 --- a/src/main/java/com/campus/water/mapper/WaterQualityHistoryRepository.java +++ b/src/main/java/com/campus/water/mapper/WaterQualityHistoryRepository.java @@ -10,36 +10,49 @@ import java.util.Optional; @Repository public interface WaterQualityHistoryRepository extends JpaRepository { + // 根据终端ID查询水质历史 List findByTerminalId(String terminalId); + + // 根据设备ID查询水质历史 List 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 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 findTop5ByTerminalIdOrderByDetectedTimeDesc(String terminalId); + // 根据水质评级查询 @Query("SELECT w FROM WaterQualityHistory w WHERE w.waterQuality = ?1") List findByWaterQuality(String waterQuality); + // 按TDS阈值查询水质记录(原水TDS) @Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue1 > ?1") List findByTdsValue1GreaterThan(Double tdsValue); + // 按TDS阈值查询水质记录(纯水TDS) @Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue2 > ?1") List findByTdsValue2GreaterThan(Double tdsValue); + // 按TDS阈值查询水质记录(矿化水TDS) @Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue3 > ?1") List 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 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 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 findLatestByDeviceId(String deviceId); + // 根据检测时间范围查询水质记录 @Query("SELECT w FROM WaterQualityHistory w WHERE w.detectedTime BETWEEN ?1 AND ?2 ORDER BY w.detectedTime DESC") List findByDetectedTimeBetween(LocalDateTime start, LocalDateTime end); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java b/src/main/java/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java index b43ec7e..ff5ce8f 100644 --- a/src/main/java/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java +++ b/src/main/java/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java @@ -10,28 +10,37 @@ import java.util.Optional; @Repository public interface WaterSupplyRealtimeDataRepository extends JpaRepository { + // 根据设备ID查询实时数据 List findByDeviceId(String deviceId); + // 根据时间戳范围查询数据 @Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.timestamp BETWEEN ?1 AND ?2 ORDER BY w.timestamp DESC") List 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 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 findTop10ByDeviceIdOrderByTimestampDesc(String deviceId); + // 根据设备状态查询数据 List findByStatus(WaterSupplyRealtimeData.DeviceStatus status); + // 查询水位低于阈值的设备 @Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.waterLevel < ?1") List findByWaterLevelLessThan(Double waterLevel); + // 查询温度高于阈值的设备 @Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.temperature > ?1") List findByTemperatureGreaterThan(Double temperature); + // 查询水压低于阈值的设备 @Query("SELECT w FROM WaterSupplyRealtimeData w WHERE w.waterPress < ?1") List 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 findLatestByDeviceId(String deviceId); } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/WorkOrderRepository.java b/src/main/java/com/campus/water/mapper/WorkOrderRepository.java index 4fb1c70..1f9e1e7 100644 --- a/src/main/java/com/campus/water/mapper/WorkOrderRepository.java +++ b/src/main/java/com/campus/water/mapper/WorkOrderRepository.java @@ -8,16 +8,39 @@ import java.util.List; @Repository public interface WorkOrderRepository extends JpaRepository { + // 根据区域ID查询工单 List findByAreaId(String areaId); + + // 根据工单状态查询 List findByStatus(WorkOrder.OrderStatus status); + + // 根据分配的维修人员ID查询工单 List findByAssignedRepairmanId(String assignedRepairmanId); + + // 按区域和状态查询工单 List findByAreaIdAndStatus(String areaId, WorkOrder.OrderStatus status); + + // 根据优先级查询工单 List findByPriority(WorkOrder.OrderPriority priority); + + // 根据设备ID查询工单 List findByDeviceId(String deviceId); + + // 根据工单类型查询 List findByOrderType(WorkOrder.OrderType orderType); + + // 根据创建时间范围查询工单 List findByCreatedTimeBetween(LocalDateTime start, LocalDateTime end); + + // 查询超时未完成工单 List findByDeadlineBeforeAndStatusNot(LocalDateTime deadline, WorkOrder.OrderStatus status); + + // 查询维修人员负责的工单 List findByAssignedRepairmanIdAndStatus(String assignedRepairmanId, WorkOrder.OrderStatus status); + + // 根据告警ID查询工单 List findByAlertId(Long alertId); + + // 根据创建人查询工单 List findByCreatedBy(String createdBy); } \ No newline at end of file