package com.genpt.nsight.b2b.controller; import java.util.Optional; import java.util.UUID; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.genpt.nsight.b2b.model.*; import com.genpt.nsight.b2b.model.MultiStore.MultistorePriceAvailabilityRequestType; import com.genpt.nsight.b2b.model.MultiStore.MultistorePriceAvailabilityResponseType; import com.genpt.nsight.b2b.service.*; import com.genpt.nsight.v1.model.dto.SiteDTO; import com.genpt.nsight.v4.AvailabilityServiceContextV4; import com.genpt.nsight.v4.service.ProductAvailabilityDetailServiceV4; import org.springframework.http.HttpEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.*; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.genpt.nsight.NSightCache; import com.genpt.nsight.b2b.service.impl.FindITPartAvailabilityServiceImpl; import com.genpt.nsight.b2b.service.impl.IsscQueryServiceImpl; import com.genpt.nsight.config.NSightProperties; import com.genpt.nsight.v1.SplunkLogger; import com.genpt.nsight.v1.model.SiteIdentifier; @RestController @RequestMapping("/") @ConditionalOnExpression("${nsight.B2BController.enabled:false}") @Component public class B2BController { @Autowired private NSightCache nSightCache; @Autowired NSightProperties nSightProperties; private ProductAvailabilityDetailServiceV4 productAvailabilityDetailServiceV4; private PartPriceAvailabilityService partPriceAvailabilityService; private PoInvoiceAsPartPriceAvailabilityService poInvoiceAsPartPriceAvailabilityService; private InvoiceDetailAsPartPriceAvailabilityService invoiceDetailAsPartPriceAvailabilityService; private MultiStorePartPriceAvailabilityService multiStorePartPriceAvailabilityService; @Autowired public void setMultiStorePartPriceAvailabilityService( MultiStorePartPriceAvailabilityService multiStorePartPriceAvailabilityService) { this.multiStorePartPriceAvailabilityService = multiStorePartPriceAvailabilityService; } @Autowired public void setProductAvailabilityDetailServiceV4( ProductAvailabilityDetailServiceV4 productAvailabilityDetailServiceV4) { this.productAvailabilityDetailServiceV4 = productAvailabilityDetailServiceV4; } @Autowired public void setPartPriceAvailabilityService(PartPriceAvailabilityService partPriceAvailabilityService) { this.partPriceAvailabilityService = partPriceAvailabilityService; } @Autowired public void setPoInvoiceAsPartPriceAvailabilityService(PoInvoiceAsPartPriceAvailabilityService poInvoiceAsPartPriceAvailabilityService) { this.poInvoiceAsPartPriceAvailabilityService = poInvoiceAsPartPriceAvailabilityService; } @Autowired public void InvoiceDetailAsPartPriceAvailabilityService(InvoiceDetailAsPartPriceAvailabilityService invoiceDetailAsPartPriceAvailabilityService) { this.invoiceDetailAsPartPriceAvailabilityService = invoiceDetailAsPartPriceAvailabilityService; } private static final Logger LOGGER = LoggerFactory.getLogger(B2BController.class); @PostMapping(path = "/MultiStorePartPriceAvailability", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = { MediaType.APPLICATION_XML_VALUE }) public MultistorePriceAvailabilityResponseType getMultiStorePartPriceAvailability( HttpEntity request, @RequestParam Optional NOCOMBINE, @RequestParam Optional NODCBAL, @RequestParam Optional SDK, @RequestHeader("uniqueId") Optional uniqueId ) { AvailabilityServiceContextV4 availabilityServiceContextV2 = new AvailabilityServiceContextV4(); MultistorePriceAvailabilityRequestType multistorePriceAvailabilityRequestType = null; SplunkLogger splunkLogger = null; XmlMapper xmlMapper = new XmlMapper(); try { if(request.getBody()!=null) { String req = request.getBody().replaceAll("[&|]", ""); multistorePriceAvailabilityRequestType= xmlMapper.readValue(req, MultistorePriceAvailabilityRequestType.class); } else { MultistorePriceAvailabilityResponseType multistorePriceAvailabilityResponseType = new MultistorePriceAvailabilityResponseType(); multistorePriceAvailabilityResponseType.setStatusCode("3"); multistorePriceAvailabilityResponseType.setStatusMessage("Invalid request data"); return multistorePriceAvailabilityResponseType; } if (multistorePriceAvailabilityRequestType.getPart() == null || multistorePriceAvailabilityRequestType.getPart().size()==0){ MultistorePriceAvailabilityResponseType multistorePriceAvailabilityResponseType = new MultistorePriceAvailabilityResponseType(); multistorePriceAvailabilityResponseType.setStatusCode("99"); multistorePriceAvailabilityResponseType.setStatusMessage("NO REQUEST ID OF THAT TYPE FOUND"); return multistorePriceAvailabilityResponseType; } if (SDK.isPresent() && SDK.get()!=null) { availabilityServiceContextV2.setB2bSDK(SDK.get()); } availabilityServiceContextV2.setCallNonTAMS(nSightProperties.isCallNonTAMS()); availabilityServiceContextV2.setRpmURL(nSightProperties.getRpmURL()); availabilityServiceContextV2.setRpmTimeout(nSightProperties.getRpmTimeout()); availabilityServiceContextV2.setRpmSecurity(nSightProperties.getRpmSecurity()); availabilityServiceContextV2.setUapDCURL(nSightProperties.getUapDCURL()); String correlationId=""; if(!uniqueId.isPresent()) { correlationId = UUID.randomUUID().toString(); availabilityServiceContextV2.setCorrelationID(correlationId); } else { correlationId = String.valueOf(uniqueId); availabilityServiceContextV2.setCorrelationID(correlationId); } setDCAvailability(NODCBAL ,multistorePriceAvailabilityRequestType.getStoreID(), splunkLogger,availabilityServiceContextV2); multiStorePartPriceAvailabilityService.initializeContext(availabilityServiceContextV2, multistorePriceAvailabilityRequestType); splunkLogger = new SplunkLogger(availabilityServiceContextV2.getRequest().getHeaderRequest()); //set the flag for combined DC iniventory if (nSightProperties.isCombineMainCounter()) availabilityServiceContextV2.setCombineDCQuantity(setDCCombinedTotal(NOCOMBINE, NODCBAL ,multistorePriceAvailabilityRequestType.getStoreID(), splunkLogger,availabilityServiceContextV2)); // create the string for logging xmlMapper = new XmlMapper(); String requestAsString = xmlMapper.writeValueAsString(request); LOGGER.info(splunkLogger.toString() + " B2BMultiStorePartPriceAvailabilityRequest : {} ", requestAsString); } catch (Exception e) { e.printStackTrace(); if (splunkLogger != null) LOGGER.error( splunkLogger.toString() + " Error In B2BMultiStorePartPriceAvailabilityRequest, Message : {}, StackTrace: {} ", e.getMessage(), e.getStackTrace()); } return multiStorePartPriceAvailabilityService.getProductAvailability(availabilityServiceContextV2, multistorePriceAvailabilityRequestType); } @PostMapping(path = "/FindItPartAvailability", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = { MediaType.APPLICATION_XML_VALUE }) public FindItPartAvailabilityResponse getFindItPriceAvailabilityResponse( @RequestBody String request, @RequestHeader("uniqueId") Optional uniqueId) { FindItPartAvailabilityRequest findItPartAvailabilityRequest = null; FindItPartAvailabilityResponse findItPartAvailabilityResponse = null; SplunkLogger splunkLogger = null; String requestAsString=null; XmlMapper xmlMapper = new XmlMapper(); try { if(request!=null) { String req = request.replaceAll("[&|]", ""); findItPartAvailabilityRequest= xmlMapper.readValue(req, FindItPartAvailabilityRequest.class); } else { findItPartAvailabilityResponse = new FindItPartAvailabilityResponse(); findItPartAvailabilityResponse.setStatusCode("3"); findItPartAvailabilityResponse.setStatusMessage("Invalid request data"); return findItPartAvailabilityResponse; } FindITPartAvailabilityContext findITPartAvailabilityContext = new FindITPartAvailabilityContext(); FindITPartAvailabilityServiceImpl findITPartAvailabilityService = new FindITPartAvailabilityServiceImpl(); String correlationId=""; if(!uniqueId.isPresent()) { correlationId = UUID.randomUUID().toString(); findITPartAvailabilityContext.setCorrelationId(correlationId);; } else { correlationId = String.valueOf(uniqueId); findITPartAvailabilityContext.setCorrelationId(correlationId);; } boolean dontCallStore = nSightCache.getDontCallStoreSet().contains(String.valueOf(findItPartAvailabilityRequest.getStoreID()).substring(0, 3).concat(String.valueOf(findItPartAvailabilityRequest.getStoreID()).substring(5, 9))); findITPartAvailabilityContext.setFindItPartAvailabilityRequest(findItPartAvailabilityRequest); if (dontCallStore) { LOGGER.info(splunkLogger.toString() + " Not making Call to store"); findItPartAvailabilityResponse = new FindItPartAvailabilityResponse(); findItPartAvailabilityResponse.setStatusCode("99"); findItPartAvailabilityResponse.setStatusMessage("Store did not answer"); } else if (findItPartAvailabilityRequest.getStoreID() != null) { String siteId = nSightCache.getAliasToSiteIdMap() .get("9 Digit Store Number" + "|" + findItPartAvailabilityRequest.getStoreID()); if (siteId != null) { com.genpt.nsight.v4.model.ProductAvailabilityRequest productAvailabilityRequest = findITPartAvailabilityService .createProductAvailabilityRequest(findITPartAvailabilityContext); findITPartAvailabilityContext.setProductAvailabilityRequest(productAvailabilityRequest); splunkLogger = new SplunkLogger(findITPartAvailabilityContext.getProductAvailabilityRequest().getHeaderRequest()); requestAsString= xmlMapper.writeValueAsString(findItPartAvailabilityRequest); LOGGER.info(splunkLogger.toString() + " FindItPartAvailabilityRequest : {} ", requestAsString); com.genpt.nsight.v4.model.ProductAvailabilityResponse productAvailabilityResponse = createProductAvailabilityRequest( findITPartAvailabilityContext); findItPartAvailabilityResponse = findITPartAvailabilityService.createFindItPartAvailabilityResponse( productAvailabilityResponse, productAvailabilityRequest); } else { findItPartAvailabilityResponse = new FindItPartAvailabilityResponse(); findItPartAvailabilityResponse.setStatusCode("2"); findItPartAvailabilityResponse.setStatusMessage("SITEID NOT FOUND"); } } requestAsString = xmlMapper.writeValueAsString(findItPartAvailabilityResponse); LOGGER.info(splunkLogger.toString() + " FindItPartAvailabilityResponse : {} ", requestAsString); return findItPartAvailabilityResponse; } catch (Exception e) { if(splunkLogger!=null) LOGGER.error(splunkLogger.toString() + " Error In FindITPartAvailabilityService, Message : {}, StackTrace: {} ",e.getMessage(), e.getStackTrace()); else e.printStackTrace(); findItPartAvailabilityResponse = new FindItPartAvailabilityResponse(); findItPartAvailabilityResponse.setStatusCode("2"); findItPartAvailabilityResponse.setStatusMessage("INCORRECT STORE NUMBER"); return findItPartAvailabilityResponse; } } private com.genpt.nsight.v4.model.ProductAvailabilityResponse createProductAvailabilityRequest( FindITPartAvailabilityContext findITPartAvailabilityContext) { AvailabilityServiceContextV4 availabilityServiceContextV2 = new AvailabilityServiceContextV4(); SplunkLogger splunkLogger = null; splunkLogger = new SplunkLogger(findITPartAvailabilityContext.getFindItPartAvailabilityRequest()); availabilityServiceContextV2.setCallNonTAMS(nSightProperties.isCallNonTAMS()); availabilityServiceContextV2.setRpmURL(nSightProperties.getRpmURL()); availabilityServiceContextV2.setRpmTimeout(nSightProperties.getRpmTimeout()); availabilityServiceContextV2.setRpmSecurity(nSightProperties.getRpmSecurity()); availabilityServiceContextV2.setRequest(findITPartAvailabilityContext.getProductAvailabilityRequest()); splunkLogger = new SplunkLogger(availabilityServiceContextV2.getRequest().getHeaderRequest()); com.genpt.nsight.v4.model.ProductAvailabilityResponse productAvailabilityResponse = productAvailabilityDetailServiceV4 .getProductAvailability(availabilityServiceContextV2, true); return productAvailabilityResponse; } @PostMapping(path = "/PartPriceAvailability", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = { MediaType.APPLICATION_XML_VALUE }) public PriceAvailabilityResponse getPartPriceAvailability(HttpEntity request, @RequestParam Optional NOCOMBINE, @RequestParam Optional SDK, @RequestParam Optional NODCBAL, @RequestHeader("uniqueId") Optional uniqueId ) { AvailabilityServiceContextV4 availabilityServiceContextV2 = new AvailabilityServiceContextV4(); SplunkLogger splunkLogger = null; PriceAvailabilityRequest priceAvailabilityRequest= null; XmlMapper xmlMapper = new XmlMapper(); try { if(request.getBody()!=null) { String req = request.getBody().replaceAll("[&|]", ""); priceAvailabilityRequest= xmlMapper.readValue(req, PriceAvailabilityRequest.class); } else { PriceAvailabilityResponse priceAvailabilityResponse = new PriceAvailabilityResponse(); priceAvailabilityResponse.setStatusCode("3"); priceAvailabilityResponse.setStatusMessage("Invalid request data"); return priceAvailabilityResponse; } if (priceAvailabilityRequest.getPart() == null || priceAvailabilityRequest.getPart().size()==0){ PriceAvailabilityResponse priceAvailabilityResponse = new PriceAvailabilityResponse(); priceAvailabilityResponse.setStatusCode("99"); priceAvailabilityResponse.setStatusMessage("NO REQUEST ID OF THAT TYPE FOUND"); return priceAvailabilityResponse; } availabilityServiceContextV2.setCallNonTAMS(nSightProperties.isCallNonTAMS()); availabilityServiceContextV2.setRpmURL(nSightProperties.getRpmURL()); availabilityServiceContextV2.setRpmTimeout(nSightProperties.getRpmTimeout()); availabilityServiceContextV2.setRpmSecurity(nSightProperties.getRpmSecurity()); availabilityServiceContextV2.setUapDCURL(nSightProperties.getUapDCURL()); if (SDK.isPresent() && SDK.get()!=null) { availabilityServiceContextV2.setB2bSDK(SDK.get()); } String correlationId=""; if(!uniqueId.isPresent()) { correlationId = UUID.randomUUID().toString(); availabilityServiceContextV2.setCorrelationID(correlationId); } else { correlationId = String.valueOf(uniqueId); availabilityServiceContextV2.setCorrelationID(correlationId); } setDCAvailability(NODCBAL ,priceAvailabilityRequest.getStoreID(), splunkLogger,availabilityServiceContextV2); if(request.getBody()!=null && priceAvailabilityRequest.getPart()!=null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev()!= null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev().trim().equalsIgnoreCase("P") ) poInvoiceAsPartPriceAvailabilityService.initializeContext(availabilityServiceContextV2, priceAvailabilityRequest); else if(request.getBody()!=null && priceAvailabilityRequest.getPart()!=null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev()!= null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev().trim().equalsIgnoreCase("I")) invoiceDetailAsPartPriceAvailabilityService.initializeContext(availabilityServiceContextV2, priceAvailabilityRequest); else partPriceAvailabilityService.initializeContext(availabilityServiceContextV2, priceAvailabilityRequest); splunkLogger = new SplunkLogger(availabilityServiceContextV2.getRequest().getHeaderRequest()); if (nSightProperties.isCombineMainCounter()) availabilityServiceContextV2.setCombineDCQuantity(setDCCombinedTotal(NOCOMBINE, NODCBAL ,priceAvailabilityRequest.getStoreID(), splunkLogger,availabilityServiceContextV2)); // create the string for logging XmlMapper resxmlMapper = new XmlMapper(); String requestAsString = resxmlMapper.writeValueAsString(request); LOGGER.info(splunkLogger.toString() + " B2BPartPriceAvailabilityRequest : {} ", requestAsString); } catch (Exception e) { e.printStackTrace(); if (splunkLogger != null) LOGGER.error(splunkLogger.toString() + " Error In B2BPartsAvailability, Message : {}, StackTrace: {} ", e.getMessage(), e.getStackTrace()); } if(priceAvailabilityRequest!=null && priceAvailabilityRequest.getPart()!=null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev()!= null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev().trim().equalsIgnoreCase("P") ) return poInvoiceAsPartPriceAvailabilityService.getProductAvailability(availabilityServiceContextV2, priceAvailabilityRequest); else if(priceAvailabilityRequest!=null && priceAvailabilityRequest.getPart()!=null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev()!= null && priceAvailabilityRequest.getPart().get(0).getLineAbbrev().trim().equalsIgnoreCase("I")) return invoiceDetailAsPartPriceAvailabilityService.getProductAvailability(availabilityServiceContextV2, priceAvailabilityRequest); else return partPriceAvailabilityService.getProductAvailability(availabilityServiceContextV2, priceAvailabilityRequest); } @PostMapping(path = "/ISSCQuery/v1", consumes = { MediaType.APPLICATION_XML_VALUE }, produces = { MediaType.APPLICATION_XML_VALUE }) public IsscQueryResponse getIsscQueryResponse(@RequestBody String request, @RequestParam Optional NOCOMBINE, @RequestHeader("uniqueId") Optional uniqueId) { // TODO Auto-generated method stub XmlMapper xmlMapper = new XmlMapper(); IsscQueryRequest isscQueryRequest=null; IsscQueryResponse isscQueryResponse = null; SplunkLogger splunkLogger = null; try { if(request!=null) { String req = request.replaceAll("[&]", ""); isscQueryRequest= xmlMapper.readValue(req, IsscQueryRequest.class); } else { isscQueryResponse = new IsscQueryResponse(); isscQueryResponse.setData(""); isscQueryResponse.setStatus("3"); isscQueryResponse.setError("Invalid request data"); } } catch (Exception e) { e.printStackTrace(); isscQueryResponse = new IsscQueryResponse(); isscQueryResponse.setData(""); isscQueryResponse.setStatus("99"); isscQueryResponse.setError("Error"); return isscQueryResponse; } try { IsscQueryContext isscQueryContext = new IsscQueryContext(); IsscQueryServiceImpl isscQueryService = new IsscQueryServiceImpl(nSightCache); String correlationId=""; if(!uniqueId.isPresent()) { correlationId = UUID.randomUUID().toString(); isscQueryContext.setCorrelationId(correlationId);; } else { correlationId = String.valueOf(uniqueId); isscQueryContext.setCorrelationId(correlationId);; } isscQueryContext.setIsscQueryRequest(isscQueryRequest); splunkLogger = new SplunkLogger(isscQueryRequest); LOGGER.info(splunkLogger.toString() + isscQueryRequest.toString()); boolean dontCallStore = nSightCache.getDontCallStoreSet().contains(String.valueOf(isscQueryRequest.getStore()).substring(0, 3).concat(String.valueOf(isscQueryRequest.getStore()).substring(5, 9))); if (nSightProperties.isCombineMainCounter()) { if(setDCCombinedTotal(NOCOMBINE, null,isscQueryRequest.getStore(), splunkLogger,null)) isscQueryContext.setCombineDCQuantity(true); else isscQueryContext.setCombineDCQuantity(combineDCQtyForDCConsolidation(isscQueryRequest.getStore())); } if (dontCallStore) { isscQueryResponse = new IsscQueryResponse(); isscQueryResponse.setData(""); isscQueryResponse.setStatus("99"); isscQueryResponse.setError("Store did not answer"); } else if (isscQueryRequest.getStore() != null) { com.genpt.nsight.v4.model.ProductAvailabilityRequest productAvailabilityRequest = isscQueryService .createProductAvailabilityRequest(isscQueryContext); isscQueryContext.setProductAvailabilityRequest(productAvailabilityRequest); com.genpt.nsight.v4.model.ProductAvailabilityResponse productAvailabilityResponse = getProductAvailability(isscQueryContext); isscQueryResponse = isscQueryService.createIsscQueryResponse(productAvailabilityResponse); LOGGER.info(splunkLogger.toString() + isscQueryResponse.toString()); } else { isscQueryResponse = new IsscQueryResponse(); isscQueryResponse.setData(""); isscQueryResponse.setStatus("99"); isscQueryResponse.setError("INCORRECT STORE NUMBER"); } return isscQueryResponse; } catch (Exception e) { LOGGER.error(splunkLogger.toString() + " Error In ISSCQueryService, Message : {}, StackTrace: {} ", e.getMessage(), e.getStackTrace()); isscQueryResponse = new IsscQueryResponse(); isscQueryResponse.setData(""); isscQueryResponse.setStatus("99"); isscQueryResponse.setError("ERROR"); return isscQueryResponse; } } public com.genpt.nsight.v4.model.ProductAvailabilityResponse getProductAvailability( IsscQueryContext isscQueryContext) { AvailabilityServiceContextV4 availabilityServiceContextV2 = new AvailabilityServiceContextV4(); SplunkLogger splunkLogger = null; splunkLogger = new SplunkLogger(isscQueryContext.getIsscQueryRequest()); availabilityServiceContextV2.setCallNonTAMS(nSightProperties.isCallNonTAMS()); availabilityServiceContextV2.setRpmURL(nSightProperties.getRpmURL()); availabilityServiceContextV2.setRpmTimeout(nSightProperties.getRpmTimeout()); availabilityServiceContextV2.setRpmSecurity(nSightProperties.getRpmSecurity()); availabilityServiceContextV2.setRequest(isscQueryContext.getProductAvailabilityRequest()); splunkLogger = new SplunkLogger(availabilityServiceContextV2.getRequest().getHeaderRequest()); String dayOfWeek = null; String timeOfDay = null; if (dayOfWeek != null && timeOfDay != null) { availabilityServiceContextV2.setDayOfWeekLocal(Integer.parseInt(dayOfWeek)); availabilityServiceContextV2.setTimeOfDay(Long.parseLong(timeOfDay) * 60 * 1000L); } com.genpt.nsight.v4.model.ProductAvailabilityResponse productAvailabilityResponse = productAvailabilityDetailServiceV4 .getProductAvailability(availabilityServiceContextV2, true); ObjectMapper Obj = new ObjectMapper(); String response = null; try { response = Obj.writeValueAsString(productAvailabilityResponse); } catch (JsonProcessingException e) { // TODO Auto-generated catch block e.printStackTrace(); } LOGGER.info(splunkLogger.toString() + " Product Availability Response - " + response); return productAvailabilityResponse; } private void setDCAvailability(Optional NODCBAL , String storeID, SplunkLogger splunkLogger, AvailabilityServiceContextV4 availabilityServiceContextV2) { String siteID = nSightCache.getAliasToSiteIdMap().get("9 Digit Store Number" + "|" + storeID); //below logic to decide whether to request DC inventory //applicable for PriceAvailability and MultStorePriceAvailabilty if (siteID != null) { SiteDTO siteDTO = nSightCache.getSiteIdToSiteMap().get(siteID); if (siteDTO.getMainCounterFlag() && availabilityServiceContextV2 != null) { availabilityServiceContextV2.setMainCounter(true); //LOGGER.info(splunkLogger.toString() + " Main Counter Store Request"); } //check if UAP store if (siteDTO.getStorePartitionKey() != null && siteDTO.getStorePartitionKey().contains("CAN")) { if (NODCBAL != null) { if (NODCBAL.isPresent()) { availabilityServiceContextV2.setNeedUAPDCQuantity(false); //LOGGER.info(splunkLogger.toString() + "UAP Dont Need DC Quantity Store Request"); } else { availabilityServiceContextV2.setNeedUAPDCQuantity(true); //LOGGER.info(splunkLogger.toString() + "UAP Need DC Quantity Store Request"); } } } } } private boolean setDCCombinedTotal(Optional NOCOMBINE, Optional NODCBAL , String storeID, SplunkLogger splunkLogger, AvailabilityServiceContextV4 availabilityServiceContextV2){ boolean returnValue = false; String siteID = nSightCache.getAliasToSiteIdMap().get("9 Digit Store Number" + "|" + storeID); if (siteID !=null) { SiteDTO siteDTO = nSightCache.getSiteIdToSiteMap().get(siteID); if (siteDTO !=null && siteDTO.getMainCounterFlag() && siteDTO.getStorePartitionKey().contains("USA")) { if (NOCOMBINE.isPresent()) { returnValue = false; //LOGGER.info(splunkLogger.toString() + " NOCOMBINE Store Request - Not Combining DC Inventory "); }else { //LOGGER.info(splunkLogger.toString() + " NO NOCOMBINE Store Request - Combining DC Inventory "); returnValue = true; } } } return returnValue; } private boolean combineDCQtyForDCConsolidation(String storeID){ boolean returnValue = false; String siteID = nSightCache.getAliasToSiteIdMap().get("9 Digit Store Number" + "|" + storeID); if (siteID !=null) { SiteDTO siteDTO = nSightCache.getSiteIdToSiteMap().get(siteID); if(siteDTO !=null && siteDTO.getPrimaryDCSiteId()!=null ) { String siteDCAbbrevCode=null; SiteDTO primarySiteDTO = nSightCache.getSiteIdToSiteMap().get(siteDTO.getPrimaryDCSiteId()); if(primarySiteDTO!=null) { for(SiteIdentifier siteIdentifier : primarySiteDTO.getSiteIdentifierList()) { if(siteIdentifier.getName().equalsIgnoreCase("DC Abbreviation Code")) { siteDCAbbrevCode = siteIdentifier.getValue(); break; } } if(siteDCAbbrevCode!=null && nSightProperties.getCombineDCList().contains(siteDCAbbrevCode) && siteDTO.getMainCounterFlag()) returnValue = true; } } } return returnValue; } }