This commit is contained in:
etreschenkov 2026-02-04 10:07:56 +03:00
parent be7876e90f
commit 7f2b1081d3
2 changed files with 24 additions and 3 deletions

View file

@ -10,7 +10,7 @@
</parent> </parent>
<groupId>ru.nbch</groupId> <groupId>ru.nbch</groupId>
<artifactId>credit-tracker</artifactId> <artifactId>credit-tracker</artifactId>
<version>2.1</version> <version>2.2</version>
<name>credit_tracker</name> <name>credit_tracker</name>
<description>Credit Tracker Application</description> <description>Credit Tracker Application</description>

View file

@ -7,7 +7,9 @@ import java.nio.file.Path;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@ -227,6 +229,7 @@ public class MonitoringService {
private List<Subject> processPersons(List<Person> persons, UserPackage userPackage) { private List<Subject> processPersons(List<Person> persons, UserPackage userPackage) {
List<Subject> subjects = new ArrayList<>(); List<Subject> subjects = new ArrayList<>();
Map<Long, SubjectRepInfo> subjectRepInfoMap = new HashMap<>();
for (Person person : persons) { for (Person person : persons) {
Signals signals = new Signals(); Signals signals = new Signals();
for (Inquiry inquiry : person.getInquiries()) { for (Inquiry inquiry : person.getInquiries()) {
@ -245,8 +248,17 @@ public class MonitoringService {
// Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные // Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные
if (!signals.getSignals().isEmpty()) { if (!signals.getSignals().isEmpty()) {
PackagesRecordsMap packagesRecord = packageRecordsService.findPackageRecordsById(person.getUid()); PackagesRecordsMap packagesRecord;
PhonesMap cacheByPhone = packageRecordsService.findCachedByPhone(Long.valueOf(packagesRecord.getPhone())); PhonesMap cacheByPhone;
if (subjectRepInfoMap.containsKey(person.getUid())) {
SubjectRepInfo subjectRepInfo = subjectRepInfoMap.get(person.getUid());
packagesRecord = subjectRepInfo.packagesRecord;
cacheByPhone = subjectRepInfo.cacheByPhone;
} else {
packagesRecord = packageRecordsService.findPackageRecordsById(person.getUid());
cacheByPhone = packageRecordsService.findCachedByPhone(Long.valueOf(packagesRecord.getPhone()));
subjectRepInfoMap.put(person.getUid(), new SubjectRepInfo(packagesRecord, cacheByPhone));
}
if (cacheByPhone != null) { if (cacheByPhone != null) {
Subject subject = new Subject(); Subject subject = new Subject();
subject.setId(packagesRecord.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга) subject.setId(packagesRecord.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга)
@ -299,4 +311,13 @@ public class MonitoringService {
log.info("Signal hits updated for package {}", userPackage.getPackageName()); log.info("Signal hits updated for package {}", userPackage.getPackageName());
} }
private class SubjectRepInfo {
private final PackagesRecordsMap packagesRecord;
private final PhonesMap cacheByPhone;
private SubjectRepInfo(PackagesRecordsMap packagesRecord, PhonesMap cacheByPhone) {
this.packagesRecord = packagesRecord;
this.cacheByPhone = cacheByPhone;
}
}
} }