Merge branch 'ReturnDepositSessionFix' into dev

This commit is contained in:
ialbert 2023-08-08 12:22:17 +03:00
commit 68a7aec74c
6 changed files with 30 additions and 29 deletions

View file

@ -114,7 +114,7 @@ public class Sdf06Executor {
errorSdf07.setGenerationId(sdf07GroupId); errorSdf07.setGenerationId(sdf07GroupId);
sdf07Imdg.insert(errorSdf07); sdf07Imdg.insert(errorSdf07);
}); });
sendToExporter(groupId); sendToExporter(sdf07GroupId);
return; return;
} }
Collection<AssetOperationRequest> requests = new ArrayList<>(); Collection<AssetOperationRequest> requests = new ArrayList<>();
@ -169,7 +169,7 @@ public class Sdf06Executor {
assetOperationListRequest.setAssetOperationRequests(requests); assetOperationListRequest.setAssetOperationRequests(requests);
kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest); kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest);
} else if (sdf07WasCreated) { } else if (sdf07WasCreated) {
sendToExporter(groupId); sendToExporter(sdf07GroupId);
} }
} }

View file

@ -18,8 +18,10 @@ import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.error.ClearingErrorInternal; import ru.spcex.clearing.error.ClearingErrorInternal;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.importexport.SwtExporterRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.model.Result;
import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.service.validation.ValidationStored;
@ -87,11 +89,15 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
@Override @Override
public boolean isNeedToSendCommand() { public boolean isNeedToSendCommand() {
return false; return true;
} }
@Override @Override
public void sendCommand(KafkaSender kafkaSender, Result result) { public void sendCommand(KafkaSender kafkaSender, Result result) {
SwtExporterRequest swtReq = new SwtExporterRequest();
swtReq.setType(SdfTable.SDF_09.getKey());
swtReq.setGroupId(result.getGenerationId());
kafkaSender.sendRequestToQueue(Consts.SWT_EXPORTER, swtReq);
} }
Company searchCompany(String depoCode) { Company searchCompany(String depoCode) {

View file

@ -4,14 +4,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.sdf.SDf06; import ru.clearing.classes.statics.data.sdf.SDf06;
import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.enumeration.RegistryTradingParams; import ru.spcex.platform.enumeration.RegistryTradingParams;
import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
@ -35,27 +33,13 @@ public enum Sdf06NewValidationRule implements IValidationRule<ImdgValidationCont
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<SDf06> context) { public Optional<EnumMessage> validate(ImdgValidationContext<SDf06> context) {
SDf06 sdf06 = context.getValidatedObject(); SDf06 sdf06 = context.getValidatedObject();
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
if (TextUtil.isEmpty(sdf06.getDeal())) {
CompanySymbols companySymbols = null; return of(ClearingError.CompanyNotFoundB, sdf06.getDeal());
if (sdf06.getInn() != null) { //TextUtil.isEmpty
companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of(
"companySymbol", CompanySymbol.INN.getKey(),
"companySymbolValue", sdf06.getInn()));
} else if (sdf06.getBic() != null) {
companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of(
"companySymbol", CompanySymbol.BIC.getKey(),
"companySymbolValue", sdf06.getBic()));
} }
if (companySymbols == null) { Company company = companyImdg.getFirstObjectBySQL("tradingCode = '" + sdf06.getDeal() + "'");
return of(ClearingError.CompanyNotFoundB, "inn=" + sdf06.getInn() + "/bic=" + sdf06.getBic());
}
Company company = companyImdg.getSingleObjectByID(companySymbols.getCompanyId());
if (company == null) { if (company == null) {
return of(ClearingError.CompanyNotFoundB, "inn=" + sdf06.getInn() return of(ClearingError.CompanyNotFoundB, sdf06.getDeal());
+ "/bic=" + sdf06.getBic()
+ "/companyId=" + companySymbols.getCompanyId());
} }
context.storeObject(ValidationStored.Sdf06Company, company); context.storeObject(ValidationStored.Sdf06Company, company);
return empty(); return empty();

View file

@ -60,7 +60,7 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
protected abstract SWTHeaderData getHeader(T record); protected abstract SWTHeaderData getHeader(T record);
public void process() { public void process(Long groupId) {
LocalDateTime exportAt = LocalDateTime.now(); LocalDateTime exportAt = LocalDateTime.now();
String fileName = formatFileName(typeForFileName(), sectionForFileName(), exportAt); String fileName = formatFileName(typeForFileName(), sectionForFileName(), exportAt);
@ -70,7 +70,7 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
byte[] data; byte[] data;
{ {
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
Collection<T> records = selectItems(); Collection<T> records = selectItems(groupId);
log.debug("Prepared {} record from {} to file {}", log.debug("Prepared {} record from {} to file {}",
records.size(), sdfImdg.getMapName(), fileName); records.size(), sdfImdg.getMapName(), fileName);
SWTHeaderData swtHeaderData = makeSwtHeader(records); SWTHeaderData swtHeaderData = makeSwtHeader(records);
@ -127,8 +127,8 @@ public abstract class AbstractExporterService<T extends SpcexObjectBase> {
} }
// Выборка // Выборка
protected Collection<T> selectItems() { protected Collection<T> selectItems(Long groupId) {
return sdfImdg.getAllValues(); return sdfImdg.getCollectionObjectsBySQL("generationId = %d".formatted(groupId));
} }
// Конвертация (поля см. meta.xml) // Конвертация (поля см. meta.xml)

View file

@ -42,7 +42,7 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi
for (AbstractExporterService exporter : exporterServices) { for (AbstractExporterService exporter : exporterServices) {
log.debug("Export {}", exporter); log.debug("Export {}", exporter);
try { try {
exporter.process(); exporter.process(-1L);
} catch (Exception e) { } catch (Exception e) {
log.error("One of exporter has error: {}", ExceptionUtils.getStackTrace(e)); log.error("One of exporter has error: {}", ExceptionUtils.getStackTrace(e));
} }
@ -57,7 +57,7 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi
if (exporter.getType().getKey().equals(req.getType())) { if (exporter.getType().getKey().equals(req.getType())) {
log.debug("Export {}", exporter); log.debug("Export {}", exporter);
try { try {
exporter.process(); exporter.process(req.getGroupId());
} catch (Exception e) { } catch (Exception e) {
log.error("Exporter has error: {}", ExceptionUtils.getStackTrace(e)); log.error("Exporter has error: {}", ExceptionUtils.getStackTrace(e));
} }

View file

@ -6,6 +6,9 @@ public class SwtExporterRequest {
@JsonProperty @JsonProperty
public String type; public String type;
@JsonProperty
public Long groupId;
public String getType() { public String getType() {
return type; return type;
} }
@ -13,4 +16,12 @@ public class SwtExporterRequest {
public void setType(String type) { public void setType(String type) {
this.type = type; this.type = type;
} }
public Long getGroupId() {
return groupId;
}
public void setGroupId(Long groupId) {
this.groupId = groupId;
}
} }