dossier stats optimization
This commit is contained in:
parent
44347564c7
commit
9c097475ff
@ -5,12 +5,14 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStats;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
@ -23,10 +25,29 @@ public class DossierStatsService {
|
||||
private final DossierService dossierService;
|
||||
private final FileStatusService fileStatusService;
|
||||
|
||||
private Map<String, DossierStats> dossierStatsMap = new HashMap<>();
|
||||
|
||||
|
||||
@Scheduled(fixedDelay = 10000, initialDelay = 1000)
|
||||
public void computeDossierStats() {
|
||||
log.info("Computing Dossier Stats ... ");
|
||||
long start = System.currentTimeMillis();
|
||||
Map<String, DossierStats> dossierStatsComputeMap = new HashMap<>();
|
||||
dossierService.getAllDossiers().forEach(d -> dossierStatsComputeMap.put(d.getId(), computeDossierStats(d)));
|
||||
dossierStatsMap.clear();
|
||||
dossierStatsMap = dossierStatsComputeMap;
|
||||
log.info("Dossier Stats Computed in {}ms", (System.currentTimeMillis() - start));
|
||||
}
|
||||
|
||||
public DossierStats getDossierStats(String dossierId) {
|
||||
return dossierStatsMap.getOrDefault(dossierId, computeDossierStats(dossierService.getDossierById(dossierId)));
|
||||
}
|
||||
|
||||
private DossierStats computeDossierStats(DossierEntity dossierEntity) {
|
||||
var dossierId = dossierEntity.getId();
|
||||
|
||||
DossierStats dossierStats = new DossierStats();
|
||||
// get the dossier
|
||||
DossierEntity dossierEntity = dossierService.getDossierById(dossierId);
|
||||
|
||||
if (dossierEntity.getStatus().equals(DossierStatus.DELETED)) {
|
||||
throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId));
|
||||
}
|
||||
@ -54,8 +75,8 @@ public class DossierStatsService {
|
||||
.filter(f -> !f.isHasSuggestions())
|
||||
.filter(f -> !f.isHasUpdates())
|
||||
.findAny().ifPresent(
|
||||
(v) -> dossierStats.setHasNoFlagsFilePresent(true)
|
||||
);
|
||||
(v) -> dossierStats.setHasNoFlagsFilePresent(true)
|
||||
);
|
||||
var fileCountPerProcessingStatus = files.stream().collect(Collectors.toMap(FileEntity::getProcessingStatus, e -> 1, Math::addExact));
|
||||
dossierStats.setFileCountPerProcessingStatus(fileCountPerProcessingStatus);
|
||||
|
||||
|
||||
@ -32,8 +32,6 @@ public class MetricsPrinterService {
|
||||
}
|
||||
});
|
||||
|
||||
System.out.println("Metrics: "+metrics);
|
||||
|
||||
double count = 0;
|
||||
double total = 0;
|
||||
var counterResults = new ArrayList<Result>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user