backend-api scheduler-service meta GALB новый паарметр fromTime
This commit is contained in:
parent
1e6eb8fd00
commit
c2bd914e79
8 changed files with 96 additions and 4 deletions
|
|
@ -104,7 +104,7 @@ public class LauncherController extends AbstractQueueController {
|
||||||
if (taskEnum == null) {
|
if (taskEnum == null) {
|
||||||
throw new NotFound404Exception("task dictionary element with code '" + launcherNew.getTask() + "'");
|
throw new NotFound404Exception("task dictionary element with code '" + launcherNew.getTask() + "'");
|
||||||
}
|
}
|
||||||
if (!IEnumKey.contains(taskEnum.getCode(), Task.startOfClearing, Task.dbfExport_OUTV)) {
|
if (!IEnumKey.contains(taskEnum.getCode(), Task.startOfClearing, Task.dbfExport_OUTV, Task.getAllBalance)) {
|
||||||
log.warn(String.format("Task %s not support request with body", taskEnum.getCode()));
|
log.warn(String.format("Task %s not support request with body", taskEnum.getCode()));
|
||||||
} // else В мете эти модели с дополнительными параметрами (OUTV).
|
} // else В мете эти модели с дополнительными параметрами (OUTV).
|
||||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,19 @@ package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||||
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -64,6 +69,12 @@ public class LauncherNew implements IAction<Object> {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long debitLeg_accountId;
|
private Long debitLeg_accountId;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "Время", dataType = "java.lang.String", example = "16:30:00")
|
||||||
|
@JsonSerialize(using = LocalTimeSerializer.class)
|
||||||
|
@JsonDeserialize(using = LocalTimeDeserializer.class)
|
||||||
|
@JsonProperty
|
||||||
|
public LocalTime fromTime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object toRequest() {
|
public Object toRequest() {
|
||||||
LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest();
|
LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest();
|
||||||
|
|
@ -83,6 +94,7 @@ public class LauncherNew implements IAction<Object> {
|
||||||
taskRunnerCommandRequest.setCreditLeg_accountId(creditLeg_accountId);
|
taskRunnerCommandRequest.setCreditLeg_accountId(creditLeg_accountId);
|
||||||
taskRunnerCommandRequest.setAddresseeId(addresseeId);
|
taskRunnerCommandRequest.setAddresseeId(addresseeId);
|
||||||
taskRunnerCommandRequest.setDebitLeg_accountId(debitLeg_accountId);
|
taskRunnerCommandRequest.setDebitLeg_accountId(debitLeg_accountId);
|
||||||
|
taskRunnerCommandRequest.setFromTime(fromTime);
|
||||||
return taskRunnerCommandRequest;
|
return taskRunnerCommandRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -227,4 +239,12 @@ public class LauncherNew implements IAction<Object> {
|
||||||
public void setFullBalance(BigDecimal fullBalance) {
|
public void setFullBalance(BigDecimal fullBalance) {
|
||||||
this.fullBalance = fullBalance;
|
this.fullBalance = fullBalance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LocalTime getFromTime() {
|
||||||
|
return fromTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromTime(LocalTime fromTime) {
|
||||||
|
this.fromTime = fromTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1236,6 +1236,7 @@
|
||||||
<post destination="LOSC" group="Обмен с интеграционными модулями" name="Загрузка инструментов">
|
<post destination="LOSC" group="Обмен с интеграционными модулями" name="Загрузка инструментов">
|
||||||
</post>
|
</post>
|
||||||
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (отправка ДФ-56 для получения ответа ДФ-01, ДФ-57)">
|
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (отправка ДФ-56 для получения ответа ДФ-01, ДФ-57)">
|
||||||
|
<fromTime type="5" name="Время" shortname="Время"/>
|
||||||
</post>
|
</post>
|
||||||
<post destination="OUTV" group="Обмен с расчетной организацией" name="Вывод свободных средств с клирингового регистра (отправка ДФ-54 для получения ответа ДФ-55)">
|
<post destination="OUTV" group="Обмен с расчетной организацией" name="Вывод свободных средств с клирингового регистра (отправка ДФ-54 для получения ответа ДФ-55)">
|
||||||
<fullBalance type="10" name="Текущий баланс (всего)" shortname="Текущие средства (всего)" enabled="false"/>
|
<fullBalance type="10" name="Текущий баланс (всего)" shortname="Текущие средства (всего)" enabled="false"/>
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ 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;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.platform.enumeration.Task;
|
import ru.spcex.platform.enumeration.Task;
|
||||||
|
|
@ -36,14 +37,17 @@ public class Sdf08Service extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
callback(Object.class)
|
callback(LauncherCommandRequest.class)
|
||||||
.setConsumer(this::newSDf08)
|
.setConsumer(this::newSDf08)
|
||||||
.forDestination(Task.getAllBalance.topic(), callbacks::put);
|
.forDestination(Task.getAllBalance.topic(), callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void newSDf08(BaseRequest<Object> userRequest) {
|
private void newSDf08(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||||
log.debug("getAllBalance request received");
|
LauncherCommandRequest req = userRequest.getRequestPayload();
|
||||||
|
log.debug("getAllBalance request received, parameter fromTime={}",
|
||||||
|
req == null ? null : req.getFromTime());
|
||||||
|
// todo use опциональный параметр req.fromTime
|
||||||
SDf08 sDf08 = new SDf08();
|
SDf08 sDf08 = new SDf08();
|
||||||
// sDf08.setNumber(idGenerator.nextId().toString());
|
// sDf08.setNumber(idGenerator.nextId().toString());
|
||||||
Instant now = Instant.now();
|
Instant now = Instant.now();
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,14 @@ import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
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;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
|
||||||
import ru.spcex.platform.enumeration.Task;
|
import ru.spcex.platform.enumeration.Task;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.mockito.Mockito.timeout;
|
import static org.mockito.Mockito.timeout;
|
||||||
|
|
@ -80,4 +83,43 @@ class Sdf08ServiceTest extends AbstractServiceTest {
|
||||||
assertNotNull(resultsSDf08);
|
assertNotNull(resultsSDf08);
|
||||||
assertNotNull(resultRequestInfo);
|
assertNotNull(resultRequestInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link Sdf08Service}<br>
|
||||||
|
* Тест проверяет генерацию сущностей {@link RequestInfo}<br>
|
||||||
|
* Входные параметры:<br>
|
||||||
|
* {@link BaseRequest} - new BaseRequest<>() с полем fromTime <br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void newSDf08_withTime() throws JsonProcessingException {
|
||||||
|
BaseRequest<LauncherCommandRequest> baseNewRequest = new BaseRequest<>();
|
||||||
|
baseNewRequest.setId(currentId.getAndIncrement());
|
||||||
|
baseNewRequest.setActionType(ActionType.NEW);
|
||||||
|
LauncherCommandRequest launcherCommandRequest = new LauncherCommandRequest();
|
||||||
|
final LocalTime fromTime = LocalTime.of(12, 23);
|
||||||
|
launcherCommandRequest.setFromTime(fromTime);
|
||||||
|
baseNewRequest.setRequestPayload(launcherCommandRequest);
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
String jsonBaseNewRequest = objectMapper.writeValueAsString(baseNewRequest);
|
||||||
|
|
||||||
|
|
||||||
|
addRecordToKafka(mockConsumer, TOPIC, PARTITION, 0, jsonBaseNewRequest);
|
||||||
|
|
||||||
|
//waiting for kafka producer send message (finale event)
|
||||||
|
verify(producer, timeout(30_000L).times(1))
|
||||||
|
.send(producerRecord.capture());
|
||||||
|
|
||||||
|
assertEquals(Consts.EXPORT_PROCESS, producerRecord.getValue().topic());
|
||||||
|
BaseRequest<Object> baseRequest = (BaseRequest<Object>) producerRecord.getValue().value();
|
||||||
|
|
||||||
|
ExportToFileRequest exportToFileRequest = (ExportToFileRequest) baseRequest.getRequestPayload();
|
||||||
|
//todo test newSDf08_withTime assertEquals(fromTime, exportToFileRequest.getFromTime());
|
||||||
|
SDf08 resultsSDf08 = sdf08Imdg.getFirstObjectBySQL(String.format("generationId = %s and id != null", exportToFileRequest.getSdfGroupId()));
|
||||||
|
RequestInfo resultRequestInfo = requestInfoImdg.getSingleObjectByID(baseRequest.getId());
|
||||||
|
|
||||||
|
assertNotNull(baseRequest);
|
||||||
|
assertNotNull(resultsSDf08);
|
||||||
|
assertNotNull(resultRequestInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -20,6 +20,7 @@ import ru.spcex.clearing.test.MatcherFactory;
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.mockito.Mockito.timeout;
|
import static org.mockito.Mockito.timeout;
|
||||||
|
|
@ -80,6 +81,7 @@ class LauncherServiceTest extends AbstractServiceTest {
|
||||||
launcherCommandRequest.setCreditLeg_accountId(123L);
|
launcherCommandRequest.setCreditLeg_accountId(123L);
|
||||||
launcherCommandRequest.setAddresseeId(144L);
|
launcherCommandRequest.setAddresseeId(144L);
|
||||||
launcherCommandRequest.setDebitLeg_accountId(145L);
|
launcherCommandRequest.setDebitLeg_accountId(145L);
|
||||||
|
launcherCommandRequest.setFromTime(LocalTime.of(12,23));
|
||||||
|
|
||||||
BaseRequest<Object> predictableBaseRequest = new BaseRequest<>();
|
BaseRequest<Object> predictableBaseRequest = new BaseRequest<>();
|
||||||
predictableBaseRequest.setRequestPayload(launcherCommandRequest);
|
predictableBaseRequest.setRequestPayload(launcherCommandRequest);
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.test;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
|
|
@ -41,6 +42,10 @@ import static ru.spcex.clearing.test.config.KafkaTestConfig.getCaptor;
|
||||||
public class TestUtils {
|
public class TestUtils {
|
||||||
public static final MatcherFactory.Matcher<BaseRequest<Object>> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator();
|
public static final MatcherFactory.Matcher<BaseRequest<Object>> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator();
|
||||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
static {
|
||||||
|
// see JacksonObjectMapper: jackson-datatype-jsr310
|
||||||
|
objectMapper.registerModule(new JavaTimeModule());
|
||||||
|
}
|
||||||
|
|
||||||
public static void waitingSendAndCheckRecord(Long id, Producer mockProducer, ArgumentCaptor<ProducerRecord> producerRecord) {
|
public static void waitingSendAndCheckRecord(Long id, Producer mockProducer, ArgumentCaptor<ProducerRecord> producerRecord) {
|
||||||
//waiting for kafka send message (finale event)
|
//waiting for kafka send message (finale event)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,13 @@
|
||||||
package ru.spcex.clearing.platform.messaging.domain.cud.schedule;
|
package ru.spcex.clearing.platform.messaging.domain.cud.schedule;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
public class LauncherCommandRequest {
|
public class LauncherCommandRequest {
|
||||||
|
|
||||||
|
|
@ -40,6 +45,11 @@ public class LauncherCommandRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long debitLeg_accountId;
|
private Long debitLeg_accountId;
|
||||||
|
|
||||||
|
@JsonSerialize(using = LocalTimeSerializer.class)
|
||||||
|
@JsonDeserialize(using = LocalTimeDeserializer.class)
|
||||||
|
@JsonProperty
|
||||||
|
public LocalTime fromTime;
|
||||||
|
|
||||||
public Long getUserId() {
|
public Long getUserId() {
|
||||||
return userId;
|
return userId;
|
||||||
}
|
}
|
||||||
|
|
@ -167,4 +177,12 @@ public class LauncherCommandRequest {
|
||||||
public void setFullBalance(BigDecimal fullBalance) {
|
public void setFullBalance(BigDecimal fullBalance) {
|
||||||
this.fullBalance = fullBalance;
|
this.fullBalance = fullBalance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LocalTime getFromTime() {
|
||||||
|
return fromTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFromTime(LocalTime fromTime) {
|
||||||
|
this.fromTime = fromTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue