Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
ec55bd90cb
4 changed files with 28 additions and 46 deletions
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.config;
|
|||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.spcex.clearing.service.executors.*;
|
||||
import ru.spcex.clearing.service.executors.SdfLegacyExecutor;
|
||||
import ru.spcex.platform.enumeration.SdfTable;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
|
@ -13,7 +12,7 @@ import java.util.Map;
|
|||
public class SdfExecutorsConfig {
|
||||
|
||||
@Bean("sdfExecutors")
|
||||
public Map<SdfTable, AbstractExecutor<?>> executorsMap(SdfLegacyExecutor sdf01Executor,
|
||||
public Map<SdfTable, AbstractExecutor<?>> executorsMap(Sdf01Executor sdf01Executor,
|
||||
Sdf57Executor sdf57Executor,
|
||||
Sdf04Executor sdf04Executor,
|
||||
Sdf13Executor sdf13Executor) {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
@Service
|
||||
public class Sdf04Executor extends AbstractExecutor<SDf04> {
|
||||
|
|
@ -54,25 +53,21 @@ public class Sdf04Executor extends AbstractExecutor<SDf04> {
|
|||
for (SDf04 sdf04 : sdf) {
|
||||
//обычно мы ищем по группу sdf04, здесь как будто всегда только одна запись, todo нужно прочекать этот момент
|
||||
log.debug("Process sdf04 record; sdf04.id: {}", sdf04.getId());
|
||||
Collection<String> fullNames = Collections.emptyList(); //fixme что значит registry.fullName=sDf04.(sbanknam1, sbanknam2 и т.д.)
|
||||
Collection<Registry> registries = selectRegistryForSDF04(sdf04.getC_acc_cred(), fullNames);
|
||||
Collection<Registry> registries = selectRegistryForSDF04(sdf04.getC_acc_cred());
|
||||
registries.forEach(registry -> unlockRegistry(registry, new BigDecimal(sdf04.getPay_val())));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected Collection<Registry> selectRegistryForSDF04(String account, Collection<String> fullNames) {
|
||||
protected Collection<Registry> selectRegistryForSDF04(String account) {
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
ImdgPredicate query = pb.and(
|
||||
pb.and(
|
||||
pb.equals("registryDesignation", RegistryDesignation.A.getKey()),
|
||||
pb.equals("registryInstrumentType", RegistryInstrumentType.M.getKey()),
|
||||
pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()),
|
||||
pb.equals("registryUnit", RegistryUnit.B.getKey()))
|
||||
pb.equals("registryUnit", RegistryUnit.B.getKey())
|
||||
),
|
||||
pb.equals("account", account)
|
||||
// ,
|
||||
// pb.in("fullName", fullNames.toArray(new String[fullNames.size()]))
|
||||
);
|
||||
|
||||
Collection<Registry> result = registryImdg.getCollectionObjectsByPredicate(query);
|
||||
|
|
@ -81,18 +76,8 @@ public class Sdf04Executor extends AbstractExecutor<SDf04> {
|
|||
}
|
||||
|
||||
boolean unlockRegistry(Registry registry, BigDecimal value) {
|
||||
if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) {
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().add(value));
|
||||
return true;
|
||||
} else if (RegistryUnit.B.equalsByKey(registry.getRegistryUnit())) {
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().subtract(value));
|
||||
return true;
|
||||
} else {
|
||||
log.warn("For registry {} registryUnit={} unlock operation not implemented.",
|
||||
registry.getId(), registry.getRegistryUnit());
|
||||
return false;
|
||||
}
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().subtract(value));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class Sdf13Executor extends AbstractExecutor<SDf13> {
|
||||
|
|
@ -64,8 +65,7 @@ public class Sdf13Executor extends AbstractExecutor<SDf13> {
|
|||
}
|
||||
|
||||
protected SDf12 selectSdf12bySdf13(SDf13 sDf13) {
|
||||
SDf12 sdf12 = sdf12Imdg.getSingleObjectByID(sDf13.getId());
|
||||
log.trace("Selected sdf12 by sdf13");
|
||||
SDf12 sdf12 = sdf12Imdg.getSingleObjectByFieldValues(Map.of("outDocument", sDf13.getInDocument()));
|
||||
return sdf12;
|
||||
}
|
||||
|
||||
|
|
@ -74,9 +74,8 @@ public class Sdf13Executor extends AbstractExecutor<SDf13> {
|
|||
ImdgPredicate query = pb.and(
|
||||
pb.and(
|
||||
pb.equals("registryDesignation", RegistryDesignation.A.getKey()),
|
||||
pb.equals("registryInstrumentType", RegistryInstrumentType.M.getKey()),
|
||||
pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()),
|
||||
pb.equals("registryUnit", RegistryUnit.B.getKey()))
|
||||
pb.equals("registryInstrumentType", RegistryInstrumentType.S.getKey()),
|
||||
pb.equals("registryUnit", RegistryUnit.B.getKey())
|
||||
),
|
||||
pb.equals("account", account),
|
||||
pb.equals("securityCode", securityCode)
|
||||
|
|
@ -88,18 +87,8 @@ public class Sdf13Executor extends AbstractExecutor<SDf13> {
|
|||
}
|
||||
|
||||
boolean unlockRegistry(Registry registry, BigDecimal value) {
|
||||
if (RegistryUnit.F.equalsByKey(registry.getRegistryUnit())) {
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().add(value));
|
||||
return true;
|
||||
} else if (RegistryUnit.B.equalsByKey(registry.getRegistryUnit())) {
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().subtract(value));
|
||||
return true;
|
||||
} else {
|
||||
log.warn("For registry {} registryUnit={} unlock operation not implemented.",
|
||||
registry.getId(), registry.getRegistryUnit());
|
||||
return false;
|
||||
}
|
||||
if (registry.getBalance() == null) registry.setBalance(BigDecimal.ZERO);
|
||||
registry.setBalance(registry.getBalance().subtract(value));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,14 +169,20 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
};
|
||||
Consumer<RegistryDesignation> create = (dsgn) -> {
|
||||
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
|
||||
Registry registryF = registry.clone();
|
||||
registryF.setRegistryUnit(RegistryUnit.F.getKey());
|
||||
registryF.setRegistryCode(RegistryUtil.clearingCode(registryF));
|
||||
registryF.setId(imdgProvider.getImdgIdGenerator().nextId());
|
||||
|
||||
Registry registryB = registry.clone();
|
||||
registryB.setRegistryUnit(RegistryUnit.B.getKey());
|
||||
registryB.setRegistryCode(RegistryUtil.clearingCode(registryB));
|
||||
registryB.setId(imdgProvider.getImdgIdGenerator().nextId());
|
||||
registryB.setBalance(BigDecimal.ZERO);
|
||||
registryB.setDebit(BigDecimal.ZERO);
|
||||
|
||||
Registry registryF = registry.clone();
|
||||
registryF.setRegistryUnit(RegistryUnit.F.getKey());
|
||||
registryF.setRegistryCode(RegistryUtil.clearingCode(registryF));
|
||||
registryF.setBalance(registry.getBalance().subtract(registryB.getBalance()));
|
||||
registryF.setId(imdgProvider.getImdgIdGenerator().nextId());
|
||||
|
||||
registryImdg.insert(registry);
|
||||
registryImdg.insert(registryF);
|
||||
registryImdg.insert(registryB);
|
||||
|
|
@ -283,7 +289,10 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
//= текущее значение registry.balance - statement.amount
|
||||
switch (inOutDirection) {
|
||||
case in -> rgs.setBalance(statement.getAmount());
|
||||
case out -> rgs.setBalance(statement.getAmount().negate());
|
||||
case out -> {
|
||||
rgs.setBalance(statement.getAmount().negate());
|
||||
rgs.setDebit(statement.getAmount());
|
||||
}
|
||||
}
|
||||
rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки
|
||||
//fixme !rgs.setSettlementCode();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue