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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Последняя строка - количество
|
||||
* @param records
|
||||
* @return
|
||||
*/
|
||||
protected int countIssues(Collection<T> records) {
|
||||
return records.size();
|
||||
}
|
||||
|
||||
// Конвертация (поля см. meta.xml)
|
||||
protected abstract String convertRecord(T record, ConvertionContext context);
|
||||
|
||||
|
|
@ -152,9 +143,11 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
|||
out.print(data);
|
||||
counter++;
|
||||
}
|
||||
int checkSumCount = countIssues(records);
|
||||
out.print(checkSumCount); // количество
|
||||
writeFooter(out, records, counter);
|
||||
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;
|
||||
|
||||
import com.hazelcast.aws.utility.StringUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf09;
|
||||
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.imdg.api.ImdgProvider;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
public class DF09Exporter extends AbstractExporterService<SDf09> {
|
||||
|
|
@ -72,9 +72,18 @@ public class DF09Exporter extends AbstractExporterService<SDf09> {
|
|||
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
|
||||
protected int countIssues(Collection<SDf09> records) {
|
||||
return (int) records.stream().map(SDf09::getSecurityCode).filter(Objects::nonNull).distinct().count();
|
||||
protected void writeFooter(PrintWriter out, Collection<SDf09> records, int counter) {
|
||||
long checkSumCount = countIssues(records);
|
||||
out.print(checkSumCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||
|
||||
import com.hazelcast.aws.utility.StringUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf09;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf11;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
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.imdg.api.ImdgProvider;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@Service
|
||||
|
|
@ -74,9 +73,18 @@ public class DF11Exporter extends AbstractExporterService<SDf11> {
|
|||
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
|
||||
protected int countIssues(Collection<SDf11> records) {
|
||||
return (int) records.stream().map(SDf11::getSecurityCode).filter(Objects::nonNull).distinct().count();
|
||||
protected void writeFooter(PrintWriter out, Collection<SDf11> records, int counter) {
|
||||
long checkSumCount = countIssues(records);
|
||||
out.print(checkSumCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.swt.exporter.services.exportimpl;
|
||||
|
||||
import com.hazelcast.aws.utility.StringUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf11;
|
||||
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.imdg.api.ImdgProvider;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@Service
|
||||
|
|
@ -51,11 +54,16 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
|||
return "Распоряжение на проведение операций по итогам клиринга (Фондовая секция / ОФЗ, ОБР)";
|
||||
}
|
||||
|
||||
String lastHeader20 = null;
|
||||
@Override
|
||||
protected String convertRecord(SDf12 record, ConvertionContext context) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(context.getCountOfRecord()).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(":35A:SHS").append(record.getQuantity()).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.setDateTime(LocalDateTime.now());
|
||||
if (record != null) {
|
||||
swtHeaderData.setValFor20Tag(record.getOutDocument());
|
||||
swtHeaderData.setValFor23Tag(record.getDirection());
|
||||
swtHeaderData.setValFor35ATag(record.getQuantity());
|
||||
swtHeaderData.setValFor35BTag(record.getSecurityCode());
|
||||
swtHeaderData.setValFor82DTag(record.getDepoCodeSender());
|
||||
swtHeaderData.setValFor87CTag(record.getDepoCodeAdressee());
|
||||
// swtHeaderData.setValFor20Tag(record.getOutDocument());
|
||||
}
|
||||
lastHeader20 = null;
|
||||
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.imdg.api.ImdgProvider;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Collection;
|
||||
|
||||
|
||||
@Service
|
||||
|
|
@ -71,4 +72,9 @@ public class DF14Exporter extends AbstractExporterService<SDf14> {
|
|||
swtHeaderData.setValFor20Tag(java.util.UUID.randomUUID().toString());
|
||||
return swtHeaderData;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeFooter(PrintWriter out, Collection<SDf14> records, int counter) {
|
||||
// нет специального конца файла
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue