возврат депозитов шаг 5: DM*X/DM*T
This commit is contained in:
parent
cca5991bd6
commit
9f046ae383
1 changed files with 28 additions and 6 deletions
|
|
@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.service.registry.RegistryManager;
|
import ru.spcex.clearing.service.registry.RegistryManager;
|
||||||
|
|
@ -34,12 +35,14 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||||
public class InspectionObligationsDepositReturn implements ISessionStage {
|
public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
|
private final Imdg<ClearingMemberCategory> categoryImdg;
|
||||||
private SessionType sessionType;
|
private SessionType sessionType;
|
||||||
private final RegistryManager rgsMng;
|
private final RegistryManager rgsMng;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public InspectionObligationsDepositReturn(ImdgProvider imdgProvider, RegistryManager rgsMng) {
|
public InspectionObligationsDepositReturn(ImdgProvider imdgProvider, RegistryManager rgsMng) {
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
this.categoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
this.rgsMng = rgsMng;
|
this.rgsMng = rgsMng;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -128,7 +131,7 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
|
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
|
||||||
// updateStatus(dmtInfo.get(), RegistryStatus.POOL);
|
// updateStatus(dmtInfo.get(), RegistryStatus.POOL);
|
||||||
} else {
|
} else {
|
||||||
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed()));
|
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs)));
|
||||||
updateStatus(dmtInfo.get(), RegistryStatus.UNCV);
|
updateStatus(dmtInfo.get(), RegistryStatus.UNCV);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -143,20 +146,39 @@ public class InspectionObligationsDepositReturn implements ISessionStage {
|
||||||
);
|
);
|
||||||
if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) {
|
if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) {
|
||||||
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
|
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
|
||||||
// updateStatus(dmtClnr.get(), RegistryStatus.POOL);
|
|
||||||
} else {
|
} else {
|
||||||
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed()));
|
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs)));
|
||||||
updateStatus(dmtClnr.get(), RegistryStatus.UNCV);
|
updateStatus(dmtClnr.get(), RegistryStatus.UNCV);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group",
|
|
||||||
omtRgs.getId(), registryStatusFailed());
|
if (SessionType.FINL.equals(sessionType)
|
||||||
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed()));
|
&& amfBalance.compareTo(omtBalance) >= 0
|
||||||
|
&& initiatorV(omtRgs)) {
|
||||||
|
log.debug("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. " +
|
||||||
|
"FINL, initiator.category='V' and am*f > om*t: setting OK status to group",
|
||||||
|
omtRgs.getId());
|
||||||
|
group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK));
|
||||||
|
} else {
|
||||||
|
log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group",
|
||||||
|
omtRgs.getId(), registryStatusFailed());
|
||||||
|
group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new StageResult<>(null, true);
|
return new StageResult<>(null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean initiatorV(Registry omtRgs) {
|
||||||
|
if (omtRgs.getCounterPartyId() == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ClearingMemberCategory ctgr = categoryImdg.getFirstObjectBySQL(
|
||||||
|
"companyId = %d and clearingMemberCategory = '%s'"
|
||||||
|
.formatted(omtRgs.getCounterPartyId(), ClearingCategory.V.getKey()));
|
||||||
|
return ctgr != null;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateStatus(Registry registry, RegistryStatus registryStatus) {
|
private void updateStatus(Registry registry, RegistryStatus registryStatus) {
|
||||||
log.trace("Update registry.id: {} to {}", registry.getId(), registryStatus.getKey());
|
log.trace("Update registry.id: {} to {}", registry.getId(), registryStatus.getKey());
|
||||||
registry.setRegistryStatus(registryStatus.getKey());
|
registry.setRegistryStatus(registryStatus.getKey());
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue