company-service relation удаление по ClearingMemberCategory (правильно понял ТЗ)
This commit is contained in:
parent
41c414497d
commit
6bb00569d3
2 changed files with 48 additions and 29 deletions
|
|
@ -175,9 +175,9 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
|||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
txClearingMemberCategoryMap.delete(clearingMemberCategory);
|
||||
txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
||||
companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
|
|
|
|||
|
|
@ -272,8 +272,9 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
return existRelation;
|
||||
}
|
||||
|
||||
Collection<String> selectCompanyClearingMemberCategory(Long companyId) {
|
||||
Collection<ClearingMemberCategory> companyCategory = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(
|
||||
Collection<String> selectCompanyClearingMemberCategory(ImdgTransaction tx, Long companyId) {
|
||||
Imdg<ClearingMemberCategory> cmcMap = tx == null ? clearingMemberCategoryImdg : tx.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
Collection<ClearingMemberCategory> companyCategory = cmcMap.getCollectionObjectsByFieldValues(
|
||||
Map.of("companyId", companyId)
|
||||
);
|
||||
return companyCategory.stream()
|
||||
|
|
@ -325,7 +326,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
Relation relation = relationMap.getSingleObjectByID(req.getId());
|
||||
final Long companyId = relation.getConsumerId();
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(null, companyId);
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
|
|
@ -507,19 +508,20 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
Relation relation = relationMap.getSingleObjectByID(req.getId());
|
||||
Long companyId = relation.getConsumerId();
|
||||
//fixme relation.getService() // mkr/fond - это с учётом сервиса - на какой он удаляется и какие буквы остаются. Если ни одного CMC нету по этим буквам то удалить.
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
||||
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(null, companyId);
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
String firstCMC = companyCMC.isEmpty() ? null : companyCMC.iterator().next();
|
||||
|
||||
if (companyCMCisBIV) {
|
||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
} else if (companyCMCisCF) {
|
||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
} else {
|
||||
// удалить.
|
||||
}
|
||||
// else ? todo bad logic! Проверить ТЗ.
|
||||
// else
|
||||
{
|
||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||
boolean txOk = false;
|
||||
|
|
@ -591,33 +593,50 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
relationMap.insert(relation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Приходит от ClearingMemberCategory
|
||||
*/
|
||||
protected void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
||||
Objects.requireNonNull(companyId, "companyId");
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
String serviceStatus = null;
|
||||
if (clearingMemberCategory == null) {
|
||||
log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
||||
} else {
|
||||
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||
serviceStatus = serviceForCMC(clearingCategory).getKey();
|
||||
}
|
||||
/*
|
||||
//todo here...
|
||||
// String serviceStatus = null;
|
||||
// if (clearingMemberCategory == null) {
|
||||
// log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
||||
// } else {
|
||||
// ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||
// serviceStatus = serviceForCMC(clearingCategory).getKey();
|
||||
// }
|
||||
|
||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(null, companyId);
|
||||
if (companyCMC.contains(clearingMemberCategory.getClearingMemberCategory())) {
|
||||
// never
|
||||
log.warn("ClearingMemberCategory \"{}\" already exist in set for company {}.", clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||
}
|
||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
||||
|
||||
|
||||
1) коммент обновить. сейчас не обязательно.
|
||||
2)это от КМК приходит.
|
||||
*/
|
||||
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||
if (relation == null) {
|
||||
log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory());
|
||||
return;
|
||||
} else {
|
||||
relation.setUpdated(Instant.now());
|
||||
log.debug("Update exist relation.id={}", relation.getId());
|
||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
||||
// relation не изменяем
|
||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
||||
} else {
|
||||
// удалить.
|
||||
log.debug("Block exist relation.id={}", relation.getId());
|
||||
relation.setUpdated(Instant.now());
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
relationMap.update(relation);
|
||||
log.debug("Relation[{}] updated (closed) by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
||||
}
|
||||
}
|
||||
relation.setServiceStatus(Closed.getKey());
|
||||
log.debug("Relation[{}] updated (closed) by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
||||
relationMap.insert(relation);
|
||||
}
|
||||
|
||||
protected void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue