ClearingAccountUpdateRequest, update clearing account, fix some names

This commit is contained in:
akulikov 2023-05-02 12:39:40 +03:00
parent 441546dd18
commit 32d95c175f
10 changed files with 119 additions and 39 deletions

View file

@ -143,13 +143,13 @@ public class BankAccountValidationConfig {
}; };
} }
@Bean("bankAccountDeleteRequestValidator") @Bean("bankAccountBlockRequestValidator")
public Function<CommonDeleteRequest, IValidator> bankAccountDeleteRequestValidator( public Function<CommonDeleteRequest, IValidator> bankAccountBlockRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) { ) {
return bankAccountDeleteRequest -> { return bankAccountBlockRequest -> {
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>(); ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(bankAccountDeleteRequest); context.setValidatedObject(bankAccountBlockRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_BankAccount); addImdg.accept(IMDGDistributedNames.Map_BankAccount);
addImdg.accept(IMDGDistributedNames.Map_Account); addImdg.accept(IMDGDistributedNames.Map_Account);

View file

@ -84,13 +84,6 @@ public class ClearingAccountValidationConfig {
addImdg.accept(IMDGDistributedNames.Map_Company); addImdg.accept(IMDGDistributedNames.Map_Company);
addImdg.accept(IMDGDistributedNames.Map_ClearingAccount); addImdg.accept(IMDGDistributedNames.Map_ClearingAccount);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
IdPresentRule.instance("companyId",
ClearingAccountUpdateRequest::getCompanyId,
IMDGDistributedNames.Map_Company,
Company.class,
AccountError.RequiredFieldEmpty,
AccountError.CompanyNotFound,
company -> !WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? AccountError.CompanyNotActive : null),
FieldRequiredRule.instance("account", FieldRequiredRule.instance("account",
ClearingAccountUpdateRequest::getAccount, ClearingAccountUpdateRequest::getAccount,
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
@ -108,6 +101,24 @@ public class ClearingAccountValidationConfig {
Collection<Account> accounts = accountImdg.getCollectionObjectsByPredicate(finalPredicate); Collection<Account> accounts = accountImdg.getCollectionObjectsByPredicate(finalPredicate);
if (accounts.isEmpty()) return AccountError.AccountNotFound; if (accounts.isEmpty()) return AccountError.AccountNotFound;
return null; return null;
}),
FieldRequiredRule.instance("status",
ClearingAccountUpdateRequest::getStatus,
AccountError.RequiredFieldEmpty,
statusValue -> {
if (statusValue == 0 || statusValue == 1 || statusValue == 2) return null;
return AccountError.WrongFieldValue;
}),
FieldRequiredRule.instance("deal",
ClearingAccountUpdateRequest::getDeal,
AccountError.RequiredFieldEmpty,
dealValue -> {
Imdg<Company> companyImdg = context.obtainMap(
IMDGDistributedNames.Map_Company, Company.class
);
Company company = companyImdg.getSingleObjectByFieldValues(Map.of("tradingCode", dealValue));
if (company == null) return AccountError.WrongFieldValue;
return null;
}) })
); );
}; };

View file

