CouponPeriodService: fix new/update request
This commit is contained in:
parent
0cbbe2a05b
commit
17ca798fef
5 changed files with 96 additions and 18 deletions
|
|
@ -66,6 +66,8 @@ public class CouponPeriodService extends QueueConsumer implements InitializingBe
|
|||
CouponPeriod couponPeriod = new CouponPeriod();
|
||||
couponPeriod.setId(idGenerator.nextId());
|
||||
couponPeriod.setSecurityId(req.getSecurityId());
|
||||
couponPeriod.setCouponRate(req.getCouponRate());
|
||||
couponPeriod.setNumber(req.getNumber());
|
||||
couponPeriod.setPeriodEndDate(req.getPeriodEndDate());
|
||||
couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
||||
couponPeriodImdg.insert(couponPeriod);
|
||||
|
|
@ -80,9 +82,11 @@ public class CouponPeriodService extends QueueConsumer implements InitializingBe
|
|||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.couponPeriodUpdateValidator());
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
|
||||
CouponPeriod couponPeriod = couponPeriodImdg.getSingleObjectBySQL(String.format("securityId = %s", req.getSecurityId()));
|
||||
couponPeriod.setPeriodEndDate(req.getPeriodEndDate());
|
||||
couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
||||
CouponPeriod couponPeriod = couponPeriodImdg.getSingleObjectByID(req.getId());
|
||||
if (req.getCouponRate() != null) couponPeriod.setCouponRate(req.getCouponRate());
|
||||
if (req.getNumber() != null) couponPeriod.setNumber(req.getNumber());
|
||||
if (req.getPeriodEndDate() != null) couponPeriod.setPeriodEndDate(req.getPeriodEndDate());
|
||||
if (req.getPeriodStartDate() != null) couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
||||
couponPeriodImdg.update(couponPeriod);
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
|
|||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||
import ru.spcex.clearing.securities.validation.rule.*;
|
||||
import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule;
|
||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -264,7 +265,13 @@ public class ValidationProvider {
|
|||
CouponPeriodNewRequest::getPeriodEndDate,
|
||||
SecuritiesError.RequiredFieldIsEmpty,
|
||||
SecuritiesError.WrongFieldValue, false),
|
||||
CouponPeriodNewValidationRule.CouponPeriodNotExists
|
||||
CouponPeriodNewValidationRule.CouponPeriodNotExists,
|
||||
FieldRequiredRule.instance("couponRate",
|
||||
CouponPeriodNewRequest::getCouponRate,
|
||||
SecuritiesError.RequiredFieldIsEmpty),
|
||||
FieldRequiredRule.instance("number",
|
||||
CouponPeriodNewRequest::getNumber,
|
||||
SecuritiesError.RequiredFieldIsEmpty)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import ru.spcex.clearing.securities.service.cud.CouponPeriodService;
|
|||
import ru.spcex.clearing.securities.utils.MatcherFactory;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static ru.spcex.clearing.securities.utils.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
|
|
@ -46,10 +47,14 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
currencyPrediction.setSecurityId(securityId);
|
||||
currencyPrediction.setPeriodEndDate(LocalDate.now());
|
||||
currencyPrediction.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
currencyPrediction.setCouponRate(BigDecimal.TEN);
|
||||
currencyPrediction.setNumber(Long.MAX_VALUE);
|
||||
final CouponPeriodNewRequest request = new CouponPeriodNewRequest();
|
||||
request.setSecurityId(securityId);
|
||||
request.setPeriodEndDate(LocalDate.now());
|
||||
request.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
request.setCouponRate(BigDecimal.TEN);
|
||||
request.setNumber(Long.MAX_VALUE);
|
||||
|
||||
|
||||
//ACT
|
||||
|
|
@ -74,27 +79,43 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
public void testUpdateCurrency() {
|
||||
clearAllInImdg(couponPeriodImdg);
|
||||
final String TOPIC = Consts.DESTINATION_COUPON_PERIOD_UPDATE;
|
||||
final CouponPeriod currencyPrediction = new CouponPeriod();
|
||||
currencyPrediction.setSecurityId(securityId);
|
||||
currencyPrediction.setPeriodEndDate(LocalDate.ofEpochDay(0));
|
||||
currencyPrediction.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
couponPeriodImdg.insert(currencyPrediction);
|
||||
final CouponPeriodNewRequest request = new CouponPeriodNewRequest();
|
||||
currencyPrediction.setPeriodEndDate(LocalDate.now());
|
||||
final CouponPeriod existCouponPeriod = new CouponPeriod();
|
||||
existCouponPeriod.setSecurityId(securityId);
|
||||
existCouponPeriod.setCouponRate(BigDecimal.ZERO);
|
||||
existCouponPeriod.setNumber(Long.MIN_VALUE);
|
||||
existCouponPeriod.setPeriodEndDate(LocalDate.ofEpochDay(0));
|
||||
existCouponPeriod.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
Long id = couponPeriodImdg.insert(existCouponPeriod);
|
||||
|
||||
LocalDate testStartDate = LocalDate.now();
|
||||
LocalDate testEndDate = LocalDate.now().minusDays(10);
|
||||
|
||||
final CouponPeriod predictableCoupon = new CouponPeriod();
|
||||
predictableCoupon.setSecurityId(securityId);
|
||||
predictableCoupon.setCouponRate(BigDecimal.TEN);
|
||||
predictableCoupon.setNumber(Long.MAX_VALUE);
|
||||
predictableCoupon.setPeriodEndDate(testStartDate);
|
||||
predictableCoupon.setPeriodStartDate(testEndDate);
|
||||
|
||||
final CouponPeriodUpdateRequest request = new CouponPeriodUpdateRequest();
|
||||
predictableCoupon.setPeriodEndDate(LocalDate.now());
|
||||
request.setId(id);
|
||||
request.setCouponRate(BigDecimal.TEN);
|
||||
request.setNumber(Long.MAX_VALUE);
|
||||
request.setSecurityId(securityId);
|
||||
request.setPeriodEndDate(LocalDate.now());
|
||||
request.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
request.setPeriodEndDate(testStartDate);
|
||||
request.setPeriodStartDate(testEndDate);
|
||||
|
||||
//ACT
|
||||
String jsonString = getJsonStringForUPDATE(request, ID);
|
||||
String jsonString = getJsonStringForUPDATE(request, id);
|
||||
|
||||
addRecordToKafka((MockConsumer) couponPeriodService.getConsumer(), TOPIC, PARTITION, 0, jsonString);
|
||||
|
||||
//ASSERT
|
||||
waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord);
|
||||
waitingWhenAddedRecordAndCheckIt(id, mockProducer, producerRecord);
|
||||
|
||||
CouponPeriod result = couponPeriodImdg.getSingleObjectBySQL(String.format("securityId = %s", currencyPrediction.getSecurityId()));
|
||||
currencyPrediction.setId(result.getId());
|
||||
COUPON_PERIOD_MATCHER.assertMatch(result, currencyPrediction);
|
||||
CouponPeriod result = couponPeriodImdg.getSingleObjectBySQL(String.format("securityId = %s", predictableCoupon.getSecurityId()));
|
||||
predictableCoupon.setId(result.getId());
|
||||
COUPON_PERIOD_MATCHER.assertMatch(result, predictableCoupon);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,15 +3,22 @@ package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
|||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class CouponPeriodNewRequest {
|
||||
@JsonProperty
|
||||
public Long securityId;
|
||||
@JsonProperty
|
||||
@JsonDeserialize(using = NumberDeserializers.BigDecimalDeserializer.class)
|
||||
public BigDecimal couponRate;
|
||||
@JsonProperty
|
||||
public Long number;
|
||||
@JsonProperty
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
public LocalDate periodEndDate;
|
||||
|
|
@ -43,4 +50,20 @@ public class CouponPeriodNewRequest {
|
|||
public void setPeriodStartDate(LocalDate periodStartDate) {
|
||||
this.periodStartDate = periodStartDate;
|
||||
}
|
||||
|
||||
public BigDecimal getCouponRate() {
|
||||
return couponRate;
|
||||
}
|
||||
|
||||
public void setCouponRate(BigDecimal couponRate) {
|
||||
this.couponRate = couponRate;
|
||||
}
|
||||
|
||||
public Long getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(Long number) {
|
||||
this.number = number;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@ package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
|||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.deser.std.NumberDeserializers;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
public class CouponPeriodUpdateRequest implements WithId {
|
||||
|
|
@ -15,6 +17,11 @@ public class CouponPeriodUpdateRequest implements WithId {
|
|||
@JsonProperty
|
||||
public Long securityId;
|
||||
@JsonProperty
|
||||
@JsonDeserialize(using = NumberDeserializers.BigDecimalDeserializer.class)
|
||||
public BigDecimal couponRate;
|
||||
@JsonProperty
|
||||
public Long number;
|
||||
@JsonProperty
|
||||
@JsonSerialize(using = LocalDateSerializer.class)
|
||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||
public LocalDate periodEndDate;
|
||||
|
|
@ -56,4 +63,20 @@ public class CouponPeriodUpdateRequest implements WithId {
|
|||
public void setPeriodStartDate(LocalDate periodStartDate) {
|
||||
this.periodStartDate = periodStartDate;
|
||||
}
|
||||
|
||||
public BigDecimal getCouponRate() {
|
||||
return couponRate;
|
||||
}
|
||||
|
||||
public void setCouponRate(BigDecimal couponRate) {
|
||||
this.couponRate = couponRate;
|
||||
}
|
||||
|
||||
public Long getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public void setNumber(Long number) {
|
||||
this.number = number;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue