public static String getHistoria(int SubComponenteId, int version) { String resultado = ""; String query = "SELECT c.version, c.nombre, c.descripcion, ct.nombre tipo, ue.nombre unidad_ejecutora, c.costo, ac.nombre tipo_costo, " + " c.programa, c.subprograma, c.proyecto, c.actividad, c.obra, c.renglon, c.ubicacion_geografica, c.latitud, c.longitud, " + " c.fecha_inicio, c.fecha_fin, c.duracion, c.fecha_inicio_real, c.fecha_fin_real, " + " c.fecha_creacion, c.usuario_creo, c.fecha_actualizacion, c.usuario_actualizo, " + " CASE WHEN c.estado = 1 " + " THEN 'Activo' " + " ELSE 'Inactivo' " + " END AS estado " + " FROM sipro_history.subcomponente c " + " JOIN sipro_history.unidad_ejecutora ue ON c.unidad_ejecutoraunidad_ejecutora = ue.unidad_ejecutora and c.entidad = ue.entidadentidad and c.ejercicio = ue.ejercicio JOIN sipro_history.subcomponente_tipo ct ON c.subcomponente_tipoid = ct.id " + " JOIN sipro_history.acumulacion_costo ac ON c.acumulacion_costoid = ac.id " + " WHERE c.id = " + SubComponenteId + " AND c.version = " + version; String[] campos = { "Version", "Nombre", "Descripción", "Tipo", "Unidad Ejecutora", "Monto Planificado", "Tipo Acumulación de Monto Planificado", "Programa", "Subprograma", "Proyecto", "Actividad", "Obra", "Renglon", "Ubicación Geográfica", "Latitud","Longitud", "Fecha Inicio", "Fecha Fin", "Duración", "Fecha Inicio Real", "Fecha Fin Real", "Fuente Préstamo", "Fuente Donación", "Fuente Nacional", "Fecha Creación", "Usuario que creo", "Fecha Actualización", "Usuario que actualizó", "Estado" }; resultado = CHistoria.getHistoria(query, campos); return(resultado); }
/// <summary> /// Crea el query de la consulta para obtener la historia de la actividad /// </summary> /// <param name="id">Identificador de la actividad</param> /// <param name="version">Version de la actividad</param> /// <returns>Historia de la actividad</returns> public static string GetHistoria(int id, int version) { String resultado = ""; String query = "SELECT a.version, a.nombre, a.descripcion, ati.nombre tipo, a.costo, ac.nombre tipo_costo, " + " a.programa, a.subprograma, a.proyecto, a.actividad, a.obra, a.renglon, a.ubicacion_geografica, a.latitud, a.longitud, " + " a.fecha_inicio, a.fecha_fin, a.duracion, a.fecha_inicio_real, a.fecha_fin_real, " + " a.porcentaje_avance, " + " a.fecha_creacion, a.usuario_creo, a.fecha_actualizacion, a.usuario_actualizo, " + " CASE WHEN a.estado = 1 " + " THEN 'Activo' " + " ELSE 'Inactivo' " + " END AS estado " + " FROM sipro_history.actividad a " + " JOIN sipro_history.actividad_tipo ati ON a.actividad_tipoid = ati.id " + " JOIN sipro_history.acumulacion_costo ac ON a.acumulacion_costo = ac.id " + " WHERE a.id = " + id + " AND a.version = " + version; String[] campos = { "Version", "Nombre", "Descripción", "Tipo", "Monto Planificado", "Tipo Acumulación de Monto Planificado", "Programa", "Subprograma", "Proyecto", "Actividad", "Obra", "Renglon", "Ubicación Geográfica","Latitud", "Longitud", "Fecha Inicio", "Fecha Fin", "Duración", "Fecha Inicio Real", "Fecha Fin Real", "Porcentaje de Avance", "Fecha Creación", "Usuario que creo", "Fecha Actualización", "Usuario que actualizó", "Estado" }; resultado = CHistoria.getHistoria(query, campos); return(resultado); }
/*public String getSubproductoJson(int id){ * * Subproducto pojo = getSubproductoPorId(id); * EstructuraPojo estructuraPojo = new EstructuraPojo(); * estructuraPojo.id = pojo.getId(); * estructuraPojo.nombre = pojo.getNombre(); * * String subproducto = Utils.getJSonString("subproducto", estructuraPojo); * return subproducto; * * } * * public static Subproducto getSubproductoInicial(Integer productoId, String usuario){ * Subproducto ret = null; * Session session = CHibernateSession.getSessionFactory().openSession(); * try{ * String query = "FROM Subproducto sp where sp.estado=1 and sp.orden=1 and sp.producto.id=:productoId and sp.usuarioCreo=:usuario"; * Query<Subproducto> criteria = session.createQuery(query, Subproducto.class); * criteria.setParameter("productoId", productoId); * criteria.setParameter("usuario", usuario); * List<Subproducto> listRet = null; * listRet = criteria.getResultList(); * ret = !listRet.isEmpty() ? listRet.get(0) : null; * }catch(Throwable e){ * CLogger.write("11", SubproductoDAO.class, e); * } * finally{ * session.close(); * } * return ret; * } * * public static Subproducto getSubproductoFechaMaxima(Integer productoId, String usuario){ * Subproducto ret = null; * Session session = CHibernateSession.getSessionFactory().openSession(); * try{ * String query = "FROM Subproducto sp where sp.estado=1 and sp.producto.id=:productoId and sp.usuarioCreo=:usuario order by sp.fechaFin desc"; * Query<Subproducto> criteria = session.createQuery(query, Subproducto.class); * criteria.setMaxResults(1); * criteria.setParameter("productoId", productoId); * criteria.setParameter("usuario", usuario); * List<Subproducto> listRet = null; * listRet = criteria.getResultList(); * ret = !listRet.isEmpty() ? listRet.get(0) : null; * }catch(Throwable e){ * CLogger.write("12", SubproductoDAO.class, e); * } * finally{ * session.close(); * } * return ret; * } * * public static boolean guardarSubproductoOrden(Subproducto subproducto, Session session) { * boolean ret = false; * try { * session.saveOrUpdate(subproducto); * session.flush(); * session.clear(); * ret = true; * } catch (Throwable e) { * CLogger.write("13", SubproductoDAO.class, e); * session.getTransaction().rollback(); * session.close(); * } * return ret; * } * * public static BigDecimal calcularCosto(Subproducto subproducto){ * BigDecimal costo = new BigDecimal(0); * try{ * List<Actividad> actividades = ActividadDAO.getActividadesPorObjeto(subproducto.getId(), 4); * if(actividades != null && actividades.size() > 0){ * for(Actividad actividad : actividades){ * costo = costo.add(actividad.getCosto() != null ? actividad.getCosto() : new BigDecimal(0)); * } * }else{ * PlanAdquisicion pa = PlanAdquisicionDAO.getPlanAdquisicionByObjeto(4, subproducto.getId()); * if(pa!=null){ * if(pa.getPlanAdquisicionPagos()!=null && pa.getPlanAdquisicionPagos().size()>0){ * BigDecimal pagos = new BigDecimal(0); * for(PlanAdquisicionPago pago: pa.getPlanAdquisicionPagos()) * pagos=pagos.add(pago.getPago()); * costo = pagos; * } * else * costo = pa.getTotal(); * } * else * costo = subproducto.getCosto(); * } * * }catch(Exception e){ * CLogger.write("14", Proyecto.class, e); * } * * return costo; * } * * public static boolean calcularCostoyFechas(Integer subproductoId){ * boolean ret = false; * ArrayList<ArrayList<Nodo>> listas = EstructuraProyectoDAO.getEstructuraObjetoArbolCalculos(subproductoId, 4); * for(int i=listas.size()-2; i>=0; i--){ * for(int j=0; j<listas.get(i).size(); j++){ * Nodo nodo = listas.get(i).get(j); * Double costo=0.0d; * Timestamp fecha_maxima=new Timestamp(0); * Timestamp fecha_minima=new Timestamp((new DateTime(2999,12,31,0,0,0)).getMillis()); * for(Nodo nodo_hijo:nodo.children){ * costo += nodo_hijo.costo; * fecha_minima = (nodo_hijo.fecha_inicio.getTime()<fecha_minima.getTime()) ? nodo_hijo.fecha_inicio : fecha_minima; * fecha_maxima = (nodo_hijo.fecha_fin.getTime()>fecha_maxima.getTime()) ? nodo_hijo.fecha_fin : fecha_maxima; * } * nodo.objeto = ObjetoDAO.getObjetoPorIdyTipo(nodo.id, nodo.objeto_tipo); * if(nodo.children!=null && nodo.children.size()>0){ * nodo.fecha_inicio = fecha_minima; * nodo.fecha_fin = fecha_maxima; * nodo.costo = costo; * } * else * nodo.costo = calcularCosto((Subproducto)nodo.objeto).doubleValue(); * nodo.duracion = Utils.getWorkingDays(new DateTime(nodo.fecha_inicio), new DateTime(nodo.fecha_fin)); * setDatosCalculados(nodo.objeto,nodo.fecha_inicio,nodo.fecha_fin,nodo.costo, nodo.duracion); * } * ret = true; * } * ret= ret && guardarSubproductoBatch(listas); * return ret; * } * * private static void setDatosCalculados(Object objeto,Timestamp fecha_inicio, Timestamp fecha_fin, Double costo, int duracion){ * try{ * if(objeto!=null){ * Method setFechaInicio =objeto.getClass().getMethod("setFechaInicio",Date.class); * Method setFechaFin = objeto.getClass().getMethod("setFechaFin",Date.class); * Method setCosto = objeto.getClass().getMethod("setCosto",BigDecimal.class); * Method setDuracion = objeto.getClass().getMethod("setDuracion", int.class); * setFechaInicio.invoke(objeto, new Date(fecha_inicio.getTime())); * setFechaFin.invoke(objeto, new Date(fecha_fin.getTime())); * setCosto.invoke(objeto, new BigDecimal(costo)); * setDuracion.invoke(objeto, duracion); * } * } * catch(Throwable e){ * CLogger.write("17", SubproductoDAO.class, e); * } * * } * * private static boolean guardarSubproductoBatch(ArrayList<ArrayList<Nodo>> listas){ * boolean ret = true; * try{ * Session session = CHibernateSession.getSessionFactory().openSession(); * session.beginTransaction(); * int count=0; * for(int i=0; i<listas.size()-1; i++){ * for(int j=0; j<listas.get(i).size();j++){ * session.saveOrUpdate(listas.get(i).get(j).objeto); * if ( ++count % 20 == 0 ) { * session.flush(); * session.clear(); * } * } * } * session.flush(); * session.getTransaction().commit(); * session.close(); * } * catch(Throwable e){ * ret = false; * CLogger.write("18", SubproductoDAO.class, e); * } * return ret; * } * * public static List<Subproducto> getSubproductosHistory(Integer productoid,String lineaBase) { * List<Subproducto> ret = new ArrayList<Subproducto>(); * Session session = CHibernateSession.getSessionFactory().openSession(); * try { * * String query = String.join(" ", "select * from sipro_history.subproducto p ", * "where p.estado = 1", * "and p.productoid=?1", * lineaBase != null ? "and p.linea_base like '%" + lineaBase + "%'" : "and p.actual = 1"); * * * Query<Subproducto> criteria = session.createNativeQuery(query,Subproducto.class); * criteria.setParameter(1, productoid); * ret = criteria.getResultList(); * } catch (Throwable e) { * CLogger.write("19", SubproductoDAO.class, e); * } finally { * session.close(); * } * return ret; * } * * public static Subproducto getSubproductoHistory(Integer subproductoId,String lineaBase){ * Subproducto ret = null; * List<Subproducto> listRet = null; * Session session = CHibernateSession.getSessionFactory().openSession(); * try{ * String query = String.join(" ", "select * ", * "from sipro_history.subproducto p ", * "where p.estado = 1 ", * "and p.id = ?1 ", * lineaBase != null ? "and p.linea_base like '%" + lineaBase + "%'" : "and p.actual = 1", * "order by p.id desc"); * Query<Subproducto> criteria = session.createNativeQuery(query, Subproducto.class); * criteria.setParameter(1, subproductoId); * listRet = criteria.getResultList(); * ret = !listRet.isEmpty() ? listRet.get(0) : null; * } * catch(Throwable e){ * CLogger.write("20", SubproductoDAO.class, e); * } * finally{ * session.close(); * } * return ret; * } */ /// <summary> /// Devuelve el histórico del subproducto y su version /// </summary> /// <param name="id">Identificador de Subproducto</param> /// <param name="version">Número de versión a buscar</param> /// <returns>Cadena con el histórico del subproducto</returns> public static String GetHistoria(int id, int version) { String resultado = ""; try { String query = "SELECT sb.version, sb.nombre, sb.descripcion, st.nombre tipo, ue.nombre unidad_ejecutora, sb.costo, ac.nombre tipo_costo, " + " sb.programa, sb.subprograma, sb.proyecto, sb.actividad, sb.obra, sb.renglon, sb.ubicacion_geografica, sb.latitud, sb.longitud, " + " sb.fecha_inicio, sb.fecha_fin, sb.duracion, sb.fecha_inicio_real, sb.fecha_fin_real, " + " sb.fecha_creacion, sb.usuario_creo, sb.fecha_actualizacion, sb.usuario_actualizo, " + " CASE WHEN sb.estado = 1 " + " THEN 'Activo' " + " ELSE 'Inactivo' " + " END AS estado " + " FROM sipro_history.subproducto sb " + " JOIN sipro.unidad_ejecutora ue ON sb.unidad_ejecutoraunidad_ejecutora = ue.unidad_ejecutora and sb.entidad = ue.entidadentidad and sb.ejercicio = ue.ejercicio " + " JOIN sipro_history.subproducto_tipo st ON sb.subproducto_tipoid = st.id " + " JOIN sipro_history.acumulacion_costo ac ON sb.acumulacion_costoid = ac.id " + " WHERE sb.id = " + id + " AND sb.version = " + version; String[] campos = { "Version", "Nombre", "Descripción", "Tipo", "Unidad Ejecutora", "Monto Planificado", "Tipo Acumulación de Monto Planificado", "Programa", "Subprograma", "Proyecto", "Actividad", "Obra", "Renglon", "Ubicación Geográfica", "Latitud","Longitud", "Fecha Inicio", "Fecha Fin", "Duración", "Fecha Inicio Real", "Fecha Fin Real", "Fecha Creación", "Usuario que creo", "Fecha Actualización", "Usuario que actualizó", "Estado" }; resultado = CHistoria.getHistoria(query, campos); } catch (Exception ex) { CLogger.write("8", "SubproductoDAO.class", ex); } return(resultado); }