This commit is contained in:
parent
8475bb5f37
commit
62f842ed08
2 changed files with 16 additions and 10 deletions
|
|
@ -164,7 +164,7 @@ public class MonitoringService {
|
||||||
if (responsePath != null) {
|
if (responsePath != null) {
|
||||||
Path zipFile = ZipUtils.zipFile(responsePath);
|
Path zipFile = ZipUtils.zipFile(responsePath);
|
||||||
log.info("New report file by path: {}", zipFile);
|
log.info("New report file by path: {}", zipFile);
|
||||||
updateSignalHits(userPackage, responsePath.toString(), zipFile.toString());
|
updateSignalHits(userPackage, responsePath, zipFile);
|
||||||
userPackageMapper.updatePackageLastDownloadedReport(userPackage.getId(), newReport);
|
userPackageMapper.updatePackageLastDownloadedReport(userPackage.getId(), newReport);
|
||||||
} else {
|
} else {
|
||||||
log.info("Report was not created for package");
|
log.info("Report was not created for package");
|
||||||
|
|
@ -184,9 +184,13 @@ public class MonitoringService {
|
||||||
// Выставляется в true, если хотя бы один субъект с мониторинга подошел под условие срабатывания сигнала. В этом случае отчет сохраняется
|
// Выставляется в true, если хотя бы один субъект с мониторинга подошел под условие срабатывания сигнала. В этом случае отчет сохраняется
|
||||||
AtomicBoolean generateResponse = new AtomicBoolean(false);
|
AtomicBoolean generateResponse = new AtomicBoolean(false);
|
||||||
|
|
||||||
AtomicReference<Path> responsePath = new AtomicReference<>(loadedReportPath.resolveSibling(
|
AtomicReference<Path> responsePath = new AtomicReference<>(
|
||||||
userPackage.getUserId().substring(0, 6) + userPackage.getPackageName() +
|
loadedReportPath.resolveSibling(
|
||||||
CTUtil.getDateFromReportFileName(reportName) + ".xml"));
|
String.format("%s_%s_%s.xml",
|
||||||
|
userPackage.getUserId().substring(0, 6),
|
||||||
|
userPackage.getPackageName(),
|
||||||
|
CTUtil.getDateFromReportFileName(reportName))
|
||||||
|
));
|
||||||
|
|
||||||
MonitoringSignalResponse response = new MonitoringSignalResponse();
|
MonitoringSignalResponse response = new MonitoringSignalResponse();
|
||||||
//Имя пакета, переданного при установке
|
//Имя пакета, переданного при установке
|
||||||
|
|
@ -257,22 +261,23 @@ public class MonitoringService {
|
||||||
return subjects;
|
return subjects;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSignalHits(UserPackage userPackage, String responsePath, String reportFileName) {
|
private void updateSignalHits(UserPackage userPackage, Path responsePath, Path reportFileName) {
|
||||||
log.info("Updating signal hits for {}", userPackage.getPackageName());
|
log.info("Updating signal hits for {}", userPackage.getPackageName());
|
||||||
LocalDateTime responseSentAt = LocalDateTime.now();
|
LocalDateTime responseSentAt = LocalDateTime.now();
|
||||||
// Считываем результирующий файл пачками и обновляем таблицу hits
|
// Считываем результирующий файл пачками и обновляем таблицу hits
|
||||||
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Path.of(responsePath)), 8 * 1024 * 1024)) {
|
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(responsePath), 8 * 1024 * 1024)) {
|
||||||
staxXmlProcessor.read(in, MonitoringSignalResponse.class,
|
staxXmlProcessor.read(in, MonitoringSignalResponse.class,
|
||||||
response -> { // как только считали пачку Subjects сразу обновлям таблицу hits
|
response -> { // как только считали пачку Subjects сразу обновляем таблицу hits
|
||||||
List<Hit> hits = new ArrayList<>();
|
List<Hit> hits = new ArrayList<>();
|
||||||
response.getSubjects().getSubjects().forEach(subject -> {
|
response.getSubjects().getSubjects().forEach(subject -> {
|
||||||
subject.getSignals().getSignals().forEach(signal -> {
|
subject.getSignals().getSignals().forEach(signal -> {
|
||||||
Hit hit = new Hit();
|
Hit hit = new Hit();
|
||||||
hit.setPackageId(userPackage.getId());
|
hit.setPackageId(userPackage.getId());
|
||||||
hit.setSubjectId(subject.getId());
|
hit.setSubjectId(subject.getId());
|
||||||
hit.setSignalType(1);
|
hit.setPhone(Long.valueOf(subject.getClientId()));
|
||||||
|
hit.setSignalType(signal.getSignalType());
|
||||||
hit.setResponseSentAt(responseSentAt);
|
hit.setResponseSentAt(responseSentAt);
|
||||||
hit.setReportFileName(reportFileName);
|
hit.setReportFileName(reportFileName.getFileName().toString());
|
||||||
hits.add(hit);
|
hits.add(hit);
|
||||||
});
|
});
|
||||||
if (!hits.isEmpty()) {
|
if (!hits.isEmpty()) {
|
||||||
|
|
@ -288,7 +293,7 @@ public class MonitoringService {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException("Error while updating hits", e);
|
throw new RuntimeException("Error while updating hits", e);
|
||||||
}
|
}
|
||||||
CtFileUtils.deleteQuietly(Path.of(responsePath)); // удалям результирующий xml файл с диска (Он уже заархивирован к этому моменту)
|
CtFileUtils.deleteQuietly(responsePath); // удалям результирующий xml файл с диска (Он уже заархивирован к этому моменту)
|
||||||
log.info("Signal hits updated for package {}", userPackage.getPackageName());
|
log.info("Signal hits updated for package {}", userPackage.getPackageName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ public class MonitoringSignalResponseStaxXmlWriter extends StaxXmlWriter<Monitor
|
||||||
writerWrapper.addStartDocument(charsetName);
|
writerWrapper.addStartDocument(charsetName);
|
||||||
|
|
||||||
writerWrapper.addStartElement("MonitoringSignalResponse");
|
writerWrapper.addStartElement("MonitoringSignalResponse");
|
||||||
|
writerWrapper.addSimplelement("PackageName", obj.getPackageName());
|
||||||
writerWrapper.addStartElement("Subjects");
|
writerWrapper.addStartElement("Subjects");
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue