RED-3899 Dossier Template stats

This commit is contained in:
Timo Bejan 2022-05-10 08:25:53 +03:00
parent 3608c4bc0d
commit 4f814d4dc4
4 changed files with 23 additions and 24 deletions

View File

@ -1,18 +1,5 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
@ -22,8 +9,18 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.time.temporal.ChronoUnit;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@ -165,7 +162,7 @@ public class FileStatusPersistenceService {
var fileAttributeEntities = convertFileAttributes(dossierId, file, fileAttributes);
fileAttributesRepository.saveAllAndFlush(fileAttributeEntities);
fileRepository.updateLastAttributeChangeDate(fileId,OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
fileRepository.updateLastAttributeChangeDate(fileId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}, () -> {
throw new NotFoundException("Unknown file=" + fileId);
@ -329,7 +326,7 @@ public class FileStatusPersistenceService {
.findAny().map(FileAttributeConfigEntity::getId)
.orElseThrow(() -> new BadRequestException("Invalid File Attribute Id")));
fa.setFileAttributeId(id);
fa.setValue(StringUtils.isBlank(entry.getValue())? null : entry.getValue());
fa.setValue(StringUtils.isBlank(entry.getValue()) ? null : entry.getValue());
return fa;
}).collect(Collectors.toList());
}
@ -354,9 +351,9 @@ public class FileStatusPersistenceService {
}
public int countSoftDeletedFiles(String dossierId) {
public int countSoftDeletedFiles(String dossierTemplateId) {
return fileRepository.countSoftDeletedFiles(dossierId);
return fileRepository.countSoftDeletedFiles(dossierTemplateId);
}

View File

@ -133,8 +133,10 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
int overwriteFile(String fileId, String filename, String uploader, ProcessingStatus processingStatus, WorkflowStatus workflowStatus, OffsetDateTime lastUploaded,
OffsetDateTime lastUpdated, boolean hasHighlights);
@Query("select count(f) from FileEntity f where f.dossierId = :dossierId and f.deleted is not null and f.hardDeletedTime is null")
int countSoftDeletedFiles(String dossierId);
@Query("select count(f) from FileEntity f inner join DossierEntity d on d.id = f.dossierId where d.dossierTemplateId = :dossierTemplateId" +
" and ((f.deleted is not null and f.hardDeletedTime is null) or " +
" (d.softDeletedTime is not null and d.hardDeletedTime is null)) and d.archivedTime is null")
int countSoftDeletedFiles(String dossierTemplateId);
@Query("select distinct f.dossierId from FileEntity f where f.lastUpdated > :since")
List<String> findDossierChangeByLastUpdatedIsAfter(OffsetDateTime since);
@ -182,7 +184,7 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
FilePageCountsProjection countPages(String dossierTemplateId);
@Query("select count(f) from FileEntity f inner join DossierEntity d on d.id = f.dossierId where " +
"f.hardDeletedTime is not null and f.deleted is not null and " +
"f.hardDeletedTime is null and f.deleted is null and " +
"d.dossierTemplateId = :dossierTemplateId and " +
"d.softDeletedTime is null and d.hardDeletedTime is null and d.archivedTime is null")
int countActiveFiles(String dossierTemplateId);

View File

@ -83,7 +83,7 @@ public class DossierTemplateStatsService {
dts.setNumberOfActiveDossiers(dossierRepository.countActive(dossierTemplateId));
dts.setNumberOfDeletedDossiers(dossierRepository.countSofDeleted(dossierTemplateId));
dts.setNumberOfActiveFiles(fileRepository.countActiveFiles(dossierTemplateId));
dts.setNumberOfActiveFiles(fileRepository.countSoftDeletedFiles(dossierTemplateId));
dts.setNumberOfSoftDeletedFiles(fileRepository.countSoftDeletedFiles(dossierTemplateId));
var processingCounts = fileRepository.countFilesByProcessingStatus(dossierTemplateId);
var workflowCounts = fileRepository.countFilesByWorkflowStatus(dossierTemplateId);

View File

@ -41,7 +41,7 @@ public class AutomaticAnalysisJob implements Job {
.getMessageCount(), redactionQueueInfo.getConsumerCount());
// only 1 file in queue
var consumerCount = redactionQueueInfo.getConsumerCount();
if (redactionQueueInfo.getMessageCount() <= consumerCount) {
if (redactionQueueInfo.getMessageCount() <= consumerCount * 5) {
// queue up 5 files
var allStatuses = getAllRelevantStatuses();
@ -58,7 +58,7 @@ public class AutomaticAnalysisJob implements Job {
if (next.isFullAnalysisRequired()) {
log.info("Queued file: {} for automatic full analysis! ", next.getFilename());
fileStatusService.setStatusFullReprocess(next.getDossierId(), next.getId(), false, true);
fileStatusService.setStatusFullReprocess(next.getDossierId(), next.getId(), false, false);
} else if (next.isReanalysisRequired()) {
log.info("Queued file: {} for automatic reanalysis! ", next.getFilename());
fileStatusService.setStatusReprocess(next.getDossierId(), next.getId(), false);