http://jira.mfd.msk:8088/browse/CLS-794 messageId type -> UUID and remove "-" for messageId

This commit is contained in:
akulikov 2024-11-29 17:20:55 +03:00
parent dd19fa74d9
commit edb3760b51
3 changed files with 30 additions and 23 deletions

View file

@ -6,6 +6,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import org.apache.commons.lang3.tuple.Triple;
import org.apache.kafka.clients.producer.Producer;
import org.slf4j.Logger;
@ -76,12 +77,13 @@ public class SDFProcessService {
boolean txOk = false;
imdgTransaction.beginTransaction();
HashSet<String> fileNames = new HashSet<>();
String messageId = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
try { // 2. обновление данных, в транзакции
Imdg<SDf53> sdf53Imdg = imdgTransaction.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class);
Instant now = Instant.now();
for (Triple<SDf52, Account, String> item : toProcessSDF53) {
SDf53 sDf53 = createBy(item.getLeft(), item.getRight(), now, generationId);
SDf53 sDf53 = createBy(item.getLeft(), item.getRight(), now, generationId, messageId);
sdf53Imdg.insert(sDf53);
fileNames.add(item.getLeft().getFileName());
}
@ -104,7 +106,7 @@ public class SDFProcessService {
messageStatementToExport53(generationId, fileNameSingle);
}
SDf53 createBy(SDf52 sdf52, String result, Instant now, Long newGenerationId) {
SDf53 createBy(SDf52 sdf52, String result, Instant now, Long newGenerationId, String messageId) {
SDf53 newSdf = new SDf53();
newSdf.setId(idGenerator.nextId());
newSdf.setAccName(sdf52.getAcc_name());
@ -116,8 +118,8 @@ public class SDFProcessService {
newSdf.setResult(result);
newSdf.setGenerationTime(now);
newSdf.setGenerationId(sdf52.getGenerationId());
newSdf.setMessageId(String.valueOf(sdf52.getGenerationId()));
newSdf.setParentId(sdf52.getMessageId() != null ? sdf52.getMessageId().replaceAll("-", "") : null);
newSdf.setMessageId(messageId);
newSdf.setParentId(sdf52.getMessageId());
if (!Objects.equals(newGenerationId, newSdf.getGenerationId())) { // never
log.warn("Different GenerationId={} for sdf53[{}] and GenerationId={} for group of sdf52",
newSdf.getGenerationId(), newSdf.getId(), newGenerationId

View file

@ -9,6 +9,7 @@ import java.util.Collection;
import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -126,6 +127,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
log.info("SDF01 execution: sdf01 file={} number={}, groupId={}", result.getFileName(), sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null));
ArrayList<SDf01> orderedSdf = new ArrayList<>(sdf);
orderedSdf.sort(Comparator.comparing(SDf01::getId));// Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01
String messageId = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
for (SDf01 sdf01 : orderedSdf) {
IValidator validator = sDf01Validator.apply(sdf01);
Optional<EnumMessage> error = validator.tillFirstError();
@ -149,14 +151,14 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
if (error.isPresent()) {
log.error("sdf01.id={} error: {}", sdf01.getId(), messageResolver.resolve(error.get()));
//fixme инициировать = команда для другого сервиса? sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup, messageId));
continue;
}
log.debug("sdf01.id={} validation passed", sdf01.getId());
Statement stmt = createSdf01Statement(sdf01, company, account);
SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup);
SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup, messageId);
sdf02Imdg.insert(sdf02New);
stmt.setOutSDfId(sdf02New.getId());
statementImdg.insert(stmt);
@ -278,7 +280,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
return req;
}
private SDf02 createErrorSdf02(SDf01 sdf01, EnumMessage error, Long generationIdForGroup) {
private SDf02 createErrorSdf02(SDf01 sdf01, EnumMessage error, Long generationIdForGroup, String messageId) {
SDf02 sDf02 = new SDf02();
sDf02.setCurr_code(sdf01.getCurr_code());
sDf02.setAccount(sdf01.getAccount());
@ -301,12 +303,12 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
}
sDf02.setGenerationId(generationIdForGroup);
sDf02.setGenerationTime(Instant.now());
sDf02.setMessageId(String.valueOf(sdf01.getGenerationId()));
sDf02.setParentId(sdf01.getMessageId() != null ? sdf01.getMessageId().replaceAll("-", "") : null);
sDf02.setMessageId(messageId);
sDf02.setParentId(sdf01.getMessageId());
return sDf02;
}
private SDf02 createSuccessSdf02(SDf01 sdf01, Long generationIdForGroup) {
private SDf02 createSuccessSdf02(SDf01 sdf01, Long generationIdForGroup, String messageId) {
SDf02 sDf02 = new SDf02();
sDf02.setCurr_code(sdf01.getCurr_code());
sDf02.setAccount(sdf01.getAccount());
@ -324,8 +326,8 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
sDf02.setGenerationId(generationIdForGroup);
sDf02.setGenerationTime(Instant.now());
sDf02.setResult(SdfResult.OK.getKey());
sDf02.setMessageId(String.valueOf(sdf01.getGenerationId()));
sDf02.setParentId(sdf01.getMessageId() != null ? sdf01.getMessageId().replaceAll("-", "") : null);
sDf02.setMessageId(messageId);
sDf02.setParentId(sdf01.getMessageId());
return sDf02;
}

View file

@ -8,6 +8,7 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -136,6 +137,7 @@ public class Sdf06Executor {
}
Collection<AssetOperationRequest> requests = new ArrayList<>();
boolean sdf07WasCreated = false;
String messageId = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
for (SDf06 sDf06 : sdfs) {
IValidator validator = sDf06Validator.apply(sDf06);
Optional<EnumMessage> err = validator.tillFirstError();
@ -150,7 +152,7 @@ public class Sdf06Executor {
((Company) validator.getStored(ValidationStored.Sdf06Company)).getId(),
account, null);
}
errorSdf07 = createSdf07(sDf06, now, errorResult);
errorSdf07 = createSdf07(sDf06, now, errorResult, messageId);
errorSdf07.setGenerationId(sdf07GroupId);
sdf07Imdg.insert(errorSdf07);
sdf07WasCreated = true;
@ -175,7 +177,7 @@ public class Sdf06Executor {
requests.add(GatewayRequestCreator.from(stmt, company.getTradingCode(), tcr.getCode(),
currency.getCurrencyCode()));
} else {
processedApproved(stmt, sDf06, now, sdf07GroupId);
processedApproved(stmt, sDf06, now, sdf07GroupId, messageId);
if (tcr != null) {
dmiService.setProcContract(tcr.getId(),
sDf06.getPay_val(),
@ -198,16 +200,16 @@ public class Sdf06Executor {
}
}
private void processedApproved(Statement stmt, SDf06 sDf06, Instant time) {
processedApproved(stmt, sDf06, time, sdf07GroupId);
private void processedApproved(Statement stmt, SDf06 sDf06, Instant time, String messageId) {
processedApproved(stmt, sDf06, time, sdf07GroupId, messageId);
}
private void processedApproved(Statement stmt, SDf06 sDf06, Instant time, Long sdf07GenerationId) {
private void processedApproved(Statement stmt, SDf06 sDf06, Instant time, Long sdf07GenerationId, String messageId) {
log.trace("statement.id={}, sdf07.id={}, sdf06.id={} executed",
stmt.getId(),
sDf06.getGenerationId(),
sDf06.getId());
SDf07 sdf07 = createSdf07(sDf06, time, successResult);
SDf07 sdf07 = createSdf07(sDf06, time, successResult, messageId);
sdf07.setGenerationId(sdf07GenerationId);
sdf07Imdg.insert(sdf07);
stmt.setOperationStatus(OperationStatus.Executed.getKey());
@ -266,6 +268,7 @@ public class Sdf06Executor {
}
requestIsIntendedForSdf06 = true;
String messageId = String.valueOf(UUID.randomUUID()).replaceAll("-", "");
Long sdf06Id = stmt.getInSDfId();
SDf06 sdf06 = sdf06Imdg.getSingleObjectByID(sdf06Id);
if (fileName == null && !TextUtil.isEmpty(sdf06.getFileName())) {
@ -288,7 +291,7 @@ public class Sdf06Executor {
Instant updatedTime = Instant.now();
if (gatewayMsg.isApproved()) {
processedApproved(stmt, sdf06, updatedTime);
processedApproved(stmt, sdf06, updatedTime, messageId);
Optional<TradingClearingRegistry> tcr = searchTcrOnGatewayResponse(sdf06);
dmiService.setProcContract(tcr.map(SpcexObjectBase::getId).orElse(null),
sdf06.getPay_val(),
@ -304,7 +307,7 @@ public class Sdf06Executor {
statementId,
sdf06.getGenerationId(),
sdf06.getId());
SDf07 sdf07 = createSdf07(sdf06, now, errorResult3);
SDf07 sdf07 = createSdf07(sdf06, now, errorResult3, messageId);
sdf07.setGenerationId(sdf07GroupId);
sdf07Imdg.insert(sdf07);
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
@ -339,7 +342,7 @@ public class Sdf06Executor {
kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
}
private SDf07 createSdf07(SDf06 sdf06, Instant time, BigDecimal result) {
private SDf07 createSdf07(SDf06 sdf06, Instant time, BigDecimal result, String messageId) {
SDf07 sDf07 = new SDf07();
sDf07.setInSDfId(sdf06.getId());
sDf07.setGenerationTime(time);
@ -357,8 +360,8 @@ public class Sdf06Executor {
sDf07.setDoc_date(sdf06.getDoc_date());
sDf07.setDoc_num(sdf06.getDoc_num());
sDf07.setPay_val(sdf06.getPay_val());
sDf07.setMessageId(String.valueOf(sdf06.getGenerationId()));
sDf07.setParentId(sdf06.getMessageId() != null ? sdf06.getParentId().replaceAll("-", "") : null);
sDf07.setMessageId(messageId);
sDf07.setParentId(sdf06.getMessageId());
return sDf07;
}