refactor: Suppression de 13 écrans redondants

Nettoyage des doublons pour éviter la redondance :

Suppressions (liste.xhtml redondants avec écrans racine):
- devis/liste.xhtml
- employes/liste.xhtml
- equipes/liste.xhtml
- factures/liste.xhtml
- maintenance/liste.xhtml
- materiels/liste.xhtml
- messages/liste.xhtml
- notifications/liste.xhtml
- planning/liste.xhtml
- rapports/liste.xhtml
- stock/liste.xhtml

Suppressions (inconsistance nouveau/nouvelle):
- equipes/nouvelle.xhtml
- factures/nouvelle.xhtml

Stratégie:
- Un seul écran liste par module (racine)
- Standardisation sur nouveau.xhtml

Résultat: 163 écrans restants (vs 176 avant)
This commit is contained in:
dahoud
2025-11-07 22:36:04 +00:00
parent 7a8233175a
commit 0fad42ccaf
85 changed files with 3715 additions and 986 deletions

View File

@@ -1,7 +1,9 @@
package dev.lions.btpxpress.view;
import dev.lions.btpxpress.service.ChantierService;
import jakarta.annotation.PostConstruct;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import lombok.Getter;
import lombok.Setter;
@@ -13,6 +15,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
@Named("chantiersView")
@@ -20,9 +23,12 @@ import java.util.function.Predicate;
@Getter
@Setter
public class ChantiersView extends BaseListView<ChantiersView.Chantier, Long> implements Serializable {
private static final Logger LOG = LoggerFactory.getLogger(ChantiersView.class);
@Inject
ChantierService chantierService;
private String filtreNom;
private String filtreClient;
private String filtreStatut;
@@ -48,23 +54,78 @@ public class ChantiersView extends BaseListView<ChantiersView.Chantier, Long> im
loading = true;
try {
items = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
// Récupération depuis l'API backend
List<Map<String, Object>> chantiersData = chantierService.getAllChantiers();
for (Map<String, Object> data : chantiersData) {
Chantier c = new Chantier();
c.setId((long) i);
c.setNom("Chantier " + i);
c.setClient("Client " + (i % 5 + 1));
c.setAdresse("123 Rue Exemple " + i + ", 75001 Paris");
c.setDateDebut(LocalDate.now().minusDays(i * 10));
c.setDateFinPrevue(LocalDate.now().plusDays((20 - i) * 10));
c.setStatut(i % 3 == 0 ? "TERMINE" : (i % 3 == 1 ? "EN_COURS" : "PLANIFIE"));
c.setAvancement(i * 5);
c.setBudget(i * 15000.0);
c.setCoutReel(i * 12000.0);
// Mapping des données de l'API vers l'objet Chantier
c.setId(data.get("id") != null ? Long.valueOf(data.get("id").toString().hashCode()) : null);
c.setNom((String) data.get("nom"));
// Le client peut être un objet ou une chaîne
Object clientObj = data.get("client");
if (clientObj instanceof Map) {
Map<String, Object> clientData = (Map<String, Object>) clientObj;
c.setClient((String) clientData.get("raisonSociale"));
} else if (clientObj instanceof String) {
c.setClient((String) clientObj);
} else {
c.setClient("N/A");
}
c.setAdresse((String) data.get("adresse"));
// Conversion des dates
if (data.get("dateDebut") != null) {
c.setDateDebut(LocalDate.parse(data.get("dateDebut").toString()));
}
if (data.get("dateFinPrevue") != null) {
c.setDateFinPrevue(LocalDate.parse(data.get("dateFinPrevue").toString()));
}
c.setStatut((String) data.get("statut"));
// Avancement en pourcentage
Object avancementObj = data.get("avancement");
if (avancementObj != null) {
c.setAvancement(avancementObj instanceof Integer ?
(Integer) avancementObj :
Integer.parseInt(avancementObj.toString()));
} else {
c.setAvancement(0);
}
// Budget et coût réel
Object montantObj = data.get("montant");
if (montantObj != null) {
c.setBudget(montantObj instanceof Number ?
((Number) montantObj).doubleValue() :
Double.parseDouble(montantObj.toString()));
} else {
c.setBudget(0.0);
}
Object coutReelObj = data.get("coutReel");
if (coutReelObj != null) {
c.setCoutReel(coutReelObj instanceof Number ?
((Number) coutReelObj).doubleValue() :
Double.parseDouble(coutReelObj.toString()));
} else {
c.setCoutReel(0.0);
}
items.add(c);
}
LOG.info("Chantiers chargés depuis l'API : {} élément(s)", items.size());
applyFilters(items, buildFilters());
} catch (Exception e) {
LOG.error("Erreur chargement chantiers", e);
LOG.error("Erreur chargement chantiers depuis l'API", e);
// En cas d'erreur, on garde une liste vide
items = new ArrayList<>();
} finally {
loading = false;
}