@ -25,7 +25,6 @@ import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.imdg.api.ImdgTransaction;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import java.time.Instant; import java.time.Instant;
@ -45,13 +44,12 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
private final Function<BankAccountNewRequest, IValidator> bankAccountNewRequestValidator; private final Function<BankAccountNewRequest, IValidator> bankAccountNewRequestValidator;
private final Function<BankAccountUpdateRequest, IValidator> bankAccountUpdateRequestValidator; private final Function<BankAccountUpdateRequest, IValidator> bankAccountUpdateRequestValidator;
private final Function<CommonDeleteRequest, IValidator> bankAccountDeleteRequestValidator; private final Function<CommonDeleteRequest, IValidator> bankAccountBlockRequestValidator;
@Autowired @Autowired
public BankAccountService(Consumer<String, Object> kafkaQueue, public BankAccountService(Consumer<String, Object> kafkaQueue,
Producer<String, Object> kafkaProducer, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider, ImdgProvider imdgProvider,
IMessageResolver messageResolver,
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
ValidationHelper validationHelper, ValidationHelper validationHelper,
AccountService accountService, AccountService accountService,
@ -59,8 +57,8 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
Function<BankAccountNewRequest, IValidator> bankAccountNewRequestValidator, Function<BankAccountNewRequest, IValidator> bankAccountNewRequestValidator,
@Qualifier("bankAccountUpdateRequestValidator") @Qualifier("bankAccountUpdateRequestValidator")
Function<BankAccountUpdateRequest, IValidator> bankAccountUpdateRequestValidator, Function<BankAccountUpdateRequest, IValidator> bankAccountUpdateRequestValidator,
@Qualifier("bankAccountDeleteRequestValidator") @Qualifier("bankAccountBlockRequestValidator")
Function<CommonDeleteRequest, IValidator> bankAccountDeleteRequestValidator) { Function<CommonDeleteRequest, IValidator> bankAccountBlockRequestValidator) {
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);
this.bankAccountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_BankAccount, BankAccount.class); this.bankAccountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_BankAccount, BankAccount.class);
this.accountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.accountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
@ -70,7 +68,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
this.accountService = accountService; this.accountService = accountService;
this.bankAccountNewRequestValidator = bankAccountNewRequestValidator; this.bankAccountNewRequestValidator = bankAccountNewRequestValidator;
this.bankAccountUpdateRequestValidator = bankAccountUpdateRequestValidator; this.bankAccountUpdateRequestValidator = bankAccountUpdateRequestValidator;
this.bankAccountDeleteRequestValidator = bankAccountDeleteRequestValidator; this.bankAccountBlockRequestValidator = bankAccountBlockRequestValidator;
} }
@Override @Override
@ -82,8 +80,8 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
.setFunction(this::bankAccountUpdate) .setFunction(this::bankAccountUpdate)
.forDestination(Consts.DESTINATION_BANK_ACCOUNT_UPDATE, callbacks::put); .forDestination(Consts.DESTINATION_BANK_ACCOUNT_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class) callback(CommonDeleteRequest.class)
.setFunction(this::bankAccountDelete) .setFunction(this::bankAccountBlock)
.forDestination(Consts.DESTINATION_BANK_ACCOUNT_DELETE, callbacks::put); .forDestination(Consts.DESTINATION_BANK_ACCOUNT_BLOCK, callbacks::put);
init(); init();
} }
@ -139,7 +137,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
log.debug("successfully processed, new bank account id {}, account id {}", bankAccountId, accountId); log.debug("successfully processed, new bank account id {}, account id {}", bankAccountId, accountId);
} else { } else {
// todo выяснить, что возвращать из метода в этой ситуации // todo выяснить, что возвращать из метода в этой ситуации
log.debug("failed insert, new bank account id {}, new account id {} (if id = -1, insert is failed)", log.debug("failed insert, new bank account id {}, new account id {} (if id = -1 then insert is failed)",
bankAccountId, bankAccountId,
accountId); accountId);
imdgTransaction.rollbackTransaction(); imdgTransaction.rollbackTransaction();
@ -173,19 +171,38 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
account.setAccount(req.account); account.setAccount(req.account);
account.setUpdated(Instant.now()); account.setUpdated(Instant.now());
accountMap.update(account); ImdgTransaction imdgTransaction = imdgProvider.newTransaction();
bankAccountMap.update(bankAccount); boolean txOk = false;
imdgTransaction.beginTransaction();
try {
accountMap.update(account);
bankAccountMap.update(bankAccount);
txOk = true;
} finally {
if (txOk) {
imdgTransaction.commitTransaction();
log.debug("successfully processed, new bank account id {}, account id {}",
bankAccount.getId(),
account.getId());
} else {
// todo выяснить, что возвращать из метода в этой ситуации
log.debug("failed update, bank account id {}, new account id {}",
bankAccount.getId(),
account.getId());
imdgTransaction.rollbackTransaction();
}
}
log.debug("successfully update, existing bankAccount with id {}", bankAccount.getId()); log.debug("successfully update, existing bankAccount with id {}", bankAccount.getId());
return null; return null;
} }
private RequestInfoUpdate bankAccountDelete(BaseRequest<CommonDeleteRequest> userRequest) { private RequestInfoUpdate bankAccountBlock(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload(); CommonDeleteRequest req = userRequest.getRequestPayload();
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return requestInfoUpdate; if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, bankAccountDeleteRequestValidator); requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, bankAccountBlockRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate; if (requestInfoUpdate != null) return requestInfoUpdate;
log.debug("CommonDeleteRequest received id = {}", req.getId()); log.debug("CommonDeleteRequest received id = {}", req.getId());
@ -194,10 +211,29 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
Account account = accountMap.getSingleObjectByID(bankAccount.getAccountId()); Account account = accountMap.getSingleObjectByID(bankAccount.getAccountId());
account.setStatus(AccountStatus.BLOCKED.getKey()); account.setStatus(AccountStatus.BLOCKED.getKey());
account.setUpdated(Instant.now()); account.setUpdated(Instant.now());
accountMap.update(account); ImdgTransaction imdgTransaction = imdgProvider.newTransaction();
bankAccountMap.delete(bankAccount); boolean txOk = false;
log.debug("successfully delete, existing bankAccount with id {}", bankAccount.getId()); imdgTransaction.beginTransaction();
try {
accountMap.update(account);
bankAccountMap.delete(bankAccount);
txOk = true;
} finally {
if (txOk) {
imdgTransaction.commitTransaction();
log.debug("successfully processed, new bank account id {}, account id {}",
bankAccount.getId(),
account.getId());
} else {
// todo выяснить, что возвращать из метода в этой ситуации
log.debug("failed block, bank account id {}, new account id {}",
bankAccount.getId(),
account.getId());
imdgTransaction.rollbackTransaction();
}
}
log.debug("successfully block, existing bankAccount with id {}", bankAccount.getId());
return null; return null;
} }

