Untitled
unknown
plain_text
a year ago
6.0 kB
9
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