package com.goi.erp.entity; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EntityListeners; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.UUID; @Entity @Table( name = "vehicle_dispatch", uniqueConstraints = { @UniqueConstraint( name = "uk_vehicle_dispatch_shift", columnNames = {"ved_veh_id", "ved_dispatch_date", "ved_shift"} ) } ) @Data @NoArgsConstructor @AllArgsConstructor @Builder @EntityListeners(AuditingEntityListener.class) public class VehicleDispatch { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ved_id") private Long vedId; @Column(name = "ved_uuid", unique = true) private UUID vedUuid; @Column(name = "ved_status", length = 10) private String vedStatus; // O: Open | C: Closed | P: Paused @Column(name = "ved_veh_id") private Long vedVehId; @Column(name = "ved_driver_id") private Long vedDriverId; @Column(name = "ved_sub_driver_id") private Long vedSubDriverId; @Column(name = "ved_dispatch_date", nullable = false) private LocalDate vedDispatchDate; @Column(name = "ved_shift") private Integer vedShift; @Column(name = "ved_start_at") private LocalDateTime vedStartAt; @Column(name = "ved_start_reason") private String vedStartReason; @Column(name = "ved_paused_at") private LocalDateTime vedPausedAt; @Column(name = "ved_end_at") private LocalDateTime vedEndAt; @Column(name = "ved_end_reason") private String vedEndReason; @Column(name = "ved_odometer_start", precision = 12, scale = 2) private BigDecimal vedOdometerStart; @Column(name = "ved_odometer_end", precision = 12, scale = 2) private BigDecimal vedOdometerEnd; @Column(name = "ved_odometer_increment", precision = 12, scale = 2) private BigDecimal vedOdometerIncrement; @Column(name = "ved_odometer_source", length = 20) private String vedOdometerSource; // obd / gpsDistance / gpsOdometer @Column(name = "ved_event_count") private Integer vedEventCount; @Column(name = "ved_source", length = 20) private String vedSource; // AUTO / MANUAL @Column(name = "ved_created_at") private LocalDateTime vedCreatedAt; @Column(name = "ved_created_by", length = 50) private String vedCreatedBy; @Column(name = "ved_updated_at") private LocalDateTime vedUpdatedAt; @Column(name = "ved_updated_by", length = 50) private String vedUpdatedBy; }