company-service: refactoring CompanyService
This commit is contained in:
parent
dec7f44e48
commit
c53374be1e
4 changed files with 81 additions and 71 deletions
|
|
@ -22,11 +22,13 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
|||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
// private final Imdg<CompanyInfo> companyInfoMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
protected final CompanyService companyService;
|
||||
|
||||
@Autowired
|
||||
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider) {
|
||||
ImdgProvider imdgProvider, CompanyService companyService) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.companyService = companyService;
|
||||
// this.companyInfoMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyInfo, CompanyInfo.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
}
|
||||
|
|
@ -42,23 +44,25 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
|||
public void companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> userRequest) {
|
||||
CompanyInfoUpdateRequest req = userRequest.getRequestPayload();
|
||||
log.debug("CompanyInfoUpdateRequest received");
|
||||
synchronized (companyService) {
|
||||
// CompanyInfo companyInfo = companyInfoMap.getSingleObjectByID(req.getId());
|
||||
Company company = companyMap.getSingleObjectByID(req.getId());
|
||||
CompanyInfo companyInfo = company == null ? null : company.getProfile();
|
||||
Company company = companyMap.getSingleObjectByID(req.getId());
|
||||
CompanyInfo companyInfo = company == null ? null : company.getProfile();
|
||||
|
||||
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||
companyInfo.setCountryCode(req.getCountryCode());
|
||||
companyInfo.setDescription(req.getDescription());
|
||||
companyInfo.setProfessionalSign(req.getProfessionalSign());
|
||||
companyInfo.setLegalKind(req.getLegalKind());
|
||||
companyInfo.setOrganizationType(req.getOrganizationType());
|
||||
companyInfo.setResidence(req.getResidence());
|
||||
companyInfo.setShortNameEng(req.getShortNameEng());
|
||||
companyInfo.setFullNameEng(req.getFullNameEng());
|
||||
companyInfo.setShortName(req.getShortName());
|
||||
companyInfo.setFullName(req.getFullName());
|
||||
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||
companyInfo.setCountryCode(req.getCountryCode());
|
||||
companyInfo.setDescription(req.getDescription());
|
||||
companyInfo.setProfessionalSign(req.getProfessionalSign());
|
||||
companyInfo.setLegalKind(req.getLegalKind());
|
||||
companyInfo.setOrganizationType(req.getOrganizationType());
|
||||
companyInfo.setResidence(req.getResidence());
|
||||
companyInfo.setShortNameEng(req.getShortNameEng());
|
||||
companyInfo.setFullNameEng(req.getFullNameEng());
|
||||
companyInfo.setShortName(req.getShortName());
|
||||
companyInfo.setFullName(req.getFullName());
|
||||
// companyInfoMap.update(companyInfo);
|
||||
companyMap.update(company);
|
||||
log.debug("successfully processed, id {}", companyInfo.getId());
|
||||
companyMap.update(company);
|
||||
log.debug("successfully processed, id {}", companyInfo.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ import java.util.function.Function;
|
|||
|
||||
@Service
|
||||
public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||
protected static final Long SPVB_ID = 1L; // СПВБ
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final RequestHelper requestHelper;
|
||||
private final Imdg<Company> companyMap;
|
||||
|
|
@ -52,6 +54,8 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
private Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
||||
private Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
||||
|
||||
protected CompanySymbolService companySymbolService;
|
||||
|
||||
@Autowired
|
||||
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
|
|
@ -63,7 +67,9 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
@Qualifier("companyUpdateRequestValidator")
|
||||
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
||||
@Qualifier("CompanyDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator
|
||||
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
||||
|
||||
CompanySymbolService companySymbolService
|
||||
) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.messageResolver = messageResolver;
|
||||
|
|
@ -77,6 +83,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
this.companyNewRequestValidator = companyNewRequestValidator;
|
||||
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
||||
this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
||||
this.companySymbolService = companySymbolService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -122,32 +129,22 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
company.setFullName(req.getFullName());
|
||||
|
||||
if (req.getCompanySymbol() != null) {
|
||||
CompanySymbols newSymbol = createCompanySymbol(company, req);
|
||||
CompanySymbols newSymbol = companySymbolService.createCompanySymbol(company.getId(), req.getCompanySymbol(), req.getCompanySymbolValue());
|
||||
updateCompanyBySymbol(company, newSymbol);
|
||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
||||
companySymnbolsMap.insert(newSymbol);
|
||||
}
|
||||
|
||||
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
company.setWorkflowStatus(req.getWorkflowStatus());
|
||||
|
||||
companyMap.insert(company);
|
||||
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||
companyNewRequestBaseRequest.getId(), company.getId());
|
||||
createNewRelation(company);
|
||||
|
||||
if (!(WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()))) { // Block
|
||||
onChangeWorkflowStatus(company, null, company.getWorkflowStatus());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected CompanySymbols createCompanySymbol(Company forCompany, CompanyNewRequest request) {
|
||||
//todo see CompanySymbolService
|
||||
CompanySymbols newSymbol = new CompanySymbols();
|
||||
newSymbol.setId(idSequence.nextId());
|
||||
newSymbol.setCompanyId(forCompany.getId());
|
||||
newSymbol.setCompanySymbol(request.getCompanySymbol());
|
||||
newSymbol.setCompanySymbolValue(request.getCompanySymbolValue());
|
||||
return newSymbol;
|
||||
}
|
||||
|
||||
|
||||
private synchronized RequestInfoUpdate updateCompany(BaseRequest<CompanyNewRequest /* todo type CompanyUpdateRequest*/> companyUpdateRequestBaseRequest) throws ValidationException {
|
||||
CompanyNewRequest updateRequest = companyUpdateRequestBaseRequest.getRequestPayload();
|
||||
|
|
@ -173,26 +170,20 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
||||
log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
||||
}
|
||||
CompanySymbols companySymbol = companySymnbolsMap.getSingleObjectByFieldValues(Map.of("companyId", company.getId()));
|
||||
if (companySymbol == null) {
|
||||
log.warn("CompanySymbols not found for companyId={}", company.getId());
|
||||
// CompanySymbols не обновляем
|
||||
|
||||
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
if (updateRequest.getWorkflowStatus() != null) {
|
||||
company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
onChangeWorkflowStatus(company, prevStatus, company.getWorkflowStatus());
|
||||
} else {
|
||||
log.trace("Status was not changed");
|
||||
}
|
||||
} else {
|
||||
log.trace("Found CompanySymbols.id={} for companyId={}", companySymbol.getId(), company.getId());
|
||||
updateCompanyBySymbol(company, companySymbol);
|
||||
log.trace("Null new WorkflowStatus");
|
||||
}
|
||||
|
||||
|
||||
// String prevStatus = company.getWorkflowStatus();
|
||||
// if (updateRequest.getWorkflowStatus() != null) {
|
||||
// company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||
// if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||
// onChangeWorkflowStatus(company, prevStatus, company.getWorkflowStatus());
|
||||
// } else {
|
||||
// log.trace("Status was not changed");
|
||||
// }
|
||||
// } else {
|
||||
// log.trace("Null new WorkflowStatus");
|
||||
// }
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -215,10 +206,12 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
}
|
||||
|
||||
protected void kafkaSentAccountNotification(Company aboutBlockCompany) {
|
||||
log.debug("Send message to kafka...");
|
||||
//todo message to queue
|
||||
}
|
||||
|
||||
protected static final Long SPVB_ID = 1L; // СПВБ
|
||||
|
||||
private void createNewRelation(Company company) {
|
||||
protected void createNewRelation(Company company) {
|
||||
Relation relation = new Relation();
|
||||
relation.setId(idSequence.nextId());
|
||||
relation.setCreated(Instant.now());
|
||||
|
|
@ -230,7 +223,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
relation.setService(ru.spcex.platform.enumeration.Service.MKR.getKey()); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
log.debug("New Relation[{}] created.", relation.getId());
|
||||
relationMap.insert(relation); // todo use transaction!
|
||||
relationMap.insert(relation);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -239,7 +232,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
* @param newStatus WorkflowStatus.Active - при возобналвении; WorkflowStatus.Blocked - при блокировки/расторжении
|
||||
*/
|
||||
private void onChangeWorkflowStatus(Company company, String oldStatus, String newStatus) {
|
||||
//todo в ТЗ упоминается: ри изменении (relation/put): //из соответствующего параметра полученного метода, если значение отличается от сохраненного ране
|
||||
log.debug("Company id={} status changed from {} to {}",
|
||||
company.getId(), oldStatus, company.getWorkflowStatus());
|
||||
assert Objects.equals(newStatus, company.getWorkflowStatus());
|
||||
|
|
@ -267,6 +259,9 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
}
|
||||
|
||||
if (WorkflowStatus.Blocked.equalsByKey(newStatus)) {
|
||||
kafkaSentAccountNotification(company);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -289,10 +284,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
log.warn("Company {} not found", request.getId());
|
||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, request.getId());
|
||||
}
|
||||
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||
// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, request.getId());
|
||||
// }
|
||||
|
||||
company.setUpdated(Instant.now());
|
||||
|
||||
|
|
@ -306,11 +297,10 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
String prevStatus = company.getWorkflowStatus();
|
||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
onChangeWorkflowStatus(company, prevStatus, company.getWorkflowStatus());
|
||||
log.debug("Update company.id={}", company.getId());
|
||||
companyMap.update(company);
|
||||
|
||||
// todo kafka send !!! Account.
|
||||
onChangeWorkflowStatus(company, prevStatus, company.getWorkflowStatus());
|
||||
return null;
|
||||
|
||||
// Company company = companyMap.getSingleObjectByID(req.getId());
|
||||
|
|
|
|||
|
|
@ -15,18 +15,23 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
public class CompanySymbolService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<CompanySymbols> companySymbolsMap;
|
||||
private final ImdgId idSequence;
|
||||
|
||||
@Autowired
|
||||
public CompanySymbolService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -47,4 +52,16 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
|
|||
companySymbolsMap.update(companySymbols);
|
||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||
}
|
||||
|
||||
public CompanySymbols createCompanySymbol(Long companyId, String companySymbol, String companySymbolValue) {
|
||||
Objects.requireNonNull(companyId);
|
||||
CompanySymbols newSymbol = new CompanySymbols();
|
||||
newSymbol.setId(idSequence.nextId());
|
||||
newSymbol.setCompanyId(companyId);
|
||||
newSymbol.setCompanySymbol(companySymbol);
|
||||
newSymbol.setCompanySymbolValue(companySymbolValue);
|
||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
||||
companySymbolsMap.insert(newSymbol);
|
||||
return newSymbol;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ public class CompanyNewRequest {
|
|||
private String shortName;
|
||||
@JsonProperty
|
||||
private String fullName;
|
||||
|
||||
@JsonProperty
|
||||
private String companySymbol;
|
||||
@JsonProperty
|
||||
|
|
@ -15,7 +14,7 @@ public class CompanyNewRequest {
|
|||
@JsonProperty
|
||||
private String workflowStatus;
|
||||
|
||||
// for update, todo разобраться, это тот же тип запроса или надо отдельный на update сделать?
|
||||
// for update, это поле может использоваться в gateway-api
|
||||
@JsonProperty
|
||||
private Long id;
|
||||
|
||||
|
|
@ -51,14 +50,6 @@ public class CompanyNewRequest {
|
|||
this.companySymbolValue = companySymbolValue;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getWorkflowStatus() {
|
||||
return workflowStatus;
|
||||
}
|
||||
|
|
@ -66,4 +57,12 @@ public class CompanyNewRequest {
|
|||
public void setWorkflowStatus(String workflowStatus) {
|
||||
this.workflowStatus = workflowStatus;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue