예제 #1
0
        void RecuperarControlValues()
        {
            foreach (var item in queryMethodsMulti)
            {
                CControlValues control = new CControlValues();
                control.IDL = Convert.ToDecimal(item.Idl);
                control.IPC = Convert.ToDecimal(item.Ipc);
                control.LFB = Convert.ToDecimal(item.Lfb);
                control.LFM = Convert.ToDecimal(item.Lfm);
                control.MDL = Convert.ToDecimal(item.Mdl);
                control.LDR = Convert.ToDecimal(item.Linealidad);

                dicControlValues.Add(item.Elemento.PadRight(2, '_') + item.Longitud.ToString(), control);
            }
        }
예제 #2
0
        public CCeldaProcesada ProcesarMuestra(int idmuestra, string elemento, string value_celda)
        {
            if (dicControlValues.ContainsKey(elemento) && !value_celda.Contains("NULL"))
            {
                System.Drawing.Color colorError = System.Drawing.Color.NavajoWhite;

                CCeldaProcesada celdaProcesada      = new CCeldaProcesada();
                decimal         value_celda_decimal = Convert.ToDecimal(value_celda);
                CControlValues  controlValues       = dicControlValues[elemento];

                // procesar celda: idmuestra + elemento
                DataRow fila = dicFilasLeyes[idmuestra];
                celdaProcesada.ColorCelda = Color.White;
                celdaProcesada.ValueCelda = value_celda;
                string  nombreMuestra = fila["Muestra"].ToString();
                string  metodo        = fila["Metodo"].ToString();
                decimal factor        = Convert.ToDecimal(fila["Factor"]);
                decimal dilucion2     = Convert.ToDecimal(fila["Dilucion"]);


                if (EsDUP(nombreMuestra))
                {
                    // encontrar muestra original
                    int     idmuestra_orig = queryFilasIteva.Single(c => nombreMuestra.Contains(c.Muestra) && nombreMuestra != c.Muestra).Idmuestra;
                    DataRow drOri          = dicFilasLeyes[idmuestra_orig];
                    decimal value_orig     = Convert.ToDecimal(drOri[elemento].ToString().Replace('<', ' '));
                    decimal MDL_or_IDL     = metodo == "MT" ? controlValues.MDL : controlValues.IDL;
                    celdaProcesada.ValueCelda = "OK Dup";
                    if (value_orig > MDL_or_IDL)
                    {
                        if (!(Math.Abs(value_orig - value_celda_decimal) < 0.15M * value_orig))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out Dup";
                        }
                    }
                    else
                    {
                        if (!(value_celda_decimal < 2.2M * controlValues.MDL))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out Dup";
                        }
                    }
                }
                else if (EsLFM(nombreMuestra))
                {
                    int     idmuestra_orig = queryFilasIteva.Single(c => nombreMuestra.Contains(c.Muestra) && nombreMuestra != c.Muestra).Idmuestra;
                    DataRow drOri          = dicFilasLeyes[idmuestra_orig];
                    decimal value_orig     = Convert.ToDecimal(drOri[elemento].ToString().Replace('<', ' '));
                    decimal MDL_or_IDL     = metodo == "MT" ? controlValues.MDL : controlValues.IDL;
                    celdaProcesada.ValueCelda = "OK LFM";
                    if (value_orig > MDL_or_IDL)
                    {
                        if (!EstaEntre(Math.Abs(value_orig - value_celda_decimal), controlValues.LFM * 0.70M, controlValues.LFM * 1.30M))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out LFM";
                        }
                    }
                    else
                    {
                        if (!EstaEntre(value_celda_decimal, controlValues.LFM * 0.70M, controlValues.LFM * 1.30M))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out LFM";
                        }
                    }
                }
                else if (EsSoloMuestra(nombreMuestra))
                {
                    decimal MDL_or_IDL      = metodo == "MT" ? controlValues.IDL : controlValues.MDL;
                    string  limite_inferior = metodo == "MT" ? "IDL" : "MDL";
                    string  txt;

                    if (value_celda_decimal < MDL_or_IDL)
                    {
                        celdaProcesada.ValueCelda = "<" + MDL_or_IDL;
                    }
                    else
                    {
                        if (value_celda_decimal < controlValues.LDR)
                        {
                            celdaProcesada.ValueCelda = (value_celda_decimal * factor * dilucion2).ToString();
                        }
                        else
                        {
                            celdaProcesada.ValueCelda = ">" + controlValues.LDR.ToString();
                        }
                    }

                    #region comentario

                    ///Metodo:
                    ///LimiteInferior:
                    ///LimiteSuperior:
                    ///Prueba: LimiteInferior < lectura < LimiteSuperior .......
                    ///Resultado:

                    StringBuilder mensaje = new StringBuilder();
                    mensaje.Append("Metodo: {0}");
                    mensaje.Append("\nLímite inferior {1}: {2}");
                    mensaje.Append("\nLímite superior LDR: {3}");
                    mensaje.Append("\nPrueba: {4} < {5} < {6}");
                    mensaje.Append("\nResultado: {7}");

                    txt = string.Format(mensaje.ToString(),
                                        metodo,
                                        limite_inferior, MDL_or_IDL,
                                        controlValues.LDR,
                                        MDL_or_IDL, value_celda, controlValues.LDR,
                                        celdaProcesada.ValueCelda);

                    dicToolTip.Add(idmuestra.ToString() + elemento, txt);

                    #endregion
                }

                // agregar/actualizar el diccionario
                string key = idmuestra.ToString() + elemento;
                celdaProcesada.Idmuestra = idmuestra;
                celdaProcesada.Elemento  = elemento;

                if (!dicCeldaProcesada.ContainsKey(key))
                {
                    dicCeldaProcesada.Add(key, celdaProcesada);
                }
                else
                {
                    dicCeldaProcesada[key] = celdaProcesada;
                }

                return(celdaProcesada);
            }
            else
            {
                return(null);
            }
        }