View file

@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.ClearingAccount; import ru.clearing.classes.statics.data.account.ClearingAccount;
import ru.spcex.clearing.account.errors.AccountError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
@ -17,6 +18,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.account.ClearingAccountNe
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClearingAccountUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClearingAccountUpdateRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.AccountStatus; import ru.spcex.platform.enumeration.AccountStatus;
import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.AccountType;
@ -25,6 +27,8 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.imdg.api.ImdgTransaction;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
import java.time.Instant; import java.time.Instant;
@ -39,6 +43,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
private final ImdgProvider imdgProvider; private final ImdgProvider imdgProvider;
private final Imdg<Account> accountImdg; private final Imdg<Account> accountImdg;
private final Imdg<ClearingAccount> clearingAccountImdg; private final Imdg<ClearingAccount> clearingAccountImdg;
private final IMessageResolver messageResolver;
private final Function<ClearingAccountNewRequest, IValidator> clearingAccountNewRequestValidator; private final Function<ClearingAccountNewRequest, IValidator> clearingAccountNewRequestValidator;
private final Function<ClearingAccountUpdateRequest, IValidator> clearingAccountUpdateRequestValidator; private final Function<ClearingAccountUpdateRequest, IValidator> clearingAccountUpdateRequestValidator;
@ -48,6 +53,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
AccountService accountService, AccountService accountService,
ValidationHelper validationHelper, ValidationHelper validationHelper,
ImdgProvider imdgProvider, ImdgProvider imdgProvider,
IMessageResolver messageResolver,
@Qualifier("clearingAccountNewRequestValidator") @Qualifier("clearingAccountNewRequestValidator")
Function<ClearingAccountNewRequest, IValidator> clearingAccountNewRequestValidator, Function<ClearingAccountNewRequest, IValidator> clearingAccountNewRequestValidator,
@Qualifier("clearingAccountUpdateRequestValidator") @Qualifier("clearingAccountUpdateRequestValidator")
@ -58,6 +64,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class); this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
this.messageResolver = messageResolver;
this.clearingAccountNewRequestValidator = clearingAccountNewRequestValidator; this.clearingAccountNewRequestValidator = clearingAccountNewRequestValidator;
this.clearingAccountUpdateRequestValidator = clearingAccountUpdateRequestValidator; this.clearingAccountUpdateRequestValidator = clearingAccountUpdateRequestValidator;
} }
@ -111,7 +118,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
log.debug("successfully processed, new clearing account id {}, account id {}", clearingAccountId, accountId); log.debug("successfully processed, new clearing account id {}, account id {}", clearingAccountId, accountId);
} else { } else {
// todo выяснить, что возвращать из метода в этой ситуации // todo выяснить, что возвращать из метода в этой ситуации
log.debug("failed insert, new clearing account id {}, new account id {} (if id = -1, insert is failed)", log.debug("failed insert, new clearing account id {}, new account id {} (if id = -1 then insert is failed)",
clearingAccountId, clearingAccountId,
accountId); accountId);
imdgTransaction.rollbackTransaction(); imdgTransaction.rollbackTransaction();
@ -134,10 +141,26 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
ImdgPredicate finalPredicate = pb.and(accountValuePredicate, ImdgPredicate finalPredicate = pb.and(accountValuePredicate,
accountStatusPredicate, accountStatusPredicate,
accountTypePredicate); accountTypePredicate);
Account account = accountImdg.getCollectionObjectsByPredicate(finalPredicate).iterator().next(); Account account = accountImdg.getCollectionObjectsByPredicate(finalPredicate).iterator().next();
Long accountId = account.getId(); Long accountId = account.getId();
ClearingAccount clearingAccount = clearingAccountImdg.getSingleObjectByFieldValues(Map.of("accountId", accountId)); ClearingAccount clearingAccount = clearingAccountImdg.getSingleObjectByFieldValues(Map.of("accountId", accountId));
if (clearingAccount == null) {
String errMsg = messageResolver.resolve(new EnumMessage(AccountError.AccountNotFound, account.getAccount()));
return new RequestInfoUpdate()
.setId(userRequest.getId())
.setStatus(Status.Error)
.setMessage(errMsg);
}
Integer statusValue = req.getStatus();
if (statusValue == 0) account.setStatus(AccountStatus.BLOCKED.getKey());
else if (statusValue == 1) account.setStatus(AccountStatus.ACTIVE.getKey());
else if (statusValue == 2) account.setStatus(AccountStatus.CLOSE.getKey());
account.setUpdated(Instant.now());
accountImdg.update(account);
return null; return null;
} }

