TUTDF processing added, localization added

This commit is contained in:
Ivan Nikolaev-Axenov 2026-05-27 13:02:00 +03:00
parent deae009128
commit 4d9cdf9c9f
80 changed files with 2158 additions and 484 deletions

View file

@ -51,6 +51,13 @@ public class FileAggregatorCommon {
"RU_CONTRACT_TERMS_CHANGES", "RU_CONTRACT_TERMS_CHANGES",
"RU_ALL_ARREARS" "RU_ALL_ARREARS"
); );
private static final List<String> ACCOUNT_CHILD_TABLES = List.of(
"ACCOUNT_AMEND",
"PAYMENT",
"COLLATERAL",
"GUARANTOR",
"BANK_GUARANTEE"
);
void aggregateRuUidFiles(BufferedWriter aggregatedFileWriter, void aggregateRuUidFiles(BufferedWriter aggregatedFileWriter,
Map<String, Path> tableFileMap, Map<String, Path> tableFileMap,
@ -117,7 +124,7 @@ public class FileAggregatorCommon {
List<String> childLineList = Arrays.asList(childLine.split("%%%")); List<String> childLineList = Arrays.asList(childLine.split("%%%"));
Optional<String> foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM"); Optional<String> foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) { if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found!"); throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
} }
Long childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get()); Long childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
@ -126,7 +133,7 @@ public class FileAggregatorCommon {
childLineList = Arrays.asList(childLine.split("%%%")); childLineList = Arrays.asList(childLine.split("%%%"));
foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM"); foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) { if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found!"); throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
} }
childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get()); childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
@ -157,7 +164,7 @@ public class FileAggregatorCommon {
childLineList = Arrays.asList(childLine.split("%%%")); childLineList = Arrays.asList(childLine.split("%%%"));
foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM"); foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) { if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found!"); throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
} }
childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get()); childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
@ -269,4 +276,134 @@ public class FileAggregatorCommon {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
void aggregateAccountFiles(BufferedWriter aggregatedFileWriter,
Map<String, Path> tableFileMap,
String memberCode,
String acctNum,
String uuid,
String serialNum,
MutableLong rowCounter) {
try (BufferedReader accountFileReader = Files.newBufferedReader(tableFileMap.get("ACCOUNT"))) {
Map<String, MovableBufferedReader> childTablesReadersMap = new LinkedHashMap<>();
for (String tableName : ACCOUNT_CHILD_TABLES) {
if (!tableFileMap.containsKey(tableName)) {
continue;
}
MovableBufferedReader childTablesReader = new MovableBufferedReader(Files.newBufferedReader(tableFileMap.get(tableName)));
if (childTablesReader.getCurrentLine() != null) {
childTablesReadersMap.put(tableName, childTablesReader);
}
}
String accountLine;
while ((accountLine = accountFileReader.readLine()) != null) {
List<String> lineList = Arrays.asList(accountLine.split("%%%"));
Optional<String> foundMemberCode = IndicSearchCommon.getRowValue(lineList, "MEMBER_CODE");
if (foundMemberCode.isPresent() && !foundMemberCode.get().startsWith(memberCode)) {
continue;
}
if (acctNum != null) {
Optional<String> foundAcctNum = IndicSearchCommon.getRowValue(lineList, "ACCT_NUM");
if (foundAcctNum.isPresent() && !foundAcctNum.get().equals(acctNum)) {
continue;
}
}
if (uuid != null) {
Optional<String> foundUuid = IndicSearchCommon.getRowValue(lineList, "UUID");
if (foundUuid.isPresent() && !foundUuid.get().equals(uuid)) {
continue;
}
}
Optional<String> foundAccountSerialNum = IndicSearchCommon.getRowValue(lineList, "SERIAL_NUM");
if (serialNum != null) {
if (foundAccountSerialNum.isPresent() && !foundAccountSerialNum.get().equals(serialNum)) {
continue;
}
}
aggregatedFileWriter.write(accountLine);
aggregatedFileWriter.newLine();
rowCounter.increment();
if (foundAccountSerialNum.isEmpty()) {
throw new RuntimeException("SERIAL_NUM was not found!");
}
Long accountSerialNum = Long.parseLong(foundAccountSerialNum.get());
for (Map.Entry<String, MovableBufferedReader> entry : childTablesReadersMap.entrySet()) {
String childTableName = entry.getKey();
MovableBufferedReader childReader = entry.getValue();
String childLine = childReader.getCurrentLine();
if (childLine == null) {
continue;
}
List<String> childLineList = Arrays.asList(childLine.split("%%%"));
Optional<String> foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
}
Long childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
if (accountSerialNum > childAccSerialNum) {
while ((childLine = childReader.nextLine()) != null) {
childLineList = Arrays.asList(childLine.split("%%%"));
foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
}
childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
if (childAccSerialNum.equals(accountSerialNum)) {
aggregatedFileWriter.write(childLine);
aggregatedFileWriter.newLine();
rowCounter.increment();
}
if (childAccSerialNum > accountSerialNum) {
break;
}
}
} else if (accountSerialNum.equals(childAccSerialNum)) {
aggregatedFileWriter.write(childLine);
aggregatedFileWriter.newLine();
rowCounter.increment();
while ((childLine = childReader.nextLine()) != null) {
childLineList = Arrays.asList(childLine.split("%%%"));
foundChildAccSerialNum = IndicSearchCommon.getRowValue(childLineList, "ACC_SERIAL_NUM");
if (foundChildAccSerialNum.isEmpty()) {
throw new RuntimeException("ACC_SERIAL_NUM was not found in table " + childTableName);
}
childAccSerialNum = Long.parseLong(foundChildAccSerialNum.get());
if (childAccSerialNum.equals(accountSerialNum)) {
aggregatedFileWriter.write(childLine);
aggregatedFileWriter.newLine();
rowCounter.increment();
}
if (childAccSerialNum > accountSerialNum) {
break;
}
}
}
}
}
for (MovableBufferedReader br : childTablesReadersMap.values()) {
br.getReader().close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
} }

View file

@ -0,0 +1,53 @@
package ru.nbch.indicsearchservice.aggregator;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang3.mutable.MutableLong;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
@Component
public class TutdfAccountFileAggregator implements FileAggregator {
private final ApplicationSettings settings;
private final FileAggregatorCommon fileAggregatorCommon;
public TutdfAccountFileAggregator(ApplicationSettings settings,
FileAggregatorCommon fileAggregatorCommon) {
this.settings = settings;
this.fileAggregatorCommon = fileAggregatorCommon;
}
@Override
public Path aggregateFiles(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap, MutableLong rowCounter) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.UUID || searchParameter == SearchParameter.ACCT_NUM || searchParameter == SearchParameter.SERIAL_NUM_ACCT) {
Path aggregatedFile = settings.getStorageDirectory().toPath().resolve("AGGREGATED-" + taskId + ".csv");
try (BufferedWriter aggregatedFileWriter = Files.newBufferedWriter(aggregatedFile, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
if (searchParameter == SearchParameter.UUID) {
fileAggregatorCommon.aggregateAccountFiles(aggregatedFileWriter, tableFileMap, memberCode, null, searchValue, null, rowCounter);
} else if (searchParameter == SearchParameter.ACCT_NUM) {
fileAggregatorCommon.aggregateAccountFiles(aggregatedFileWriter, tableFileMap, memberCode, searchValue, null, null, rowCounter);
} else {
fileAggregatorCommon.aggregateAccountFiles(aggregatedFileWriter, tableFileMap, memberCode, null, null, searchValue, rowCounter);
}
aggregatedFileWriter.write("EOF");
} catch (IOException e) {
throw new RuntimeException(e);
}
return aggregatedFile;
}
}
return null;
}
}

View file

