This commit is contained in:
akulikov 2023-01-10 16:26:01 +03:00
parent 90b5a8ad17
commit 953c448bed
9 changed files with 195 additions and 120 deletions

View file

@ -9,15 +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_BT2_IV;
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
import ru.spcex.clearing.reports.services.ReportsServiceCommand;
import ru.spcex.clearing.reports.services.builders.XMLReportBuilder;
import ru.spcex.clearing.reports.services.collector.ReportPA_BT2_B_Collector;
import ru.spcex.clearing.reports.services.collector.ReportPA_BT2_IV_Collector;
import ru.spcex.clearing.reports.services.collector.ReportDOCIN_Collector;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.time.LocalDate;
@SpringBootApplication
public class ReportsServiceApplication {
public static void main(String[] args) {
@ -44,13 +40,11 @@ public class ReportsServiceApplication {
public static void test(ConfigurableApplicationContext context) {
ImdgProvider imdg = context.getBean(ImdgProvider.class);
ReportPA_BT2_IV_Collector collector = new ReportPA_BT2_IV_Collector(imdg);
ReportPA_BT2_IV report = collector.collectReportWithPeriod(
LocalDate.of(2022, 12, 1),
LocalDate.of(2023, 1, 1)
);
ReportDOCIN_Collector collector = new ReportDOCIN_Collector(imdg);
ReportDOCIN report = collector.collectReport();
XStream xStream = new XStream(new XppDriver(new NoNameCoder()));
xStream.processAnnotations(ReportPA_BT2_IV.class);
xStream.processAnnotations(ReportDOCIN.class);
String out = xStream.toXML(report);
System.out.println(out);
}

View file

@ -8,6 +8,7 @@ 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.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@ -58,18 +59,20 @@ public class ReportDOCIN extends AbstractReport {
@XStreamAlias("row")
public record Info_DOCIN(
@XStreamAsAttribute @XStreamAlias("id") String id,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationDate") String inDocumentJournalRegistrationDate,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationTime") String inDocumentJournalRegistrationTime,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationNumber") String inDocumentJournalRegistrationNumber,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_registrationNumber") Long inDocumentJournalRegistrationNumber,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_documentName") String inDocumentJournalDocumentName,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_sender") String inDocumentJournalSender,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_quantity") String inDocumentJournalQuantity,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_quantity") Long inDocumentJournalQuantity,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_clearingCode") String inDocumentJournalClearingCode,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_courierType") String inDocumentJournalCourierType,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_emailDate") String inDocumentJournal_emailDate,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_Amount") String inDocumentJournalAmount,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_Amount") BigDecimal inDocumentJournalAmount,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_dossierNumber") String inDocumentJournalDossierNumber,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_Comment") String inDocumentJournalComment,
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_receiptDate") String inDocumentJournalReceiptDate) {
@XStreamAsAttribute @XStreamAlias("inDocumentJournal_receiptDate") String inDocumentJournalReceiptDate
) {
}
}

View file

@ -0,0 +1,76 @@
package ru.spcex.clearing.reports.reports.bt_13;
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("incomingDocuments")
public class ReportDOCOUT extends AbstractReport {
/**
* Дата в формате: dd.MM.yyyy
*/
@XStreamAsAttribute
@XStreamAlias("date")
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private final LocalDate date;
/**
* Время в формате: hh:mm:ss
*/
@XStreamAsAttribute
@XStreamAlias("time")
@XStreamConverter(value = FormattedLocalTimeConverter.class, strings = {"HH:mm:ss"})
private final LocalTime time;
@XStreamAlias("rows")
private List<Info_DOCOUT> rows = new ArrayList<>();
public ReportDOCOUT(LocalDate date,
LocalTime time) {
super(ReportId.BT13_12,
"0.0.1",
"BT 13.12",
"Журнал Исходящих документов");
this.date = date;
this.time = time;
}
public List<Info_DOCOUT> getRows() {
return rows;
}
@Override
public String getReportName(LocalDateTime reportDateTime) {
return "DOCIN.%s".formatted(
DATE_TIME_FORMATTER.format(reportDateTime)
);
}
@XStreamAlias("row")
public record Info_DOCOUT(
@XStreamAsAttribute @XStreamAlias("id") String id,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationDate") String outDocumentJournalRegistrationDate,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationTime") String outDocumentJournalRegistrationTime,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_registrationNumber") String outDocumentJournalRegistrationNumber,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_documentName") String outDocumentJournalDocumentName,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_addressee") String outDocumentJournalAddressee,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_quantity") String outDocumentJournalQuantity,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_clearingCode") String outDocumentJournalClearingCode,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_courierType") String outDocumentJournalCourierType,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_emailDate") String outDocumentJournal_emailDate,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_Amount") String outDocumentJournalAmount,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_dossierNumber") String outDocumentJournalDossierNumber,
@XStreamAsAttribute @XStreamAlias("outDocumentJournal_postDate") String outDocumentJournalPostDate
) {
}
}

View file

@ -1,96 +0,0 @@
package ru.spcex.clearing.reports.reports.bt_13;
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("outgoingDocuments")
public class Report_BT13_12 extends AbstractReport {
@XStreamAsAttribute
@XStreamAlias("date")
private LocalDate date;
@XStreamAsAttribute
@XStreamAlias("time")
private LocalTime time;
@XStreamAlias("outDocumentJournal_registrationDate")
private String outDocumentJournalRegistrationDate;
@XStreamAlias("outDocumentJournal_registrationTime")
private String outDocumentJournalRegistrationTime;
@XStreamAlias("outDocumentJournal_registrationNumber")
private String outDocumentJournalRegistrationNumber;
@XStreamAlias("outDocumentJournal_documentName")
private String outDocumentJournalDocumentName;
@XStreamAlias("outDocumentJournal_address")
private String outDocumentJournalAddress;
@XStreamAlias("outDocumentJournal_quantity")
private String outDocumentJournalQuantity;
@XStreamAlias("outDocumentJournal_clearingCode")
private String outDocumentJournalClearingCode;
@XStreamAlias("outDocumentJournal_courierType")
private String outDocumentJournalCourierType;
@XStreamAlias("outDocumentJournal_emailDate")
private String outDocumentJournal_emailDate;
@XStreamAlias("outDocumentJournal_Amount")
private String outDocumentJournalAmount;
@XStreamAlias("outDocumentJournal_dossierNumber")
private String outDocumentJournalDossierNumber;
@XStreamAlias("outDocumentJournal_postDate")
private String outDocumentJournalPostDate;
public Report_BT13_12(LocalDate date,
LocalTime time,
String outDocumentJournalRegistrationDate,
String outDocumentJournalRegistrationTime,
String outDocumentJournalRegistrationNumber,
String outDocumentJournalDocumentName,
String outDocumentJournalAddress,
String outDocumentJournalQuantity,
String outDocumentJournalClearingCode,
String outDocumentJournalCourierType,
String outDocumentJournal_emailDate,
String outDocumentJournalAmount,
String outDocumentJournalDossierNumber,
String outDocumentJournalPostDate) {
super(ReportId.BT13_12, "0.0.1", "BT 13.12", "Журнал Исходящих документов");
this.date = date;
this.time = time;
this.outDocumentJournalRegistrationDate = outDocumentJournalRegistrationDate;
this.outDocumentJournalRegistrationTime = outDocumentJournalRegistrationTime;
this.outDocumentJournalRegistrationNumber = outDocumentJournalRegistrationNumber;
this.outDocumentJournalDocumentName = outDocumentJournalDocumentName;
this.outDocumentJournalAddress = outDocumentJournalAddress;
this.outDocumentJournalQuantity = outDocumentJournalQuantity;
this.outDocumentJournalClearingCode = outDocumentJournalClearingCode;
this.outDocumentJournalCourierType = outDocumentJournalCourierType;
this.outDocumentJournal_emailDate = outDocumentJournal_emailDate;
this.outDocumentJournalAmount = outDocumentJournalAmount;
this.outDocumentJournalDossierNumber = outDocumentJournalDossierNumber;
this.outDocumentJournalPostDate = outDocumentJournalPostDate;
}
@Override
public String getReportName(LocalDateTime reportDateTime) {
return "DOCOUT.%s".formatted(
DATE_TIME_FORMATTER.format(reportDateTime)
);
}
}

View file

@ -6,7 +6,6 @@ import ru.spcex.clearing.reports.reports.Destination;
import ru.spcex.clearing.reports.reports.ReportId;
import ru.spcex.clearing.reports.reports.ReportWithPeriod;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -47,8 +46,8 @@ public class ReportBR_0420315_P2 extends ReportWithPeriod {
this.rows = rows;
}
public record Info_0420315_P2(@XStreamAlias("contract_qty") @XStreamAsAttribute BigDecimal contractQty,
@XStreamAlias("liabilities_amount") @XStreamAsAttribute BigDecimal liabilitiesAmount) {
public record Info_0420315_P2(@XStreamAlias("contract_qty") @XStreamAsAttribute String contractQty,
@XStreamAlias("liabilities_amount") @XStreamAsAttribute String liabilitiesAmount) {
}
}

View file

