This commit is contained in:
parent
fe79868712
commit
6fdfcb041f
3 changed files with 106 additions and 0 deletions
|
|
@ -11,5 +11,9 @@ public enum TaskType {
|
||||||
* step 1
|
* step 1
|
||||||
*/
|
*/
|
||||||
DealsPrepare,
|
DealsPrepare,
|
||||||
|
/**
|
||||||
|
* step 4
|
||||||
|
*/
|
||||||
|
InclusionToPool,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
package ru.spcex.clearing.session.stage.impl;
|
||||||
|
|
||||||
|
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.registry.Registry;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
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.InclusionToPoolPayload;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class InclusionObligations implements ISessionStage {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
//todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...)
|
||||||
|
private ImdgProvider imdgProvider;
|
||||||
|
private ImdgId idGenerator;
|
||||||
|
private Imdg<Registry> registryImdg;
|
||||||
|
private KafkaSender kafkaSender;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public InclusionObligations(ImdgProvider imdgProvider) {
|
||||||
|
this.imdgProvider = imdgProvider;
|
||||||
|
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||||
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StageResult submit(Task<?> task) {
|
||||||
|
InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData();
|
||||||
|
switch (task.getTaskType()) {
|
||||||
|
case InclusionToPool -> {
|
||||||
|
return inclusionToPool(payload.getSessionType(), payload.getCounterPartyId());
|
||||||
|
}
|
||||||
|
default -> {
|
||||||
|
throw new IllegalStateException("Unknown task type: " + task.getTaskType());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private StageResult inclusionToPool(String sessionType, Long counterPartyId) {
|
||||||
|
String sqlCondition = String.format("registryCode like '%s' and " +
|
||||||
|
"registryStatus = '%s' and " +
|
||||||
|
"settlementDate = '%s' and " +
|
||||||
|
"sessionType = '%s'",
|
||||||
|
"[O/T][S/M][*][T]",
|
||||||
|
"PROC",
|
||||||
|
LocalDate.now(),
|
||||||
|
sessionType);
|
||||||
|
|
||||||
|
Collection<Registry> obligations = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||||
|
Map<Long, List<Registry>> registryByGroupId = obligations.stream().
|
||||||
|
filter(registry -> registry.getCompanyId().equals(counterPartyId)).
|
||||||
|
collect(Collectors.groupingBy(Registry::getGroupId));
|
||||||
|
|
||||||
|
for (Map.Entry<Long, List<Registry>> entrySet : registryByGroupId.entrySet()) {
|
||||||
|
log.debug("Processing set of registry with groupId: {}", entrySet.getKey());
|
||||||
|
for (Registry registry : entrySet.getValue()){
|
||||||
|
registry.setRegistryStatus("POOL");
|
||||||
|
registryImdg.update(registry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new StageResult(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package ru.spcex.clearing.session.stage.task;
|
||||||
|
|
||||||
|
public class InclusionToPoolPayload {
|
||||||
|
private String sessionType;
|
||||||
|
private Long counterPartyId;
|
||||||
|
|
||||||
|
public String getSessionType() {
|
||||||
|
return sessionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSessionType(String sessionType) {
|
||||||
|
this.sessionType = sessionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCounterPartyId() {
|
||||||
|
return counterPartyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCounterPartyId(Long counterPartyId) {
|
||||||
|
this.counterPartyId = counterPartyId;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue