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

View file

@ -648,7 +648,9 @@ public class ReportServiceTest_KS {
registry.setSecuritySymbol("SECURITY_SYMBOL");
registry.setClearingDate(LocalDate.of(1991, 1, 1));
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");
registryImdg.insert(registry);
@ -657,7 +659,7 @@ public class ReportServiceTest_KS {
omtRegistry.setRegistryDesignation(RegistryDesignation.O.getKey());
omtRegistry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
omtRegistry.setRegistryUnit(RegistryUnit.T.getKey());
omtRegistry.setContract("CONTRACT");
omtRegistry.setContract("CONT~RACT");
omtRegistry.setGroupId(23071812300L);
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"
"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