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();
|
transaction.beginTransaction();
|
||||||
boolean txOk = false;
|
boolean txOk = false;
|
||||||
try {
|
try {
|
||||||
companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
|
||||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
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;
|
txOk = true;
|
||||||
} finally {
|
} finally {
|
||||||
if (txOk)
|
if (txOk)
|
||||||
|
|
|
||||||
|
|
@ -272,8 +272,9 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
return existRelation;
|
return existRelation;
|
||||||
}
|
}
|
||||||
|
|
||||||
Collection<String> selectCompanyClearingMemberCategory(Long companyId) {
|
Collection<String> selectCompanyClearingMemberCategory(ImdgTransaction tx, Long companyId) {
|
||||||
Collection<ClearingMemberCategory> companyCategory = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(
|
Imdg<ClearingMemberCategory> cmcMap = tx == null ? clearingMemberCategoryImdg : tx.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
|
Collection<ClearingMemberCategory> companyCategory = cmcMap.getCollectionObjectsByFieldValues(
|
||||||
Map.of("companyId", companyId)
|
Map.of("companyId", companyId)
|
||||||
);
|
);
|
||||||
return companyCategory.stream()
|
return companyCategory.stream()
|
||||||
|
|
@ -325,7 +326,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
Relation relation = relationMap.getSingleObjectByID(req.getId());
|
Relation relation = relationMap.getSingleObjectByID(req.getId());
|
||||||
final Long companyId = relation.getConsumerId();
|
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())
|
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.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());
|
Relation relation = relationMap.getSingleObjectByID(req.getId());
|
||||||
Long companyId = relation.getConsumerId();
|
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())
|
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
||||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
|| companyCMC.contains(ClearingCategory.V.getKey());
|
||||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.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 не изменяем
|
// relation не изменяем
|
||||||
} else if (companyCMCisCF) {
|
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
||||||
// relation не изменяем
|
// relation не изменяем
|
||||||
|
} else {
|
||||||
|
// удалить.
|
||||||
}
|
}
|
||||||
// else ? todo bad logic! Проверить ТЗ.
|
// else
|
||||||
{
|
{
|
||||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||||
boolean txOk = false;
|
boolean txOk = false;
|
||||||
|
|
@ -591,33 +593,50 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
relationMap.insert(relation);
|
relationMap.insert(relation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Приходит от ClearingMemberCategory
|
||||||
|
*/
|
||||||
protected void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory 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");
|
Objects.requireNonNull(companyId, "companyId");
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
String serviceStatus = null;
|
// String serviceStatus = null;
|
||||||
if (clearingMemberCategory == null) {
|
// if (clearingMemberCategory == null) {
|
||||||
log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
// log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
||||||
} else {
|
// } else {
|
||||||
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
// ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||||
serviceStatus = serviceForCMC(clearingCategory).getKey();
|
// serviceStatus = serviceForCMC(clearingCategory).getKey();
|
||||||
}
|
// }
|
||||||
/*
|
|
||||||
//todo here...
|
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);
|
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
||||||
if (relation == null) {
|
if (relation == null) {
|
||||||
log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory());
|
log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory());
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
relation.setUpdated(Instant.now());
|
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
||||||
log.debug("Update exist relation.id={}", relation.getId());
|
// 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) {
|
protected void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue