This commit is contained in:
parent
2d3808460e
commit
a6c6a7d733
4 changed files with 69 additions and 16 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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) Код назначения платежа
|
||||
|
|
|
|||
|
|
@ -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) Код назначения платежа
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue