diff --git a/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/component/FileService.java b/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/component/FileService.java index 024be9a4d..e8a1a3edb 100644 --- a/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/component/FileService.java +++ b/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/component/FileService.java @@ -3,17 +3,21 @@ package ru.spcex.clearing.csv.importer.component; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.time.Instant; +import java.time.format.DateTimeFormatter; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import ru.spcex.clearing.csv.importer.config.settings.CsvImporterSettings; import ru.spcex.platform.utils.log.ExceptionUtils; +import ru.spcex.platform.utils.time.TimeUtil; @Component public class FileService { private static final Logger log = LoggerFactory.getLogger(FileService.class); + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy.MM.dd HH.mm.ss"); private final Path outDir; private final Path errDir; @@ -24,27 +28,33 @@ public class FileService { checkDir(errDir); } - public void moveSuccess(Path file) { + public void moveSuccess(Path file, Instant now) { try { log.info("moving {} to {}", file, outDir); - Files.move(file, outDir.resolve(file.getFileName()), REPLACE_EXISTING); + String newFileNameWithTimestamp = fileNameWithTimestamp(file, now); + Files.move(file, outDir.resolve(newFileNameWithTimestamp), REPLACE_EXISTING); } catch (IOException e) { log.error("failed to move to {}, trying to move to {}: {}", outDir, errDir, ExceptionUtils.getStackTrace(e)); - moveError(file); + moveError(file, now); //notification? } } - public void moveError(Path file) { + public void moveError(Path file, Instant now) { try { log.info("moving {} to {}", file, errDir); - Files.move(file, errDir.resolve(file.getFileName()), REPLACE_EXISTING); + String newFileNameWithTimestamp = fileNameWithTimestamp(file, now); + Files.move(file, errDir.resolve(newFileNameWithTimestamp), REPLACE_EXISTING); } catch (IOException e) { log.error("failed to move to {}: {}", errDir, ExceptionUtils.getStackTrace(e)); //notification? } } + public String fileNameWithTimestamp(Path file, Instant now) { + return TimeUtil.formatInstant(now, FORMATTER) + '_' + file.getFileName(); + } + public static boolean isReady(Path file) { try { var modified = Files.getLastModifiedTime(file).toInstant(); diff --git a/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/service/SOrdersScheduler.java b/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/service/SOrdersScheduler.java index 88f66e8d6..79b6265ad 100644 --- a/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/service/SOrdersScheduler.java +++ b/clearing-parent/csv-importer/src/main/java/ru/spcex/clearing/csv/importer/service/SOrdersScheduler.java @@ -2,6 +2,7 @@ package ru.spcex.clearing.csv.importer.service; import java.nio.file.Files; import java.nio.file.Path; +import java.time.Instant; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,6 +61,7 @@ public class SOrdersScheduler { } private void processFile(Path path) { + Instant now = Instant.now(); try { log.info("processing file {}", path); List sOrders = processor.readFile(path); @@ -71,6 +73,9 @@ public class SOrdersScheduler { if (order == null) { order = new SOrders(); order.setId(transId); + order.setCreated(now); + } else { + order.setUpdated(now); } order.setState(orderFromFile.getStatus()); order.setOrderNum(orderFromFile.getOrderNumber()); @@ -83,10 +88,10 @@ public class SOrdersScheduler { } } sendToDefaultManagement(sOrders); - fileService.moveSuccess(path); + fileService.moveSuccess(path, now); } catch (Throwable e) { log.error("error for {}: {}", path, ExceptionUtils.getStackTrace(e)); - fileService.moveError(path); + fileService.moveError(path, now); } }