This commit is contained in:
akulikov 2024-10-16 11:31:58 +03:00
parent 833532e0fc
commit e50a4eb33a
6 changed files with 33 additions and 31 deletions

View file

@ -1,11 +1,10 @@
package ru.spcex.clearing.dbf.exporter.logic.data;
import ru.spcex.clearing.dbf.exporter.logic.data.enums.StageResult;
import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table;
import java.io.File;
import java.time.LocalDateTime;
import java.util.UUID;
import ru.spcex.clearing.dbf.exporter.logic.data.enums.StageResult;
import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table;
/**
* Контейнер для передачи результата между стадиями
@ -19,13 +18,15 @@ public class ResultContainer {
private StageResult lastStageResult;
private LocalDateTime registrationDateTime;
private String memberCode;
private String section;
protected ResultContainer() {}
public static ResultContainer createNewTask(Table tableForExport) {
public static ResultContainer createNewTask(Table tableForExport, String section) {
ResultContainer container = new ResultContainer();
container.tableForExport = tableForExport;
container.uuid = UUID.randomUUID();
container.section = section;
return container;
}
@ -92,4 +93,8 @@ public class ResultContainer {
public void setMemberCode(String memberCode) {
this.memberCode = memberCode;
}
public String getSection() {
return section;
}
}

View file

@ -1,19 +1,14 @@
package ru.spcex.clearing.dbf.exporter.logic.data.enums;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.integration.sftp.session.SftpFileInfo;
import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer;
import java.io.File;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import static ru.spcex.clearing.dbf.exporter.logic.stages.PrepareDBFFile.SECTION;
import static ru.spcex.clearing.dbf.exporter.logic.stages.PrepareDBFFile.outDir;
public enum FilenameTemplate {
@ -66,7 +61,7 @@ public enum FilenameTemplate {
result.append(File.separator);
result.append(resultContainer.getTableForExport().getFilePrefix().toUpperCase(Locale.ROOT));
result.append('_');
result.append(SECTION);
result.append(resultContainer.getSection());
return result;
}

View file

@ -26,7 +26,6 @@ import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table;
*/
@Component
public class PrepareDBFFile extends Stage implements InitializingBean {
public static final String SECTION = "S";
private final ExportDBFServiceSettings settings;
public static String outDir;
private final SFTPConfig.DbfGateway gateway;

View file

@ -1,9 +1,12 @@
package ru.spcex.clearing.dbf.exporter.services;
import java.util.Arrays;
import java.util.Optional;
import org.apache.kafka.clients.consumer.Consumer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.dbf.exporter.logic.Processor;
import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer;
@ -17,22 +20,22 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.platform.enumeration.Task;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.Arrays;
import java.util.Optional;
@Service
public class CommandService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider;
private final Processor processor;
private final String section;
public CommandService(Consumer<String, Object> kafkaQueue,
ImdgProvider imdgProvider,
Processor processor) {
Processor processor,
@Value("${export-dbf-service.section:S}") String section) {
super(kafkaQueue);
this.imdgProvider = imdgProvider;
this.processor = processor;
this.section = section;
}
@Override
@ -79,7 +82,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
if (tableForExport.isEmpty()) {
throw new IllegalStateException(String.format("Unsupported table prefix: %s", request.getNameOfTable()));
}
ResultContainer resultContainer = ResultContainer.createNewTask(tableForExport.get());
ResultContainer resultContainer = ResultContainer.createNewTask(tableForExport.get(), section);
resultContainer.setGroupId(request.getSdfGroupId());
resultContainer.setSourceName(request.getFileName());
processor.process(resultContainer);
@ -87,7 +90,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
private void processSpecial(Table table, BaseRequest<SdfClearingRequest> systemRequest) {
SdfClearingRequest request = systemRequest.getRequestPayload();
ResultContainer resultContainer = ResultContainer.createNewTask(table);
ResultContainer resultContainer = ResultContainer.createNewTask(table, section);
resultContainer.setGroupId(request.getGroupId());
resultContainer.setSourceName(null);
processor.process(resultContainer);
@ -96,7 +99,7 @@ public class CommandService extends QueueConsumer implements InitializingBean {
private void processByLauncher(Table table, BaseRequest<LauncherCommandRequest> systemRequest) {
LauncherCommandRequest request = systemRequest.getRequestPayload();
log.info("RequestId={}, LauncherCommandRequest task={}. Table {}", systemRequest.getId(), request.getTaskName(), table);
ResultContainer resultContainer = ResultContainer.createNewTask(table);
ResultContainer resultContainer = ResultContainer.createNewTask(table, section);
resultContainer.setGroupId(null);
resultContainer.setSourceName(null);
processor.process(resultContainer);

View file

@ -30,3 +30,5 @@ export-dbf-service.kafka-producer.retries=0
export-dbf-service.kafka-producer.batch-size=16384
export-dbf-service.kafka-producer.linger-ms=1
export-dbf-service.kafka-producer.buffer-memory=33554432
export-dbf-service.section=S

View file

@ -1,18 +1,16 @@
package ru.spcex.clearing.dbf.exporter.logic.data.enums;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import org.junit.jupiter.api.Test;
import org.springframework.integration.sftp.session.SftpFileInfo;
import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer;
import ru.spcex.clearing.dbf.exporter.logic.stages.PrepareDBFFile;
import java.io.File;
import java.time.LocalDateTime;
import java.util.List;
import com.jcraft.jsch.ChannelSftp.LsEntry;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.*;
import org.springframework.integration.sftp.session.SftpFileInfo;
import ru.spcex.clearing.dbf.exporter.logic.data.ResultContainer;
import static ru.spcex.clearing.dbf.exporter.logic.data.enums.FilenameTemplate.df_section_sameName;
import ru.spcex.clearing.dbf.exporter.logic.stages.PrepareDBFFile;
class FilenameTemplateTest {
@ -38,7 +36,7 @@ class FilenameTemplateTest {
SftpFileInfo sftpFileInfo = spy(new SftpFileInfo(lsEntry));
doReturn(false).when(sftpFileInfo).isDirectory();
List<SftpFileInfo> files = List.of(sftpFileInfo);
ResultContainer resultContainer = ResultContainer.createNewTask(Table.S_DF02);
ResultContainer resultContainer = ResultContainer.createNewTask(Table.S_DF02, "S");
resultContainer.setGroupId(10L);
resultContainer.setSourceName("DF-01_S_PRC1807230915_1.dbf");
PrepareDBFFile.outDir="TEST_DIR";