List<Service> services = (List) epreuveInfos.collect { it.services }.flatten().\r
findAll { it != null }.unique { it.id }\r
\r
+ Map<Long, Integer> mapMatiereIdOrdre = getMapMatiereIdOrdre(services, periode)\r
+\r
List<ResultatEleveServicePeriode> resultats = resultatEleveServicePeriodeService.\r
internalFindAll(\r
[eleve.autorite],\r
\r
switch (epreuveInfo.epreuve.modeCalculNote) {\r
case BrevetModeCalculNote.PREMIERE_TROUVEE :\r
- Matiere matiere = (Matiere) moyenneParMatierePourEpreuve.keySet().toList().first()\r
+ List<Matiere> matieres = moyenneParMatierePourEpreuve.keySet().toList()\r
+ matieres.sort{m1,m2 -> mapMatiereIdOrdre.get(m1.id) <=> mapMatiereIdOrdre.get(m2.id)}\r
+ Matiere matiere = (Matiere) matieres.first()\r
epreuveInfo.moyenne = (BigDecimal) moyenneParMatierePourEpreuve.get(matiere)\r
epreuveInfo.matieres = [matiere]\r
break\r
}\r
}\r
\r
+ private Map<Long, Integer> getMapMatiereIdOrdre(List<Service> services, Periode periode) {\r
+ services = notesServiceService.trieServices(services, periode)\r
+\r
+ Map<Service, Integer> mapServiceOrdre = [:]\r
+\r
+ services.eachWithIndex {Service service, Integer ordre ->\r
+ mapServiceOrdre.put(service, ordre)\r
+ }\r
+\r
+ Map<Long, Integer> mapMatiereIdOrdre = [:]\r
+\r
+ services.groupBy{it.matiere}.each{Matiere matiere, List<Service> servicesMatiere ->\r
+ List<Integer> ordres = servicesMatiere.collect{mapServiceOrdre.get(it)}\r
+ mapMatiereIdOrdre.put(matiere.id, ordres.min())\r
+ }\r
+\r
+ return mapMatiereIdOrdre\r
+ }\r
+\r
private findServiceSport(StructureEnseignement classe) {\r
return Service.findByStructureEnseignementAndChoisiPourSport(classe, true)\r
}\r