/**
*
*/
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.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 ExpedientRepository extends JpaRepository<Expedient, Long> {
List<Expedient> findByIdIn(Collection<Long> id);
List<Expedient> findByReindexarDataNotNullOrderByReindexarDataAsc();
Expedient findByEntornIdAndTipusIdAndNumero(
Long entornId,
Long tipusId,
String numero);
@Query( "select e " +
"from Expedient e " +
"where " +
" e.entorn.id = :entornId " +
" and e.tipus.id = :tipusId " +
" and (:esNullTitol = true or lower(e.titol) like lower('%'||:titol||'%')) ")
List<Expedient> findByEntornIdAndTipusIdAndTitol(
@Param("entornId") Long entornId,
@Param("tipusId") Long tipusId,
@Param("esNullTitol") boolean esNullTitol,
@Param("titol") String titol);
Expedient findByEntornAndTipusAndNumero(
Entorn entorn,
ExpedientTipus tipus,
String numero);
Expedient findByEntornAndTipusAndNumeroDefault(
Entorn entorn,
ExpedientTipus tipus,
String numeroDefault);
Expedient findByEntornIdAndId(
Long entornId,
Long id);
@Query( "from Expedient 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 (:nomesAlertes = false or e.errorDesc is not null)")
List<Expedient> findByFiltreGeneral(
@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("nomesAlertes") boolean nomesAlertes);
@Query( "from Expedient 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 (:nomesAlertes = false or e.errorDesc is not null)")
Page<Expedient> 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("nomesAlertes") boolean nomesAlertes,
Pageable pageable);
@Query( "from Expedient 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)) ")
List<Long> findIdsByFiltreGeneral(
@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);
@Query( "select e.processInstanceId " +
"from Expedient 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 (((: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)")
List<String> findProcessInstanceIdsByFiltreGeneral(
@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("mostrarAnulats") boolean mostrarAnulats,
@Param("mostrarNomesAnulats") boolean mostrarNomesAnulats,
@Param("nomesAlertes") boolean nomesAlertes);
@Query("select e.id, e.processInstanceId from Expedient e where " +
" ( e.id in (:ids1) " +
" or e.id in (:ids2) " +
" or e.id in (:ids3) " +
" or e.id in (:ids4) " +
" or e.id in (:ids5) )" +
"and (:mostrarAnulats = true or e.anulat = false) " +
"and (:nomesAlertes = false or e.errorDesc is not null)")
List<Object[]> findAmbIdsByFiltreConsultesTipus(
@Param("ids1") Collection<Long> ids1,
@Param("ids2") Collection<Long> ids2,
@Param("ids3") Collection<Long> ids3,
@Param("ids4") Collection<Long> ids4,
@Param("ids5") Collection<Long> ids5,
@Param("mostrarAnulats") boolean mostrarAnulats,
@Param("nomesAlertes") boolean nomesAlertes);
@Query("select e from Expedient e where entorn.id = :entornId AND (titol like '%'||:text||'%' or numero like '%'||:text||'%') order by numero, titol")
List<Expedient> findAmbEntornLikeIdentificador(
@Param("entornId") Long entornId,
@Param("text") String text);
@Query("select e from Expedient e where " +
" e.id in (:ids1) " +
" or e.id in (:ids2) " +
" or e.id in (:ids3) " +
" or e.id in (:ids4) " +
" or e.id in (:ids5) ")
List<Expedient> findAmbIds(
@Param("ids1") Collection<Long> ids1,
@Param("ids2") Collection<Long> ids2,
@Param("ids3") Collection<Long> ids3,
@Param("ids4") Collection<Long> ids4,
@Param("ids5") Collection<Long> ids5);
@Query("select distinct e.tipus.id from Expedient e where " +
" e.id in (:ids1) " +
" or e.id in (:ids2) " +
" or e.id in (:ids3) " +
" or e.id in (:ids4) " +
" or e.id in (:ids5) ")
List<Long> getIdsDiferentsTipusExpedients(
@Param("ids1") Collection<Long> ids1,
@Param("ids2") Collection<Long> ids2,
@Param("ids3") Collection<Long> ids3,
@Param("ids4") Collection<Long> ids4,
@Param("ids5") Collection<Long> ids5);
@Query( "select e.id " +
"from Expedient e " +
"where e.processInstanceId = :processInstanceId")
Long findIdByProcessInstanceId(@Param("processInstanceId") String processInstanceId);
}