Поправил ошибку.
This commit is contained in:
psemenkov 2023-06-09 12:11:04 +03:00
parent c62e99fd7d
commit b3f5ac1026
12 changed files with 242 additions and 13 deletions

View file

@ -70,6 +70,19 @@
<groupId>ru.spcex.platform</groupId>
<artifactId>platform-enum</artifactId>
</dependency>
<!-- TEST -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.spcex.clearing</groupId>
<artifactId>test-clearing</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View file

@ -20,10 +20,11 @@ public class SDf10Table extends AbstractTable<SDf10> {
@Override
public SDf10 getEntity(SWTHeaderData header, String[] entity) {
SDf10 result = new SDf10();
result.setOutDocument(header.getValFor20Tag());
result.setDepoCode(entity[0]);
result.setQuantity(entity[1]);
result.setSecurityCode(entity[2]);
result.setClientName(entity[5]);
// result.setClientName(entity[5]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(fileId);

View file

@ -22,6 +22,9 @@ public class SDf13Table extends AbstractTable<SDf13> {
SDf13 result = new SDf13();
result.setFileName(filename);
result.setOutDocument(header.getValFor20Tag());
result.setInDocument(header.getValFor21Tag());
result.setResult(header.getValFor76Tag());
result.setTextError(header.getValFor77ATag());
result.setGenerationTime(Instant.now());
result.setGenerationId(fileId);
return result;

View file

@ -49,11 +49,13 @@ public class ImportToDB extends Stage {
AbstractTable table = mappingEnumTableObjectTable.get(currTable);
table.setHazelcastService(hazelcastService);
table.setFilename(resultContainer.getSwtFile().getName());
hazelcastService.waitAvailable();
Long fileId = hazelcastService.getImdgIdGenerator().nextId();
table.setFileId(fileId);
int counter = 0;
SWTHeaderData swtHeaderData = swtReader.getSWTHeader();
while (swtReader.hasNextRecord()) {
do {
counter++;
String[] entity = swtReader.nextRecord();
if (entity == null) {
@ -61,7 +63,7 @@ public class ImportToDB extends Stage {
continue;
}
table.injectEntity(table.getEntity(swtHeaderData, entity));
}
} while (swtReader.hasNextRecord());
kafkaMessenger.notifySystemIfNeeded(currTable, fileId);
} catch (IOException exception) {
log.warn(exception.getMessage());

View file

@ -84,13 +84,13 @@ S_DF_13
* */
String val20, val21, val76, val77A;
line = scanner.nextLine();
val20 = line.substring(line.lastIndexOf(":20:"));
val20 = line.substring(line.lastIndexOf(":20:") + ":20:".length());
line = scanner.nextLine();
val21 = line.substring(line.lastIndexOf(":21:"));
val21 = line.substring(line.lastIndexOf(":21:") + ":21:".length());
line = scanner.nextLine();
val76 = line.substring(line.lastIndexOf(":76:"));
val76 = line.substring(line.lastIndexOf(":76:") + ":76:".length());
line = scanner.nextLine();
val77A = line.substring(line.lastIndexOf(":77A:"));
val77A = line.substring(line.lastIndexOf(":77A:") + ":77A:".length());
swtHeaderData.setValFor20Tag(val20);
swtHeaderData.setValFor21Tag(val21);
swtHeaderData.setValFor76Tag(val76);
@ -104,13 +104,20 @@ S_DF_13
public String[] nextRecord() {
switch (resultContainer.getSwtTable()) {
case S_DF_08, S_DF_10:
case S_DF_08:
String line = scanner.nextLine();
String[] separetedLine = line.split(":");
if (separetedLine.length < 5) {
return null;
}
return separetedLine;
case S_DF_10:
line = scanner.nextLine();
separetedLine = line.split(":");
if (separetedLine.length < 4) {
return null;
}
return separetedLine;
case S_DF_13:
return new String[0];
default:
@ -119,7 +126,16 @@ S_DF_13
}
public boolean hasNextRecord() {
return scanner.hasNextLine();
switch (resultContainer.getSwtTable()) {
case S_DF_08:
scanner.hasNextLine();
case S_DF_10:
return false;
case S_DF_13:
return false;
default:
throw new IllegalStateException("Could not process this type of table");
}
}
@Override

View file

@ -2,12 +2,12 @@ server.port=7117
server.servlet.context-path=/importer-swt
spring.main.web-application-type=servlet
import-swt-service.scheduler.check-src-dir-cron=* * * * 1 ?
import-swt-service.scheduler.check-src-dir-cron= */10 * * * * *
import-swt-service.store.delete-src-files=false
import-swt-service.store.src-dir=/opt/clearing/file/importer/
import-swt-service.store.out-dir=/opt/clearing/file/importer/loaded/
import-swt-service.store.out-dir-error=/opt/clearing/file/importer/error/
import-swt-service.store.src-dir=clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/files/importer/
import-swt-service.store.out-dir=clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/files/importer/loaded/
import-swt-service.store.out-dir-error=clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/files/importer/error/
import-swt-service.common.encoding-source=cp866
import-swt-service.common.insert-batch-size=100

View file

@ -0,0 +1,43 @@
package ru.spcex.clearing.swt.importer.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.spcex.clearing.swt.importer.config.settings.Common;
import ru.spcex.clearing.swt.importer.config.settings.ImportSWTServiceSettings;
import ru.spcex.clearing.swt.importer.logic.data.enums.ETable;
import ru.spcex.clearing.swt.importer.logic.data.tables.AbstractTable;
import ru.spcex.clearing.swt.importer.logic.data.tables.SDf08Table;
import ru.spcex.clearing.swt.importer.logic.data.tables.SDf10Table;
import ru.spcex.clearing.swt.importer.logic.data.tables.SDf13Table;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class ImportSWTServiceTest {
@Bean
public ImportSWTServiceSettings settings(){
ImportSWTServiceSettings settings = new ImportSWTServiceSettings();
Common common = new Common();
common.setEncodingSource("cp866");
settings.setCommon(common);
return settings;
}
@Bean("mapOfTable")
public Map<ETable, AbstractTable> getMapOfTables() {
Map<ETable, AbstractTable> map = new HashMap<>();
map.put(ETable.S_DF_08, new SDf08Table());
map.put(ETable.S_DF_10, new SDf10Table());
map.put(ETable.S_DF_13, new SDf13Table());
return map;
}
@Bean
public HazelcastService imdgProvider(ImdgProvider imdgProvider) {
return (HazelcastService) imdgProvider;
}
}

View file

@ -0,0 +1,54 @@
To:SPCE
From:CSO
Type:599
Date/Time:20230227/0848
:20:SDC230227084839
:21:NONREF
:18A:46
758200000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758299999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758300000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758399999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758330001XT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
704500000AT0:000000000:SOVKB-BV-01:NW:0:<3A><> "<22><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
704599999BT0:000000000:SOVKB-BV-01:NW:0:<3A><> "<22><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
709500000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD> (<28><><EFBFBD>)
746000000AT0:000000000:SOVKB-BV-01:NW:0:<3A><> "<22><><EFBFBD> <20><><EFBFBD><EFBFBD>"
747200000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
750000000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> <20><><EFBFBD>
750099999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> <20><><EFBFBD>
758500000AT0:000000000:SOVKB-BV-01:NW:0:<3A><> <20><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
747100000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
747199999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
751700000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
751799999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
749700000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
759600000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
759699999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
700400000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
700499999BT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
742100000AT0:000000000:SOVKB-BV-01:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
758200000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758299999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758300000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758399999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
758330001XT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>)
704500000AT0:000000000:SU26239RMFS2:NW:0:<3A><> "<22><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
704599999BT0:000000000:SU26239RMFS2:NW:0:<3A><> "<22><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
709500000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD> (<28><><EFBFBD>)
746000000AT0:000000000:SU26239RMFS2:NW:0:<3A><> "<22><><EFBFBD> <20><><EFBFBD><EFBFBD>"
747200000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
750000000AT0:000000002:SU26239RMFS2:NW:0:<3A><><EFBFBD> <20><><EFBFBD>
750099999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> <20><><EFBFBD>
758500000AT0:000000000:SU26239RMFS2:NW:0:<3A><> <20><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
747100000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
747199999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
751700000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
751799999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
749700000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
759600000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
759699999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
700400000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
700499999BT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
742100000AT0:000000000:SU26239RMFS2:NW:0:<3A><><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
2

View file

@ -0,0 +1,7 @@
To:SPCE
From:CSO
Type:010
Date/Time:20221017/1450
:20:RNCB_2210170001-010
758200000AT0:000000010:RNCB-BE-01:<3A><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>)
10

View file

@ -0,0 +1,12 @@
To:SPCEX
From:RDC
Type:596
Date/Time:20220908/1534
:20:220908M58C0001EX
:21:XXX202209081526
:76:EXECUTED
:77A:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View file

@ -0,0 +1,8 @@
To:SPCEX
From:RDC
Type:596
Date/Time:20221111/1314
:20:221111M58C0001EX
:21:XXX202211111247
:76:EXECUTED
:77A:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View file

@ -0,0 +1,70 @@
package ru.spcex.clearing.swt.importer.logic.stages;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.sdf.SDf10;
import ru.clearing.classes.statics.data.sdf.SDf13;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.swt.importer.config.ImportSWTServiceTest;
import ru.spcex.clearing.swt.importer.logic.data.ResultContainer;
import ru.spcex.clearing.swt.importer.logic.data.enums.ETable;
import ru.spcex.clearing.test.config.ImdgTestConfig;
import ru.spcex.clearing.test.config.KafkaTestConfig;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import static ru.spcex.clearing.swt.importer.logic.data.ResultContainer.createNewTask;
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {
ImportToDB.class,
SWTImportKafkaMessenger.class,
ImportSWTServiceTest.class,
ImdgTestConfig.class,
KafkaTestConfig.class})
class ImportToDBTest {
@Autowired
@Qualifier("hazelcastServiceTest")
protected ImdgProvider imdgProvider;
@Autowired
protected ImportToDB importToDB;
@PostConstruct
protected void init() {
waitAvailableImdgProviderAndAddAdminWithDefaultId();
}
@Test
void process() throws IOException {
ETable eTable = ETable.S_DF_13;
File swtFile = new File("D:\\repo\\mfd\\clearing\\clearing-parent\\swt-importer\\src\\test\\java\\ru\\spcex\\clearing\\swt\\importer\\files\\RDC_KS_DF-13_bond_221111131459718.txt");
ResultContainer resultContainer = createNewTask(eTable, swtFile);
resultContainer.setSwtSource(Files.readAllBytes(Paths.get(swtFile.getAbsolutePath())));
importToDB.process(resultContainer);
Imdg<SDf13> df13Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf13, SDf13.class);
df13Imdg.getAllValues();
eTable = ETable.S_DF_10;
swtFile = new File("D:\\repo\\mfd\\clearing\\clearing-parent\\swt-importer\\src\\test\\java\\ru\\spcex\\clearing\\swt\\importer\\files\\RDC_KS_DF-10_221017145001001.txt");
resultContainer = createNewTask(eTable, swtFile);
resultContainer.setSwtSource(Files.readAllBytes(Paths.get(swtFile.getAbsolutePath())));
importToDB.process(resultContainer);
Imdg<SDf10> df10Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf10, SDf10.class);
df10Imdg.getAllValues();
}
}