@ -2,11 +2,9 @@ package ru.spcex.clearing.reports.reports.bt_17_4;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports.reports.Destination;
import ru.spcex.clearing.reports.reports.ReportId;
import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -55,7 +53,7 @@ public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
@XStreamAsAttribute @XStreamAlias("companySymbol_value") String companySymbolValue,
@XStreamAsAttribute @XStreamAlias("clearingMemberCategory_clearingMemberCategory") String clearingMemberCategoryClearingMemberCategory,
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_contract") String liabilitiesClaimsAssets_contract,
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_tradingDate") @XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"}) LocalDate liabilitiesClaimsAssets_tradingDate,
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_tradingDate") String liabilitiesClaimsAssets_tradingDate,
@XStreamAsAttribute @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") String liabilitiesClaimsAssetsLiabilitiesQuantity) {
}
}

View file

@ -5,7 +5,6 @@ import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate;
public abstract class ReportWithPeriodCollector<T extends AbstractReport> extends AbstractReportCollector<T> {
/**
* Подготовка отчета на период startDate..endDate
*/

View file

@ -2,15 +2,56 @@ package ru.spcex.clearing.reports.services.collector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.journal.InDocumentJournal;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCIN;
import ru.spcex.clearing.reports.services.SimpleReportCollector;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Collection;
public class ReportDOCIN_Collector extends SimpleReportCollector<ReportDOCIN> {
protected final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<InDocumentJournal> inDocumentJournalImdg;
public ReportDOCIN_Collector(ImdgProvider imdgProvider) {
this.inDocumentJournalImdg = imdgProvider.getImdg(
IMDGDistributedNames.Map_InDocumentJournal,
InDocumentJournal.class
);
}
@Override
public ReportDOCIN collectReport() {
return null;
LocalDate currentDate = LocalDate.now();
ImdgPredicateBuilder pb = inDocumentJournalImdg.predicateBuilder();
ImdgPredicate p = pb.equals("registrationDate", currentDate);
Collection<InDocumentJournal> inDocumentsJournal = inDocumentJournalImdg.getCollectionObjectsByPredicate(p);
ReportDOCIN reportDOCIN = new ReportDOCIN(LocalDate.now(), LocalTime.now());
for (InDocumentJournal inDocumentJournal : inDocumentsJournal) {
ReportDOCIN.Info_DOCIN infoDOCIN = new ReportDOCIN.Info_DOCIN(
inDocumentJournal.getRegistrationDate(),
inDocumentJournal.getRegistrationTime(),
inDocumentJournal.getRegistrationNumber(),
inDocumentJournal.getDocumentName(),
inDocumentJournal.getSender(),
inDocumentJournal.getQuantity(),
inDocumentJournal.getClearingCode(),
inDocumentJournal.getCourierType(),
inDocumentJournal.getEmailDate(),
inDocumentJournal.getAmount(),
inDocumentJournal.getDossierNumber(),
inDocumentJournal.getComment(),
inDocumentJournal.getReceiptDate());
reportDOCIN.getRows().add(infoDOCIN);
}
return reportDOCIN;
}
@Override

View file

@ -0,0 +1,61 @@
package ru.spcex.clearing.reports.services.collector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.journal.OutDocumentJournal;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.bt_13.ReportDOCOUT;
import ru.spcex.clearing.reports.services.SimpleReportCollector;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Collection;
public class ReportDOCOUT_Collector extends SimpleReportCollector<ReportDOCOUT> {
protected final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<OutDocumentJournal> inDocumentJournalImdg;
public ReportDOCOUT_Collector(ImdgProvider imdgProvider) {
this.inDocumentJournalImdg = imdgProvider.getImdg(
IMDGDistributedNames.Map_OutDocumentJournal,
OutDocumentJournal.class
);
}
@Override
public ReportDOCOUT collectReport() {
LocalDate currentDate = LocalDate.now();
ImdgPredicateBuilder pb = inDocumentJournalImdg.predicateBuilder();
ImdgPredicate p = pb.equals("registrationDate", currentDate);
Collection<OutDocumentJournal> inDocumentsJournal = inDocumentJournalImdg.getCollectionObjectsByPredicate(p);
ReportDOCOUT reportDOCOUT = new ReportDOCOUT(LocalDate.now(), LocalTime.now());
for (OutDocumentJournal inDocumentJournal : inDocumentsJournal) {
ReportDOCOUT.Info_DOCOUT infoDOCOUT = new ReportDOCOUT.Info_DOCOUT(
inDocumentJournal.getRegistrationDate(),
inDocumentJournal.getRegistrationTime(),
inDocumentJournal.getRegistrationNumber(),
inDocumentJournal.getDocumentName(),
inDocumentJournal.getAddressee(),
inDocumentJournal.getQuantity(),
inDocumentJournal.getClearingCode(),
inDocumentJournal.getCourierType(),
inDocumentJournal.getEmailDate(),
inDocumentJournal.getAmount(),
inDocumentJournal.getDossierNumber(),
inDocumentJournal.getPostDate());
reportDOCOUT.getRows().add(infoDOCOUT);
}
return reportDOCOUT;
}
@Override
public Class<ReportDOCOUT> getReportClass() {
return ReportDOCOUT.class;
}
}