예제 #3
0
        public CCeldaProcesada ProcesarMuestraControl(int idmuestra, string elemento, string value_celda)
        {
            if (dicControlValues.ContainsKey(elemento) && !value_celda.Contains("NULL"))
            {
                System.Drawing.Color colorError = System.Drawing.Color.NavajoWhite;

                CCeldaProcesada celdaProcesada      = new CCeldaProcesada();
                decimal         value_celda_decimal = Convert.ToDecimal(value_celda);
                CControlValues  controlValues       = dicControlValues[elemento];

                // procesar celda: idmuestra + elemento
                DataRow fila = dicFilasLeyes[idmuestra];
                celdaProcesada.ColorCelda = Color.White;
                celdaProcesada.ValueCelda = value_celda;
                string  nombreMuestra = fila["Muestra"].ToString();
                string  metodo        = fila["Metodo"].ToString();
                decimal factor        = Convert.ToDecimal(fila["Factor"]);
                decimal dilucion2     = Convert.ToDecimal(fila["Dilucion"]);

                if (EsIPC(nombreMuestra)) // IPC
                {
                    celdaProcesada.ValueCelda = "OK IPC";
                    if (!EstaEntre(value_celda_decimal, controlValues.IPC * 0.9M, controlValues.IPC * 1.1M))
                    {
                        celdaProcesada.ColorCelda = colorError;
                        celdaProcesada.ValueCelda = "Out IPC";
                    }

                    StringBuilder mensaje = new StringBuilder();
                    mensaje.Append("IPC de {0}: {1}");
                    mensaje.Append("\nIntervalo: {1} * 0.9 <= lectura <= {1} * 1.1");
                    mensaje.Append("\nIntervalo: {2} <= {4} <= {3}");
                    mensaje.Append("\nResultado: {5}");

                    string txt = string.Format(
                        mensaje.ToString(), elemento, controlValues.IPC, controlValues.IPC * 0.9M,
                        controlValues.IPC * 1.1M, value_celda, celdaProcesada.ValueCelda);
                    dicToolTip.Add(idmuestra.ToString() + elemento, txt);
                }
                else if (EsLRB(nombreMuestra)) // LRB en (MT ó MD)
                {
                    decimal MDL_or_IDL = metodo == "MT" ? controlValues.MDL : controlValues.IDL;
                    celdaProcesada.ValueCelda = "OK LRB";
                    if (!(value_celda_decimal < MDL_or_IDL * 2.2M))
                    {
                        celdaProcesada.ColorCelda = colorError;
                        celdaProcesada.ValueCelda = "Cont LRB";
                    }
                }
                else if (EsLFB(nombreMuestra))
                {
                    int idbatch_muestra = queryFilasIteva.Single(c => c.Idmuestra == idmuestra).Idbatch;
                    int idmuestra_lrb   = queryFilasIteva.Single(c => c.Muestra == "LRB" && c.Idbatch == idbatch_muestra).Idmuestra;

                    DataRow drLrb = dicFilasLecturas[idmuestra_lrb];
                    decimal lrb   = Convert.ToDecimal(drLrb[elemento]);
                    celdaProcesada.ValueCelda = "OK LFB";
                    if (!EstaEntre(Math.Abs(value_celda_decimal - lrb), controlValues.LFB * 0.85M, controlValues.LFB * 1.15M))
                    {
                        celdaProcesada.ColorCelda = colorError;
                        celdaProcesada.ValueCelda = "Cont LFB";
                    }
                }
                else if (EsDUP(nombreMuestra))
                {
                    // encontrar muestra original
                    int     idmuestra_orig = queryFilasIteva.Single(c => nombreMuestra.Contains(c.Muestra) && nombreMuestra != c.Muestra).Idmuestra;
                    DataRow drOri          = dicFilasLeyes[idmuestra_orig];
                    decimal value_orig     = Convert.ToDecimal(drOri[elemento].ToString().Replace('<', ' '));
                    decimal MDL_or_IDL     = metodo == "MT" ? controlValues.MDL : controlValues.IDL;
                    celdaProcesada.ValueCelda = "OK Dup";
                    if (value_orig > MDL_or_IDL)
                    {
                        if (!(Math.Abs(value_orig - value_celda_decimal) < 0.15M * value_orig))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out Dup";
                        }
                    }
                    else
                    {
                        if (!(value_celda_decimal < 2.2M * controlValues.MDL))
                        {
                            celdaProcesada.ColorCelda = colorError;
                            celdaProcesada.ValueCelda = "Out Dup";
                        }
                    }
                }

                // agregar/actualizar el diccionario
                string key = idmuestra.ToString() + elemento;
                celdaProcesada.Idmuestra = idmuestra;
                celdaProcesada.Elemento  = elemento;

                if (!dicCeldaProcesada.ContainsKey(key))
                {
                    dicCeldaProcesada.Add(key, celdaProcesada);
                }
                else
                {
                    dicCeldaProcesada[key] = celdaProcesada;
                }

                return(celdaProcesada);
            }
            else
            {
                return(null);
            }
        }
예제 #4
0
        void RecuperarControlValues()
        {
            foreach (var item in queryMethodsMulti)
            {
                CControlValues control = new CControlValues();
                control.IDL = Convert.ToDecimal(item.Idl);
                control.IPC = Convert.ToDecimal(item.Ipc);
                control.LFB = Convert.ToDecimal(item.Lfb);
                control.LFM = Convert.ToDecimal(item.Lfm);
                control.MDL = Convert.ToDecimal(item.Mdl);
                control.LDR = Convert.ToDecimal(item.Linealidad);

                dicControlValues.Add(item.Elemento.PadRight(2, '_') +  item.Longitud.ToString(), control);
            }
        }