entities.fertilizacion.Produccion.java Source code

Java tutorial

Introduction

Here is the source code for entities.fertilizacion.Produccion.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package entities.fertilizacion;

import com.mongodb.Block;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import db.MongoManager;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.bson.types.ObjectId;

/**
 *
 * @author VICTOR OQUENDO
 */
public class Produccion implements Serializable {

    ObjectId id;
    Integer anio;
    String ciclo;
    ObjectId idCliente;
    ObjectId idHacienda;
    ObjectId idCultivo;
    ObjectId idVariedad;
    String unidadProduccion;
    BigDecimal factorConversion;
    BigDecimal totalProduccion;
    BigDecimal totalKgAnual;
    BigDecimal mermaNatural; //12%
    BigDecimal mermaFitosanitaria; //10%
    BigDecimal proyeccion; //2%

    List<ProduccionLote> listadoProduccionLote;

    String leyendaCliente;
    String leyendaHacienda;
    String leyendaCultivo;
    String leyendaVariedad;
    String leyendaVariacion;
    String leyendaProduccionBruta;

    public Produccion() {
        anio = 0;
        ciclo = "";
        unidadProduccion = "";
        factorConversion = new BigDecimal(0);
        totalProduccion = new BigDecimal(0);
        totalKgAnual = new BigDecimal(0);
        mermaNatural = new BigDecimal(0);
        mermaFitosanitaria = new BigDecimal(0);
        proyeccion = new BigDecimal(0);
        listadoProduccionLote = new ArrayList<>();
    }

    public ObjectId getId() {
        return id;
    }

    public void setId(ObjectId id) {
        this.id = id;
    }

    public Integer getAnio() {
        return anio;
    }

    public void setAnio(Integer anio) {
        this.anio = anio;
    }

    public String getCiclo() {
        return ciclo;
    }

    public void setCiclo(String ciclo) {
        this.ciclo = ciclo;
    }

    public ObjectId getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(ObjectId idCliente) {
        this.idCliente = idCliente;
    }

    public ObjectId getIdHacienda() {
        return idHacienda;
    }

    public void setIdHacienda(ObjectId idHacienda) {
        this.idHacienda = idHacienda;
    }

    public ObjectId getIdCultivo() {
        return idCultivo;
    }

    public void setIdCultivo(ObjectId idCultivo) {
        this.idCultivo = idCultivo;
    }

    public ObjectId getIdVariedad() {
        return idVariedad;
    }

    public void setIdVariedad(ObjectId idVariedad) {
        this.idVariedad = idVariedad;
    }

    public String getUnidadProduccion() {
        return unidadProduccion;
    }

    public void setUnidadProduccion(String unidadProduccion) {
        this.unidadProduccion = unidadProduccion;
    }

    public BigDecimal getFactorConversion() {
        return factorConversion;
    }

    public void setFactorConversion(BigDecimal factorConversion) {
        this.factorConversion = factorConversion;
    }

    public BigDecimal getTotalProduccion() {
        return totalProduccion;
    }

    public void setTotalProduccion(BigDecimal totalProduccion) {
        this.totalProduccion = totalProduccion;
    }

    public BigDecimal getTotalKgAnual() {
        return totalKgAnual;
    }

    public void setTotalKgAnual(BigDecimal totalKgAnual) {
        this.totalKgAnual = totalKgAnual;
    }

    public BigDecimal getMermaNatural() {
        return mermaNatural;
    }

    public void setMermaNatural(BigDecimal mermaNatural) {
        this.mermaNatural = mermaNatural;
    }

    public BigDecimal getMermaFitosanitaria() {
        return mermaFitosanitaria;
    }

    public void setMermaFitosanitaria(BigDecimal mermaFitosanitaria) {
        this.mermaFitosanitaria = mermaFitosanitaria;
    }

    public BigDecimal getProyeccion() {
        return proyeccion;
    }

    public void setProyeccion(BigDecimal proyeccion) {
        this.proyeccion = proyeccion;
    }

    public List<ProduccionLote> getListadoProduccionLote() {
        return listadoProduccionLote;
    }

    public void setListadoProduccionLote(List<ProduccionLote> listadoProduccionLote) {
        this.listadoProduccionLote = listadoProduccionLote;
    }

    public String getLeyendaCliente() {
        return leyendaCliente;
    }

    public void setLeyendaCliente(String leyendaCliente) {
        this.leyendaCliente = leyendaCliente;
    }

    public String getLeyendaHacienda() {
        return leyendaHacienda;
    }

    public void setLeyendaHacienda(String leyendaHacienda) {
        this.leyendaHacienda = leyendaHacienda;
    }

