Untitled
unknown
plain_text
a year ago
6.0 kB
15
Indexable
package com.optum.iedi.attachment.consumer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.bind.annotation.RestController;
import com.azure.spring.messaging.eventhubs.core.EventHubsTemplate;
import com.azure.spring.messaging.eventhubs.core.PartitionSupplier;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.optum.iedi.attachment.AttachmentTrackingStatusUpdateCompleteEvent;
import com.optum.iedi.attachment.AttachmentUpdateHelper;
import com.optum.iedi.attachment.ProprietaryAttachmentUpdateHelper;
import com.optum.iedi.converter.doctype.attachment.ClaimAttachmentTrackingStatusPayload;
import com.optum.iedi.converter.doctype.attachment.ClaimAttachmentUpdate;
import com.optum.iedi.converter.mapper.common.EdiTransactionMapperUtil;
import com.optum.iedi.util.CompressionUtils;
@RestController
public class AttachmentUpdateEventConsumer implements Consumer<Message<List<byte[]>>> {
private static final String TRANSACTION_TYPE = "transactionType";
public static final String FUNCTIONAL_999_RESPONSE = "Ack Response-999";
private static final List<String> proprietaryAttachmentTypeList=new ArrayList<>();
static {
proprietaryAttachmentTypeList.add("OhioProprietaryAttachment");
proprietaryAttachmentTypeList.add("OhioProprietaryAttachmentAck");
proprietaryAttachmentTypeList.add("OhioProprietaryAttachmentImpAck");
}
@Autowired
@Qualifier("attachmentRetryAndArchiveEventHubsTemplate")
private EventHubsTemplate attachmentRetryAndArchiveEventHubsTemplate;
@Autowired
@Qualifier("attachmentTrackingStatusCompleteEventHubsTemplate")
private EventHubsTemplate attachmentTrackingStatusCompleteEventHubsTemplate;
@Override
public void accept(final Message<List<byte[]>> message) {
final List<byte[]> messages = message.getPayload();
final AttachmentUpdateHelper attachmentHelper = new AttachmentUpdateHelper(
attachmentRetryAndArchiveEventHubsTemplate,"attachment-archive-retry");
for (final byte[] payload : messages) {
try {
final String sb = CompressionUtils.decompressGZIP(payload);
final ObjectNode objectNode = (ObjectNode) new ObjectMapper().readTree(sb);
final JsonNode transTypeNode = objectNode.get(TRANSACTION_TYPE);
if (null!=transTypeNode && proprietaryAttachmentTypeList.contains(transTypeNode.asText())) {
final ProprietaryAttachmentUpdateHelper propAtmntUpdateHelper = new ProprietaryAttachmentUpdateHelper();
propAtmntUpdateHelper.processProprietaryAttachmentUpdate(sb);
}else{
final AttachmentTrackingStatusUpdateCompleteEvent attachmentTrackingStatusUpdateCompleteEvent= attachmentHelper.processAttachmentUpdate(sb);
final ClaimAttachmentUpdate payload1 = EdiTransactionMapperUtil.iso_deserialiser_gson.fromJson(sb,
ClaimAttachmentUpdate.class);
ClaimAttachmentTrackingStatusPayload statusPayload = payload1.getClaimAttachmentTrackingStatusPayload();
if(attachmentTrackingStatusUpdateCompleteEvent != null && not999Data(statusPayload)){
final PartitionSupplier partitionSupplier = new PartitionSupplier();
partitionSupplier.setPartitionKey(attachmentTrackingStatusUpdateCompleteEvent.getBatchId());
sendToEventhub(attachmentTrackingStatusUpdateCompleteEvent,attachmentTrackingStatusCompleteEventHubsTemplate,"attachment-transaction-update-metadata",partitionSupplier);
attachmentHelper.logMilestoneEvent(AttachmentUpdateHelper.ATTACHMENT_TRACKING_STATUS_UPDATE,
attachmentTrackingStatusUpdateCompleteEvent.getBatchId(),
attachmentTrackingStatusUpdateCompleteEvent.getTenantId());
}
}
} catch (final Exception e) {
attachmentHelper.logErrorEvent(e);
sendToEventhub(payload, attachmentRetryAndArchiveEventHubsTemplate,
"attachment-tracking-status-lookup-update-retry");
}
}
}
private boolean not999Data(final ClaimAttachmentTrackingStatusPayload claimAttachmentTrackingStatusPayload) {
if(claimAttachmentTrackingStatusPayload.getClaimAttachmentTrackingStatus() != null && !(FUNCTIONAL_999_RESPONSE).equals(claimAttachmentTrackingStatusPayload.getClaimAttachmentTrackingStatus().getResponseType())) {
return true;
}
return false;
}
public void sendToEventhub(final AttachmentTrackingStatusUpdateCompleteEvent payload,
final EventHubsTemplate attachmentRetryEventHubsTemplate, final String eventHubName,
final PartitionSupplier partitionSupplier){
attachmentRetryEventHubsTemplate.send(eventHubName,
Collections.singletonList(
MessageBuilder.withPayload(EdiTransactionMapperUtil.GSON.toJson(payload)).build()),
partitionSupplier);
}
public void sendToEventhub(final byte[] payload, final EventHubsTemplate attachmentRetryEventHubsTemplate,
final String eventHubName){
attachmentRetryEventHubsTemplate.send(eventHubName, MessageBuilder.withPayload(payload).build());
}
}
Editor is loading...
Leave a Comment