public void atualizar(ProdutoDTO produto) {
    Produto entity = produtoDAO.findById(produto.getId());

    ProdutoMapper.merge(produto, entity);

    entity.setServico(servicoDAO.findById(produto.getServico().getIdServico()));
    entity.setMaterial(materialDAO.findById(produto.getMaterial().getIdMaterial()));

    produtoDAO.save(entity);
  }
  public void incluir(ProdutoDTO dto) {

    Produto produto = ProdutoMapper.getNewEntity(dto);

    produto.setSituacao(SituacaoProduto.ATIVO);

    produtoDAO.save(produto);
  }
  public List<ProdutoDTO> listarTodos() {
    List<Produto> produtos = produtoDAO.findAll();
    List<ProdutoDTO> produtosDTO = new ArrayList<ProdutoDTO>();

    for (Produto produto : produtos) {
      produtosDTO.add(new ProdutoDTO(produto));
    }

    return produtosDTO;
  }
  public List<ProdutoDTO> listarPorServicoOuMaterial(Long idServico, Long idMaterial) {
    List<Produto> produtos = null;

    if (idServico != 0L && idMaterial != 0L) {
      Servico servico = servicoDAO.findById(idServico);
      Material material = materialDAO.findById(idMaterial);
      produtos = produtoDAO.findByServicoEMaterial(servico, material);
    } else if (idServico != 0L) {
      Servico servico = servicoDAO.findById(idServico);
      produtos = produtoDAO.findByServico(servico);
    } else if (idMaterial != 0L) {
      Material material = materialDAO.findById(idMaterial);
      produtos = produtoDAO.findByMaterial(material);
    }

    List<ProdutoDTO> produtosDTO = new ArrayList<ProdutoDTO>();

    for (Produto produto : produtos) {
      produtosDTO.add(new ProdutoDTO(produto));
    }

    return produtosDTO;
  }
 public ProdutoDTO buscarPorId(Long id) {
   Produto produto = produtoDAO.findById(id);
   return new ProdutoDTO(produto);
 }