http://jira.mfd.msk:8088/browse/BKI-3200 Fix MonitoringService to load all reports after last report (Not only latest); Updated version to 1.8
This commit is contained in:
parent
d0c20abb96
commit
1aff345768
3 changed files with 46 additions and 31 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
#commons
|
#commons
|
||||||
APP_VERSION=1.7
|
APP_VERSION=1.8
|
||||||
REGISTRY_URL=rh8-vm3.nbki.msk:5000
|
REGISTRY_URL=rh8-vm3.nbki.msk:5000
|
||||||
JMX_PORT=
|
JMX_PORT=
|
||||||
JMX_HOSTNAME=
|
JMX_HOSTNAME=
|
||||||
|
|
|
||||||
2
pom.xml
2
pom.xml
|
|
@ -10,7 +10,7 @@
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>ru.nbch</groupId>
|
<groupId>ru.nbch</groupId>
|
||||||
<artifactId>credit-tracker</artifactId>
|
<artifactId>credit-tracker</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
<name>credit_tracker</name>
|
<name>credit_tracker</name>
|
||||||
<description>Credit Tracker Application</description>
|
<description>Credit Tracker Application</description>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,10 @@ import java.io.*;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
@ -86,27 +89,35 @@ public class MonitoringService {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Находим самый последний отчет по дате
|
|
||||||
Optional<String> newReport = Optional.of(fileNames)
|
|
||||||
.orElseGet(Collections::emptyList)
|
|
||||||
.stream().max(Comparator.comparing(CTUtil::parseDateFromReportFileName)); // отфильтровали только те имена, которые парсятся в дату, так что null тут не придет
|
|
||||||
|
|
||||||
LocalDateTime lastDownloadedReportDate = CTUtil.parseDateFromReportFileName(userPackage.getLastDownloadedReport());
|
LocalDateTime lastDownloadedReportDate = CTUtil.parseDateFromReportFileName(userPackage.getLastDownloadedReport());
|
||||||
|
|
||||||
|
if (lastDownloadedReportDate != null) {
|
||||||
|
// Отбираем только те отчеты, дата которых позже даты последнего загруженного отчета
|
||||||
|
fileNames = fileNames.stream()
|
||||||
|
.filter(fileName -> CTUtil.parseDateFromReportFileName(fileName).isAfter(lastDownloadedReportDate)) // отфильтровали только те имена, которые парсятся в дату, так что null тут не придет
|
||||||
|
.sorted(Comparator.comparing(CTUtil::parseDateFromReportFileName)) // Сортируем по дате
|
||||||
|
.toList();
|
||||||
|
} else {
|
||||||
|
fileNames = fileNames.stream()
|
||||||
|
.sorted(Comparator.comparing(CTUtil::parseDateFromReportFileName)) // Сортируем по дате
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(userPackage.getLastDownloadedReport())) {
|
if (StringUtils.isNotBlank(userPackage.getLastDownloadedReport())) {
|
||||||
log.info("Last downloaded report found for package {}. Last Downloaded Report Name: {}", userPackage.getPackageName(), userPackage.getLastDownloadedReport());
|
log.info("Last downloaded report found for package {}. Last Downloaded Report Name: {}", userPackage.getPackageName(), userPackage.getLastDownloadedReport());
|
||||||
} else {
|
} else {
|
||||||
log.info("Last Downloaded Report Name is empty");
|
log.info("Last Downloaded Report Name is empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (String newReport : fileNames) {
|
||||||
try {
|
try {
|
||||||
String reportPath = null;
|
String reportPath = null;
|
||||||
if (StringUtils.isBlank(userPackage.getLastDownloadedReport()) && newReport.isPresent()) {
|
if (StringUtils.isBlank(userPackage.getLastDownloadedReport())) {
|
||||||
reportPath = loadReport(userPackage.getId(), newReport.get()); // по этому пакету еще не было загруженных отчетов, продолжаем работу с полученным
|
reportPath = loadReport(userPackage.getId(), newReport); // по этому пакету еще не было загруженных отчетов, продолжаем работу с полученным
|
||||||
} else if (lastDownloadedReportDate != null && newReport.isPresent()) {
|
} else if (lastDownloadedReportDate != null) {
|
||||||
LocalDateTime newReportDate = CTUtil.parseDateFromReportFileName(newReport.get());
|
LocalDateTime newReportDate = CTUtil.parseDateFromReportFileName(newReport);
|
||||||
if (newReportDate.isAfter(lastDownloadedReportDate)) {
|
if (newReportDate.isAfter(lastDownloadedReportDate)) {
|
||||||
reportPath = loadReport(userPackage.getId(), newReport.get()); // полученный отчет новее записанного в базу
|
reportPath = loadReport(userPackage.getId(), newReport); // полученный отчет новее записанного в базу
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (reportPath == null) {
|
if (reportPath == null) {
|
||||||
|
|
@ -119,7 +130,7 @@ public class MonitoringService {
|
||||||
if (fileName != null) {
|
if (fileName != null) {
|
||||||
log.info("New report fileName: {}", fileName);
|
log.info("New report fileName: {}", fileName);
|
||||||
updateSignalHits(userPackage, responsePath, fileName);
|
updateSignalHits(userPackage, responsePath, fileName);
|
||||||
signalService.updateLastDownloadedReport(userPackage.getId(), newReport.get());
|
signalService.updateLastDownloadedReport(userPackage.getId(), newReport);
|
||||||
} else {
|
} else {
|
||||||
log.info("Report was not created for package {}", userPackage.getPackageName());
|
log.info("Report was not created for package {}", userPackage.getPackageName());
|
||||||
}
|
}
|
||||||
|
|
@ -127,6 +138,7 @@ public class MonitoringService {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
log.info("Finish monitoring");
|
log.info("Finish monitoring");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,6 +222,7 @@ public class MonitoringService {
|
||||||
private String createResponseFile(UserPackage userPackage, String responsePath) {
|
private String createResponseFile(UserPackage userPackage, String responsePath) {
|
||||||
try {
|
try {
|
||||||
String fileName = CTUtil.generateResponseReportFileName(userPackage.getUserId(), userPackage.getPackageName());
|
String fileName = CTUtil.generateResponseReportFileName(userPackage.getUserId(), userPackage.getPackageName());
|
||||||
|
Thread.sleep(1000); // Если отчеты формируются слишком быстро, нужно подождать секунду, тк в имени отчета LocalDateTime до секунд
|
||||||
String filePath = config.getLoadDir() + File.separator + userPackage.getUserId().substring(0, 6) + File.separator;
|
String filePath = config.getLoadDir() + File.separator + userPackage.getUserId().substring(0, 6) + File.separator;
|
||||||
|
|
||||||
File folder = new File(filePath);
|
File folder = new File(filePath);
|
||||||
|
|
@ -232,6 +245,8 @@ public class MonitoringService {
|
||||||
zos.closeEntry();
|
zos.closeEntry();
|
||||||
}
|
}
|
||||||
return fileName;
|
return fileName;
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Ошибка при записи отчета пользователя в файл: ", e);
|
log.error("Ошибка при записи отчета пользователя в файл: ", e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue