From 305e09101a9ee2e2e350f782c105f8a1fc13560b Mon Sep 17 00:00:00 2001 From: chiguyong Date: Tue, 24 Mar 2026 00:07:49 +0800 Subject: [PATCH] feat: add MaintenanceTask entity --- .../ether/pms/mdm/entity/MaintenanceTask.java | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenanceTask.java diff --git a/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenanceTask.java b/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenanceTask.java new file mode 100644 index 0000000..737933b --- /dev/null +++ b/module-mdm/src/main/java/com/ether/pms/mdm/entity/MaintenanceTask.java @@ -0,0 +1,95 @@ +package com.ether.pms.mdm.entity; + +import jakarta.persistence.*; +import lombok.Data; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.UUID; + +@Entity +@Table(name = "ops_maintenance_task") +@Data +public class MaintenanceTask { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @Column(name = "project_id", nullable = false) + private UUID projectId; + + @Column(name = "task_code", nullable = false, unique = true) + private String taskCode; + + @Column(name = "plan_id") + private UUID planId; + + @Column(name = "equipment_id") + private UUID equipmentId; + + @Column(name = "task_type") + @Enumerated(EnumType.STRING) + private TaskType taskType = TaskType.PREVENTIVE; + + public enum TaskType { + PREVENTIVE, // 预防性维护 + CORRECTIVE // 纠正性维护 + } + + @Column(name = "trigger_type") + @Enumerated(EnumType.STRING) + private MaintenancePlan.TriggerType triggerType; + + @Column(name = "maintenance_items", columnDefinition = "TEXT") + private String maintenanceItems; + + @Column(nullable = false) + @Enumerated(EnumType.STRING) + private Status status = Status.PENDING; + + public enum Status { + PENDING, // 待接受 + ACCEPTED, // 已接受 + IN_PROGRESS, // 执行中 + COMPLETED, // 已完成 + CANCELLED // 已取消 + } + + @Column(name = "assigned_to") + private UUID assignedTo; + + @Column(name = "scheduled_date") + private LocalDateTime scheduledDate; + + @Column(name = "actual_start_date") + private LocalDateTime actualStartDate; + + @Column(name = "actual_end_date") + private LocalDateTime actualEndDate; + + @Column(name = "labor_hours", precision = 10, scale = 2) + private BigDecimal laborHours; + + @Column(name = "materials_cost", precision = 12, scale = 2) + private BigDecimal materialsCost; + + @Column(columnDefinition = "TEXT") + private String remarks; + + @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