diff --git a/pom.xml b/pom.xml
index 5404743..c1c380d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
ru.nbch
credit-tracker
- 2.21.1
+ 2.21.2
credit_tracker
Credit Tracker Application
diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java
index 1495aa4..79e235d 100644
--- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java
+++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java
@@ -303,8 +303,10 @@ public class SignalFacadeV3 {
throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName);
}
- Path folderPath = Path.of(config.getLoadDir(),"tmp", userPackage.getUserId(), userPackage.getPackageName());
- File folder = folderPath.toFile();
+ String memberCode = username.substring(0, 6);
+ String filePrefix = (memberCode + "_" + packageName).toUpperCase();
+ String dirPath = config.getLoadDir() + File.separator + memberCode;
+ File folder = new File(dirPath);
log.debug("searching for reports from: {}", folder.getAbsolutePath());
MonitoringReportListResponse.Reports reports = new MonitoringReportListResponse.Reports();
@@ -312,7 +314,7 @@ public class SignalFacadeV3 {
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
- if (file.isFile() && file.getName().endsWith(".zip")) {
+ if (file.isFile() && file.getName().startsWith(filePrefix)) {
reports.getReports().add(file.getName());
}
}
@@ -333,27 +335,20 @@ public class SignalFacadeV3 {
public ResponseEntity downloadFile(String fileName) {
try {
Matcher matcher = DOWNLOAD_FILE_PATTERN.matcher(fileName);
- String packageName = null;
+ String memberCode = null;
if (matcher.matches()) {
- packageName = matcher.group("package");
+ memberCode = matcher.group("member");
}
- if (packageName == null) {
+ if (memberCode == null) {
throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError, fileName);
}
- UserPackage userPackage = userPackageService.findByPackageName(packageName);
-
- if (userPackage == null) {
- throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError, fileName);
- }
- String dirPath = config.getLoadDir() +
- File.separator + "tmp" +
- File.separator + userPackage.getUserId() +
- File.separator + userPackage.getPackageName();
- File folder = new File(dirPath);
+ Path reportRootPath = Path.of(config.getLoadDir(), memberCode);
+ File folder = reportRootPath.toFile();
if (folder.exists() && folder.isDirectory()) {
- File file = new File(dirPath + File.separator + fileName);
+ Path filePath = reportRootPath.resolve(fileName);
+ File file = filePath.toFile();
if (file.exists() && file.isFile()) {
return ResponseEntity.ok().body(new FileUrlResource(file.getPath()));
}
diff --git a/src/main/java/ru/nbch/credit_tracker/service/mode/monitoring/MonitoringService.java b/src/main/java/ru/nbch/credit_tracker/service/mode/monitoring/MonitoringService.java
index e6e6f68..a7e5040 100644
--- a/src/main/java/ru/nbch/credit_tracker/service/mode/monitoring/MonitoringService.java
+++ b/src/main/java/ru/nbch/credit_tracker/service/mode/monitoring/MonitoringService.java
@@ -186,10 +186,15 @@ public class MonitoringService {
// Выставляется в true, если хотя бы один субъект с мониторинга подошел под условие срабатывания сигнала. В этом случае отчет сохраняется
AtomicBoolean generateResponse = new AtomicBoolean(false);
+ String commonMembercode = userPackage.getUserId().substring(0, 6);
+ Path rootReportPath = Path.of(config.getLoadDir(), commonMembercode);
+ if (!Files.exists(rootReportPath)) {
+ Files.createDirectories(rootReportPath);
+ }
AtomicReference responsePath = new AtomicReference<>(
- loadedReportPath.resolveSibling(
+ rootReportPath.resolve(
String.format("%s_%s_%s.xml",
- userPackage.getUserId().substring(0, 6),
+ commonMembercode,
userPackage.getPackageName(),
CTUtil.getDateFromReportFileName(reportName))
));