Quando tento rodar aparece esse problema na compilação, mas mesmo assim o codigo roda, mas quando faz a requisição no postman ele volta a aparecer.
The method setDataParaEntrega(LocalDate) is undefined for the type Compra
The method setVoucher(Long) is undefined for the type Compra
CompraService ta assim
@Service
public class CompraService {
private static final Logger LOG = LoggerFactory.getLogger(CompraService.class);
@Autowired
private FornecedorClient fornecedorClient;
@Autowired
private TransportadorClient transportadorClient;
@Autowired
private CompraRepository compraRepository;
@HystrixCommand(fallbackMethod = "realizaCompraFallback", threadPoolKey = "realizaCompraThreadPool")
public Compra realizaCompra(CompraDTO compra) {
final String estado = compra.getEndereço().getEstado();
LOG.info("buscando informação do fornecedor de {}", estado);
InfoFornecedorDTO info = fornecedorClient.getInfoPorEstado(compra.getEndereço().getEstado());
LOG.info("realizando um pedido");
InfoPedidoDTO pedido = fornecedorClient.realizaPedido(compra.getItens());
InfoEntregaDTO entregaDTO = new InfoEntregaDTO();
entregaDTO.setPedidoId(pedido.getId());
entregaDTO.setDataParaEntrega(LocalDate.now().plusDays(pedido.getTempoDePreparo()));
entregaDTO.setEnderecoOrigem(info.getEndereço());
entregaDTO.setEnderecoDestino(compra.getEndereço().toString());
VoucherDTO voucher = transportadorClient.reservaEntrega(entregaDTO);
Compra compraSalva = new Compra();
compraSalva.setPedidoId(pedido.getId());
compraSalva.setTempoDepreparo(pedido.getTempoDePreparo());
compraSalva.setEnderecoDestino(compra.getEndereço().toString());
compraSalva.setDataParaEntrega(voucher.getPrevisaoParaEntrega());
compraSalva.setVoucher(voucher.getNumero());
compraRepository.save(compraSalva);
return compraSalva;
}
public Compra realizaCompraFallback(CompraDTO compra) {
Compra compraFalback = new Compra();
compraFalback.setEnderecoDestino(compra.getEndereço().toString());
return compraFalback;
}
@HystrixCommand(threadPoolKey = "getByIdThreadPool")
public Compra getById(Long id) {
return compraRepository.findById(id).orElse(new Compra());
}
}
E o TransportadorClient ta assim
@FeignClient("transportador")
public interface TransportadorClient {
@RequestMapping(path = "/entrega", method = RequestMethod.POST)
public VoucherDTO reservaEntrega(InfoEntregaDTO pedidoDTO);
}
Resolvido colocando as variaveis no Compra que eu tinha esquecido de colocar e gerendo os Getters e Setters
private LocalDate DataParaEntrega;
private Long voucher;