From 873a437a8271f5c5589fee6aabede0ce47b59162 Mon Sep 17 00:00:00 2001 From: aalehin Date: Wed, 7 Sep 2022 16:32:26 +0300 Subject: [PATCH] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-44=20http:/?= =?UTF-8?q?/jira.mfd.msk:8088/browse/CLS-45=20---=20=D0=98=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=B0=D1=81=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=D1=81=D1=8F=20=D0=BD=D0=B0=D0=B8=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B2=D1=8B=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B6=D0=B0=D0=B5=D0=BC=D1=8B=D1=85=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exporter/logic/stages/PrepareDBFFile.java | 64 +++++++++++++++++-- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java index ce639423b..49297d4b1 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java @@ -14,6 +14,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Locale; import java.util.Objects; /** @@ -21,7 +22,10 @@ import java.util.Objects; */ @Component public class PrepareDBFFile extends Stage implements InitializingBean { - private static DateTimeFormatter tsFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss"); + private static final String SECTION = "U"; + private static final String CODE_OF_MEMBER = null; + private static DateTimeFormatter tsFormatter = DateTimeFormatter.ofPattern("yyMMddHHmm"); + private static DateTimeFormatter utilFormatter = DateTimeFormatter.ofPattern("yyMMdd"); private final AProperties properties; private String outDir; @@ -34,11 +38,7 @@ public class PrepareDBFFile extends Stage implements InitializingBean { Objects.requireNonNull(resultContainer.getTableForExport()); Table table = resultContainer.getTableForExport(); - File dbfFile = new File(String.format("%s%s%s_%s.dbf", - outDir, - File.separator, - table.getFilePrefix(), - tsFormatter.format(LocalDateTime.now()))); + File dbfFile = new File(prepareFilename(table, SECTION, CODE_OF_MEMBER, outDir)); try { Path dbfFilePath = dbfFile.toPath(); Files.deleteIfExists(dbfFilePath); @@ -61,4 +61,56 @@ public class PrepareDBFFile extends Stage implements InitializingBean { if (!outDirFile.exists()) Files.createDirectories(outDirFile.toPath()); this.outDir = outDirPath; } + + private String prepareFilename(Table table, String section, String codeOfMember, String outDir) { + StringBuilder result = new StringBuilder(); + String prefixOfTable = table.getFilePrefix(); + String time = "PRC" + tsFormatter.format(LocalDateTime.now()); + + result.append(outDir); + result.append(File.separator); + result.append(prefixOfTable.toUpperCase(Locale.ROOT)); + result.append('_'); + result.append(section); + result.append('_'); + result.append(time); + result.append('_'); + + if (!prefixOfTable.equalsIgnoreCase("DF-05")) { + result.append(countSameFilesInDir(prefixOfTable, outDir) + 1); + result.append('_'); + } + + if (codeOfMember != null) { + result.append(codeOfMember); + } + result.append(".DBF"); + return result.toString(); + } + + private Integer countSameFilesInDir(String prefixOfTable, String outDir) { + int res = 1; + File directory = new File(outDir); + if (directory.exists()) { + for (File file : Objects.requireNonNull(directory.listFiles())) { + String name = file.getName(); + String[] splitName = name.split("_"); + String prefix = splitName[0]; + String timestamp = splitName[2]; + String timestampNow = utilFormatter.format(LocalDateTime.now()); + + if (prefix.equalsIgnoreCase(prefixOfTable) && timestamp.contains(timestampNow)) { + String counter = splitName[3]; + //prepare for substring for counter + int positionOfDot = counter.indexOf('.'); + if (positionOfDot != -1) { + counter = counter.substring(0, positionOfDot); + } + res = Integer.max(res, Integer.parseInt(counter)); + + } + } + } + return res; + } }