| 12
 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