diff --git a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java index 6c39c0f9ce43251d8ae90fbbe7cb8c98b0e1e9eb..42ac71b7ad8ca214bed66537955b94b2cb9a6f72 100644 --- a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java +++ b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/dsl/VitamQueryHelper.java @@ -50,8 +50,9 @@ import fr.gouv.vitamui.commons.api.domain.DirectionDto; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; -import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -61,11 +62,9 @@ import java.util.Set; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.and; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.eq; -import static fr.gouv.vitam.common.database.builder.query.QueryHelper.exists; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.gt; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.in; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lt; -import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lte; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.matchPhrasePrefix; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.ne; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.nin; @@ -286,24 +285,24 @@ public class VitamQueryHelper { ObjectMapper mapper = new ObjectMapper(); AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval = mapper.convertValue(value, new TypeReference<>() {}); - SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_FORMAT).withZone(ZoneOffset.UTC); String dateMinStr = dateInterval.getEndDateMin(); String dateMaxStr = dateInterval.getEndDateMax(); - if(dateMinStr != null && dateMaxStr == null) { - query.add(lte(END_DATE, formatter.parse(dateMinStr))); + if (dateMinStr != null && dateMaxStr == null) { + query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.now().toString(), true)); } - if(dateMinStr == null && dateMaxStr != null) { - query.add(lte(END_DATE, formatter.parse(dateMaxStr))); + if (dateMinStr == null && dateMaxStr != null) { + query.add(range(END_DATE, LocalDate.now().toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true)); } - if(dateMinStr != null && dateMaxStr != null) { - query.add(range(END_DATE, formatter.parse(dateMinStr), true, formatter.parse(dateMaxStr), false)); + if (dateMinStr != null && dateMaxStr != null) { + query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true)); } - } catch (InvalidCreateOperationException | ParseException e) { - LOGGER.error("Can not find binding for StartDate key: \n {}", e); + } catch (InvalidCreateOperationException e) { + LOGGER.error("Can not find binding for EndDate key: \n {}", e); } } diff --git a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java index a0b3b9509f2695878d870b1365961e50cd4e1a2c..fedef9151215013158e38a6cf9c6c37a5b8cfe67 100644 --- a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java +++ b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/accessionregister/summary/AccessionRegisterSummaryInternalService.java @@ -68,7 +68,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -80,7 +82,6 @@ import java.util.stream.Collectors; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.and; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.eq; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.in; -import static fr.gouv.vitam.common.database.builder.query.QueryHelper.lte; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.ne; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.nin; import static fr.gouv.vitam.common.database.builder.query.QueryHelper.range; @@ -214,7 +215,7 @@ public class AccessionRegisterSummaryInternalService { query.add(in(STATUS, stringValues.toArray(new String[] {}))); } - addStartDateToQuery(query, detailsSearchDto.getDateInterval()); + addEndDateToQuery(query, detailsSearchDto.getDateInterval()); if(detailsSearchDto.getAdvancedSearch() != null) { AccessionRegisterDetailsSearchStatsDto.AdvancedSearchData advancedSearch = detailsSearchDto.getAdvancedSearch(); @@ -254,24 +255,24 @@ public class AccessionRegisterSummaryInternalService { } } - private static void addStartDateToQuery(BooleanQuery query, AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval) - throws ParseException, InvalidCreateOperationException { + private static void addEndDateToQuery(BooleanQuery query, AccessionRegisterDetailsSearchStatsDto.EndDateInterval dateInterval) + throws InvalidCreateOperationException { if(dateInterval != null) { - SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern(DATE_FORMAT).withZone(ZoneOffset.UTC); String dateMinStr = dateInterval.getEndDateMin(); String dateMaxStr = dateInterval.getEndDateMax(); if (dateMinStr != null && dateMaxStr == null) { - query.add(lte(END_DATE, formatter.parse(dateMinStr))); + query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.now().toString(), true)); } if (dateMinStr == null && dateMaxStr != null) { - query.add(lte(END_DATE, formatter.parse(dateMaxStr))); + query.add(range(END_DATE, LocalDate.now().toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true)); } if (dateMinStr != null && dateMaxStr != null) { - query.add(range(END_DATE, formatter.parse(dateMinStr), true, formatter.parse(dateMaxStr), false)); + query.add(range(END_DATE, LocalDate.parse(dateMinStr, dtf).toString(), true, LocalDate.parse(dateMaxStr, dtf).toString(), true)); } } } diff --git a/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts b/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts index b4b70e38a2680675483138f261dd390070af3619..87f03c08f29efa193d4b5d8795af5331b88d7cac 100644 --- a/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts +++ b/ui/ui-frontend/projects/referential/src/app/accession-register/accession-register-list/accession-register-list.component.ts @@ -56,7 +56,7 @@ export class AccessionRegisterListComponent extends InfiniteScrollTable<Accessio filterDebounceTimeMs = 400; direction = Direction.DESCENDANT; - orderBy = 'StartDate'; + orderBy = 'EndDate'; private filterChange = new BehaviorSubject<{ [key: string]: any[] }>({}); private searchChange = new BehaviorSubject<string>(null);