2017-09-18 5 views
0

Je suis bloqué à un point où je récupère une liste de domaine et l'enregistre dans une autre liste. Comment puis-je passer à la liste param nouvelleComment régler les paramètres max et offset dans la liste dans Grails

le code ci-dessous: ressemble aime

params.max = Math.min(max ?: 10, 100) 
     params.offset = params.offset as Integer ?: 0 



     Calendar date = Calendar.getInstance(); 
     date.set(Calendar.DAY_OF_MONTH, 1); 
     Calendar date2 = Calendar.getInstance(); 
     date2.set(Calendar.DAY_OF_MONTH, date.getActualMaximum(Calendar.DAY_OF_MONTH)); 

     def MonthStartDate =date.getTime() 
     def MonthEndDate =date2.getTime() 
     int monthMaxDays = MonthEndDate - MonthStartDate + 1 


     Calendar cal0 = Calendar.getInstance(); 
     cal0.set(Calendar.DAY_OF_MONTH,1); 
     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.DAY_OF_MONTH,1); 
    def myNewList = new ArrayList<DomainABCTYPE>() 
      def perDayDates = new ArrayList<Date>() 




      for(int i=0;i<monthMaxDays;i++) { 
       Date date1 = cal0.getTime(); 
       cal.add(Calendar.DATE, 1); 
       Date calDate = cal.getTime(); 


       def myListPerDay = DomainABCTYPE.findAllByStartDateLessThanAndEndDateGreaterThanEquals(calDate, date1, params) 



       int k=0 
       for(;k < myListPerDay .size(); k++){ 
        myNewList.add(myListPerDay .get(k)) 
        perDayDates.add(date1) 
        } 


       cal0.add(Calendar.DATE, 1) 


      } 


      render(view: "index", model:[ListInstance:myNewList ,ListCount:myNewList.size(), DatesList:perDayDates, MonthStartDate: MonthStartDate, MonthEndDate: MonthEndDate]) 

     } 

Répondre

0

Have a look here sur la façon dont vous pouvez passer directement dans params paginations une méthode GORM trouver.

J'ai brièvement regardé votre code en toute honnêteté tout semble fou, vous calculez une date diff puis itérez la date diff pour trouver des enregistrements.

Pourquoi ne pas écrire un HQL query et utiliser between

where a.date BETWEEN :date1 AND :date2 

Bref tout cela pourrait être fait avec 1 recherche et aucune recherche d'itérations imbriquées devrait être nécessaire

+0

Je dois vérifier les données pour chaque jour de un mois ... Comment écrire le gorm pour vérifier une gamme de dates comme du 1er au 30 qui date se situe dans la plage de deux colonnes startdate et enddate .. ie je l'utilise pour la boucle ici – dhS

+0

tout dépend de ce que vous êtes la collecte par jour, le comptage d'occurance, l'enregistrement réel dans un jour donné de toute façon, il y a encore d'autres choses Cela pourrait réduire les exigences db comme ci-dessus soit en le faisant une fois puis en construisant une carte propre ou en pensant plus clairement à ce qui est en train d'être réalisé et si une requête HQL ou même un SQL brut suffirait dans une requête – Vahid