Merge branch 'ch-evo-10-01-2024' into 'main'
Merge du code DU DAI sur les enquetes fiscales See merge request christianakpona/fiscad!2
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
package io.gmss.infocad.controllers.infocad.metier;
|
package io.gmss.infocad.controllers.infocad.parametre;
|
||||||
|
|
||||||
|
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.interfaces.infocad.metier.BlocService;
|
import io.gmss.infocad.interfaces.infocad.parametre.BlocService;
|
||||||
import io.gmss.infocad.paylaods.ApiResponse;
|
import io.gmss.infocad.paylaods.ApiResponse;
|
||||||
import io.gmss.infocad.security.CurrentUser;
|
import io.gmss.infocad.security.CurrentUser;
|
||||||
import io.gmss.infocad.security.UserPrincipal;
|
import io.gmss.infocad.security.UserPrincipal;
|
||||||
@@ -7,7 +7,7 @@ package io.gmss.infocad.controllers.report;
|
|||||||
|
|
||||||
import io.gmss.infocad.enums.FormatRapport;
|
import io.gmss.infocad.enums.FormatRapport;
|
||||||
import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad;
|
import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.BlocRepository;
|
import io.gmss.infocad.repositories.infocad.parametre.BlocRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.parametre.StructureRepository;
|
import io.gmss.infocad.repositories.infocad.parametre.StructureRepository;
|
||||||
import io.gmss.infocad.service.ReportService;
|
import io.gmss.infocad.service.ReportService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
|||||||
@@ -0,0 +1,116 @@
|
|||||||
|
package io.gmss.infocad.controllers.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Campagne;
|
||||||
|
import io.gmss.infocad.enums.TypeCampagne;
|
||||||
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
|
import io.gmss.infocad.interfaces.rfu.parametre.CampagneService;
|
||||||
|
import io.gmss.infocad.paylaods.ApiResponse;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("api/campagne")
|
||||||
|
public class CampagneController {
|
||||||
|
|
||||||
|
private final CampagneService campagneService;
|
||||||
|
|
||||||
|
public CampagneController(CampagneService campagneService) {
|
||||||
|
this.campagneService = campagneService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
public ResponseEntity<?> createCampagne(@RequestBody @Valid @Validated Campagne campagne) {
|
||||||
|
try{
|
||||||
|
campagne = campagneService.createCampagne(campagne);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagne, "Campagne créé avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update/{id}")
|
||||||
|
public ResponseEntity<?> updateCampagne(@PathVariable Long id, @RequestBody Campagne campagne) {
|
||||||
|
try{
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagneService.updateCampagne(id, campagne), "Campagne mis à jour avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
public ResponseEntity<?> deleteCampagner(@PathVariable Long id) {
|
||||||
|
try{
|
||||||
|
campagneService.deleteCampagne(id);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true,"Campagne supprimée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/all")
|
||||||
|
public ResponseEntity<?> getAllCampagneList() {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagneService.getCampagneList(), "Liste des campagnes chargée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/all-paged")
|
||||||
|
public ResponseEntity<?> getAllCampagnePaged(@RequestParam int pageNo, @RequestParam int pageSize) {
|
||||||
|
Pageable pageable = PageRequest.of(pageNo, pageSize);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagneService.getCampagneList(pageable), "Liste des campagnes chargée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/id/{id}")
|
||||||
|
public ResponseEntity<?> getCampagneById(@PathVariable Long id) {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagneService.getCampagneById(id), "Campagne trouvée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/type-campagne/{typeCampagne}")
|
||||||
|
public ResponseEntity<?> getCampagneByType(@PathVariable TypeCampagne typeCampagne) {
|
||||||
|
|
||||||
|
try{
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, campagneService.getCampagnesByType(typeCampagne), "Liste des campagne par type chargée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (NotFoundException e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
package io.gmss.infocad.controllers.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Equipe;
|
||||||
|
import io.gmss.infocad.interfaces.rfu.parametre.EquipeService;
|
||||||
|
import io.gmss.infocad.paylaods.ApiResponse;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("api/equipe")
|
||||||
|
public class EquipeController {
|
||||||
|
|
||||||
|
private final EquipeService equipeService;
|
||||||
|
|
||||||
|
public EquipeController(EquipeService equipeService) {
|
||||||
|
this.equipeService = equipeService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
public ResponseEntity<?> createEquipe(@RequestBody @Valid @Validated Equipe equipe) {
|
||||||
|
try{
|
||||||
|
equipe = equipeService.createEquipe(equipe);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, equipe, "Equipe créé avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update/{id}")
|
||||||
|
public ResponseEntity<?> updateEquipe(@PathVariable Long id, @RequestBody Equipe equipe) {
|
||||||
|
try{
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, equipeService.updateEquipe(id, equipe), "Equipe mis à jour avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
public ResponseEntity<?> deleteEquiper(@PathVariable Long id) {
|
||||||
|
try{
|
||||||
|
equipeService.deleteEquipe(id);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true,"Equipe supprimée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}catch (Exception e){
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(false, e.getMessage()),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/all")
|
||||||
|
public ResponseEntity<?> getAllEquipeList() {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, equipeService.getEquipeList(), "Liste des equipes chargée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/all-paged")
|
||||||
|
public ResponseEntity<?> getAllEquipePaged(@RequestParam int pageNo, @RequestParam int pageSize) {
|
||||||
|
Pageable pageable = PageRequest.of(pageNo, pageSize);
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, equipeService.getEquipeList(pageable), "Liste des equipes chargée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/id/{id}")
|
||||||
|
public ResponseEntity<?> getEquipeById(@PathVariable Long id) {
|
||||||
|
return new ResponseEntity<>(
|
||||||
|
new ApiResponse<>(true, equipeService.getEquipeById(id), "Equipe trouvée avec succès."),
|
||||||
|
HttpStatus.OK
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ package io.gmss.infocad.entities.decoupage;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.gmss.infocad.entities.BaseEntity;
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|||||||
@@ -6,10 +6,13 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
|||||||
import io.gmss.infocad.deserializer.LocalDateDeserializer;
|
import io.gmss.infocad.deserializer.LocalDateDeserializer;
|
||||||
import io.gmss.infocad.entities.BaseEntity;
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.entities.infocad.parametre.NatureDomaine;
|
import io.gmss.infocad.entities.infocad.parametre.NatureDomaine;
|
||||||
import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle;
|
import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle;
|
||||||
import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment;
|
import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment;
|
||||||
import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement;
|
import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement;
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Campagne;
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Equipe;
|
||||||
import io.gmss.infocad.entities.user.User;
|
import io.gmss.infocad.entities.user.User;
|
||||||
import io.gmss.infocad.enums.StatusEnquete;
|
import io.gmss.infocad.enums.StatusEnquete;
|
||||||
import io.gmss.infocad.enums.StatutEnregistrement;
|
import io.gmss.infocad.enums.StatutEnregistrement;
|
||||||
@@ -58,7 +61,12 @@ public class Enquete extends BaseEntity implements Serializable {
|
|||||||
private Parcelle parcelle;
|
private Parcelle parcelle;
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
private Bloc bloc;
|
private Bloc bloc; //représente un secteur d'enquetes
|
||||||
|
@ManyToOne
|
||||||
|
private Campagne campagne;
|
||||||
|
@ManyToOne
|
||||||
|
private Equipe equipe;
|
||||||
|
|
||||||
|
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
private StatusEnquete statusEnquete;
|
private StatusEnquete statusEnquete;
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
package io.gmss.infocad.entities.infocad.metier;
|
package io.gmss.infocad.entities.infocad.parametre;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.gmss.infocad.entities.BaseEntity;
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
import io.gmss.infocad.entities.decoupage.Quartier;
|
import io.gmss.infocad.entities.decoupage.Quartier;
|
||||||
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
||||||
|
import io.gmss.infocad.entities.user.User;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@@ -17,6 +18,9 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Un bloc représente un secteur de découpage admin dans le cadre d'une enquete fiscale
|
||||||
|
*/
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Entity
|
@Entity
|
||||||
@Data
|
@Data
|
||||||
@@ -53,6 +57,9 @@ public class Bloc extends BaseEntity implements Serializable {
|
|||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
@OneToMany(mappedBy = "bloc")
|
@OneToMany(mappedBy = "bloc")
|
||||||
private List<Enquete> enquetes;
|
private List<Enquete> enquetes;
|
||||||
|
@ManyToOne
|
||||||
|
private User chefSecteur;
|
||||||
|
|
||||||
public String getNomArrondissement() {
|
public String getNomArrondissement() {
|
||||||
return arrondissement.getNom();
|
return arrondissement.getNom();
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,6 @@ package io.gmss.infocad.entities.infocad.parametre;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.gmss.infocad.entities.BaseEntity;
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
|
||||||
import io.gmss.infocad.entities.user.User;
|
import io.gmss.infocad.entities.user.User;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -17,6 +16,10 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* représente un centre d'impôt dans le cadre d'une enquête fiscale
|
||||||
|
*/
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Entity
|
@Entity
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package io.gmss.infocad.entities.rfu.parametre;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import io.gmss.infocad.deserializer.LocalDateDeserializer;
|
||||||
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
|
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
||||||
|
import io.gmss.infocad.enums.TypeCampagne;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.hibernate.annotations.Where;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Where(clause = " deleted = false")
|
||||||
|
public class Campagne extends BaseEntity implements Serializable {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
private String refAdministrative;
|
||||||
|
private String nom;
|
||||||
|
@JsonFormat(pattern = "dd-MM-yyyy")
|
||||||
|
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||||
|
private LocalDate dateDebut;
|
||||||
|
@JsonFormat(pattern = "dd-MM-yyyy")
|
||||||
|
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||||
|
private LocalDate dateFin;
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
private TypeCampagne typeCampagne;
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "campagne")
|
||||||
|
private List<Equipe> equipes;
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "campagne")
|
||||||
|
private List<Enquete> enquetes;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package io.gmss.infocad.entities.rfu.parametre;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
|
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
||||||
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.hibernate.annotations.Where;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Where(clause = " deleted = false")
|
||||||
|
public class Equipe extends BaseEntity implements Serializable {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
private String code;
|
||||||
|
private String nom;
|
||||||
|
@ManyToOne
|
||||||
|
private Bloc bloc;
|
||||||
|
@ManyToOne
|
||||||
|
private Campagne campagne;
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "equipe")
|
||||||
|
private List<Participer> participers;
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "equipe")
|
||||||
|
private List<Enquete> enquetes;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package io.gmss.infocad.entities.rfu.parametre;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import io.gmss.infocad.deserializer.LocalDateDeserializer;
|
||||||
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
|
import io.gmss.infocad.entities.user.User;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.hibernate.annotations.Where;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Where(clause = " deleted = false")
|
||||||
|
public class Participer extends BaseEntity implements Serializable {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
@JsonFormat(pattern = "dd-MM-yyyy")
|
||||||
|
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||||
|
private LocalDate dateDebut;
|
||||||
|
@JsonFormat(pattern = "dd-MM-yyyy")
|
||||||
|
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||||
|
private LocalDate dateFin;
|
||||||
|
@ManyToOne
|
||||||
|
private Equipe equipe;
|
||||||
|
@ManyToOne
|
||||||
|
private User user;
|
||||||
|
}
|
||||||
@@ -3,7 +3,9 @@ package io.gmss.infocad.entities.user;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.gmss.infocad.entities.BaseEntity;
|
import io.gmss.infocad.entities.BaseEntity;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
||||||
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Participer;
|
||||||
import io.gmss.infocad.enums.UserRole;
|
import io.gmss.infocad.enums.UserRole;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -55,6 +57,12 @@ public class User extends BaseEntity implements Serializable {
|
|||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
@OneToMany(mappedBy = "user")
|
@OneToMany(mappedBy = "user")
|
||||||
private List<Enquete> enquetes;
|
private List<Enquete> enquetes;
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "user")
|
||||||
|
private List<Participer> participers;
|
||||||
|
@JsonIgnore
|
||||||
|
@OneToMany(mappedBy = "chefSecteur")
|
||||||
|
private List<Bloc> blocs ;
|
||||||
|
|
||||||
public void setUsername(String username) {
|
public void setUsername(String username) {
|
||||||
this.username = this.email;
|
this.username = this.email;
|
||||||
|
|||||||
8
src/main/java/io/gmss/infocad/enums/TypeCampagne.java
Normal file
8
src/main/java/io/gmss/infocad/enums/TypeCampagne.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package io.gmss.infocad.enums;
|
||||||
|
|
||||||
|
public enum TypeCampagne {
|
||||||
|
|
||||||
|
ANNUELLE,
|
||||||
|
PERMANANTE
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
package io.gmss.infocad.implementations.infocad.metier;
|
package io.gmss.infocad.implementations.infocad.metier;
|
||||||
|
|
||||||
import io.gmss.infocad.entities.infocad.metier.*;
|
import io.gmss.infocad.entities.infocad.metier.ActeurConcerne;
|
||||||
|
import io.gmss.infocad.entities.infocad.metier.Enquete;
|
||||||
|
import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse;
|
||||||
|
import io.gmss.infocad.entities.infocad.metier.Parcelle;
|
||||||
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.entities.user.User;
|
import io.gmss.infocad.entities.user.User;
|
||||||
import io.gmss.infocad.enums.StatusEnquete;
|
import io.gmss.infocad.enums.StatusEnquete;
|
||||||
import io.gmss.infocad.exceptions.BadRequestException;
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
@@ -14,9 +18,9 @@ import io.gmss.infocad.paylaods.response.*;
|
|||||||
import io.gmss.infocad.repositories.decoupage.ArrondissementRepository;
|
import io.gmss.infocad.repositories.decoupage.ArrondissementRepository;
|
||||||
import io.gmss.infocad.repositories.decoupage.CommuneRepository;
|
import io.gmss.infocad.repositories.decoupage.CommuneRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.ActeurConcerneRepository;
|
import io.gmss.infocad.repositories.infocad.metier.ActeurConcerneRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.BlocRepository;
|
|
||||||
import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository;
|
import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.ParcelleRepository;
|
import io.gmss.infocad.repositories.infocad.metier.ParcelleRepository;
|
||||||
|
import io.gmss.infocad.repositories.infocad.parametre.BlocRepository;
|
||||||
import io.gmss.infocad.repositories.user.UserRepository;
|
import io.gmss.infocad.repositories.user.UserRepository;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package io.gmss.infocad.implementations.infocad.metier;
|
package io.gmss.infocad.implementations.infocad.parametre;
|
||||||
|
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
||||||
import io.gmss.infocad.exceptions.BadRequestException;
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
import io.gmss.infocad.exceptions.NotFoundException;
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
import io.gmss.infocad.interfaces.decoupage.ArrondissementService;
|
import io.gmss.infocad.interfaces.decoupage.ArrondissementService;
|
||||||
import io.gmss.infocad.interfaces.infocad.metier.BlocService;
|
import io.gmss.infocad.interfaces.infocad.parametre.BlocService;
|
||||||
import io.gmss.infocad.interfaces.infocad.parametre.StructureService;
|
import io.gmss.infocad.interfaces.infocad.parametre.StructureService;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.BlocRepository;
|
import io.gmss.infocad.repositories.infocad.parametre.BlocRepository;
|
||||||
import io.gmss.infocad.service.StringService;
|
import io.gmss.infocad.service.StringService;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package io.gmss.infocad.implementations.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Campagne;
|
||||||
|
import io.gmss.infocad.enums.TypeCampagne;
|
||||||
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
|
import io.gmss.infocad.interfaces.rfu.parametre.CampagneService;
|
||||||
|
import io.gmss.infocad.repositories.rfu.parametre.CampagneRepository;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
@Service
|
||||||
|
public class CampagneServiceImpl implements CampagneService {
|
||||||
|
private final CampagneRepository campagneRepository;
|
||||||
|
|
||||||
|
public CampagneServiceImpl(CampagneRepository campagneRepository) {
|
||||||
|
this.campagneRepository = campagneRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Campagne createCampagne(Campagne campagne) throws BadRequestException {
|
||||||
|
if(campagne.getId() != null ){
|
||||||
|
throw new BadRequestException("Impossible de créer une nouvelle campgne ayant un id non null.");
|
||||||
|
}
|
||||||
|
return campagneRepository.save(campagne);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Campagne updateCampagne(Long id, Campagne campagne) throws NotFoundException {
|
||||||
|
if(campagne.getId() == null ){
|
||||||
|
throw new BadRequestException("Impossible de mettre à jour une nouvelle campagne ayant un id null.");
|
||||||
|
}
|
||||||
|
if(!campagneRepository.existsById(campagne.getId())){
|
||||||
|
throw new NotFoundException("Impossible de trouver la campagne spécifiée dans notre base de données.");
|
||||||
|
}
|
||||||
|
return campagneRepository.save(campagne);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteCampagne(Long id) throws NotFoundException {
|
||||||
|
Optional<Campagne> campagneOptional = campagneRepository.findById(id);
|
||||||
|
if(campagneOptional.isPresent()){
|
||||||
|
campagneRepository.deleteById(campagneOptional.get().getId());
|
||||||
|
}else{
|
||||||
|
throw new NotFoundException("Impossible de trouver la campagne spécifiée dans notre base de données.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<Campagne> getCampagneList(Pageable pageable) {
|
||||||
|
return campagneRepository.findAll(pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Campagne> getCampagneList() {
|
||||||
|
return campagneRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Campagne> getCampagnesByType(TypeCampagne typeCampagne) {
|
||||||
|
return campagneRepository.findAllByTypeCampagne(typeCampagne);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Campagne> getCampagneById(Long id) {
|
||||||
|
return campagneRepository.findById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package io.gmss.infocad.implementations.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Equipe;
|
||||||
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
|
import io.gmss.infocad.interfaces.rfu.parametre.EquipeService;
|
||||||
|
import io.gmss.infocad.repositories.rfu.parametre.EquipeRepository;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class EquipeServiceImpl implements EquipeService {
|
||||||
|
private final EquipeRepository equipeRepository;
|
||||||
|
|
||||||
|
public EquipeServiceImpl(EquipeRepository equipeRepository) {
|
||||||
|
this.equipeRepository = equipeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Equipe createEquipe(Equipe equipe) throws BadRequestException {
|
||||||
|
if(equipe.getId() != null ){
|
||||||
|
throw new BadRequestException("Impossible de créer une nouvelle equipe ayant un id non null.");
|
||||||
|
}
|
||||||
|
return equipeRepository.save(equipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Equipe updateEquipe(Long id, Equipe equipe) throws NotFoundException {
|
||||||
|
if(equipe.getId() == null ){
|
||||||
|
throw new BadRequestException("Impossible de mettre à jour une nouvelle equipe ayant un id null.");
|
||||||
|
}
|
||||||
|
if(!equipeRepository.existsById(equipe.getId())){
|
||||||
|
throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données.");
|
||||||
|
}
|
||||||
|
return equipeRepository.save(equipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteEquipe(Long id) throws NotFoundException {
|
||||||
|
Optional<Equipe> equipeOptional = equipeRepository.findById(id);
|
||||||
|
if(equipeOptional.isPresent()){
|
||||||
|
equipeRepository.deleteById(equipeOptional.get().getId());
|
||||||
|
}else{
|
||||||
|
throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<Equipe> getEquipeList(Pageable pageable) {
|
||||||
|
return equipeRepository.findAll(pageable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Equipe> getEquipeList() {
|
||||||
|
return equipeRepository.findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Equipe> getEquipeById(Long id) {
|
||||||
|
return equipeRepository.findById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.gmss.infocad.interfaces.infocad.metier;
|
package io.gmss.infocad.interfaces.infocad.parametre;
|
||||||
|
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.exceptions.BadRequestException;
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
import io.gmss.infocad.exceptions.NotFoundException;
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package io.gmss.infocad.interfaces.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Campagne;
|
||||||
|
import io.gmss.infocad.enums.TypeCampagne;
|
||||||
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface CampagneService {
|
||||||
|
|
||||||
|
Campagne createCampagne(Campagne campagne) throws BadRequestException;
|
||||||
|
Campagne updateCampagne(Long id, Campagne campagne) throws NotFoundException;
|
||||||
|
void deleteCampagne(Long id) throws NotFoundException;
|
||||||
|
Page<Campagne> getCampagneList(Pageable pageable);
|
||||||
|
List<Campagne> getCampagneList();
|
||||||
|
List<Campagne> getCampagnesByType(TypeCampagne typeCampagne);
|
||||||
|
Optional<Campagne> getCampagneById(Long id);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package io.gmss.infocad.interfaces.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Equipe;
|
||||||
|
import io.gmss.infocad.exceptions.BadRequestException;
|
||||||
|
import io.gmss.infocad.exceptions.NotFoundException;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface EquipeService {
|
||||||
|
|
||||||
|
Equipe createEquipe(Equipe campagne) throws BadRequestException;
|
||||||
|
Equipe updateEquipe(Long id, Equipe campagne) throws NotFoundException;
|
||||||
|
void deleteEquipe(Long id) throws NotFoundException;
|
||||||
|
Page<Equipe> getEquipeList(Pageable pageable);
|
||||||
|
List<Equipe> getEquipeList();
|
||||||
|
Optional<Equipe> getEquipeById(Long id);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package io.gmss.infocad.repositories.infocad.metier;
|
package io.gmss.infocad.repositories.infocad.parametre;
|
||||||
|
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.paylaods.response.BlocEnqResponse;
|
import io.gmss.infocad.paylaods.response.BlocEnqResponse;
|
||||||
import io.gmss.infocad.paylaods.response.BlocSyncResponse;
|
import io.gmss.infocad.paylaods.response.BlocSyncResponse;
|
||||||
import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse;
|
import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package io.gmss.infocad.repositories.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Campagne;
|
||||||
|
import io.gmss.infocad.enums.TypeCampagne;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface CampagneRepository extends JpaRepository<Campagne, Long> {
|
||||||
|
List<Campagne> findAllByTypeCampagne(TypeCampagne typeCampagne);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package io.gmss.infocad.repositories.rfu.parametre;
|
||||||
|
|
||||||
|
import io.gmss.infocad.entities.rfu.parametre.Equipe;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface EquipeRepository extends JpaRepository<Equipe, Long> {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -2,8 +2,8 @@ package io.gmss.infocad.service;
|
|||||||
|
|
||||||
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
import io.gmss.infocad.entities.decoupage.Arrondissement;
|
||||||
import io.gmss.infocad.entities.decoupage.Commune;
|
import io.gmss.infocad.entities.decoupage.Commune;
|
||||||
import io.gmss.infocad.entities.infocad.metier.Bloc;
|
|
||||||
import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse;
|
import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse;
|
||||||
|
import io.gmss.infocad.entities.infocad.parametre.Bloc;
|
||||||
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
import io.gmss.infocad.entities.infocad.parametre.Structure;
|
||||||
import io.gmss.infocad.enums.FormatRapport;
|
import io.gmss.infocad.enums.FormatRapport;
|
||||||
import io.gmss.infocad.enums.RoleActeur;
|
import io.gmss.infocad.enums.RoleActeur;
|
||||||
@@ -13,8 +13,8 @@ import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse;
|
|||||||
import io.gmss.infocad.paylaods.response.report.EnqueteParBlocResponse;
|
import io.gmss.infocad.paylaods.response.report.EnqueteParBlocResponse;
|
||||||
import io.gmss.infocad.repositories.decoupage.ArrondissementRepository;
|
import io.gmss.infocad.repositories.decoupage.ArrondissementRepository;
|
||||||
import io.gmss.infocad.repositories.decoupage.CommuneRepository;
|
import io.gmss.infocad.repositories.decoupage.CommuneRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.metier.BlocRepository;
|
|
||||||
import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository;
|
import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository;
|
||||||
|
import io.gmss.infocad.repositories.infocad.parametre.BlocRepository;
|
||||||
import io.gmss.infocad.repositories.infocad.parametre.StructureRepository;
|
import io.gmss.infocad.repositories.infocad.parametre.StructureRepository;
|
||||||
import net.sf.jasperreports.engine.*;
|
import net.sf.jasperreports.engine.*;
|
||||||
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
|
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
|
||||||
|
|||||||
Reference in New Issue
Block a user