@ -0,0 +1,87 @@
package ru.nbch.indicsearchservice.aggregator;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import org.apache.commons.lang3.mutable.MutableLong;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchCommon;
@Component
public class TutdfFidPassportOgrnFileAggregator implements FileAggregator {
private static final List<String> REQUIRED_TABLES = List.of(
"ACCOUNT",
"INFORMATION",
"BANKRUPTCY",
"CONSUMER_BANKRUPTCY",
"LEGAL"
);
private final ApplicationSettings settings;
private final FileAggregatorCommon fileAggregatorCommon;
public TutdfFidPassportOgrnFileAggregator(ApplicationSettings settings,
FileAggregatorCommon fileAggregatorCommon) {
this.settings = settings;
this.fileAggregatorCommon = fileAggregatorCommon;
}
@Override
public Path aggregateFiles(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
MutableLong rowCounter) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.FID || searchParameter == SearchParameter.OGRN || searchParameter == SearchParameter.PASSPORT) {
Path aggregatedFile = settings.getStorageDirectory().toPath().resolve("AGGREGATED-" + taskId + ".csv");
try (BufferedWriter aggregatedFileWriter = Files.newBufferedWriter(aggregatedFile, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
for (String tableName : REQUIRED_TABLES) {
if (tableName.equals("ACCOUNT")) {
fileAggregatorCommon.aggregateAccountFiles(aggregatedFileWriter, tableFileMap, memberCode, null, null, null, rowCounter);
} else {
try (BufferedReader reader = Files.newBufferedReader(tableFileMap.get(tableName))) {
String line;
while ((line = reader.readLine()) != null) {
Optional<String> foundMemberCode = IndicSearchCommon.getRowValue(line, "MEMBER_CODE");
if (foundMemberCode.isPresent() && !foundMemberCode.get().startsWith(memberCode)) {
continue;
}
aggregatedFileWriter.write(line);
aggregatedFileWriter.newLine();
rowCounter.increment();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
aggregatedFileWriter.write("EOF");
} catch (IOException e) {
throw new RuntimeException(e);
}
return aggregatedFile;
}
}
return null;
}
}

View file

@ -0,0 +1,75 @@
package ru.nbch.indicsearchservice.aggregator;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import org.apache.commons.lang3.mutable.MutableLong;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchCommon;
@Component
public class TutdfInformationFileAggregator implements FileAggregator {
private final ApplicationSettings settings;
public TutdfInformationFileAggregator(ApplicationSettings settings) {
this.settings = settings;
}
@Override
public Path aggregateFiles(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap, MutableLong rowCounter) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.OLD_APP_NUM || searchParameter == SearchParameter.SERIAL_NUM_APP) {
Path aggregatedFile = settings.getStorageDirectory().toPath().resolve("AGGREGATED-" + taskId + ".csv");
try (BufferedWriter aggregatedFileWriter = Files.newBufferedWriter(aggregatedFile, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
BufferedReader reader = Files.newBufferedReader(tableFileMap.get("INFORMATION"))) {
String line;
while ((line = reader.readLine()) != null) {
Optional<String> foundMemberCode = IndicSearchCommon.getRowValue(line, "MEMBER_CODE");
if (foundMemberCode.isPresent() && !foundMemberCode.get().startsWith(memberCode)) {
continue;
}
if (searchParameter == SearchParameter.OLD_APP_NUM && searchValue != null) {
Optional<String> foundOldAppNum = IndicSearchCommon.getRowValue(line, "APP_NUM");
if (foundOldAppNum.isPresent() && !foundOldAppNum.get().equals(searchValue)) {
continue;
}
}
if (searchParameter == SearchParameter.SERIAL_NUM_APP && searchValue != null) {
Optional<String> foundSerialNum = IndicSearchCommon.getRowValue(line, "SERIAL_NUM");
if (foundSerialNum.isPresent() && !foundSerialNum.get().equals(searchValue)) {
continue;
}
}
aggregatedFileWriter.write(line);
aggregatedFileWriter.newLine();
rowCounter.increment();
}
aggregatedFileWriter.write("EOF");
} catch (IOException e) {
throw new RuntimeException(e);
}
return aggregatedFile;
}
}
return null;
}
}

View file

