gob.dp.simco.reporte.controller.ReporteGeneralController.java Source code

Java tutorial

Introduction

Here is the source code for gob.dp.simco.reporte.controller.ReporteGeneralController.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 gob.dp.simco.reporte.controller;

import gob.dp.simco.administracion.parametro.entity.Catalogo;
import gob.dp.simco.administracion.parametro.service.CatalogoService;
import gob.dp.simco.comun.Filter;
import gob.dp.simco.comun.FilterList;
import gob.dp.simco.comun.entity.Departamento;
import gob.dp.simco.comun.entity.RegistroCarga;
import gob.dp.simco.comun.entity.Resumen;
import gob.dp.simco.comun.service.RegistroCargaService;
import gob.dp.simco.comun.service.ReporteService;
import gob.dp.simco.comun.service.UbigeoService;
import gob.dp.simco.comun.type.MesesEnum;
import gob.dp.simco.comun.ConstantesUtil;
import gob.dp.simco.registro.entity.Caso;
import gob.dp.simco.reporte.entity.ElementoNombreValor;
import gob.dp.simco.reporte.entity.ElementoReporte;
import gob.dp.simco.reporte.entity.ElementoResumenEjecutivo;
import gob.dp.simco.reporte.entity.EstadoConflicto;
import gob.dp.simco.reporte.entity.FaceTotal;
import gob.dp.simco.reporte.entity.FiltroReporte;
import gob.dp.simco.reporte.entity.NuevoCaso;
import gob.dp.simco.reporte.service.ReporteEjecutivoService;
import gob.dp.simco.reporte.service.ReporteGeneralService;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;

/**
 *
 * @author carlos
 */
@Named
@Scope("session")
public class ReporteGeneralController implements Serializable {

    private FiltroReporte filtroReporte;

    private List<SelectItem> listaDepartamento;

    List<ElementoReporte> elementoReportes;

    private List<Caso> listaCasosReporte;

    private List<Resumen> listaAnhos;

    private Map listasMeses;

    JasperPrint jasperPrint;

    private List<ElementoResumenEjecutivo> listaResumenEjecutivo;

    @Autowired
    private UbigeoService ubigeoService;

    @Autowired
    private ReporteGeneralService reporteGeneralService;

    @Autowired
    private CatalogoService catalogoService;

    @Autowired
    private ReporteService reporteService;

    @Autowired
    private RegistroCargaService registroCargaService;

    @Autowired
    private ReporteEjecutivoService reporteEjecutivoService;

    public String reporte() {
        filtroReporte = new FiltroReporte();
        listaAnhos = reporteService.listadoAnhoCaso();
        cargarMeses();
        return "reporteGeneral";
    }

