parent
53e10b7527
commit
45f51a1b27
4 changed files with 101 additions and 19 deletions
|
|
@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
|
@ -21,20 +22,25 @@ import ru.spcex.clearing.util.security.UserRoleVerification;
|
|||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
private final ImdgProvider imdgProvider;
|
||||
|
||||
private final Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator;
|
||||
private final Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator;
|
||||
private final ValidationHelper validationHelper;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
private final CompanyService companyService;
|
||||
|
||||
@Autowired
|
||||
public ClearingMemberCategoryService(Consumer<String, Object> kafkaQueue,
|
||||
|
|
@ -44,14 +50,18 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
|||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("clearingMemberCategoryNewRequestValidator") Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator,
|
||||
@Qualifier("clearingMemberCategoryUpdateRequestValidator") Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator,
|
||||
@Qualifier("clearingMemberCategoryDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator) {
|
||||
@Qualifier("clearingMemberCategoryDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator,
|
||||
CompanyService companyService) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.clearingMemberCategoryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.clearingMemberCategoryNewRequestValidator = clearingMemberCategoryNewRequestValidator;
|
||||
this.clearingMemberCategoryUpdateRequestValidator = clearingMemberCategoryUpdateRequestValidator;
|
||||
this.clearingMemberCategoryDeleteRequestValidator = clearingMemberCategoryDeleteRequestValidator;
|
||||
this.validationHelper = validationHelper;
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.companyService = companyService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -76,14 +86,28 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
|||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
ClearingMemberCategoryNewRequest req = userRequest.getRequestPayload();
|
||||
ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
||||
newCategory.setCompanyId(req.getCompanyId());
|
||||
newCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||
clearingMemberCategoryMap.insert(newCategory);
|
||||
log.debug("successfully processed, new category id {}", newCategory.getId());
|
||||
|
||||
synchronized (companyService) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companyService.relationService.createNewRelation(transaction, req.getCompanyId());
|
||||
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
txClearingMemberCategoryMap.insert(newCategory);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
log.debug("Successfully processed, new category id {}", newCategory.getId());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
companyMap.insert(company);
|
||||
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||
companyNewRequestBaseRequest.getId(), company.getId());
|
||||
relationService.createNewRelation(transaction, company);
|
||||
relationService.createNewRelation(transaction, company.getId());
|
||||
if (!(WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()))) { // Block
|
||||
relationService.onChangeWorkflowStatus(transaction, company, null, company.getWorkflowStatus());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
|
|
@ -27,6 +28,7 @@ import ru.spcex.platform.enumeration.DocumentTypes;
|
|||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
|
|
@ -41,6 +43,7 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
|||
private ImdgProvider imdgProvider;
|
||||
private AccountNotificationHelper accountNotificationHelper;
|
||||
|
||||
private final CompanyService companyService;
|
||||
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
||||
private final Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator;
|
||||
private final Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator;
|
||||
|
|
@ -60,7 +63,8 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
|||
ValidationHelper validationHelper,
|
||||
IMessageResolver messageResolver,
|
||||
RequestHelper requestHelper,
|
||||
AccountNotificationHelper accountNotificationHelper) {
|
||||
AccountNotificationHelper accountNotificationHelper,
|
||||
CompanyService companyService) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.accountNotificationHelper = accountNotificationHelper;
|
||||
|
|
@ -71,6 +75,7 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
|||
this.userRoleVerification = userRoleVerification;
|
||||
this.messageResolver = messageResolver;
|
||||
this.requestHelper = requestHelper.setLogger(log);
|
||||
this.companyService = companyService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -148,9 +153,22 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
|||
log.debug("Company {} not active", profileDocument.getCompanyId());
|
||||
return requestHelper.makeErrorResponse(deleteRequest, CompanyErrors.CompanyNotFound, profileDocument.getCompanyId());
|
||||
}
|
||||
|
||||
profileDocumentMap.delete(profileDocument);
|
||||
|
||||
synchronized (companyService) {
|
||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||
transaction.beginTransaction();
|
||||
boolean txOk = false;
|
||||
try {
|
||||
companyService.relationService.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
||||
Imdg<ProfileDocument> txProfileDocumentMap= transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
txProfileDocumentMap.delete(profileDocument);
|
||||
txOk = true;
|
||||
} finally {
|
||||
if (txOk)
|
||||
transaction.commitTransaction();
|
||||
else
|
||||
transaction.rollbackTransaction();
|
||||
}
|
||||
}
|
||||
log.trace("successfully deleted, id {}", profileDocument.getId());
|
||||
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.springframework.beans.factory.InitializingBean;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||
|
|
@ -29,6 +30,7 @@ import ru.spcex.platform.imdg.api.Imdg;
|
|||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
|
|
@ -38,6 +40,11 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
||||
import static ru.spcex.platform.enumeration.SessionStatus.CLOS;
|
||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
||||
|
||||
@Service
|
||||
public class RelationService extends QueueConsumer implements InitializingBean {
|
||||
protected static final Long SPVB_ID = 1L; // СПВБ
|
||||
|
|
@ -106,6 +113,14 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
private synchronized RequestInfoUpdate relationNew(BaseRequest<RelationNewRequest> relationNewBaseRequest) {
|
||||
RelationNewRequest req = relationNewBaseRequest.getRequestPayload();
|
||||
log.debug("relation-new request received, BaseRequest.id = {}", relationNewBaseRequest.getId());
|
||||
|
||||
{ //проверка заполнен ли serviceStatus
|
||||
String serviceStatus = req.getServiceStatus();
|
||||
if (serviceStatus == null || serviceStatus.isEmpty()) {
|
||||
Company company = companyMap.getSingleObjectByFieldValues(Map.of("id", req.getCompanyId()));
|
||||
req.setServiceStatus(company.getWorkflowStatus());
|
||||
}
|
||||
}
|
||||
{ // Валидация
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(relationNewBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
|
@ -120,7 +135,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
Relation existRelation = searchRelation(req.getClearingMemberCategory(), req.getCompanyId());
|
||||
if (existRelation != null && !WorkflowStatus.Blocked.equalsByKey(existRelation.getServiceStatus())) {
|
||||
CompanyErrors errorType;
|
||||
if (ru.spcex.platform.enumeration.Service.MKR.equalsByKey(existRelation.getService())) {
|
||||
if (MKR.equalsByKey(existRelation.getService())) {
|
||||
errorType = CompanyErrors.ClearingMemberCategoryOnMKRAlreadyExist;
|
||||
} else if (ru.spcex.platform.enumeration.Service.FOND.equalsByKey(existRelation.getService())) {
|
||||
errorType = CompanyErrors.ClearingMemberCategoryOnFONDAlreadyExist;
|
||||
|
|
@ -160,7 +175,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
relation.setServiceStatus(toStatus);
|
||||
}
|
||||
}
|
||||
relation.setService(ru.spcex.platform.enumeration.Service.MKR.getKey()); // MKR
|
||||
relation.setService(MKR.getKey()); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
relation.setComment(req.getComment());
|
||||
|
||||
|
|
@ -176,7 +191,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
|| ClearingCategory.I.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.V.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
svc = ru.spcex.platform.enumeration.Service.MKR.getKey();
|
||||
svc = MKR.getKey();
|
||||
} else if (ClearingCategory.C.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.F.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
|
|
@ -265,21 +280,46 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
// --- internal API ---
|
||||
|
||||
protected void createNewRelation(ImdgTransaction transaction, Company company) {
|
||||
protected void createNewRelation(ImdgTransaction transaction, Long companyId) {
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation relation = new Relation();
|
||||
// relation.setId(idSequence.nextId());
|
||||
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getSingleObjectByFieldValues(Map.of("id", companyId));
|
||||
ClearingMemberCategory clearingMemberCategory = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class).getSingleObjectByFieldValues(Map.of("companyId", companyId));
|
||||
|
||||
WorkflowStatus workflowStatus = getEnumByKey(WorkflowStatus.class, company.getWorkflowStatus());
|
||||
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
||||
String serviceStatus;
|
||||
switch (Objects.requireNonNull(clearingCategory)){
|
||||
case B:
|
||||
case I:
|
||||
case V:
|
||||
serviceStatus = MKR.getKey();
|
||||
break;
|
||||
case C:
|
||||
case F:
|
||||
serviceStatus = FOND.getKey();
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Illegal state of clearingCategory");
|
||||
}
|
||||
|
||||
relation.setCreated(Instant.now());
|
||||
relation.setUpdated(relation.getCreated());
|
||||
|
||||
relation.setConsumerId(company.getId());
|
||||
relation.setConsumerId(companyId);
|
||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
||||
relation.setServiceStatus(WorkflowStatus.Active.getKey());
|
||||
relation.setService(ru.spcex.platform.enumeration.Service.MKR.getKey()); // MKR
|
||||
relation.setServiceStatus(Objects.requireNonNull(workflowStatus).getKey());
|
||||
relation.setService(serviceStatus);
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
log.debug("New Relation[{}] created.", relation.getId());
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
relationMap.insert(relation);
|
||||
}
|
||||
protected void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation relation = relationMap.getSingleObjectByFieldValues(Map.of("consumerId", companyId));
|
||||
relation.setServiceStatus(CLOS.getKey());
|
||||
relationMap.update(relation);
|
||||
log.debug("New Relation[{}] updated.", relation.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param company
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue