This commit is contained in:
aalehin 2022-09-23 16:02:23 +03:00
parent 0f891bb8f2
commit 8e78fec954
13 changed files with 69 additions and 165 deletions

View file

@ -7,11 +7,15 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.dbf.importer.logic.data.tables.*;
import ru.spcex.clearing.dbf.importer.logic.stages.*;
import ru.spcex.clearing.dbf.importer.properties.AProperties;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@Configuration
@EnableConfigurationProperties
@ -49,4 +53,16 @@ public class DBFImporterConfig {
executor.initialize();
return executor;
}
@Bean("mapOfTable")
public Map<ETable, AbstractTable> getMapOfTables() {
Map<ETable, AbstractTable> map = new HashMap<>();
map.put(ETable.DF_01, new SDf01Table());
map.put(ETable.DF_09, new SDf09Table());
map.put(ETable.DF_12, new SDf12Table());
map.put(ETable.DF_16, new SDf16Table());
return map;
}
}

View file

@ -13,11 +13,11 @@ import org.springframework.web.bind.annotation.ResponseBody;
import ru.spcex.clearing.dbf.importer.services.DBFImporterService;
@Controller("/")
public class DefaultController implements InitializingBean {
public class ImporterController implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final DBFImporterService importerService;
public DefaultController(@Qualifier("dbfImporterService") DBFImporterService importerService) {
public ImporterController(@Qualifier("dbfImporterService") DBFImporterService importerService) {
this.importerService = importerService;
}

View file

@ -2,18 +2,10 @@ package ru.spcex.clearing.dbf.importer.logic.data.enums;
public enum ETable {
DF_01("DF-01"),
DF_02("DF-02"),
DF_03("DF-03"),
DF_04("DF-04"),
DF_05("DF-05"),
DF_08("DF-08"),
DF_09("DF-09"),
DF_10("DF-10"),
DF_11("DF-11"),
DF_12("DF-12"),
DF_16("DF-16"),
DF_17("DF-17"),
DF_18("DF-18");
DF_16("DF-16");
private final String prefix;
ETable(String prefix) {

View file

@ -11,6 +11,7 @@ public abstract class AbstractTable<T extends SpcexObjectBase> {
protected HazelcastService hazelcastService;
protected ImdgHazelcast<T> map;
protected String filename;
protected Long fileId;
protected AbstractTable(String prefix, Class<T> clazz, String nameOfMap) {
this.prefix = prefix;
@ -18,6 +19,10 @@ public abstract class AbstractTable<T extends SpcexObjectBase> {
this.nameOfMap = nameOfMap;
}
public void setFileId(Long fileId) {
this.fileId = fileId;
}
public void setFilename(String filename) {
this.filename = filename;
}

View file

@ -19,7 +19,6 @@ public class SDf01Table extends AbstractTable<SDf01> {
@Override
public SDf01 getEntity(Object[] entity) {
SDf01 result = new SDf01();
result.setCurr_code((String) entity[0]);
result.setAccount((String) entity[1]);
result.setRemainder((String) entity[2]);
@ -34,7 +33,7 @@ public class SDf01Table extends AbstractTable<SDf01> {
result.setFile_type((String) entity[11]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
result.setGenerationId(fileId);
return result;
}

View file

@ -1,47 +0,0 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf02;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.utils.time.TimeUtil;
import java.time.Instant;
public class SDf02Table extends AbstractTable<SDf02> {
private static final String PREFIX = ETable.DF_02.name();
private static final Class<SDf02> CLAZZ = SDf02.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf02;
public SDf02Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf02 getEntity(Object[] entity) {
SDf02 result = new SDf02();
result.setCurr_code((String) entity[0]);
result.setAccount((String) entity[1]);
result.setRemainder((String) entity[2]);
result.setDeal((String) entity[3]);
result.setAcc_code((String) entity[4]);
result.setDat((String) entity[5]);
result.setMarket((String) entity[6]);
result.setAcc_name((String) entity[7]);
result.setAcc_type((String) entity[8]);
result.setSumengage((String) entity[9]);
result.setSumunblock((String) entity[10]);
result.setFile_type((String) entity[11]);
result.setResult((String) entity[12]);
result.setGenerationTime(TimeUtil.strToInstant((String) entity[13]));
result.setGenerationId((Long) entity[14]);
result.setInSDf01Id((Long) entity[15]);
//result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
return result;
}
}

View file

@ -1,35 +0,0 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf08;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.utils.time.TimeUtil;
import java.math.BigDecimal;
import java.time.Instant;
public class SDf08Table extends AbstractTable<SDf08> {
private static final String PREFIX = ETable.DF_08.name();
private static final Class<SDf08> CLAZZ = SDf08.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf08;
public SDf08Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf08 getEntity(Object[] entity) {
SDf08 result = new SDf08();
result.setNumber((BigDecimal) entity[0]);
result.setDatetime(TimeUtil.strToInstant((String) entity[1]));
//result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
return result;
}
}

View file

@ -0,0 +1,35 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf09;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.math.BigDecimal;
import java.time.Instant;
public class SDf09Table extends AbstractTable<SDf09> {
private static final String PREFIX = ETable.DF_09.name();
private static final Class<SDf09> CLAZZ = SDf09.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf09;
public SDf09Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf09 getEntity(Object[] entity) {
SDf09 result = new SDf09();
result.setAccount((String) entity[0]);
result.setSum((BigDecimal) entity[1]);
result.setMarket((String) entity[2]);
result.setType((String) entity[3]);
result.setNumber((BigDecimal) entity[4]);
result.setInn((BigDecimal) entity[5]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(fileId);
return result;
}
}

View file

@ -20,14 +20,12 @@ public class SDf12Table extends AbstractTable<SDf12> {
@Override
public SDf12 getEntity(Object[] entity) {
SDf12 result = new SDf12();
result.setAccount((String) entity[0]);
result.setDeal((String) entity[1]);
result.setStatus((BigDecimal) entity[2]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
result.setGenerationId(fileId);
return result;
}
}

View file

@ -21,8 +21,6 @@ public class SDf16Table extends AbstractTable<SDf16> {
@Override
public SDf16 getEntity(Object[] entity) {
SDf16 result = new SDf16();
result.setDate(TimeUtil.strToInstant((String) entity[0]));
result.setAccount((String) entity[1]);
result.setSum((BigDecimal) entity[2]);
@ -34,7 +32,7 @@ public class SDf16Table extends AbstractTable<SDf16> {
result.setNumber((BigDecimal) entity[8]);
result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
result.setGenerationId(fileId);
return result;
}
}

View file

@ -1,34 +0,0 @@
package ru.spcex.clearing.dbf.importer.logic.data.tables;
import ru.clearing.classes.statics.data.sdf.SDf18;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.math.BigDecimal;
import java.time.Instant;
public class SDf18Table extends AbstractTable<SDf18> {
private static final String PREFIX = ETable.DF_18.name();
private static final Class<SDf18> CLAZZ = SDf18.class;
private static final String NAME_OF_HZ_MAP = IMDGDistributedNames.Map_SDf18;
public SDf18Table() {
super(PREFIX, CLAZZ, NAME_OF_HZ_MAP);
}
@Override
public SDf18 getEntity(Object[] entity) {
SDf18 result = new SDf18();
result.setAccount((String) entity[0]);
result.setDeal((String) entity[1]);
result.setStatus((BigDecimal) entity[2]);
result.setResult((BigDecimal) entity[3]);
// result.setFileName(filename);
result.setGenerationTime(Instant.now());
result.setGenerationId(0L);
result.setInSDf12Id((Long) entity[6]);
return result;
}
}

View file

@ -14,8 +14,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import static ru.spcex.clearing.dbf.importer.utils.Const.MAPPING_ENUM_TABLE_OBJECT_TABLE;
import java.util.Map;
/**
* Заливка проверенных данных в базу
@ -24,13 +23,13 @@ import static ru.spcex.clearing.dbf.importer.utils.Const.MAPPING_ENUM_TABLE_OBJE
public class ImportToDB extends Stage {
private final AProperties properties;
private final HazelcastService hazelcastService;
private final Map<ETable, AbstractTable> mappingEnumTableObjectTable;
public ImportToDB(@Qualifier("dbfImporterProperties") AProperties properties,
HazelcastService hazelcastService) {
HazelcastService hazelcastService, @Qualifier("mapOfTable") Map<ETable, AbstractTable> mappingEnumTableObjectTable) {
this.properties = properties;
this.hazelcastService = hazelcastService;
this.mappingEnumTableObjectTable = mappingEnumTableObjectTable;
}
@Override
@ -41,9 +40,10 @@ public class ImportToDB extends Stage {
try (InputStream is = new ByteArrayInputStream(source);
DBFReader dbfReader = new DBFReader(is, sourceCharset)) {
AbstractTable table = MAPPING_ENUM_TABLE_OBJECT_TABLE.get(currTable);
AbstractTable table = mappingEnumTableObjectTable.get(currTable);
table.setHazelcastService(hazelcastService);
table.setFilename(resultContainer.getDbfFile().getName());
table.setFileId(hazelcastService.getImdgIdGenerator().nextId());
for (int i = 0; i < dbfReader.getRecordCount(); i++) {
Object[] entity = dbfReader.nextRecord();
table.injectEntity(table.getEntity(entity));

View file

@ -1,23 +0,0 @@
package ru.spcex.clearing.dbf.importer.utils;
import ru.spcex.clearing.dbf.importer.logic.data.enums.ETable;
import ru.spcex.clearing.dbf.importer.logic.data.tables.*;
import java.util.HashMap;
import java.util.Map;
public class Const {
public static final Map<ETable, AbstractTable> MAPPING_ENUM_TABLE_OBJECT_TABLE = new HashMap<>();
static {
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_01, new SDf01Table());
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_02, new SDf02Table());
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_08, new SDf08Table());
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_12, new SDf12Table());
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_16, new SDf16Table());
MAPPING_ENUM_TABLE_OBJECT_TABLE.put(ETable.DF_18, new SDf18Table());
}
}