/**
*
*/
package net.conselldemallorca.helium.v3.core.repository;
import java.util.Date;
import java.util.List;
import net.conselldemallorca.helium.core.model.hibernate.ExecucioMassiva;
import net.conselldemallorca.helium.core.model.hibernate.ExecucioMassivaExpedient;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
/**
* Dao pels objectes del tipus ExecucioMassivaExpedient.
*
* @author Limit Tecnologies <limit@limit.es>
*/
public interface ExecucioMassivaExpedientRepository extends JpaRepository<ExecucioMassivaExpedient, Long> {
@Query("select e " +
"from ExecucioMassivaExpedient e " +
"where e.expedient.id = :expedientId ")
public List<ExecucioMassivaExpedient> getExecucioMassivaByExpedient(
@Param("expedientId") Long expedientId
);
@Query("select count(e) " +
"from ExecucioMassivaExpedient e " +
"where e.expedient.id = :execucioMassivaId " +
" and e.dataFi is null")
public Long findProgresExecucioMassivaActiveById(
@Param("execucioMassivaId") Long execucioMassivaId);
@Query("select e.execucioMassiva.id, " +
"sum(case when e.error is not null then 1 else 0 end) as error, " +
"sum(case when e.error is null and e.dataFi is null then 1 else 0 end) as pendent, " +
"count(*) as total " +
"from ExecucioMassivaExpedient e " +
"where e.execucioMassiva in (:execucionsMassives) " +
"group by e.execucioMassiva.id, " +
"e.execucioMassiva.dataInici " +
"order by e.execucioMassiva.dataInici DESC")
public List<Object[]> findResultatsExecucionsMassives(@Param("execucionsMassives") List<ExecucioMassiva> execucionsMassives);
@Query("select min(e.id) " +
"from ExecucioMassivaExpedient e " +
"where e.execucioMassiva.id = " +
" (select min(id) " +
" from ExecucioMassiva " +
" where dataInici <= :ara " +
" and dataFi is null) " +
" and e.dataFi is null " +
" order by e.ordre")
public Long findExecucioMassivaExpedientId(@Param("ara") Date ara);
@Query("select min(e.id) " +
"from ExecucioMassivaExpedient e " +
"where e.execucioMassiva.id = :nextMassiu " +
" and e.dataFi is null " +
" order by e.ordre")
public Long findNextExecucioMassivaExpedient(@Param("nextMassiu") Long nextMassiu);
}