package net.conselldemallorca.helium.v3.core.repository; import java.util.Collection; import java.util.Date; import java.util.List; import net.conselldemallorca.helium.core.model.hibernate.Entorn; import net.conselldemallorca.helium.core.model.hibernate.Estat; import net.conselldemallorca.helium.core.model.hibernate.Expedient; import net.conselldemallorca.helium.core.model.hibernate.ExpedientHelium; import net.conselldemallorca.helium.core.model.hibernate.ExpedientTipus; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; /** * Especifica els mètodes que s'han d'emprar per obtenir i modificar la * informació relativa a un expedient que està emmagatzemat a dins la base * de dades. * * @author Limit Tecnologies <limit@limit.es> */ public interface ExpedientHeliumRepository extends JpaRepository<ExpedientHelium, Long> { @Query( "select e " + "from ExpedientHelium e " + "where " + " e.entorn = :entorn " + "and e.tipus in (:tipusPermesos) " + "and (:esNullExpedientTipus = true or e.tipus = :expedientTipus) " + "and (:esNullTitol = true or lower(e.titol) like lower('%'||:titol||'%')) " + "and (:esNullNumero = true or lower(e.numero) like lower('%'||:numero||'%')) " + "and (:esNullDataInici1 = true or e.dataInici >= :dataInici1) " + "and (:esNullDataInici2 = true or e.dataInici <= :dataInici2) " + "and (:nomesIniciats = false or e.dataFi is null) " + "and (:nomesFinalitzats = false or e.dataFi is not null) " + "and (:esNullEstat = true or e.estat = :estat) " + "and (:esNullGeoPosX = true or e.geoPosX = :geoPosX) " + "and (:esNullGeoPosY = true or e.geoPosY = :geoPosY) " + "and (:esNullGeoReferencia = true or e.geoReferencia = :geoReferencia) " + "and (:nomesAmbTasquesActives = false " + " or e.processInstanceId in (:rootProcessInstanceIdsAmbTasquesActives1) " + " or e.processInstanceId in (:rootProcessInstanceIdsAmbTasquesActives2) " + " or e.processInstanceId in (:rootProcessInstanceIdsAmbTasquesActives3) " + " or e.processInstanceId in (:rootProcessInstanceIdsAmbTasquesActives4) " + " or e.processInstanceId in (:rootProcessInstanceIdsAmbTasquesActives5)) " + "and (((:mostrarAnulats = true or e.anulat = false) and :mostrarNomesAnulats = false) or (:mostrarNomesAnulats = true and e.anulat = true)) " + "and (:nomesAlertes = false or e.errorDesc is not null)") Page<ExpedientHelium> findByFiltreGeneralPaginat( @Param("entorn") Entorn entorn, @Param("tipusPermesos") Collection<ExpedientTipus> tipusPermesos, @Param("esNullExpedientTipus") boolean esNullExpedientTipus, @Param("expedientTipus") ExpedientTipus expedientTipus, @Param("esNullTitol") boolean esNullTitol, @Param("titol") String titol, @Param("esNullNumero") boolean esNullNumero, @Param("numero") String numero, @Param("esNullDataInici1") boolean esNullDataInici1, @Param("dataInici1") Date dataInici1, @Param("esNullDataInici2") boolean esNullDataInici2, @Param("dataInici2") Date dataInici2, @Param("nomesIniciats") boolean nomesIniciats, @Param("nomesFinalitzats") boolean nomesFinalitzats, @Param("esNullEstat") boolean esNullEstat, @Param("estat") Estat estat, @Param("esNullGeoPosX") boolean esNullGeoPosX, @Param("geoPosX") Double geoPosX, @Param("esNullGeoPosY") boolean esNullGeoPosY, @Param("geoPosY") Double geoPosY, @Param("esNullGeoReferencia") boolean esNullGeoReferencia, @Param("geoReferencia") String geoReferencia, @Param("nomesAmbTasquesActives") boolean nomesAmbTasquesActives, @Param("rootProcessInstanceIdsAmbTasquesActives1") Collection<String> rootProcessInstanceIdsAmbTasquesActives1, @Param("rootProcessInstanceIdsAmbTasquesActives2") Collection<String> rootProcessInstanceIdsAmbTasquesActives2, @Param("rootProcessInstanceIdsAmbTasquesActives3") Collection<String> rootProcessInstanceIdsAmbTasquesActives3, @Param("rootProcessInstanceIdsAmbTasquesActives4") Collection<String> rootProcessInstanceIdsAmbTasquesActives4, @Param("rootProcessInstanceIdsAmbTasquesActives5") Collection<String> rootProcessInstanceIdsAmbTasquesActives5, @Param("mostrarAnulats") boolean mostrarAnulats, @Param("mostrarNomesAnulats") boolean mostrarNomesAnulats, @Param("nomesAlertes") boolean nomesAlertes, Pageable pageable); @Query( "select cast(e.processInstanceId as long) " + "from ExpedientHelium e " + "where " + " e.entorn = :entorn " + "and e.tipus in (:tipusPermesos) " + "and (:esNullExpedientTipus = true or e.tipus = :expedientTipus) " + "and (:esNullTitol = true or lower(e.titol) like lower('%'||:titol||'%')) ") public List<Long> findListExpedients( @Param("entorn") Entorn entorn, @Param("tipusPermesos") Collection<ExpedientTipus> tipusPermesos, @Param("esNullExpedientTipus") boolean esNullExpedientTipus, @Param("expedientTipus") ExpedientTipus expedientTipus, @Param("esNullTitol") boolean esNullTitol, @Param("titol") String titol, Pageable pageable); public Expedient findByProcessInstanceId(String processInstanceId); }