Compare commits
2 commits
master
...
trace_logs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efb89df0e1 | ||
|
|
254b13827b |
8 changed files with 91 additions and 19 deletions
|
|
@ -3,21 +3,18 @@ package ru.nbch.credit_tracker;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.context.ConfigurableApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import ru.nbch.credit_tracker.service.MonitoringService;
|
|
||||||
import ru.nbch.credit_tracker.service.UpdateProcessingPackagesService;
|
|
||||||
import ru.nbch.credit_tracker.service.UpdatingFlagsService;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class CreditTrackerApplication {
|
public class CreditTrackerApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args);
|
ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args);
|
||||||
UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class);
|
// UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class);
|
||||||
MonitoringService monitoringService = ctx.getBean(MonitoringService.class);
|
// MonitoringService monitoringService = ctx.getBean(MonitoringService.class);
|
||||||
UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class);
|
// UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class);
|
||||||
updateProcessingPackagesService.run();
|
// updateProcessingPackagesService.run();
|
||||||
monitoringService.run();
|
// monitoringService.run();
|
||||||
updatingFlagsService.run();
|
// updatingFlagsService.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ public class SignalFacade {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseEntity<MonitoringSetupResponse> setupMonitoring(MultipartFile file) {
|
public ResponseEntity<MonitoringSetupResponse> setupMonitoring(MultipartFile file) {
|
||||||
|
log.trace("Start processing file");
|
||||||
// первичные валидации
|
// первичные валидации
|
||||||
if (file.isEmpty() || !isZipFile(file)) {
|
if (file.isEmpty() || !isZipFile(file)) {
|
||||||
throw clientExcp(SignalError.ERROR_001, XmlErrorFormat.MonitoringError);
|
throw clientExcp(SignalError.ERROR_001, XmlErrorFormat.MonitoringError);
|
||||||
|
|
@ -131,7 +132,9 @@ public class SignalFacade {
|
||||||
|
|
||||||
// валидация xml
|
// валидация xml
|
||||||
try {
|
try {
|
||||||
|
log.trace("Start validation");
|
||||||
monitoringRequest = readAndValidateMonitoringRequest(filePath);
|
monitoringRequest = readAndValidateMonitoringRequest(filePath);
|
||||||
|
log.trace("End validation");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
CTUtil.removeFile(filePath);
|
CTUtil.removeFile(filePath);
|
||||||
if (e.getCause() instanceof XMLStreamException) {
|
if (e.getCause() instanceof XMLStreamException) {
|
||||||
|
|
@ -225,7 +228,9 @@ public class SignalFacade {
|
||||||
try {
|
try {
|
||||||
signalService.registerSubjects(filePath, packageId);
|
signalService.registerSubjects(filePath, packageId);
|
||||||
CTUtil.removeFile(filePath);
|
CTUtil.removeFile(filePath);
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null);
|
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null);
|
||||||
|
log.trace("updateSubjects time: {}", System.currentTimeMillis() - start);
|
||||||
if (updateResult.isNoFidsFound()) {
|
if (updateResult.isNoFidsFound()) {
|
||||||
log.info("No fids found for PackageId: {} PackageName: {}. Package status ON_MONITORING. No registration in signal service.", packageId, packageName);
|
log.info("No fids found for PackageId: {} PackageName: {}. Package status ON_MONITORING. No registration in signal service.", packageId, packageName);
|
||||||
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
|
|
||||||
|
|
@ -106,12 +106,15 @@ public class SignalService {
|
||||||
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
|
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
|
||||||
*/
|
*/
|
||||||
public UpdateResult updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
|
public UpdateResult updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
|
||||||
|
log.info("Start updating subjects. PackageId: {}", packageId);
|
||||||
boolean updated = false;
|
boolean updated = false;
|
||||||
boolean noFidsFound = true;
|
boolean noFidsFound = true;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
List<PhoneFidMap> batch;
|
List<PhoneFidMap> batch;
|
||||||
do {
|
do {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
||||||
|
log.trace("Select subject's batch took {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
List<PhoneFidMap> filteredItems;
|
List<PhoneFidMap> filteredItems;
|
||||||
if (filter != null) {
|
if (filter != null) {
|
||||||
|
|
@ -133,6 +136,7 @@ public class SignalService {
|
||||||
|
|
||||||
offset += batchSize;
|
offset += batchSize;
|
||||||
} while (!batch.isEmpty());
|
} while (!batch.isEmpty());
|
||||||
|
log.info("End updating subjects. PackageId: {}", packageId);
|
||||||
|
|
||||||
return new UpdateResult(updated, noFidsFound);
|
return new UpdateResult(updated, noFidsFound);
|
||||||
}
|
}
|
||||||
|
|
@ -143,12 +147,17 @@ public class SignalService {
|
||||||
*/
|
*/
|
||||||
public boolean updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
|
public boolean updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
|
||||||
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
|
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
|
||||||
|
log.trace("findFidsPhoneData took {} ms", System.currentTimeMillis() - start);
|
||||||
LocalDateTime calculatedAt = LocalDateTime.now();
|
LocalDateTime calculatedAt = LocalDateTime.now();
|
||||||
boolean fidsFound = fidsMap.values().stream().anyMatch(Objects::nonNull);
|
boolean fidsFound = fidsMap.values().stream().anyMatch(Objects::nonNull);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList());
|
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList());
|
||||||
|
log.trace("findFlags took {} ms", System.currentTimeMillis() - start);
|
||||||
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
start = System.currentTimeMillis();
|
||||||
subjects.forEach(subject -> {
|
subjects.forEach(subject -> {
|
||||||
Integer fid = fidsMap.get("9" + subject.getPhone());
|
Integer fid = fidsMap.get("9" + subject.getPhone());
|
||||||
if (fid != null) {
|
if (fid != null) {
|
||||||
|
|
@ -174,14 +183,16 @@ public class SignalService {
|
||||||
}
|
}
|
||||||
subjectToUpdate.add(subject);
|
subjectToUpdate.add(subject);
|
||||||
});
|
});
|
||||||
|
log.trace("Iteration by batch took {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
int updateBatchSize = batchSize / 9; // 9 параметров на одну запись для обновления. Максимальное количество параметров ~65000
|
int updateBatchSize = batchSize / 9; // 9 параметров на одну запись для обновления. Максимальное количество параметров ~65000
|
||||||
|
start = System.currentTimeMillis();
|
||||||
for (int j = 0; j < subjectToUpdate.size(); j += updateBatchSize) {
|
for (int j = 0; j < subjectToUpdate.size(); j += updateBatchSize) {
|
||||||
int endIndex = Math.min(j + updateBatchSize, subjectToUpdate.size());
|
int endIndex = Math.min(j + updateBatchSize, subjectToUpdate.size());
|
||||||
phoneFidMapService.updatePhoneFidMaps(subjectToUpdate.subList(j, endIndex));
|
phoneFidMapService.updatePhoneFidMaps(subjectToUpdate.subList(j, endIndex));
|
||||||
log.trace("Updated fids and flags for subject's batch from: {} to: {}. Total count: {}. PackageId: {}", j, endIndex, subjectToUpdate.size(), packageId);
|
log.trace("Updated fids and flags for subject's batch from: {} to: {}. Total count: {}. PackageId: {}", j, endIndex, subjectToUpdate.size(), packageId);
|
||||||
}
|
}
|
||||||
|
log.trace("Updating subjects batch took {} ms", System.currentTimeMillis() - start);
|
||||||
log.info("Finish calculating fids and flags for subjects. PackageId: {}. Batch size: {}", packageId, subjects.size());
|
log.info("Finish calculating fids and flags for subjects. PackageId: {}. Batch size: {}", packageId, subjects.size());
|
||||||
|
|
||||||
return fidsFound;
|
return fidsFound;
|
||||||
|
|
@ -239,17 +250,25 @@ public class SignalService {
|
||||||
* writer записывает пачку сразу в файл
|
* writer записывает пачку сразу в файл
|
||||||
*/
|
*/
|
||||||
private void buildPersons(Integer packageId, Consumer<List<Person>> writer) {
|
private void buildPersons(Integer packageId, Consumer<List<Person>> writer) {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
List<PhoneFidMap> batch;
|
List<PhoneFidMap> batch;
|
||||||
do {
|
do {
|
||||||
|
long startBatch = System.currentTimeMillis();
|
||||||
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
||||||
|
log.trace("findFullPhoneFidMap(buildPersons) time {} ms", System.currentTimeMillis() - startBatch);
|
||||||
|
startBatch = System.currentTimeMillis();
|
||||||
List<Person> persons = findPersons(batch);
|
List<Person> persons = findPersons(batch);
|
||||||
|
log.trace("findPersons(buildPersons) time {} ms", System.currentTimeMillis() - startBatch);
|
||||||
if (!persons.isEmpty()) {
|
if (!persons.isEmpty()) {
|
||||||
|
startBatch = System.currentTimeMillis();
|
||||||
writer.accept(persons); // записывает пачку Persons в файл
|
writer.accept(persons); // записывает пачку Persons в файл
|
||||||
|
log.trace("Write batch (buildPersons) time {} ms", System.currentTimeMillis() - startBatch);
|
||||||
}
|
}
|
||||||
offset += batchSize;
|
offset += batchSize;
|
||||||
} while (!batch.isEmpty());
|
} while (!batch.isEmpty());
|
||||||
|
|
||||||
|
log.trace("buildPersons time {} ms", System.currentTimeMillis() - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -260,9 +279,12 @@ public class SignalService {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
List<Person> persons = new ArrayList<>();
|
List<Person> persons = new ArrayList<>();
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
Map<Integer, PersonService.PersonData> personFidMap = personService.findPersonData(subjects.stream()
|
Map<Integer, PersonService.PersonData> personFidMap = personService.findPersonData(subjects.stream()
|
||||||
.map(PhoneFidMap::getFid)
|
.map(PhoneFidMap::getFid)
|
||||||
.filter(Objects::nonNull).toList());
|
.filter(Objects::nonNull).toList());
|
||||||
|
log.trace("findPersonData time {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
subjects.forEach(data -> {
|
subjects.forEach(data -> {
|
||||||
if (data.getFid() != null) {
|
if (data.getFid() != null) {
|
||||||
PersonService.PersonData personData = personFidMap.get(data.getFid());
|
PersonService.PersonData personData = personFidMap.get(data.getFid());
|
||||||
|
|
@ -275,6 +297,7 @@ public class SignalService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
log.trace("Collecting persons time {} ms", System.currentTimeMillis() - start);
|
||||||
return persons;
|
return persons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package ru.nbch.credit_tracker.service.indic;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.mapper.indic.FlagsMapper;
|
import ru.nbch.credit_tracker.mapper.indic.FlagsMapper;
|
||||||
|
|
||||||
|
|
@ -12,6 +13,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class FlagsService {
|
public class FlagsService {
|
||||||
|
|
||||||
|
|
@ -26,10 +28,18 @@ public class FlagsService {
|
||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
Map<Integer, FlagsData> result = new HashMap<>();
|
Map<Integer, FlagsData> result = new HashMap<>();
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
log.trace("Fids count: {}", fids.size());
|
||||||
Map<Integer, Integer> flags5000 = calcFlag5000(fids);
|
Map<Integer, Integer> flags5000 = calcFlag5000(fids);
|
||||||
|
log.trace("calcFlag5000 time: {}", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Map<Integer, Integer> flags90DaysByPastDueArrear = calcFlag90DaysByPastDueArrear(fids);
|
Map<Integer, Integer> flags90DaysByPastDueArrear = calcFlag90DaysByPastDueArrear(fids);
|
||||||
|
log.trace("flags90DaysByPastDueArrear time: {}", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Map<Integer, Integer> flags90DaysByRuPaymt = calcFlag90DaysByRuPaymt(fids);
|
Map<Integer, Integer> flags90DaysByRuPaymt = calcFlag90DaysByRuPaymt(fids);
|
||||||
|
log.trace("calcFlag90DaysByRuPaymt time: {}", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
|
start = System.currentTimeMillis();
|
||||||
fids.forEach(fid -> {
|
fids.forEach(fid -> {
|
||||||
Integer flagDebt5000 = flags5000.get(fid);
|
Integer flagDebt5000 = flags5000.get(fid);
|
||||||
if (flagDebt5000 == null) {
|
if (flagDebt5000 == null) {
|
||||||
|
|
@ -45,7 +55,7 @@ public class FlagsService {
|
||||||
}
|
}
|
||||||
result.put(fid, new FlagsData(flagDebt5000, flag90days));
|
result.put(fid, new FlagsData(flagDebt5000, flag90days));
|
||||||
});
|
});
|
||||||
|
log.trace("Iteration by fids batch and collecting map time: {}", System.currentTimeMillis() - start);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,7 +65,10 @@ public class FlagsService {
|
||||||
* Если ни по одному счёту условие не выполняется или счетов вообще не найдено, флаг = 0.
|
* Если ни по одному счёту условие не выполняется или счетов вообще не найдено, флаг = 0.
|
||||||
*/
|
*/
|
||||||
private Map<Integer, Integer> calcFlag5000(List<Integer> fids) {
|
private Map<Integer, Integer> calcFlag5000(List<Integer> fids) {
|
||||||
return mapper.findFlagsDebt5000(fids).stream()
|
long start = System.currentTimeMillis();
|
||||||
|
List<FlagFidData> res = mapper.findFlagsDebt5000(fids);
|
||||||
|
log.trace("findFlagsDebt5000 time: {}", System.currentTimeMillis() - start);
|
||||||
|
return res.stream()
|
||||||
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
||||||
(existing, replacement) -> {
|
(existing, replacement) -> {
|
||||||
if (existing == 1) {
|
if (existing == 1) {
|
||||||
|
|
@ -72,8 +85,11 @@ public class FlagsService {
|
||||||
* Если ни по одной записи условия не выполняются или записей вообще не найдено, флаг = 0.
|
* Если ни по одной записи условия не выполняются или записей вообще не найдено, флаг = 0.
|
||||||
*/
|
*/
|
||||||
private Map<Integer, Integer> calcFlag90DaysByPastDueArrear(List<Integer> fids) {
|
private Map<Integer, Integer> calcFlag90DaysByPastDueArrear(List<Integer> fids) {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
LocalDate yearAgo = LocalDate.now().minusYears(1);
|
LocalDate yearAgo = LocalDate.now().minusYears(1);
|
||||||
return mapper.findFlag90ByPastDueArrear(fids, yearAgo).stream()
|
List<FlagFidData> res = mapper.findFlag90ByPastDueArrear(fids, yearAgo);
|
||||||
|
log.trace("findFlag90ByPastDueArrear time: {}", System.currentTimeMillis() - start);
|
||||||
|
return res.stream()
|
||||||
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
||||||
(existing, replacement) -> {
|
(existing, replacement) -> {
|
||||||
if (existing == 1) {
|
if (existing == 1) {
|
||||||
|
|
@ -85,8 +101,11 @@ public class FlagsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, Integer> calcFlag90DaysByRuPaymt(List<Integer> fids) {
|
private Map<Integer, Integer> calcFlag90DaysByRuPaymt(List<Integer> fids) {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
LocalDate yearAgo = LocalDate.now().minusYears(1);
|
LocalDate yearAgo = LocalDate.now().minusYears(1);
|
||||||
return mapper.findFlag90ByRuPaymt(fids, yearAgo).stream()
|
List<FlagFidData> res = mapper.findFlag90ByRuPaymt(fids, yearAgo);
|
||||||
|
log.trace("findFlag90ByRuPaymt time: {}", System.currentTimeMillis() - start);
|
||||||
|
return res.stream()
|
||||||
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
.collect(Collectors.toMap(FlagFidData::getFid, FlagFidData::getFlag,
|
||||||
(existing, replacement) -> {
|
(existing, replacement) -> {
|
||||||
if (existing == 1) {
|
if (existing == 1) {
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,14 @@ public class PersonService {
|
||||||
if (fids.isEmpty()) {
|
if (fids.isEmpty()) {
|
||||||
return new HashMap<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
log.trace("findPersonData: fids count: {}", fids.size());
|
||||||
Map<Integer, PersonData> personDataMap = new HashMap<>();
|
Map<Integer, PersonData> personDataMap = new HashMap<>();
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
Map<Integer, NameData> nameDataMap = findNameData(fids);
|
Map<Integer, NameData> nameDataMap = findNameData(fids);
|
||||||
|
log.trace("findNameData time {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Map<Integer, PassportData> passortDataMap = findPassportData(fids);
|
Map<Integer, PassportData> passortDataMap = findPassportData(fids);
|
||||||
|
log.trace("findPassportData time {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
|
|
||||||
fids.forEach(fid -> {
|
fids.forEach(fid -> {
|
||||||
|
|
@ -49,8 +54,11 @@ public class PersonService {
|
||||||
|
|
||||||
|
|
||||||
private Map<Integer, NameData> findNameData(List<Integer> fids) {
|
private Map<Integer, NameData> findNameData(List<Integer> fids) {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
List<NameData> persons = mapper.findNameData(fids);
|
List<NameData> persons = mapper.findNameData(fids);
|
||||||
return persons.stream()
|
log.trace("findNameData(db) time {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
|
Map<Integer, NameData> res = persons.stream()
|
||||||
.collect(Collectors.toMap(NameData::getFid, nameData -> nameData,
|
.collect(Collectors.toMap(NameData::getFid, nameData -> nameData,
|
||||||
(existing, replacement) -> {
|
(existing, replacement) -> {
|
||||||
LocalDate existingDate = existing.getFileSinceDate();
|
LocalDate existingDate = existing.getFileSinceDate();
|
||||||
|
|
@ -67,13 +75,18 @@ public class PersonService {
|
||||||
return replacement;
|
return replacement;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
log.trace("findNameData(collecting) time {} ms", System.currentTimeMillis() - start);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Integer, PassportData> findPassportData(List<Integer> fids) {
|
private Map<Integer, PassportData> findPassportData(List<Integer> fids) {
|
||||||
Map<Integer, PassportData> resultMap = new HashMap<>();
|
Map<Integer, PassportData> resultMap = new HashMap<>();
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
List<PassportData> passports = mapper.findPassportData(fids);
|
List<PassportData> passports = mapper.findPassportData(fids);
|
||||||
|
log.trace("findPassportData(db) time {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Map<Integer, List<PassportData>> passportsMap = passports.stream()
|
Map<Integer, List<PassportData>> passportsMap = passports.stream()
|
||||||
.collect(Collectors.groupingBy(PassportData::getFid));
|
.collect(Collectors.groupingBy(PassportData::getFid));
|
||||||
|
|
||||||
|
|
@ -83,6 +96,7 @@ public class PersonService {
|
||||||
resultMap.put(fid, passport);
|
resultMap.put(fid, passport);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
log.trace("findPassportData(collecting) time {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
return resultMap;
|
return resultMap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.nbch.credit_tracker.service.indic;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
|
import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
|
||||||
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
|
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
|
||||||
|
|
@ -13,6 +14,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class PhoneService {
|
public class PhoneService {
|
||||||
|
|
||||||
|
|
@ -27,8 +29,16 @@ public class PhoneService {
|
||||||
* @return Map: key - номер телефона; value - fid
|
* @return Map: key - номер телефона; value - fid
|
||||||
*/
|
*/
|
||||||
public Map<String, Integer> findFidsPhoneData(List<PhoneFidMap> subjects) {
|
public Map<String, Integer> findFidsPhoneData(List<PhoneFidMap> subjects) {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
List<String> phones = subjects.stream().map(subject -> "9" + subject.getPhone()).toList();
|
List<String> phones = subjects.stream().map(subject -> "9" + subject.getPhone()).toList();
|
||||||
return convertFidsDataToMap(mapper.findFids(phones));
|
log.trace("Find fids phone data in {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
|
List<FidsData> fidsData = mapper.findFids(phones);
|
||||||
|
log.trace("findFids {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
|
Map<String, Integer> res = convertFidsDataToMap(fidsData);
|
||||||
|
log.trace("convertFidsDataToMap {} ms", System.currentTimeMillis() - start);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Integer> convertFidsDataToMap(List<FidsData> fidsData) {
|
private Map<String, Integer> convertFidsDataToMap(List<FidsData> fidsData) {
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,12 @@ public class SignalRestService {
|
||||||
* @return true - если пакет успешно поставился на мониторинг. false - в противном случае
|
* @return true - если пакет успешно поставился на мониторинг. false - в противном случае
|
||||||
*/
|
*/
|
||||||
public boolean setupMonitoring(Integer packageId) throws Exception {
|
public boolean setupMonitoring(Integer packageId) throws Exception {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
String path = signalService.writeSignals(packageId);
|
String path = signalService.writeSignals(packageId);
|
||||||
|
log.trace("writeSignals time {} ms", System.currentTimeMillis() - start);
|
||||||
|
start = System.currentTimeMillis();
|
||||||
Resource request = compressFile(path);
|
Resource request = compressFile(path);
|
||||||
|
log.trace("compressFile time {} ms", System.currentTimeMillis() - start);
|
||||||
|
|
||||||
MultiValueMap<String, Resource> body = new LinkedMultiValueMap<>();
|
MultiValueMap<String, Resource> body = new LinkedMultiValueMap<>();
|
||||||
body.add("file", request);
|
body.add("file", request);
|
||||||
|
|
|
||||||
|
|
@ -63,18 +63,18 @@
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!--SQL запросы и результаты их выполнения-->
|
<!--SQL запросы и результаты их выполнения-->
|
||||||
<logger name="ru.nbch.credit_tracker.mapper" level="INFO" additivity="false">
|
<logger name="ru.nbch.credit_tracker.mapper" level="DEBUG" additivity="false">
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="FILE-JSON"/>
|
<appender-ref ref="FILE-JSON"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="ru.nbch.credit_tracker.service" level="INFO" additivity="false">
|
<logger name="ru.nbch.credit_tracker.service" level="TRACE" additivity="false">
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="FILE-JSON"/>
|
<appender-ref ref="FILE-JSON"/>
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="ru.nbch.credit_tracker.facade" level="INFO" additivity="false">
|
<logger name="ru.nbch.credit_tracker.facade" level="TRACE" additivity="false">
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="FILE-JSON"/>
|
<appender-ref ref="FILE-JSON"/>
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue