cls-102
This commit is contained in:
parent
a966d80995
commit
5851f2e11e
6 changed files with 65 additions and 120 deletions
|
|
@ -9,13 +9,11 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV;
|
||||
import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
|
||||
import ru.spcex.clearing.reports.services.collector.ReportPA_IV_Collector;
|
||||
import ru.spcex.clearing.reports.services.collector.ReportINACCNT_Collector;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@SpringBootApplication
|
||||
public class ReportsServiceApplication {
|
||||
public static void main(String[] args) {
|
||||
|
|
@ -43,10 +41,10 @@ public class ReportsServiceApplication {
|
|||
public static void test(ConfigurableApplicationContext context) {
|
||||
ImdgProvider imdg = context.getBean(ImdgProvider.class);
|
||||
|
||||
ReportPA_IV_Collector collector = new ReportPA_IV_Collector(imdg);
|
||||
ReportPA_IV report = collector.collectReportWithPeriod(LocalDate.of(2020, 1, 1), LocalDate.now());
|
||||
ReportINACCNT_Collector collector = new ReportINACCNT_Collector(imdg);
|
||||
ReportINACCNT report = collector.collectReportForClearingCode("test_clearing_code");
|
||||
XStream xStream = new XStream(new XppDriver(new NoNameCoder()));
|
||||
xStream.processAnnotations(ReportPA_IV.class);
|
||||
xStream.processAnnotations(ReportINACCNT.class);
|
||||
String out = xStream.toXML(report);
|
||||
System.out.println(out);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,17 @@
|
|||
package ru.spcex.clearing.reports.reports;
|
||||
package ru.spcex.clearing.reports.reports.bt_16_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
import ru.spcex.clearing.reports.reports.ReportId;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
|
||||
import ru.spcex.clearing.reports.xml_test.FormattedLocalTimeConverter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@XStreamAlias("accountBalanceInfo")
|
||||
|
|
@ -34,7 +37,7 @@ public class ReportINACCNT extends AbstractReport {
|
|||
private final LocalTime time;
|
||||
|
||||
@XStreamAlias("rows")
|
||||
private List<Row> rows;
|
||||
private final List<Info_INACCNT> rows = new ArrayList<>();
|
||||
|
||||
public ReportINACCNT(String companyClearingCode, LocalDate date, LocalTime time) {
|
||||
super(ReportId.BT16_5,
|
||||
|
|
@ -54,23 +57,18 @@ public class ReportINACCNT extends AbstractReport {
|
|||
);
|
||||
}
|
||||
|
||||
public List<Row> getRows() {
|
||||
public List<Info_INACCNT> getRows() {
|
||||
return rows;
|
||||
}
|
||||
|
||||
public void setRows(List<Row> rows) {
|
||||
this.rows = rows;
|
||||
}
|
||||
|
||||
@XStreamAlias("row")
|
||||
public record Row(@XStreamAsAttribute @XStreamAlias("id") Long id,
|
||||
@XStreamAsAttribute @XStreamAlias("clearingHouse") String clearingHouse,
|
||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
||||
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_account") String accountBalanceAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_openAccount") String accountBalanceOpenAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_debitAccount") String accountBalanceDebitAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_creditAccount") String accountBalanceCreditAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_closeAccount") String accountBalanceCloseAccount) {
|
||||
public record Info_INACCNT(@XStreamAsAttribute @XStreamAlias("id") String id,
|
||||
@XStreamAsAttribute @XStreamAlias("company_fullName") String companyFullName,
|
||||
@XStreamAsAttribute @XStreamAlias("company_clearingCode") String companyClearingCode,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_account") String accountBalanceAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_openAccount") String accountBalanceOpenAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_debitAccount") String accountBalanceDebitAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_creditAccount") String accountBalanceCreditAccount,
|
||||
@XStreamAsAttribute @XStreamAlias("accountBalance_closeAccount") String accountBalanceCloseAccount) {
|
||||
}
|
||||
}
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
package ru.spcex.clearing.reports.reports.bt_16_5;
|
||||
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
import ru.spcex.clearing.reports.reports.ReportId;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
@XStreamAlias("accountBalanceInfo")
|
||||
public class Report_BT16_5 extends AbstractReport {
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("date")
|
||||
private LocalDate date;
|
||||
|
||||
@XStreamAsAttribute
|
||||
@XStreamAlias("time")
|
||||
private LocalTime time;
|
||||
|
||||
@XStreamAlias("id")
|
||||
private String id;
|
||||
|
||||
@XStreamAlias("clearingHouse")
|
||||
private String clearingHouse;
|
||||
|
||||
@XStreamAlias("company_clearingCode")
|
||||
private String companyClearingCode;
|
||||
|
||||
@XStreamAlias("company_fullName")
|
||||
private String companyFullName;
|
||||
|
||||
@XStreamAlias("accountBalance_account")
|
||||
private String accountBalanceAccount;
|
||||
|
||||
@XStreamAlias("accountBalance_openAmount")
|
||||
private String accountBalanceOpenAmount;
|
||||
|
||||
@XStreamAlias("accountBalance_debitAmount")
|
||||
private String accountBalanceDebitAmount;
|
||||
|
||||
@XStreamAlias("accountBalance_creditAmount")
|
||||
private String accountBalanceCreditAmount;
|
||||
|
||||
@XStreamAlias("accountBalance_closeAmount")
|
||||
private String accountBalanceCloseAmount;
|
||||
|
||||
|
||||
public Report_BT16_5(LocalDate date,
|
||||
LocalTime time,
|
||||
String clearingHouse,
|
||||
String companyClearingCode,
|
||||
String companyFullName,
|
||||
String accountBalanceAccount,
|
||||
String accountBalanceOpenAmount,
|
||||
String accountBalanceDebitAmount,
|
||||
String accountBalanceCreditAmount,
|
||||
String accountBalanceCloseAmount) {
|
||||
super(ReportId.BT16_5,
|
||||
"0.0.1",
|
||||
"BT 16.5",
|
||||
"Отчет о денежных средствах на счете внутреннего учета (клиринговом регистре) Участника клиринга");
|
||||
this.date = date;
|
||||
this.time = time;
|
||||
this.clearingHouse = clearingHouse;
|
||||
this.companyClearingCode = companyClearingCode;
|
||||
this.companyFullName = companyFullName;
|
||||
this.accountBalanceAccount = accountBalanceAccount;
|
||||
this.accountBalanceOpenAmount = accountBalanceOpenAmount;
|
||||
this.accountBalanceDebitAmount = accountBalanceDebitAmount;
|
||||
this.accountBalanceCreditAmount = accountBalanceCreditAmount;
|
||||
this.accountBalanceCloseAmount = accountBalanceCloseAmount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getReportName(LocalDateTime reportDateTime) {
|
||||
return "INACCNT.%s.%s".formatted(
|
||||
companyClearingCode,
|
||||
DATE_TIME_FORMATTER.format(reportDateTime)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package ru.spcex.clearing.reports.services;
|
||||
|
||||
import ru.spcex.clearing.reports.reports.AbstractReport;
|
||||
|
||||
public abstract class ReportForClearingCodeCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
|
||||
/**
|
||||
* Подготовка отчета по clearingCode
|
||||
*/
|
||||
abstract public T collectReportForClearingCode(String clearingCode);
|
||||
}
|
||||
|
|
@ -3,8 +3,9 @@ package ru.spcex.clearing.reports.services.collector;
|
|||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.services.ReportWithPeriodCollector;
|
||||
import ru.spcex.clearing.reports.reports.bt_16_5.ReportINACCNT;
|
||||
import ru.spcex.clearing.reports.services.ReportForClearingCodeCollector;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
|
|
@ -12,9 +13,12 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
import ru.spcex.platform.imdg.iml.hazelcast.adapter.predicate.ImdgPredicateBuilderHazelcast;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ReportINACCNT_Collector extends ReportWithPeriodCollector<ReportINACCNT> {
|
||||
public class ReportINACCNT_Collector extends ReportForClearingCodeCollector<ReportINACCNT> {
|
||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
|
||||
|
|
@ -30,23 +34,41 @@ public class ReportINACCNT_Collector extends ReportWithPeriodCollector<ReportINA
|
|||
}
|
||||
|
||||
@Override
|
||||
public ReportINACCNT collectReportWithPeriod(LocalDate startDate, LocalDate endDate) {
|
||||
String companyClearingCode;
|
||||
|
||||
validateDateRange(startDate, endDate);
|
||||
public ReportINACCNT collectReportForClearingCode(String clearingCode) {
|
||||
ImdgPredicateBuilder builder = new ImdgPredicateBuilderHazelcast();
|
||||
|
||||
|
||||
ImdgPredicate clearingCodePredicate = builder.equals("clearingCode", clearingCode);
|
||||
Collection<Company> companies = companyImdg.getCollectionObjectsByPredicate(clearingCodePredicate);
|
||||
Set<Long> companyIds = companies.stream()
|
||||
.map(Company::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
ImdgPredicate accountTypePredicate = builder.or(
|
||||
builder.equals("accountType", "CLRN"),
|
||||
builder.equals("accountType", "INFO")
|
||||
builder.equals("accountType", AccountType.Clrn.getKey()),
|
||||
builder.equals("accountType", AccountType.Info.getKey())
|
||||
);
|
||||
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(accountTypePredicate);
|
||||
ImdgPredicate companyIdPredicates = builder.equals("companyId", -1);
|
||||
for (Long companyId : companyIds) {
|
||||
companyIdPredicates = builder.or(companyIdPredicates, builder.equals("companyId", companyId));
|
||||
}
|
||||
ImdgPredicate finalPredicate = builder.and(accountTypePredicate, companyIdPredicates);
|
||||
Collection<AccountBalance> accountBalances = accountBalanceImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
|
||||
ReportINACCNT reportINACCNT = new ReportINACCNT(clearingCode, LocalDate.now(), LocalTime.now());
|
||||
for (AccountBalance accountBalance : accountBalances) {
|
||||
ReportINACCNT.Info_INACCNT infoReport = new ReportINACCNT.Info_INACCNT(
|
||||
toString(accountBalance.getId()),
|
||||
toString(accountBalance.getFullName()),
|
||||
toString(clearingCode),
|
||||
toString(accountBalance.getAccount()),
|
||||
toString(accountBalance.getOpenBalanceAmount()),
|
||||
toString(accountBalance.getDebitAmount()),
|
||||
toString(accountBalance.getCreditAmount()),
|
||||
toString(accountBalance.getCloseBalanceAmount()));
|
||||
reportINACCNT.getRows().add(infoReport);
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
return reportINACCNT;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
|
|||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
public enum AccountType implements IEnumKey {
|
||||
Clrn("CLRN"), Bank("BANK");
|
||||
Clrn("CLRN"), Bank("BANK"), Info("INFO");
|
||||
|
||||
private final String key;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue