gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 33s

This commit is contained in:
2026-02-01 23:45:27 +01:00
parent 9a118b41e5
commit 1c63303f3c
227 changed files with 1974 additions and 788 deletions

View File

@@ -8,16 +8,17 @@ import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.SecteurService;
import io.gmss.fiscad.paylaods.request.crudweb.SecteurPaylaodWeb;
import io.gmss.fiscad.paylaods.request.synchronisation.SecteurDecoupagePayload;
import io.gmss.fiscad.paylaods.request.synchronisation.SecteurPayload;
import io.gmss.fiscad.paylaods.response.restoration.ParcelleStatsProjectionUnSecteur;
import io.gmss.fiscad.repositories.decoupage.ArrondissementRepository;
import io.gmss.fiscad.repositories.decoupage.QuartierRepository;
import io.gmss.fiscad.repositories.decoupage.SecteurRepository;
import io.gmss.fiscad.repositories.infocad.metier.ParcelleRepository;
import io.gmss.fiscad.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.repositories.user.AvoirFonctionRepository;
import io.gmss.fiscad.repositories.user.UserRepository;
import io.gmss.fiscad.persistence.repositories.decoupage.ArrondissementRepository;
import io.gmss.fiscad.persistence.repositories.decoupage.QuartierRepository;
import io.gmss.fiscad.persistence.repositories.decoupage.SecteurRepository;
import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleRepository;
import io.gmss.fiscad.persistence.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.persistence.repositories.user.AvoirFonctionRepository;
import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -27,7 +28,6 @@ import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
@AllArgsConstructor
@Service
@@ -39,73 +39,68 @@ public class SecteurServiceImpl implements SecteurService {
private final QuartierRepository quartierRepository;
private final StructureRepository structureRepository;
private final AvoirFonctionRepository avoirFonctionRepository;
private final EntityFromPayLoadService entityFromPayLoadService;
@Override
public Secteur createSecteur(SecteurPayload secteurPayload) throws BadRequestException {
if (secteurPayload.getId() != null) {
public SecteurPaylaodWeb createSecteur(SecteurPaylaodWeb secteurPaylaodWeb) throws BadRequestException {
if (secteurPaylaodWeb.getId() != null) {
throw new BadRequestException("Impossible de créer un nouveau secteur ayant un id non null.");
}
Secteur secteur = entityFromPayLoadService.getSecteurFromPayLoadWeb(secteurPaylaodWeb);
if (secteurPayload.getChefSecteurId() != null && userRepository.existsById(secteurPayload.getChefSecteurId())) {
Secteur secteur = getSecteurFromPayload(secteurPayload);
return secteurRepository.save(secteur);
} else {
throw new BadRequestException("Impossible de créer un nouveau secteur sans le chef le Chef Secteur.");
}
secteur = secteurRepository.save(secteur);
return secteurRepository.findSecteurToDtoById(secteur.getId()).orElse(null);
}
private Secteur getSecteurFromPayload(SecteurPayload secteurPayload) {
Secteur secteur = new Secteur();
Optional<User> optionalUser = userRepository.findById(secteurPayload.getChefSecteurId());
//secteur.setChefSecteur(optionalUser.orElse(null));
Optional<Structure> optionalStructure = structureRepository.findById(secteurPayload.getStructureId());
secteur.setStructure(optionalStructure.orElse(null));
List<SecteurDecoupage> secteurDecoupageList = new ArrayList<>();
for (SecteurDecoupagePayload sdp : secteurPayload.getSecteurDecoupages()) {
SecteurDecoupage sd = new SecteurDecoupage();
if (sdp.getSecteurId() != null && secteurRepository.existsById(sdp.getSecteurId())) {
sd.setSecteur(secteurRepository.findById(sdp.getSecteurId()).orElse(null));
}
if (sdp.getArrondissementId() != null && arrondissementRepository.existsById(sdp.getArrondissementId())) {
sd.setArrondissement(arrondissementRepository.findById(sdp.getArrondissementId()).orElse(null));
}
if (sdp.getQuartierId() != null && quartierRepository.existsById(sdp.getQuartierId())) {
sd.setQuartier(quartierRepository.findById(sdp.getQuartierId()).orElse(null));
}
sd.setDateDebut(sdp.getDateDebut());
sd.setDateFin(sdp.getDateFin());
sd.setId(sdp.getId());
secteurDecoupageList.add(sd);
}
secteur.setSecteurDecoupages(secteurDecoupageList);
//TODO
secteur.setId(secteurPayload.getId());
secteur.setCode(secteurPayload.getCode());
secteur.setNom(secteurPayload.getNom());
return secteur;
}
// private Secteur getSecteurFromPayload(SecteurPayload secteurPayload) {
// Secteur secteur = new Secteur();
//// Optional<User> optionalUser = userRepository.findById(secteurPayload.getChefSecteurId());
// //secteur.setChefSecteur(optionalUser.orElse(null));
//// Optional<Structure> optionalStructure = structureRepository.findById(secteurPayload.getStructureId());
//// secteur.setStructure(optionalStructure.orElse(null));
//// List<SecteurDecoupage> secteurDecoupageList = new ArrayList<>();
//
//// for (SecteurDecoupagePayload sdp : secteurPayload.getSecteurDecoupages()) {
//// SecteurDecoupage sd = new SecteurDecoupage();
//// if (sdp.getSecteurId() != null && secteurRepository.existsById(sdp.getSecteurId())) {
//// sd.setSecteur(secteurRepository.findById(sdp.getSecteurId()).orElse(null));
//// }
////
//// if (sdp.getArrondissementId() != null && arrondissementRepository.existsById(sdp.getArrondissementId())) {
//// sd.setArrondissement(arrondissementRepository.findById(sdp.getArrondissementId()).orElse(null));
//// }
////
//// if (sdp.getQuartierId() != null && quartierRepository.existsById(sdp.getQuartierId())) {
//// sd.setQuartier(quartierRepository.findById(sdp.getQuartierId()).orElse(null));
//// }
//// sd.setDateDebut(sdp.getDateDebut());
//// sd.setDateFin(sdp.getDateFin());
//// sd.setId(sdp.getId());
//// secteurDecoupageList.add(sd);
//// }
// //secteur.setSecteurDecoupages(secteurDecoupageList);
// //TODO
// secteur.setId(secteurPayload.getId());
// secteur.setCode(secteurPayload.getCode());
// secteur.setNom(secteurPayload.getNom());
// return secteur;
// }
@Override
public Secteur updateSecteur(Long id, SecteurPayload secteurPayload) throws NotFoundException {
if (secteurPayload.getId() == null) {
public SecteurPaylaodWeb updateSecteur(Long id, SecteurPaylaodWeb secteurPaylaodWeb) throws NotFoundException {
if (secteurPaylaodWeb.getId() == null) {
throw new BadRequestException("Impossible de mettre à jour un nouveau secteur ayant un id null.");
}
if (!secteurRepository.existsById(secteurPayload.getId())) {
if (!secteurRepository.existsById(secteurPaylaodWeb.getId())) {
throw new NotFoundException("Impossible de trouver le secteur spécifié.");
}
if (secteurPayload.getChefSecteurId() != null && userRepository.existsById(secteurPayload.getChefSecteurId())) {
Secteur secteur = getSecteurFromPayload(secteurPayload);
return secteurRepository.save(secteur);
} else {
throw new BadRequestException("Impossible de créer un nouveau secteur sans le chef le Chef Secteur.");
}
Secteur secteur = entityFromPayLoadService.getSecteurFromPayLoadWeb(secteurPaylaodWeb);
secteur = secteurRepository.save(secteur);
return secteurRepository.findSecteurToDtoById(secteur.getId()).orElse(null);
}
@Override
@@ -119,59 +114,58 @@ public class SecteurServiceImpl implements SecteurService {
}
@Override
public Page<Secteur> getSecteurList(Pageable pageable) {
return secteurRepository.findAll(pageable);
public Page<SecteurPaylaodWeb> getSecteurList(Pageable pageable) {
return secteurRepository.findAllSecteurToDtoPageable(pageable);
}
@Override
public List<Secteur> getSecteurList() {
return secteurRepository.findAll();
public List<SecteurPaylaodWeb> getSecteurList() {
return secteurRepository.findAllSecteurToDto();
}
@Override
public List<Secteur> getSecteurListUneStruture(Long structureId) {
return secteurRepository.findAllByStructure_Id(structureId);
public Page<SecteurPaylaodWeb> getSecteurListBySectionId(Long sectionId, Pageable pageable) {
return secteurRepository.findAllSecteurBySectionIdToDtoPageable(sectionId,pageable);
}
@Override
public List<SecteurPaylaodWeb> getSecteurListBySectionId(Long sectionId) {
return secteurRepository.findAllSecteurBySectionIdToDto(sectionId);
}
@Override
public List<SecteurPaylaodWeb> getSecteurListByStructureId(Long structureId) {
return secteurRepository.findAllSecteurByStructureIdToDto(structureId);
}
@Override
public Page<SecteurPaylaodWeb> getSecteurListByStructureId(Long structureId, Pageable pageable) {
return secteurRepository.findAllSecteurByStructureIdToDtoPageable(structureId,pageable);
}
@Override
public Optional<Secteur> getSecteurById(Long id) {
return secteurRepository.findById(id);
public Optional<SecteurPaylaodWeb> getSecteurById(Long id) {
return secteurRepository.findSecteurToDtoById(id);
}
@Override
public List<ParcelleStatsProjectionUnSecteur> getStatParcelleDecoupageUnSecteur(Long secteurId) {
return parcelleRepository.findStatsBySecteurs(List.of(secteurId));
}
@Override
public List<ParcelleStatsProjectionUnSecteur> getStatParcelleDecoupageByUserId(Long userId) {
public List<Secteur> getListSecteurUserId(Long userId) {
List<AvoirFonction> avoirFonctions= avoirFonctionRepository.findAvoirFonctionByUser_Id(userId);
AtomicReference<List<ParcelleStatsProjectionUnSecteur>> parcelleStatsProjectionUnSecteurs = new AtomicReference<>(new ArrayList<>());
List<Secteur> secteurs = new ArrayList<>();
avoirFonctions.stream()
.filter(af -> af.getDateFin() == null || af.getDateFin().isAfter(LocalDate.now()))
.forEach(avoirFonction -> {
if(avoirFonction.getFonction().getSecteur()!=null){
parcelleStatsProjectionUnSecteurs.set(parcelleRepository.findStatsBySecteurs(List.of(avoirFonction.getFonction().getSecteur().getId())));
secteurs.addAll(List.of(avoirFonction.getFonction().getSecteur()));
}else
if (avoirFonction.getFonction().getSection()!=null){
List<Secteur> secteurs= secteurRepository.findDistinctBySection_Id(avoirFonction.getFonction().getSection().getId());
List<Long> secteurIds = secteurs.stream()
.map(Secteur::getId)
.toList();
parcelleStatsProjectionUnSecteurs.set(parcelleRepository.findStatsBySecteurs(secteurIds));
}else if(avoirFonction.getFonction().getStructure()!=null){
List<Secteur> secteurs= secteurRepository.findDistinctBySection_Structure_Id(avoirFonction.getFonction().getStructure().getId());
List<Long> secteurIds = secteurs.stream()
.map(Secteur::getId)
.toList();
parcelleStatsProjectionUnSecteurs.set(parcelleRepository.findStatsBySecteurs(secteurIds));
}
if (avoirFonction.getFonction().getSection()!=null){
secteurs.addAll(secteurRepository.findDistinctBySection_Id(avoirFonction.getFonction().getSection().getId()));
}else if(avoirFonction.getFonction().getStructure()!=null){
secteurs.addAll(secteurRepository.findDistinctBySection_Structure_Id(avoirFonction.getFonction().getStructure().getId()));
}
});
return parcelleStatsProjectionUnSecteurs.get();
return secteurs;
}
}