static void Extrator(object sender) { try { if (DateTime.Now.ToString("HHmm") == "1658") { if (ExtratorRodou == false) { JSgi db = new JSgi(); ExtratorRodou = true; Console.WriteLine("Executando-> " + " SP_SGI_EXTRATOR '" + DateTime.Now.ToString("yyyyMMdd") + "', ''"); db.Database.ExecuteSqlCommand(" SP_SGI_EXTRATOR " + DateTime.Now.ToString("yyyyMMdd") + ", ''"); } } else { ExtratorRodou = false; } StreamWriter vWriter = new StreamWriter(@"c:\Play\Extrator.txt", true); vWriter.WriteLine("Servico Rodando: " + DateTime.Now.ToString()); vWriter.Flush(); vWriter.Close(); //Console.WriteLine("->"+ DateTime.Now.ToString("HHmm")+" "+ DateTime.Now.ToString("HH:mm:ss")); } catch (Exception) { StreamWriter vWriter = new StreamWriter(@"c:\Play\Extrator.txt", true); vWriter.WriteLine("ERRO Extrator: " + DateTime.Now.ToString()); Console.WriteLine("ERRO Extractor;"); throw; } }
// GET: PlugAndPlay/DesempenhoProducao public ActionResult FeedbacksDesempenho(string maquina, string strDataDe, string strDataAte, string tipo, string status) { DateTime?dataDe = !string.IsNullOrEmpty(strDataDe) ? (DateTime?)DateTime.ParseExact(strDataDe, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture) : null; DateTime?dataAte = !string.IsNullOrEmpty(strDataAte) ? (DateTime?)DateTime.ParseExact(strDataAte, "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture) : null; using (var db = new JSgi()) { ViewBag.maquinaId = new SelectList(db.Maquina.ToList(), "Id", "Descricao", maquina); ViewBag.dataDe = dataDe == null?DateTime.Now.ToString("dd/MM/yyyy") : ((DateTime)dataDe).ToString("dd/MM/yyyy"); ViewBag.dataAte = dataAte == null?DateTime.Now.ToString("dd/MM/yyyy") : ((DateTime)dataAte).ToString("dd/MM/yyyy"); ViewBag.tipo = new SelectList(new[] { new { id = "T", desc = "Todos" }, new { id = "P", desc = "Performance" }, new { id = "S", desc = "Setup" }, new { id = "SA", desc = "Setup Ajuste" }, new { id = "SS", desc = "Setup e Setup Ajuste" } }, "id", "desc", tipo); ViewBag.status = new SelectList(new[] { new { id = "T", desc = "Todos" }, new { id = "G", desc = "Bom" }, new { id = "B", desc = "Ruim" } }, "Id", "desc", status); } return(View()); }
/// <summary> /// Metódo para incluir auditoria de movimentações realizadas no sistema. /// </summary> /// <param name="auditor">Objeto do tipo T_Auditoria</param> public static void Registrar(T_Auditoria auditor) { JSgi db = new JSgi(); auditor.T_Usuario = db.T_Usuario.Find(auditor.ID_USUARIO); db.T_Auditoria.Add(auditor); db.SaveChanges(); }
public ActionResult Menu() { using (var db = new JSgi()) { try { ViewBag.MaquinasMenu = db.Maquina.Where(f => f.ControlIp != "" && f.ControlIp != null && (f.MaqIdMaqPai == null || f.MaqIdMaqPai == "")).ToList(); } finally { } } return(View()); }
/// <summary> /// Rotina para retornar valores referente ao ano Anterior /// </summary> /// <param name="ano">Ano atual</param> /// <returns>Lista de dados do tipo vw_SGI_PARAMETRO_RELMEDICOES</returns> public static List <vw_SGI_PARAMETRO_RELMEDICOES> AnoAnterior(string ano) { JSgi db2 = new JSgi(); var anoAtual = DateTime.Parse("01/01/" + ano); var valores = new List <vw_SGI_PARAMETRO_RELMEDICOES>(); string query = "select * from vw_SGI_PARAMETRO_RELMEDICOES "; //Filtra ano atual query += "where LEFT(MES,4) = '" + anoAtual.AddYears(-1).Year.ToString() + "' "; query += "order by IND_ID,Mes"; valores = db2.Database.SqlQuery <vw_SGI_PARAMETRO_RELMEDICOES>(query).ToList(); return(valores); }
public TargetProduto ObterUltimaMeta(string maquinaId, string produtoId, int?movId = null, JSgi db = null) { TargetProduto metaPerformace, metaSetup, metaSetupAjuste; TargetProduto target = null; if (db == null) { db = new JSgi(); } if (movId == null) { metaPerformace = db.TargetProduto.Where(t => t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); metaSetup = db.TargetProduto.Where(t => t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); metaSetupAjuste = db.TargetProduto.Where(t => t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); } else { metaPerformace = db.TargetProduto.Where(t => t.MovimentoEstoqueId < movId && t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); metaSetup = db.TargetProduto.Where(t => t.MovimentoEstoqueId < movId && t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); metaSetupAjuste = db.TargetProduto.Where(t => t.MovimentoEstoqueId < movId && t.MaquinaId == maquinaId && t.ProdutoId == produtoId && t.RealizadoPerformace != -1) .OrderByDescending(t => t.MovimentoEstoqueId).Take(1).FirstOrDefault(); } if (metaPerformace != null && metaSetup != null && metaSetupAjuste != null) { target = new TargetProduto() { PerformaceMinAmarelo = metaPerformace.PerformaceMinAmarelo, PerformaceMinVerde = metaPerformace.PerformaceMinVerde, PerformaceMaxVerde = metaPerformace.PerformaceMaxVerde, RealizadoPerformace = metaPerformace.RealizadoPerformace, ProximaMetaPerformace = metaPerformace.ProximaMetaPerformace, SetupMinVerde = metaSetup.SetupMinVerde, SetupMaxVerde = metaSetup.SetupMaxVerde, SetupMaxAmarelo = metaSetup.SetupMaxAmarelo, RealizadoTempoSetup = metaSetup.RealizadoTempoSetup, ProximaMetaTempoSetup = metaSetup.ProximaMetaTempoSetup, SetupAjusteMinVerde = metaSetupAjuste.SetupAjusteMinVerde, SetupAjusteMaxVerde = metaSetupAjuste.SetupAjusteMaxVerde, SetupAjusteMaxAmarelo = metaSetupAjuste.SetupAjusteMaxAmarelo, RealizadoTempoSetupAjuste = metaSetupAjuste.RealizadoTempoSetupAjuste, ProximaMetaTempoSetupAjuste = metaSetupAjuste.ProximaMetaTempoSetupAjuste }; } return(target); }
/// <summary> /// Rotina para retornar valores referente ao ano Anterior /// </summary> /// <param name="ano">Ano atual</param> /// <param name="idMeta">Id Meta</param> /// <returns>Lista de dados do tipo vw_SGI_PARAMETRO_RELMEDICOES</returns> public static List <vw_SGI_PARAMETRO_RELMEDICOES> AnoAnterior(string ano, int idIndicador) { JSgi db2 = new JSgi(); var anoAtual = DateTime.Parse("01/01/" + ano); var valores = new List <vw_SGI_PARAMETRO_RELMEDICOES>(); string query = "select * from vw_SGI_PARAMETRO_RELMEDICOES WHERE IND_ID = '" + idIndicador.ToString() + "' "; //Filtra ano atual if (ano != "" && ano != null) { query += "AND LEFT(MES,4) = '" + anoAtual.AddYears(-1).Year.ToString() + "' "; } query += "order by IND_ID,Mes"; valores = db2.Database.SqlQuery <vw_SGI_PARAMETRO_RELMEDICOES>(query).ToList(); return(valores); }
public static string GetMensagem(string msgid) { using (JSgi db = new JSgi()) { Mensagem Men = null; Men = db.Mensagens.Find(msgid); if (Men == null) { return(""); } else { return(Men.MEN_MENSAGEM); } } }
public static List <String> GetOrderBy(int idObject) { var lstCampos = new List <String>(); try { JSgi db2 = new JSgi(); string query = "SELECT name Nome FROM sys.columns "; query += "where object_id = '" + idObject + "' "; lstCampos = db2.Database.SqlQuery <String>(query).ToList(); } catch (Exception erro) { throw erro; } return(lstCampos); }
public static void SetPrimeiraProducao(JSgi bd, string Maquina) { // DEFINI OPE PRODUZINDO CASO NAO ENCONTRE NENHUM PEDIDO if (bd.VwFilaProducao.Count(f => f.RotMaqId == Maquina && f.Produzindo == 1) < 1) { var Op = bd.VwFilaProducao.Where(f => f.RotMaqId == Maquina).OrderBy(f => f.FprDataInicioPrevista).Take(1).FirstOrDefault(); if (Op != null) { string sql = " UPDATE T_FILA_PRODUCAO SET FPR_PRODUZINDO = 1 " + " WHERE ORD_ID = '" + Op.OrdId + "' AND ROT_" + "PRO_ID = '" + Op.PaProId + "' " + " AND ROT_MAQ_ID = '" + Maquina + "' AND ROT_SEQ_TRANFORMACAO = " + Op.RotSeqTransformacao + " " + " AND FPR_SEQ_REPETICAO = " + Op.FprSeqRepeticao; bd.Database.ExecuteSqlCommand(sql); } } }
/// <summary> /// Metódo para processar as medições filtrando por indicadores /// </summary> /// <param name="indicadores">Objeto com dados dos indicadores para serem filtrados.</param> /// <param name="pAno">Ano a ser filtrado</param> /// <returns>Objeto do tipo T_Medicoes</returns> public static List <T_Medicoes> GetMedicao(List <MedicoesInd> indicadores, string pAno) { JSgi db = new JSgi(); List <T_Medicoes> medicoes = new List <T_Medicoes>(); foreach (var item in indicadores) { //Busca dados no banco filtrando por indicador e meta var medicao = db.T_Medicoes.Where(x => x.T_Metas.IND_ID == item.IND_ID && x.MET_ID == item.MET_ID).ToList(); //Appenda dados no objeto lista medições if (pAno != "" && pAno != null) { medicao = medicao.Where(x => x.MED_DATAMEDICAO.Substring(0, 4) == pAno).ToList(); } medicoes.AddRange(medicao); } return(medicoes); }
/// <summary> /// Metódo para buscar os dados da dre no banco de dados /// </summary> /// <param name="idVisao">Código da visão</param> /// <param name="data1">Data inicial</param> /// <param name="data2">Data final</param> /// <returns></returns> public static List <DreView> DrePadrao(int idVisao, string data) { JSgi db = new JSgi(); //Query banco de dados #region Query string query = ""; query += "select p.PLA_ID,isnull(m.MOV_DATA,'')MOV_DATA,p.PLA_TIPO,ISNULL(m.MOV_UNID,0)MOV_UNID,u.UNI_DESCRICAO,p.PLA_CODIGO,p.PLA_DESCRICAO,isnull(sum(m.MOV_VALOR),0) VALOR from TR_VISOES v "; query += "inner join TR_PLANOCONTAS p on p.PLA_ID = v.VIS_PLANID "; query += "left join TR_MOVIMENTOS m on m.MOV_PLAID = p.PLA_ID and left(m.MOV_DATA,len(@data)) = @data "; query += "left join TR_UNIDADE u on u.UNI_ID = m.MOV_UNID "; query += "where v.CAB_ID = @idVisao "; query += "group by p.PLA_ID,p.PLA_CODIGO,p.PLA_DESCRICAO,p.PLA_TIPO,m.MOV_UNID,u.UNI_DESCRICAO,m.MOV_DATA "; List <SqlParameter> parameters = new List <SqlParameter>(); parameters.Add(new SqlParameter("@idVisao", idVisao)); parameters.Add(new SqlParameter("@data", data)); var dre = db.Database.SqlQuery <DreView>(query, parameters.ToArray()).ToList(); #endregion Query //Soma contas sinteticas /* #region SomaSinteticas * var sinteticasSomadas = new List<DreView>(); * foreach (var item in dre.Where(x => x.PLA_TIPO == (int)Enums.TipoConta.Sintetica).ToList()) * { * foreach (var meses in dre.Where(x => !String.IsNullOrEmpty(x.MOV_DATA)).GroupBy(x => new { mes = x.MOV_DATA.Substring(4, 2) }).Select(x => new { x.Key.mes }).OrderBy(x => x.mes).OrderBy(x => x.mes)) * { * //Filtra valores por unidade de medida * var valores = dre.Where(x => !String.IsNullOrEmpty(x.MOV_DATA) && x.MOV_DATA.Substring(0, 6) == data.Substring(0, 4) + meses.mes && x.PLA_CODIGO.Substring(0, Math.Min(item.PLA_CODIGO.Length, x.PLA_CODIGO.Length)) == item.PLA_CODIGO).GroupBy(x => new { x.UNI_DESCRICAO, x.MOV_UNID }).Select(x => new { valor = x.Sum(j => j.Valor), UNI_DESCRICAO = x.Key.UNI_DESCRICAO, MOV_UNID = x.Key.MOV_UNID }); * //Percorre e adiciona contas sinteticas * foreach (var valor in valores) * { * sinteticasSomadas.Add(new DreView { MOV_DATA = data.Substring(0, 4) + meses.mes + "01", MOV_UNID = valor.MOV_UNID, PLA_CODIGO = item.PLA_CODIGO, PLA_DESCRICAO = item.PLA_DESCRICAO, PLA_ID = item.PLA_ID, PLA_TIPO = item.PLA_TIPO, UNI_DESCRICAO = valor.UNI_DESCRICAO, Valor = valor.valor }); * } * } * } * dre.AddRange(sinteticasSomadas); #endregion SomaSinteticas * */ return(dre.OrderBy(x => x.PLA_CODIGO).ToList()); }
public static void SetProduzindo(JSgi bd, string maquina, string produto, string order, int seqRep, int seqTran) { try { bd.Database.ExecuteSqlCommand(@" UPDATE T_FILA_PRODUCAO SET FPR_PRODUZINDO = 0 WHERE ROT_MAQ_ID= '" + maquina + "' AND FPR_PRODUZINDO = 1 "); string sql = " UPDATE T_FILA_PRODUCAO SET FPR_PRODUZINDO = 1 WHERE ORD_ID = '" + order + "' AND ROT_PRO_ID = '" + produto + "' AND ROT_MAQ_ID = '" + maquina + "' AND ROT_SEQ_TRANFORMACAO = " + seqTran + " AND FPR_SEQ_REPETICAO = " + seqRep; bd.Database.ExecuteSqlCommand(sql); bd.Database.ExecuteSqlCommand(" SP_PLUG_SET_FASES_CLP_PENDENTES '" + maquina + "'"); bd.Database.ExecuteSqlCommand(" SP_PLUG_CALCULA_FILAS '" + maquina + "'"); } catch (Exception ex) { Console.WriteLine("Erro ao executar SQL:" + ex); } /*Mensagem m = new Mensagem(); * m.MEN_ID = "SP_PLUG_SET_FASES_CLP_PENDENTES" + maquina; * m.MEN_MENSAGEM = "PENDENTE"; * m.AddMensagem(bd, m); * m = null;*/ }
/// <summary> /// Metódo para processar as medições filtrando por indicadores /// </summary> /// <param name="indicadores">Objeto com dados dos indicadores para serem filtrados.</param> /// <param name="pAno">Ano a ser filtrado</param> /// <returns></returns> public static List <vw_SGI_PARAMETRO_RELMEDICOES> GetMedicoes(List <MedicoesInd> indicadores, string pAno) { JSgi db2 = new JSgi(); List <vw_SGI_PARAMETRO_RELMEDICOES> medicoes = new List <vw_SGI_PARAMETRO_RELMEDICOES>(); var medicao = new List <vw_SGI_PARAMETRO_RELMEDICOES>(); foreach (var item in indicadores) { //Busca dados no banco filtrando por indicador e meta medicao = db2.Database.SqlQuery <vw_SGI_PARAMETRO_RELMEDICOES>("select * from vw_SGI_PARAMETRO_RELMEDICOES WHERE IND_ID = '" + item.IND_ID.ToString() + "' ").ToList(); //db2.vw_SGI_PARAMETRO_RELMEDICOES.Where(x => x.IND_ID == item.IND_ID && x.MET_ID == item.MET_ID).ToList(); //Appenda dados no objeto lista medições if (pAno != "" && pAno != null) { medicao = medicao.Where(x => x.Mes.Substring(0, 4) == pAno).ToList(); } medicoes.AddRange(medicao); } return(medicoes); }
public Boolean AddMensagem(JSgi db, Mensagem m) { Mensagem Men = null; Men = db.Mensagens.Find(m.MEN_ID); if (Men == null) { m.MEN_EMISSAO = DateTime.Now; db.Mensagens.Add(m); } else { db.Entry(Men).State = EntityState.Modified; Men.MEN_EMISSAO = DateTime.Now; Men.MEN_MENSAGEM = m.MEN_MENSAGEM; db.SaveChanges(); } db.SaveChanges(); m = null; Men = null; return(true); }
public void IniciarSincronizacao() { System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "LogEntrouIniSinc.txt"); try { using (JSgi bd = new JSgi()) { List <Maquina> maquinas = bd.Maquina.ToList(); foreach (var m in maquinas) { if (m.ControlIp != null) { MaquinasTimerControl.Add(new MaquinaTimer(m)); } } } } catch (Exception e) { System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "LogErroIniSinc.txt"); } }
public Boolean AddParametro(JSgi db, Param p) { Param Par = db.Parametros.Find(p.PAR_ID); if (Par == null) { Par.PAR_ID = p.PAR_ID; Par.PAR_DESCRICAO = p.PAR_DESCRICAO; Par.PAR_VALOR_S = p.PAR_VALOR_S; Par.PAR_VALOR_N = p.PAR_VALOR_N; db.Parametros.Add(Par); } else { db.Entry(Par).State = EntityState.Modified; Par.PAR_ID = p.PAR_ID; Par.PAR_DESCRICAO = p.PAR_DESCRICAO; Par.PAR_VALOR_S = p.PAR_VALOR_S; Par.PAR_VALOR_N = p.PAR_VALOR_N; } db.SaveChanges(); return(true); }
public static void SendMensagem(string msgid, string msg) { using (JSgi db = new JSgi()) { Mensagem Men = null; Men = db.Mensagens.Find(msgid); if (Men == null) { Mensagem m = new Mensagem(); m.MEN_ID = msgid; m.MEN_EMISSAO = DateTime.Now; m.MEN_MENSAGEM = msg; db.Mensagens.Add(m); } else { db.Entry(Men).State = EntityState.Modified; Men.MEN_EMISSAO = DateTime.Now; Men.MEN_MENSAGEM = msg; } db.SaveChanges(); Men = null; } }
public ActionResult ObterFeedbacksDeDesenpenho(string maquina, DateTime dataDe, DateTime dataAte, string tipo, string status) { List <string[]> jsonReturn = null; using (var db = new JSgi()) { IQueryable <V_MOTIVO_FEEDBACKS_DESEMPENHO> query = db.Set <V_MOTIVO_FEEDBACKS_DESEMPENHO>(); if (!string.IsNullOrEmpty(maquina)) { query = query.Where(t => t.MAQ_ID == maquina); } if (dataDe != null) { query = query.Where(t => t.TAR_DIA_TURMA_D >= dataDe.Date); } if (dataAte != null) { query = query.Where(t => t.TAR_DIA_TURMA_D <= dataAte.Date); } string filtro = ""; if (status != "" && tipo != "" && tipo != "SS") { if (tipo == "T" && status == "T") { filtro = ""; } else if (tipo == "T" && status != "T") { filtro = status; } else if (status == "T" && tipo != "T") { filtro = tipo; } else if (tipo != "T" && status != "T") { filtro = status + tipo; } } if (tipo == "SS") { if (status == "B") { query = query.Where(t => (new string[] { "BSA", "BS" }).Contains(t.TIPO)); } if (status == "G") { query = query.Where(t => (new string[] { "GSA", "GS" }).Contains(t.TIPO)); } if (status != "B" && status != "G") { query = query.Where(t => (new string[] { "BSA", "BS", "GSA", "GS" }).Contains(t.TIPO)); } } if (filtro != "") { if (filtro == "P" || filtro == "S" || filtro == "SA") { query = query.Where(t => System.Data.Entity.DbFunctions.Right(t.TIPO_ID, filtro.Length) == filtro); } else if (filtro == "GS" || filtro == "BS") { query = query.Where(t => t.TIPO_ID == filtro); } else { query = query.Where(t => System.Data.Entity.DbFunctions.Left(t.TIPO_ID, filtro.Length) == filtro); } } jsonReturn = query .OrderBy(t => t.TAR_DIA_TURMA_D).ToList().Select(t => new[] { //t.ID.ToString(), t.TIPO.ToString(), t.TAR_DIA_TURMA.ToString(), t.OCO_ID_PERFORMANCE.ToString(), t.OCO_DESCRICAO, t.TAR_OBS_PERFORMANCE, t.NOME, t.MAQ_ID, t.ORD_ID, t.PRO_ID, t.FPR_SEQ_REPETICAO.ToString(), t.ROT_SEQ_TRANFORMACAO.ToString(), t.TURM_ID, t.TURN_ID, t.TAR_DIA_TURMA_D != null ? ((DateTime)t.TAR_DIA_TURMA_D).ToString("dd/MM/yyyy") : "" }).ToList(); } return(Json(new { data = jsonReturn }, JsonRequestBehavior.AllowGet)); }
private void GravarMedicao(object state) { using (JSgi bd = new JSgi()) { List <Maquina> maquinas = bd.Maquina.ToList(); foreach (var m in maquinas) { if (m.ControlIp != null) { HttpWebResponse response = null; StreamReader streamReader = null; try { string url = "http://" + m.ControlIp + "/getLotes"; DateTime dataMenor = new DateTime(1970, 01, 01, 00, 00, 00); DateTime dataAtual = DateTime.Now; var difSeconds = Math.Floor((dataAtual - dataMenor).TotalSeconds); url += "?data=" + difSeconds + "&h="; var cmd = bd.Database.Connection.CreateCommand(); cmd.Connection.Open(); cmd.CommandText = @"SELECT * FROM V_QUEBRA_LOTES_CLP WHERE CAL_ID = 0 OR CAL_ID = @CalendarioId"; DbParameter parametros = cmd.CreateParameter(); parametros.ParameterName = "CalendarioId"; parametros.Value = m.CalendarioId; cmd.Parameters.Add(parametros); var dataReader = cmd.ExecuteReader(); List <TimeSpan> horas = new List <TimeSpan>(); if (dataReader.HasRows) { while (dataReader.Read()) { string hora = dataReader.GetString(1); var arrayHora = hora.Split(':'); horas.Add(new TimeSpan(Convert.ToInt32(arrayHora[0]), Convert.ToInt32(arrayHora[1]), Convert.ToInt32(arrayHora[2]))); } } cmd.Connection.Close(); foreach (TimeSpan h in horas) { url += h.Hours + ":" + h.Minutes + "."; } string result = string.Empty; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.Timeout = 5000; List <ClpMedicoes> medicoes = new List <ClpMedicoes>(); response = (HttpWebResponse)httpWebRequest.GetResponse(); streamReader = new StreamReader(response.GetResponseStream(), true); result = streamReader.ReadToEnd(); if (!string.IsNullOrEmpty(result)) { string[] dataArray; string[] linhas = result.Split('|'); foreach (string l in linhas) { if (!string.IsNullOrEmpty(l.Trim())) { string[] colunas = l.Split('#'); ClpMedicoes medicao = new ClpMedicoes(); dataArray = colunas[1].Split(new Char[] { '-', ' ', ':' }); medicao.DataInicio = new DateTime(Convert.ToInt32(dataArray[0]), Convert.ToInt32(dataArray[1]), Convert.ToInt32(dataArray[2]), Convert.ToInt32(dataArray[3]), Convert.ToInt32(dataArray[4]), Convert.ToInt32(dataArray[5]), 00); dataArray = colunas[2].Split(new Char[] { '-', ' ', ':' }); medicao.DataFim = new DateTime(Convert.ToInt32(dataArray[0]), Convert.ToInt32(dataArray[1]), Convert.ToInt32(dataArray[2]), Convert.ToInt32(dataArray[3]), Convert.ToInt32(dataArray[4]), Convert.ToInt32(dataArray[5]), 00); medicao.Quantidade = Convert.ToDouble(colunas[3]); /* medicao.OrdemProducaoId = "";*/ /*colunas[4];*/ //medicao.IdLoteClp = Convert.ToInt32(colunas[0]); //medicao.MaquinaId = m.Id; /*medicao.ProdutoId = "";*//*colunas[5];*/ //medicao.Status = 0; /*medicao.SequenciaTransformacaoId = 0;*//*!string.IsNullOrEmpty(colunas[6]) ? Convert.ToInt32(colunas[6]) : 0;*/ /*medicao.SequenciaRepeticaoId = 0;*//*!string.IsNullOrEmpty(colunas[7]) ? Convert.ToInt32(colunas[7]) : 0;*/ //medicao.OcorrenciaId = ""; //medicao.FilaProducaoId = 0; //medicao.ClpOrigem = ""; //medicao.Grupo = 1.2; //medicoes.Add(medicao); } } url = "http://" + m.ControlIp + "/confirmLotes?l="; foreach (ClpMedicoes med in medicoes) { if (bd.ClpMedicoes.Where(x => x.IdLoteClp == med.IdLoteClp && x.DataInicio == med.DataInicio).Count() == 0) { bd.ClpMedicoes.Add(med); } url += med.IdLoteClp + "."; } bd.SaveChanges(); response.Close(); httpWebRequest = (HttpWebRequest)WebRequest.Create(url); response = (HttpWebResponse)httpWebRequest.GetResponse(); response.Close(); } } catch (Exception e) { if (response != null) { response.Close(); } } finally { if (streamReader != null) { streamReader.Close(); } } } } } _timer.Change(5000, Timeout.Infinite); }
/// <summary> /// Metódo responsavel por retornar agrupado os indicadores para serem utilizados na páginação /// </summary> /// <param name="nPageSize">Registros por página</param> /// <param name="page">Página a ser exibida</param> /// <param name="idNegocio">Código do negócio</param> /// <param name="pAno">Ano a ser filtrado</param> /// <returns>Irá retornar lista de indicadores com ano,id negocio e id meta</returns> public static IPagedList <MedicoesInd> GetIndicadores(int?nPageSize, int?page, int?idNegocio, int?idGrupo, int?idUnidade, int?idDepartamento, string pAno, string search, List <T_Favoritos> Favoritos) { JSgi db = new JSgi(); var _PageNumber = page ?? 1; var _PageSize = nPageSize ?? 10; var agrupado = new List <MedicoesInd>(); //Agrupa dados por mês, Indicador e meta var indicadores = db.vw_SGI_PARAMETRO_RELMEDICOES .Select(x => new { Ano = x.Mes.Substring(0, 4), IND_DESCRICAO = x.IND_DESCRICAO, IND_ID = x.IND_ID, NEG_ID = x.NEG_ID, UNI_ID = x.UNID }) .GroupBy(x => new { x.IND_ID, x.IND_DESCRICAO, x.NEG_ID, x.Ano, x.UNI_ID }).OrderByDescending(x => x.Key.Ano).ToList(); #region Filtros //Filtra grupos por usuário /*if (!HttpContext.Current.User.IsInRole("Admin")) * { * var usuario = db.T_Usuario.First(x => x.ID_USUARIO == ((ICustomPrincipal)HttpContext.Current.User).Id); * var grupos = db.T_USER_GRUPO.Where(x => x.ID_USUARIO == usuario.ID_USUARIO).ToList(); * var indGrupos = db.T_Grupo_Indicador.ToList().Where(x => grupos.Any(g => g.GRU_ID == x.GRU_ID)).ToList(); * indicadores = indicadores.Where(x => indGrupos.Any(g => x.Key.IND_ID == g.IND_ID)).ToList(); * }*/ //Filtra Ano if (pAno != "" && pAno != null) { indicadores = indicadores.Where(x => x.Key.Ano == pAno).ToList(); } //Filtra Negócio if (idNegocio > 0) { indicadores = indicadores.Where(x => x.Key.NEG_ID == idNegocio).ToList(); } //Filtra Grupo if (idGrupo > 0) { var grupos = db.T_Grupo_Indicador.Where(x => x.GRU_ID == idGrupo).ToList(); indicadores = indicadores.Where(x => grupos.Any(g => g.IND_ID == x.Key.IND_ID)).ToList(); } //Filtra Departamento if (idDepartamento > 0) { var departamentos = db.T_Indicadores_Departamentos.Where(x => x.DEP_ID == idDepartamento).ToList(); indicadores = indicadores.Where(x => departamentos.Any(d => d.IND_ID == x.Key.IND_ID)).ToList(); } //Filtra por unidade if (idUnidade > 0) { indicadores = indicadores.Where(x => x.Key.UNI_ID == idUnidade).ToList(); } //Filtra por pesquisa de usuário if (!string.IsNullOrEmpty(search)) { indicadores = indicadores.Where(x => (x.Key.IND_DESCRICAO).ToUpper().Contains(search.ToUpper())).ToList(); } #endregion Filtros //Percorre registros recuperados foreach (var item in indicadores.OrderBy(x => x.Key.IND_DESCRICAO)) { if (agrupado.Count(x => x.IND_ID == item.Key.IND_ID) <= 0) { //busca detalhes do indicador var indicador = db.T_Indicadores.Where(x => x.IND_ID == item.Key.IND_ID).FirstOrDefault(); //busca as dimensoes do indicador indicador.Dimensoes = db.T_Medicoes .Where(x => x.IndId == indicador.IND_ID && x.DimId != null) .Select(x => new Dimensao { Id = (int)x.DimId, Descricao = x.DimDescricao }).Distinct().ToList(); //busca as sub dimensoes do indicador /*var SubDimensoes = db.T_Medicoes * .Where(x => x.IndId == indicador.IND_ID && x.DimSubId != null) * .Select(x => new SubDimensao * { * Id = x.DimSubId, * Descricao = x.DimSubDescricao * }).Distinct().ToList(); * * indicador.Dimensoes.ElementAt(0).SubDimensao = SubDimensoes; */ var dimId = indicador.Dimensoes.ElementAt(0).Id; //busca os periodos de um indicador baseado na primeira dimensão recuperada var periodos = db.T_Medicoes .Where(x => x.IndId == indicador.IND_ID && x.DimId != null && x.DimId == dimId && x.PerId != null && x.PerId.Trim().ToUpper() != "MAC" && x.PerId.Trim().ToUpper() != "DAC") .Select(x => new Periodo { Id = x.PerId, Descricao = x.PerDescricao }) .Distinct().ToList(); //adciona os periodos na primeira posicao da lista de dimensoes do indicador indicador.Dimensoes.ElementAt(0).Periodos = periodos; agrupado.Add(new MedicoesInd() { ID_FAVORITO = (Favoritos.Count(x => x.ID_INDICADOR == item.Key.IND_ID) > 0 ? item.Key.IND_ID : 0), IND_ID = item.Key.IND_ID, Ano = item.Key.Ano, Indicador = indicador, DESC_CALCULO = indicador.DESC_CALCULO, TIPO_COMPARADOR = indicador.IND_TIPOCOMPARADOR.ToString(), IND_CONEXAO = indicador.IND_CONEXAO, IND_GRAFICO = indicador.IND_GRAFICO, DIM_ID = indicador.DIM_ID, PER_ID = indicador.PER_ID }); } } return(agrupado.OrderBy(x => x.Indicador.IND_DESCRICAO).OrderByDescending(x => x.ID_FAVORITO).ToPagedList(_PageNumber, _PageSize)); }
/// <summary> /// Metódo responsavel por retornar agrupado os indicadores para serem utilizados na páginação /// </summary> /// <param name="nPageSize">Registros por página</param> /// <param name="page">Página a ser exibida</param> /// <param name="idNegocio">Código do negócio</param> /// <param name="pAno">Ano a ser filtrado</param> /// <returns>Irá retornar lista de indicadores com ano,id negocio e id meta</returns> public static IPagedList <MedicoesInd> GetIndicadores(string pesquisa, int?nPageSize, int?page, int?idNegocio, int?idGrupo, int?idUnidade, int?idDepartamento, string pAno) { JSgi db = new JSgi(); var _PageNumber = page ?? 1; var _PageSize = nPageSize ?? 10; var agrupado = new List <MedicoesInd>(); //Agrupa dados por mês, Indicador e meta var indicadores = db.vw_SGI_PARAMETRO_RELMEDICOES .Select(x => new { Ano = x.Mes.Substring(0, 4), IND_ID = x.IND_ID, NEG_ID = x.NEG_ID, UNI_ID = x.UNID }) .GroupBy(x => new { x.IND_ID, x.NEG_ID, x.Ano, x.UNI_ID }).ToList(); #region Filtros //Filtra grupos por usuário if (!HttpContext.Current.User.IsInRole("Admin")) { var usuario = db.T_Usuario.First(x => x.EMAIL == HttpContext.Current.User.Identity.Name); var grupos = db.T_USER_GRUPO.Where(x => x.ID_USUARIO == usuario.ID_USUARIO).ToList(); var gruposLiberados = db.T_Grupo_Indicador.Where(x => grupos.Any(g => g.GRU_ID == x.GRU_ID)).ToList(); indicadores = indicadores.Where(x => gruposLiberados.Any(g => x.Key.IND_ID == g.IND_ID)).ToList(); } //Filtra Ano if (pAno != "" && pAno != null) { indicadores = indicadores.Where(x => x.Key.Ano == pAno).ToList(); } //Filtra Negócio if (idNegocio > 0) { indicadores = indicadores.Where(x => x.Key.NEG_ID == idNegocio).ToList(); } //Filtra Grupo if (idGrupo > 0) { var grupos = db.T_Grupo_Indicador.Where(x => x.GRU_ID == idGrupo).ToList(); indicadores = indicadores.Where(x => grupos.Any(g => g.IND_ID == x.Key.IND_ID)).ToList(); } //Filtra por unidade if (idUnidade > 0) { indicadores = indicadores.Where(x => x.Key.UNI_ID == idUnidade).ToList(); } //Filtra Departamento if (idDepartamento > 0) { var departamentos = db.T_Indicadores_Departamentos.Where(x => x.DEP_ID == idDepartamento).ToList(); indicadores = indicadores.Where(x => departamentos.Any(d => d.IND_ID == x.Key.IND_ID)).ToList(); } #endregion Filtros //Percorre registros recuperados foreach (var item in indicadores) { if (agrupado.Count(x => x.IND_ID == item.Key.IND_ID) <= 0) { agrupado.Add(new MedicoesInd() { IND_ID = item.Key.IND_ID, Ano = item.Key.Ano, Indicador = db.T_Indicadores.Find(item.Key.IND_ID) }); } } return(agrupado.OrderBy(x => x.MET_ID).ToPagedList(_PageNumber, _PageSize)); }