    public String getLeyendaCultivo() {
        return leyendaCultivo;
    }

    public void setLeyendaCultivo(String leyendaCultivo) {
        this.leyendaCultivo = leyendaCultivo;
    }

    public String getLeyendaVariedad() {
        return leyendaVariedad;
    }

    public void setLeyendaVariedad(String leyendaVariedad) {
        this.leyendaVariedad = leyendaVariedad;
    }

    public String getLeyendaVariacion() {
        return leyendaVariacion;
    }

    public void setLeyendaVariacion(String leyendaVariacion) {
        this.leyendaVariacion = leyendaVariacion;
    }

    public String getLeyendaProduccionBruta() {
        return leyendaProduccionBruta;
    }

    public void setLeyendaProduccionBruta(String leyendaProduccionBruta) {
        this.leyendaProduccionBruta = leyendaProduccionBruta;
    }

    public ObjectId save() {
        MongoManager mongo = MongoManager.getInstance();

        List<Document> lista = new ArrayList<>();
        for (int i = 0; i < listadoProduccionLote.size(); i++) {
            Document aux = new Document("idLote", listadoProduccionLote.get(i).idLote).append("prodLote",
                    BDecimalToStr(listadoProduccionLote.get(i).prodLote));
            lista.add(aux);
        }

        MongoCollection table = mongo.db.getCollection("produccion");
        Document obj = new Document("anio", this.anio).append("ciclo", this.ciclo)
                .append("idCliente", this.idCliente).append("idHacienda", this.idHacienda)
                .append("idCultivo", this.idCultivo).append("idVariedad", this.idVariedad)
                .append("unidadProduccion", this.unidadProduccion)
                .append("factorConversion", BDecimalToStr(this.factorConversion))
                .append("totalProduccion", BDecimalToStr(this.totalProduccion))
                .append("totalKgAnual", BDecimalToStr(this.totalKgAnual))
                .append("mermaNatural", BDecimalToStr(this.mermaNatural))
                .append("mermaFitosanitaria", BDecimalToStr(this.mermaFitosanitaria))
                .append("proyeccion", BDecimalToStr(this.proyeccion)).append("produccionLote", lista);
        table.insertOne(obj);

        return (ObjectId) obj.get("_id");
    }

    public void update() {

        List<Document> lista = new ArrayList<>();
        for (int i = 0; i < listadoProduccionLote.size(); i++) {
            Document aux = new Document("idLote", listadoProduccionLote.get(i).idLote).append("prodLote",
                    BDecimalToStr(listadoProduccionLote.get(i).prodLote));
            lista.add(aux);
        }

        MongoManager mongo = MongoManager.getInstance();
        mongo.db.getCollection("produccion").updateOne(new Document("_id", this.id), new Document("$set",
                new Document("anio", this.anio).append("ciclo", this.ciclo).append("idCliente", this.idCliente)
                        .append("idHacienda", this.idHacienda).append("idCultivo", this.idCultivo)
                        .append("idVariedad", this.idVariedad).append("unidadProduccion", this.unidadProduccion)
                        .append("factorConversion", BDecimalToStr(this.factorConversion))
                        .append("totalProduccion", BDecimalToStr(this.totalProduccion))
                        .append("totalKgAnual", BDecimalToStr(this.totalKgAnual))
                        .append("mermaNatural", BDecimalToStr(this.mermaNatural))
                        .append("mermaFitosanitaria", BDecimalToStr(this.mermaFitosanitaria))
                        .append("proyeccion", BDecimalToStr(this.proyeccion)).append("produccionLote", lista)));

    }

