From b9385511267089e7ff83ab387e30c0c4564c2b84 Mon Sep 17 00:00:00 2001 From: wanglei <3085637232@qq.com> Date: Sun, 23 Nov 2025 18:52:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=8B=E7=A3=8A=E2=80=94=E2=80=94=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=B1=BB=E5=92=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/campus/water/entity/Admin.java | 45 +++++++++++ src/com/campus/water/entity/Alert.java | 58 ++++++++++++++ src/com/campus/water/entity/Area.java | 43 +++++++++++ src/com/campus/water/entity/Device.java | 46 +++++++++++ .../water/entity/DeviceTerminalMapping.java | 36 +++++++++ .../water/entity/DrinkRecommendation.java | 31 ++++++++ src/com/campus/water/entity/DrinkRecord.java | 47 +++++++++++ .../campus/water/entity/InspectionRecord.java | 44 +++++++++++ .../campus/water/entity/MaintenancePlan.java | 42 ++++++++++ src/com/campus/water/entity/MessagePush.java | 48 ++++++++++++ src/com/campus/water/entity/RepairerAuth.java | 41 ++++++++++ src/com/campus/water/entity/Repairman.java | 43 +++++++++++ .../water/entity/TerminalUsageStats.java | 40 ++++++++++ src/com/campus/water/entity/User.java | 40 ++++++++++ .../water/entity/WaterMakerRealtimeData.java | 55 +++++++++++++ .../water/entity/WaterQualityHistory.java | 35 +++++++++ .../water/entity/WaterSupplyRealtimeData.java | 46 +++++++++++ src/com/campus/water/entity/WorkOrder.java | 77 +++++++++++++++++++ .../campus/water/mapper/AdminRepository.java | 23 ++++++ .../campus/water/mapper/AlertRepository.java | 20 +++++ .../campus/water/mapper/AreaRepository.java | 20 +++++ .../campus/water/mapper/DeviceRepository.java | 18 +++++ .../DeviceTerminalMappingRepository.java | 15 ++++ .../mapper/DrinkRecommendationRepository.java | 28 +++++++ .../water/mapper/DrinkRecordRepository.java | 26 +++++++ .../mapper/InspectionRecordRepository.java | 18 +++++ .../mapper/MaintenancePlanRepository.java | 21 +++++ .../water/mapper/MessagePushRepository.java | 30 ++++++++ .../water/mapper/RepairerAuthRepository.java | 21 +++++ .../water/mapper/RepairmanRepository.java | 15 ++++ .../mapper/TerminalUsageStatsRepository.java | 28 +++++++ .../campus/water/mapper/UserRepository.java | 24 ++++++ .../WaterMakerRealtimeDataRepository.java | 31 ++++++++ .../mapper/WaterQualityHistoryRepository.java | 29 +++++++ .../WaterSupplyRealtimeDataRepository.java | 33 ++++++++ .../water/mapper/WorkOrderRepository.java | 23 ++++++ 36 files changed, 1240 insertions(+) create mode 100644 src/com/campus/water/entity/Admin.java create mode 100644 src/com/campus/water/entity/Alert.java create mode 100644 src/com/campus/water/entity/Area.java create mode 100644 src/com/campus/water/entity/Device.java create mode 100644 src/com/campus/water/entity/DeviceTerminalMapping.java create mode 100644 src/com/campus/water/entity/DrinkRecommendation.java create mode 100644 src/com/campus/water/entity/DrinkRecord.java create mode 100644 src/com/campus/water/entity/InspectionRecord.java create mode 100644 src/com/campus/water/entity/MaintenancePlan.java create mode 100644 src/com/campus/water/entity/MessagePush.java create mode 100644 src/com/campus/water/entity/RepairerAuth.java create mode 100644 src/com/campus/water/entity/Repairman.java create mode 100644 src/com/campus/water/entity/TerminalUsageStats.java create mode 100644 src/com/campus/water/entity/User.java create mode 100644 src/com/campus/water/entity/WaterMakerRealtimeData.java create mode 100644 src/com/campus/water/entity/WaterQualityHistory.java create mode 100644 src/com/campus/water/entity/WaterSupplyRealtimeData.java create mode 100644 src/com/campus/water/entity/WorkOrder.java create mode 100644 src/com/campus/water/mapper/AdminRepository.java create mode 100644 src/com/campus/water/mapper/AlertRepository.java create mode 100644 src/com/campus/water/mapper/AreaRepository.java create mode 100644 src/com/campus/water/mapper/DeviceRepository.java create mode 100644 src/com/campus/water/mapper/DeviceTerminalMappingRepository.java create mode 100644 src/com/campus/water/mapper/DrinkRecommendationRepository.java create mode 100644 src/com/campus/water/mapper/DrinkRecordRepository.java create mode 100644 src/com/campus/water/mapper/InspectionRecordRepository.java create mode 100644 src/com/campus/water/mapper/MaintenancePlanRepository.java create mode 100644 src/com/campus/water/mapper/MessagePushRepository.java create mode 100644 src/com/campus/water/mapper/RepairerAuthRepository.java create mode 100644 src/com/campus/water/mapper/RepairmanRepository.java create mode 100644 src/com/campus/water/mapper/TerminalUsageStatsRepository.java create mode 100644 src/com/campus/water/mapper/UserRepository.java create mode 100644 src/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java create mode 100644 src/com/campus/water/mapper/WaterQualityHistoryRepository.java create mode 100644 src/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java create mode 100644 src/com/campus/water/mapper/WorkOrderRepository.java diff --git a/src/com/campus/water/entity/Admin.java b/src/com/campus/water/entity/Admin.java new file mode 100644 index 0000000..4b7335a --- /dev/null +++ b/src/com/campus/water/entity/Admin.java @@ -0,0 +1,45 @@ +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/com/campus/water/entity/Alert.java b/src/com/campus/water/entity/Alert.java new file mode 100644 index 0000000..d99b944 --- /dev/null +++ b/src/com/campus/water/entity/Alert.java @@ -0,0 +1,58 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "alert") +public class Alert { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "alert_id") + private Long alertId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "alert_type", length = 50) + private String alertType; + + @Enumerated(EnumType.STRING) + @Column(name = "alert_level", length = 50) + private AlertLevel alertLevel; + + @Column(name = "alert_message", columnDefinition = "TEXT") + private String alertMessage; + + @Column(name = "area_id", length = 20) + private String areaId; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private AlertStatus status = AlertStatus.pending; + + @Column(name = "timestamp") + private LocalDateTime timestamp = LocalDateTime.now(); + + @Column(name = "resolved_time") + private LocalDateTime resolvedTime; + + @Column(name = "resolved_by", length = 50) + private String resolvedBy; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); + + public enum AlertLevel { + info, warning, error, critical + } + + public enum AlertStatus { + pending, processing, resolved, closed + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/Area.java b/src/com/campus/water/entity/Area.java new file mode 100644 index 0000000..2a64434 --- /dev/null +++ b/src/com/campus/water/entity/Area.java @@ -0,0 +1,43 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "area") +public class Area { + @Id + @Column(name = "area_id", length = 20) + private String areaId; + + @Column(name = "area_name", length = 100) + private String areaName; + + @Enumerated(EnumType.STRING) + @Column(name = "area_type", length = 50) + private AreaType areaType; + + @Column(name = "parent_area_id", length = 20) + private String parentAreaId; + + @Column(length = 200) + private String address; + + @Column(length = 50) + private String manager; + + @Column(name = "manager_phone", length = 20) // 确保这个字段存在 + private String managerPhone; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); + + public enum AreaType { + campus, building, zone + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/Device.java b/src/com/campus/water/entity/Device.java new file mode 100644 index 0000000..f536268 --- /dev/null +++ b/src/com/campus/water/entity/Device.java @@ -0,0 +1,46 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "device") +public class Device { + @Id + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "device_name", length = 100) + private String deviceName; + + @Enumerated(EnumType.STRING) + @Column(name = "device_type", length = 50) + private DeviceType deviceType; + + @Column(name = "area_id", length = 20) // 确保这个字段存在 + private String areaId; + + @Column(name = "install_location", length = 200) + private String installLocation; + + @Column(name = "install_date") + private LocalDate installDate; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private DeviceStatus status = DeviceStatus.online; + + @Column(name = "create_time") + private LocalDateTime createTime = LocalDateTime.now(); + + public enum DeviceType { + water_maker, water_supply + } + + public enum DeviceStatus { + online, offline, fault + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/DeviceTerminalMapping.java b/src/com/campus/water/entity/DeviceTerminalMapping.java new file mode 100644 index 0000000..1a1ef24 --- /dev/null +++ b/src/com/campus/water/entity/DeviceTerminalMapping.java @@ -0,0 +1,36 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "device_terminal_mapping") +public class DeviceTerminalMapping { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "mapping_id") + private Integer mappingId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "terminal_id", length = 20) + private String terminalId; + + @Column(name = "terminal_name", length = 100) + private String terminalName; + + @Enumerated(EnumType.STRING) + @Column(name = "terminal_status", length = 50) + private TerminalStatus terminalStatus; + + @Column(name = "install_date") + private LocalDate installDate; + + public enum TerminalStatus { + active, inactive + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/DrinkRecommendation.java b/src/com/campus/water/entity/DrinkRecommendation.java new file mode 100644 index 0000000..9b913c3 --- /dev/null +++ b/src/com/campus/water/entity/DrinkRecommendation.java @@ -0,0 +1,31 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "drink_recommendation") +public class DrinkRecommendation { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "recommendation_id") + private Integer recommendationId; + + @Column(name = "student_id", length = 50) + private String studentId; + + @Column(name = "daily_target", precision = 6, scale = 2) + private Double dailyTarget; + + @Column(name = "current_progress", precision = 6, scale = 2) + private Double currentProgress; + + @Column(name = "recommendation_date") + private LocalDate recommendationDate; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); +} \ No newline at end of file diff --git a/src/com/campus/water/entity/DrinkRecord.java b/src/com/campus/water/entity/DrinkRecord.java new file mode 100644 index 0000000..9ae775b --- /dev/null +++ b/src/com/campus/water/entity/DrinkRecord.java @@ -0,0 +1,47 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "drink_record") +public class DrinkRecord { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "record_id") + private Long recordId; + + @Column(name = "student_id", length = 50) + private String studentId; + + @Column(name = "terminal_id", length = 20) + private String terminalId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "volume", precision = 6, scale = 2) + private Double volume; + + @Column(name = "water_quality", length = 50) + private String waterQuality; + + @Column(name = "tds_value", precision = 8, scale = 2) + private Double tdsValue; + + @Column(name = "drink_date") + private LocalDate drinkDate; + + @Column(name = "drink_time") + private LocalTime drinkTime; + + @Column(name = "location", length = 200) + private String location; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); +} \ No newline at end of file diff --git a/src/com/campus/water/entity/InspectionRecord.java b/src/com/campus/water/entity/InspectionRecord.java new file mode 100644 index 0000000..913eb7c --- /dev/null +++ b/src/com/campus/water/entity/InspectionRecord.java @@ -0,0 +1,44 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "inspection_record") +public class InspectionRecord { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "inspection_id") + private Integer inspectionId; + + @Column(name = "order_id", length = 30) + private String orderId; + + @Column(name = "repairman_id", length = 50) + private String repairmanId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Enumerated(EnumType.STRING) + @Column(name = "inspection_status", length = 50) + private InspectionStatus inspectionStatus; + + @Column(name = "abnormal_description", columnDefinition = "LONGTEXT") + private String abnormalDescription; + + @Column(name = "inspection_photo", columnDefinition = "LONGTEXT") + private String inspectionPhoto; + + @Column(name = "inspection_time") + private LocalDateTime inspectionTime; + + @Column(name = "submitted_at") + private LocalDateTime submittedAt = LocalDateTime.now(); + + public enum InspectionStatus { + normal, abnormal + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/MaintenancePlan.java b/src/com/campus/water/entity/MaintenancePlan.java new file mode 100644 index 0000000..fcecb4d --- /dev/null +++ b/src/com/campus/water/entity/MaintenancePlan.java @@ -0,0 +1,42 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "maintenance_plan") +public class MaintenancePlan { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "plan_id") + private Integer planId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "maintenance_type", length = 50) + private String maintenanceType; + + @Column(name = "cycle_days") + private Integer cycleDays; + + @Column(name = "last_maintenance_date") + private LocalDate lastMaintenanceDate; + + @Column(name = "next_maintenance_date") + private LocalDate nextMaintenanceDate; + + @Enumerated(EnumType.STRING) + @Column(name = "plan_status", length = 50) + private PlanStatus planStatus; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + public enum PlanStatus { + effective, expired, closed + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/MessagePush.java b/src/com/campus/water/entity/MessagePush.java new file mode 100644 index 0000000..affa0f7 --- /dev/null +++ b/src/com/campus/water/entity/MessagePush.java @@ -0,0 +1,48 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "message_push") +public class MessagePush { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "message_id") + private Integer messageId; + + @Column(name = "student_id", length = 50) + private String studentId; + + @Column(name = "admin_id", length = 50) + private String adminId; + + @Column(name = "repairman_id", length = 50) + private String repairmanId; + + @Column(name = "user_id", length = 50) + private String userId; + + @Column(name = "user_type", length = 50) + private String userType; + + @Column(name = "message_type", length = 50) + private String messageType; + + @Column(name = "title", length = 200) + private String title; + + @Column(name = "content", columnDefinition = "LONGTEXT") + private String content; + + @Column(name = "is_read") + private Boolean isRead = false; + + @Column(name = "push_time") + private LocalDateTime pushTime = LocalDateTime.now(); + + @Column(name = "related_id", length = 50) + private String relatedId; +} \ No newline at end of file diff --git a/src/com/campus/water/entity/RepairerAuth.java b/src/com/campus/water/entity/RepairerAuth.java new file mode 100644 index 0000000..06cd23c --- /dev/null +++ b/src/com/campus/water/entity/RepairerAuth.java @@ -0,0 +1,41 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "repairer_auth") +public class RepairerAuth { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "auth_id") + private Long authId; + + @Column(name = "repairman_id", length = 50) + private String repairmanId; + + @Column(name = "username", length = 50) + private String username; + + @Column(name = "password", length = 200) + private String password; + + @Enumerated(EnumType.STRING) + @Column(name = "account_status", length = 50) + private AccountStatus accountStatus = AccountStatus.active; + + @Column(name = "last_login") + private LocalDateTime lastLogin; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); + + public enum AccountStatus { + active, inactive, locked + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/Repairman.java b/src/com/campus/water/entity/Repairman.java new file mode 100644 index 0000000..70e02e4 --- /dev/null +++ b/src/com/campus/water/entity/Repairman.java @@ -0,0 +1,43 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "repairman") +public class Repairman { + @Id + @Column(name = "repairman_id", length = 50) + private String repairmanId; + + @Column(name = "repairman_name", length = 100) + private String repairmanName; + + @Column(length = 20) + private String phone; + + @Column(name = "area_id", length = 20) + private String areaId; + + @Column(name = "skills", length = 200) + private String skills; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private RepairmanStatus status = RepairmanStatus.idle; + + @Column(name = "work_count") + private Integer workCount = 0; + + @Column(name = "rating", precision = 3, scale = 2) + private Double rating = 5.0; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + public enum RepairmanStatus { + idle, busy, vacation + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/TerminalUsageStats.java b/src/com/campus/water/entity/TerminalUsageStats.java new file mode 100644 index 0000000..521d437 --- /dev/null +++ b/src/com/campus/water/entity/TerminalUsageStats.java @@ -0,0 +1,40 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "terminal_usage_stats") +public class TerminalUsageStats { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "stat_id") + private Long statId; + + @Column(name = "terminal_id", length = 20) + private String terminalId; + + @Column(name = "stat_date") + private LocalDate statDate; + + @Column(name = "usage_count") + private Integer usageCount = 0; + + @Column(name = "total_water_output", precision = 10, scale = 2) + private Double totalWaterOutput = 0.0; + + @Column(name = "avg_water_per_use", precision = 6, scale = 2) + private Double avgWaterPerUse = 0.0; + + @Column(name = "peak_hour", length = 5) + private String peakHour; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); +} \ No newline at end of file diff --git a/src/com/campus/water/entity/User.java b/src/com/campus/water/entity/User.java new file mode 100644 index 0000000..f4d4c92 --- /dev/null +++ b/src/com/campus/water/entity/User.java @@ -0,0 +1,40 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "user") +public class User { + @Id + @Column(name = "student_id", length = 50) + private String studentId; + + @Column(name = "student_name", length = 50) + private String studentName; + + @Column(name = "password", length = 200) + private String password; + + @Column(name = "phone", length = 20) + private String phone; + + @Column(name = "email", length = 100) + private String email; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private UserStatus status = UserStatus.active; + + @Column(name = "create_time") + private LocalDateTime createTime = LocalDateTime.now(); + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); + + public enum UserStatus { + active, inactive + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/WaterMakerRealtimeData.java b/src/com/campus/water/entity/WaterMakerRealtimeData.java new file mode 100644 index 0000000..96f3516 --- /dev/null +++ b/src/com/campus/water/entity/WaterMakerRealtimeData.java @@ -0,0 +1,55 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "water_maker_realtime_data") +public class WaterMakerRealtimeData { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "tds_value", precision = 8, scale = 2) + private Double tdsValue; + + @Column(name = "water_flow", precision = 8, scale = 2) + private Double waterFlow; + + @Column(name = "water_pressure", precision = 8, scale = 2) + private Double waterPressure; + + @Column(name = "filter_life") + private Integer filterLife; + + @Column(name = "leakage") + private Boolean leakage = false; + + @Column(name = "temperature", precision = 5, scale = 2) + private Double temperature; + + @Column(name = "humidity", precision = 5, scale = 2) + private Double humidity; + + @Column(name = "water_quality", length = 50) + private String waterQuality; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private DeviceStatus status = DeviceStatus.normal; + + @Column(name = "timestamp") + private LocalDateTime timestamp = LocalDateTime.now(); + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + public enum DeviceStatus { + normal, warning, error + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/WaterQualityHistory.java b/src/com/campus/water/entity/WaterQualityHistory.java new file mode 100644 index 0000000..7cab8ff --- /dev/null +++ b/src/com/campus/water/entity/WaterQualityHistory.java @@ -0,0 +1,35 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "water_quality_history") +public class WaterQualityHistory { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "terminal_id", length = 20) + private String terminalId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "tds_value", precision = 8, scale = 2) + private Double tdsValue; + + @Column(name = "water_quality", length = 50) + private String waterQuality; + + @Column(name = "temperature", precision = 5, scale = 2) + private Double temperature; + + @Column(name = "timestamp") + private LocalDateTime timestamp = LocalDateTime.now(); + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); +} \ No newline at end of file diff --git a/src/com/campus/water/entity/WaterSupplyRealtimeData.java b/src/com/campus/water/entity/WaterSupplyRealtimeData.java new file mode 100644 index 0000000..1372c82 --- /dev/null +++ b/src/com/campus/water/entity/WaterSupplyRealtimeData.java @@ -0,0 +1,46 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "water_supply_realtime_data") +public class WaterSupplyRealtimeData { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "water_flow", precision = 8, scale = 2) + private Double waterFlow; + + @Column(name = "water_pressure", precision = 8, scale = 2) + private Double waterPressure; + + @Column(name = "water_level", precision = 8, scale = 2) + private Double waterLevel; + + @Column(name = "temperature", precision = 5, scale = 2) + private Double temperature; + + @Column(name = "humidity", precision = 5, scale = 2) + private Double humidity; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private DeviceStatus status = DeviceStatus.normal; + + @Column(name = "timestamp") + private LocalDateTime timestamp = LocalDateTime.now(); + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + public enum DeviceStatus { + normal, warning, error + } +} \ No newline at end of file diff --git a/src/com/campus/water/entity/WorkOrder.java b/src/com/campus/water/entity/WorkOrder.java new file mode 100644 index 0000000..d8fcd1c --- /dev/null +++ b/src/com/campus/water/entity/WorkOrder.java @@ -0,0 +1,77 @@ +package com.campus.water.entity; + +import lombok.Data; +import javax.persistence.*; +import java.time.LocalDateTime; + +@Data +@Entity +@Table(name = "work_order") +public class WorkOrder { + @Id + @Column(name = "order_id", length = 30) + private String orderId; + + @Column(name = "alert_id") + private Long alertId; + + @Column(name = "device_id", length = 20) + private String deviceId; + + @Column(name = "area_id", length = 20) + private String areaId; + + @Enumerated(EnumType.STRING) + @Column(name = "order_type", length = 50) + private OrderType orderType; + + @Column(name = "description", columnDefinition = "TEXT") + private String description; + + @Enumerated(EnumType.STRING) + @Column(name = "priority", length = 50) + private OrderPriority priority; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 50) + private OrderStatus status = OrderStatus.pending; + + @Column(name = "assigned_repairman_id", length = 50) + private String assignedRepairmanId; + + @Column(name = "created_time") + private LocalDateTime createdTime = LocalDateTime.now(); + + @Column(name = "grabbed_time") + private LocalDateTime grabbedTime; + + @Column(name = "deadline") + private LocalDateTime deadline; + + @Column(name = "completed_time") + private LocalDateTime completedTime; + + @Column(name = "deal_note", columnDefinition = "TEXT") + private String dealNote; + + @Column(name = "img_url", length = 500) + private String imgUrl; + + @Column(name = "created_by", length = 50) + private String createdBy; + + @Column(name = "updated_time") + private LocalDateTime updatedTime = LocalDateTime.now(); + + public enum OrderType { + repair, maintenance, inspection + } + + public enum OrderPriority { + low, medium, high, urgent + } + + public enum OrderStatus { + pending, grabbed, processing, completed, closed, timeout + } +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/AdminRepository.java b/src/com/campus/water/mapper/AdminRepository.java new file mode 100644 index 0000000..d7a21f4 --- /dev/null +++ b/src/com/campus/water/mapper/AdminRepository.java @@ -0,0 +1,23 @@ +package com.campus.water.mapper; + +import datebaseclass.system.Admin; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + +@Repository +public interface AdminRepository extends JpaRepository { + 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); + + boolean existsByAdminId(String adminId); + boolean existsByPhone(String phone); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/AlertRepository.java b/src/com/campus/water/mapper/AlertRepository.java new file mode 100644 index 0000000..dcb8a96 --- /dev/null +++ b/src/com/campus/water/mapper/AlertRepository.java @@ -0,0 +1,20 @@ +package com.campus.water.mapper; + +import datebaseclass.sensor.Alert; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface AlertRepository extends JpaRepository { + List findByDeviceId(String deviceId); + List findByAlertType(String alertType); + List findByStatus(Alert.AlertStatus status); + List findByAlertLevel(Alert.AlertLevel alertLevel); + 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/com/campus/water/mapper/AreaRepository.java b/src/com/campus/water/mapper/AreaRepository.java new file mode 100644 index 0000000..06ec14c --- /dev/null +++ b/src/com/campus/water/mapper/AreaRepository.java @@ -0,0 +1,20 @@ +package com.campus.water.mapper; + +import datebaseclass.system.Area; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.util.List; + +@Repository +public interface AreaRepository extends JpaRepository { + List findByAreaType(Area.AreaType areaType); + 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/com/campus/water/mapper/DeviceRepository.java b/src/com/campus/water/mapper/DeviceRepository.java new file mode 100644 index 0000000..fea48ef --- /dev/null +++ b/src/com/campus/water/mapper/DeviceRepository.java @@ -0,0 +1,18 @@ +package com.campus.water.mapper; + +import datebaseclass.system.Device; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.List; + +@Repository +public interface DeviceRepository extends JpaRepository { + 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/com/campus/water/mapper/DeviceTerminalMappingRepository.java b/src/com/campus/water/mapper/DeviceTerminalMappingRepository.java new file mode 100644 index 0000000..686bc64 --- /dev/null +++ b/src/com/campus/water/mapper/DeviceTerminalMappingRepository.java @@ -0,0 +1,15 @@ +package com.campus.water.mapper; + +import datebaseclass.system.DeviceTerminalMapping; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + +@Repository +public interface DeviceTerminalMappingRepository extends JpaRepository { + Optional findByTerminalId(String terminalId); + List findByDeviceId(String deviceId); + List findByTerminalStatus(DeviceTerminalMapping.TerminalStatus status); + Optional findByDeviceIdAndTerminalId(String deviceId, String terminalId); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/DrinkRecommendationRepository.java b/src/com/campus/water/mapper/DrinkRecommendationRepository.java new file mode 100644 index 0000000..f5b916d --- /dev/null +++ b/src/com/campus/water/mapper/DrinkRecommendationRepository.java @@ -0,0 +1,28 @@ +package com.campus.water.mapper; + +import datebaseclass.business.DrinkRecommendation; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +@Repository +public interface DrinkRecommendationRepository extends JpaRepository { + 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/com/campus/water/mapper/DrinkRecordRepository.java b/src/com/campus/water/mapper/DrinkRecordRepository.java new file mode 100644 index 0000000..decf037 --- /dev/null +++ b/src/com/campus/water/mapper/DrinkRecordRepository.java @@ -0,0 +1,26 @@ +package com.campus.water.mapper; + +import datebaseclass.business.DrinkRecord; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDate; +import java.util.List; + +@Repository +public interface DrinkRecordRepository extends JpaRepository { + // 现有方法... + List findByStudentId(String studentId); + List findByTerminalId(String terminalId); + List findByDeviceId(String deviceId); + + // 新增基于drinkDate的查询方法 + List findByStudentIdAndDrinkDate(String studentId, LocalDate drinkDate); + List findByStudentIdAndDrinkDateBetween(String studentId, LocalDate start, LocalDate end); + + @Query("SELECT SUM(d.volume) FROM DrinkRecord d WHERE d.studentId = ?1 AND d.drinkDate = ?2") + Double getTotalVolumeByStudentIdAndDate(String studentId, LocalDate date); + + @Query("SELECT d FROM DrinkRecord d WHERE d.studentId = ?1 AND d.drinkDate BETWEEN ?2 AND ?3 ORDER BY d.drinkDate DESC, d.drinkTime DESC") + List findByStudentIdAndDrinkDateBetweenOrdered(String studentId, LocalDate start, LocalDate end); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/InspectionRecordRepository.java b/src/com/campus/water/mapper/InspectionRecordRepository.java new file mode 100644 index 0000000..5db3705 --- /dev/null +++ b/src/com/campus/water/mapper/InspectionRecordRepository.java @@ -0,0 +1,18 @@ +package com.campus.water.mapper; + +import datebaseclass.business.InspectionRecord; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface InspectionRecordRepository extends JpaRepository { + List findByOrderId(String orderId); + List findByRepairmanId(String repairmanId); + 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/com/campus/water/mapper/MaintenancePlanRepository.java b/src/com/campus/water/mapper/MaintenancePlanRepository.java new file mode 100644 index 0000000..1ce1745 --- /dev/null +++ b/src/com/campus/water/mapper/MaintenancePlanRepository.java @@ -0,0 +1,21 @@ +package com.campus.water.mapper; + +import datebaseclass.business.MaintenancePlan; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDate; +import java.util.List; + +@Repository +public interface MaintenancePlanRepository extends JpaRepository { + 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/com/campus/water/mapper/MessagePushRepository.java b/src/com/campus/water/mapper/MessagePushRepository.java new file mode 100644 index 0000000..c612488 --- /dev/null +++ b/src/com/campus/water/mapper/MessagePushRepository.java @@ -0,0 +1,30 @@ +package com.campus.water.mapper; + +import datebaseclass.business.MessagePush; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface MessagePushRepository extends JpaRepository { + List findByStudentId(String studentId); + List findByAdminId(String adminId); + List findByRepairmanId(String repairmanId); + List findByUserType(String userType); + List findByMessageType(String messageType); + List findByIsRead(Boolean isRead); + + @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); + + @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/com/campus/water/mapper/RepairerAuthRepository.java b/src/com/campus/water/mapper/RepairerAuthRepository.java new file mode 100644 index 0000000..bfa2124 --- /dev/null +++ b/src/com/campus/water/mapper/RepairerAuthRepository.java @@ -0,0 +1,21 @@ +package com.campus.water.mapper; + +import datebaseclass.system.RepairerAuth; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + +@Repository +public interface RepairerAuthRepository extends JpaRepository { + Optional findByUsername(String username); + 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); + boolean existsByRepairmanId(String repairmanId); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/RepairmanRepository.java b/src/com/campus/water/mapper/RepairmanRepository.java new file mode 100644 index 0000000..8115ded --- /dev/null +++ b/src/com/campus/water/mapper/RepairmanRepository.java @@ -0,0 +1,15 @@ +package com.campus.water.mapper; + +import datebaseclass.system.Repairman; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.List; + +@Repository +public interface RepairmanRepository extends JpaRepository { + 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/com/campus/water/mapper/TerminalUsageStatsRepository.java b/src/com/campus/water/mapper/TerminalUsageStatsRepository.java new file mode 100644 index 0000000..ac9aedf --- /dev/null +++ b/src/com/campus/water/mapper/TerminalUsageStatsRepository.java @@ -0,0 +1,28 @@ +package com.campus.water.mapper; + +import datebaseclass.business.TerminalUsageStats; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +@Repository +public interface TerminalUsageStatsRepository extends JpaRepository { + List findByTerminalId(String terminalId); + List findByStatDate(LocalDate statDate); + List findByStatDateBetween(LocalDate start, LocalDate end); + + @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/com/campus/water/mapper/UserRepository.java b/src/com/campus/water/mapper/UserRepository.java new file mode 100644 index 0000000..024768e --- /dev/null +++ b/src/com/campus/water/mapper/UserRepository.java @@ -0,0 +1,24 @@ +package com.campus.water.mapper; + +import datebaseclass.business.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.util.List; +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/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java b/src/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java new file mode 100644 index 0000000..9560460 --- /dev/null +++ b/src/com/campus/water/mapper/WaterMakerRealtimeDataRepository.java @@ -0,0 +1,31 @@ +package com.campus.water.mapper; + +import datebaseclass.sensor.WaterMakerRealtimeData; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface WaterMakerRealtimeDataRepository extends JpaRepository { + List findByDeviceId(String deviceId); + + @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.timestamp BETWEEN ?1 AND ?2 ORDER BY w.timestamp DESC") + List findByTimestampBetween(LocalDateTime start, LocalDateTime end); + + @Query("SELECT w FROM WaterMakerRealtimeData 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); + + @Query(value = "SELECT * FROM water_maker_realtime_data w WHERE w.device_id = ?1 ORDER BY w.timestamp DESC LIMIT 10", nativeQuery = true) + List findTop10ByDeviceIdOrderByTimestampDesc(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); + + @Query("SELECT w FROM WaterMakerRealtimeData w WHERE w.tdsValue > ?1") + List findByTdsValueGreaterThan(Double tdsValue); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/WaterQualityHistoryRepository.java b/src/com/campus/water/mapper/WaterQualityHistoryRepository.java new file mode 100644 index 0000000..ac7a5cf --- /dev/null +++ b/src/com/campus/water/mapper/WaterQualityHistoryRepository.java @@ -0,0 +1,29 @@ +package com.campus.water.mapper; + +import datebaseclass.sensor.WaterQualityHistory; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface WaterQualityHistoryRepository extends JpaRepository { + List findByTerminalId(String terminalId); + List findByDeviceId(String deviceId); + + @Query("SELECT w FROM WaterQualityHistory w WHERE w.terminalId = ?1 AND w.timestamp BETWEEN ?2 AND ?3 ORDER BY w.timestamp DESC") + List findByTerminalIdAndTimestampBetween(String terminalId, LocalDateTime start, LocalDateTime end); + + @Query(value = "SELECT * FROM water_quality_history w WHERE w.terminal_id = ?1 ORDER BY w.timestamp DESC LIMIT 5", nativeQuery = true) + List findTop5ByTerminalIdOrderByTimestampDesc(String terminalId); + + @Query("SELECT w FROM WaterQualityHistory w WHERE w.waterQuality = ?1") + List findByWaterQuality(String waterQuality); + + @Query("SELECT w FROM WaterQualityHistory w WHERE w.tdsValue > ?1") + List findByTdsValueGreaterThan(Double tdsValue); + + @Query("SELECT w FROM WaterQualityHistory 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); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java b/src/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java new file mode 100644 index 0000000..26fdfd4 --- /dev/null +++ b/src/com/campus/water/mapper/WaterSupplyRealtimeDataRepository.java @@ -0,0 +1,33 @@ +package com.campus.water.mapper; + +import datebaseclass.sensor.WaterSupplyRealtimeData; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface WaterSupplyRealtimeDataRepository extends JpaRepository { + 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); + + @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.waterPressure < ?1") + List findByWaterPressureLessThan(Double waterPressure); +} \ No newline at end of file diff --git a/src/com/campus/water/mapper/WorkOrderRepository.java b/src/com/campus/water/mapper/WorkOrderRepository.java new file mode 100644 index 0000000..f87c504 --- /dev/null +++ b/src/com/campus/water/mapper/WorkOrderRepository.java @@ -0,0 +1,23 @@ +package com.campus.water.mapper; + +import datebaseclass.business.WorkOrder; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; +import java.util.List; + +@Repository +public interface WorkOrderRepository extends JpaRepository { + List findByAreaId(String areaId); + List findByStatus(WorkOrder.OrderStatus status); + List findByAssignedRepairmanId(String assignedRepairmanId); + List findByAreaIdAndStatus(String areaId, WorkOrder.OrderStatus status); + List findByPriority(WorkOrder.OrderPriority priority); + 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); + List findByAlertId(Long alertId); + List findByCreatedBy(String createdBy); +} \ No newline at end of file -- 2.34.1