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) {
|
||||
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()));
|
||||
} // else В мете эти модели с дополнительными параметрами (OUTV).
|
||||
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.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||
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.json.deserialize.LocalTimeDeserializer;
|
||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -64,6 +69,12 @@ public class LauncherNew implements IAction<Object> {
|
|||
@JsonProperty
|
||||
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
|
||||
public Object toRequest() {
|
||||
LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest();
|
||||
|
|
@ -83,6 +94,7 @@ public class LauncherNew implements IAction<Object> {
|
|||
taskRunnerCommandRequest.setCreditLeg_accountId(creditLeg_accountId);
|
||||
taskRunnerCommandRequest.setAddresseeId(addresseeId);
|
||||
taskRunnerCommandRequest.setDebitLeg_accountId(debitLeg_accountId);
|
||||
taskRunnerCommandRequest.setFromTime(fromTime);
|
||||
return taskRunnerCommandRequest;
|
||||
}
|
||||
|
||||
|
|
@ -227,4 +239,12 @@ public class LauncherNew implements IAction<Object> {
|
|||
public void setFullBalance(BigDecimal 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>
|
||||
<post destination="GALB" group="Обмен с расчетной организацией" name="Запрос остатков по всем счетам (отправка ДФ-56 для получения ответа ДФ-01, ДФ-57)">
|
||||
<fromTime type="5" name="Время" shortname="Время"/>
|
||||
</post>
|
||||
<post destination="OUTV" group="Обмен с расчетной организацией" name="Вывод свободных средств с клирингового регистра (отправка ДФ-54 для получения ответа ДФ-55)">
|
||||
<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.Consts;
|
||||
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.sender.KafkaSender;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
|
|
@ -36,14 +37,17 @@ public class Sdf08Service extends QueueConsumer implements InitializingBean {
|
|||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(Object.class)
|
||||
callback(LauncherCommandRequest.class)
|
||||
.setConsumer(this::newSDf08)
|
||||
.forDestination(Task.getAllBalance.topic(), callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private void newSDf08(BaseRequest<Object> userRequest) {
|
||||
log.debug("getAllBalance request received");
|
||||
private void newSDf08(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||
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.setNumber(idGenerator.nextId().toString());
|
||||
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.Consts;
|
||||
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.platform.enumeration.Task;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import java.time.LocalTime;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
|
|
@ -80,4 +83,43 @@ class Sdf08ServiceTest extends AbstractServiceTest {
|
|||
assertNotNull(resultsSDf08);
|
||||
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 java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.timeout;
|
||||
|
|
@ -80,6 +81,7 @@ class LauncherServiceTest extends AbstractServiceTest {
|
|||
launcherCommandRequest.setCreditLeg_accountId(123L);
|
||||
launcherCommandRequest.setAddresseeId(144L);
|
||||
launcherCommandRequest.setDebitLeg_accountId(145L);
|
||||
launcherCommandRequest.setFromTime(LocalTime.of(12,23));
|
||||
|
||||
BaseRequest<Object> predictableBaseRequest = new BaseRequest<>();
|
||||
predictableBaseRequest.setRequestPayload(launcherCommandRequest);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.test;
|
|||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
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.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
|
|
@ -41,6 +42,10 @@ import static ru.spcex.clearing.test.config.KafkaTestConfig.getCaptor;
|
|||
public class TestUtils {
|
||||
public static final MatcherFactory.Matcher<BaseRequest<Object>> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator();
|
||||
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) {
|
||||
//waiting for kafka send message (finale event)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
package ru.spcex.clearing.platform.messaging.domain.cud.schedule;
|
||||
|
||||
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.time.LocalTime;
|
||||
|
||||
public class LauncherCommandRequest {
|
||||
|
||||
|
|
@ -40,6 +45,11 @@ public class LauncherCommandRequest {
|
|||
@JsonProperty
|
||||
private Long debitLeg_accountId;
|
||||
|
||||
@JsonSerialize(using = LocalTimeSerializer.class)
|
||||
@JsonDeserialize(using = LocalTimeDeserializer.class)
|
||||
@JsonProperty
|
||||
public LocalTime fromTime;
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
|
@ -167,4 +177,12 @@ public class LauncherCommandRequest {
|
|||
public void setFullBalance(BigDecimal 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