From b650990f9e8d3e99c3171e1eb24b1e6fffbadfa3 Mon Sep 17 00:00:00 2001 From: chiguyong Date: Tue, 24 Mar 2026 00:05:33 +0800 Subject: [PATCH] feat: add MaintenancePlan entity for preventive maintenance --- .../ether/pms/mdm/entity/MaintenancePlan.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenancePlan.java diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenancePlan.java b/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenancePlan.java new file mode 100644 index 0000000..cb0a1d3 --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenancePlan.java @@ -0,0 +1,85 @@ +package com.ether.pms.mdm.entity; + +import jakarta.persistence.*; +import lombok.Data; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "ops_maintenance_plan") +@Data +public class MaintenancePlan { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @Column(name = "project_id", nullable = false) + private UUID projectId; + + @Column(name = "plan_code", nullable = false, unique = true) + private String planCode; + + @Column(name = "plan_name", nullable = false) + private String planName; + + @Column(name = "equipment_type") + private String equipmentType; + + @Column(name = "trigger_type", nullable = false) + @Enumerated(EnumType.STRING) + private TriggerType triggerType; + + public enum TriggerType { + TIME_BASED, // 时间触发 + HOURS_BASED, // 运行小时触发 + CYCLES_BASED, // 次数触发 + CONDITION_BASED // 条件触发 + } + + @Column(name = "trigger_value") + private Integer triggerValue; + + @Column(name = "trigger_unit") + private String triggerUnit; + + @Column(name = "maintenance_items", columnDefinition = "TEXT") + private String maintenanceItems; + + @Column(name = "estimated_duration") + private Integer estimatedDuration; + + @Column(name = "assigned_to") + private UUID assignedTo; + + @Column(name = "sla_response_hours") + private Integer slaResponseHours; + + @Column(name = "sla_complete_hours") + private Integer slaCompleteHours; + + @Column(nullable = false) + @Enumerated(EnumType.STRING) + private Status status = Status.ACTIVE; + + public enum Status { + ACTIVE, INACTIVE + } + + @Column(name = "created_at") + private LocalDateTime createdAt; + + @Column(name = "updated_at") + private LocalDateTime updatedAt; + + @PrePersist + public void prePersist() { + createdAt = LocalDateTime.now(); + updatedAt = LocalDateTime.now(); + } + + @PreUpdate + public void preUpdate() { + updatedAt = LocalDateTime.now(); + } +} \ No newline at end of file