From d96c9cae41eca4c22aa7c3c7868870f1bfbeb64f Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 29 Apr 2022 18:38:28 +0300 Subject: [PATCH] HOTFIX: RED-3800 ocr all files that have been ocrd --- .../entity/dossier/DossierEntity.java | 3 ++ .../MigrationPersistenceService.java | 9 ++--- .../internal/AdminInterfaceController.java | 40 +++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java index 0defeeea8..f74a1767b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java @@ -113,4 +113,7 @@ public class DossierEntity { @Column(updatable = false, insertable = false, name = "dossier_status_id") private String dossierStatusId; + public boolean isDeleted() { + return softDeletedTime != null || hardDeletedTime != null; + } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/MigrationPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/MigrationPersistenceService.java index 87e2b1956..0870ea4da 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/MigrationPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/MigrationPersistenceService.java @@ -29,20 +29,17 @@ public class MigrationPersistenceService { var migrations = migrationRepository.findByVersionGreaterThan(lastProcessedVersion); if (migrations == null || migrations.isEmpty()) { - if(version > lastProcessedVersion){ - return false; - } - return true; + return version <= lastProcessedVersion; } - return migrations.stream().filter(m -> m.getVersion() == version).findFirst().isPresent(); + return migrations.stream().anyMatch(m -> m.getVersion() == version); } public Long getLatestProcessedVersion() { var migrations = migrationRepository.findAll(); - if (migrations == null || migrations.isEmpty()) { + if (migrations.isEmpty()) { return null; } return migrations.stream().sorted(Comparator.comparing(MigrationEntity::getVersion).reversed()).collect(Collectors.toList()).get(0).getVersion(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/internal/AdminInterfaceController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/internal/AdminInterfaceController.java index f21df07c9..39d99ae9b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/internal/AdminInterfaceController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/internal/AdminInterfaceController.java @@ -1,16 +1,22 @@ package com.iqser.red.service.peristence.v1.server.internal; +import com.iqser.red.service.peristence.v1.server.service.DossierService; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; import com.iqser.red.service.peristence.v1.server.service.FileStatusService; import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.stream.Collectors; + +@Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/private/admin") @@ -20,6 +26,8 @@ public class AdminInterfaceController { private final FileStatusService fileStatusService; private final FileManagementServiceSettings fileManagementServiceSettings; + private final DossierService dossierService; + @PostMapping("/reset-file") public void resetFile(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) { @@ -53,4 +61,36 @@ public class AdminInterfaceController { } + + @PostMapping("/ocr-all-files-that-have-already-been-ocrd") + public void forceOCR(@RequestParam(value = "dryRun", defaultValue = "true") boolean dryRun) { + + var dossiers = dossierService.getAllDossiers(); + for (var dossier : dossiers) { + if (!dossier.isDeleted()) { + var files = fileStatusService.getActiveFiles(dossier.getId()); + var filesThatRequireOCR = files.stream() + .filter(f -> !f.isExcluded()) + .filter(f -> !f.isExcludedFromAutomaticAnalysis()) + .filter(f -> !f.isSoftOrHardDeleted()) + .filter(f -> f.getLastOCRTime() != null) + .filter(f -> f.getWorkflowStatus() != WorkflowStatus.APPROVED).collect(Collectors.toList()); + + + for (var file : filesThatRequireOCR) { + log.info("Will OCR file: {} from dossier {} with status {} and processing status {} with last OCR time {}", + file.getId(), file.getDossierId(), file.getWorkflowStatus(), file.getProcessingStatus(), file.getLastOCRTime()); + + if (!dryRun) { + fileStatusService.updateLastOCRTime(file.getId()); + fileStatusService.setStatusOcrProcessing(file.getDossierId(), file.getId()); + } + + } + + + } + } + } + }