Skip to content

Commit

Permalink
- Construction de l'étape d'obtention de la prochaine demande de supp…
Browse files Browse the repository at this point in the history
…ression
  • Loading branch information
jvk88511334 committed Aug 13, 2024
1 parent e2bce7c commit 5f3fcbd
Show file tree
Hide file tree
Showing 6 changed files with 117 additions and 1 deletion.
19 changes: 19 additions & 0 deletions batch/src/main/java/fr/abes/item/batch/JobConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ public LignesFichierWriter writer() {
@Bean
public Tasklet getNextDemandeRecouvTasklet() { return new GetNextDemandeRecouvTasklet(strategyFactory, minHour, maxHour); }
@Bean
public Tasklet getNextDemandeSupprTasklet() { return new GetNextDemandeSupprTasklet(strategyFactory, minHour, maxHour); }
@Bean
public Tasklet lireLigneFichierTasklet() { return new LireLigneFichierTasklet(strategyFactory, mailAdmin); }
@Bean
public Tasklet authentifierSurSudocTasklet()
Expand Down Expand Up @@ -179,6 +181,13 @@ public Step stepRecupererNextDemandeRecouv(JobRepository jobRepository, @Qualifi
.tasklet(tasklet, transactionManager)
.build();
}
@Bean
public Step stepRecupererNextDemandeSuppr(JobRepository jobRepository, @Qualifier("getNextDemandeSupprTasklet") Tasklet tasklet, PlatformTransactionManager transactionManager) {
return new StepBuilder("stepRecupererNextDemandeSuppr", jobRepository).allowStartIfComplete(true)
.tasklet(tasklet, transactionManager)
.build();
}

// Steps pour lancement d'un traitement de modification de masse
@Bean
public Step stepLireLigneFichier(JobRepository jobRepository, @Qualifier("lireLigneFichierTasklet") Tasklet tasklet, PlatformTransactionManager transactionManager) {
Expand Down Expand Up @@ -318,6 +327,16 @@ public Job jobTraiterLigneFichierExemp(JobRepository jobRepository, @Qualifier("
.build().build();
}

//job de lancement d'un traitement de suppression
@Bean
public Job jobTraiterLignerFichierSuppr(JobRepository jobRepository, @Qualifier("stepRecupererNextDemandeSuppr") Step step1) {
return new JobBuilder("traiterLigneFichierSuppr", jobRepository).incrementer(incrementer())
.start(step1).on(Constant.FAILED).end()
.from(step1).on(Constant.AUCUNE_DEMANDE).end()
.from(step1).on(Constant.COMPLETED).end()
.build().build();
}

//job de lancement d'un test de recouvrement
@Bean
public Job jobTraiterLigneFichierRecouv(JobRepository jobRepository, @Qualifier("stepRecupererNextDemandeRecouv") Step step1, @Qualifier("stepLireLigneFichier") Step step2, @Qualifier("stepAuthentifierSurSudoc") Step step3, @Qualifier("stepTraiterLigneFichier") Step step4, @Qualifier("stepGenererFichier") Step step5) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package fr.abes.item.batch.traitement;

import fr.abes.item.core.configuration.factory.StrategyFactory;
import fr.abes.item.core.constant.Constant;
import fr.abes.item.core.constant.TYPE_DEMANDE;
import fr.abes.item.core.entities.item.DemandeSupp;
import fr.abes.item.core.exception.DemandeCheckingException;
import fr.abes.item.core.service.IDemandeService;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.exception.ConstraintViolationException;
import org.hibernate.exception.JDBCConnectionException;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.StepExecutionListener;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.dao.DataAccessException;

import java.sql.SQLException;

@Slf4j
public class GetNextDemandeSupprTasklet implements Tasklet, StepExecutionListener {
private final StrategyFactory strategyFactory;
private DemandeSupp demande;
private final int minHour;
private final int maxHour;

public GetNextDemandeSupprTasklet(StrategyFactory strategyFactory, int minHour, int maxHour) {
this.strategyFactory = strategyFactory;
this.minHour = minHour;
this.maxHour = maxHour;
}

@Override
public void beforeStep(@NonNull StepExecution stepExecution) {
log.info(Constant.JOB_TRAITER_LIGNE_FICHIER_START_MODIF);
}

@Override
public ExitStatus afterStep(StepExecution stepExecution) {
if (stepExecution.getExitStatus().equals(ExitStatus.COMPLETED)) {
stepExecution.getJobExecution().getExecutionContext().put("demandeId", this.demande.getId());
stepExecution.getJobExecution().getExecutionContext().put("typeDemande", this.demande.getTypeDemande().toString());
}
return stepExecution.getExitStatus();
}

@Override
public RepeatStatus execute(@NonNull StepContribution stepContribution, @NonNull ChunkContext chunkContext) throws Exception {
log.info(Constant.ENTER_EXECUTE_FROM_GETNEXTDEMANDESUPPRTASKLET);
try{
IDemandeService service = strategyFactory.getStrategy(IDemandeService.class, TYPE_DEMANDE.SUPP);
this.demande = (DemandeSupp) service.getIdNextDemandeToProceed(this.minHour, this.maxHour);
if (this.demande == null) {
log.warn(Constant.NO_DEMANDE_TO_PROCESS);
stepContribution.setExitStatus(new ExitStatus("AUCUNE DEMANDE"));
return RepeatStatus.FINISHED;
}
service.changeState(this.demande, Constant.ETATDEM_ENCOURS);
} catch (DemandeCheckingException e) {
log.error(Constant.ERROR_PASSERENCOURS_FROM_GETNEXTDEMANDESUPPRTASKLET
+ e);
stepContribution.setExitStatus(ExitStatus.FAILED);
return RepeatStatus.FINISHED;
} catch (JDBCConnectionException | ConstraintViolationException j){
log.error("Erreur hibernate JDBC");
log.error(j.toString());
} catch (DataAccessException d){
log.error("GetNextDemandeRecouvTasklet : Erreur d'accès à la base de donnée");
if(d.getRootCause() instanceof SQLException sqlEx){
log.error("Erreur SQL : " + sqlEx.getErrorCode());
log.error(sqlEx.getSQLState() + "|" + sqlEx.getMessage() + "|" + sqlEx.getLocalizedMessage());
}
}
return RepeatStatus.FINISHED;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ public RepeatStatus execute(@NonNull StepContribution stepContribution, @NonNull
case RECOUV:
this.lignesFichier.add(new LigneFichierDtoRecouv((LigneFichierRecouv) localLigne));
break;
case SUPP:
//TODO this.lignesFichier.add(new LigneFichierDtoSuppr((LigneFichierSupp) localLigne));
default:
}
}
Expand Down
3 changes: 3 additions & 0 deletions core/src/main/java/fr/abes/item/core/constant/Constant.java
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ public class Constant implements Serializable {
public static final String JOB_TRAITER_LIGNE_FICHIER_START_MODIF = "debut du job jobTraiterLigneFichier pour demandes de modification...";
public static final String JOB_TRAITER_LIGNE_FICHIER_START_EXEMP = "debut du job jobTraiterLigneFichier pour demandes d'exemplarisation...";
public static final String JOB_TRAITER_LIGNE_FICHIER_START_RECOU = "debut du job jobTraiterLigneFichier pour demandes de recouvrement...";
public static final String JOB_TRAITER_LIGNE_FICHIER_START_SUPPR = "debut du job jobTraiterLigneFichier pour demandes de suppression...";
public static final String JOB_EXPORT_STATISTIQUES_START = "debut du job jobExportStatistiques...";
public static final String SPRING_BATCH_TOTAL_TIME_EXECUTION_MILLISECONDS = "temps total execution (ms) = ";
public static final String SPRING_BATCH_TOTAL_TIME_EXECUTION_MINUTES = "temps total execution (minutes) = ";
Expand All @@ -204,9 +205,11 @@ public class Constant implements Serializable {
public static final String ERROR_PASSERENCOURS_FROM_GETNEXTDEMANDEEXEMPTASKLET = "erreur lors du passerEnCours de GetNextDemandeExempTasklets = ";
public static final String ERROR_PASSERENCOURS_FROM_GETNEXTDEMANDEMODIFTASKLET = "erreur lors du passerEnCours de GetNextDemandeModifTasklets = ";
public static final String ERROR_PASSERENCOURS_FROM_GETNEXTDEMANDERECOUVTASKLET = "erreur lors du passerEnCours de GetNextDemandeRecouvTasklets = ";
public static final String ERROR_PASSERENCOURS_FROM_GETNEXTDEMANDESUPPRTASKLET = "erreur lors du passerEnCours de GetNextDemandeRecouvTasklets = ";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDERECOUVTASKLET = "entrée dans execute de GetNextDemandeRecouvTasklets...";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDEMODIFTASKLET = "entrée dans execute de GetNextDemandeModifTasklets...";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDEEXEMPTASKLET = "entrée dans execute de GetNextDemandeExempTasklets...";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDESUPPRTASKLET = "entrée dans execute de GetNextDemandeSupprTasklets...";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDEEXEMPTOARCHIVETASKLET = "entrée dans execute de ChangeInArchivedStatusAllDemandesExempFinishedForMoreThanThreeMonthsTasklet...";
public static final String ENTER_EXECUTE_FROM_GETNEXTDEMANDEEXEMPTODELETEDSTATUSTASKLET = "entrée dans execute de ChangeInDeletedStatusAllDemandesExempFinishedForMoreThanThreeMonthsTasklet...";
public static final String ENTER_EXECUTE_FROM_LIRELIGNEFICHIERTASKLET = "entrée dans execute de LireLigneFichierTasklet...";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,22 @@
import fr.abes.item.core.entities.item.DemandeSupp;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@ItemConfiguration
public interface IDemandeSuppDao extends JpaRepository<DemandeSupp, Integer> {
@Query("select d from DemandeSupp d where d.etatDemande.numEtat not in (9, 2, 10)")

static final int PREPAREE = 2;
static final int ENATTENTE = 5;
static final int ARCHIVEE = 9;
static final int SUPPRIMEE = 10;

@Query("select d from DemandeSupp d where d.etatDemande.numEtat not in (:ARCHIVEE, :PREPAREE, :SUPPRIMEE)")
List<DemandeSupp> getAllActiveDemandesModifForAdminExtended();
@Query("SELECT d FROM DemandeSupp d WHERE d.etatDemande.numEtat = :ENATTENTE")
List<DemandeSupp> findAllWaitingDemandes();
}
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ public List<Demande> getActiveDemandesForUser(String iln) {

@Override
public Demande getIdNextDemandeToProceed(int minHour, int maxHour) {
List<DemandeSupp> demandes = demandeSuppDao.findAllWaitingDemandes();
if (!demandes.isEmpty())
return demandes.get(0);
return null;
}

Expand Down

0 comments on commit 5f3fcbd

Please sign in to comment.