View file

@ -136,7 +136,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali
accountId); accountId);
} else { } else {
// todo выяснить, что возвращать из метода в этой ситуации // todo выяснить, что возвращать из метода в этой ситуации
log.debug("failed insert, new information account id {}, new account id {} (if id = -1, insert is failed)", log.debug("failed insert, new information account id {}, new account id {} (if id = -1 then insert is failed)",
informationAccountId, informationAccountId,
accountId); accountId);
imdgTransaction.rollbackTransaction(); imdgTransaction.rollbackTransaction();

View file

@ -68,7 +68,7 @@ public class BankAccountServiceTest {
private static final int PARTITION = 0; private static final int PARTITION = 0;
private static final String TOPIC_ACCOUNT_NEW = Consts.DESTINATION_BANK_ACCOUNT_NEW; private static final String TOPIC_ACCOUNT_NEW = Consts.DESTINATION_BANK_ACCOUNT_NEW;
private static final String TOPIC_ACCOUNT_UPDATE = Consts.DESTINATION_BANK_ACCOUNT_UPDATE; private static final String TOPIC_ACCOUNT_UPDATE = Consts.DESTINATION_BANK_ACCOUNT_UPDATE;
private static final String TOPIC_ACCOUNT_DELETE = Consts.DESTINATION_BANK_ACCOUNT_DELETE; private static final String TOPIC_ACCOUNT_DELETE = Consts.DESTINATION_BANK_ACCOUNT_BLOCK;
private static final Long ID = 0L; private static final Long ID = 0L;
private static final AtomicInteger countRun = new AtomicInteger(1); private static final AtomicInteger countRun = new AtomicInteger(1);
private static final Long accountId = 12L; private static final Long accountId = 12L;

View file

@ -69,7 +69,7 @@ public class BankAccountController extends AbstractQueueController {
@PathVariable("id") Long id) throws ExecutionException, InterruptedException { @PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction(); CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id); deleteAction.setId(id);
return processRequest(Consts.DESTINATION_BANK_ACCOUNT_DELETE, deleteAction); return processRequest(Consts.DESTINATION_BANK_ACCOUNT_BLOCK, deleteAction);
} }
@ApiOperation(value = "get bank account.") @ApiOperation(value = "get bank account.")

View file

@ -134,7 +134,7 @@ class BankAccountControllerTest extends AbstractControllerTest {
deleteAction.setId(id); deleteAction.setId(id);
//ACT and ASSERT //ACT and ASSERT
checkDeletingByRestApi(REST_URL, id); checkDeletingByRestApi(REST_URL, id);
checkSendedMessegeFromKafka(Consts.DESTINATION_BANK_ACCOUNT_DELETE, deleteAction); checkSendedMessegeFromKafka(Consts.DESTINATION_BANK_ACCOUNT_BLOCK, deleteAction);
} }
/** /**

View file

@ -63,7 +63,7 @@ public interface Consts {
String DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE = "correspondent-account-update"; String DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE = "correspondent-account-update";
String DESTINATION_CORRESPONDENT_ACCOUNT_BLOCK = "correspondent-account-block"; String DESTINATION_CORRESPONDENT_ACCOUNT_BLOCK = "correspondent-account-block";
String DESTINATION_BANK_ACCOUNT_DELETE = "bank-account-delete"; String DESTINATION_BANK_ACCOUNT_BLOCK = "bank-account-block";
String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update"; String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update";
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";

View file

@ -7,8 +7,10 @@ public class ClearingAccountUpdateRequest {
public String account; public String account;
@JsonProperty @JsonProperty
public Long companyId; public Integer status;
@JsonProperty
public String deal;
public String getAccount() { public String getAccount() {
return account; return account;
@ -18,11 +20,19 @@ public class ClearingAccountUpdateRequest {
this.account = account; this.account = account;
} }
public Long getCompanyId() { public Integer getStatus() {
return companyId; return status;
} }
public void setCompanyId(Long companyId) { public void setStatus(Integer status) {
this.companyId = companyId; this.status = status;
}
public String getDeal() {
return deal;
}
public void setDeal(String deal) {
this.deal = deal;
} }
} }