ialbert 2023-02-08 13:36:48 +03:00
parent 2d3808460e
commit a6c6a7d733
4 changed files with 69 additions and 16 deletions

View file

@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.generated.ClearingMemberCategory;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf03;
@ -22,7 +23,6 @@ import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.utils.collection.Pair;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.text.TextUtil;
import java.util.*;
import java.util.function.Function;
@ -34,6 +34,7 @@ public class SdfCreatorBySTLDPayment {
private Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<PaymentInstruction> paymentImdgs;
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
private final Imdg<Company> companyImdg;
private final ImdgId idGenerator;
private final PaymentInstructionSorter senderGroupSorter;
private final Imdg<SDf03> sdf03Imdg;
@ -46,6 +47,7 @@ public class SdfCreatorBySTLDPayment {
this.clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
this.sdf03Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class);
this.sdf11Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf11, SDf11.class);
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.idGenerator = imdgProvider.getImdgIdGenerator();
this.senderGroupSorter = senderGroupSorter;
this.kafkaSender = kafkaSender;
@ -123,12 +125,12 @@ public class SdfCreatorBySTLDPayment {
Long requestId = null;
if (category.equals(ClearingCategory.I) || category.equals(ClearingCategory.V)) {
batch.stream()
.map(paymentInstruction -> Sdf03Builder.buildSdf03(paymentInstruction, generationId))
.map(paymentInstruction -> new Sdf03Builder(companyImdg).buildSdf03(paymentInstruction, generationId))
.forEach(sdf03Imdg::insert);
requestId = kafkaSender.sendRequestToQueue(Consts.SDF03_PROCESS, kafkaMessage);
} else if (category.equals(ClearingCategory.B)) {
batch.stream()
.map(paymentInstruction -> Sdf11Builder.buildSdf11(paymentInstruction, generationId))
.map(paymentInstruction -> new Sdf11Builder(companyImdg).buildSdf11(paymentInstruction, generationId))
.forEach(sdf11Imdg::insert);
requestId = kafkaSender.sendRequestToQueue(Consts.SDF11_PROCESS, kafkaMessage);
} else {

View file

@ -1,30 +1,56 @@
package ru.spcex.clearing.service.builder;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.spcex.clearing.service.SpecifUtil;
import ru.spcex.platform.enumeration.Sender;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.utils.time.TimeUtil;
import java.time.Instant;
import java.time.LocalDate;
public class Sdf03Builder {
public static SDf03 buildSdf03(PaymentInstruction paymentInstruction, Long generationId) {
private final Imdg<Company> companyImdg;
public Sdf03Builder(Imdg<Company> companyImdg) {
this.companyImdg = companyImdg;
}
public SDf03 buildSdf03(PaymentInstruction paymentInstruction, Long generationId) {
SDf03 sDf03 = new SDf03();
sDf03.setSeg_type("S");
sDf03.setSeg_type("U");
sDf03.setDoc_type("002");
sDf03.setDocnm_ref(paymentInstruction.getId().toString());
sDf03.setPriority("9");
sDf03.setSbankcode(Sender.Prc.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf03.setC_acc_deb(paymentInstruction.getDebitLegAccount());
sDf03.setSbanknam1(paymentInstruction.getPayeeBankName());
if (paymentInstruction.getSenderId().equals(Sender.One.getId())) {
sDf03.setSbanknam1(paymentInstruction.getPayeeBankName());
} else {
Company company = companyImdg.getSingleObjectByID(paymentInstruction.getSenderId());
if (company != null) {
sDf03.setSbanknam1(company.getShortName());
}
}
// =@00100, если ?;
// =@00000, если ?.
sDf03.setRbankcode(Sender.Prc.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf03.setRbankcode(Sender.One.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf03.setC_acc_cred(paymentInstruction.getCreditLegAccount());
sDf03.setRbanknam1(paymentInstruction.getAddresseeBankName());
sDf03.setPay_date(LocalDate.now().format(TimeUtil.PROPERTY_DATE_FORMATTER));
if (paymentInstruction.getAddresseeId().equals(Sender.One.getId())) {
sDf03.setRbanknam1(paymentInstruction.getAddresseeBankName());
} else {
Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId());
if (company != null) {
sDf03.setRbanknam1(company.getShortName());
}
}
LocalDate paymtDt = TimeUtil.toLocalDate(paymentInstruction.getPaymentDate());
if (paymtDt != null) {
sDf03.setPay_date(paymtDt.format(TimeUtil.PROPERTY_DATE_FORMATTER));
}
sDf03.setPay_val("RUR");
sDf03.setSum_deb(paymentInstruction.getDebitLegAmount() != null ? paymentInstruction.getDebitLegAmount().toString() : null);
//37 sp_code varchar(2) Код назначения платежа

View file

@ -1,30 +1,55 @@
package ru.spcex.clearing.service.builder;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf11;
import ru.spcex.clearing.service.SpecifUtil;
import ru.spcex.platform.enumeration.Sender;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.utils.time.TimeUtil;
import java.time.Instant;
import java.time.LocalDate;
public class Sdf11Builder {
public static SDf11 buildSdf11(PaymentInstruction paymentInstruction, Long generationId) {
private final Imdg<Company> companyImdg;
public Sdf11Builder(Imdg<Company> companyImdg) {
this.companyImdg = companyImdg;
}
public SDf11 buildSdf11(PaymentInstruction paymentInstruction, Long generationId) {
SDf11 sDf11 = new SDf11();
sDf11.setSeg_type("S");
sDf11.setSeg_type("U");
sDf11.setDoc_type("002");
sDf11.setDocnm_ref(paymentInstruction.getId().toString());
sDf11.setPriority("9");
sDf11.setSbankcode(Sender.Prc.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf11.setC_acc_deb(paymentInstruction.getDebitLegAccount());
sDf11.setSbanknam1(paymentInstruction.getPayeeBankName());
if (paymentInstruction.getSenderId().equals(Sender.One.getId())) {
sDf11.setSbanknam1(paymentInstruction.getPayeeBankName());
} else {
Company company = companyImdg.getSingleObjectByID(paymentInstruction.getSenderId());
if (company != null) {
sDf11.setSbanknam1(company.getShortName());
}
}
// =@00100, если ?;
// =@00000, если ?.
sDf11.setRbankcode(Sender.Prc.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf11.setRbankcode(Sender.One.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0");
sDf11.setC_acc_cred(paymentInstruction.getCreditLegAccount());
sDf11.setRbanknam1(paymentInstruction.getAddresseeBankName());
sDf11.setPay_date(LocalDate.now().format(TimeUtil.PROPERTY_DATE_FORMATTER));
if (paymentInstruction.getAddresseeId().equals(Sender.One.getId())) {
sDf11.setRbanknam1(paymentInstruction.getAddresseeBankName());
} else {
Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId());
if (company != null) {
sDf11.setRbanknam1(company.getShortName());
}
}
LocalDate paymtDt = TimeUtil.toLocalDate(paymentInstruction.getPaymentDate());
if (paymtDt != null) {
sDf11.setPay_date(paymtDt.format(TimeUtil.PROPERTY_DATE_FORMATTER));
}
sDf11.setPay_val("RUR");
sDf11.setSum_deb(paymentInstruction.getDebitLegAmount() != null ? paymentInstruction.getDebitLegAmount().toString() : null);
//37 sp_code varchar(2) Код назначения платежа

View file

@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
import ru.spcex.platform.utils.enumeration.IEnumId;
public enum Sender implements IEnumId {
Prc(2L);
One(1L), Prc(2L);
private final Long key;