Add logging to enhance debugging in taxation services.
This commit is contained in:
parent
5d804543d7
commit
94692e12ce
2 changed files with 48 additions and 15 deletions
|
|
@ -53,12 +53,16 @@ public class EUTaxationApiService {
|
|||
request.setReferenceDate(getCurrentDate());
|
||||
request.setTradeMovement(TradeMovementCode.fromValue(tradeMovement));
|
||||
|
||||
logger.info("Lookup Measure for {} and {}", goodsCode, countryCode);
|
||||
|
||||
JAXBElement<GoodsMeasForWs> requestElement = objectFactory.createGoodsMeasForWs(request);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
JAXBElement<GoodsMeasForWsResponse> responseElement =
|
||||
(JAXBElement<GoodsMeasForWsResponse>) webServiceTemplate.marshalSendAndReceive(requestElement);
|
||||
|
||||
logger.info("Lookup Measure for {} and {} success: {} Measures received.", goodsCode, countryCode, responseElement.getValue().getReturn().getResult().getMeasures().getMeasure().size());
|
||||
|
||||
return CompletableFuture.completedFuture(responseElement.getValue());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ import de.avatic.lcc.util.exception.base.InternalErrorException;
|
|||
import eu.europa.ec.taxation.taric.client.GoodsMeasForWsResponse;
|
||||
import eu.europa.ec.taxation.taric.client.GoodsMeasuresForWsResponse;
|
||||
import jakarta.annotation.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
|
@ -34,6 +36,9 @@ public class TaxationResolverService {
|
|||
private final NomenclatureService nomenclatureService;
|
||||
private final CountryPropertyRepository countryPropertyRepository;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(TaxationResolverService.class);
|
||||
|
||||
|
||||
public TaxationResolverService(CountryRepository countryRepository, EUTaxationApiService eUTaxationApiService, PropertyRepository propertyRepository, ZolltarifnummernApiService zolltarifnummernApiService, NomenclatureService nomenclatureService, CountryPropertyRepository countryPropertyRepository) {
|
||||
this.countryRepository = countryRepository;
|
||||
this.eUTaxationApiService = eUTaxationApiService;
|
||||
|
|
@ -73,26 +78,30 @@ public class TaxationResolverService {
|
|||
var singleResponses = doSingleRequests(joined.toList());
|
||||
|
||||
return Stream.of(
|
||||
byCustomUnion.getOrDefault(CustomUnionType.NONE,Collections.emptyList()).stream().collect(Collectors.toMap(
|
||||
byCustomUnion.getOrDefault(CustomUnionType.NONE, Collections.emptyList()).stream().collect(Collectors.toMap(
|
||||
r -> r,
|
||||
r -> new TaxationResolverApiResponse(
|
||||
r.material(),
|
||||
true,
|
||||
singleResponses.keySet().stream().filter(k -> k.origin.equals(r)).map(singleResponses::get).toList()))),
|
||||
|
||||
byCustomUnion.getOrDefault(CustomUnionType.EU,Collections.emptyList()).stream().collect(Collectors.toMap(
|
||||
byCustomUnion.getOrDefault(CustomUnionType.EU, Collections.emptyList()).stream().collect(Collectors.toMap(
|
||||
r -> r,
|
||||
r -> new TaxationResolverApiResponse(
|
||||
r.material(),
|
||||
false,
|
||||
null))))
|
||||
|
||||
.flatMap(map -> map.entrySet().stream()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,(r1,_) -> r1));
|
||||
.flatMap(map -> map.entrySet().stream()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (r1, _) -> r1));
|
||||
|
||||
}
|
||||
|
||||
private List<TaxationResolverSingleRequest> resolveIncompleteHsCodesIntern(List<TaxationResolverRequest> request) {
|
||||
return request.stream().flatMap(r -> nomenclatureService.getNomenclature(r.material().getHsCode()).stream().map(hsCode -> new TaxationResolverSingleRequest(hsCode, r.countryId(), r))).toList();
|
||||
var singleRequests = request.stream().flatMap(r -> nomenclatureService.getNomenclature(r.material().getHsCode()).stream().map(hsCode -> new TaxationResolverSingleRequest(hsCode, r.countryId(), r))).toList();
|
||||
|
||||
logger.info("Resolved {} incomplete hs codes to {} hs code leaves ", request.size(), singleRequests.size());
|
||||
|
||||
return singleRequests;
|
||||
}
|
||||
|
||||
private List<TaxationResolverSingleRequest> resolveIncompleteHsCodes(List<TaxationResolverRequest> request) {
|
||||
|
|
@ -244,6 +253,9 @@ public class TaxationResolverService {
|
|||
}
|
||||
|
||||
public List<TaxationResolverResponse> getTariffRates(List<TaxationResolverRequest> requests) {
|
||||
|
||||
logger.info("Do taxation resolution for {} requests", requests.size());
|
||||
|
||||
var goodMeasures = doRequests(requests);
|
||||
return goodMeasures.keySet().stream().map(r -> mapToResponse(r, goodMeasures.get(r))).toList();
|
||||
}
|
||||
|
|
@ -251,12 +263,15 @@ public class TaxationResolverService {
|
|||
private TaxationResolverResponse mapToResponse(TaxationResolverRequest request, TaxationResolverApiResponse apiResponse) {
|
||||
|
||||
// source is EU country.
|
||||
if(!apiResponse.requestExecuted)
|
||||
if (!apiResponse.requestExecuted)
|
||||
return new TaxationResolverResponse(0.0, null, request.material().getHsCode(), request.material(), request.countryId());
|
||||
|
||||
|
||||
List<GoodsMeasForWsResponse> measForWsResponse = apiResponse.apiResponse();
|
||||
|
||||
logger.info("============================");
|
||||
logger.info("Resolved measures for: {}, {}", request.material(), request.countryId());
|
||||
|
||||
try {
|
||||
String selectedHsCode = null;
|
||||
Double selectedDuty = null;
|
||||
|
|
@ -277,11 +292,21 @@ public class TaxationResolverService {
|
|||
var measureType = MeasureType.fromMeasureCode(measure.getMeasureType().getMeasureType());
|
||||
boolean maybeRelevant = measureType.map(MeasureType::containsRelevantDuty).orElse(false);
|
||||
|
||||
logger.info("Measure ({}{}, {}): is_relevant: {}", measureType.map(MeasureType::getSeries).orElse("UNKNOWN"), measureType.map(MeasureType::getMeasureCode).orElse(""), measureType.map(MeasureType::name).orElse("UNKNOWN"), maybeRelevant);
|
||||
|
||||
if (maybeRelevant) {
|
||||
var duty = extractDuty(measure);
|
||||
|
||||
if (duty.isPresent()) {
|
||||
|
||||
logger.info("Measure ({}{}, {}): duty: {}, hs code: {}",
|
||||
measureType.map(MeasureType::getSeries).orElse("UNKNOWN"),
|
||||
measureType.map(MeasureType::getMeasureCode).orElse(""),
|
||||
measureType.map(MeasureType::name).orElse("UNKNOWN"),
|
||||
measureType.map(MeasureType::getMeasureCode).orElse(null),
|
||||
entry.getKey().getReturn().getResult().getRequest().getGoodsCode());
|
||||
|
||||
|
||||
maxDuty = Math.max(maxDuty, duty.get());
|
||||
minDuty = Math.min(minDuty, duty.get());
|
||||
|
||||
|
|
@ -296,6 +321,10 @@ public class TaxationResolverService {
|
|||
}
|
||||
}
|
||||
|
||||
logger.info("============================");
|
||||
logger.info("Selected: measure: {}, duty: {}, max_duty: {}, min_duty: {}", selectedMeasure, selectedDuty, maxDuty, minDuty);
|
||||
logger.info("============================");
|
||||
|
||||
if (selectedDuty != null && (maxDuty - minDuty <= 0.02)) {
|
||||
return new TaxationResolverResponse(selectedDuty, selectedMeasure, selectedHsCode, request.material(), request.countryId());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue