public static int ActualizaLogProcesoMapa(ProcesoMapas datosMapa) { try { return(new RepositorioProcesos().ActualizaLogProcesoMapa(datosMapa)); } catch (Exception ex) { throw ex; } }
public void ConsultaLog(string dslog) { Resultado <Procesos> resultadoArchivo = new Resultado <Procesos>(); try { ProcesoMapas verLog = new ProcesoMapas(); verLog.dslogMapa = dslog; FacadeProceso.ActualizaLogProcesoMapa(verLog); } catch (Exception ex) { throw ex; } }
private void ActualizaProcesoMapa(int llproceso, int llmapa, int llestatus, string dsarchivo, string dslog) { try { ProcesoMapas updateProceso = new ProcesoMapas(); updateProceso.llproceso = llproceso; updateProceso.llmapa = llmapa; updateProceso.llestatusMapa = llestatus; updateProceso.dsarchivo = dsarchivo; updateProceso.dslogMapa = dslog; FacadeProceso.ActualizaLogProcesoMapa(updateProceso); }catch (Exception ex) { throw ex; } }
public int ActualizaLogProcesoMapa(ProcesoMapas datosMapa) { try { return(base._ProviderDB.ExecuteNonQuery("spUpdLogProcesoMapa", new DbParameter[] { DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llproceso", DbType.Int32, datosMapa.llproceso), DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llmapa", DbType.Int32, datosMapa.llmapa), DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@dslogMapa", DbType.String, datosMapa.dslogMapa), DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llestatusMapa", DbType.String, datosMapa.llestatusMapa), DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@dsarchivo", DbType.String, datosMapa.dsarchivo) })); } catch (Exception ex) { throw ex; } }
public ActionResult ConsultarProceso(String mesProceso) { Resultado <ProcesoMapas> resultadoDetalle = new Resultado <ProcesoMapas>(); //Inicializamos la variable que representa el proceso ejecutado actualmente. procesoTrabajo = new ProcesoMapas(); try { DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat)); //Consultamos los procesos erroneos List <ProcesoMapas> ProcesoError = FacadeErrores.ConsultaErrores(fechaProceso.Date.Year, fechaProceso.Date.Month); resultadoDetalle.Listado = ProcesoError.ToList(); //Agregamos los errores a la vista principal resultadoDetalle.Lista = ProcesoError.ToList(); //Consultamos los datos en base de datos List <ProcesoMapas> mapasProceso = FacadeProceso.ConsultaProcesoByFecha(fechaProceso.Date.Year, fechaProceso.Date.Month); resultadoDetalle.Listado.AddRange(mapasProceso.Where(x => x.llestatusMapa == Constantes.ID_ESTATUS_INICIADO || x.llestatusMapa == Constantes.ID_ESTATUS_ERROR).ToList()); resultadoDetalle.Lista.AddRange(mapasProceso.ToList()); resultadoDetalle.Lista = resultadoDetalle.Lista.OrderBy(x => x.fcinicio).ToList(); // Si no existen registros agregamos como proceso exitoso 2 para indicar que no se cargen los GRIDS if (mapasProceso.Count == 0) { resultadoDetalle.ProcesoExitoso = 2; } else { procesoTrabajo.llproceso = mapasProceso[0].llproceso; resultadoDetalle.ProcesoExitoso = 1; } } catch (Exception ex) { resultadoDetalle.ProcesoExitoso = 0; resultadoDetalle.Mensaje = ex.Message; } return(Json(resultadoDetalle, JsonRequestBehavior.DenyGet)); }
public ActionResult ProcesarArchivo(String mesProceso) { Resultado <Catalogo> resultadoArchivo = new Resultado <Catalogo>(); int IdPro = 0; int llmapa = 0; try { DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat)); mapaTrabajo = new ProcesoMapas(); //agregamos el .exe //Validar Campos de pantalla. Boolean isCorrecto = true; string mensajeError = ""; //Obtenemos el prefigo del arvhivo resultadoArchivo.ProcesoExitoso = 0; if (Request.Files.Count == 0) { isCorrecto = false; resultadoArchivo.Mensaje = "Debes seleccionar un archivo para ejecutar."; return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); } string[] sufijo = Request.Files[0].FileName.Split('_'); if (!Request.Files[0].FileName.ToUpper().EndsWith(".XLS") && !Request.Files[0].FileName.ToUpper().EndsWith(".XLSX")) { isCorrecto = false; mensajeError = "Seleccione un archivo correcto en formato Excel."; } //// Si no existe ningun mapa ejecutado mandamos mensaje para que ejecuten primero la carga mensual List <ProcesoMapas> procesomapa = FacadeProceso.ConsultaProcesoByFecha(fechaProceso.Date.Year, fechaProceso.Date.Month); if (procesomapa.Count == 0) { //throw new Exception("No se ha encontrado ningún mapa, ejecute primero el proceso mensual para cargar los mapas."); //1 Insert Procesos Procesos proceso2 = new Procesos(); DateTime fechaHoy2 = DateTime.Now; proceso2.boprocesomanual = true; proceso2.fcinicio = fechaHoy2.ToString("dd/MM/yyyy"); proceso2.dslog = "Se inicia carga manual"; proceso2.dsmes = fechaProceso.Date.Month; proceso2.dsanio = Convert.ToInt32(fechaProceso.Date.ToString("yyyy")); IdPro = FacadeProceso.InsertarMvProceso(proceso2); } if (!isCorrecto) { Procesos formato = new Procesos(); resultadoArchivo.Mensaje = mensajeError; return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); } string datoPrefijo = sufijo[0]; //Obtenemos el mapa a cargar por el prefijo List <Mapas> mapas = FacadeMapa.ObtenerMapasByPrefijo(datoPrefijo); //1 Insert Procesos Procesos proceso = new Procesos(); DateTime fechaHoy = DateTime.Now; proceso.boprocesomanual = true; proceso.fcinicio = fechaHoy.ToString("dd/MM/yyyy"); proceso.dslog = "Se inicia carga manual"; proceso.dsmes = fechaProceso.Date.Month; proceso.dsanio = Convert.ToInt32(fechaProceso.Date.ToString("yyyy")); IdPro = FacadeProceso.InsertarMvProceso(proceso); if (mapas.Count == 0) { //inserta log Procesos lg = new Procesos(); proceso.dslog = ("Error sin ejecutar:"); resultadoArchivo.ProcesoExitoso = 3; resultadoArchivo.Mensaje = "No se ha encontrado el mapa asociado"; } else { //Validamos si el mapa existe if (procesomapa.Where(x => x.llproceso == IdPro && x.llmapa == mapas.First().mapaId&& x.llestatusMapa == 2).Count() > 0) { throw new Exception("El mapa ya se ha cargado para este proceso."); } //Cargamos el archivo en temporales string rutaDocumento = HostingEnvironment.MapPath("~/Temporal/" + Guid.NewGuid().ToString() + System.IO.Path.GetExtension(Request.Files[0].FileName)); Request.Files[0].SaveAs(rutaDocumento); Mapas mapaExtraccion = mapas.First(); ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 4, Request.Files[0].FileName, "Inicia el proceso de extracción del archivo \"" + Request.Files[0].FileName + "\""); ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 0, null, "Mapa encontrado \"" + mapaExtraccion.ClaveMapa + "\""); mapaTrabajo.llproceso = IdPro; mapaTrabajo.llmapa = mapaExtraccion.mapaId; //2 inserta proceso_mapa mapa-proceso Procesos proMapa = new Procesos(); proMapa.IdMapa = mapaExtraccion.mapaId; proMapa.llprocesos = IdPro; int IdPros = FacadeProceso.InsertaProcMapas(proMapa); //Modificamos la seccion de tareas con EPPlus //Creamos una nueva instancia con el archiv que utilizaremos como plantilla. ExcelPackage pantillaExcel = new ExcelPackage(new FileInfo(rutaDocumento)); //Creamos un objecto tipo ExcelWorksheet que sera en la que vamos a trabajar. ExcelWorksheet hojaTrabajo = pantillaExcel.Workbook.Worksheets[mapaExtraccion.hoja]; //Validamos los encabezados string statusError = ValidarHeaders(hojaTrabajo, mapaExtraccion, IdPro); if (statusError != String.Empty) { resultadoArchivo.ProcesoExitoso = 4; resultadoArchivo.Mensaje = "Los encabezados no coinciden con el mapa configurado <br/>" + statusError; ActualizaProcesoMapa(IdPro, llmapa, 3, null, "La validación de encabezados terminó con errores."); return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); } //Datos del excel //Llamamos la consulta del excel. List <Catalogo> datosCatalogo = DatosExcel(hojaTrabajo, mapaExtraccion, IdPro); // Actualizamos el estatus del mapa ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 1, null, "Mapa procesado correctamente."); resultadoArchivo.Lista = datosCatalogo; resultadoArchivo.ProcesoExitoso = 1; } } catch (Exception ex) { //Actualizamos el estatus del mapa if (IdPro != 0 && llmapa != 0) { ActualizaProcesoMapa(IdPro, llmapa, 3, null, ex.Message); } resultadoArchivo.ProcesoExitoso = 0; resultadoArchivo.Mensaje = ex.Message; } return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); }
// GET: Extraccion public ActionResult Index() { procesoTrabajo = new ProcesoMapas(); return(View()); }
public ActionResult ProcesarCarpeta(String mesProceso) { Resultado <ProcesoMapas> resultadoArchivo = new Resultado <ProcesoMapas>(); try { DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat)); Procesos proceso = new Procesos(); DateTime fechaHoy = DateTime.Now; proceso.boprocesomanual = false; proceso.dslog = ""; proceso.dsmes = fechaProceso.Date.Month; proceso.dsanio = Convert.ToInt32(fechaProceso.Date.ToString("yyyy")); int IdPro = FacadeProceso.InsertarMvProceso(proceso); procesoTrabajo = new ProcesoMapas(); procesoTrabajo.llproceso = IdPro; //Validamos el tipo de acceso a archivos. String tipoAccesoArchivos = ConfigurationManager.AppSettings["usarFTP"]; List <string> archivos; if (tipoAccesoArchivos.Equals("true")) { //Obtenemos los archivos del FTP archivos = InteraccionFTP.obtenerListaArchivos(FacadeFTP.ConsultaFTP(), fechaProceso.Date.ToString("yyyy"), Convert.ToString(fechaProceso.Date.Month)); } else { //Obtenemos los datos de la carpeta y almacenamos los procedimientos de mapas. string mes = Convert.ToString(fechaProceso.Date.Month); if (fechaProceso.Date.Month < 10) { mes = "0" + mes; } String[] archivosRuta = System.IO.Directory.GetFiles(ConfigurationManager.AppSettings["RutaDocumentos"] + fechaProceso.Date.ToString("yyyy") + "//" + mes); archivos = new List <string>(archivosRuta); } if (archivos.Count == 0) { resultadoArchivo.ProcesoExitoso = 0; resultadoArchivo.Mensaje = "No se han encontrado archivos a procesar."; return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); } //recorremos todos los archivos y los escribimos en consola List <ProcesoMapas> ListaProcesosMapas = new List <ProcesoMapas>(); foreach (var rutaarchivo in archivos) { Console.WriteLine(rutaarchivo); String archivo = System.IO.Path.GetFileName(rutaarchivo); ProcesoMapas procesoMapa = new ProcesoMapas(); procesoMapa.llproceso = IdPro; procesoMapa.dsarchivo = archivo; //Obtenemos el prefigo del arvhivo string[] sufijo = archivo.Split('_'); string datoPrefijo = sufijo[0]; //Obtenemos el mapa a cargar por el prefijo List <Mapas> mapas = FacadeMapa.BuscaMapa(datoPrefijo); if (mapas.Count == 0) { // update log no hay mapa procesoMapa.dslogMapa = "No se ha encontrado el mapa asociado"; procesoMapa.llestatusMapa = 3; FacadeErrores.InsertaErrorMapa(IdPro, archivo); } else { //Verificamos si el mapa ya esta cargado en catalogo. List <ProcesoMapas> mapa = FacadeProceso.ConsultaAllProcesoMapaByIdproceso(procesoTrabajo.llproceso).Where(x => x.llmapa == mapas.First().mapaId&& x.llestatusMapa == 2).ToList(); if (mapa.Count() > 0) { procesoMapa.llmapa = mapa.First().llmapa; procesoMapa.fcinicio = mapa.First().fcinicio; procesoMapa.llestatusMapa = mapa.First().llestatusMapa; procesoMapa.dsmapa = mapa.First().dsmapa; } else { //Cargamos el archivo en temporales string rutaDocumento = HostingEnvironment.MapPath("~/Temporal/" + Guid.NewGuid().ToString() + System.IO.Path.GetExtension(archivo)); System.IO.File.Copy(rutaarchivo, rutaDocumento, true); //Request.Files[0].SaveAs(rutaDocumento); Mapas mapaExtraccion = mapas.First(); //si mapa extraccion es igual 86 imprime laa linea Console.WriteLine(rutaarchivo); procesoMapa.llmapa = mapaExtraccion.mapaId; procesoMapa.dsmapa = mapaExtraccion.ClaveMapa; procesoMapa.dslogMapa = "Inicia el proceso de extracción del archivo + " + archivo; procesoMapa.dslogMapa = procesoMapa.dslogMapa + "Mapa encontrado" + mapaExtraccion.ClaveMapa; //Inserta proceso mapa///////////////////////////////verificar Procesos proMapa = new Procesos(); proMapa.IdMapa = mapaExtraccion.mapaId; proMapa.llprocesos = IdPro; //Datos del excel List <Catalogo> datosCatalogo = new List <Catalogo>(); try { int IdPros = FacadeProceso.InsertaProcMapas(proMapa); procesoMapa.fcinicio = DateTime.Now.ToString(); //Actualizamos el inicio del mapa ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 4, archivo, "Inicia el proceso de extracción del archivo " + archivo); ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 0, null, "Mapa encontrado " + mapaExtraccion.ClaveMapa); //Modificamos la seccion de tareas con EPPlus //Creamos una nueva instancia con el archiv que utilizaremos como plantilla. ExcelPackage pantillaExcel = new ExcelPackage(new FileInfo(rutaDocumento)); //Creamos un objecto tipo ExcelWorksheet que sera en la que vamos a trabajar. ExcelWorksheet hojaTrabajo = pantillaExcel.Workbook.Worksheets[mapaExtraccion.hoja]; //Validamos los encabezados string statusError = ValidarHeaders(hojaTrabajo, mapaExtraccion, IdPro); if (statusError != String.Empty) { throw new Exception("La validación de encabezados terminó con errores."); } //Obtenemos los datos del exel datosCatalogo = DatosExcel(hojaTrabajo, mapaExtraccion, IdPro); procesoMapa.llestatusMapa = 1; ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 1, null, "Mapa procesado correctamente."); } catch (Exception ex) { string errorMessage = ex.Message; procesoMapa.dslogMapa = (procesoMapa.dslogMapa + errorMessage); procesoMapa.llestatusMapa = 3; //Actualizamos el estatus a error ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 3, null, errorMessage); } procesoMapa.catalogos = datosCatalogo; } } ListaProcesosMapas.Add(procesoMapa); } resultadoArchivo.Lista = ListaProcesosMapas; //Recuperamos los archivos que no se encontro mapa. resultadoArchivo.Listado = FacadeErrores.ConsultaErrores(fechaProceso.Date.Year, fechaProceso.Date.Month); foreach (ProcesoMapas mapaerror in ListaProcesosMapas.Where(x => x.llestatusMapa == 4 || x.llestatusMapa == 3).ToList()) { if (resultadoArchivo.Listado.Where(x => x.llmapa == mapaerror.llmapa).Count() == 0) { resultadoArchivo.Listado.Add(mapaerror); } } resultadoArchivo.ProcesoExitoso = 1; } catch (Exception ex) { resultadoArchivo.ProcesoExitoso = 0; resultadoArchivo.Mensaje = ex.Message; } return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet)); }