/**
* @author Alan Rodrigues
* @param java.util.Date - O dia da semana ao qual devemos nos basear
* @return java.util.Map
*  key: String monday - value: Date - o primeiro dia daquela semana
*  key: String sunday - value: Date - o último dia daquela semana
*/
Map criarSemanaDoDia(Date dia) {
    if(!dia) {
        dia = new Date()
    }
    
    def monday = dia
    def sunday = dia
        
    use(groovy.time.TimeCategory) {
        // andamos pra trás até chegar em uma segunda-feira
        while(monday[Calendar.DAY_OF_WEEK] != Calendar.MONDAY) {
            monday = monday - 1.days
        }
        monday = monday.clearTime() // zera o horário
        
        // andamos pra frente até chegar em um domingo
        while(sunday[Calendar.DAY_OF_WEEK] != Calendar.SUNDAY) {
            sunday = sunday + 1.days
        }
        sunday = sunday.clearTime()
        sunday = sunday + 23.hours + 59.minutes + 59.seconds
    }
    
    [monday: monday, sunday: sunday]
}
 
 resolvemos esse problema de forma simples e clara com poucas linhas de código.