コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }