akulikov 2023-10-31 18:56:05 +03:00
parent a2dcd21867
commit b5b204bf5f
3 changed files with 123 additions and 4 deletions

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.builders.ks;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.platform.dictionary.RegistryCodeDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -29,6 +30,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
private final Imdg<Registry> registryImdg;
private final Imdg<Company> companyImdg;
private final Imdg<RegistryCodeDictionary> registryCodeDictionaryImdg;
private final Imdg<Session> sessionImdg;
private List<KSRepCashRegistersReport> rows = null;
@ -37,6 +39,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
registryCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RegistryCodeDictionary, RegistryCodeDictionary.class);
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
}
@Override
@ -108,9 +111,35 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
RegistryCodeDictionary registryCodeDictionary = registryCodeDictionaryImdg.getFirstObjectByFieldValues(Map.of("code", registry.getRegistryCode()));
if (registryCodeDictionary != null) ksRepCashRegistersReport.setRegisterName(registryCodeDictionary.getName());
BigDecimal settleCredit = registry.getSettledCredit() != null ? registry.getSettledCredit() : BigDecimal.ZERO;
BigDecimal settleDebit = registry.getSettledDebit() != null ? registry.getSettledDebit() : BigDecimal.ZERO;
ksRepCashRegistersReport.setChangeBalance(settleCredit.subtract(settleDebit));
Collection<Session> sessionsForDay = sessionImdg.getCollectionObjectsByFieldValues(Map.of("clearingDate", LocalDate.now()));
Long[] sessionIds = sessionsForDay.stream().map(Session::getId).toArray(Long[]::new);
ImdgPredicate cmtPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.CM_T).buildPredicate(pb);
Collection<Registry> cmtRegistries = registryImdg.getCollectionObjectsByPredicate(
pb.and(
cmtPredicate,
pb.in("sessionId", sessionIds),
pb.equals("tradingCode", registry.getTradingCode()),
pb.equals("companyId", registry.getCompanyId()),
pb.equals("account", registry.getAccount()),
pb.equals("registryStatus", RegistryStatus.CLRD.getKey())
)
);
ImdgPredicate lmtPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.LM_T).buildPredicate(pb);
Collection<Registry> lmtRegistries = registryImdg.getCollectionObjectsByPredicate(
pb.and(
lmtPredicate,
pb.in("sessionId", sessionIds),
pb.equals("tradingCode", registry.getTradingCode()),
pb.equals("companyId", registry.getCompanyId()),
pb.equals("account", registry.getAccount()),
pb.equals("registryStatus", RegistryStatus.CLRD.getKey())
)
);
BigDecimal cmtBalanceSum = cmtRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal lmtBalanceSum = lmtRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
ksRepCashRegistersReport.setChangeBalance(cmtBalanceSum.subtract(lmtBalanceSum));
registryPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DM_I).buildPredicate(pb);
Collection<Registry> registriesForAddWithdraw = registryImdg.getCollectionObjectsByPredicate(

View file

@ -150,6 +150,89 @@ public class ReportServiceTest_KS {
registry.setCloseBalance(BigDecimal.valueOf(11.11111111));
registryImdg.insert(registry);
Session sessionForDay = new Session();
sessionForDay.setClearingDate(LocalDate.now());
Long SESSION_ID_FOR_DAY = sessionImdg.insert(sessionForDay);
Registry cmtRegistry_1 = new Registry();
cmtRegistry_1.setRegistryCode("CM_T");
cmtRegistry_1.setRegistryDesignation(RegistryDesignation.C.getKey());
cmtRegistry_1.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
cmtRegistry_1.setRegistryUnit(RegistryUnit.T.getKey());
cmtRegistry_1.setSessionId(SESSION_ID_FOR_DAY);
cmtRegistry_1.setTradingCode("TRADING_CODE");
cmtRegistry_1.setCompanyId(COMPANY_ID);
cmtRegistry_1.setAccount("ACCOUNT");
cmtRegistry_1.setRegistryStatus(RegistryStatus.CLRD.getKey());
cmtRegistry_1.setBalance(BigDecimal.valueOf(111L));
registryImdg.insert(cmtRegistry_1);
Registry cmtRegistry_2 = new Registry();
cmtRegistry_2.setRegistryCode("CM_T");
cmtRegistry_2.setRegistryDesignation(RegistryDesignation.C.getKey());
cmtRegistry_2.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
cmtRegistry_2.setRegistryUnit(RegistryUnit.T.getKey());
cmtRegistry_2.setSessionId(SESSION_ID_FOR_DAY);
cmtRegistry_2.setTradingCode("TRADING_CODE");
cmtRegistry_2.setCompanyId(COMPANY_ID);
cmtRegistry_2.setAccount("ACCOUNT");
cmtRegistry_2.setRegistryStatus(RegistryStatus.CLRD.getKey());
cmtRegistry_2.setBalance(BigDecimal.valueOf(111L));
registryImdg.insert(cmtRegistry_2);
Registry cmtRegistry_3 = new Registry();
cmtRegistry_3.setRegistryCode("CM_T");
cmtRegistry_3.setRegistryDesignation(RegistryDesignation.C.getKey());
cmtRegistry_3.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
cmtRegistry_3.setRegistryUnit(RegistryUnit.T.getKey());
cmtRegistry_3.setSessionId(SESSION_ID_FOR_DAY);
cmtRegistry_3.setTradingCode("TRADING_CODE");
cmtRegistry_3.setCompanyId(COMPANY_ID);
cmtRegistry_3.setAccount("ACCOUNT");
cmtRegistry_3.setRegistryStatus(RegistryStatus.CLRD.getKey());
cmtRegistry_3.setBalance(BigDecimal.valueOf(111L));
registryImdg.insert(cmtRegistry_3);
Registry lmtRegistry_1 = new Registry();
lmtRegistry_1.setRegistryCode("LM_T");
lmtRegistry_1.setRegistryDesignation(RegistryDesignation.L.getKey());
lmtRegistry_1.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
lmtRegistry_1.setRegistryUnit(RegistryUnit.T.getKey());
lmtRegistry_1.setSessionId(SESSION_ID_FOR_DAY);
lmtRegistry_1.setTradingCode("TRADING_CODE");
lmtRegistry_1.setCompanyId(COMPANY_ID);
lmtRegistry_1.setAccount("ACCOUNT");
lmtRegistry_1.setRegistryStatus(RegistryStatus.CLRD.getKey());
lmtRegistry_1.setBalance(BigDecimal.valueOf(11L));
registryImdg.insert(lmtRegistry_1);
Registry lmtRegistry_2 = new Registry();
lmtRegistry_2.setRegistryCode("LM_T");
lmtRegistry_2.setRegistryDesignation(RegistryDesignation.L.getKey());
lmtRegistry_2.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
lmtRegistry_2.setRegistryUnit(RegistryUnit.T.getKey());
lmtRegistry_2.setSessionId(SESSION_ID_FOR_DAY);
lmtRegistry_2.setTradingCode("TRADING_CODE");
lmtRegistry_2.setCompanyId(COMPANY_ID);
lmtRegistry_2.setAccount("ACCOUNT");
lmtRegistry_2.setRegistryStatus(RegistryStatus.CLRD.getKey());
lmtRegistry_2.setBalance(BigDecimal.valueOf(11L));
registryImdg.insert(lmtRegistry_2);
Registry lmtRegistry_3 = new Registry();
lmtRegistry_3.setRegistryCode("LM_T");
lmtRegistry_3.setRegistryDesignation(RegistryDesignation.L.getKey());
lmtRegistry_3.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
lmtRegistry_3.setRegistryUnit(RegistryUnit.T.getKey());
lmtRegistry_3.setSessionId(SESSION_ID_FOR_DAY);
lmtRegistry_3.setTradingCode("TRADING_CODE");
lmtRegistry_3.setCompanyId(COMPANY_ID);
lmtRegistry_3.setAccount("ACCOUNT");
lmtRegistry_3.setRegistryStatus(RegistryStatus.CLRD.getKey());
lmtRegistry_3.setBalance(BigDecimal.valueOf(11L));
registryImdg.insert(lmtRegistry_3);
Registry addWithdrawRegistry_1 = new Registry();
addWithdrawRegistry_1.setCompanyId(COMPANY_ID);
addWithdrawRegistry_1.setSecurityId(777L);
@ -208,6 +291,13 @@ public class ReportServiceTest_KS {
registryImdg.delete(addWithdrawRegistry_1);
registryImdg.delete(addWithdrawRegistry_2);
registryImdg.delete(addWithdrawRegistry_3);
registryImdg.delete(cmtRegistry_1);
registryImdg.delete(cmtRegistry_2);
registryImdg.delete(cmtRegistry_3);
registryImdg.delete(lmtRegistry_1);
registryImdg.delete(lmtRegistry_2);
registryImdg.delete(lmtRegistry_3);
sessionImdg.delete(sessionForDay);
}
@Test

View file

@ -1,2 +1,2 @@
"FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS","TRADE_NUM"
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","02.10.2023","AM_T","AM_T_NAME","77.78","66.67","111.00","255.44","",""
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","31.10.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","",""

1 FIRMID ACCOUNT TKR DATE REGISTER_CODE REGISTER_NAME OPEN_BALANCE CHANGE_BALANCE ADD_WITHDRAW CLOSE_BALANCE REMARKS TRADE_NUM
2 TRADING_CODE ACCOUNT TRADING_CLEARING_REGISTRY 02.10.2023 31.10.2023 AM_T AM_T_NAME 77.78 66.67 300.00 111.00 255.44 488.78