    public void resumenEjecutivo() throws JRException, IOException {
        listaResumenEjecutivo = new ArrayList<>();
        Integer totalCasos;
        Integer totalCasosMes;
        Integer totalActivos;
        Integer totalTotal;
        Integer totalLatentes;
        Integer totalActivosLatentes;
        Integer totalLatentesObservacion;
        Integer totalGeneralDialogo;
        Integer totalGeneralActivo;
        Integer totalGeneralDialogoProceso;
        Integer totalGeneraReunionesPreparatorias;
        Integer totalGeneraParticipacionDefensoria;
        Integer totalGeneraCasosViolencia;
        Integer totalGeneraCasosAccionesProtesta;
        Integer totalGeneralActuacion;
        Integer totalGeneralActuacionSupervisionPreventiva;
        Integer totalGeneralActuacionIntermediaciones;
        Integer totalGeneralActuacionAccionHumanitaria;
        Integer totalGeneralActuacionDefensaLegal;

        ElementoResumenEjecutivo ejecutivo = new ElementoResumenEjecutivo();
        /*UNIVERSO DE CASOS ACTIVOS Y LATENTES HASTA EL MES*/
        totalCasosMes = reporteEjecutivoService.totalCasosRegistradosMes(filtroReporte);

        totalCasos = reporteEjecutivoService.totalCasosRegistrados(filtroReporte);

        totalActivos = reporteEjecutivoService.totalCasosActivos(filtroReporte);
        totalTotal = reporteEjecutivoService.totalCasosTotales(filtroReporte);
        totalLatentes = reporteEjecutivoService.totalCasosLatentes(filtroReporte);
        totalActivosLatentes = reporteEjecutivoService.totalCasosActivosLatentes(filtroReporte);
        totalLatentesObservacion = reporteEjecutivoService.totalCasosLatentesObservacion(filtroReporte);
        totalGeneralDialogo = reporteEjecutivoService.totalGeneralCasosDialogo(filtroReporte);
        totalGeneralActivo = reporteEjecutivoService.totalGeneralCasosActivo(filtroReporte);
        totalGeneralDialogoProceso = reporteEjecutivoService.totalGeneralCasosDialogoProceso(filtroReporte);
        totalGeneraReunionesPreparatorias = reporteEjecutivoService
                .totalGeneralCasosReunionesPreparatorias(filtroReporte);
        totalGeneraParticipacionDefensoria = reporteEjecutivoService
                .totalGeneralCasosParticipacionDefensoria(filtroReporte);
        //totalGeneraCasosViolencia = reporteEjecutivoService.totalGeneralCasosEchoViolencia(filtroReporte);
        //        totalGeneraCasosAccionesProtesta = reporteEjecutivoService.totalGeneralCasosAccionesProtesta(filtroReporte);
        totalGeneralActuacion = reporteEjecutivoService.totalGeneralCasosActuacionDefensorial(filtroReporte);
        totalGeneralActuacionSupervisionPreventiva = reporteEjecutivoService
                .totalGeneralCasosActuacionDefensorialSupervisionPreventiva(filtroReporte);
        totalGeneralActuacionIntermediaciones = reporteEjecutivoService
                .totalGeneralCasosActuacionDefensorialIntermediaciones(filtroReporte);
        totalGeneralActuacionAccionHumanitaria = reporteEjecutivoService
                .totalGeneralCasosActuacionDefensorialAccionHumanitaria(filtroReporte);
        totalGeneralActuacionDefensaLegal = reporteEjecutivoService
                .totalGeneralCasosActuacionDefensorialDefensaLegal(filtroReporte);
        ejecutivo.setTitulo1("ESTADO DE LOS CONFLICTOS SOCIALES: "
                + MesesEnum.get(filtroReporte.getMes()).getValue() + " - 20" + filtroReporte.getAnhos());
        ejecutivo.setTotalGeneralActuacionDefensorial(totalGeneralActuacion);
        ejecutivo.setPorcentajeActuacionDefensorial(
                cambiarPorcentaje(totalCasos, totalGeneralActuacion, "DEL TOTAL DE CASOS"));
        ejecutivo.setTotalGeneralActuacionDefensorialSupervisionPreventiva(
                totalGeneralActuacionSupervisionPreventiva);
        ejecutivo.setTotalGeneralActuacionDefensorialIntermediaciones(totalGeneralActuacionIntermediaciones);
        ejecutivo.setTotalGeneralActuacionDefensorialAccionHumanitaria(totalGeneralActuacionAccionHumanitaria);
        ejecutivo.setTotalGeneralActuacionDefensorialDefensaLegal(totalGeneralActuacionDefensaLegal);
        //        ejecutivo.setAccionesProtestaTexto1(totalGeneraCasosAccionesProtesta+" ACCIONES DE PROTESTA COLECTIVA DURANTE EL MES "+cambiarPorcentaje(totalCasosMes,totalGeneraCasosAccionesProtesta, "RELACIONADOS CON CONFLICTOS"));
        //ejecutivo.setHechoViolenciaTexto1(totalGeneraCasosViolencia+" CASOS PRESENTARON AL MENOS UN HECHO DE VIOLENCIA DESDE QUE INICIARON "+cambiarPorcentaje(totalCasos,totalGeneraCasosViolencia , "DEL TOTAL DE CASOS"));
        ejecutivo.setProcedoDialogoTexto1(totalGeneraReunionesPreparatorias
                + " CASOS SE ENCUENTRAN EN REUNIONES PREPARATORIAS PARA EL DI?LOGO " + cambiarPorcentaje(
                        totalGeneralDialogo, totalGeneraReunionesPreparatorias, "DE LOS CASOS EN DIALOGO"));
        ejecutivo.setProcedoDialogoTexto2(totalGeneraParticipacionDefensoria
                + " CASOS TUVIERON PRESENCIA DE LA DEFENSOR?A EN LOS ESPACIOS DE DI?LOGO  " + cambiarPorcentaje(
                        totalGeneralDialogo, totalGeneraParticipacionDefensoria, "DE LOS CASOS EN DIALOGO"));
        ejecutivo.setTotalCasosGeneralDialogoProceso(totalGeneralDialogoProceso);
        ejecutivo.setPorcentajeGeneralDialogoProceso(
                cambiarPorcentaje(totalGeneralDialogo, totalGeneralDialogoProceso, "DE LOS CASOS EN DIALOGO"));
        ejecutivo.setTotalCasosGeneralDiagolo(totalGeneralDialogo);
        ejecutivo.setPorcentajeGeneralDiagolo(
                cambiarPorcentaje(totalGeneralActivo, totalGeneralDialogo, "DE LOS CASOS ACTIVOS"));
        ejecutivo.setTotalCasosActivoMes(totalActivos);
        ejecutivo.setTotalCasosMes(totalCasosMes);
        ejecutivo.setTotalCasosLatenteMes(totalLatentes);
        ejecutivo.setMesPublicacion(MesesEnum.get(filtroReporte.getMes()).getValue().toUpperCase());
        ejecutivo.setPorcentajeActivos(cambiarPorcentaje(totalCasosMes, totalActivos, "DEL TOTAL DE CASOS"));
        ejecutivo.setPorcentajeLatentes(cambiarPorcentaje(totalCasosMes, totalLatentes, "DEL TOTAL DE CASOS"));
        ejecutivo.setTotalCasosActivosLatentes(totalActivosLatentes);
        ejecutivo.setTotalCasosLatentesObservacion(totalLatentesObservacion);
        ejecutivo.setTotalCasosTotalMes(totalTotal);
        Integer totalCasosGeneralEscalamiento = reporteEjecutivoService
                .totalGeneralCasosFaceEscalamiento(filtroReporte);
        String porcentajeGeneralEscalamiento = cambiarPorcentaje(totalCasos, totalCasosGeneralEscalamiento);
        Integer totalCasosGeneralTemprana = reporteEjecutivoService.totalGeneralCasosFaceTemprana(filtroReporte);
        String porcentajeGeneralTemprana = cambiarPorcentaje(totalCasos, totalCasosGeneralTemprana);
        Integer totalCasosGeneralDesescalamiento = reporteEjecutivoService
                .totalGeneralCasosFaceDesescalamiento(filtroReporte);
        String porcentajeGeneralDesescalamiento = cambiarPorcentaje(totalCasos, totalCasosGeneralDesescalamiento);
        Integer totalCasosGeneralCrisis = reporteEjecutivoService.totalGeneralCasosFaceCrisis(filtroReporte);
        String porcentajeGeneralCrisis = cambiarPorcentaje(totalCasos, totalCasosGeneralCrisis);

        StringBuilder sb = new StringBuilder();
        sb.append("En el presente mes se registraron " + totalCasosMes + " conflictos: "
                + ejecutivo.getTotalCasosActivoMes() + " casos activos y " + ejecutivo.getTotalCasosLatenteMes()
                + " latentes (ver Grfico N 1). Del");
        sb.append("total de casos activos, " + ejecutivo.getTotalCasosGeneralDiagolo()
                + " se encuentran en fase de dilogo lo que representa el "
                + cambiarPorcentaje(totalCasos, ejecutivo.getTotalCasosGeneralDiagolo()) + " del total de los ");
        sb.append("casos registrados (ver Grfico N 2), " + totalCasosGeneralEscalamiento
                + " casos estn en fase de escalamiento (" + porcentajeGeneralEscalamiento + " de los casos), "
                + totalCasosGeneralDesescalamiento + "  ");
        sb.append("en fase desescalamiento (" + porcentajeGeneralDesescalamiento + " de los casos) y "
                + totalCasosGeneralTemprana + " en fase temprana (" + porcentajeGeneralTemprana
                + " de los casos). Cabe ");
        sb.append("sealar que hay " + totalCasosGeneralCrisis + " casos registrados en fase de crisis ("
                + porcentajeGeneralCrisis + " de los casos) (ver Anexo III). ");
        ejecutivo.setEstadoConflictoTexto(sb.toString());

        List<EstadoConflicto> ecs = new ArrayList<>();
        Integer filtroMes = Integer.parseInt(filtroReporte.getMes());
        Integer filtroAnho = Integer.parseInt(filtroReporte.getAnhos());

        for (int i = 0; i < 13; i++) {
            String filtroMesString = String.format("%2s", filtroMes).replace(' ', '0');
            String filtroAnhoString = String.format("%2s", filtroAnho).replace(' ', '0');
            FiltroReporte fr = new FiltroReporte();
            fr.setAnhos(filtroAnhoString);
            fr.setMes(filtroMesString);
            Integer latentes = reporteEjecutivoService.totalCasosLatentes(fr);
            Integer activos = reporteEjecutivoService.totalCasosActivos(fr);
            Integer total = reporteEjecutivoService.totalCasosRegistradosMes(fr);
            filtroMes--;
            if (filtroMes == 0) {
                filtroAnho--;
                filtroMes = 12;
            }
            EstadoConflicto ec = new EstadoConflicto(MesesEnum.get(filtroMesString).getValue(), activos, latentes,
                    total, "20" + filtroAnhoString);
            ecs.add(ec);
        }
        ejecutivo.setEstadoConflictos(ecs);

        Integer totalResueltos = reporteEjecutivoService.totalCasosResueltos(filtroReporte);
        ejecutivo.setTotalCasosResueltoMes(totalResueltos);
        Integer totalPropuestos = reporteEjecutivoService.totalCasosPropuestos(filtroReporte);
        String totalResueltosString = "";
        if (totalResueltos > 0) {
            totalResueltosString = reporteEjecutivoService.cadenaNombreCasosResueltos(filtroReporte);
        }
        String totalPropuestosString = reporteEjecutivoService.cadenaNombreCasosResueltos(filtroReporte);
        StringBuilder sb1 = new StringBuilder();
        sb1.append("Durante el mes se resolvieron " + totalResueltos + " casos y se incorpor " + totalPropuestos
                + " (ver Anexo I y Anexo II). Los casos resueltos ");
        sb1.append("son: " + totalResueltosString);
        sb1.append("Los casos resueltos son: " + totalPropuestosString + "\n\n");

        List<NuevoCaso> ncs = new ArrayList<>();
        Integer filtroMes2 = Integer.parseInt(filtroReporte.getMes());
        Integer filtroAnho2 = Integer.parseInt(filtroReporte.getAnhos());
        Integer sumaResuelto = 0;
        Integer sumaNuevo = 0;
        for (int i = 0; i < 13; i++) {
            String filtroMesString = String.format("%2s", filtroMes2).replace(' ', '0');
            String filtroAnhoString = String.format("%2s", filtroAnho2).replace(' ', '0');
            FiltroReporte fr = new FiltroReporte();
            fr.setAnhos(filtroAnhoString);
            fr.setMes(filtroMesString);
            Integer resue = reporteEjecutivoService.totalCasosResueltos(fr);
            Integer nuevo = reporteEjecutivoService.totalCasosPropuestos(fr);
            sumaResuelto = sumaResuelto + resue;
            sumaNuevo = sumaNuevo + nuevo;
            filtroMes2--;
            if (filtroMes2 == 0) {
                filtroAnho2--;
                filtroMes2 = 12;
            }
            NuevoCaso nc = new NuevoCaso(MesesEnum.get(filtroMesString).getValue(), resue, nuevo,
                    "20" + filtroAnhoString);
            ncs.add(nc);
        }
        sb1.append("Desde " + MesesEnum.get(filtroReporte.getMes()).getValue() + " del 20"
                + (Integer.parseInt(filtroReporte.getAnhos()) - 1) + " hasta "
                + MesesEnum.get(filtroReporte.getMes()).getValue() + " del 20"
                + (Integer.parseInt(filtroReporte.getAnhos())) + " se han resuelto " + sumaResuelto
                + " casos y se han incorporado " + sumaNuevo + " (ver Grfico N 3).");
        ejecutivo.setCasosNuevosTexto(sb1.toString());

        /*grafic 004 005**/
        List<ElementoResumenEjecutivo> ejecutivos1 = reporteEjecutivoService
                .totalMensualCasosRegistrados(filtroReporte);
        List<ElementoResumenEjecutivo> ejecutivos2 = reporteEjecutivoService
                .totalMensualCasosActivos(filtroReporte);
        List<ElementoNombreValor> elementoNombreValors1 = new ArrayList<>();
        List<ElementoNombreValor> elementoNombreValors2 = new ArrayList<>();
        for (ElementoResumenEjecutivo ere1 : ejecutivos1) {
            ElementoNombreValor env = new ElementoNombreValor(ere1.getNombre(), ere1.getValor());
            elementoNombreValors1.add(env);
        }
        for (ElementoResumenEjecutivo ere1 : ejecutivos2) {
            ElementoNombreValor env = new ElementoNombreValor(ere1.getNombre(), ere1.getValor());
            elementoNombreValors2.add(env);
        }
        /*grafic 004 005**/

        /*grafic 006**/
        int gobNacionalSum = 0;
        int gobRegionalSum = 0;
        int gobLocalSum = 0;
        int poderLegislativoSum = 0;
        int porderJudicialSum = 0;
        int otrosOrganismosSum = 0;
        int totalGob = 0;
        List<ElementoResumenEjecutivo> nivelesParametros = reporteEjecutivoService
                .totalMensualNivelGobierno(filtroReporte);

        for (ElementoResumenEjecutivo ere : nivelesParametros) {
            if (StringUtils.equals(ere.getValorParametro(), "01")) {
                gobNacionalSum++;
            }
            if (StringUtils.equals(ere.getValorParametro(), "02")) {
                gobRegionalSum++;
            }
            if (StringUtils.equals(ere.getValorParametro(), "03")) {
                gobLocalSum++;
            }
            if (StringUtils.equals(ere.getValorParametro(), "04")) {
                poderLegislativoSum++;
            }
            if (StringUtils.equals(ere.getValorParametro(), "05")) {
                porderJudicialSum++;
            }
            if (StringUtils.equals(ere.getValorParametro(), "05")) {
                porderJudicialSum++;
            }
        }
        totalGob = gobNacionalSum + gobRegionalSum + gobLocalSum + poderLegislativoSum + porderJudicialSum
                + otrosOrganismosSum;
        List<ElementoNombreValor> listNivelGob = new ArrayList<>();
        ElementoNombreValor env1 = new ElementoNombreValor();
        env1.setNombre("Total");
        env1.setValor(totalGob);
        env1.setPorcentaje("100.0%");
        listNivelGob.add(env1);

        for (ElementoResumenEjecutivo ere : nivelesParametros) {
            ElementoNombreValor env = new ElementoNombreValor();
            env.setNombre(ere.getNombre());
            env.setValor(ere.getValor());
            env.setPorcentaje(cambiarPorcentaje(totalGob, ere.getValor()));
            listNivelGob.add(env);
        }
        ejecutivo.setListaNivelGobierno(listNivelGob);
        listNivelGob.remove(0);
        ejecutivo.setListaNivelGobiernoGrafico(listNivelGob);
        /*grafic 006**/

        StringBuilder sb2 = new StringBuilder();
        sb2.append("As, en el mes de " + MesesEnum.get(filtroReporte.getMes()).getValue() + " de 20"
                + filtroReporte.getAnhos() + ", la principal competencia ");
        sb2.append(
                "(entre varias que coexisten) en la atencin de los conflictos sociales registrados recae en el Gobierno Nacional, con "
                        + gobNacionalSum + " casos (" + cambiarPorcentaje(totalGob, gobNacionalSum) + "), ");
        sb2.append("los Gobiernos Regionales con " + gobRegionalSum + " casos ("
                + cambiarPorcentaje(totalGob, gobRegionalSum) + "); los Gobiernos Locales con " + gobLocalSum
                + " casos (" + cambiarPorcentaje(totalGob, gobLocalSum)
                + "), a continuacin el cuadro por competencias:");
        ejecutivo.setNivelGobiernoTexto(sb2.toString());
        /*grafic 006**/
        ejecutivo.setListaMensualCasosTotales(elementoNombreValors1);
        ejecutivo.setListaMensualCasosActivos(elementoNombreValors2);

        /**grafic 007*/
        ejecutivo.setElementoReportesAutoridad(generarReporteAutoridadReport());
        /**grafic 007*/
        /**grafic 008*/
        ejecutivo.setElementoReportesDepartamentoEstado(generarReporteEstadoRegion());

        for (ElementoReporte er : ejecutivo.getElementoReportesDepartamentoEstado()) {
            if (StringUtils.equals("AMAZONAS", er.getTipoConflicto())) {
                ejecutivo.setAmazonasAct(er.getActivo());
                ejecutivo.setAmazonasLat(er.getLatente());
                ejecutivo.setAmazonasNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("ANCASH", er.getTipoConflicto())) {
                ejecutivo.setAncashAct(er.getActivo());
                ejecutivo.setAncashLat(er.getLatente());
                ejecutivo.setAncashNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("APURIMAC", er.getTipoConflicto())) {
                ejecutivo.setApurimacAct(er.getActivo());
                ejecutivo.setApurimacLat(er.getLatente());
                ejecutivo.setApurimacNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("AREQUIPA", er.getTipoConflicto())) {
                ejecutivo.setArequipaAct(er.getActivo());
                ejecutivo.setArequipaLat(er.getLatente());
                ejecutivo.setArequipaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("AYACUCHO", er.getTipoConflicto())) {
                ejecutivo.setAyacuchoAct(er.getActivo());
                ejecutivo.setAyacuchoLat(er.getLatente());
                ejecutivo.setAyacuchoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("CAJAMARCA", er.getTipoConflicto())) {
                ejecutivo.setCajamarcaAct(er.getActivo());
                ejecutivo.setCajamarcaLat(er.getLatente());
                ejecutivo.setCajamarcaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("CUSCO", er.getTipoConflicto())) {
                ejecutivo.setCuscoAct(er.getActivo());
                ejecutivo.setCuscoLat(er.getLatente());
                ejecutivo.setCuscoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("HUANCAVELICA", er.getTipoConflicto())) {
                ejecutivo.setHuancavelicaAct(er.getActivo());
                ejecutivo.setHuancavelicaLat(er.getLatente());
                ejecutivo.setHuancavelicaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("HUANUCO", er.getTipoConflicto())) {
                ejecutivo.setHuanucoAct(er.getActivo());
                ejecutivo.setHuanucoLat(er.getLatente());
                ejecutivo.setHuanucoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("ICA", er.getTipoConflicto())) {
                ejecutivo.setIcaAct(er.getActivo());
                ejecutivo.setIcaLat(er.getLatente());
                ejecutivo.setIcaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("JUNIN", er.getTipoConflicto())) {
                ejecutivo.setJuninAct(er.getActivo());
                ejecutivo.setJuninLat(er.getLatente());
                ejecutivo.setJuninNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("LA LIBERTAD", er.getTipoConflicto())) {
                ejecutivo.setLaLibertadAct(er.getActivo());
                ejecutivo.setLaLibertadLat(er.getLatente());
                ejecutivo.setLaLibertadNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("LAMBAYEQUE", er.getTipoConflicto())) {
                ejecutivo.setLambayequeAct(er.getActivo());
                ejecutivo.setLambayequeLat(er.getLatente());
                ejecutivo.setLambayequeNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("LIMA", er.getTipoConflicto())) {
                ejecutivo.setLimaAct(er.getActivo());
                ejecutivo.setLimaLat(er.getLatente());
                ejecutivo.setLimaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("LORETO", er.getTipoConflicto())) {
                ejecutivo.setLoretoAct(er.getActivo());
                ejecutivo.setLoretoLat(er.getLatente());
                ejecutivo.setLoretoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("MADRE DE DIOS", er.getTipoConflicto())) {
                ejecutivo.setMadreDeDiosAct(er.getActivo());
                ejecutivo.setMadreDeDiosLat(er.getLatente());
                ejecutivo.setMadreDeDiosNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("MOQUEGUA", er.getTipoConflicto())) {
                ejecutivo.setMoqueguaAct(er.getActivo());
                ejecutivo.setMoqueguaLat(er.getLatente());
                ejecutivo.setMoqueguaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("PASCO", er.getTipoConflicto())) {
                ejecutivo.setPascoAct(er.getActivo());
                ejecutivo.setPascoLat(er.getLatente());
                ejecutivo.setPascoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("PIURA", er.getTipoConflicto())) {
                ejecutivo.setPiuraAct(er.getActivo());
                ejecutivo.setPiuraLat(er.getLatente());
                ejecutivo.setPiuraNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("PUNO", er.getTipoConflicto())) {
                ejecutivo.setPunoAct(er.getActivo());
                ejecutivo.setPunoLat(er.getLatente());
                ejecutivo.setPunoNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("SAN MARTIN", er.getTipoConflicto())) {
                ejecutivo.setSanMartinAct(er.getActivo());
                ejecutivo.setSanMartinLat(er.getLatente());
                ejecutivo.setSanMartinNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("TACNA", er.getTipoConflicto())) {
                ejecutivo.setTacnaAct(er.getActivo());
                ejecutivo.setTacnaLat(er.getLatente());
                ejecutivo.setTacnaNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("TUMBES", er.getTipoConflicto())) {
                ejecutivo.setTumbesAct(er.getActivo());
                ejecutivo.setTumbesLat(er.getLatente());
                ejecutivo.setTumbesNom(er.getTipoConflicto());
            }
            if (StringUtils.equals("CALLAO", er.getTipoConflicto())) {
                ejecutivo.setCallaoAct(er.getActivo());
                ejecutivo.setCallaoLat(er.getLatente());
                ejecutivo.setCallaoNom(er.getTipoConflicto());
            }

            if (StringUtils.equals("UCAYALI", er.getTipoConflicto())) {
                ejecutivo.setUcayaliAct(er.getActivo());
                ejecutivo.setUcayaliLat(er.getLatente());
                ejecutivo.setUcayaliNom(er.getTipoConflicto());
            }
        }

        /**grafic 008*/
        ejecutivo.setNuevoCasos(ncs);

        List<FaceTotal> fts = new ArrayList<>();

        fts.add(new FaceTotal("Temprana", totalCasosGeneralTemprana));
        fts.add(new FaceTotal("Escalamiento", totalCasosGeneralEscalamiento));
        fts.add(new FaceTotal("Crisis", totalCasosGeneralCrisis));
        fts.add(new FaceTotal("Desescalamiento", totalCasosGeneralDesescalamiento));
        fts.add(new FaceTotal("Dialogo", totalGeneralDialogo));
        ejecutivo.setFaceTotals(fts);
        ejecutivo.setImagePath001(ConstantesUtil.BASE_URL_IMAGEPATH + "portada01.png");
        ejecutivo.setImagePath002(ConstantesUtil.BASE_URL_IMAGEPATH + "portada02.png");
        listaResumenEjecutivo.add(ejecutivo);

        generarReportePublicoMensual();
    }

    public List<ElementoReporte> generarReporteEstadoRegion() {
        List<Caso> listaCasosReporte1 = null;
        FiltroReporte fr = new FiltroReporte();
        fr.setClasificacion("0");
        listaCasosReporte1 = reporteGeneralService.reporteCaso(fr);
        List<Catalogo> catalogos = null;

        catalogos = catalogoService.parametroPorPadre(290);

        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int borradorSum = 0;
        int propuestaSum = 0;
        int observacionSum = 0;
        int activoSum = 0;
        int latenteSum = 0;
        int resueltoSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;

            listaCasosFl = filtrarCasosPorRegion(listaCasosReporte1, cata.getValorParametro());

            int borrador = 0;
            int propuesta = 0;
            int observacion = 0;
            int activo = 0;
            int latente = 0;
            int resuelto = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoEstado(), "01")) {
                    borrador++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "02")) {
                    propuesta++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "03")) {
                    observacion++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "04")) {
                    activo++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "05")) {
                    latente++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "06")) {
                    resuelto++;
                }
            }
            borradorSum = borradorSum + borrador;
            propuestaSum = propuestaSum + propuesta;
            observacionSum = observacionSum + observacion;
            activoSum = activoSum + activo;
            latenteSum = latenteSum + latente;
            resueltoSum = resueltoSum + resuelto;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, borrador, propuesta,
                    observacion, activo, latente, resuelto, null);

            elementoReportes.add(er);
        }
        er1.setBorrador(borradorSum);
        er1.setPropuesta(propuestaSum);
        er1.setObservacion(observacionSum);
        er1.setActivo(activoSum);
        er1.setLatente(latenteSum);
        er1.setResuelto(resueltoSum);
        er1.setTotal(borradorSum + propuestaSum + observacionSum + activoSum + latenteSum + latenteSum);
        elementoReportes.add(0, er1);

        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getBorrador() + ers.getPropuesta() + ers.getObservacion() + ers.getActivo()
                    + ers.getLatente() + ers.getResuelto();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
        return elementoReportes;
    }

    private List<ElementoReporte> generarReporteAutoridadReport() {
        List<Caso> listaCasosReporte1 = null;
        FiltroReporte fr = new FiltroReporte();
        fr.setClasificacion("0");
        listaCasosReporte1 = reporteGeneralService.reporteCaso(fr);
        List<Catalogo> catalogos = null;

        catalogos = catalogoService.parametroPorPadre(90);

        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int gobNacionalSum = 0;
        int gobRegionalSum = 0;
        int gobLocalSum = 0;
        int poderLegislativoSum = 0;
        int porderJudicialSum = 0;
        int otrosOrganismosSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;

            listaCasosFl = filtrarCasosPorTipo(listaCasosReporte1, cata.getValorParametro());

            int gobNacional = 0;
            int gobRegional = 0;
            int gobLocal = 0;
            int poderLegislativo = 0;
            int porderJudicial = 0;
            int otrosOrganismos = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoAsunto(), "01")) {
                    gobNacional++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "02")) {
                    gobRegional++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "03")) {
                    gobLocal++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "04")) {
                    poderLegislativo++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "05")) {
                    porderJudicial++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "06")) {
                    otrosOrganismos++;
                }
            }
            gobNacionalSum = gobNacionalSum + gobNacional;
            gobRegionalSum = gobRegionalSum + gobRegional;
            gobLocalSum = gobLocalSum + gobLocal;
            poderLegislativoSum = poderLegislativoSum + poderLegislativo;
            porderJudicialSum = porderJudicialSum + porderJudicial;
            otrosOrganismosSum = otrosOrganismosSum + otrosOrganismos;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, gobNacional,
                    gobRegional, gobLocal, poderLegislativo, porderJudicial, otrosOrganismos);
            elementoReportes.add(er);
        }
        er1.setGobNacional(gobNacionalSum);
        er1.setGobRegional(gobRegionalSum);
        er1.setGobLocal(gobLocalSum);
        er1.setPoderLegislativo(poderLegislativoSum);
        er1.setPoderJudicial(porderJudicialSum);
        er1.setOrganismoAutonomos(otrosOrganismosSum);
        er1.setTotal(gobNacionalSum + gobRegionalSum + gobLocalSum + poderLegislativoSum + porderJudicialSum
                + otrosOrganismosSum);
        elementoReportes.add(0, er1);
        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getGobLocal() + ers.getGobRegional() + ers.getGobNacional() + ers.getPoderJudicial()
                    + ers.getPoderLegislativo() + ers.getOrganismoAutonomos();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
        return elementoReportes;
    }

    private String cambiarPorcentaje(int total, int valor, String texto) {
        Double tota2 = valor * 1.0;
        double porcent = tota2 * 100 / total;
        porcent = (double) ((int) (porcent * 100) / 100.0);
        String porcentaj = "";
        if (porcent == 0) {
            porcentaj = "( 0% " + texto + ")";
        } else {
            porcentaj = "( " + Double.toString(porcent) + "% " + texto + ")";
        }
        return porcentaj;
    }

    private String cambiarPorcentaje(int total, int valor) {
        Double tota2 = valor * 1.0;
        double porcent = tota2 * 100 / total;
        porcent = (double) ((int) (porcent * 100) / 100.0);
        String porcentaj = "";
        if (porcent == 0) {
            porcentaj = "0%";
        } else {
            porcentaj = Double.toString(porcent) + "%";
        }
        return porcentaj;
    }

    public String reportePublic() {
        filtroReporte = new FiltroReporte();
        listaAnhos = reporteService.listadoAnhoCaso();
        cargarMeses();
        return "reportePublic";
    }

    public void cargarReporteMensual() {
        RegistroCarga registroCarga = new RegistroCarga();
        registroCarga.setFecha(new Date());
        registroCarga.setUltimoMes("SI");
        registroCarga.setUltimoAnho("SI");
        //compararUltimoMes();
        cargarCodigoCarga(registroCarga);
        reporteService.cargaCasoMes(registroCarga.getId());
    }

    private void cargarCodigoCarga(RegistroCarga registrocar) {
        registroCargaService.registroCargaInsert(registrocar);
    }

    public void initJasperReporteEjecutivo() throws JRException {
        JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(listaResumenEjecutivo);
        jasperPrint = JasperFillManager.fillReport(
                ConstantesUtil.BASE_URL_REPORT + "reportePublicResumenEjecutivo.jasper", new HashMap(),
                beanCollectionDataSource);
    }

    public void generarReportePublicoMensual() throws JRException, IOException {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String fecha = simpleDateFormat.format(date);
        initJasperReporteEjecutivo();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletResponse httpServletResponse;
        httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext()
                .getResponse();
        httpServletResponse.setContentType("application/pdf");
        httpServletResponse.addHeader("Content-disposition", "attachment; filename=" + fecha + "_reporte.pdf");
        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
        facesContext.responseComplete();
        facesContext.renderResponse();
    }

    private void cargarMeses() {
        listasMeses = new HashMap();
        listasMeses.put("Enero", "01");
        listasMeses.put("Febrero", "02");
        listasMeses.put("Marzo", "03");
        listasMeses.put("Abril", "04");
        listasMeses.put("Mayo", "05");
        listasMeses.put("Junio", "06");
        listasMeses.put("Julio", "07");
        listasMeses.put("Agosto", "08");
        listasMeses.put("Septiembre", "09");
        listasMeses.put("Octubre", "10");
        listasMeses.put("Noviembre", "11");
        listasMeses.put("Diciembre", "12");
        listasMeses = sortByValues((HashMap) listasMeses);
    }

    private static HashMap sortByValues(HashMap map) {
        List list = new LinkedList(map.entrySet());
        // Defined Custom Comparator here
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue());
            }
        });

        // Here I am copying the sorted list in HashMap
        // using LinkedHashMap to preserve the insertion order
        HashMap sortedHashMap = new LinkedHashMap();
        for (Iterator it = list.iterator(); it.hasNext();) {
            Map.Entry entry = (Map.Entry) it.next();
            sortedHashMap.put(entry.getKey(), entry.getValue());
        }
        return sortedHashMap;
    }

    public void generaReporte() {
        listaCasosReporte = null;
        listaCasosReporte = reporteGeneralService.reporteCaso(filtroReporte);
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(1);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(2);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(3);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(4);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("06")) {
            generarReporteFase(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(7);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(1);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(2);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(3);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(4);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("03")) {
            generarReporteTipo(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(1);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(2);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(3);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(4);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("04")) {
            generarReporteAutoridad(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(1);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(2);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(3);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(4);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("07")) {
            generarReporteMecanismo(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(1);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(2);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(3);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(4);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("05")) {
            generarReporteEstado(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(6);
        }
        if (filtroReporte.getColumna().equals("02") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(1);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(2);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(3);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(4);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("08")) {
            generarReporteParticipacion(5);
        }
        if (filtroReporte.getColumna().equals("01") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(7);
        }
        if (filtroReporte.getColumna().equals("03") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(1);
        }
        if (filtroReporte.getColumna().equals("04") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(2);
        }
        if (filtroReporte.getColumna().equals("05") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(3);
        }
        if (filtroReporte.getColumna().equals("06") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(4);
        }
        if (filtroReporte.getColumna().equals("07") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(5);
        }
        if (filtroReporte.getColumna().equals("08") && filtroReporte.getFila().equals("02")) {
            generarReporteDepartamento(6);
        }
    }

    public void generarReporteDepartamento(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(120);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int amazonasSum = 0;
        int ancashSum = 0;
        int apurimacSum = 0;
        int arequipaSum = 0;
        int ayacuchoSum = 0;
        int cajamarcaSum = 0;
        int cuscoSum = 0;
        int huancavelicaSum = 0;
        int huanucoSum = 0;
        int icaSum = 0;
        int juninSum = 0;
        int laLibertadSum = 0;
        int lambayequeSum = 0;
        int limaSum = 0;
        int loretoSum = 0;
        int madreDeDiosSum = 0;
        int moqueguaSum = 0;
        int pascoSum = 0;
        int piuraSum = 0;
        int punoSum = 0;
        int sanMartinSum = 0;
        int tacnaSum = 0;
        int tumbesSum = 0;
        int callaoSum = 0;
        int ucayaliSum = 0;

        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }

            int amazonas = 0;
            int ancash = 0;
            int apurimac = 0;
            int arequipa = 0;
            int ayacucho = 0;
            int cajamarca = 0;
            int cusco = 0;
            int huancavelica = 0;
            int huanuco = 0;
            int ica = 0;
            int junin = 0;
            int laLibertad = 0;
            int lambayeque = 0;
            int lima = 0;
            int loreto = 0;
            int madreDeDios = 0;
            int moquegua = 0;
            int pasco = 0;
            int piura = 0;
            int puno = 0;
            int sanMartin = 0;
            int tacna = 0;
            int tumbes = 0;
            int callao = 0;
            int ucayali = 0;

            for (Caso cs : listaCasosFl) {
                if (cs.getIdDepartamento() != null) {
                    if (StringUtils.equals(cs.getIdDepartamento(), "1")) {
                        amazonas++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "2")) {
                        ancash++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "3")) {
                        apurimac++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "4")) {
                        arequipa++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "5")) {
                        ayacucho++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "6")) {
                        cajamarca++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "7")) {
                        cusco++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "8")) {
                        huancavelica++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "9")) {
                        huanuco++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "10")) {
                        ica++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "11")) {
                        junin++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "12")) {
                        laLibertad++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "13")) {
                        lambayeque++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "14")) {
                        lima++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "15")) {
                        loreto++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "16")) {
                        madreDeDios++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "17")) {
                        moquegua++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "18")) {
                        pasco++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "19")) {
                        piura++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "20")) {
                        puno++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "21")) {
                        sanMartin++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "22")) {
                        tacna++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "23")) {
                        tumbes++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "24")) {
                        callao++;
                    }
                    if (StringUtils.equals(cs.getIdDepartamento(), "25")) {
                        ucayali++;
                    }
                }
            }
            amazonasSum = amazonasSum + amazonas;
            ancashSum = ancashSum + ancash;
            apurimacSum = apurimacSum + apurimac;
            arequipaSum = arequipaSum + arequipa;
            ayacuchoSum = ayacuchoSum + ayacucho;
            cajamarcaSum = cajamarcaSum + cajamarca;
            cuscoSum = cuscoSum + cusco;
            huancavelicaSum = huancavelicaSum + huancavelica;
            huanucoSum = huanucoSum + huanuco;
            icaSum = icaSum + ica;
            juninSum = juninSum + junin;
            laLibertadSum = laLibertadSum + laLibertad;
            lambayequeSum = lambayequeSum + lambayeque;
            limaSum = limaSum + lima;
            loretoSum = loretoSum + loreto;
            madreDeDiosSum = madreDeDiosSum + madreDeDios;
            moqueguaSum = moqueguaSum + moquegua;
            pascoSum = pascoSum + pasco;
            piuraSum = piuraSum + piura;
            punoSum = punoSum + puno;
            sanMartinSum = sanMartinSum + sanMartin;
            tacnaSum = tacnaSum + tacna;
            tumbesSum = tumbesSum + tumbes;
            callaoSum = callaoSum + callao;
            ucayaliSum = ucayaliSum + ucayali;

            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, amazonas, ancash,
                    apurimac, arequipa, ayacucho, cajamarca, cusco, huancavelica, huanuco, ica, junin, laLibertad,
                    lambayeque, lima, loreto, madreDeDios, moquegua, pasco, piura, puno, sanMartin, tacna, tumbes,
                    callao, ucayali);

            elementoReportes.add(er);
        }
        er1.setAmazonas(amazonasSum);
        er1.setAncash(ancashSum);
        er1.setArequipa(arequipaSum);
        er1.setApurimac(apurimacSum);
        er1.setAyacucho(ayacuchoSum);
        er1.setCajamarca(cajamarcaSum);
        er1.setCusco(cuscoSum);
        er1.setHuancavelica(huancavelicaSum);
        er1.setHuanuco(huanucoSum);
        er1.setIca(icaSum);
        er1.setJunin(juninSum);
        er1.setLaLibertad(laLibertadSum);
        er1.setLambayeque(lambayequeSum);
        er1.setLima(limaSum);
        er1.setLoreto(loretoSum);
        er1.setMadreDeDios(madreDeDiosSum);
        er1.setMoquegua(moqueguaSum);
        er1.setPasco(pascoSum);
        er1.setPiura(piuraSum);
        er1.setPuno(punoSum);
        er1.setSanMartin(sanMartinSum);
        er1.setTacna(tacnaSum);
        er1.setTumbes(tumbesSum);
        er1.setCallao(callaoSum);
        er1.setUcayali(ucayaliSum);

        er1.setTotal(amazonasSum + ancashSum + apurimacSum + arequipaSum + ayacuchoSum + cajamarcaSum + cuscoSum
                + huancavelicaSum + huanucoSum + icaSum + juninSum + laLibertadSum + lambayequeSum + limaSum
                + loretoSum + madreDeDiosSum + moqueguaSum + pascoSum + piuraSum + punoSum + sanMartinSum + tacnaSum
                + tumbesSum + callaoSum + ucayaliSum);
        elementoReportes.add(0, er1);

        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getAmazonas() + ers.getAncash() + ers.getApurimac() + ers.getAyacucho()
                    + ers.getCajamarca() + ers.getCusco() + ers.getHuancavelica() + ers.getHuanuco()
                    + ers.getHuancavelica() + ers.getIca() + ers.getJunin() + ers.getLaLibertad()
                    + ers.getLambayeque() + ers.getLima() + ers.getLoreto() + ers.getMadreDeDios()
                    + ers.getMoquegua() + ers.getPasco() + ers.getPiura() + ers.getPuno() + ers.getSanMartin()
                    + ers.getTacna() + ers.getTumbes() + ers.getCallao() + ers.getUcayali();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteParticipacion(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(120);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int intermediadorSum = 0;
        int promotorSum = 0;
        int observadorSum = 0;
        int mediadorSum = 0;
        int participacionSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            int intermediador = 0;
            int promotor = 0;
            int observador = 0;
            int mediador = 0;
            int participacion = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoParticipacionCaso(), "01")) {
                    intermediador++;
                }
                if (StringUtils.equals(cs.getTipoParticipacionCaso(), "02")) {
                    promotor++;
                }
                if (StringUtils.equals(cs.getTipoParticipacionCaso(), "03")) {
                    observador++;
                }
                if (StringUtils.equals(cs.getTipoParticipacionCaso(), "04")) {
                    mediador++;
                }
                if (StringUtils.equals(cs.getTipoParticipacionCaso(), "05")) {
                    participacion++;
                }
            }
            intermediadorSum = intermediadorSum + intermediador;
            promotorSum = promotorSum + promotor;
            observadorSum = observadorSum + observador;
            mediadorSum = mediadorSum + mediador;
            participacionSum = participacionSum + participacion;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, intermediador, promotor,
                    observador, mediador, participacion, null, null, null);
            elementoReportes.add(er);
        }
        er1.setIntermediador(intermediadorSum);
        er1.setPromotor(promotorSum);
        er1.setObservador(observadorSum);
        er1.setMediador(mediadorSum);
        er1.setParticipacion(participacionSum);
        er1.setTotal(intermediadorSum + promotorSum + observadorSum + mediadorSum + participacionSum);
        elementoReportes.add(0, er1);

        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getIntermediador() + ers.getPromotor() + ers.getObservador() + ers.getMediador()
                    + ers.getParticipacion();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteEstado(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int borradorSum = 0;
        int propuestaSum = 0;
        int observacionSum = 0;
        int activoSum = 0;
        int latenteSum = 0;
        int resueltoSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorRegion(listaCasosReporte, cata.getValorParametro());
            }
            int borrador = 0;
            int propuesta = 0;
            int observacion = 0;
            int activo = 0;
            int latente = 0;
            int resuelto = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoEstado(), "01")) {
                    borrador++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "02")) {
                    propuesta++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "03")) {
                    observacion++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "04")) {
                    activo++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "05")) {
                    latente++;
                }
                if (StringUtils.equals(cs.getTipoEstado(), "06")) {
                    resuelto++;
                }
            }
            borradorSum = borradorSum + borrador;
            propuestaSum = propuestaSum + propuesta;
            observacionSum = observacionSum + observacion;
            activoSum = activoSum + activo;
            latenteSum = latenteSum + latente;
            resueltoSum = resueltoSum + resuelto;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, borrador, propuesta,
                    observacion, activo, latente, resuelto, null);

            elementoReportes.add(er);
        }
        er1.setBorrador(borradorSum);
        er1.setPropuesta(propuestaSum);
        er1.setObservacion(observacionSum);
        er1.setActivo(activoSum);
        er1.setLatente(latenteSum);
        er1.setResuelto(resueltoSum);
        er1.setTotal(borradorSum + propuestaSum + observacionSum + activoSum + latenteSum + latenteSum);
        elementoReportes.add(0, er1);

        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getBorrador() + ers.getPropuesta() + ers.getObservacion() + ers.getActivo()
                    + ers.getLatente() + ers.getResuelto();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteMecanismo(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(120);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int negociacionDirectaSum = 0;
        int negociacionMediadaSum = 0;
        int comisionAltoSum = 0;
        int reunionesPreparatoriasSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorRegion(listaCasosReporte, cata.getValorParametro());
            }
            int negociacionDirecta = 0;
            int negociacionMediada = 0;
            int comisionAlto = 0;
            int reunionesPreparatorias = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoMecanismo(), "01")) {
                    negociacionDirecta++;
                }
                if (StringUtils.equals(cs.getTipoMecanismo(), "02")) {
                    negociacionMediada++;
                }
                if (StringUtils.equals(cs.getTipoMecanismo(), "03")) {
                    comisionAlto++;
                }
                if (StringUtils.equals(cs.getTipoMecanismo(), "04")) {
                    reunionesPreparatorias++;
                }
            }
            negociacionDirectaSum = negociacionDirectaSum + negociacionDirecta;
            negociacionMediadaSum = negociacionMediadaSum + negociacionMediada;
            comisionAltoSum = comisionAltoSum + comisionAlto;
            reunionesPreparatoriasSum = reunionesPreparatoriasSum + reunionesPreparatorias;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, negociacionDirecta,
                    negociacionMediada, comisionAlto, reunionesPreparatorias);

            elementoReportes.add(er);
        }
        er1.setNegociacionDirecta(negociacionDirectaSum);
        er1.setNegociacionMediada(negociacionMediadaSum);
        er1.setComisionAlto(comisionAltoSum);
        er1.setReunionesPreparatorias(reunionesPreparatoriasSum);
        er1.setTotal(negociacionDirectaSum + negociacionMediadaSum + comisionAltoSum + reunionesPreparatoriasSum);
        elementoReportes.add(0, er1);
        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getNegociacionDirecta() + ers.getNegociacionMediada() + ers.getComisionAlto()
                    + ers.getReunionesPreparatorias();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteAutoridad(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(120);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int gobNacionalSum = 0;
        int gobRegionalSum = 0;
        int gobLocalSum = 0;
        int poderLegislativoSum = 0;
        int porderJudicialSum = 0;
        int otrosOrganismosSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorRegion(listaCasosReporte, cata.getValorParametro());
            }
            int gobNacional = 0;
            int gobRegional = 0;
            int gobLocal = 0;
            int poderLegislativo = 0;
            int porderJudicial = 0;
            int otrosOrganismos = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoAsunto(), "01")) {
                    gobNacional++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "02")) {
                    gobRegional++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "03")) {
                    gobLocal++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "04")) {
                    poderLegislativo++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "05")) {
                    porderJudicial++;
                }
                if (StringUtils.equals(cs.getTipoAsunto(), "06")) {
                    otrosOrganismos++;
                }
            }
            gobNacionalSum = gobNacionalSum + gobNacional;
            gobRegionalSum = gobRegionalSum + gobRegional;
            gobLocalSum = gobLocalSum + gobLocal;
            poderLegislativoSum = poderLegislativoSum + poderLegislativo;
            porderJudicialSum = porderJudicialSum + porderJudicial;
            otrosOrganismosSum = otrosOrganismosSum + otrosOrganismos;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, gobNacional,
                    gobRegional, gobLocal, poderLegislativo, porderJudicial, otrosOrganismos);
            elementoReportes.add(er);
        }
        er1.setGobNacional(gobNacionalSum);
        er1.setGobRegional(gobRegionalSum);
        er1.setGobLocal(gobLocalSum);
        er1.setPoderLegislativo(poderLegislativoSum);
        er1.setPoderJudicial(porderJudicialSum);
        er1.setOrganismoAutonomos(otrosOrganismosSum);
        er1.setTotal(gobNacionalSum + gobRegionalSum + gobLocalSum + poderLegislativoSum + porderJudicialSum
                + otrosOrganismosSum);
        elementoReportes.add(0, er1);
        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getGobLocal() + ers.getGobRegional() + ers.getGobNacional() + ers.getPoderJudicial()
                    + ers.getPoderLegislativo() + ers.getOrganismoAutonomos();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteTipo(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(120);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int gobiernoLocalSum = 0;
        int gobiernoRegionalSum = 0;
        int gobiernoNacionalSum = 0;
        int comunalSum = 0;
        int cultivoCocaSum = 0;
        int demarcacionTerritorialSum = 0;
        int electoralSum = 0;
        int laboralSum = 0;
        int socioambientaSum = 0;
        int otrosSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorFace(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorRegion(listaCasosReporte, cata.getValorParametro());
            }
            int gobiernoLocal = 0;
            int gobiernoRegional = 0;
            int gobiernoNacional = 0;
            int comunal = 0;
            int cultivoCoca = 0;
            int demarcacionTerritorial = 0;
            int electoral = 0;
            int laboral = 0;
            int socioambienta = 0;
            int otros = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipo(), "01")) {
                    gobiernoLocal++;
                }
                if (StringUtils.equals(cs.getTipo(), "02")) {
                    gobiernoNacional++;
                }
                if (StringUtils.equals(cs.getTipo(), "03")) {
                    gobiernoRegional++;
                }
                if (StringUtils.equals(cs.getTipo(), "04")) {
                    comunal++;
                }
                if (StringUtils.equals(cs.getTipo(), "05")) {
                    cultivoCoca++;
                }
                if (StringUtils.equals(cs.getTipo(), "06")) {
                    demarcacionTerritorial++;
                }
                if (StringUtils.equals(cs.getTipo(), "07")) {
                    electoral++;
                }
                if (StringUtils.equals(cs.getTipo(), "08")) {
                    laboral++;
                }
                if (StringUtils.equals(cs.getTipo(), "09")) {
                    socioambienta++;
                }
                if (StringUtils.equals(cs.getTipo(), "10")) {
                    otros++;
                }
            }
            gobiernoLocalSum = gobiernoLocalSum + gobiernoLocal;
            gobiernoRegionalSum = gobiernoRegionalSum + gobiernoRegional;
            gobiernoNacionalSum = gobiernoNacionalSum + gobiernoNacional;
            comunalSum = comunalSum + comunal;
            cultivoCocaSum = cultivoCocaSum + cultivoCoca;
            demarcacionTerritorialSum = demarcacionTerritorialSum + demarcacionTerritorial;
            electoralSum = electoralSum + electoral;
            laboralSum = laboralSum + laboral;
            socioambientaSum = socioambientaSum + socioambienta;
            otrosSum = otrosSum + otros;
            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, gobiernoLocal,
                    gobiernoRegional, gobiernoNacional, comunal, cultivoCoca, demarcacionTerritorial, electoral,
                    laboral, socioambienta, otros);
            elementoReportes.add(er);
        }
        er1.setGobiernoLocal(gobiernoLocalSum);
        er1.setGobiernoRegional(gobiernoRegionalSum);
        er1.setGobiernoNacional(gobiernoNacionalSum);
        er1.setComunal(comunalSum);
        er1.setCultivoCoca(cultivoCocaSum);
        er1.setDemarcacionTerritorial(demarcacionTerritorialSum);
        er1.setElectoral(electoralSum);
        er1.setLaboral(laboralSum);
        er1.setSocioambienta(socioambientaSum);
        er1.setOtros(otrosSum);
        er1.setTotal(gobiernoLocalSum + gobiernoRegionalSum + gobiernoNacionalSum + comunalSum + cultivoCocaSum
                + demarcacionTerritorialSum + electoralSum + laboralSum + socioambientaSum + otrosSum);
        elementoReportes.add(0, er1);
        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getGobiernoLocal() + ers.getGobiernoRegional() + ers.getGobiernoNacional()
                    + ers.getComunal() + ers.getCultivoCoca() + ers.getDemarcacionTerritorial() + ers.getElectoral()
                    + ers.getLaboral() + ers.getSocioambienta() + ers.getOtros();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    public void generarReporteFase(int ind) {
        List<Catalogo> catalogos = null;
        if (ind == 1) {
            catalogos = catalogoService.parametroPorPadre(90);
        }
        if (ind == 2) {
            catalogos = catalogoService.parametroPorPadre(110);
        }
        if (ind == 3) {
            catalogos = catalogoService.parametroPorPadre(210);
        }
        if (ind == 4) {
            catalogos = catalogoService.parametroPorPadre(220);
        }
        if (ind == 5) {
            catalogos = catalogoService.parametroPorPadre(230);
        }
        if (ind == 6) {
            catalogos = catalogoService.parametroPorPadre(280);
        }
        if (ind == 7) {
            catalogos = catalogoService.parametroPorPadre(290);
        }
        elementoReportes = new ArrayList<>();
        ElementoReporte er1 = new ElementoReporte();
        er1.setTipoConflicto("Total");
        int tempranaSum = 0;
        int escalamientoSum = 0;
        int crisisSum = 0;
        int dialogoSum = 0;
        int desescalamientoSum = 0;
        for (Catalogo cata : catalogos) {
            List<Caso> listaCasosFl = null;
            if (ind == 1) {
                listaCasosFl = filtrarCasosPorTipo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 2) {
                listaCasosFl = filtrarCasosPorAutoridadCompetente(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 3) {
                listaCasosFl = filtrarCasosPorEstado(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 4) {
                listaCasosFl = filtrarCasosPorMecanismoDialogo(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 5) {
                listaCasosFl = filtrarCasosPorParticipacionDefensoria(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 6) {
                listaCasosFl = filtrarCasosPorAnhos(listaCasosReporte, cata.getValorParametro());
            }
            if (ind == 7) {
                listaCasosFl = filtrarCasosPorRegion(listaCasosReporte, cata.getValorParametro());
            }
            int temprana = 0;
            int escalamiento = 0;
            int crisis = 0;
            int dialogo = 0;
            int desescalamiento = 0;
            for (Caso cs : listaCasosFl) {
                if (StringUtils.equals(cs.getTipoDialogo(), "01")) {
                    temprana++;
                }
                if (StringUtils.equals(cs.getTipoDialogo(), "02")) {
                    escalamiento++;
                }
                if (StringUtils.equals(cs.getTipoDialogo(), "03")) {
                    crisis++;
                }
                if (StringUtils.equals(cs.getTipoDialogo(), "04")) {
                    desescalamiento++;
                }
                if (StringUtils.equals(cs.getTipoDialogo(), "05")) {
                    dialogo++;
                }
            }
            dialogoSum = dialogoSum + dialogo;
            desescalamientoSum = desescalamientoSum + desescalamiento;
            crisisSum = crisisSum + crisis;
            escalamientoSum = escalamientoSum + escalamiento;
            tempranaSum = tempranaSum + temprana;

            ElementoReporte er = new ElementoReporte(cata.getNombreParametro(), null, null, temprana, escalamiento,
                    crisis, desescalamiento, dialogo);
            elementoReportes.add(er);
        }
        er1.setTemprana(tempranaSum);
        er1.setEscalamiento(escalamientoSum);
        er1.setCrisis(crisisSum);
        er1.setDesescalamiento(desescalamientoSum);
        er1.setDialogo(dialogoSum);
        er1.setTotal(tempranaSum + escalamientoSum + desescalamientoSum + dialogoSum + crisisSum);
        elementoReportes.add(0, er1);
        for (ElementoReporte ers : elementoReportes) {
            Integer tot = ers.getTemprana() + ers.getEscalamiento() + ers.getCrisis() + ers.getDesescalamiento()
                    + ers.getDialogo();
            Double tota2 = tot * 1.0;
            double porcent = tota2 * 100 / er1.getTotal();
            porcent = (double) ((int) (porcent * 100) / 100.0);
            String porcentaj = "";
            if (porcent == 0) {
                porcentaj = " - ";
            } else {
                porcentaj = Double.toString(porcent) + "%";
            }
            ers.setTotal(tot);
            ers.setPorcentaje(porcentaj);
        }
    }

    private List<Caso> filtrarCasosPorTipo(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipo().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorFace(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipoDialogo().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorAutoridadCompetente(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipoAsunto().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorEstado(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipoEstado().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorMecanismoDialogo(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipoMecanismo().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorParticipacionDefensoria(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                return object.getTipoParticipacionCaso().startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorRegion(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                if (object.getIdDepartamento() != null) {
                    String entero = object.getIdDepartamento();
                    return entero.startsWith(String.valueOf(text));
                }
                return false;
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    private List<Caso> filtrarCasosPorAnhos(List<Caso> casos, String tipo) {
        Filter<Caso, String> filter = new Filter<Caso, String>() {
            public boolean isMatched(Caso object, String text) {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy");
                String anho = simpleDateFormat.format(object.getFechaPublicacion());
                return anho.startsWith(String.valueOf(text));
            }
        };
        List<Caso> sortCasos = new FilterList().filterList(casos, filter, tipo);
        return sortCasos;
    }

    public void mostrarReporte() {
        if (filtroReporte.getTipoReporte() == 1) {
            filtroReporte.setTitulo("- informacin de Casos");
        }
        elementoReportes = null;
    }

    public void initJasper(int ind) throws JRException {
        JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(elementoReportes);
        if (ind == 1)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoTipo.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 2)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoAutoridadCompetente.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 3)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoEstado.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 4)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoFace.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 5)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoMecanismoDialogo.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 6)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoFaceParticipacion.jasper", new HashMap(),
                    beanCollectionDataSource);
        if (ind == 7)
            jasperPrint = JasperFillManager.fillReport(
                    ConstantesUtil.BASE_URL_REPORT + "reporteFiltroCasoRegion.jasper", new HashMap(),
                    beanCollectionDataSource);

    }

    public void pdf(int ind) throws JRException, IOException {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String fecha = simpleDateFormat.format(date);
        initJasper(ind);
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletResponse httpServletResponse;
        httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext()
                .getResponse();
        httpServletResponse.setContentType("application/pdf");
        httpServletResponse.addHeader("Content-disposition", "attachment; filename=" + fecha + "_reporte.pdf");
        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
        facesContext.responseComplete();
        facesContext.renderResponse();
    }

    public void xls(int ind) throws JRException, IOException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String fecha = simpleDateFormat.format(new Date());
        initJasper(ind);
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletResponse httpServletResponse = (HttpServletResponse) facesContext.getCurrentInstance()
                .getExternalContext().getResponse();
        httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        httpServletResponse.addHeader("Content-disposition", "attachment; filename=" + fecha + "_reporte.xlsx");
        ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
        JRXlsxExporter jrXlsxExporter = new JRXlsxExporter();
        jrXlsxExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        jrXlsxExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
        jrXlsxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream);
        jrXlsxExporter.exportReport();
        facesContext.responseComplete();
        facesContext.renderResponse();
    }

    public FiltroReporte getFiltroReporte() {
        return filtroReporte;
    }

    public void setFiltroReporte(FiltroReporte filtroReporte) {
        this.filtroReporte = filtroReporte;
    }

    public List<SelectItem> getListaDepartamento() {
        listaDepartamento = new ArrayList<>();
        List<Departamento> list = ubigeoService.departamentoLista();
        if (list.size() > 0) {
            for (Departamento departamento : list) {
                listaDepartamento
                        .add(new SelectItem(departamento.getIdDepartamento(), departamento.getDescripcion()));
            }
        }
        return listaDepartamento;
    }

    public void setListaDepartamento(List<SelectItem> listaDepartamento) {
        this.listaDepartamento = listaDepartamento;
    }

    public List<ElementoReporte> getElementoReportes() {
        return elementoReportes;
    }

    public void setElementoReportes(List<ElementoReporte> elementoReportes) {
        this.elementoReportes = elementoReportes;
    }

    public List<Caso> getListaCasosReporte() {
        return listaCasosReporte;
    }

    public void setListaCasosReporte(List<Caso> listaCasosReporte) {
        this.listaCasosReporte = listaCasosReporte;
    }

    public List<Resumen> getListaAnhos() {
        return listaAnhos;
    }

    public void setListaAnhos(List<Resumen> listaAnhos) {
        this.listaAnhos = listaAnhos;
    }

    public Map getListasMeses() {
        return listasMeses;
    }

    public void setListasMeses(Map listasMeses) {
        this.listasMeses = listasMeses;
    }

    public List<ElementoResumenEjecutivo> getListaResumenEjecutivo() {
        return listaResumenEjecutivo;
    }

    public void setListaResumenEjecutivo(List<ElementoResumenEjecutivo> listaResumenEjecutivo) {
        this.listaResumenEjecutivo = listaResumenEjecutivo;
    }

}