    public static Produccion getById(ObjectId id) {
        Produccion obj = new Produccion();

        MongoManager mongo = MongoManager.getInstance();

        FindIterable<Document> iterable = mongo.db.getCollection("produccion").find(new Document("_id", id));

        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {

                obj.id = document.getObjectId("_id");
                obj.anio = document.getInteger("anio");
                obj.ciclo = document.getString("ciclo");
                obj.idCliente = document.getObjectId("idCliente");
                obj.idHacienda = document.getObjectId("idHacienda");
                obj.idCultivo = document.getObjectId("idCultivo");
                obj.idVariedad = document.getObjectId("idVariedad");
                obj.unidadProduccion = document.getString("unidadProduccion");
                obj.factorConversion = obj.StrToBDecimal(document.getString("factorConversion"));
                obj.totalProduccion = obj.StrToBDecimal(document.getString("totalProduccion"));
                obj.totalKgAnual = obj.StrToBDecimal(document.getString("totalKgAnual"));
                obj.mermaNatural = obj.StrToBDecimal(document.getString("mermaNatural"));
                obj.mermaFitosanitaria = obj.StrToBDecimal(document.getString("mermaFitosanitaria"));
                obj.proyeccion = obj.StrToBDecimal(document.getString("proyeccion"));

                obj.leyendaCliente = Cliente.getClienteById(obj.idCliente).nombre;
                obj.leyendaCultivo = Cultivo.getCultivoById(obj.idCultivo).nombre;
                obj.leyendaHacienda = Hacienda.getHaciendaById(obj.idHacienda).nombre;
                obj.leyendaVariedad = Variedad.getVariedadById(obj.idVariedad).nombre;

                List<Document> lista = (List<Document>) document.get("produccionLote");
                for (int i = 0; i < lista.size(); i++) {
                    Document dbo = (Document) lista.get(i);
                    ProduccionLote aux = new ProduccionLote();
                    aux.idLote = (ObjectId) dbo.get("idLote");
                    aux.prodLote = obj.StrToBDecimal(dbo.getString("prodLote"));
                    aux.leyendaLote = Lote.getLoteById(aux.idLote).codigo;
                    aux.leyendaHectareas = Lote.getLoteById(aux.idLote).hectareas;
                    obj.listadoProduccionLote.add(aux);
                }

            }
        });

        return obj;
    }

    public static List<Produccion> getAll() {
        List<Produccion> res = new ArrayList<>();

        MongoManager mongo = MongoManager.getInstance();
        FindIterable<Document> iterable = mongo.db.getCollection("produccion").find()
                .sort(new Document("anio", -1));
        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {
                Produccion obj = new Produccion();
                obj.id = document.getObjectId("_id");
                obj.anio = document.getInteger("anio");
                obj.ciclo = document.getString("ciclo");
                obj.idCliente = document.getObjectId("idCliente");
                obj.idHacienda = document.getObjectId("idHacienda");
                obj.idCultivo = document.getObjectId("idCultivo");
                obj.idVariedad = document.getObjectId("idVariedad");
                obj.unidadProduccion = document.getString("unidadProduccion");
                obj.factorConversion = obj.StrToBDecimal(document.getString("factorConversion"));
                obj.totalProduccion = obj.StrToBDecimal(document.getString("totalProduccion"));
                obj.totalKgAnual = obj.StrToBDecimal(document.getString("totalKgAnual"));
                obj.mermaNatural = obj.StrToBDecimal(document.getString("mermaNatural"));
                obj.mermaFitosanitaria = obj.StrToBDecimal(document.getString("mermaFitosanitaria"));
                obj.proyeccion = obj.StrToBDecimal(document.getString("proyeccion"));

                obj.leyendaCliente = Cliente.getClienteById(obj.idCliente).nombre;
                obj.leyendaCultivo = Cultivo.getCultivoById(obj.idCultivo).nombre;
                obj.leyendaHacienda = Hacienda.getHaciendaById(obj.idHacienda).nombre;
                obj.leyendaVariedad = Variedad.getVariedadById(obj.idVariedad).nombre;

                List<Document> lista = (List<Document>) document.get("produccionLote");
                int n = lista.size();
                for (int i = 0; i < n; i++) {
                    Document dbo = (Document) lista.get(i);
                    ProduccionLote aux = new ProduccionLote();
                    aux.idLote = (ObjectId) dbo.get("idLote");
                    aux.prodLote = obj.StrToBDecimal(dbo.getString("prodLote"));
                    aux.leyendaLote = Lote.getLoteById(aux.idLote).codigo;
                    aux.leyendaHectareas = Lote.getLoteById(aux.idLote).hectareas;
                    obj.listadoProduccionLote.add(aux);
                }

                List<Produccion> listVariacion = Produccion.getAllByClienteHacCultVar(obj.idCliente, obj.idHacienda,
                        obj.idCultivo, obj.idVariedad);
                if (listVariacion.size() > 0) {
                    int cont = 0;
                    int tot = listVariacion.size();
                    while (cont < tot) {
                        if (listVariacion.get(cont).getTotalKgAnual().compareTo(obj.totalKgAnual) == 0) {
                            if (cont < (tot - 1)) {
                                obj.leyendaVariacion = (obj.totalKgAnual
                                        .subtract(listVariacion.get(cont + 1).getTotalKgAnual())).toString();

                            } else {
                                obj.leyendaVariacion = "0";
                            }
                            cont = tot;
                        }

                        cont++;
                    }

                } else {
                    obj.leyendaVariacion = "0";
                }

                obj.leyendaProduccionBruta = (obj.totalKgAnual
                        .subtract(obj.mermaNatural.add(obj.mermaFitosanitaria))).toString();
                res.add(obj);

            }

        });

        return res;
    }

    public static List<Produccion> getAllByClienteHacCultVar(ObjectId idCli, ObjectId idHac, ObjectId idCult,
            ObjectId idVar) {
        List<Produccion> res = new ArrayList<>();

        MongoManager mongo = MongoManager.getInstance();
        FindIterable<Document> iterable = mongo.db.getCollection("produccion").find(new Document("idCliente", idCli)
                .append("idHacienda", idHac).append("idCultivo", idCult).append("idVariedad", idVar))
                .sort(new Document("anio", -1));
        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {
                Produccion obj = new Produccion();
                obj.id = document.getObjectId("_id");
                obj.anio = document.getInteger("anio");

                obj.totalProduccion = obj.StrToBDecimal(document.getString("totalProduccion"));
                obj.totalKgAnual = obj.StrToBDecimal(document.getString("totalKgAnual"));

                res.add(obj);
            }

        });

        return res;
    }

    public static List<Produccion> getAllByClienteHacienda(ObjectId idCli, ObjectId idHac) {
        List<Produccion> res = new ArrayList<>();

        MongoManager mongo = MongoManager.getInstance();
        FindIterable<Document> iterable = mongo.db.getCollection("produccion")
                .find(new Document("idCliente", idCli).append("idHacienda", idHac)).sort(new Document("anio", -1));
        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {
                Produccion obj = new Produccion();
                obj.id = document.getObjectId("_id");
                obj.anio = document.getInteger("anio");
                obj.ciclo = document.getString("ciclo");
                obj.idCliente = document.getObjectId("idCliente");
                obj.idHacienda = document.getObjectId("idHacienda");
                obj.idCultivo = document.getObjectId("idCultivo");
                obj.idVariedad = document.getObjectId("idVariedad");
                obj.unidadProduccion = document.getString("unidadProduccion");
                obj.factorConversion = obj.StrToBDecimal(document.getString("factorConversion"));
                obj.totalProduccion = obj.StrToBDecimal(document.getString("totalProduccion"));
                obj.totalKgAnual = obj.StrToBDecimal(document.getString("totalKgAnual"));
                obj.mermaNatural = obj.StrToBDecimal(document.getString("mermaNatural"));
                obj.mermaFitosanitaria = obj.StrToBDecimal(document.getString("mermaFitosanitaria"));
                obj.proyeccion = obj.StrToBDecimal(document.getString("proyeccion"));

                obj.leyendaCliente = Cliente.getClienteById(obj.idCliente).nombre;
                obj.leyendaCultivo = Cultivo.getCultivoById(obj.idCultivo).nombre;
                obj.leyendaHacienda = Hacienda.getHaciendaById(obj.idHacienda).nombre;
                obj.leyendaVariedad = Variedad.getVariedadById(obj.idVariedad).nombre;

                List<Document> lista = (List<Document>) document.get("produccionLote");
                int n = lista.size();
                for (int i = 0; i < n; i++) {
                    Document dbo = (Document) lista.get(i);
                    ProduccionLote aux = new ProduccionLote();
                    aux.idLote = (ObjectId) dbo.get("idLote");
                    aux.prodLote = obj.StrToBDecimal(dbo.getString("prodLote"));
                    aux.leyendaLote = Lote.getLoteById(aux.idLote).codigo;
                    aux.leyendaHectareas = Lote.getLoteById(aux.idLote).hectareas;
                    obj.listadoProduccionLote.add(aux);
                }

                List<Produccion> listVariacion = Produccion.getAllByClienteHacCultVar(obj.idCliente, obj.idHacienda,
                        obj.idCultivo, obj.idVariedad);
                if (listVariacion.size() > 0) {
                    int cont = 0;
                    int tot = listVariacion.size();
                    while (cont < tot) {
                        if (listVariacion.get(cont).getTotalKgAnual().compareTo(obj.totalKgAnual) == 0) {
                            if (cont < (tot - 1)) {
                                obj.leyendaVariacion = (obj.totalKgAnual
                                        .subtract(listVariacion.get(cont + 1).getTotalKgAnual())).toString();

                            } else {
                                obj.leyendaVariacion = "0";
                            }
                            cont = tot;
                        }

                        cont++;
                    }

                } else {
                    obj.leyendaVariacion = "0";
                }

                obj.leyendaProduccionBruta = (obj.totalKgAnual
                        .subtract(obj.mermaNatural.add(obj.mermaFitosanitaria))).toString();
                res.add(obj);

            }

        });

        return res;
    }

    String BDecimalToStr(BigDecimal arg) {
        String res;
        res = arg.toString();
        return res;
    }

    BigDecimal StrToBDecimal(String arg) {
        BigDecimal res;
        res = new BigDecimal(arg);
        return res;
    }
}