SI-2280 Anzeige der FailureInfos nicht mit Status Beendet oder cancelled wenn resupplied mehr als 4 Wochen in der Vergangenheit liegt
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/FailureInformationRepository.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/FailureInformationRepository.java index bfbb4e3..51621ef 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/FailureInformationRepository.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/FailureInformationRepository.java
@@ -23,13 +23,19 @@ import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Date; import java.util.List; import java.util.Optional; import java.util.UUID; @Repository public interface FailureInformationRepository extends PagingAndSortingRepository<TblFailureInformation, Long > { - Page<TblFailureInformation> findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(Pageable pageable); // NOSONAR + + @Query("SELECT a from TblFailureInformation a WHERE a.tblFailureInformationCondensed IS NULL " + + "AND ( (a.refStatusIntern.id NOT IN (:statusClosedId, :statusCancelledId) OR a.failureEndResupplied IS NULL ) OR " + + "(a.refStatusIntern.id IN (:statusClosedId, :statusCancelledId) AND a.failureEndResupplied >= :dateNowFourWeeksAgo) ) ORDER BY a.failureBegin ASC") + Page<TblFailureInformation> findByTblFailureInformationForDisplay(long statusClosedId, long statusCancelledId, + Date dateNowFourWeeksAgo, Pageable pageable); // NOSONAR Optional<TblFailureInformation> findByUuid(UUID uuid);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java index 2f842ec..0c035ae 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
@@ -202,8 +202,8 @@ List<TblFailureInformation> tblFailureInfosVeroeffentlicht = failureInformationRepository .findByPublicationStatus(Constants.PUB_STATUS_VEROEFFENTLICHT); - Set<UUID> currTableViewUuidSet = failureInformationRepository - .findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(Pageable.unpaged()) + Set<UUID> currTableViewUuidSet = failureInformationService + .findFailureInformationsForDisplay(Pageable.unpaged()) .stream() .map(TblFailureInformation::getUuid) .collect(Collectors.toSet());
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java index ee58a47..29b0592 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentService.java
@@ -41,6 +41,9 @@ public class FailureInformationReminderMailSentService { @Autowired + private FailureInformationService failureInformationService; + + @Autowired private FailureInformationReminderMailSentRepository failureInformationReminderMailSentRepository; @Autowired @@ -62,8 +65,8 @@ long minutesBefore; public Boolean displayStatusChangeReminderAndSendMails() { - Page<FailureInformationDto> failureInfoPage = failureInformationRepository - .findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(PageRequest.of(0, 9999999)) + Page<FailureInformationDto> failureInfoPage = failureInformationService + .findFailureInformationsForDisplay(PageRequest.of(0, 9999999)) .map(failureInformationMapper::toFailureInformationDto); LocalDateTime reminderDate = LocalDateTime.now().plusMinutes(minutesBefore);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java index 229ce91..e67bc70 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationService.java
@@ -28,8 +28,30 @@ import org.eclipse.openk.gridfailureinformation.exceptions.OperationDeniedException; import org.eclipse.openk.gridfailureinformation.mapper.FailureInformationMapper; import org.eclipse.openk.gridfailureinformation.mapper.FailureInformationPublicationChannelMapper; -import org.eclipse.openk.gridfailureinformation.model.*; -import org.eclipse.openk.gridfailureinformation.repository.*; +import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation; +import org.eclipse.openk.gridfailureinformation.model.RefBranch; +import org.eclipse.openk.gridfailureinformation.model.RefExpectedReason; +import org.eclipse.openk.gridfailureinformation.model.RefStatus; +import org.eclipse.openk.gridfailureinformation.model.TblAddress; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationPublicationChannel; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationReminderMailSent; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationStation; +import org.eclipse.openk.gridfailureinformation.model.TblStation; +import org.eclipse.openk.gridfailureinformation.repository.AddressRepository; +import org.eclipse.openk.gridfailureinformation.repository.BranchRepository; +import org.eclipse.openk.gridfailureinformation.repository.DistributionGroupRepository; +import org.eclipse.openk.gridfailureinformation.repository.ExpectedReasonRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureClassificationRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationDistributionGroupRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationPublicationChannelRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationReminderMailSentRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationStationRepository; +import org.eclipse.openk.gridfailureinformation.repository.HistFailureInformationRepository; +import org.eclipse.openk.gridfailureinformation.repository.RadiusRepository; +import org.eclipse.openk.gridfailureinformation.repository.StationRepository; +import org.eclipse.openk.gridfailureinformation.repository.StatusRepository; import org.eclipse.openk.gridfailureinformation.util.ExternalStatusCalculator; import org.eclipse.openk.gridfailureinformation.util.GrahamScan; import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto; @@ -43,8 +65,17 @@ import java.awt.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.HashSet; +import java.util.LinkedList; import java.util.List; -import java.util.*; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; @Log4j2 @@ -117,14 +148,24 @@ } public Page<FailureInformationDto> findFailureInformations(Pageable pageable) { - Page<FailureInformationDto> retPage = failureInformationRepository - .findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(pageable) + Page<FailureInformationDto> retPage = findFailureInformationsForDisplay(pageable) .map(failureInformationMapper::toFailureInformationDto); retPage.getContent().forEach(this::enrichFailureInfo); return retPage; } + public Page<TblFailureInformation> findFailureInformationsForDisplay(Pageable pageable) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime ldt = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), 0, 0, 0); + ldt = ldt.minusWeeks(4); + Date nowMinusFourWeeks = Date.from(ldt.atZone(ZoneId.of("UTC")).toInstant()); + return failureInformationRepository.findByTblFailureInformationForDisplay( + GfiProcessState.COMPLETED.getStatusValue(), + GfiProcessState.CANCELED.getStatusValue(), + nowMinusFourWeeks, pageable); + } + public List<FailureInformationDto> findFailureInformationsByCondensedUuid(UUID uuid) { List<FailureInformationDto> listFailureInformationDtos = new LinkedList<>(); @@ -500,7 +541,7 @@ final List<TblFailureInformationStation> byFkTblFailureInformation = failureInformationStationRepository.findByFkTblFailureInformation(condensedFailureInformation.getId()); Set<String> stationsOfOldExistingCondensedFi = byFkTblFailureInformation.stream() - .map( x -> x.getStationStationId() ) + .map( TblFailureInformationStation::getStationStationId ) .collect(Collectors.toSet()); // store the set for the newly created failure info
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java index a8538f3..f243ca5 100644 --- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java +++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationReminderMailSentServiceTest.java
@@ -57,6 +57,9 @@ private FailureInformationReminderMailSentService failureInformationReminderMailSentService; @MockBean + private FailureInformationService failureInformationService; + + @MockBean private FailureInformationRepository failureInformationRepository; @MockBean @@ -77,7 +80,7 @@ mockfailurePage.getContent().stream().findFirst().get().setFailureEndPlanned(reminderDate); TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation)); when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty()); @@ -92,7 +95,7 @@ Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage(); RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); Boolean reminderIsDisplayed = failureInformationReminderMailSentService.displayStatusChangeReminderAndSendMails(); @@ -110,7 +113,7 @@ mockfailurePage.getContent().stream().findFirst().get().setRefStatusIntern(mockRefStatus); TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation)); when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty()); @@ -130,7 +133,7 @@ mockfailurePage.getContent().stream().findFirst().get().setRefStatusIntern(mockRefStatus); TblFailureInformation tblFailureInformation = MockDataHelper.mockTblFailureInformation(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(failureInformationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblFailureInformation)); when(failureInformationReminderMailSentRepository.findByTblFailureInformation(any(TblFailureInformation.class))).thenReturn(Optional.empty()); @@ -149,7 +152,7 @@ RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated(); List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true); @@ -165,7 +168,7 @@ RefStatus mockRefStatus = MockDataHelper.mockRefStatusCreated(); List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true); @@ -227,9 +230,8 @@ Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage(); RefStatus mockRefStatus = MockDataHelper.mockRefStatusCOMPLETED(); mockfailurePage.getContent().stream().forEach(f -> f.setRefStatusIntern(null)); - List<FailureInformationDto> failureInformationDtoList = MockDataHelper.mockGridFailureInformationDtos(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationService.findFailureInformationsForDisplay(any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findById(any(Long.class))).thenReturn(Optional.of(mockRefStatus)); when(exportService.exportFailureInformationReminderMail(any(UUID.class))).thenReturn(true);
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java index a63d6eb..18cac8d 100644 --- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java +++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/FailureInformationServiceTest.java
@@ -21,13 +21,38 @@ import org.eclipse.openk.gridfailureinformation.exceptions.BadRequestException; import org.eclipse.openk.gridfailureinformation.exceptions.NotFoundException; import org.eclipse.openk.gridfailureinformation.exceptions.OperationDeniedException; -import org.eclipse.openk.gridfailureinformation.model.*; -import org.eclipse.openk.gridfailureinformation.repository.*; +import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation; +import org.eclipse.openk.gridfailureinformation.model.RefBranch; +import org.eclipse.openk.gridfailureinformation.model.RefExpectedReason; +import org.eclipse.openk.gridfailureinformation.model.RefFailureClassification; +import org.eclipse.openk.gridfailureinformation.model.RefRadius; +import org.eclipse.openk.gridfailureinformation.model.RefStatus; +import org.eclipse.openk.gridfailureinformation.model.TblAddress; +import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroup; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationDistributionGroup; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationPublicationChannel; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationReminderMailSent; +import org.eclipse.openk.gridfailureinformation.model.TblFailureInformationStation; +import org.eclipse.openk.gridfailureinformation.model.TblStation; +import org.eclipse.openk.gridfailureinformation.repository.AddressRepository; +import org.eclipse.openk.gridfailureinformation.repository.BranchRepository; +import org.eclipse.openk.gridfailureinformation.repository.DistributionGroupRepository; +import org.eclipse.openk.gridfailureinformation.repository.ExpectedReasonRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureClassificationRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationDistributionGroupRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationPublicationChannelRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationReminderMailSentRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationRepository; +import org.eclipse.openk.gridfailureinformation.repository.FailureInformationStationRepository; +import org.eclipse.openk.gridfailureinformation.repository.HistFailureInformationRepository; +import org.eclipse.openk.gridfailureinformation.repository.RadiusRepository; +import org.eclipse.openk.gridfailureinformation.repository.StationRepository; +import org.eclipse.openk.gridfailureinformation.repository.StatusRepository; import org.eclipse.openk.gridfailureinformation.support.MockDataHelper; import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto; import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationPublicationChannelDto; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.stubbing.Answer; import org.springframework.beans.factory.annotation.Autowired; @@ -40,13 +65,21 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Optional; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.when; //import java.sql.Date; @Log4j2 @@ -90,7 +123,7 @@ public void shouldFindFailureInformations() { Page<TblFailureInformation> mockfailurePage = MockDataHelper.mockTblFailureInformationPage(); RefStatus refStatus = MockDataHelper.mockRefStatusCreated(); - when(failureInformationRepository.findByTblFailureInformationCondensedIdIsNullOrderByFailureBeginDescIdAsc(any(Pageable.class))).thenReturn(mockfailurePage); + when(failureInformationRepository.findByTblFailureInformationForDisplay(anyLong(), anyLong(), any(Date.class), any(Pageable.class))).thenReturn(mockfailurePage); when(statusRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refStatus)); Page<FailureInformationDto> retPage = failureInformationService.findFailureInformations(Pageable.unpaged());