swt-exporter http://jira.mfd.msk:8088/browse/CLS-317 поправил формат DF09, DF11, DF12, DF14
This commit is contained in:
parent
385992cdb1
commit
c18d9d41aa
5 changed files with 64 additions and 28 deletions
|
|
@ -127,15 +127,6 @@ 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);
|
||||||
|
|
||||||
|
|
@ -152,9 +143,11 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
||||||
out.print(data);
|
out.print(data);
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
int checkSumCount = countIssues(records);
|
writeFooter(out, records, counter);
|
||||||
out.print(checkSumCount); // количество
|
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract void writeFooter(PrintWriter out, Collection<T> records, int counter);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||||
|
|
||||||
|
import com.hazelcast.aws.utility.StringUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf09;
|
import ru.clearing.classes.statics.data.sdf.SDf09;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -11,10 +12,9 @@ import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
|
||||||
import ru.spcex.platform.enumeration.SwtTable;
|
import ru.spcex.platform.enumeration.SwtTable;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DF09Exporter extends AbstractExporterService<SDf09> {
|
public class DF09Exporter extends AbstractExporterService<SDf09> {
|
||||||
|
|
@ -72,9 +72,18 @@ public class DF09Exporter extends AbstractExporterService<SDf09> {
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected long countIssues(Collection<SDf09> records) {
|
||||||
|
return records.stream()
|
||||||
|
.map(r -> r.getQuantity())
|
||||||
|
.filter(StringUtil::isNotEmpty)
|
||||||
|
.mapToLong(quantity -> Long.parseLong(quantity))
|
||||||
|
.sum();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int countIssues(Collection<SDf09> records) {
|
protected void writeFooter(PrintWriter out, Collection<SDf09> records, int counter) {
|
||||||
return (int) records.stream().map(SDf09::getSecurityCode).filter(Objects::nonNull).distinct().count();
|
long checkSumCount = countIssues(records);
|
||||||
|
out.print(checkSumCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||||
|
|
||||||
|
import com.hazelcast.aws.utility.StringUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf09;
|
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf11;
|
import ru.clearing.classes.statics.data.sdf.SDf11;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
|
@ -12,10 +12,9 @@ import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
|
||||||
import ru.spcex.platform.enumeration.SwtTable;
|
import ru.spcex.platform.enumeration.SwtTable;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -74,9 +73,18 @@ public class DF11Exporter extends AbstractExporterService<SDf11> {
|
||||||
return swtHeaderData;
|
return swtHeaderData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected long countIssues(Collection<SDf11> records) {
|
||||||
|
return records.stream()
|
||||||
|
.map(r -> r.getQuantity())
|
||||||
|
.filter(StringUtil::isNotEmpty)
|
||||||
|
.mapToLong(quantity -> Long.parseLong(quantity))
|
||||||
|
.sum();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int countIssues(Collection<SDf11> records) {
|
protected void writeFooter(PrintWriter out, Collection<SDf11> records, int counter) {
|
||||||
return (int) records.stream().map(SDf11::getSecurityCode).filter(Objects::nonNull).distinct().count();
|
long checkSumCount = countIssues(records);
|
||||||
|
out.print(checkSumCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||||
|
|
||||||
|
import com.hazelcast.aws.utility.StringUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf11;
|
import ru.clearing.classes.statics.data.sdf.SDf11;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf12;
|
import ru.clearing.classes.statics.data.sdf.SDf12;
|
||||||
|
|
@ -12,8 +13,10 @@ import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
|
||||||
import ru.spcex.platform.enumeration.SwtTable;
|
import ru.spcex.platform.enumeration.SwtTable;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.Collection;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -51,11 +54,16 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
||||||
return "Распоряжение на проведение операций по итогам клиринга (Фондовая секция / ОФЗ, ОБР)";
|
return "Распоряжение на проведение операций по итогам клиринга (Фондовая секция / ОФЗ, ОБР)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String lastHeader20 = null;
|
||||||
@Override
|
@Override
|
||||||
protected String convertRecord(SDf12 record, ConvertionContext context) {
|
protected String convertRecord(SDf12 record, ConvertionContext context) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
stringBuilder.append(context.getCountOfRecord()).append(lineSeparator);
|
stringBuilder.append(context.getCountOfRecord()).append(lineSeparator);
|
||||||
stringBuilder.append(context.getTotalCountOfRecords()).append(lineSeparator);
|
stringBuilder.append(context.getTotalCountOfRecords()).append(lineSeparator);
|
||||||
|
if (!Objects.equals(lastHeader20, record.getOutDocument())) { // header
|
||||||
|
stringBuilder.append(":20:").append(record.getOutDocument()).append(lineSeparator);
|
||||||
|
lastHeader20 = record.getOutDocument();
|
||||||
|
}
|
||||||
stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator);
|
stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator);
|
||||||
stringBuilder.append(":35A:SHS").append(record.getQuantity()).append(lineSeparator);
|
stringBuilder.append(":35A:SHS").append(record.getQuantity()).append(lineSeparator);
|
||||||
stringBuilder.append(":35B:ISIN ").append(record.getSecurityCode()).append(lineSeparator);
|
stringBuilder.append(":35B:ISIN ").append(record.getSecurityCode()).append(lineSeparator);
|
||||||
|
|
@ -72,13 +80,25 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
||||||
swtHeaderData.setType(typeForHeader());
|
swtHeaderData.setType(typeForHeader());
|
||||||
swtHeaderData.setDateTime(LocalDateTime.now());
|
swtHeaderData.setDateTime(LocalDateTime.now());
|
||||||
if (record != null) {
|
if (record != null) {
|
||||||
swtHeaderData.setValFor20Tag(record.getOutDocument());
|
// swtHeaderData.setValFor20Tag(record.getOutDocument());
|
||||||
swtHeaderData.setValFor23Tag(record.getDirection());
|
|
||||||
swtHeaderData.setValFor35ATag(record.getQuantity());
|
|
||||||
swtHeaderData.setValFor35BTag(record.getSecurityCode());
|
|
||||||
swtHeaderData.setValFor82DTag(record.getDepoCodeSender());
|
|
||||||
swtHeaderData.setValFor87CTag(record.getDepoCodeAdressee());
|
|
||||||
}
|
}
|
||||||
|
lastHeader20 = null;
|
||||||
return swtHeaderData;
|
return swtHeaderData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected long countIssues(Collection<SDf12> records) {
|
||||||
|
return records.stream()
|
||||||
|
.map(r -> r.getQuantity())
|
||||||
|
.filter(StringUtil::isNotEmpty)
|
||||||
|
.mapToLong(quantity -> Long.parseLong(quantity))
|
||||||
|
.sum();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void writeFooter(PrintWriter out, Collection<SDf12> records, int counter) {
|
||||||
|
String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator;
|
||||||
|
out.print(footerCheckSum);
|
||||||
|
String shsCheckSum = "SHS" + countIssues(records);
|
||||||
|
out.print(shsCheckSum);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,9 @@ import ru.spcex.clearing.swt.exporter.util.SWTHeaderData;
|
||||||
import ru.spcex.platform.enumeration.SwtTable;
|
import ru.spcex.platform.enumeration.SwtTable;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -71,4 +72,9 @@ public class DF14Exporter extends AbstractExporterService<SDf14> {
|
||||||
swtHeaderData.setValFor20Tag(java.util.UUID.randomUUID().toString());
|
swtHeaderData.setValFor20Tag(java.util.UUID.randomUUID().toString());
|
||||||
return swtHeaderData;
|
return swtHeaderData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void writeFooter(PrintWriter out, Collection<SDf14> records, int counter) {
|
||||||
|
// нет специального конца файла
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue