features/crud_entites #105

Merged
judaur2005 merged 3 commits from features/crud_entites into develop 2026-02-16 20:55:25 +00:00
13 changed files with 275 additions and 31 deletions
Showing only changes of commit 0617d2f383 - Show all commits

View File

@@ -1,6 +1,7 @@
package io.gmss.fiscad.controllers.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.interfaces.infocad.metier.UploadService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.JobModels;
import io.gmss.fiscad.proprietes.ZipStorageProperties;
@@ -8,6 +9,9 @@ import io.gmss.fiscad.persistence.repositories.infocad.metier.UploadRepository;
import io.gmss.fiscad.service.FileStorageService;
import io.gmss.fiscad.service.StringManager;
import io.gmss.fiscad.service.ZipAsyncService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
@@ -45,12 +49,13 @@ import java.util.UUID;
@SecurityRequirement(name = "bearer")
@Tag(name = "Upload")
@CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
//@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public class UploadController {
boolean headIsValid = false;
private final ZipAsyncService service;
private final ZipStorageProperties props;
private final UploadService uploadService;
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);
@Autowired
@@ -94,7 +99,7 @@ public class UploadController {
try {
if (uploadRepository.findById(id).isPresent()) {
return new ResponseEntity<>(new ApiResponse(true, uploadRepository.getOne(id), "File with id {" + id + "} is found."), HttpStatus.OK);
return new ResponseEntity<>(new ApiResponse(true, uploadRepository.findById(id), "File with id {" + id + "} is found."), HttpStatus.OK);
} else {
return new ResponseEntity<>(new ApiResponse(true, null, "The upload with id {" + id + "} you request for is not found."), HttpStatus.OK);
}
@@ -139,30 +144,39 @@ public class UploadController {
.body(resource);
}
@PostMapping("/save")
public ResponseEntity<?> save(@RequestPart(required = true) MultipartFile file, @RequestParam String reference, @RequestParam String description /*, @RequestParam Long idTypeUpload*/) {
@PostMapping(
value = "/save",
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
)
public ResponseEntity<?> saveFilePieceId(
@Parameter(
description = "Fichier à uploader",
required = true,
content = @Content(
mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE,
schema = @Schema(type = "string", format = "binary")
)
)
@RequestPart("file") MultipartFile file,
@Parameter(description = "ID de la pièce", required = true)
@RequestParam("pieceId") Long pieceId
) {
try {
Upload upload = new Upload();
String fileName = fileStorageService.storeFile(file);
upload.setFileName(fileName);
upload.setMimeType(file.getContentType());
upload.setSize(file.getSize());
upload.setOriginalFileName(file.getOriginalFilename());
return new ResponseEntity<>(new ApiResponse(true, uploadRepository.save(upload), "File has been created successfully."), HttpStatus.OK);
} catch (HttpClientErrorException.MethodNotAllowed e) {
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NullPointerException e) {
e.printStackTrace();
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
return ResponseEntity.ok(
new ApiResponse(true,
uploadService.createUpload(file, pieceId),
"File has been created successfully.")
);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
logger.error(e.getMessage(), e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ApiResponse(false, null, e.getMessage()));
}
}
@DeleteMapping("/delete/id/{id}")
public ResponseEntity<?> delete(@PathVariable Long id) {
try {

View File

@@ -96,7 +96,7 @@ public class Upload extends BaseEntity implements Serializable {
String url = this.serverContext() + fileName;
System.out.println("url = " + url);
// return url != null ? url.toLowerCase().startsWith("https") ? url : url.toLowerCase().replaceFirst("http", "https") : null;
return url != null ? url.toLowerCase().startsWith("https") ? url : url.toLowerCase().replaceFirst("http", "https") : null;
return url ;//!= null ? url.toLowerCase().startsWith("https") ? url : url.toLowerCase().replaceFirst("http", "https") : null;
}
@@ -104,10 +104,11 @@ public class Upload extends BaseEntity implements Serializable {
String url= ServletUriComponentsBuilder.fromCurrentContextPath()
.path("/api/upload/downloadFile/")
.toUriString();
if(!url.contains("8282/api")){
url.replace("/api",":8282/api");
}
//System.out.println(url);
// if(!url.contains("8282/api")){
// url.replace("/api",":8282/api");
// }
//System.out.println(url);
return url;
}

View File

@@ -10,6 +10,7 @@ import io.gmss.fiscad.entities.infocad.metier.Tpe;
import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.entities.metadata.MobileDataPersonne;
import io.gmss.fiscad.enums.Categorie;
import io.gmss.fiscad.enums.EtatIdentificationPersonne;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -79,7 +80,12 @@ public class Personne extends BaseEntity implements Serializable {
private int mustHaveRepresentant;
private String filePath;
@Enumerated(EnumType.STRING)
private EtatIdentificationPersonne etatIdentificationPersonne;
private String observation;
private String numeroRccm ;
private LocalDate dateRccm ;
private String email ;
@ColumnDefault("false")
private boolean synchronise;

View File

@@ -0,0 +1,8 @@
package io.gmss.fiscad.enums;
public enum EtatIdentificationPersonne {
IFU,
NPI,
IFU_NPI,
NEANT;
}

View File

@@ -210,7 +210,7 @@ public class PersonneServiceImpl implements PersonneService {
private List<PersonnePayLoadWeb> recherchePersonneLocal(RecherchePersonneResquestBody recherchePersonneResquestBody) {
List<PersonnePayLoadWeb> personnePayLoadWebs=
personneRepository.findByFilters(
personneRepository.findByFiltersInBaseIfuNpiCorrecte(
recherchePersonneResquestBody.getIfu()==null?null:recherchePersonneResquestBody.getIfu().trim().toLowerCase(),
recherchePersonneResquestBody.getNpi()==null?null:recherchePersonneResquestBody.getNpi().trim().toLowerCase(),
recherchePersonneResquestBody.getNom()==null?null:recherchePersonneResquestBody.getNom().trim().toLowerCase(),

View File

@@ -0,0 +1,98 @@
package io.gmss.fiscad.implementations.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Piece;
import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.entities.rfu.metier.Batiment;
import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.infocad.metier.UploadService;
import io.gmss.fiscad.paylaods.request.crudweb.UploadPayLoadWeb;
import io.gmss.fiscad.persistence.repositories.infocad.metier.PieceRepository;
import io.gmss.fiscad.persistence.repositories.infocad.metier.UploadRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import io.gmss.fiscad.service.FileStorageService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Optional;
@AllArgsConstructor
@Service
public class UploadServiceImpl implements UploadService {
private final EntityFromPayLoadService entityFromPayLoadService;
private final UploadRepository uploadRepository;
private final PieceRepository pieceRepository;
private final FileStorageService fileStorageService;
@Override
public UploadPayLoadWeb createUpload(UploadPayLoadWeb uploadPayLoadWeb) throws BadRequestException {
if (uploadPayLoadWeb.getId() != null) {
throw new BadRequestException("Impossible de créer un nouveau upload ayant un id non null.");
}
Upload upload= entityFromPayLoadService.getUploadFromPayLoadWeb(uploadPayLoadWeb);
upload= uploadRepository.save(upload);
return uploadRepository.findByIdToDto(upload.getId()).orElse(null);
}
@Override
public Upload createUpload(MultipartFile file, @RequestParam Long pieceId) throws BadRequestException {
Upload upload = new Upload();
if(pieceId!=null && !pieceRepository.existsById(pieceId)) {
throw new NotFoundException("La piece n'existe pas");
}
Optional<Piece> optionalPiece = pieceRepository.findById(pieceId);
String fileName = fileStorageService.storeFile(file);
upload.setPiece(optionalPiece.orElse(null));
upload.setFileName(fileName);
upload.setRename(fileName);
upload.setMimeType(file.getContentType());
upload.setSize(file.getSize());
upload.setOriginalFileName(file.getOriginalFilename());
upload = uploadRepository.save(upload) ;
return upload;
}
@Override
public UploadPayLoadWeb updateUpload(Long id, UploadPayLoadWeb uploadPayLoadWeb) throws NotFoundException {
return null;
}
@Override
public void deleteUpload(Long id) throws NotFoundException {
Optional<Upload> optionalUpload = uploadRepository.findById(id);
if (optionalUpload.isPresent()) {
uploadRepository.deleteById(optionalUpload.get().getId());
} else {
throw new NotFoundException("Impossible de trouver le fichier spécifié dans notre base de données.");
}
}
@Override
public Page<UploadPayLoadWeb> getUploadListToDtoPageable(Pageable pageable) {
return null;
}
@Override
public List<UploadPayLoadWeb> getUploadListToDto() {
return null;
}
@Override
public Optional<UploadPayLoadWeb> getUploadByToDto(Long id) {
return Optional.empty();
}
@Override
public List<UploadPayLoadWeb> getAllUploadByPieceToDto(Long id) {
return uploadRepository.findByPieceId(id);
}
@Override
public Page<UploadPayLoadWeb> getAllUploadByPieceDtoPageable(Long id, Pageable pageable) {
return null;
}
}

View File

@@ -0,0 +1,31 @@
package io.gmss.fiscad.interfaces.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.paylaods.request.crudweb.UploadPayLoadWeb;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Optional;
public interface UploadService {
UploadPayLoadWeb createUpload(UploadPayLoadWeb piecePayLoadWeb) throws BadRequestException;
Upload createUpload(MultipartFile file, @RequestParam Long pieceId) throws BadRequestException;
UploadPayLoadWeb updateUpload(Long id, UploadPayLoadWeb piecePayLoadWeb) throws NotFoundException;
void deleteUpload(Long id) throws NotFoundException;
Page<UploadPayLoadWeb> getUploadListToDtoPageable(Pageable pageable);
List<UploadPayLoadWeb> getUploadListToDto();
Optional<UploadPayLoadWeb> getUploadByToDto(Long id);
List<UploadPayLoadWeb> getAllUploadByPieceToDto(Long id);
Page<UploadPayLoadWeb> getAllUploadByPieceDtoPageable(Long id,Pageable pageable);
}

View File

@@ -1,18 +1,20 @@
package io.gmss.fiscad.paylaods.request.crudweb;
import jakarta.persistence.Transient;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
public class UploadPayLoadWeb {
private Long id;
private Long pieceId;
private String Observation;
// private String Observation;
//private boolean synchronise;
//private String fileBase64;
/////////////////////////////////
private String name;
private String filePath;
private Long enqueteId;
// private Long enqueteId;
private Long enqueteBatimentId;
private Long personneId;
private Long enqueteUniteLogementId;
@@ -20,5 +22,34 @@ public class UploadPayLoadWeb {
private String reference;
private String description;
private String rename;
private String fileName;
private String originalFileName;
@Transient
private String URIFile;
private String checkSum;
private long size;
private String mimeType;
public UploadPayLoadWeb() {
}
public UploadPayLoadWeb(Long id, Long pieceId, String name, String filePath, Long enqueteBatimentId, Long personneId, Long enqueteUniteLogementId, Long declarationNcId, String reference, String description, String rename,
String fileName,String originalFileName) {
this.id = id;
this.pieceId = pieceId;
//Observation = observation;
this.name = name;
this.filePath = filePath;
//this.enqueteId = enqueteId;
this.enqueteBatimentId = enqueteBatimentId;
this.personneId = personneId;
this.enqueteUniteLogementId = enqueteUniteLogementId;
this.declarationNcId = declarationNcId;
this.reference = reference;
this.description = description;
this.rename = rename;
this.fileName = fileName;
this.originalFileName = originalFileName;
}
}

View File

@@ -3,11 +3,13 @@ package io.gmss.fiscad.persistence.repositories.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment;
import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement;
import io.gmss.fiscad.paylaods.request.crudweb.UploadPayLoadWeb;
import io.gmss.fiscad.paylaods.response.restoration.UploadPayLoadRestor;
import jakarta.transaction.Transactional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Optional;
@@ -80,4 +82,49 @@ public interface UploadRepository extends JpaRepository<Upload, Long> {
List<Upload> findByPersonne_IdAndPieceIsNullAndMembreGroupeIsNull(Long personneId);
@Query("""
SELECT new io.gmss.fiscad.paylaods.request.crudweb.UploadPayLoadWeb(
u.id,
u.piece.id,
u.name,
u.filePath,
u.enqueteBatiment.id,
u.personne.id,
u.enqueteUniteLogement.id,
u.declarationNc.id,
u.reference,
u.description,
u.rename,
u.fileName,
u.originalFileName
)
FROM Upload u
WHERE u.id = :uploadId
""")
Optional<UploadPayLoadWeb> findByIdToDto(@Param("uploadId") Long uploadId);
@Query("""
SELECT new io.gmss.fiscad.paylaods.request.crudweb.UploadPayLoadWeb(
u.id,
u.piece.id,
u.name,
u.filePath,
u.enqueteBatiment.id,
u.personne.id,
u.enqueteUniteLogement.id,
u.declarationNc.id,
u.reference,
u.description,
u.rename,
u.fileName,
u.originalFileName
)
FROM Upload u
WHERE u.piece.id = :pieceId
""")
List<UploadPayLoadWeb> findByPieceId(@Param("pieceId") Long pieceId);
}

View File

@@ -83,7 +83,9 @@ public interface PersonneRepository extends JpaRepository<Personne, Long> {
io.gmss.fiscad.enums.Origine.RFU_LOGIL
)
FROM Personne p
WHERE (:ifu IS NULL OR LOWER(trim(p.ifu)) LIKE (CONCAT('%', :ifu, '%')))
WHERE
p.etatIdentificationPersonne <> io.gmss.fiscad.enums.EtatIdentificationPersonne.NEANT
AND (:ifu IS NULL OR LOWER(trim(p.ifu)) LIKE (CONCAT('%', :ifu, '%')))
AND (:npi IS NULL OR LOWER(trim(p.npi)) LIKE (CONCAT('%', :npi, '%')))
AND (:nom IS NULL OR LOWER(trim(p.nom)) LIKE (CONCAT('%', :nom, '%')))
AND (:prenom IS NULL OR LOWER(trim(p.prenom)) LIKE (CONCAT('%', :prenom, '%')))
@@ -92,7 +94,7 @@ public interface PersonneRepository extends JpaRepository<Personne, Long> {
AND (:dateNaissance IS NULL OR p.dateNaissanceOuConsti = :dateNaissance)
"""
)
List<PersonnePayLoadWeb> findByFilters(
List<PersonnePayLoadWeb> findByFiltersInBaseIfuNpiCorrecte(
@Param("ifu") String ifu,
@Param("npi") String npi,
@Param("nom") String nom,

View File

@@ -206,7 +206,7 @@ public class EntityFromPayLoadService {
public Upload getUploadFromPayLoadWeb(UploadPayLoadWeb uploadPayLoadWeb){
Upload upload=new Upload();
//Optional<Enquete> optionalEnquete=Optional.empty() ;
Optional<Piece> optionalPiece=Optional.empty() ;
Optional<DeclarationNc> optionalDeclarationNc=Optional.empty();
Optional<Personne> optionalPersonne=Optional.empty();
Optional<EnqueteBatiment> optionalEnqueteBatiment=Optional.empty();
@@ -224,8 +224,14 @@ public class EntityFromPayLoadService {
optionalEnqueteBatiment=enqueteBatimentRepository.findById(uploadPayLoadWeb.getEnqueteBatimentId());
if(uploadPayLoadWeb.getEnqueteUniteLogementId()!=null)
optionalEnqueteUniteLogement=enqueteUniteLogementRepository.findById(uploadPayLoadWeb.getEnqueteUniteLogementId());
if(uploadPayLoadWeb.getPieceId()!=null)
optionalPiece=pieceRepository.findById(uploadPayLoadWeb.getPieceId());
upload.setId(uploadPayLoadWeb.getId());
upload.setEnqueteId(uploadPayLoadWeb.getEnqueteId());
upload.setPiece(optionalPiece.orElse(null));
//upload.setEnqueteId(uploadPayLoadWeb.getEnqueteId());
upload.setEnqueteBatiment(optionalEnqueteBatiment.orElse(null));
upload.setPersonne(optionalPersonne.orElse(null));
upload.setEnqueteUniteLogement(optionalEnqueteUniteLogement.orElse(null));

Binary file not shown.

Binary file not shown.