accumulate a value for each for () before adding to the array

0

I have a List that contains objects of the type of ProductBuy.

My question is the following, I need to go through the ArrayList of this class and generate a new array with the total payable per vendor report, that is, I have to keep the vendor but accumulate the total amounts to pay, the way I am so I'm filtering and adding again in the other array just the two attributes required, but it generates one entry at a time, how do I generate a single entry per vendor but with the total payable?

Product Buying Class:

 package Sistema;

 import java.util.Iterator;
 import java.util.List;


public class CompraDeProdutos {
private int notaFiscal;
private Produto produto;
private String data;
private Fornecedor fornecedor;
private int quantidade;
private double totalApagar;

public List <Produto> getLista(){
    return Dados.listaProdutos;
}

public CompraDeProdutos(int notaFiscal, Produto produto, String data, Fornecedor fornecedor, int quantidade, double totalApagar) {
    this.notaFiscal = notaFiscal;
    this.produto = produto;
    this.data = data;
    this.fornecedor = fornecedor;
    this.quantidade = quantidade;
    this.totalApagar = totalApagar;
}



public int getNotaFiscal() {
    return notaFiscal;
}

public void setNotaFiscal(int notaFiscal) {
    this.notaFiscal = notaFiscal;
}

public String getData() {
    return data;
}

public void setData(String data) {
    this.data = data;
}

public double getTotalApagar() {
    return produto.getCusto()*getQuantidade();
}

public void setTotalApagar(double totalApagar) {
    this.totalApagar =totalApagar;
}

public Produto getProduto() {
    return produto;
}

public void setProduto(Produto produto) {
    this.produto = produto;
}

public Fornecedor getFornecedor() {
    return fornecedor;
}

public void setFornecedor(Fornecedor fornecedor) {
    this.fornecedor =fornecedor;
}

public CompraDeProdutos() {

}



public int getQuantidade() {
    return quantidade;
}

public void setQuantidade(int quantidade) {
    this.quantidade = quantidade;
}

/*
@Override
public String toString() {
    return   "" +getFornecedor().getCodigo()+";"+getTotalApagar()+";";
}
*/

@Override
public String toString() {
    return  "" + getNotaFiscal() + ";" +getFornecedor().getCodigo()+";" + getData() + ";" + getProduto().getCodigo()+ ";" + getQuantidade() + ";"+getTotalApagar()+";";
}

@Override
public int hashCode() {
    int hash = 3;
    hash = 11 * hash + this.notaFiscal;
    return hash;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final CompraDeProdutos other = (CompraDeProdutos) obj;
    if (this.notaFiscal != other.notaFiscal) {
        return false;
    }
    return true;
    }
}

Method that I'm using:

 public void relatorioFornecedor(List<CompraDeProdutos> listaCompras){

    Iterator<CompraDeProdutos> it = Dados.listaCompras.iterator();
    Iterator<CompraDeProdutos> ite= Dados.listaRelatorio1.iterator();
    CompraDeProdutos obj =new CompraDeProdutos();
    while(it.hasNext()){
        CompraDeProdutos e = it.next();

        if(e.getFornecedor().equals(obj.getFornecedor())){
            obj.setFornecedor(e.getFornecedor());
            obj.setProduto(e.getProduto());
            obj.setQuantidade(obj.getQuantidade());
            obj.setTotalApagar(e.getTotalApagar());
            Dados.listaRelatorio1.add(obj);
        }
        System.out.println(Dados.listaRelatorio1);
        break;
  }

    while(ite.hasNext()){
        CompraDeProdutos i = it.next();

        if(i.getFornecedor().equals(obj.getFornecedor()))
        {
            obj.setFornecedor(i.getFornecedor());
            obj.setProduto(i.getProduto());
            obj.setQuantidade(i.getQuantidade());
            obj.setTotalApagar(i.getTotalApagar()+obj.getTotalApagar());
            Dados.listaRelatorio1.remove(i);
            Dados.listaRelatorio1.add(obj);
        }
        break;
    }
    System.out.println(Dados.listaRelatorio1);
  }
}
    
asked by anonymous 18.05.2018 / 18:32

0 answers