2016-07-15 2 views
2

ラムダ式フィルタを使用してテーブルから単一の列から従業員の出席記録を取得するためのスプリングMCUコントローラ用のコードはほとんど書いていません。 しかし、Grailsコントローラで同じロジックを適用したいと思います。GrailsでJavaラムダ式フィルタリングを適用する方法

screen screeを見てください。

おかげで、私は(レコードを数える)、あなたのような何かを試みることができるそれを正しく理解すれば

答えて

1

:あなたのケースでは

long totalAbsentDays 
= presentMonthAtten.findAll{ it.status == Constant.ABSENT }.size() 
+0

は微ようだが、中括弧の後に意味は「それ」は何ですか? – Ranjan

+0

私はそれを持って感謝します。 – Ranjan

+0

これは自動的に使用可能なデフォルトの反復子変数です。また、 'presentMonthAtten.findAll {record-> record.status == Constant.ABSENT} .size()' – susi

3

同じコレクション4(反復処理するストレートフォワードな方法! !)と4つの新しいコレクションをスポーンすることも、最もパフォーマンスの低いコレクションです。

私はこのようにそれを置くところ:

import static Constant.* 

def data = presentMonthAtten.inject([:].withDefault{ 0 }){ accum, record -> 
    switch(record.status){ 
    case ABSENT: accum.absent++; break 
    case PRESENT: accum.present++; break 
    // other cases 
    } 
    accum 
} 

//.... 
attendDashBoard.currentMonthAbsentAttn = data.absent.toString() 
+0

うわー。私はこれを実装しようとしている。もし何か問題に直面すれば、私はあなたに知らせて、ただ案内する。 – Ranjan

+0

ここでは例外がありますが、そのようなプロパティはありません:クラスのmaterialStatus:java.lang.String === poStatus = PurchaseOrder.executeQuery( 'PurchaseOrderからMaterialStatusを選択') def data = poStatus.inject([:]。withDefault {0}){accum、record - > switch(record.materialStatus){、私の購入注文calssには変数materialStatusがあります。 – Ranjan

+0

Stringオブジェクトの 'materialStatus'プロパティにアクセスしようとしています。 'switch(record){...} 'を使用する必要があります。 – injecteer

関連する問題