simtra.simtraadmin.dao.ReporteDao.java Source code

Java tutorial

Introduction

Here is the source code for simtra.simtraadmin.dao.ReporteDao.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 simtra.simtraadmin.dao;

import java.util.Date;
import java.util.List;
import org.hibernate.SQLQuery;
import simtra.simtraadmin.modelo.Reporte;

/**
 *
 * @author Usuario
 */
public class ReporteDao extends SimtraDao {

    public ReporteDao() {
        super();
        secuencia = "seq_repId";
    }

    public Reporte crear(Reporte reporte) {
        sesionActual();
        if (reporte.getRepId() == null) {
            reporte.setRepId(getNumeroSecuencia());
        }
        sesion.save(reporte);
        return reporte;
    }

    public void eliminar(Reporte reporte) {
        sesionActual();
        sesion.delete(reporte);
    }

    public void actualizar(Reporte reporte) {
        sesionActual();
        sesion.update(reporte);
    }

    public Reporte buscar(Integer id) {
        sesionActual();
        Reporte objeto = (Reporte) sesion.get("simtra.simtraadmin.modelo.Reporte", id);
        return objeto;
    }

    public List<Reporte> listar() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT * ");
        sql.append("FROM reporte ");
        SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class);
        List<Reporte> objeto = (List<Reporte>) query.list();
        return objeto;
    }

    public List<Reporte> listarReporteIncidencia(String fechaActual) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        String nombreIncidencia = "Delito, Emergencia y Trafico";
        sql.append("SELECT reporte.* ");
        sql.append("FROM reporte, incidencia ");
        sql.append("WHERE reporte.incId = incidencia.incId ");
        sql.append("AND to_char(reporte.repFecha,'dd/MM/yyyy') = :fechaActual ");
        sql.append("AND incidencia.incNombre = :nombreIncidencia ");
        sql.append("ORDER BY reporte.repFecha DESC");
        SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class);
        query.setString("fechaActual", fechaActual);
        query.setString("nombreIncidencia", nombreIncidencia);
        List<Reporte> objeto = (List<Reporte>) query.list();
        return objeto;
    }

    public Reporte buscarPorIncidencia(Integer idIncidencia) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT reporte.* ");
        sql.append("FROM reporte, incidencia ");
        sql.append("WHERE reporte.incId = incidencia.incId ");
        sql.append("AND reporte.incId = :idIncidencia ");
        SQLQuery query = sesion.createSQLQuery(sql.toString()).addEntity(Reporte.class);
        query.setInteger("idIncidencia", idIncidencia);
        Reporte objeto = (Reporte) query.uniqueResult();
        return objeto;
    }

    public List<String> delitosMasComunes() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') ");
        sql.append("GROUP BY incidencia.incTipo ");
        sql.append("ORDER  BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> emergenciasMasComunes() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append(
                "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') ");
        sql.append("GROUP BY incidencia.incTipo ");
        sql.append("ORDER  BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> delitosPorRuta(Integer idRuta) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') ");
        sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') ");
        sql.append("GROUP BY incidencia.incTipo ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setInteger("idRuta", idRuta);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> emergenciasPorRuta(Integer idRuta) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append(
                "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') ");
        sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') ");
        sql.append("GROUP BY incidencia.incTipo ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setInteger("idRuta", idRuta);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> delitosPorFecha(Date fechaInicio, Date fechaFin) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append(
                "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') ");
        sql.append("AND reporte.repfecha between :fechaInicio and :fechaFin  ");
        sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        sql.append(
                "ORDER BY incidencia.incTipo,COUNT(incidencia.incTipo) DESC,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setDate("fechaInicio", fechaInicio);
        query.setDate("fechaFin", fechaFin);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> emergenciasPorFecha(Date fechaInicio, Date fechaFin) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append(
                "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append(
                "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') ");
        sql.append("AND reporte.repfecha between :fechaInicio and :fechaFin  ");
        sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        sql.append(
                "ORDER BY incidencia.incTipo,COUNT(incidencia.incTipo) DESC,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setDate("fechaInicio", fechaInicio);
        query.setDate("fechaFin", fechaFin);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> delitosPorRutaFecha(Integer idRuta, Date fechaInicio, Date fechaFin) {
        sesionActual();
        System.out.println(idRuta);
        StringBuilder sql = new StringBuilder();
        sql.append(
                "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre = 'Delito, Emergencia y Trafico' ");
        sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') ");
        sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%')");
        sql.append("AND reporte.repfecha between :fechaInicio AND :fechaFin  ");
        sql.append("GROUP BY incidencia.incTipo, TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        sql.append(
                "ORDER BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd'), COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setString("idRuta", idRuta.toString());
        query.setDate("fechaInicio", fechaInicio);
        query.setDate("fechaFin", fechaFin);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> emergenciasPorRutaFecha(Integer idRuta, Date fechaInicio, Date fechaFin) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append(
                "SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',TO_CHAR(reporte.repFecha,'yyyy-mm-dd')) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append(
                "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') ");
        sql.append("AND incidencia.incObservaciones LIKE CONCAT('%(',:idRuta,')%') ");
        sql.append("AND reporte.repfecha between :fechaInicio AND :fechaFin  ");
        sql.append("GROUP BY incidencia.incTipo,TO_CHAR(reporte.repFecha,'yyyy-mm-dd') ");
        sql.append(
                "ORDER incidencia.incTipo,BY TO_CHAR(reporte.repFecha,'yyyy-mm-dd'),COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setInteger("idRuta", idRuta);
        query.setDate("fechaInicio", fechaInicio);
        query.setDate("fechaFin", fechaFin);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> fallasMasComunes() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo) ");
        sql.append("FROM incidencia INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("WHERE incidencia.incNombre  = 'Falla o Desperfecto' ");
        sql.append("GROUP BY incidencia.incTipo ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> fallasMasComunesPorUnidad(Integer idUnidad) {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) ");
        sql.append("FROM incidencia ");
        sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId ");
        sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId ");
        sql.append("WHERE incidencia.incNombre  = 'Falla o Desperfecto' ");
        sql.append("AND unidad.uniId = :idUnidad ");
        sql.append("GROUP BY incidencia.incTipo,unidad.uniId ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        query.setInteger("idUnidad", idUnidad);
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> unidadesConMasDelitos() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) ");
        sql.append("FROM incidencia ");
        sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId ");
        sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append("AND incidencia.incTipo IN ('Robo a mano armada', 'Robo con arma blanca', 'Pelea a bordo') ");
        sql.append("GROUP BY unidad.uniId, incidencia.incTipo ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }

    public List<String> unidadesConMasEmergencias() {
        sesionActual();
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT CONCAT(COUNT(incidencia.incTipo),';',incidencia.incTipo,';',unidad.uniId) ");
        sql.append("FROM incidencia ");
        sql.append("INNER JOIN reporte ON incidencia.incId = reporte.incId ");
        sql.append("INNER JOIN servicio ON servicio.serId = reporte.serId ");
        sql.append("INNER JOIN unidad ON servicio.uniId = unidad.uniId ");
        sql.append("WHERE incidencia.incNombre  = 'Delito, Emergencia y Trafico' ");
        sql.append(
                "AND incidencia.incTipo IN ('Protesta', 'Siniestro', 'Peligro de incendio', 'Exceso de velocidad', 'Desmayo') ");
        sql.append("GROUP BY unidad.uniId, incidencia.incTipo ");
        sql.append("ORDER BY COUNT(incidencia.incTipo) DESC ");
        SQLQuery query = sesion.createSQLQuery(sql.toString());
        List<String> objeto = (List<String>) query.list();
        return objeto;
    }
}