@ -8,13 +8,17 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.lang3.mutable.MutableLong; import org.apache.commons.lang3.mutable.MutableLong;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CellStyle;
@ -29,6 +33,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.TableMetaData;
@Component @Component
public class ExcelExporter implements Exporter { public class ExcelExporter implements Exporter {
@ -41,7 +46,7 @@ public class ExcelExporter implements Exporter {
this.settings = settings; this.settings = settings;
} }
public void writeExcelFile(@Nullable Path aggregatedFile, UUID taskId, Long totalRows) { public void writeExcelFile(@Nullable Path aggregatedFile, UUID taskId, Long totalRows, Map<String, TableMetaData> tableMetaDataMap) {
if (aggregatedFile == null) { if (aggregatedFile == null) {
return; return;
} }
@ -72,7 +77,7 @@ public class ExcelExporter implements Exporter {
if (!isFirst && (FIRST_LEVEL_TABLES.contains(lineList.getFirst()) || line.equals("EOF"))) { if (!isFirst && (FIRST_LEVEL_TABLES.contains(lineList.getFirst()) || line.equals("EOF"))) {
lastTableName = rows.getFirst().split("%%%")[0]; lastTableName = rows.getFirst().split("%%%")[0];
writeToExcel(workbook, rows, sheetRowCounter, sheetTableCounter, headerCellStyle, cellStyle); writeToExcel(workbook, rows, sheetRowCounter, sheetTableCounter, headerCellStyle, cellStyle, tableMetaDataMap);
if (lastTableName != null && !lastTableName.equals(lineList.getFirst())) { if (lastTableName != null && !lastTableName.equals(lineList.getFirst())) {
sheetRowCounter.setValue(0L); sheetRowCounter.setValue(0L);
sheetTableCounter.setValue(1L); sheetTableCounter.setValue(1L);
@ -95,7 +100,8 @@ public class ExcelExporter implements Exporter {
MutableLong sheetRowCounter, MutableLong sheetRowCounter,
MutableLong sheetTableCounter, MutableLong sheetTableCounter,
CellStyle headerCellStyle, CellStyle headerCellStyle,
CellStyle cellStyle) { CellStyle cellStyle,
Map<String, TableMetaData> tableMetaDataMap) {
if (rows == null || rows.isEmpty()) { if (rows == null || rows.isEmpty()) {
return; return;
} }
@ -115,30 +121,41 @@ public class ExcelExporter implements Exporter {
List<String> rowList = Arrays.asList(row.split("%%%", -1)); List<String> rowList = Arrays.asList(row.split("%%%", -1));
String tableName = rowList.getFirst(); String tableName = rowList.getFirst();
TableMetaData rowMetaData = tableMetaDataMap.get(tableName);
Set<String> allowedFields = new HashSet<>();
if (rowMetaData != null && rowMetaData.getFieldMetaData() != null) {
allowedFields = rowMetaData.getFieldMetaData().keySet().stream()
.map(String::toUpperCase)
.collect(Collectors.toSet());
}
List<String> rowSublist = rowList.subList(1, rowList.size()); List<String> rowSublist = rowList.subList(1, rowList.size());
Map<String, String> rowValues = new LinkedHashMap<>(); Map<String, Pair<String, String>> rowValues = new LinkedHashMap<>();
for (int i = 0; i + 1 <= rowSublist.size(); i = i + 2) { for (int i = 0; i + 1 <= rowSublist.size(); i = i + 2) {
try { String columnName = rowSublist.get(i);
rowValues.put(rowSublist.get(i), rowSublist.get(i + 1)); String columnValue = rowSublist.get(i + 1);
} catch (Exception e) {
throw new RuntimeException(e); if (columnName != null && allowedFields.contains(columnName.toUpperCase())) {
rowValues.put(columnName, Pair.of(rowMetaData.getFieldMetaData().get(columnName).fieldLocalization(), columnValue));
} }
} }
createHeaderRow( createHeaderRow(
tableName, rowMetaData != null ? rowMetaData.getTableNameLocalization() : tableName,
tableSheet, tableSheet,
sheetRowCounter, sheetRowCounter,
headerCellStyle headerCellStyle
); );
for (Map.Entry<String, String> entry : rowValues.entrySet()) { for (Map.Entry<String, Pair<String, String>> entry : rowValues.entrySet()) {
String columnName = entry.getKey(); String columnName = entry.getKey();
String columnValue = entry.getValue(); String columnLocalization = entry.getValue().getLeft();
String columnValue = entry.getValue().getRight();
writeFieldDataIntoSheetRow( writeFieldDataIntoSheetRow(
columnName, columnName,
columnName, columnLocalization,
columnValue, columnValue,
tableSheet, tableSheet,
sheetRowCounter, sheetRowCounter,

View file

@ -7,14 +7,19 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.TableData; import ru.nbch.indicsearchservice.model.TableData;
import ru.nbch.indicsearchservice.model.TableMetaData;
import tools.jackson.core.JsonGenerator; import tools.jackson.core.JsonGenerator;
import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.json.JsonMapper;
@ -31,7 +36,7 @@ public class JsonExporter implements Exporter {
this.jsonMapper = jsonMapper; this.jsonMapper = jsonMapper;
} }
public void writeJsonFile(@Nullable Path aggregatedFile, UUID taskId) { public void writeJsonFile(@Nullable Path aggregatedFile, UUID taskId, Map<String, TableMetaData> tableMetaDataMap) {
if (aggregatedFile == null) { if (aggregatedFile == null) {
return; return;
} }
@ -57,7 +62,7 @@ public class JsonExporter implements Exporter {
String tableName = lineList.getFirst(); String tableName = lineList.getFirst();
if (!isFirst && (FIRST_LEVEL_TABLES.contains(tableName) || line.equals("EOF"))) { if (!isFirst && (FIRST_LEVEL_TABLES.contains(tableName) || line.equals("EOF"))) {
TableData parentData = buildTableDataHierarchy(rows); TableData parentData = buildTableDataHierarchy(rows, tableMetaDataMap);
if (parentData != null) { if (parentData != null) {
jsonMapper.writeValue(jsonGenerator, parentData); jsonMapper.writeValue(jsonGenerator, parentData);
} }
@ -74,18 +79,18 @@ public class JsonExporter implements Exporter {
} }
} }
private TableData buildTableDataHierarchy(List<String> rows) { private TableData buildTableDataHierarchy(List<String> rows, Map<String, TableMetaData> tableMetaDataMap) {
if (rows == null || rows.isEmpty()) { if (rows == null || rows.isEmpty()) {
return null; return null;
} }
TableData parentTableData = parseSingleRow(rows.getFirst()); TableData parentTableData = parseSingleRow(rows.getFirst(), tableMetaDataMap);
if (parentTableData == null) { if (parentTableData == null) {
return null; return null;
} }
for (int i = 1; i < rows.size(); i++) { for (int i = 1; i < rows.size(); i++) {
TableData childTableData = parseSingleRow(rows.get(i)); TableData childTableData = parseSingleRow(rows.get(i), tableMetaDataMap);
if (childTableData != null) { if (childTableData != null) {
parentTableData.getRelatedTableData().add(childTableData); parentTableData.getRelatedTableData().add(childTableData);
} }
@ -94,7 +99,7 @@ public class JsonExporter implements Exporter {
return parentTableData; return parentTableData;
} }
private TableData parseSingleRow(String row) { private TableData parseSingleRow(String row, Map<String, TableMetaData> tableMetaDataMap) {
String[] parts = row.split("%%%", -1); String[] parts = row.split("%%%", -1);
if (parts.length == 0 || parts[0].isEmpty()) { if (parts.length == 0 || parts[0].isEmpty()) {
@ -102,6 +107,12 @@ public class JsonExporter implements Exporter {
} }
String tableName = parts[0]; String tableName = parts[0];
TableMetaData metaData = tableMetaDataMap.get(tableName);
Set<String> allowedFields = metaData != null ?
metaData.getFieldMetaData().keySet().stream().map(String::toUpperCase).collect(Collectors.toSet()) :
new HashSet<>();
List<TableData.FieldData> fieldData = new ArrayList<>(); List<TableData.FieldData> fieldData = new ArrayList<>();
for (int i = 1; i + 1 < parts.length; i += 2) { for (int i = 1; i + 1 < parts.length; i += 2) {
@ -109,9 +120,11 @@ public class JsonExporter implements Exporter {
String columnValue = parts[i + 1]; String columnValue = parts[i + 1];
if (columnName != null && !columnName.isEmpty()) { if (columnName != null && !columnName.isEmpty()) {
if (allowedFields.contains(columnName.toUpperCase())) {
fieldData.add(new TableData.FieldData(columnName, columnValue)); fieldData.add(new TableData.FieldData(columnName, columnValue));
} }
} }
}
return new TableData(tableName, fieldData); return new TableData(tableName, fieldData);
} }

View file

@ -1,5 +0,0 @@
package ru.nbch.indicsearchservice.filter;
public interface TableFilter {
}

View file

@ -1,50 +0,0 @@
package ru.nbch.indicsearchservice.filter.firstlevel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.model.TableData;
@Component
public class DefaultFirstLevelTableFilter implements FirstLevelTableFilter {
private static final Set<String> SUPPORTED_TABLE_NAMES = Set.of(
"RU_UID",
"RU_APPLICATION",
"RU_OBLIGPARTTAKE",
"RU_BANKRUPTCY",
"RU_SETTLED",
"RU_OTHERLEGAL",
"RU_CAPABILITY",
"RU_DEBT_BURDEN_INFO",
"ACCOUNT",
"INFORMATION",
"BANKRUPTCY",
"CONSUMER_BANKRUPTCY",
"LEGAL"
);
@Override
public List<TableData> applyFilter(Map<String, List<TableData>> tableDataMapByFid, String memberCode) {
List<TableData> result = new ArrayList<>();
for (Map.Entry<String, List<TableData>> entry : tableDataMapByFid.entrySet()) {
String tableName = entry.getKey();
List<TableData> tableRows = entry.getValue();
if (SUPPORTED_TABLE_NAMES.contains(tableName)) {
List<TableData> tableRowsWithMatchingMemberCode = tableRows.stream()
.filter(row -> row.getFieldData().stream()
.anyMatch(field -> "MEMBER_CODE".equals(field.columnName()) &&
field.columnValue() != null &&
field.columnValue().toString().startsWith(memberCode)))
.toList();
result.addAll(tableRowsWithMatchingMemberCode);
}
}
return result;
}
}

View file

@ -1,10 +0,0 @@
package ru.nbch.indicsearchservice.filter.firstlevel;
import java.util.List;
import java.util.Map;
import ru.nbch.indicsearchservice.filter.TableFilter;
import ru.nbch.indicsearchservice.model.TableData;
public interface FirstLevelTableFilter extends TableFilter {
List<TableData> applyFilter(Map<String, List<TableData>> tableDataMapByFid, String memberCode);
}

View file

@ -1,69 +0,0 @@
package ru.nbch.indicsearchservice.filter.secondlevel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.model.TableData;
@Component
public class AccountSecondLevelTableFilter implements SecondLevelTableFilter {
private static final Set<String> SUPPORTED_TABLE_NAMES = Set.of(
"ACCOUNT_AMEND",
"PAYMENT",
"COLLATERAL",
"GUARANTOR",
"BANK_GUARANTEE"
);
@Override
public void applyFilter(List<TableData> firstLevelTableDataList, Map<String, List<TableData>> tableDataMapByFid) {
if (firstLevelTableDataList == null || firstLevelTableDataList.isEmpty() || tableDataMapByFid == null) {
return;
}
Map<Object, List<TableData>> relatedTablesByAccSerialNum = new HashMap<>();
for (String supportedTableName : SUPPORTED_TABLE_NAMES) {
List<TableData> childTables = tableDataMapByFid.get(supportedTableName);
if (childTables != null) {
for (TableData childTable : childTables) {
Object accSerialNum = getFieldValue(childTable, "ACC_SERIAL_NUM");
if (accSerialNum != null) {
relatedTablesByAccSerialNum
.computeIfAbsent(accSerialNum, k -> new ArrayList<>())
.add(childTable);
}
}
}
}
for (TableData parentTable : firstLevelTableDataList) {
Object serialNum = getFieldValue(parentTable, "SERIAL_NUM");
if (serialNum != null) {
List<TableData> matchedParentTables = relatedTablesByAccSerialNum.get(serialNum);
if (matchedParentTables != null) {
parentTable.getRelatedTableData().addAll(matchedParentTables);
}
}
}
}
private Object getFieldValue(TableData tableData, String targetColumnName) {
if (tableData.getFieldData() == null) {
return null;
}
for (TableData.FieldData field : tableData.getFieldData()) {
if (targetColumnName.equals(field.columnName())) {
return field.columnValue();
}
}
return null;
}
}

View file

@ -1,77 +0,0 @@
package ru.nbch.indicsearchservice.filter.secondlevel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.model.TableData;
@Component
public class RuUidSecondLevelTableFilter implements SecondLevelTableFilter {
private static final Set<String> SUPPORTED_TABLE_NAMES = Set.of(
"RU_ACCOUNT_AMT",
"RU_AMENDMENT",
"RU_ARREAR",
"RU_COBORROWER",
"RU_DUEARREAR",
"RU_FUNDDATE",
"RU_MONTHAVERPAYMT",
"RU_OVERALLVAL",
"RU_PASTDUEARREAR",
"RU_PAYMT",
"RU_PAYMT_CONDITION",
"RU_SOURCENONMONETOBLIG",
"RU_TRADE"
);
@Override
public void applyFilter(List<TableData> firstLevelTableDataList, Map<String, List<TableData>> tableDataMapByFid) {
if (firstLevelTableDataList == null || firstLevelTableDataList.isEmpty() || tableDataMapByFid == null) {
return;
}
Map<Object, List<TableData>> relatedTablesByAccSerialNum = new HashMap<>();
for (String supportedTableName : SUPPORTED_TABLE_NAMES) {
List<TableData> childTables = tableDataMapByFid.get(supportedTableName);
if (childTables != null) {
for (TableData childTable : childTables) {
Object accSerialNum = getFieldValue(childTable, "ACC_SERIAL_NUM");
if (accSerialNum != null) {
relatedTablesByAccSerialNum
.computeIfAbsent(accSerialNum, k -> new ArrayList<>())
.add(childTable);
}
}
}
}
for (TableData parentTable : firstLevelTableDataList) {
Object serialNum = getFieldValue(parentTable, "SERIAL_NUM");
if (serialNum != null) {
List<TableData> matchedParentTables = relatedTablesByAccSerialNum.get(serialNum);
if (matchedParentTables != null) {
parentTable.getRelatedTableData().addAll(matchedParentTables);
}
}
}
}
private Object getFieldValue(TableData tableData, String targetColumnName) {
if (tableData.getFieldData() == null) {
return null;
}
for (TableData.FieldData field : tableData.getFieldData()) {
if (targetColumnName.equals(field.columnName())) {
return field.columnValue();
}
}
return null;
}
}

View file

@ -1,10 +0,0 @@
package ru.nbch.indicsearchservice.filter.secondlevel;
import java.util.List;
import java.util.Map;
import ru.nbch.indicsearchservice.filter.TableFilter;
import ru.nbch.indicsearchservice.model.TableData;
public interface SecondLevelTableFilter extends TableFilter {
void applyFilter(List<TableData> firstLevelTableDataList, Map<String, List<TableData>> tableDataMapByFid);
}

View file

@ -1,88 +0,0 @@
package ru.nbch.indicsearchservice.filter.thirdlevel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.model.TableData;
@Component
public class BlocksThirdLevelTableFilter implements ThirdLevelTableFilter {
private static final Set<String> SUPPORTED_TABLE_NAMES = Set.of(
"RU_COLLATERAL_BLOCKS",
"RU_BANKRUPTCY_BLOCKS"
);
@Override
public void applyFilter(List<TableData> firstLevelTableDataList, Map<String, List<TableData>> tableDataMapByFid) {
if (firstLevelTableDataList == null || firstLevelTableDataList.isEmpty() || tableDataMapByFid == null) {
return;
}
Map<String, Map<Object, List<TableData>>> childTablesByParentAndSerial = new HashMap<>();
for (String tableName : SUPPORTED_TABLE_NAMES) {
String parentTableName = tableName.replace("_BLOCKS", "");
String childTableName = tableName;
List<TableData> childTables = tableDataMapByFid.get(childTableName);
if (childTables != null) {
Map<Object, List<TableData>> groupedChildTables = new HashMap<>();
for (TableData childTable : childTables) {
Object parentSerialNum = getFieldValue(childTable, "PARENT_SERIAL_NUM");
if (parentSerialNum != null) {
groupedChildTables
.computeIfAbsent(parentSerialNum, k -> new ArrayList<>())
.add(childTable);
}
}
childTablesByParentAndSerial.put(parentTableName, groupedChildTables);
}
}
for (TableData firstLevelTable : firstLevelTableDataList) {
if (firstLevelTable.getRelatedTableData() == null) {
continue;
}
for (TableData secondLevelTable : firstLevelTable.getRelatedTableData()) {
String tableName = secondLevelTable.getTableName();
String parentTableName = tableName;
String childTableName = tableName + "_BLOCKS";
if (SUPPORTED_TABLE_NAMES.contains(childTableName)) {
Map<Object, List<TableData>> availableChildTables = childTablesByParentAndSerial.get(parentTableName);
if (availableChildTables != null) {
Object serialNum = getFieldValue(secondLevelTable, "SERIAL_NUM");
if (serialNum != null) {
List<TableData> matchingChildTables = availableChildTables.get(serialNum);
if (matchingChildTables != null) {
secondLevelTable.getRelatedTableData().addAll(matchingChildTables);
}
}
}
}
}
}
}
private Object getFieldValue(TableData tableData, String targetColumnName) {
if (tableData.getFieldData() == null) {
return null;
}
for (TableData.FieldData field : tableData.getFieldData()) {
if (targetColumnName.equals(field.columnName())) {
return field.columnValue();
}
}
return null;
}
}

View file

@ -1,10 +0,0 @@
package ru.nbch.indicsearchservice.filter.thirdlevel;
import java.util.List;
import java.util.Map;
import ru.nbch.indicsearchservice.filter.TableFilter;
import ru.nbch.indicsearchservice.model.TableData;
public interface ThirdLevelTableFilter extends TableFilter {
void applyFilter(List<TableData> firstLevelTableDataList, Map<String, List<TableData>> tableDataMapByFid);
}

View file

@ -0,0 +1,107 @@
package ru.nbch.indicsearchservice.loader;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.loader.subtable.AccountSubTableLoader;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class AccountTableLoader implements FirstLevelTableLoader, TableLoaderForId {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
private final List<AccountSubTableLoader> accountSubTableLoaders;
public AccountTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils,
List<AccountSubTableLoader> accountSubTableLoaders) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
this.accountSubTableLoaders = accountSubTableLoaders;
}
@Override
public String getTableName() {
return "ACCOUNT";
}
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if (dataType == DataType.TUTDF &&
(searchParameter == SearchParameter.UUID ||
searchParameter == SearchParameter.ACCT_NUM ||
searchParameter == SearchParameter.SERIAL_NUM_ACCT ||
searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
Set<String> result = new HashSet<>();
result.add(getTableName());
result.addAll(accountSubTableLoaders.stream().map(TableLoader::getTableName).toList());
return result;
}
return Set.of();
}
@Override
public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.UUID || searchParameter == SearchParameter.ACCT_NUM || searchParameter == SearchParameter.SERIAL_NUM_ACCT) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromAccount(memberCode)) {
Set<Integer> foundFids = new HashSet<>();
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, foundFids, tableMetaDataMap));
accountSubTableLoaders.parallelStream().forEach(tl -> tl.searchByAccountFid(taskId, foundFids, tableFileMap, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
} else if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
accountSubTableLoaders.parallelStream().forEach(tl -> tl.searchByAccountFid(taskId, fids, tableFileMap, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccount(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}

View file

@ -0,0 +1,87 @@
package ru.nbch.indicsearchservice.loader;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class BankruptcyTableLoader implements FirstLevelTableLoader, TableLoaderForId {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public BankruptcyTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "BANKRUPTCY";
}
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if (dataType == DataType.TUTDF &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override
@Transactional(readOnly = true)
public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
@Transactional(readOnly = true)
public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}

View file

@ -0,0 +1,87 @@
package ru.nbch.indicsearchservice.loader;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class ConsumerBankruptcyTableLoader implements FirstLevelTableLoader, TableLoaderForId {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public ConsumerBankruptcyTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "CONSUMER_BANKRUPTCY";
}
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if (dataType == DataType.TUTDF &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override
@Transactional(readOnly = true)
public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
@Transactional(readOnly = true)
public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromConsumerBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}

View file

@ -2,7 +2,9 @@ package ru.nbch.indicsearchservice.loader;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
@ -12,5 +14,8 @@ public interface FirstLevelTableLoader extends TableLoader {
SearchParameter searchParameter, SearchParameter searchParameter,
String searchValue, String searchValue,
String memberCode, String memberCode,
Map<String, Path> tableFileMap); Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap);
Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter);
} }

View file

@ -2,6 +2,7 @@ package ru.nbch.indicsearchservice.loader;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
@ -11,6 +12,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -31,9 +33,34 @@ public class IdTableLoader implements FirstLevelTableLoader {
return "ID"; return "ID";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF || dataType == DataType.TUTDF) &&
(searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
Set<String> result = new HashSet<>();
result.add(getTableName());
result.addAll(tableLoaders.stream()
.map(l -> l.getTableNamesIfSuitable(dataType, searchParameter))
.flatMap(Collection::stream)
.toList());
return result;
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.OGRN || searchParameter == SearchParameter.PASSPORT) { if (searchParameter == SearchParameter.OGRN || searchParameter == SearchParameter.PASSPORT) {
Set<Integer> foundFids = new HashSet<>(); Set<Integer> foundFids = new HashSet<>();
@ -63,7 +90,41 @@ public class IdTableLoader implements FirstLevelTableLoader {
searchParameter, searchParameter,
foundFids, foundFids,
memberCode, memberCode,
tableFileMap tableFileMap,
tableMetaDataMap
));
}
} else if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.OGRN || searchParameter == SearchParameter.PASSPORT) {
Set<Integer> foundFids = new HashSet<>();
try (Cursor<LinkedHashMap<String, Object>> cursor = searchParameter == SearchParameter.OGRN ?
mapperHolder.getIndicMapper().findFidsByOgrnFromIdForTutdf(searchValue) :
mapperHolder.getIndicMapper().findFidsByPassportFromIdForTutdf(searchValue)) {
for (LinkedHashMap<String, Object> row : cursor) {
for (Map.Entry<String, Object> entry : row.entrySet()) {
String columnName = entry.getKey();
Object columnValue = entry.getValue();
if (columnName != null && columnValue != null) {
if (columnName.equals("FID")) {
foundFids.add(Integer.parseInt(columnValue.toString()));
}
}
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
tableLoaders.parallelStream().forEach(tl -> tl.searchById(
taskId,
dataType,
searchParameter,
foundFids,
memberCode,
tableFileMap,
tableMetaDataMap
)); ));
} }
} }

View file

@ -0,0 +1,95 @@
package ru.nbch.indicsearchservice.loader;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class InformationTableLoader implements FirstLevelTableLoader, TableLoaderForId {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public InformationTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "INFORMATION";
}
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if (dataType == DataType.TUTDF &&
(searchParameter == SearchParameter.OLD_APP_NUM ||
searchParameter == SearchParameter.SERIAL_NUM_APP ||
searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override
@Transactional(readOnly = true)
public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.OLD_APP_NUM || searchParameter == SearchParameter.SERIAL_NUM_APP) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromInformation(memberCode)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
} else if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
@Transactional(readOnly = true)
public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromInformation(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}

View file

@ -0,0 +1,87 @@
package ru.nbch.indicsearchservice.loader;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class LegalTableLoader implements FirstLevelTableLoader, TableLoaderForId {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public LegalTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "LEGAL";
}
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if (dataType == DataType.TUTDF &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override
@Transactional(readOnly = true)
public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
@Override
@Transactional(readOnly = true)
public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.TUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromLegal(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,13 +31,33 @@ public class RuApplicationTableLoader implements FirstLevelTableLoader, TableLoa
return "RU_APPLICATION"; return "RU_APPLICATION";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.APPLICATION_NUMBER ||
searchParameter == SearchParameter.OLD_APP_NUM ||
searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.APPLICATION_NUMBER || searchParameter == SearchParameter.OLD_APP_NUM) { if (searchParameter == SearchParameter.APPLICATION_NUMBER || searchParameter == SearchParameter.OLD_APP_NUM) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromRuApplication(memberCode)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromRuApplication(memberCode)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -44,7 +65,7 @@ public class RuApplicationTableLoader implements FirstLevelTableLoader, TableLoa
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -54,11 +75,17 @@ public class RuApplicationTableLoader implements FirstLevelTableLoader, TableLoa
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuApplication(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuBankruptcyTableLoader implements FirstLevelTableLoader, TableLoad
return "RU_BANKRUPTCY"; return "RU_BANKRUPTCY";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuBankruptcyTableLoader implements FirstLevelTableLoader, TableLoad
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcy(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuCapabilityTableLoader implements FirstLevelTableLoader, TableLoad
return "RU_CAPABILITY"; return "RU_CAPABILITY";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuCapabilityTableLoader implements FirstLevelTableLoader, TableLoad
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCapability(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuDebtBurdenInfoTableLoader implements FirstLevelTableLoader, Table
return "RU_DEBT_BURDEN_INFO"; return "RU_DEBT_BURDEN_INFO";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuDebtBurdenInfoTableLoader implements FirstLevelTableLoader, Table
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDebtBurdenInfo(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuObligPartTakeTableLoader implements FirstLevelTableLoader, TableL
return "RU_OBLIGPARTTAKE"; return "RU_OBLIGPARTTAKE";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuObligPartTakeTableLoader implements FirstLevelTableLoader, TableL
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligPartTake(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuOtherLegalTableLoader implements FirstLevelTableLoader, TableLoad
return "RU_OTHERLEGAL"; return "RU_OTHERLEGAL";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuOtherLegalTableLoader implements FirstLevelTableLoader, TableLoad
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOtherLegal(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -30,15 +31,33 @@ public class RuSettledTableLoader implements FirstLevelTableLoader, TableLoaderF
return "RU_SETTLED"; return "RU_SETTLED";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
return Set.of(getTableName());
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.FID) { if (searchParameter == SearchParameter.FID) {
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -48,11 +67,17 @@ public class RuSettledTableLoader implements FirstLevelTableLoader, TableLoaderF
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSettled(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -12,6 +12,7 @@ import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.loader.subtable.RuUidSubTableLoader; import ru.nbch.indicsearchservice.loader.subtable.RuUidSubTableLoader;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
@ -36,15 +37,40 @@ public class RuUidTableLoader implements FirstLevelTableLoader, TableLoaderForId
return "RU_UID"; return "RU_UID";
} }
@Override
public Set<String> getTableNamesIfSuitable(DataType dataType, SearchParameter searchParameter) {
if ((dataType == DataType.GUTDF || dataType == DataType.RUTDF) &&
(searchParameter == SearchParameter.UUID ||
searchParameter == SearchParameter.ACCT_NUM ||
searchParameter == SearchParameter.FID ||
searchParameter == SearchParameter.PASSPORT ||
searchParameter == SearchParameter.OGRN)) {
Set<String> result = new HashSet<>();
result.add(getTableName());
result.addAll(ruUidSubTableLoaders.stream().map(TableLoader::getTableName).toList());
return result;
}
return Set.of();
}
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchBy(UUID taskId, DataType dataType, SearchParameter searchParameter, String searchValue, String memberCode, Map<String, Path> tableFileMap) { public void searchBy(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
String searchValue,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.UUID || searchParameter == SearchParameter.ACCT_NUM) { if (searchParameter == SearchParameter.UUID || searchParameter == SearchParameter.ACCT_NUM) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromRuUid(memberCode)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByMemberCodeFromRuUid(memberCode)) {
Set<Integer> foundFids = new HashSet<>(); Set<Integer> foundFids = new HashSet<>();
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, foundFids)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, foundFids, tableMetaDataMap));
ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, foundFids, tableFileMap)); ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, foundFids, tableFileMap, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -52,8 +78,8 @@ public class RuUidTableLoader implements FirstLevelTableLoader, TableLoaderForId
Set<Integer> fids = Set.of(Integer.parseInt(searchValue)); Set<Integer> fids = Set.of(Integer.parseInt(searchValue));
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, fids, tableFileMap)); ruUidSubTableLoaders.parallelStream().forEach(tl -> tl.searchByRuUidFid(taskId, fids, tableFileMap, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -63,11 +89,17 @@ public class RuUidTableLoader implements FirstLevelTableLoader, TableLoaderForId
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap) { public void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) { if (dataType == DataType.GUTDF || dataType == DataType.RUTDF) {
if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) { if (searchParameter == SearchParameter.PASSPORT || searchParameter == SearchParameter.OGRN) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuUid(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -4,9 +4,16 @@ import java.nio.file.Path;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType; import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter; import ru.nbch.indicsearchservice.model.enums.SearchParameter;
public interface TableLoaderForId extends FirstLevelTableLoader { public interface TableLoaderForId extends FirstLevelTableLoader {
void searchById(UUID taskId, DataType dataType, SearchParameter searchParameter, Set<Integer> fids, String memberCode, Map<String, Path> tableFileMap); void searchById(UUID taskId,
DataType dataType,
SearchParameter searchParameter,
Set<Integer> fids,
String memberCode,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap);
} }

View file

@ -0,0 +1,44 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class AccountAmendTableLoader implements AccountSubTableLoader {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public AccountAmendTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "ACCOUNT_AMEND";
}
@Override
@Transactional(readOnly = true)
public void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromAccountAmend(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,14 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.nio.file.Path;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import ru.nbch.indicsearchservice.model.TableMetaData;
public interface AccountSubTableLoader extends SubTableLoader {
void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap);
}

View file

@ -0,0 +1,44 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class BankGuaranteeTableLoader implements AccountSubTableLoader {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public BankGuaranteeTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "BANK_GUARANTEE";
}
@Override
@Transactional(readOnly = true)
public void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromBankGuarantee(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,44 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class CollateralTableLoader implements AccountSubTableLoader {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public CollateralTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "COLLATERAL";
}
@Override
@Transactional(readOnly = true)
public void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromCollateral(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,44 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class GuarantorTableLoader implements AccountSubTableLoader {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public GuarantorTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "GUARANTOR";
}
@Override
@Transactional(readOnly = true)
public void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromGuarantor(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -0,0 +1,44 @@
package ru.nbch.indicsearchservice.loader.subtable;
import java.io.IOException;
import java.nio.file.Path;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Component
public class PaymentTableLoader implements AccountSubTableLoader {
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public PaymentTableLoader(MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
}
@Override
public String getTableName() {
return "PAYMENT";
}
@Override
@Transactional(readOnly = true)
public void searchByAccountFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromPayment(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAccountAmtTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAccountAmt(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAcquirerIndividTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerIndivid(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAcquirerLegalTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAcquirerLegal(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAllArrearsTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAllArrears(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAmendmentTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmendment(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuAmountInfoTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuAmountInfo(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuArrearTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuArrear(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuBankruptcyBlocksTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuBankruptcyBlocks(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuCoborrowerTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCoborrower(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuCollatInsuredTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatInsured(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuCollatRepayTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollatRepay(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuCollateralBlocksTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateralBlocks(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuCollateralTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuContractTermsChangesTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuContractTermsChanges(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuDueArrearTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuDueArrear(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuFundDateTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuFundDate(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuGuaranteeRepayTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuaranteeRepay(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuGuarantorTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuGuarantor(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuIndepGuarantorTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuIndepGuarantor(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuLegalRecordTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuLegalRecord(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuMonthAverPaymtTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuMonthAverPaymt(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuObligAccountTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligAccount(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuObligTerminationTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligTermination(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuObligsRcBankruptTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcBankrupt(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuObligsRcLiquidTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuObligsRcLiquid(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -31,9 +32,12 @@ public class RuOverallvalTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuOverallval(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuPastDueArrearTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPastDueArrear(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuPaymtConditionTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymtCondition(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuPaymtTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuPaymt(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuServiceCoTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuServiceCo(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuSourceNonMonetObligTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSourceNonMonetOblig(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuSubjectNonMonetObligTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubjectNonMonetOblig(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuSubmitHoldTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuSubmitHold(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -9,6 +9,7 @@ import java.util.UUID;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.util.IndicSearchUtils; import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder; import ru.nbch.indicsearchservice.util.MapperHolder;
@ -30,9 +31,12 @@ public class RuTradeTableLoader implements RuUidSubTableLoader {
@Override @Override
@Transactional(readOnly = true) @Transactional(readOnly = true)
public void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap) { public void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap) {
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) { try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuTrade(fids)) {
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor)); tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View file

@ -4,7 +4,11 @@ import java.nio.file.Path;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import ru.nbch.indicsearchservice.model.TableMetaData;
public interface RuUidSubTableLoader extends SubTableLoader { public interface RuUidSubTableLoader extends SubTableLoader {
void searchByRuUidFid(UUID taskId, Set<Integer> fids, Map<String, Path> tableFileMap); void searchByRuUidFid(UUID taskId,
Set<Integer> fids,
Map<String, Path> tableFileMap,
Map<String, TableMetaData> tableMetaDataMap);
} }

View file

@ -0,0 +1,51 @@
package ru.nbch.indicsearchservice.model;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
public class TableMetaData {
private final String tableName;
private String tableNameLocalization;
private final Map<String, FieldMetaData> fieldMetaData = new LinkedHashMap<>();
public TableMetaData(String tableName) {
this.tableName = tableName;
}
public String getTableName() {
return tableName;
}
public String getTableNameLocalization() {
return tableNameLocalization;
}
public void setTableNameLocalization(String tableNameLocalization) {
this.tableNameLocalization = tableNameLocalization;
}
public Map<String, FieldMetaData> getFieldMetaData() {
return Collections.unmodifiableMap(fieldMetaData);
}
public boolean addField(String fieldName) {
if (fieldMetaData.containsKey(fieldName)) {
return false;
}
fieldMetaData.put(fieldName, new FieldMetaData(fieldName));
return true;
}
public void addLocalization(String fieldName, String fieldLocalization) {
fieldMetaData.compute(fieldName, (key, existingRecord) ->
new FieldMetaData(fieldName, fieldLocalization)
);
}
public record FieldMetaData(String fieldName, String fieldLocalization) {
public FieldMetaData(String fieldName) {
this(fieldName, null);
}
}
}

View file

@ -14,4 +14,8 @@ public interface SettingsMapper {
List<Settings> findAllByNames(@Param("names") List<String> names); List<Settings> findAllByNames(@Param("names") List<String> names);
Collection<Settings> findAll(); Collection<Settings> findAll();
void insert(@Param("settings") Settings settings);
void insertBatch(@Param("list") List<Settings> list);
} }

View file

@ -11,6 +11,7 @@ import ru.nbch.indicsearchservice.repository.MyBatisRepository;
public interface IndicMapper extends MyBatisRepository { public interface IndicMapper extends MyBatisRepository {
List<LinkedHashMap<String, String>> getTableColumnsByTableNames(List<String> tables); List<LinkedHashMap<String, String>> getTableColumnsByTableNames(List<String> tables);
// GUTDF/RUTDF tables
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuUid(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuUid(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuApplication(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuApplication(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuObligPartTake(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuObligPartTake(Set<Integer> fids);
@ -59,4 +60,22 @@ public interface IndicMapper extends MyBatisRepository {
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSourceNonMonetOblig(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSourceNonMonetOblig(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSubjectNonMonetOblig(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSubjectNonMonetOblig(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSubmitHold(Set<Integer> fids); Cursor<LinkedHashMap<String, Object>> findAllByFidsFromRuSubmitHold(Set<Integer> fids);
// TUTDF tables
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromAccount(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromInformation(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromBankruptcy(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromConsumerBankruptcy(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromLegal(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByMemberCodeFromAccount(String memberCode);
Cursor<LinkedHashMap<String, Object>> findAllByMemberCodeFromInformation(String memberCode);
Cursor<LinkedHashMap<String, Object>> findFidsByOgrnFromIdForTutdf(String idNorm);
Cursor<LinkedHashMap<String, Object>> findFidsByPassportFromIdForTutdf(String idNorm);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromAccountAmend(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromPayment(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromCollateral(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromGuarantor(Set<Integer> fids);
Cursor<LinkedHashMap<String, Object>> findAllByFidsFromBankGuarantee(Set<Integer> fids);
} }

View file

@ -3,10 +3,18 @@ package ru.nbch.indicsearchservice.service;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.mutable.MutableLong; import org.apache.commons.lang3.mutable.MutableLong;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -20,26 +28,50 @@ import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto;
import ru.nbch.indicsearchservice.exporter.ExcelExporter; import ru.nbch.indicsearchservice.exporter.ExcelExporter;
import ru.nbch.indicsearchservice.exporter.JsonExporter; import ru.nbch.indicsearchservice.exporter.JsonExporter;
import ru.nbch.indicsearchservice.loader.FirstLevelTableLoader; import ru.nbch.indicsearchservice.loader.FirstLevelTableLoader;
import ru.nbch.indicsearchservice.model.LocalizationObject;
import ru.nbch.indicsearchservice.model.Settings;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.model.enums.DataType;
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
import ru.nbch.indicsearchservice.repository.bank.LocalizationObjectMapper;
import ru.nbch.indicsearchservice.repository.bank.SettingsMapper;
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
import ru.nbch.indicsearchservice.util.MapperHolder;
@Service @Service
public class IndicSearchService { public class IndicSearchService {
private static final Logger log = LoggerFactory.getLogger(IndicSearchService.class); private static final Logger log = LoggerFactory.getLogger(IndicSearchService.class);
private static final boolean IS_EXPORT_AS_EXCEL = false; private static final boolean IS_EXPORT_AS_EXCEL = true;
private final List<FirstLevelTableLoader> tableLoaders; private final List<FirstLevelTableLoader> tableLoaders;
private final List<FileAggregator> fileAggregators; private final List<FileAggregator> fileAggregators;
private final ExcelExporter excelExporter; private final ExcelExporter excelExporter;
private final JsonExporter jsonExporter; private final JsonExporter jsonExporter;
private final SettingsService settingsService;
private final LocalizationObjectMapper localizationObjectMapper;
private final SettingsMapper settingsMapper;
private final MapperHolder mapperHolder;
private final IndicSearchUtils indicSearchUtils;
public IndicSearchService(List<FirstLevelTableLoader> tableLoaders, public IndicSearchService(List<FirstLevelTableLoader> tableLoaders,
List<FileAggregator> fileAggregators, List<FileAggregator> fileAggregators,
ExcelExporter excelExporter, ExcelExporter excelExporter,
JsonExporter jsonExporter) { JsonExporter jsonExporter,
SettingsService settingsService,
LocalizationObjectMapper localizationObjectMapper,
SettingsMapper settingsMapper,
MapperHolder mapperHolder,
IndicSearchUtils indicSearchUtils) {
this.tableLoaders = tableLoaders; this.tableLoaders = tableLoaders;
this.fileAggregators = fileAggregators; this.fileAggregators = fileAggregators;
this.excelExporter = excelExporter; this.excelExporter = excelExporter;
this.jsonExporter = jsonExporter; this.jsonExporter = jsonExporter;
this.settingsService = settingsService;
this.localizationObjectMapper = localizationObjectMapper;
this.settingsMapper = settingsMapper;
this.mapperHolder = mapperHolder;
this.indicSearchUtils = indicSearchUtils;
} }
public AddSearchJobResponseDto addSearchJob(AddSearchJobRequestDto request) { public AddSearchJobResponseDto addSearchJob(AddSearchJobRequestDto request) {
@ -47,6 +79,17 @@ public class IndicSearchService {
StopWatch sw = new StopWatch(); StopWatch sw = new StopWatch();
// Подготовительный этап. Получение мета данных из БД
log.info("Prep step started. Getting metadata from database");
sw.start();
Map<String, TableMetaData> tableMetaDataMap = prepareTableMetaData(request.getDataType(), request.getSearchParameter());
long rowLimit = Long.parseLong(settingsService.getSettingsValueByName("LimitDB"));
sw.stop();
log.info(sw.prettyPrint());
sw = new StopWatch();
// Первый этап. Получение данных из БД и заполнение файлов // Первый этап. Получение данных из БД и заполнение файлов
log.info("First step started. Getting data from database and filling csv files"); log.info("First step started. Getting data from database and filling csv files");
sw.start(); sw.start();
@ -58,7 +101,8 @@ public class IndicSearchService {
request.getSearchParameter(), request.getSearchParameter(),
request.getSearchValue(), request.getSearchValue(),
request.getMemberCode().substring(0, 6), request.getMemberCode().substring(0, 6),
tableFileMap tableFileMap,
tableMetaDataMap
)); ));
sw.stop(); sw.stop();
@ -97,10 +141,11 @@ public class IndicSearchService {
log.info("Third step started. Exporting aggregated file into JSON/XLSX."); log.info("Third step started. Exporting aggregated file into JSON/XLSX.");
sw.start(); sw.start();
if (!IS_EXPORT_AS_EXCEL) { if (rowCounter.longValue() < rowLimit && !IS_EXPORT_AS_EXCEL) {
jsonExporter.writeJsonFile(aggregatedFile, taskId); jsonExporter.writeJsonFile(aggregatedFile, taskId, tableMetaDataMap);
} else { } else {
excelExporter.writeExcelFile(aggregatedFile, taskId, rowCounter.longValue()); fillTableMetaDataWithLocalization(tableMetaDataMap);
excelExporter.writeExcelFile(aggregatedFile, taskId, rowCounter.longValue(), tableMetaDataMap);
} }
sw.stop(); sw.stop();
@ -122,4 +167,154 @@ public class IndicSearchService {
public ResponseEntity<?> export(Long id, String exportType) { public ResponseEntity<?> export(Long id, String exportType) {
return null; return null;
} }
private Map<String, TableMetaData> prepareTableMetaData(DataType dataType, SearchParameter searchParameter) {
Map<String, TableMetaData> tableMetaDataMap = new ConcurrentHashMap<>();
// Получаем список таблиц
Set<String> tableNames = tableLoaders.parallelStream()
.map(tl -> tl.getTableNamesIfSuitable(dataType, searchParameter))
.flatMap(Set::stream)
.collect(Collectors.toSet());
if (tableNames.isEmpty()) {
return tableMetaDataMap;
}
tableNames.forEach(name -> tableMetaDataMap.put(name, new TableMetaData(name)));
// Составляем массив ключей из SETTINGS
Map<String, String> keyToTable = new HashMap<>();
List<String> columnKeys = new ArrayList<>();
for (String table : tableNames) {
String key = "db.table." + table.toUpperCase() + ".fields";
columnKeys.add(key);
keyToTable.put(key, table);
}
// Получаем данные из SETTINGS одним запросом
Map<String, Optional<String>> settingsValues = settingsService.getSettingsValuesByNames(columnKeys);
Set<String> missingTables = new HashSet<>();
List<Settings> batchInsertSettings = new ArrayList<>();
for (String key : columnKeys) {
String table = keyToTable.get(key);
Optional<String> valueOpt = settingsValues.getOrDefault(key, Optional.empty());
if (valueOpt.isPresent() && StringUtils.isNotBlank(valueOpt.get())) {
String[] fields = valueOpt.get().split(";");
for (String field : fields) {
tableMetaDataMap.get(table).addField(field.trim());
}
} else {
missingTables.add(table);
}
}
// Если найдены пропущенные значения, то добавляем их в БД
if (!missingTables.isEmpty()) {
List<LinkedHashMap<String, String>> rows =
mapperHolder.getIndicMapper().getTableColumnsByTableNames(new ArrayList<>(missingTables));
Map<String, List<String>> tableToColumns = new HashMap<>();
for (Map<String, String> row : rows) {
tableToColumns.computeIfAbsent(row.get("TBNAME"), t -> new ArrayList<>()).add(row.get("NAME"));
}
for (String table : missingTables) {
List<String> columns = tableToColumns.getOrDefault(table, List.of());
String key = "db.table." + table.toUpperCase() + ".fields";
String value = String.join(";", columns);
Settings newSettings = new Settings();
newSettings.setName(key);
newSettings.setValue(value);
batchInsertSettings.add(newSettings);
for (String column : columns) {
tableMetaDataMap.get(table).addField(column.trim());
}
}
if (!batchInsertSettings.isEmpty()) {
settingsMapper.insertBatch(batchInsertSettings);
}
}
return tableMetaDataMap;
}
private void fillTableMetaDataWithLocalization(Map<String, TableMetaData> tableMetaDataMap) {
if (tableMetaDataMap == null || tableMetaDataMap.isEmpty()) {
return;
}
// Получаем все ключи для LOCALIZATION_OBJECT
Set<String> localizationKeys = new HashSet<>();
for (TableMetaData metaData : tableMetaDataMap.values()) {
String tableUpper = metaData.getTableName().toUpperCase();
localizationKeys.add("db.viewer.table." + tableUpper);
for (String field : metaData.getFieldMetaData().keySet()) {
String fieldUpper = field.toUpperCase();
localizationKeys.add("db.viewer." + tableUpper + ".field." + fieldUpper);
localizationKeys.add("db.viewer.field." + fieldUpper);
}
}
// Получаем данные из LOCALIZATION_OBJECT одним запросом
Map<String, Optional<String>> localizationValues = indicSearchUtils.getOptionalLocalizationStrings(new ArrayList<>(localizationKeys));
List<LocalizationObject> toInsertLocalizations = new ArrayList<>();
// Вставляем локализацию в tableMetaDataMap
for (TableMetaData metaData : tableMetaDataMap.values()) {
String tableUpper = metaData.getTableName().toUpperCase();
String tableKey = "db.viewer.table." + tableUpper;
// Локализация для таблиц
Optional<String> tableLoc = localizationValues.getOrDefault(tableKey, Optional.empty());
if (tableLoc.isPresent() && StringUtils.isNotBlank(tableLoc.get())) {
metaData.setTableNameLocalization(tableLoc.get());
} else {
String fallbackText = "Таблица " + tableUpper;
metaData.setTableNameLocalization(fallbackText);
LocalizationObject newLocalizationObject = new LocalizationObject();
newLocalizationObject.setCode(tableKey);
newLocalizationObject.setText(fallbackText);
toInsertLocalizations.add(newLocalizationObject);
}
// Локализация для полей
for (String field : metaData.getFieldMetaData().keySet()) {
String fieldUpper = field.toUpperCase();
String primaryKey = "db.viewer." + tableUpper + ".field." + fieldUpper;
String fallbackKey = "db.viewer.field." + fieldUpper;
Optional<String> primaryLoc = localizationValues.getOrDefault(primaryKey, Optional.empty());
if (primaryLoc.isPresent() && StringUtils.isNotBlank(primaryLoc.get())) {
metaData.addLocalization(field, primaryLoc.get());
} else {
Optional<String> fallbackLoc = localizationValues.getOrDefault(fallbackKey, Optional.empty());
if (fallbackLoc.isPresent() && StringUtils.isNotBlank(fallbackLoc.get())) {
metaData.addLocalization(field, fallbackLoc.get());
} else {
String fallbackText = "Поле " + fieldUpper;
metaData.addLocalization(field, fallbackText);
LocalizationObject newLocalizationObject = new LocalizationObject();
newLocalizationObject.setCode(primaryKey);
newLocalizationObject.setText(fallbackText);
toInsertLocalizations.add(newLocalizationObject);
}
}
}
}
// Если найдены пропущенные значения, то добавляем их в БД
if (!toInsertLocalizations.isEmpty()) {
localizationObjectMapper.insertBatch(toInsertLocalizations);
}
}
} }

View file

@ -5,57 +5,91 @@ import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardOpenOption; import java.nio.file.StandardOpenOption;
import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.ibatis.cursor.Cursor; import org.apache.ibatis.cursor.Cursor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.nbch.indicsearchservice.config.settings.ApplicationSettings; import ru.nbch.indicsearchservice.config.settings.ApplicationSettings;
import ru.nbch.indicsearchservice.model.LocalizationObject;
import ru.nbch.indicsearchservice.model.TableMetaData;
import ru.nbch.indicsearchservice.repository.bank.LocalizationObjectMapper;
@Component @Component
public class IndicSearchUtils { public class IndicSearchUtils {
private static final Set<String> REQUIRED_FIELDS = Set.of(
"FID",
"SERIAL_NUM",
"ACC_SERIAL_NUM",
"PARENT_SERIAL_NUM"
);
private final ApplicationSettings settings; private final ApplicationSettings settings;
private final LocalizationObjectMapper localizationObjectMapper;
public IndicSearchUtils(ApplicationSettings settings) { public IndicSearchUtils(ApplicationSettings settings,
LocalizationObjectMapper localizationObjectMapper) {
this.settings = settings; this.settings = settings;
} this.localizationObjectMapper = localizationObjectMapper;
public Path writeRowsToFile(UUID taskId,
String tableName,
Cursor<LinkedHashMap<String, Object>> databaseCursor) {
return writeRowsToFile(taskId, tableName, databaseCursor, null);
} }
public Path writeRowsToFile(UUID taskId, public Path writeRowsToFile(UUID taskId,
String tableName, String tableName,
Cursor<LinkedHashMap<String, Object>> databaseCursor, Cursor<LinkedHashMap<String, Object>> databaseCursor,
Set<Integer> foundFids) { Map<String, TableMetaData> tableMetaDataMap) {
return writeRowsToFile(taskId, tableName, databaseCursor, null, tableMetaDataMap);
}
public Path writeRowsToFile(UUID taskId,
String tableName,
Cursor<LinkedHashMap<String, Object>> databaseCursor,
Set<Integer> foundFids,
Map<String, TableMetaData> tableMetaDataMap) {
Path resultFile = settings.getStorageDirectory().toPath().resolve(tableName + "_" + taskId + ".csv"); Path resultFile = settings.getStorageDirectory().toPath().resolve(tableName + "_" + taskId + ".csv");
TableMetaData tableMetaData = tableMetaDataMap.get(tableName);
Set<String> configuredFields = tableMetaData != null ?
tableMetaData.getFieldMetaData().keySet() :
new HashSet<>();
try (BufferedWriter writer = Files.newBufferedWriter(resultFile, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) { try (BufferedWriter writer = Files.newBufferedWriter(resultFile, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
for (LinkedHashMap<String, Object> row : databaseCursor) { for (LinkedHashMap<String, Object> row : databaseCursor) {
if (foundFids != null) {
Object fidValue = row.get("FID");
if (fidValue != null) {
foundFids.add(Integer.parseInt(fidValue.toString()));
}
}
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(tableName).append("%%%"); sb.append(tableName).append("%%%");
for (Map.Entry<String, Object> entry : row.entrySet()) { for (Map.Entry<String, Object> entry : row.entrySet()) {
String columnName = entry.getKey(); String columnName = entry.getKey();
String columnNameUpper = columnName.toUpperCase();
if (configuredFields.contains(columnName) || REQUIRED_FIELDS.contains(columnNameUpper)) {
sb.append(columnNameUpper).append("%%%");
Object columnValue = entry.getValue(); Object columnValue = entry.getValue();
sb.append(columnName.toUpperCase()).append("%%%");
if (columnValue != null) { if (columnValue != null) {
if (foundFids != null && columnName.equals("FID")) {
foundFids.add(Integer.parseInt(columnValue.toString()));
}
sb.append(columnValue).append("%%%"); sb.append(columnValue).append("%%%");
} else { } else {
sb.append("%%%"); sb.append("%%%");
} }
} }
}
if (sb.length() >= 3) {
sb.setLength(sb.length() - 3);
}
sb.deleteCharAt(sb.length() - 1);
writer.write(sb.toString()); writer.write(sb.toString());
writer.newLine(); writer.newLine();
} }
@ -65,4 +99,17 @@ public class IndicSearchUtils {
return resultFile; return resultFile;
} }
public Map<String, Optional<String>> getOptionalLocalizationStrings(List<String> localizationCodes) {
if (localizationCodes == null || localizationCodes.isEmpty()) {
return Map.of();
}
List<LocalizationObject> foundValues = localizationObjectMapper.findAllByCodes(localizationCodes);
if (foundValues == null || foundValues.isEmpty()) {
return Map.of();
}
return foundValues.stream().collect(Collectors.toMap(LocalizationObject::getCode, s -> Optional.ofNullable(s.getText())));
}
} }

View file

@ -15,3 +15,4 @@ app.data-source.max-lifetime=1800000
app.data-source.keep-alive-time=120000 app.data-source.keep-alive-time=120000
app.storage-directory=C:\\Users\\inikolaev\\Desktop\\1 app.storage-directory=C:\\Users\\inikolaev\\Desktop\\1
#app.storage-directory=C:\\Users\\ivan\\Desktop\\storage

View file

@ -38,6 +38,7 @@
<include refid="baseSelect"/> <include refid="baseSelect"/>
WHERE CODE IN WHERE CODE IN
<foreach item='code' collection='codes' open='(' separator=',' close=')'>#{code}</foreach> <foreach item='code' collection='codes' open='(' separator=',' close=')'>#{code}</foreach>
WITH UR
</select> </select>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" useGeneratedKeys="true" keyProperty="id">

View file

@ -27,10 +27,28 @@
<include refid="baseSelect"/> <include refid="baseSelect"/>
WHERE NAME IN WHERE NAME IN
<foreach item='name' collection='names' open='(' separator=',' close=')'>#{name}</foreach> <foreach item='name' collection='names' open='(' separator=',' close=')'>#{name}</foreach>
WITH UR
</select> </select>
<select id="findAll" resultMap="settingsResultMap"> <select id="findAll" resultMap="settingsResultMap">
<include refid="baseSelect"/> <include refid="baseSelect"/>
WITH UR WITH UR
</select> </select>
<insert id="insert" useGeneratedKeys="true" keyProperty="settings.id" keyColumn="ID">
insert into SETTINGS (VERSION,
NAME,
"VALUE")
values (0,
#{settings.name},
#{settings.value})
</insert>
<insert id="insertBatch">
insert into SETTINGS (VERSION, NAME, "VALUE")
values
<foreach collection="list" item="s" separator=",">
(0, #{s.name}, #{s.value})
</foreach>
</insert>
</mapper> </mapper>

View file

@ -111,7 +111,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByMemberCodeFromRuApplication" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByMemberCodeFromRuApplication" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_APPLICATION FROM INDIC.RU_APPLICATION
WHERE (MEMBER_CODE LIKE #{memberCode} || '%' WHERE (MEMBER_CODE LIKE #{memberCode} || '%'
@ -161,7 +162,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuAcquirerIndivid" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuAcquirerIndivid" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_ACQUIRERINDIVID FROM INDIC.RU_ACQUIRERINDIVID
WHERE FID IN WHERE FID IN
@ -227,7 +229,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuBankruptcyBlocks" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuBankruptcyBlocks" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_BANKRUPTCY_BLOCKS FROM INDIC.RU_BANKRUPTCY_BLOCKS
WHERE FID IN WHERE FID IN
@ -260,7 +263,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuCollateralBlocks" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuCollateralBlocks" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_COLLATERAL_BLOCKS FROM INDIC.RU_COLLATERAL_BLOCKS
WHERE FID IN WHERE FID IN
@ -293,7 +297,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuContractTermsChanges" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuContractTermsChanges" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_CONTRACT_TERMS_CHANGES FROM INDIC.RU_CONTRACT_TERMS_CHANGES
WHERE FID IN WHERE FID IN
@ -392,7 +397,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuObligsRcBankrupt" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuObligsRcBankrupt" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_OBLIGSRCBANKRUPT FROM INDIC.RU_OBLIGSRCBANKRUPT
WHERE FID IN WHERE FID IN
@ -414,7 +420,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuObligTermination" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuObligTermination" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_OBLIGTERMINATION FROM INDIC.RU_OBLIGTERMINATION
WHERE FID IN WHERE FID IN
@ -480,7 +487,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuSourceNonMonetOblig" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuSourceNonMonetOblig" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_SOURCENONMONETOBLIG FROM INDIC.RU_SOURCENONMONETOBLIG
WHERE FID IN WHERE FID IN
@ -491,7 +499,8 @@
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromRuSubjectNonMonetOblig" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600"> <select id="findAllByFidsFromRuSubjectNonMonetOblig" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT * SELECT *
FROM INDIC.RU_SUBJECTNONMONETOBLIG FROM INDIC.RU_SUBJECTNONMONETOBLIG
WHERE FID IN WHERE FID IN
@ -512,4 +521,151 @@
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR WITH UR
</select> </select>
<select id="findAllByFidsFromAccount" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.ACCOUNT
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromInformation" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.INFORMATION
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromBankruptcy" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.BANKRUPTCY
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromConsumerBankruptcy" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT *
FROM INDIC.CONSUMER_BANKRUPTCY
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromLegal" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.LEGAL
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY SERIAL_NUM
WITH UR
</select>
<select id="findAllByMemberCodeFromAccount" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.ACCOUNT
WHERE MEMBER_CODE LIKE #{memberCode} || '%'
ORDER BY SERIAL_NUM, LAST_UPDATED_DT DESC
WITH UR
</select>
<select id="findAllByMemberCodeFromInformation" resultType="java.util.LinkedHashMap" fetchSize="1000"
timeout="3600">
SELECT *
FROM INDIC.INFORMATION
WHERE MEMBER_CODE LIKE #{memberCode} || '%'
AND (CANCELLATION_FLAG != 'Y' OR CANCELLATION_FLAG IS NULL)
ORDER BY LAST_UPDATED_DT DESC
WITH UR
</select>
<select id="findFidsByOgrnFromIdForTutdf" resultType="java.util.LinkedHashMap" timeout="3600">
SELECT FID
FROM INDIC.ID
WHERE CAST(ID_NORM AS VARCHAR(2000)) = #{idNorm}
AND ID_TYPE in ('34')
ORDER BY LAST_UPDATED_DT DESC
WITH UR
</select>
<select id="findFidsByPassportFromIdForTutdf" resultType="java.util.LinkedHashMap" timeout="3600">
SELECT FID
FROM INDIC.ID
WHERE CAST(ID_NORM AS VARCHAR(2000)) = #{idNorm}
AND ID_TYPE in ('10', '21')
ORDER BY LAST_UPDATED_DT DESC
WITH UR
</select>
<select id="findAllByFidsFromAccountAmend" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.ACCOUNT_AMEND
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromPayment" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.PAYMENT
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromCollateral" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.COLLATERAL
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromGuarantor" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.GUARANTOR
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR
</select>
<select id="findAllByFidsFromBankGuarantee" resultType="java.util.LinkedHashMap" fetchSize="1000" timeout="3600">
SELECT *
FROM INDIC.BANK_GUARANTEE
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
ORDER BY ACC_SERIAL_NUM, SERIAL_NUM
WITH UR
</select>
</mapper> </mapper>