company-service CompanySymbolValidationConfig добавлено правило валидации

This commit is contained in:
AKurakin 2023-04-07 18:09:08 +03:00
parent 83a513f629
commit e821423e68
3 changed files with 48 additions and 10 deletions

View file

@ -7,6 +7,7 @@ import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.platform.dictionary.*;
import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.company.validation.CompanySymbolNotExistRule;
import ru.spcex.clearing.company.validation.CompanySymbolOfSymbolNewRequestNotExistRule;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
@ -56,8 +57,8 @@ public class CompanySymbolValidationConfig {
CompanySymbolDictionary.class,
CompanyErrors.RequiredFieldEmpty,
CompanyErrors.WrongFieldValue,
false)
// , new CompanySymbolNotExistRule() чтобы применить это правило, необходимо сделать дополнительный тип в его методе
false),
new CompanySymbolOfSymbolNewRequestNotExistRule()
);
};
}

View file

@ -34,7 +34,6 @@ import java.util.function.Function;
public class CompanySymbolService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider;
// private final Imdg<CompanySymbols> companySymbolsMap;
private final ImdgId idSequence;
protected CompanyService companyService;
@ -105,8 +104,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
transaction.beginTransaction();
boolean txOk = false;
try {
Imdg<CompanySymbols> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbolsMap.update(companySymbols);
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbolsTMap.update(companySymbols);
try {
companyService.updateCompanyBySymbol(transaction, companySymbols);
} catch (ClearingBaseException e) {
@ -140,11 +139,11 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
transaction.beginTransaction();
boolean txOk = false;
try {
Imdg<CompanySymbols> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbols = companySymbolsMap.getSingleObjectByID(req.getId());
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
companySymbolsMap.update(companySymbols);
companySymbolsTMap.update(companySymbols);
try {
companyService.updateCompanyBySymbol(transaction, companySymbols);
} catch (ClearingBaseException e) {
@ -172,8 +171,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
newSymbol.setCompanySymbolValue(companySymbolValue);
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
if (transaction == null) {
Imdg<CompanySymbols> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbolsMap.insert(newSymbol);
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbolsTMap.insert(newSymbol);
} else {
Imdg<CompanySymbols> tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
tMap.insert(newSymbol);

View file

@ -0,0 +1,38 @@
package ru.spcex.clearing.company.validation;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.validation.IValidationRule;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import java.util.Optional;
/**
* Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId
*/
public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule<ImdgValidationContext<CompanySymbolUpdateRequest>> {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<CompanySymbolUpdateRequest> context) {
CompanySymbolUpdateRequest request = context.getValidatedObject();
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
Collection<CompanySymbols> companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues(Map.of(
"companyId", request.getCompanyId(),
"companySymbol", request.getCompanySymbol()
));
if (companySymbols.isEmpty()) return Optional.empty();
return of(CompanyErrors.RecordAlreadyExist, request.getCompanyId(), request.getCompanySymbol());
}
}