1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public List<058Projection> findListe058Projection(String pCrit1, String pCrit2, Date pDateTraitement)
{
// Création d'un requête détachée
DetachedCriteria criteria = DetachedCriteria.forClass(Psar.class);
// Création de la projection
ProjectionList uneProjection = Projections.projectionList();
/**
* LES GROUP BY
*/
uneProjection.add(Projections.groupProperty("codiqueBase"), "codique");
uneProjection.add(Projections.groupProperty("codeAnnexeBase"), "codeAnnexe");
uneProjection.add(Projections.groupProperty("appli.codeAppli"), "application");
uneProjection.add(Projections.sum("montant"), "cumulMontants");
// Affectation de la projection à la requête
criteria.setProjection(uneProjection);
// test si on a une structure supérieure ( = "xxx000"), on prend tous les codiques qui commencent pas "xxx"
if (pCrit1.substring(3, 6).compareTo("000") == 0)
{
criteria.add(Restrictions.ilike("codiqueBase", pCrit1.substring(0, 3), MatchMode.START));
}
else
{
criteria.add(Restrictions.eq("codiqueBase", pCrit1));
criteria.add(Restrictions.eq("codeAnnexeBase", pCrit2));
}
Calendar dateTraitement = Calendar.getInstance();
dateTraitement.setTime(pDateTraitement);
int anneeTraitement = dateTraitement.get(Calendar.YEAR);
int moisTraitement = dateTraitement.get(Calendar.MONTH);
Calendar dateDebut = Calendar.getInstance();
dateDebut.set(anneeTraitement, moisTraitement, 1, 0, 0, 0);
Calendar dateFin = Calendar.getInstance();
dateFin.set(anneeTraitement, moisTraitement + 1, 1, 0, 0, 0);
criteria.add(Restrictions.ge("dateTraitementBase",dateDebut.getTime()));
criteria.add(Restrictions.lt("dateTraitementBase", dateFin.getTime()));
// tri OBLIGATOIRE avec ORACLE 10g
criteria.addOrder(Order.asc("codiqueNominoe")).addOrder(Order.asc("codeAnnexeNominoe")).addOrder(
Order.asc("appli.codeAppli"));
// Transformation du résultat
criteria.setResultTransformer(new AliasToBeanResultTransformer(058Projection.class));
List<058Projection> liste058Projection = getHibernateTemplate().findByCriteria(criteria);
return liste058Projection;
} |
Partager