clearing-service http://jira.mfd.msk:8088/browse/CLS-290 обработчик для шага 6 refactoring

This commit is contained in:
AKurakin 2023-05-17 19:47:24 +03:00
parent d0a74989a4
commit e45b073290
2 changed files with 14 additions and 13 deletions

View file

@ -17,8 +17,8 @@ public enum TaskType {
InclusionToPool,
/**
* Step 6
* Step 6: forming Registry on Obligations and Settlement requirements
*/
CreateRegistryOnObligationsAndSettlementRequirements,
FormingRegistersOnOS,
}

View file

@ -4,18 +4,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.session.stage.ISessionStage;
import ru.spcex.clearing.session.stage.StageResult;
import ru.spcex.clearing.session.stage.Task;
import ru.spcex.clearing.session.stage.task.DealsPreparePayload;
import ru.spcex.clearing.session.stage.task.RegistryOnObligationsAndSettlementRequirementsPayload;
import ru.spcex.clearing.session.stage.util.RegistryUtil;
import ru.spcex.platform.classes.base.interfaces.IExecution;
import ru.spcex.platform.classes.base.interfaces.WithExchangeExecutionId;
import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.enumeration.RegistryInstrumentType;
import ru.spcex.platform.enumeration.RegistryStatus;
@ -29,14 +24,14 @@ import java.util.ArrayList;
import java.util.Collection;
@Service
public class CreateRegistryOnObligationsAndSettlementRequirements implements ISessionStage {
public class FormingRegistersOnOS implements ISessionStage {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgId idSequence;
private final Imdg<Registry> registryImdg;
@Autowired
public CreateRegistryOnObligationsAndSettlementRequirements(ImdgProvider imdgProvider) {
public FormingRegistersOnOS(ImdgProvider imdgProvider) {
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.idSequence = imdgProvider.getImdgIdGenerator();
@ -46,7 +41,7 @@ public class CreateRegistryOnObligationsAndSettlementRequirements implements ISe
public StageResult<?> submit(Task<?> task) {
RegistryOnObligationsAndSettlementRequirementsPayload payload = (RegistryOnObligationsAndSettlementRequirementsPayload) task.getData();
switch (task.getTaskType()) {
case CreateRegistryOnObligationsAndSettlementRequirements -> {
case FormingRegistersOnOS -> {
return createRegistryOnObligationsAndSettlementRequirements(payload.getSessionId());
}
default -> {
@ -55,23 +50,29 @@ public class CreateRegistryOnObligationsAndSettlementRequirements implements ISe
}
}
private Collection<Registry> selectRegistry(Long sessionId) {
/**
* Select Registry by: registryCode = [O/T][S/M][*][T] & registryStatus=OK
*
* @param sessionId
* @return
*/
protected Collection<Registry> selectRegistry(Long sessionId) {
String registrySQL = "sessionId = " + sessionId;
registrySQL += " and (registryDesignation=" + RegistryDesignation.O.getKey() + " or registryDesignation=" + RegistryDesignation.T.getKey() + ")";
registrySQL += " and (registryInstrumentType=" + RegistryInstrumentType.S.getKey() + " or registryInstrumentType=" + RegistryInstrumentType.M.getKey() + ")";
registrySQL += " and (registryUnit=" + RegistryUnit.T.getKey() + ")";
registrySQL += " and registryStatus=" + RegistryStatus.OK.getKey() + ")";
// registryCode = [O/T][S/M][*][T] & registryStatus=OK
Collection<Registry> result = registryImdg.getCollectionObjectsBySQL(registrySQL);
log.trace("Selected {} registry's by sql: {}", result.size(), registrySQL);
return result;
}
private StageResult<?> createRegistryOnObligationsAndSettlementRequirements(Long sessionId) {
protected StageResult<?> createRegistryOnObligationsAndSettlementRequirements(Long sessionId) {
Collection<Registry> forRegistries = selectRegistry(sessionId);
ArrayList<Registry> newRegistries = new ArrayList<>();
//todo oreder by обрабатываться группами по полю registry.groupId
//todo при перезапуске после незапланированного завершения стадии: надо ли проверять уже созданные регистры и не создавать дубликаты?
for (Registry registry : forRegistries) {
Registry newRegistry = createRegistryFor(registry);