Système de gestion de clinique vétérinaire avec Spring Boot

Stack technique

Le système repose sur une architecture B/S développée avec Spring Boot comme framwork principal. Les technologies complémentaires incluent Java, jQuery, Ajax pour les interactions frontales, et MySQL comme base de données relationnelle. Cette combinaison permet une conception modulaire à faible couplage.

Fonctionnalités du système

Interface administrateur

L'administrateur authentifié accède aux modules :

  • Gestion du personnel : CRUD des employés (ID, nom, poste, contact)
  • Suivi des présences : Enregistrement des pointages avec horodatage
  • Dossier animal : Fiche complète (espèce, vaccination, statut sanitaire)
  • Archivage : Stockage des bilans de santé et observations cliniques

Interface employé

Les utilisateurs enregistrés peuvent :

  • Saisir leurs pointages quotidiens
  • Consulter les dossiers animaux
  • Renseigner les observations médicales
  • Accéder aux archives sanitaires

Implémentation technique

Module d'authentification

@RestController
@RequestMapping("/utilisateurs")
public class AuthController {

    @PostMapping("/connexion")
    public Reponse login(@RequestParam String identifiant, 
                         @RequestParam String motdepasse) {
        
        Utilisateur utilisateur = userService.rechercherParIdentifiant(identifiant);
        if (utilisateur == null || !utilisateur.getMotDePasse().equals(motdepasse)) {
            return Reponse.erreur("Identifiants invalides");
        }
        
        String jeton = tokenService.genererJeton(utilisateur.getId(), "veterinaire");
        return Reponse.succes().ajouter("jeton", jeton);
    }

    @PostMapping("/inscription")
    public Reponse inscription(@RequestBody Utilisateur nouvelUtilisateur) {
        if (userService.existe(nouvelUtilisateur.getIdentifiant())) {
            return Reponse.erreur("Utilisateur déjà enregistré");
        }
        userService.enregistrer(nouvelUtilisateur);
        return Reponse.succes();
    }
}

Gestion des fichiers

@RestController
@RequestMapping("/fichiers")
public class FichierController {

    @PostMapping("/transfert")
    public Reponse uploadFichier(@RequestParam MultipartFile fichier) {
        String extension = FilenameUtils.getExtension(fichier.getOriginalFilename());
        String nomUnique = System.currentTimeMillis() + "." + extension;
        
        Path destination = Paths.get("static/upload/", nomUnique);
        Files.copy(fichier.getInputStream(), destination, StandardCopyOption.REPLACE_EXISTING);
        
        return Reponse.succes().ajouter("fichier", nomUnique);
    }

    @GetMapping("/telechargement")
    public ResponseEntity<byte[]> download(@RequestParam String nomFichier) {
        byte[] donnees = Files.readAllBytes(Paths.get("static/upload/" + nomFichier));
        HttpHeaders entetes = new HttpHeaders();
        entetes.setContentDispositionFormData("attachment", nomFichier);
        return new ResponseEntity<>(donnees, entetes, HttpStatus.OK);
    }
}

Utilitaire de réponse

public class Reponse extends HashMap<String, Object> {

    public Reponse() {
        ajouter("statut", 200);
    }

    public static Reponse succes() {
        return new Reponse();
    }

    public static Reponse erreur(String message) {
        Reponse res = new Reponse();
        res.ajouter("statut", 500);
        res.ajouter("erreur", message);
        return res;
    }

    public Reponse ajouter(String cle, Object valeur) {
        super.put(cle, valeur);
        return this;
    }
}

Étiquettes: Spring Boot Java MySQL B/S Architecture jQuery

Publié le 21 juin à 16h12