5.6 KiB
5.6 KiB
📅 CONCEPT: RESERVATION_MATERIEL
📌 Vue d'ensemble
Le concept RESERVATION_MATERIEL gère les réservations et affectations de matériel aux chantiers. Il permet de planifier l'utilisation du matériel, éviter les conflits, et optimiser l'allocation des ressources.
Importance: ⭐⭐⭐ (Concept important)
🗂️ Fichiers concernés
Entités JPA (domain/core/entity/)
| Fichier | Description | Lignes |
|---|---|---|
ReservationMateriel.java |
Entité principale de réservation | ~180 |
StatutReservationMateriel.java |
Enum statuts (PLANIFIEE, VALIDEE, EN_COURS, TERMINEE, REFUSEE, ANNULEE) | ~20 |
PrioriteReservation.java |
Enum priorités de réservation | ~25 |
PlanningMateriel.java |
Planning d'utilisation du matériel | ~200 |
StatutPlanning.java |
Enum statuts de planning | ~30 |
TypePlanning.java |
Enum types de planning | ~25 |
Services (application/service/)
| Fichier | Description |
|---|---|
ReservationMaterielService.java |
Service métier pour les réservations |
PlanningMaterielService.java |
Service de gestion du planning matériel |
📊 Modèle de données
Entité ReservationMateriel
@Entity
@Table(name = "reservations_materiel")
public class ReservationMateriel extends PanacheEntityBase {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
@ManyToOne
@JoinColumn(name = "materiel_id", nullable = false)
private Materiel materiel;
@ManyToOne
@JoinColumn(name = "chantier_id", nullable = false)
private Chantier chantier;
@Column(name = "date_debut", nullable = false)
private LocalDate dateDebut;
@Column(name = "date_fin", nullable = false)
private LocalDate dateFin;
@Enumerated(EnumType.STRING)
@Column(name = "statut", nullable = false)
private StatutReservationMateriel statut = StatutReservationMateriel.PLANIFIEE;
@Column(name = "quantite", precision = 10, scale = 3)
private BigDecimal quantite;
@Enumerated(EnumType.STRING)
@Column(name = "priorite")
private PrioriteReservation priorite;
}
Enum StatutReservationMateriel
public enum StatutReservationMateriel {
PLANIFIEE, // Réservation planifiée
VALIDEE, // Réservation validée
EN_COURS, // Réservation en cours d'utilisation
TERMINEE, // Réservation terminée
REFUSEE, // Réservation refusée
ANNULEE // Réservation annulée
}
Champs principaux
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id |
UUID | Oui | Identifiant unique |
materiel |
Materiel | Oui | Matériel réservé |
chantier |
Chantier | Oui | Chantier destinataire |
dateDebut |
LocalDate | Oui | Date de début de réservation |
dateFin |
LocalDate | Oui | Date de fin de réservation |
statut |
StatutReservationMateriel | Oui | Statut actuel |
quantite |
BigDecimal | Non | Quantité réservée |
priorite |
PrioriteReservation | Non | Priorité de la réservation |
commentaire |
String | Non | Commentaire |
🔌 API REST
Base URL: /api/v1/reservations-materiel
Endpoints disponibles
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/reservations-materiel |
Liste toutes les réservations |
| GET | /api/v1/reservations-materiel/{id} |
Détails d'une réservation |
| POST | /api/v1/reservations-materiel |
Créer une réservation |
| PUT | /api/v1/reservations-materiel/{id} |
Modifier une réservation |
| DELETE | /api/v1/reservations-materiel/{id} |
Annuler une réservation |
| GET | /api/v1/reservations-materiel/materiel/{id} |
Réservations d'un matériel |
| GET | /api/v1/reservations-materiel/chantier/{id} |
Réservations d'un chantier |
| GET | /api/v1/reservations-materiel/conflits |
Détecter les conflits |
💻 Exemples d'utilisation
1. Créer une réservation
curl -X POST http://localhost:8080/api/v1/reservations-materiel \
-H "Content-Type: application/json" \
-d '{
"materielId": "materiel-uuid",
"chantierId": "chantier-uuid",
"dateDebut": "2025-10-01",
"dateFin": "2025-10-15",
"quantite": 2,
"priorite": "NORMALE"
}'
2. Vérifier les conflits
curl -X GET "http://localhost:8080/api/v1/reservations-materiel/conflits?materielId=uuid&dateDebut=2025-10-01&dateFin=2025-10-15"
🔧 Services métier
ReservationMaterielService
Méthodes principales:
create(ReservationDTO dto)- Créer une réservationverifierDisponibilite(UUID materielId, LocalDate debut, LocalDate fin)- Vérifier disponibilitédetecterConflits(UUID materielId, LocalDate debut, LocalDate fin)- Détecter conflitsvalider(UUID id)- Valider une réservationannuler(UUID id)- Annuler une réservation
📈 Relations avec autres concepts
- MATERIEL ⬅️ Une réservation concerne un matériel
- CHANTIER ⬅️ Une réservation est liée à un chantier
- PLANNING ➡️ Les réservations alimentent le planning
- LIVRAISON ➡️ Une réservation peut générer une livraison
✅ Validations
- ✅ Date de fin doit être après date de début
- ✅ Le matériel doit être disponible
- ✅ Pas de conflit avec d'autres réservations
- ✅ Quantité disponible suffisante
📚 Références
Dernière mise à jour: 2025-09-30
Version: 1.0
Auteur: Documentation BTPXpress