Merge branch 'dev' into CLNRWORM
This commit is contained in:
commit
b1db92425e
38 changed files with 286 additions and 171 deletions
|
|
@ -21,22 +21,32 @@ public class SDf06Table extends AbstractTable<SDf06> {
|
|||
public SDf06 getEntity(Object[] entity) {
|
||||
SDf06 result = new SDf06();
|
||||
result.setAccount((String) entity[0]);
|
||||
if (entity[1] instanceof BigDecimal) {
|
||||
result.setSum((BigDecimal) entity[1]);
|
||||
} else if (entity[1] instanceof String) {
|
||||
result.setSum(new BigDecimal((String) entity[1]));
|
||||
}
|
||||
result.setSum(anyNumberToBigDecimal(entity[1]));
|
||||
result.setMarket((String) entity[2]);
|
||||
result.setType((String) entity[3]);
|
||||
result.setDeal((String) entity[4]);
|
||||
result.setClientN((String) entity[5]);
|
||||
result.setInn((BigDecimal) entity[6]);
|
||||
result.setBic((BigDecimal) entity[7]);
|
||||
result.setInn(anyNumberToBigDecimal(entity[6]));
|
||||
result.setBic(anyNumberToBigDecimal(entity[7]));
|
||||
result.setSpec((String) entity[8]);
|
||||
result.setNumber((BigDecimal) entity[9]);
|
||||
result.setNumber(anyNumberToBigDecimal(entity[9]));
|
||||
result.setFileName(filename);
|
||||
result.setGenerationTime(Instant.now());
|
||||
result.setGenerationId(fileId);
|
||||
return result;
|
||||
}
|
||||
|
||||
BigDecimal anyNumberToBigDecimal(Object value) {
|
||||
if (value == null) return null;
|
||||
if (value instanceof BigDecimal) {
|
||||
return (BigDecimal) value;
|
||||
}
|
||||
if (value instanceof String) {
|
||||
return BigDecimal.valueOf(Long.parseLong((String)value));
|
||||
}
|
||||
if (value instanceof Number) {
|
||||
return BigDecimal.valueOf(((Number)value).longValue());
|
||||
}
|
||||
throw new IllegalArgumentException("Can not convert to BigDecimal " + value.getClass().getName() + " " + value);
|
||||
}
|
||||
}
|
||||
|
|
@ -161,12 +161,15 @@ public abstract class CSVReportBuilder<P, R> {
|
|||
protected CsvConverter determineConverter(Field field, Class<?> elementType, String locale, String writeLocale, Class<? extends AbstractCsvConverter> customConverter) throws CsvBadConverterException {
|
||||
CsvConverter csvConverter = super.determineConverter(field, elementType, locale, writeLocale, customConverter);
|
||||
if (csvConverter instanceof ConverterNumber && field.getType() == BigDecimal.class) {
|
||||
CsvNumber csvNumberAnnotation = field.getAnnotation(CsvNumber.class);
|
||||
String formatValue = csvNumberAnnotation.value();
|
||||
String writeFormat = csvNumberAnnotation.writeFormat();
|
||||
csvConverter = new ConverterNumber(BigDecimal.class,
|
||||
Locale.getDefault().toString(),
|
||||
Locale.getDefault().toString(),
|
||||
Locale.getDefault(),
|
||||
"#0.00",
|
||||
"#0.00");
|
||||
formatValue,
|
||||
writeFormat);
|
||||
}
|
||||
return csvConverter;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,48 +2,50 @@ package ru.spcex.clearing.reports.reports;
|
|||
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Objects;
|
||||
|
||||
public class PairRegistryId {
|
||||
private Long groupId;
|
||||
private LocalDate settlementDate;
|
||||
private String account;
|
||||
private Long sessionId;
|
||||
|
||||
public PairRegistryId() {
|
||||
|
||||
}
|
||||
|
||||
public PairRegistryId(Registry registry) {
|
||||
this.groupId = registry.getGroupId();
|
||||
this.settlementDate = registry.getSettlementDate();
|
||||
this.account = registry.getAccount();
|
||||
this.sessionId = registry.getSessionId();
|
||||
}
|
||||
|
||||
public Long getGroupId() {
|
||||
return groupId;
|
||||
public String getAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
public void setGroupId(Long groupId) {
|
||||
this.groupId = groupId;
|
||||
public void setAccount(String account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
public LocalDate getSettlementDate() {
|
||||
return settlementDate;
|
||||
public Long getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public void setSettlementDate(LocalDate settlementDate) {
|
||||
this.settlementDate = settlementDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(groupId, settlementDate);
|
||||
public void setSessionId(Long sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
PairRegistryId that = (PairRegistryId) o;
|
||||
return Objects.equals(groupId, that.groupId) && Objects.equals(settlementDate, that.settlementDate);
|
||||
if (!(o instanceof PairRegistryId that)) return false;
|
||||
|
||||
if (!Objects.equals(account, that.account)) return false;
|
||||
return Objects.equals(sessionId, that.sessionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = account != null ? account.hashCode() : 0;
|
||||
result = 31 * result + (sessionId != null ? sessionId.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public class ExecutedDealReport {
|
|||
|
||||
@CsvBindByName(column = "TRADETIME")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
|
||||
@CsvDate(value = "HH:mm:ss")
|
||||
private Instant tradeTime;
|
||||
|
||||
@CsvBindByName(column = "SETTLEDATE")
|
||||
|
|
@ -39,12 +39,12 @@ public class ExecutedDealReport {
|
|||
|
||||
@CsvBindByName(column = "PRICE")
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
@CsvNumber(value = "#0.000000", writeFormat = "#0.000000")
|
||||
private BigDecimal price;
|
||||
|
||||
@CsvBindByName(column = "QUANTITY")
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
@CsvNumber(value = "#0", writeFormat = "#0")
|
||||
private BigDecimal quantity;
|
||||
|
||||
@CsvBindByName(column = "VALUE")
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ public class KSCommissionTradesReport {
|
|||
@CsvBindByPosition(position = 3)
|
||||
private String agreementNumber;
|
||||
|
||||
@CsvBindByName(column = "AGREEMENT_NUMBER_PREFIX")
|
||||
@CsvBindByName(column = "AGREEMENT_NUMBER_POSTFIX")
|
||||
@CsvBindByPosition(position = 4)
|
||||
private String agreementNumberPrefix;
|
||||
private String agreementNumberPostfix;
|
||||
|
||||
@CsvBindByName(column = "AGREEMENT_DATE")
|
||||
@CsvBindByPosition(position = 5)
|
||||
|
|
@ -39,10 +39,14 @@ public class KSCommissionTradesReport {
|
|||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal sum;
|
||||
|
||||
@CsvBindByName(column = "SUM_DATE")
|
||||
@CsvBindByName(column = "REPAYM_DATE")
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate sumDate;
|
||||
private LocalDate repaymDate;
|
||||
|
||||
@CsvBindByName(column = "EXEC_STATUS")
|
||||
@CsvBindByPosition(position = 8)
|
||||
private String execStatus;
|
||||
|
||||
|
||||
public String getFirmId() {
|
||||
|
|
@ -77,12 +81,12 @@ public class KSCommissionTradesReport {
|
|||
this.agreementNumber = agreementNumber;
|
||||
}
|
||||
|
||||
public String getAgreementNumberPrefix() {
|
||||
return agreementNumberPrefix;
|
||||
public String getAgreementNumberPostfix() {
|
||||
return agreementNumberPostfix;
|
||||
}
|
||||
|
||||
public void setAgreementNumberPrefix(String agreementNumberPrefix) {
|
||||
this.agreementNumberPrefix = agreementNumberPrefix;
|
||||
public void setAgreementNumberPostfix(String agreementNumberPrefix) {
|
||||
this.agreementNumberPostfix = agreementNumberPrefix;
|
||||
}
|
||||
|
||||
public LocalDate getAgreementDate() {
|
||||
|
|
@ -101,11 +105,19 @@ public class KSCommissionTradesReport {
|
|||
this.sum = sum;
|
||||
}
|
||||
|
||||
public LocalDate getSumDate() {
|
||||
return sumDate;
|
||||
public LocalDate getRepaymDate() {
|
||||
return repaymDate;
|
||||
}
|
||||
|
||||
public void setSumDate(LocalDate sumDate) {
|
||||
this.sumDate = sumDate;
|
||||
public void setRepaymDate(LocalDate repaymDate) {
|
||||
this.repaymDate = repaymDate;
|
||||
}
|
||||
|
||||
public String getExecStatus() {
|
||||
return execStatus;
|
||||
}
|
||||
|
||||
public void setExecStatus(String execStatus) {
|
||||
this.execStatus = execStatus;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,22 +18,26 @@ public class KSRepCashRegisterSumsReport {
|
|||
@CsvBindByPosition(position = 1)
|
||||
private String account;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_CODE")
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 2)
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_CODE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
private String registerCode;
|
||||
|
||||
@CsvBindByName(column = "ADD_SUM")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal addSum;
|
||||
|
||||
@CsvBindByName(column = "ADD_TIME")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvDate(value = "HH:mm:ss")
|
||||
private LocalTime addTime;
|
||||
|
||||
@CsvBindByName(column = "ADD_DATE")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate addDate;
|
||||
|
||||
|
|
@ -85,4 +89,12 @@ public class KSRepCashRegisterSumsReport {
|
|||
public void setAddDate(LocalDate addDate) {
|
||||
this.addDate = addDate;
|
||||
}
|
||||
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,41 +17,45 @@ public class KSRepCashRegistersReport {
|
|||
@CsvBindByPosition(position = 1)
|
||||
private String account;
|
||||
|
||||
@CsvBindByName(column = "DATE")
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 2)
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "DATE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate date;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_CODE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvBindByPosition(position = 4)
|
||||
private String registerCode;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_NAME")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvBindByPosition(position = 5)
|
||||
private String registerName;
|
||||
|
||||
@CsvBindByName(column = "OPEN_BALANCE")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal openBalance;
|
||||
|
||||
@CsvBindByName(column = "CHANGE_BALANCE")
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal changeBalance;
|
||||
|
||||
@CsvBindByName(column = "ADD_WITHDRAW")
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvBindByPosition(position = 8)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal addWithdraw;
|
||||
|
||||
@CsvBindByName(column = "CLOSE_BALANCE")
|
||||
@CsvBindByPosition(position = 8)
|
||||
@CsvBindByPosition(position = 9)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal closeBalance;
|
||||
|
||||
@CsvBindByName(column = "REMARKS")
|
||||
@CsvBindByPosition(position = 9)
|
||||
@CsvBindByPosition(position = 10)
|
||||
private String remarks;
|
||||
|
||||
|
||||
|
|
@ -134,4 +138,12 @@ public class KSRepCashRegistersReport {
|
|||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,26 +18,30 @@ public class KSRepDepoRegisterQuantitiesReport {
|
|||
@CsvBindByPosition(position = 1)
|
||||
private String account;
|
||||
|
||||
@CsvBindByName(column = "SECURITYID")
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 2)
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "SECURITYID")
|
||||
@CsvBindByPosition(position = 3)
|
||||
private String securityId;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_CODE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvBindByPosition(position = 4)
|
||||
private String registerCode;
|
||||
|
||||
@CsvBindByName(column = "ADD_QUANTITY")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal addQuantity;
|
||||
|
||||
@CsvBindByName(column = "ADD_TIME")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvDate(value = "HH:mm:ss")
|
||||
private LocalTime addTime;
|
||||
|
||||
@CsvBindByName(column = "ADD_DATE")
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate addDate;
|
||||
|
||||
|
|
@ -97,4 +101,12 @@ public class KSRepDepoRegisterQuantitiesReport {
|
|||
public void setAddDate(LocalDate addDate) {
|
||||
this.addDate = addDate;
|
||||
}
|
||||
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,45 +17,49 @@ public class KSRepDepoRegistersReport {
|
|||
@CsvBindByPosition(position = 1)
|
||||
private String account;
|
||||
|
||||
@CsvBindByName(column = "DATE")
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 2)
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "DATE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate date;
|
||||
|
||||
@CsvBindByName(column = "SECURITYID")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvBindByPosition(position = 4)
|
||||
private String securityId;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_CODE")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvBindByPosition(position = 5)
|
||||
private String registerCode;
|
||||
|
||||
@CsvBindByName(column = "REGISTER_NAME")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvBindByPosition(position = 6)
|
||||
private String registerName;
|
||||
|
||||
@CsvBindByName(column = "OPEN_QUANTITY")
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal openQuantity;
|
||||
|
||||
@CsvBindByName(column = "CHANGE_QUANTITY")
|
||||
@CsvBindByPosition(position = 7)
|
||||
@CsvBindByPosition(position = 8)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
@CsvBindByName(column = "ADD_WITHDRAW_DEPO")
|
||||
@CsvBindByPosition(position = 8)
|
||||
@CsvBindByPosition(position = 9)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal addWithdrawDepo;
|
||||
|
||||
@CsvBindByName(column = "CLOSE_QUANTITY")
|
||||
@CsvBindByPosition(position = 9)
|
||||
@CsvBindByPosition(position = 10)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal closeQuantity;
|
||||
|
||||
@CsvBindByName(column = "REMARKS")
|
||||
@CsvBindByPosition(position = 10)
|
||||
@CsvBindByPosition(position = 11)
|
||||
private String remarks;
|
||||
|
||||
|
||||
|
|
@ -146,4 +150,12 @@ public class KSRepDepoRegistersReport {
|
|||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class KSRepTradesReport {
|
|||
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 4)
|
||||
private Long tkr;
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "CASH_LIABILITY")
|
||||
@CsvBindByPosition(position = 5)
|
||||
|
|
@ -91,11 +91,11 @@ public class KSRepTradesReport {
|
|||
this.firmId = firmId;
|
||||
}
|
||||
|
||||
public Long getTkr() {
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(Long tkr) {
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
|
||||
@Override
|
||||
public ReportKeys getReportKey() {
|
||||
return ReportKeys.UNFULFILLED_DEAL_REPORT;
|
||||
return ReportKeys.KS_BR_PFX65_DEALS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -137,10 +137,11 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
ksCommissionTradesReport.setFirmInitiator(companySymbols.getCompanySymbolValue());
|
||||
ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol());
|
||||
ksCommissionTradesReport.setAgreementNumber(agreementNumber);
|
||||
ksCommissionTradesReport.setAgreementNumberPrefix("");
|
||||
ksCommissionTradesReport.setAgreementNumberPostfix("");
|
||||
ksCommissionTradesReport.setAgreementDate(registry.getClearingDate());
|
||||
ksCommissionTradesReport.setSum(registry.getBalance());
|
||||
ksCommissionTradesReport.setSumDate(registry.getRefundDate());
|
||||
ksCommissionTradesReport.setRepaymDate(registry.getRefundDate());
|
||||
ksCommissionTradesReport.setExecStatus(registry.getRegistryStatus());
|
||||
|
||||
rows.add(ksCommissionTradesReport);
|
||||
} catch (Throwable e) {
|
||||
|
|
|
|||
|
|
@ -71,8 +71,7 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
pb.equals("accountType", AccountType.Clrn.getKey()),
|
||||
pb.equals("accountType", AccountType.Info.getKey())
|
||||
),
|
||||
pb.notNull("settlementDate"),
|
||||
pb.notNull("groupId")
|
||||
pb.notNull("account")
|
||||
);
|
||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
Map<PairRegistryId, List<Registry>> registryMap = registries.stream().collect(Collectors.groupingBy(PairRegistryId::new));
|
||||
|
|
@ -82,10 +81,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
PairRegistryId pairRegistryId = entry.getKey();
|
||||
List<Registry> groupedRegistry = entry.getValue();
|
||||
try {
|
||||
if (groupedRegistry.size() != 2) {
|
||||
log.warn("Invalid OM_T and TM_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped",
|
||||
pairRegistryId.getGroupId(),
|
||||
pairRegistryId.getSettlementDate(),
|
||||
if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) {
|
||||
log.warn("Invalid OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped",
|
||||
pairRegistryId.getAccount(),
|
||||
pairRegistryId.getSessionId(),
|
||||
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
|
||||
);
|
||||
continue;
|
||||
|
|
@ -93,33 +92,29 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
|
||||
Registry tmtRegistry = null;
|
||||
Registry omtRegistry = null;
|
||||
for (Registry registry : groupedRegistry) {
|
||||
if (RegistryDesignation.O.equalsByKey(registry.getRegistryDesignation())) omtRegistry = registry;
|
||||
if (RegistryDesignation.T.equalsByKey(registry.getRegistryDesignation())) tmtRegistry = registry;
|
||||
Registry registry = null;
|
||||
for (Registry currRegistry : groupedRegistry) {
|
||||
registry = currRegistry;
|
||||
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) omtRegistry = currRegistry;
|
||||
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tmtRegistry = currRegistry;
|
||||
}
|
||||
|
||||
if (tmtRegistry == null || omtRegistry == null) {
|
||||
log.warn("Invalid TM_T and OM_T registry pair, {} doubled. Registry pair was skipped", tmtRegistry == null ? "OM_T" : "TM_T");
|
||||
if (tmtRegistry != null && omtRegistry != null && !Objects.equals(tmtRegistry.getTradingCode(), omtRegistry.getTradingCode())) {
|
||||
log.warn("Invalid TM_T and OM_T registry pair, tradingCode not equals. Registry pair was skipped");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!Objects.equals(tmtRegistry.getAccount(), omtRegistry.getAccount()) ||
|
||||
!Objects.equals(tmtRegistry.getTradingCode(), omtRegistry.getTradingCode())) {
|
||||
log.warn("Invalid TM_T and OM_T registry pair, account or tradingCode not equals. Registry pair was skipped");
|
||||
continue;
|
||||
}
|
||||
|
||||
Session session = sessionImdg.getSingleObjectByID(tmtRegistry.getSessionId());
|
||||
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
|
||||
|
||||
KSRepCashNettoReport ksRepCashNettoReport = new KSRepCashNettoReport();
|
||||
ksRepCashNettoReport.setFirmId(tmtRegistry.getTradingCode());
|
||||
ksRepCashNettoReport.setSessionId(tmtRegistry.getSessionId());
|
||||
ksRepCashNettoReport.setFirmId(registry.getTradingCode());
|
||||
ksRepCashNettoReport.setSessionId(registry.getSessionId());
|
||||
ksRepCashNettoReport.setSessionDate(session != null ? session.getCreated() : null);
|
||||
ksRepCashNettoReport.setAccount(tmtRegistry.getAccount());
|
||||
ksRepCashNettoReport.setAccount(registry.getAccount());
|
||||
ksRepCashNettoReport.setDate(nowDate);
|
||||
|
||||
BigDecimal tmtBalance = tmtRegistry.getBalance() != null ? tmtRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal omtBalance = omtRegistry.getBalance() != null ? omtRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal tmtBalance = tmtRegistry != null && tmtRegistry.getBalance() != null ? tmtRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal omtBalance = omtRegistry != null && omtRegistry.getBalance() != null ? omtRegistry.getBalance() : BigDecimal.ZERO;
|
||||
ksRepCashNettoReport.setValue(tmtBalance.subtract(omtBalance));
|
||||
|
||||
rows.add(ksRepCashNettoReport);
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
|
|||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||
ksRepCashRegisterSumsReport.setFirmId(String.valueOf(statement.getAddresseeId()));
|
||||
ksRepCashRegisterSumsReport.setAccount(statement.getAccount());
|
||||
ksRepCashRegisterSumsReport.setTkr(registry.getTradingClearingRegistry());
|
||||
ksRepCashRegisterSumsReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepCashRegisterSumsReport.setAddDate(nowDate);
|
||||
ksRepCashRegisterSumsReport.setAddTime(LocalTime.ofInstant(statement.getUpdated(), ZoneId.systemDefault()));
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
KSRepCashRegistersReport ksRepCashRegistersReport = new KSRepCashRegistersReport();
|
||||
ksRepCashRegistersReport.setFirmId(registry.getTradingCode());
|
||||
ksRepCashRegistersReport.setAccount(registry.getAccount());
|
||||
ksRepCashRegistersReport.setTkr(registry.getTradingClearingRegistry());
|
||||
ksRepCashRegistersReport.setDate(nowDate);
|
||||
ksRepCashRegistersReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepCashRegistersReport.setOpenBalance(registry.getOpenBalance());
|
||||
|
|
|
|||
|
|
@ -68,8 +68,7 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
pb.equals("clearingDate", nowDate),
|
||||
pb.sql(sql),
|
||||
pb.equals("accountType", AccountType.Depo.getKey()),
|
||||
pb.notNull("settlementDate"),
|
||||
pb.notNull("groupId")
|
||||
pb.notNull("account")
|
||||
);
|
||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
|
||||
|
|
@ -79,10 +78,10 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
PairRegistryId pairRegistryId = entry.getKey();
|
||||
List<Registry> groupedRegistry = entry.getValue();
|
||||
try {
|
||||
if (groupedRegistry.size() != 2) {
|
||||
log.warn("Invalid OS_T and TS_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped",
|
||||
pairRegistryId.getGroupId(),
|
||||
pairRegistryId.getSettlementDate(),
|
||||
if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) {
|
||||
log.warn("Invalid OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped",
|
||||
pairRegistryId.getAccount(),
|
||||
pairRegistryId.getSessionId(),
|
||||
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
|
||||
);
|
||||
continue;
|
||||
|
|
@ -90,36 +89,32 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
|
||||
Registry tstRegistry = null;
|
||||
Registry ostRegistry = null;
|
||||
for (Registry registry : groupedRegistry) {
|
||||
if (RegistryDesignation.O.equalsByKey(registry.getRegistryDesignation())) ostRegistry = registry;
|
||||
if (RegistryDesignation.T.equalsByKey(registry.getRegistryDesignation())) tstRegistry = registry;
|
||||
Registry registry = null;
|
||||
for (Registry currRegistry : groupedRegistry) {
|
||||
registry = currRegistry;
|
||||
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) ostRegistry = currRegistry;
|
||||
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tstRegistry = currRegistry;
|
||||
}
|
||||
|
||||
if (tstRegistry == null || ostRegistry == null) {
|
||||
log.warn("Invalid TS_T and OS_T registry pair, {} doubled. Registry pair was skipped", tstRegistry == null ? "OS_T" : "TS_T");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!Objects.equals(tstRegistry.getTradingCode(), ostRegistry.getTradingCode()) ||
|
||||
!Objects.equals(tstRegistry.getAccount(), ostRegistry.getAccount()) ||
|
||||
!Objects.equals(tstRegistry.getSecuritySymbol(), ostRegistry.getSecuritySymbol())) {
|
||||
if ((tstRegistry != null && ostRegistry != null) &&
|
||||
(!Objects.equals(tstRegistry.getTradingCode(), ostRegistry.getTradingCode()) ||
|
||||
!Objects.equals(tstRegistry.getSecuritySymbol(), ostRegistry.getSecuritySymbol()))) {
|
||||
log.warn("Invalid TS_T and OS_T registry pair, account/tradingCode/securityId not equals. Registry pair was skipped");
|
||||
continue;
|
||||
}
|
||||
|
||||
KSRepDepoNettoReport ksRepDepoNettoReport = new KSRepDepoNettoReport();
|
||||
ksRepDepoNettoReport.setFirmId(tstRegistry.getTradingCode());
|
||||
ksRepDepoNettoReport.setSessionId(tstRegistry.getSessionId());
|
||||
ksRepDepoNettoReport.setAccount(tstRegistry.getAccount());
|
||||
ksRepDepoNettoReport.setSecurityId(tstRegistry.getSecuritySymbol());
|
||||
ksRepDepoNettoReport.setFirmId(registry.getTradingCode());
|
||||
ksRepDepoNettoReport.setSessionId(registry.getSessionId());
|
||||
ksRepDepoNettoReport.setAccount(registry.getAccount());
|
||||
ksRepDepoNettoReport.setSecurityId(registry.getSecuritySymbol());
|
||||
ksRepDepoNettoReport.setDate(nowDate);
|
||||
|
||||
Session session = sessionImdg.getSingleObjectByID(tstRegistry.getSessionId());
|
||||
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
|
||||
if (session != null) ksRepDepoNettoReport.setSessionDate(session.getCreated());
|
||||
|
||||
BigDecimal tmtBalance = tstRegistry.getBalance() != null ? tstRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal omtBalance = ostRegistry.getBalance() != null ? ostRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal tmtBalance = tstRegistry != null && tstRegistry.getBalance() != null ? tstRegistry.getBalance() : BigDecimal.ZERO;
|
||||
BigDecimal omtBalance = ostRegistry != null && ostRegistry.getBalance() != null ? ostRegistry.getBalance() : BigDecimal.ZERO;
|
||||
ksRepDepoNettoReport.setValue(tmtBalance.subtract(omtBalance));
|
||||
|
||||
rows.add(ksRepDepoNettoReport);
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
|||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||
ksRepDepoRegisterQuantitiesReport.setFirmId(String.valueOf(statement.getAddresseeId()));
|
||||
ksRepDepoRegisterQuantitiesReport.setAccount(statement.getAccount());
|
||||
ksRepDepoRegisterQuantitiesReport.setTkr(registry.getTradingClearingRegistry());
|
||||
ksRepDepoRegisterQuantitiesReport.setSecurityId(security.getSecuritySymbol());
|
||||
ksRepDepoRegisterQuantitiesReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAddDate(nowDate);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
|||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
|
@ -86,6 +87,7 @@ public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
KSRepDepoRegistersReport ksRepDepoRegistersReport = new KSRepDepoRegistersReport();
|
||||
ksRepDepoRegistersReport.setFirmId(registry.getTradingCode());
|
||||
ksRepDepoRegistersReport.setAccount(registry.getAccount());
|
||||
ksRepDepoRegistersReport.setTkr(registry.getTradingClearingRegistry());
|
||||
ksRepDepoRegistersReport.setDate(nowDate);
|
||||
ksRepDepoRegistersReport.setSecurityId(registry.getSecuritySymbol());
|
||||
ksRepDepoRegistersReport.setRegisterCode(registry.getRegistryCode());
|
||||
|
|
@ -96,17 +98,13 @@ public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
RegistryCodeDictionary registryCodeDescription = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode()));
|
||||
if (registryCodeDescription != null) ksRepDepoRegistersReport.setRegisterName(registryCodeDescription.getName());
|
||||
|
||||
if (registry.getSettledCredit() != null) {
|
||||
if (registry.getSettledDebit() != null)
|
||||
ksRepDepoRegistersReport.setChangeQuantity(registry.getSettledCredit().subtract(registry.getSettledDebit()));
|
||||
else ksRepDepoRegistersReport.setChangeQuantity(registry.getSettledCredit());
|
||||
}
|
||||
BigDecimal settledCredit = registry.getSettledCredit() != null ? registry.getSettledCredit() : BigDecimal.ZERO;
|
||||
BigDecimal settledDebit = registry.getSettledDebit() != null ? registry.getSettledDebit() : BigDecimal.ZERO;
|
||||
ksRepDepoRegistersReport.setChangeQuantity(settledCredit.subtract(settledDebit));
|
||||
|
||||
if (registry.getCredit() != null) {
|
||||
if (registry.getDebit() != null)
|
||||
ksRepDepoRegistersReport.setAddWithdrawDepo(registry.getCredit().subtract(registry.getDebit()));
|
||||
else ksRepDepoRegistersReport.setAddWithdrawDepo(registry.getCredit());
|
||||
}
|
||||
BigDecimal credit = registry.getCredit() != null ? registry.getCredit() : BigDecimal.ZERO;
|
||||
BigDecimal debit = registry.getDebit() != null ? registry.getDebit() : BigDecimal.ZERO;
|
||||
ksRepDepoRegistersReport.setAddWithdrawDepo(credit.subtract(debit));
|
||||
|
||||
rows.add(ksRepDepoRegistersReport);
|
||||
} catch (Throwable e) {
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
|||
import ru.clearing.classes.statics.data.misc.Market;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
|
|
@ -34,6 +35,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Market> marketImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
|
||||
private List<KSRepTradesReport> rows = null;
|
||||
|
||||
|
|
@ -44,6 +46,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -93,7 +96,16 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
KSRepTradesReport ksRepTradesReport = new KSRepTradesReport();
|
||||
ksRepTradesReport.setSessionId(execution.getSessionId());
|
||||
ksRepTradesReport.setTrId(execution.getId());
|
||||
ksRepTradesReport.setTkr(execution.getTradingClearingRegistryId());
|
||||
|
||||
TradingClearingRegistry registry = tradingClearingRegistryImdg.getSingleObjectByID(execution.getTradingClearingRegistryId());
|
||||
if (registry == null) {
|
||||
log.info("Execution id = {} was skipped: trading_clearing_registry for id {} not found",
|
||||
execution.getId(),
|
||||
execution.getTradingClearingRegistryId());
|
||||
continue;
|
||||
}
|
||||
|
||||
ksRepTradesReport.setTkr(registry.getCode());
|
||||
|
||||
if (execution.getCompanyId() != null) {
|
||||
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import ru.spcex.clearing.reports.reports.SessionIdParam;
|
|||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||
import ru.spcex.platform.enumeration.ReportKeys;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -265,7 +266,25 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values());
|
||||
|
||||
sendReportsToGateway(sessionIds, outFiles, null);
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX64 = new HashMap<>();
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX65 = new HashMap<>();
|
||||
for (Map.Entry<File, ReportInfo> entry : outFiles.entrySet()) {
|
||||
File reportFile = entry.getKey();
|
||||
ReportInfo reportInfo = entry.getValue();
|
||||
ReportKeys reportKey = IEnumKey.getEnumByKey(ReportKeys.class, reportInfo.reportKey());
|
||||
if (reportKey == ReportKeys.KS_BR_PFX65_DEALS) {
|
||||
outFilesWithReportType_PFX65.put(reportFile, reportInfo);
|
||||
} else if (
|
||||
reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_1 ||
|
||||
reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_2 ||
|
||||
reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_3 ||
|
||||
reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_4
|
||||
) {
|
||||
outFilesWithReportType_PFX64.put(reportFile, reportInfo);
|
||||
}
|
||||
}
|
||||
sendReportsToGateway(sessionIds, outFilesWithReportType_PFX64, ReportType.PFX64.getKey());
|
||||
sendReportsToGateway(sessionIds, outFilesWithReportType_PFX65, ReportType.PFX65.getKey());
|
||||
sendFilesToSftp(outFiles.keySet());
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ public class ReportServiceTest_BP {
|
|||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_1"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
|
|
@ -261,7 +261,7 @@ public class ReportServiceTest_BP {
|
|||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_2"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
|
|
@ -310,7 +310,7 @@ public class ReportServiceTest_BP {
|
|||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_3"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
|
|
@ -409,7 +409,7 @@ public class ReportServiceTest_BP {
|
|||
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/unfulfilled_deal_report_expected.csv").getFile());
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE"));
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import ru.clearing.classes.statics.data.misc.Market;
|
|||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.clearing.platform.dictionary.RegistryCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
|
|
@ -85,6 +86,7 @@ public class ReportServiceTest_KS {
|
|||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
||||
private Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
|
||||
private Long COMPANY_ID;
|
||||
@Autowired
|
||||
|
|
@ -129,6 +131,7 @@ public class ReportServiceTest_KS {
|
|||
registry.setRegistryUnit(RegistryUnit.T.getKey());
|
||||
registry.setUpdated(Instant.now());
|
||||
registry.setTradingCode("TRADING_CODE");
|
||||
registry.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
|
||||
registry.setAccount("ACCOUNT");
|
||||
registry.setAccountType(AccountType.Clrn.getKey());
|
||||
registry.setOpenBalance(BigDecimal.valueOf(77.777777777));
|
||||
|
|
@ -170,6 +173,7 @@ public class ReportServiceTest_KS {
|
|||
registry_1.setAccount("ACCOUNT");
|
||||
registry_1.setAccountType(AccountType.Clrn.getKey());
|
||||
registry_1.setRegistryCode(RegistryUnit.T.getKey());
|
||||
registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
|
||||
registryImdg.insert(registry_1);
|
||||
|
||||
Statement statement_1 = new Statement();
|
||||
|
|
@ -222,6 +226,7 @@ public class ReportServiceTest_KS {
|
|||
registry.setUpdated(Instant.now());
|
||||
registry.setTradingCode("TRADING_CODE");
|
||||
registry.setAccount("ACCOUNT");
|
||||
registry.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
|
||||
registry.setAccountType(AccountType.Depo.getKey());
|
||||
registry.setOpenBalance(BigDecimal.valueOf(77.777777777));
|
||||
registry.setSettledCredit(BigDecimal.valueOf(88.88888888));
|
||||
|
|
@ -260,6 +265,7 @@ public class ReportServiceTest_KS {
|
|||
Registry registry_1 = new Registry();
|
||||
registry_1.setCompanyId(COMPANY_ID);
|
||||
registry_1.setAccount("ACCOUNT");
|
||||
registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
|
||||
registry_1.setAccountType(AccountType.Depo.getKey());
|
||||
registry_1.setRegistryCode(RegistryUnit.T.getKey());
|
||||
registryImdg.insert(registry_1);
|
||||
|
|
@ -307,6 +313,10 @@ public class ReportServiceTest_KS {
|
|||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportBuilderType.KS_REP_TRADES.getKey());
|
||||
|
||||
TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry();
|
||||
tradingClearingRegistry.setCode("TKR");
|
||||
Long tkrId = tradingClearingRegistryImdg.insert(tradingClearingRegistry);
|
||||
|
||||
Session session_1 = new Session();
|
||||
session_1.setCreated(Instant.ofEpochMilli(LocalDateTime.of(2023, 6, 30, 0, 0, 0).toEpochSecond(ZoneOffset.UTC)));
|
||||
Long sessionId_1 = sessionImdg.insert(session_1);
|
||||
|
|
@ -319,7 +329,7 @@ public class ReportServiceTest_KS {
|
|||
executionFond.setCompanyId(COMPANY_ID);
|
||||
executionFond.setTradingDate(LocalDate.now());
|
||||
executionFond.setSessionId(sessionId_1);
|
||||
executionFond.setTradingClearingRegistryId(666L);
|
||||
executionFond.setTradingClearingRegistryId(tkrId);
|
||||
executionFond.setSettlementAmount(BigDecimal.valueOf(8888.888888));
|
||||
executionFond.setQuantity(BigDecimal.valueOf(123.456789));
|
||||
executionFond.setExchangeExecutionId(222L);
|
||||
|
|
@ -347,7 +357,7 @@ public class ReportServiceTest_KS {
|
|||
executionDeposit.setCompanyId(COMPANY_ID);
|
||||
executionDeposit.setTradingDate(LocalDate.now());
|
||||
executionDeposit.setSessionId(sessionId_2);
|
||||
executionDeposit.setTradingClearingRegistryId(666L);
|
||||
executionDeposit.setTradingClearingRegistryId(tkrId);
|
||||
executionDeposit.setFirstLegAmount(BigDecimal.valueOf(8888.888888));
|
||||
executionDeposit.setExchangeExecutionId(222L);
|
||||
executionDeposit.setExchangeExecutionTime(Instant.ofEpochMilli(LocalDateTime.of(2022, 1, 1, 1, 1, 1).toEpochSecond(ZoneOffset.UTC)));
|
||||
|
|
@ -373,6 +383,7 @@ public class ReportServiceTest_KS {
|
|||
sessionImdg.delete(session_1);
|
||||
sessionImdg.delete(session_2);
|
||||
registryImdg.delete(registry);
|
||||
tradingClearingRegistryImdg.delete(tradingClearingRegistry);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -653,7 +664,7 @@ public class ReportServiceTest_KS {
|
|||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("SUM_DATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("REPAYM_DATE"));
|
||||
|
||||
registryImdg.delete(registry);
|
||||
registryImdg.delete(omtRegistry);
|
||||
|
|
@ -723,6 +734,7 @@ public class ReportServiceTest_KS {
|
|||
marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
}
|
||||
|
||||
private void clearTestDir() throws IOException {
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
|
||||
"test-security-symbol-1","777","27.06.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00"
|
||||
"test-security-symbol-1","777","22.07.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00"
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
|
||||
"test-security-symbol-1","777","07.07.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00"
|
||||
"test-security-symbol-1","777","01.08.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00"
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
|
||||
"test-security-symbol-1","777","17.07.2023","25.08.1994T01:22:57","17.07.2023","test-settle-code","1000.00","7777.00","7777777.00"
|
||||
"test-security-symbol-1","777","11.08.2023","01:22:57","11.08.2023","test-settle-code","1000.000000","7777","7777777.00"
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE"
|
||||
"test-security-symbol-1","777","17.07.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00"
|
||||
"test-security-symbol-1","777","11.08.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00"
|
||||
|
|
|
|||
|
|
|
@ -0,0 +1,2 @@
|
|||
"SECURITYID","TRADENO","TRADEDATE","SETTLECODE"
|
||||
"3007","777","22.07.2023","test-class-code"
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
SECURITYID,TRADENO,TRADEDATE,SETTLECODE
|
||||
"3007","777","20.06.2023","test-class-code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
"FIRMID","FIRM_INITIATOR","SECCODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_PREFIX","AGREEMENT_DATE","SUM","SUM_DATE"
|
||||
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","SECURITY_SYMBOL/010191/CLEARING_CODE777","","01.01.1991","77.78","18.07.2023"
|
||||
"FIRMID","FIRM_INITIATOR","SECCODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
|
||||
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","SECURITY_SYMBOL/010191/CLEARING_CODE777","","01.01.1991","77.78","01.08.2023","OK"
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"FIRMID","ACCOUNT","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS"
|
||||
"TRADING_CODE","ACCOUNT","07.07.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","11.11",""
|
||||
"FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS"
|
||||
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","11.11",""
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"FIRMID","ACCOUNT","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE"
|
||||
"1","ACCOUNT","T","7777.78","17:00:50","17.07.2023"
|
||||
"FIRMID","ACCOUNT","TKR","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE"
|
||||
"1","ACCOUNT","TRADING_CLEARING_REGISTRY","T","7777.78","15:49:30","01.08.2023"
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"FIRMID","ACCOUNT","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS"
|
||||
"TRADING_CODE","ACCOUNT","07.07.2023","","AS_T","AS_T_NAME","77.78","66.67","66.67","11.11",""
|
||||
"FIRMID","ACCOUNT","TKR","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS"
|
||||
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","77.78","66.67","66.67","11.11",""
|
||||
|
|
|
|||
|
|
|
@ -1,2 +1,2 @@
|
|||
"FIRMID","ACCOUNT","SECURITYID","REGISTER_CODE","ADD_QUANTITY","ADD_TIME","ADD_DATE"
|
||||
"1","ACCOUNT","value","T","7777.78","18:39:59","17.07.2023"
|
||||
"FIRMID","ACCOUNT","TKR","SECURITYID","REGISTER_CODE","ADD_QUANTITY","ADD_TIME","ADD_DATE"
|
||||
"1","ACCOUNT","TRADING_CLEARING_REGISTRY","value","T","7777.78","15:52:33","01.08.2023"
|
||||
|
|
|
|||
|
|
|
@ -1,3 +1,3 @@
|
|||
"SESSION_ID","SESSION_DATE","TR_ID","FIRM_ID","TKR","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS"
|
||||
"3","20.01.1970T04:09:07","6","TRADING_CODE","666","8888.89","","222","","19.01.1970T23:49:58","3"
|
||||
"2","20.01.1970T12:54:43","4","TRADING_CODE","666","8888.89","123.46","222","","19.01.1970T23:49:58","1"
|
||||
"4","20.01.1970T04:09:07","8","TRADING_CODE","TKR","8888.89","","222","","19.01.1970T23:49:58","3"
|
||||
"3","20.01.1970T12:54:43","5","TRADING_CODE","TKR","8888.89","123.46","222","","19.01.1970T23:49:58","1"
|
||||
|
|
|
|||
|
|
|
@ -13,10 +13,14 @@ import ru.spcex.platform.enumeration.SwtTable;
|
|||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import static ru.spcex.clearing.platform.messaging.domain.Consts.JOURNAL_SERVICE;
|
||||
|
||||
|
|
@ -135,8 +139,8 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
|
|||
protected void makeSWTData(SWTHeaderData header, Collection<T> records, OutputStream outStream) {
|
||||
try (PrintWriter out = new PrintWriter(outStream)) {
|
||||
out.print(header.buildString());
|
||||
int counter = 1; // нумерация начинается с 1
|
||||
int totalSize = records.size();
|
||||
int counter = totalSize == 0 ? 0 : 1; // нумерация начинается с 1
|
||||
for (T row : records) {
|
||||
ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize);
|
||||
String data = convertRecord(row, context);
|
||||
|
|
|
|||
|
|
@ -63,7 +63,8 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
|||
lastHeader20 = record.getOutDocument();
|
||||
}
|
||||
stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator);
|
||||
stringBuilder.append(":35A:SHS").append(record.getQuantity()).append(lineSeparator);
|
||||
String quantity = record.getQuantity() == null ? "" : record.getQuantity().split("\\.")[0] + ",";
|
||||
stringBuilder.append(":35A:SHS").append(quantity).append(lineSeparator);
|
||||
stringBuilder.append(":35B:ISIN ").append(record.getSecurityCode()).append(lineSeparator);
|
||||
stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append(lineSeparator);
|
||||
stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append(lineSeparator);
|
||||
|
|
@ -96,7 +97,7 @@ public class DF12Exporter extends AbstractExporterService<SDf12> {
|
|||
|
||||
@Override
|
||||
protected void writeFooter(PrintWriter out, Collection<SDf12> records, int counter) {
|
||||
String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator;
|
||||
out.print(footerCheckSum);
|
||||
// String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator;
|
||||
// out.print(footerCheckSum);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,7 +156,8 @@ public class SWTHeaderData {
|
|||
stringBuilder.append(":23:").append(valFor23Tag).append('\n');
|
||||
}
|
||||
if (valFor35ATag != null) {
|
||||
stringBuilder.append(":35A:SHS").append(valFor35ATag).append('\n');
|
||||
String val = valFor35ATag.split("\\.")[0] + ",";
|
||||
stringBuilder.append(":35A:SHS").append(val).append('\n');
|
||||
}
|
||||
if (valFor35BTag != null) {
|
||||
stringBuilder.append(":35B:ISIN ").append(valFor35BTag).append('\n');
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ public enum ReportKeys implements IEnumKey {
|
|||
KS_BR_PFX64_INFTYPE_2("KS_BR_PFX64_INFTYPE_2"),
|
||||
KS_BR_PFX64_INFTYPE_3("KS_BR_PFX64_INFTYPE_3"),
|
||||
KS_BR_PFX64_INFTYPE_4("KS_BR_PFX64_INFTYPE_4"),
|
||||
UNFULFILLED_DEAL_REPORT("UNFULFILLED_DEAL_REPORT"),
|
||||
KS_BR_PFX65_DEALS("KS_BR_PFX65_DEALS"),
|
||||
KS_REP_CASH_REGISTERS("KS_REP_CASH_REGISTERS"),
|
||||
KS_REP_CASH_REGISTER_SUMS("KS_REP_CASH_REGISTER_SUMS"),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue