swt-exporter http://jira.mfd.msk:8088/browse/CLS-317 поправил формат

This commit is contained in:
AKurakin 2023-06-20 18:36:07 +03:00
parent 8d4c38a9cb
commit 4382cc5572
4 changed files with 30 additions and 6 deletions

View file

@ -127,6 +127,15 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
return sdfImdg.getAllValues(); return sdfImdg.getAllValues();
} }
/**
* Последняя строка - количество
* @param records
* @return
*/
protected int countIssues(Collection<T> records) {
return records.size();
}
// Конвертация (поля см. meta.xml) // Конвертация (поля см. meta.xml)
protected abstract String convertRecord(T record, ConvertionContext context); protected abstract String convertRecord(T record, ConvertionContext context);
@ -135,7 +144,7 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
protected void makeSWTData(SWTHeaderData header, Collection<T> records, OutputStream outStream) { protected void makeSWTData(SWTHeaderData header, Collection<T> records, OutputStream outStream) {
try (PrintWriter out = new PrintWriter(outStream)) { try (PrintWriter out = new PrintWriter(outStream)) {
out.print(header.buildString()); out.print(header.buildString());
int counter = 0; int counter = 1; // нумерация начинается с 1
int totalSize = records.size(); int totalSize = records.size();
for (T row : records) { for (T row : records) {
ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize); ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize);
@ -143,8 +152,8 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
out.print(data); out.print(data);
counter++; counter++;
} }
out.print(totalSize); int checkSumCount = countIssues(records);
out.print(lineSeparator); out.print(checkSumCount); // количество
out.flush(); out.flush();
} }
} }

View file

@ -12,7 +12,9 @@ import ru.spcex.platform.enumeration.SwtTable;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Objects;
@Service @Service
public class DF09Exporter extends AbstractExporterService<SDf09> { public class DF09Exporter extends AbstractExporterService<SDf09> {
@ -70,4 +72,9 @@ public class DF09Exporter extends AbstractExporterService<SDf09> {
return stringBuilder.toString(); return stringBuilder.toString();
} }
@Override
protected int countIssues(Collection<SDf09> records) {
return (int) records.stream().map(SDf09::getSecurityCode).filter(Objects::nonNull).distinct().count();
}
} }

View file

@ -13,7 +13,9 @@ import ru.spcex.platform.enumeration.SwtTable;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Objects;
@Service @Service
@ -71,4 +73,10 @@ public class DF11Exporter extends AbstractExporterService<SDf11> {
} }
return swtHeaderData; return swtHeaderData;
} }
@Override
protected int countIssues(Collection<SDf11> records) {
return (int) records.stream().map(SDf11::getSecurityCode).filter(Objects::nonNull).distinct().count();
}
} }

View file

@ -39,7 +39,7 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
@Override @Override
protected String typeForHeader() { protected String typeForHeader() {
return "012"; return "580";
} }
@Override @Override
@ -57,8 +57,8 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
stringBuilder.append(context.getCountOfRecord()).append(lineSeparator); stringBuilder.append(context.getCountOfRecord()).append(lineSeparator);
stringBuilder.append(context.getTotalCountOfRecords()).append(lineSeparator); stringBuilder.append(context.getTotalCountOfRecords()).append(lineSeparator);
stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator); stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator);
stringBuilder.append(":35A:").append(record.getQuantity()).append(lineSeparator); stringBuilder.append(":35A:SHS").append(record.getQuantity()).append(lineSeparator);
stringBuilder.append(":35B:").append(record.getSecurityCode()).append(lineSeparator); stringBuilder.append(":35B:ISIN ").append(record.getSecurityCode()).append(lineSeparator);
stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append(lineSeparator); stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append(lineSeparator);
stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append(lineSeparator); stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append(lineSeparator);
return stringBuilder.toString(); return stringBuilder.toString();