hotfix
This commit is contained in:
parent
0f891bb8f2
commit
8e78fec954
13 changed files with 69 additions and 165 deletions
|
|
@ -7,11 +7,15 @@ import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
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.logic.stages.*;
|
||||||
import ru.spcex.clearing.dbf.importer.properties.AProperties;
|
import ru.spcex.clearing.dbf.importer.properties.AProperties;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableConfigurationProperties
|
@EnableConfigurationProperties
|
||||||
|
|
@ -49,4 +53,16 @@ public class DBFImporterConfig {
|
||||||
executor.initialize();
|
executor.initialize();
|
||||||
return executor;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,11 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import ru.spcex.clearing.dbf.importer.services.DBFImporterService;
|
import ru.spcex.clearing.dbf.importer.services.DBFImporterService;
|
||||||
|
|
||||||
@Controller("/")
|
@Controller("/")
|
||||||
public class DefaultController implements InitializingBean {
|
public class ImporterController implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final DBFImporterService importerService;
|
private final DBFImporterService importerService;
|
||||||
|
|
||||||
public DefaultController(@Qualifier("dbfImporterService") DBFImporterService importerService) {
|
public ImporterController(@Qualifier("dbfImporterService") DBFImporterService importerService) {
|
||||||
this.importerService = importerService;
|
this.importerService = importerService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2,18 +2,10 @@ package ru.spcex.clearing.dbf.importer.logic.data.enums;
|
||||||
|
|
||||||
public enum ETable {
|
public enum ETable {
|
||||||
DF_01("DF-01"),
|
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_09("DF-09"),
|
||||||
DF_10("DF-10"),
|
|
||||||
DF_11("DF-11"),
|
|
||||||
DF_12("DF-12"),
|
DF_12("DF-12"),
|
||||||
DF_16("DF-16"),
|
DF_16("DF-16");
|
||||||
DF_17("DF-17"),
|
|
||||||
DF_18("DF-18");
|
|
||||||
private final String prefix;
|
private final String prefix;
|
||||||
|
|
||||||
ETable(String prefix) {
|
ETable(String prefix) {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ public abstract class AbstractTable<T extends SpcexObjectBase> {
|
||||||
protected HazelcastService hazelcastService;
|
protected HazelcastService hazelcastService;
|
||||||
protected ImdgHazelcast<T> map;
|
protected ImdgHazelcast<T> map;
|
||||||
protected String filename;
|
protected String filename;
|
||||||
|
protected Long fileId;
|
||||||
|
|
||||||
protected AbstractTable(String prefix, Class<T> clazz, String nameOfMap) {
|
protected AbstractTable(String prefix, Class<T> clazz, String nameOfMap) {
|
||||||
this.prefix = prefix;
|
this.prefix = prefix;
|
||||||
|
|
@ -18,6 +19,10 @@ public abstract class AbstractTable<T extends SpcexObjectBase> {
|
||||||
this.nameOfMap = nameOfMap;
|
this.nameOfMap = nameOfMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFileId(Long fileId) {
|
||||||
|
this.fileId = fileId;
|
||||||
|
}
|
||||||
|
|
||||||
public void setFilename(String filename) {
|
public void setFilename(String filename) {
|
||||||
this.filename = filename;
|
this.filename = filename;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ public class SDf01Table extends AbstractTable<SDf01> {
|
||||||
@Override
|
@Override
|
||||||
public SDf01 getEntity(Object[] entity) {
|
public SDf01 getEntity(Object[] entity) {
|
||||||
SDf01 result = new SDf01();
|
SDf01 result = new SDf01();
|
||||||
|
|
||||||
result.setCurr_code((String) entity[0]);
|
result.setCurr_code((String) entity[0]);
|
||||||
result.setAccount((String) entity[1]);
|
result.setAccount((String) entity[1]);
|
||||||
result.setRemainder((String) entity[2]);
|
result.setRemainder((String) entity[2]);
|
||||||
|
|
@ -34,7 +33,7 @@ public class SDf01Table extends AbstractTable<SDf01> {
|
||||||
result.setFile_type((String) entity[11]);
|
result.setFile_type((String) entity[11]);
|
||||||
result.setFileName(filename);
|
result.setFileName(filename);
|
||||||
result.setGenerationTime(Instant.now());
|
result.setGenerationTime(Instant.now());
|
||||||
result.setGenerationId(0L);
|
result.setGenerationId(fileId);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,14 +20,12 @@ public class SDf12Table extends AbstractTable<SDf12> {
|
||||||
@Override
|
@Override
|
||||||
public SDf12 getEntity(Object[] entity) {
|
public SDf12 getEntity(Object[] entity) {
|
||||||
SDf12 result = new SDf12();
|
SDf12 result = new SDf12();
|
||||||
|
|
||||||
|
|
||||||
result.setAccount((String) entity[0]);
|
result.setAccount((String) entity[0]);
|
||||||
result.setDeal((String) entity[1]);
|
result.setDeal((String) entity[1]);
|
||||||
result.setStatus((BigDecimal) entity[2]);
|
result.setStatus((BigDecimal) entity[2]);
|
||||||
result.setFileName(filename);
|
result.setFileName(filename);
|
||||||
result.setGenerationTime(Instant.now());
|
result.setGenerationTime(Instant.now());
|
||||||
result.setGenerationId(0L);
|
result.setGenerationId(fileId);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -21,8 +21,6 @@ public class SDf16Table extends AbstractTable<SDf16> {
|
||||||
@Override
|
@Override
|
||||||
public SDf16 getEntity(Object[] entity) {
|
public SDf16 getEntity(Object[] entity) {
|
||||||
SDf16 result = new SDf16();
|
SDf16 result = new SDf16();
|
||||||
|
|
||||||
|
|
||||||
result.setDate(TimeUtil.strToInstant((String) entity[0]));
|
result.setDate(TimeUtil.strToInstant((String) entity[0]));
|
||||||
result.setAccount((String) entity[1]);
|
result.setAccount((String) entity[1]);
|
||||||
result.setSum((BigDecimal) entity[2]);
|
result.setSum((BigDecimal) entity[2]);
|
||||||
|
|
@ -34,7 +32,7 @@ public class SDf16Table extends AbstractTable<SDf16> {
|
||||||
result.setNumber((BigDecimal) entity[8]);
|
result.setNumber((BigDecimal) entity[8]);
|
||||||
result.setFileName(filename);
|
result.setFileName(filename);
|
||||||
result.setGenerationTime(Instant.now());
|
result.setGenerationTime(Instant.now());
|
||||||
result.setGenerationId(0L);
|
result.setGenerationId(fileId);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -14,8 +14,7 @@ import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Map;
|
||||||
import static ru.spcex.clearing.dbf.importer.utils.Const.MAPPING_ENUM_TABLE_OBJECT_TABLE;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Заливка проверенных данных в базу
|
* Заливка проверенных данных в базу
|
||||||
|
|
@ -24,13 +23,13 @@ import static ru.spcex.clearing.dbf.importer.utils.Const.MAPPING_ENUM_TABLE_OBJE
|
||||||
public class ImportToDB extends Stage {
|
public class ImportToDB extends Stage {
|
||||||
private final AProperties properties;
|
private final AProperties properties;
|
||||||
private final HazelcastService hazelcastService;
|
private final HazelcastService hazelcastService;
|
||||||
|
private final Map<ETable, AbstractTable> mappingEnumTableObjectTable;
|
||||||
|
|
||||||
public ImportToDB(@Qualifier("dbfImporterProperties") AProperties properties,
|
public ImportToDB(@Qualifier("dbfImporterProperties") AProperties properties,
|
||||||
HazelcastService hazelcastService) {
|
HazelcastService hazelcastService, @Qualifier("mapOfTable") Map<ETable, AbstractTable> mappingEnumTableObjectTable) {
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
this.hazelcastService = hazelcastService;
|
this.hazelcastService = hazelcastService;
|
||||||
|
this.mappingEnumTableObjectTable = mappingEnumTableObjectTable;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -41,9 +40,10 @@ public class ImportToDB extends Stage {
|
||||||
|
|
||||||
try (InputStream is = new ByteArrayInputStream(source);
|
try (InputStream is = new ByteArrayInputStream(source);
|
||||||
DBFReader dbfReader = new DBFReader(is, sourceCharset)) {
|
DBFReader dbfReader = new DBFReader(is, sourceCharset)) {
|
||||||
AbstractTable table = MAPPING_ENUM_TABLE_OBJECT_TABLE.get(currTable);
|
AbstractTable table = mappingEnumTableObjectTable.get(currTable);
|
||||||
table.setHazelcastService(hazelcastService);
|
table.setHazelcastService(hazelcastService);
|
||||||
table.setFilename(resultContainer.getDbfFile().getName());
|
table.setFilename(resultContainer.getDbfFile().getName());
|
||||||
|
table.setFileId(hazelcastService.getImdgIdGenerator().nextId());
|
||||||
for (int i = 0; i < dbfReader.getRecordCount(); i++) {
|
for (int i = 0; i < dbfReader.getRecordCount(); i++) {
|
||||||
Object[] entity = dbfReader.nextRecord();
|
Object[] entity = dbfReader.nextRecord();
|
||||||
table.injectEntity(table.getEntity(entity));
|
table.injectEntity(table.getEntity(entity));
|
||||||
|
|
|
||||||
|
|
@ -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());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Add table
Reference in a new issue