http://jira.mfd.msk:8088/browse/CLS-497 KSCommissionTradesReportBuilder fix

This commit is contained in:
akulikov 2023-09-05 11:04:20 +03:00
parent 67d851b5b6
commit 4a08f72d40
3 changed files with 62 additions and 27 deletions

View file

@ -15,6 +15,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -81,12 +82,13 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
pb.sql(sql), pb.sql(sql),
pb.equals("refundDate", nowDate), pb.equals("refundDate", nowDate),
pb.equals("registryStatus", RegistryStatus.OK.getKey()), pb.equals("registryStatus", RegistryStatus.OK.getKey()),
pb.notNull("clearingDate") pb.notNull("tradingDate")
); );
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate); Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate);
rows = new ArrayList<>(registries.size()); rows = new ArrayList<>(registries.size());
for (Registry registry : registries) { for (Registry registry : registries) {
try { try {
RegistryUnit registryUnit = IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit());
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId()); Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
if (company == null) { if (company == null) {
log.warn("For registry id = {} company with id = {} not found, registry was skipped", log.warn("For registry id = {} company with id = {} not found, registry was skipped",
@ -96,18 +98,48 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
} }
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue; if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
CompanySymbols companySymbols = companySymbolsImdg.getFirstObjectByFieldValues( String firmId = "";
Map.of( String firmIdInitiator = "";
"companyId", registry.getCompanyId(), if (registryUnit == RegistryUnit.X) {
"companySymbol", CompanySymbol.INTC.getKey() if (registry.getCounterPartyId() != null) {
) Company companyForFirmId = companyImdg.getSingleObjectByID(registry.getCounterPartyId());
); if (companyForFirmId != null) firmId = companyForFirmId.getClearingCode();
if (companySymbols == null) { else {
log.warn("Can't find CompanySymbols {} for companyId = {}. Registry id = {} skipped", log.warn("For registry id = {}, counterPartyId = {} company not found, can't set FIRM_ID",
CompanySymbol.INTC.getKey(), registry.getId(),
registry.getCompanyId(), registry.getCounterPartyId());
registry.getId()); }
continue; }
CompanySymbols companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(
Map.of(
"companyId", registry.getCompanyId(),
"companySymbol", CompanySymbol.INTC.getKey()
)
);
if (companySymbols != null) firmIdInitiator = companySymbols.getCompanySymbolValue();
else {
log.warn("For registry id = {} can't find CompanySymbols {} for company.id = {}, can't set FIRM_ID_INITIATOR",
registry.getId(),
CompanySymbol.INTC.getKey(),
registry.getCompanyId());
}
} else if (registryUnit == RegistryUnit.T) {
firmId = registry.getClearingCode();
if (registry.getCounterPartyId() != null) {
CompanySymbols companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(
Map.of(
"companyId", registry.getCounterPartyId(),
"companySymbol", CompanySymbol.INTC.getKey()
)
);
if (companySymbols != null) firmIdInitiator = companySymbols.getCompanySymbolValue();
else {
log.warn("For registry id = {} can't find CompanySymbols {} for registry.counterPartyId = {}, can't set FIRM_ID_INITIATOR",
registry.getId(),
CompanySymbol.INTC.getKey(),
registry.getCompanyId());
}
}
} }
sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T).build(); sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T).build();
@ -128,18 +160,19 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
String tradeNum = extractPartAgreementNumber(String.valueOf(omtRegistry.getGroupId())); String tradeNum = extractPartAgreementNumber(String.valueOf(omtRegistry.getGroupId()));
if (tradeNum == null) { if (tradeNum == null) {
log.warn("Can't extract ExchangeExecutionId from GroupId (groupId = {} for OM_T registry id = {}). " + log.warn("Can't extract ExchangeExecutionId from GroupId (groupId = {} for OM_T registry id = {}). " +
"Registry id = {} skipped", "Registry id = {} skipped",
omtRegistry.getGroupId(), omtRegistry.getGroupId(),
omtRegistry.getId(), omtRegistry.getId(),
registry.getId()); registry.getId());
continue; continue;
} }
String agreementNumber = "%s/%s/%s/%s".formatted(
registry.getSecuritySymbol(), String agreementNumber = registry.getContract();
dateFormatter_ddMMyy.format(registry.getClearingDate()), if (agreementNumber != null && agreementNumber.contains("~"))
registry.getClearingCode(), agreementNumber = agreementNumber.substring(0, agreementNumber.indexOf("~"));
tradeNum String agreementNumberPostfix = registry.getContract();
); if (agreementNumberPostfix != null && !agreementNumberPostfix.contains("~"))
agreementNumberPostfix = "";
pb = sTradesImdg.predicateBuilder(); pb = sTradesImdg.predicateBuilder();
Collection<STrades> sTradesList = sTradesImdg.getCollectionObjectsByPredicate( Collection<STrades> sTradesList = sTradesImdg.getCollectionObjectsByPredicate(
@ -156,13 +189,13 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
STrades sTrades = sTradesList.iterator().next(); STrades sTrades = sTradesList.iterator().next();
KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport(); KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport();
ksCommissionTradesReport.setFirmId(registry.getClearingCode()); ksCommissionTradesReport.setFirmId(firmId);
ksCommissionTradesReport.setFirmIdInitiator(companySymbols.getCompanySymbolValue()); ksCommissionTradesReport.setFirmIdInitiator(firmIdInitiator);
ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol()); ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol());
ksCommissionTradesReport.setClassCode(sTrades.getClassCode()); ksCommissionTradesReport.setClassCode(sTrades.getClassCode());
ksCommissionTradesReport.setAgreementNumber(agreementNumber); ksCommissionTradesReport.setAgreementNumber(agreementNumber);
ksCommissionTradesReport.setAgreementNumberPostfix(""); ksCommissionTradesReport.setAgreementNumberPostfix(agreementNumberPostfix);
ksCommissionTradesReport.setAgreementDate(registry.getClearingDate()); ksCommissionTradesReport.setAgreementDate(registry.getTradingDate());
ksCommissionTradesReport.setSum(registry.getBalance()); ksCommissionTradesReport.setSum(registry.getBalance());
ksCommissionTradesReport.setRepaymDate(registry.getRefundDate()); ksCommissionTradesReport.setRepaymDate(registry.getRefundDate());
ksCommissionTradesReport.setExecStatus(registry.getRegistryStatus()); ksCommissionTradesReport.setExecStatus(registry.getRegistryStatus());

View file

@ -648,7 +648,9 @@ public class ReportServiceTest_KS {
registry.setSecuritySymbol("SECURITY_SYMBOL"); registry.setSecuritySymbol("SECURITY_SYMBOL");
registry.setClearingDate(LocalDate.of(1991, 1, 1)); registry.setClearingDate(LocalDate.of(1991, 1, 1));
registry.setRefundDate(LocalDate.now()); registry.setRefundDate(LocalDate.now());
registry.setContract("CONTRACT"); registry.setCounterPartyId(COMPANY_ID);
registry.setTradingDate(LocalDate.of(1991, 1, 1));
registry.setContract("CONT~RACT");
registry.setClearingCode("CLEARING_CODE"); registry.setClearingCode("CLEARING_CODE");
registryImdg.insert(registry); registryImdg.insert(registry);
@ -657,7 +659,7 @@ public class ReportServiceTest_KS {
omtRegistry.setRegistryDesignation(RegistryDesignation.O.getKey()); omtRegistry.setRegistryDesignation(RegistryDesignation.O.getKey());
omtRegistry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey()); omtRegistry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
omtRegistry.setRegistryUnit(RegistryUnit.T.getKey()); omtRegistry.setRegistryUnit(RegistryUnit.T.getKey());
omtRegistry.setContract("CONTRACT"); omtRegistry.setContract("CONT~RACT");
omtRegistry.setGroupId(23071812300L); omtRegistry.setGroupId(23071812300L);
registryImdg.insert(omtRegistry); registryImdg.insert(omtRegistry);

View file

@ -1,2 +1,2 @@
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS" "FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","CLASS_CODE","SECURITY_SYMBOL/010191/CLEARING_CODE/123","","01.01.1991","77.78","23.08.2023","OK" "CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","CLASS_CODE","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","OK"

1 FIRM_ID FIRM_ID_INITIATOR SECCODE CLASS_CODE AGREEMENT_NUMBER AGREEMENT_NUMBER_POSTFIX AGREEMENT_DATE SUM REPAYM_DATE EXEC_STATUS
2 CLEARING_CODE COMPANY_SYMBOL_VALUE SECURITY_SYMBOL CLASS_CODE SECURITY_SYMBOL/010191/CLEARING_CODE/123 CONT CONT~RACT 01.01.1991 77.78 23.08.2023 05.09.2023 OK