Beispiel #1
0
        /// <summary>
        /// 修改校准曲线,拟合表
        /// </summary>
        /// <param name="r"></param>
        public void OnSDTCalibrateCurve(CalibrationResultinfo r)
        {
            if (IsResultRight(r.Remarks) == true)
            {
                myBatis.UpdateCalibratingCurve(r);
                myBatis.UpdateSDTResult(r);
            }

            SDTTableItem SDTTableItem_Calibrating = myBatis.QuerySDTTableItemByCalibrating(r.ProjectName, r.SampleType, r.CalibrationDT, r.CalibMethod);

            if (SDTTableItem_Calibrating != null)
            {
                bool sb = myBatis.IsHasSDTSchedule(r);
                //为true,任务失败
                if (sb == false)
                {
                    if (IsSdtCurveRight(SDTTableItem_Calibrating) == true)
                    {
                        myBatis.SetSDTTabelSuccessfulState(r.ProjectName, r.SampleType);
                        myBatis.SetSDTUsingFlag(SDTTableItem_Calibrating);
                    }
                    else
                    {
                        myBatis.SetSDTTabelFailedState(r.ProjectName, r.SampleType);
                    }
                }
            }
        }
Beispiel #2
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     if (textEditCalibMethod.Text != "K系数法")
     {
         SDTTableItem sDTTableItem = new SDTTableItem();
         sDTTableItem.ProjectName = textEditProjectName.Text;
         sDTTableItem.SampleType  = textEditSampleType.Text;
         sDTTableItem.DrawDate    = Convert.ToDateTime(comBoxEditCalibTime.Text);
         sDTTableItem.IsUsed      = true;
         if (textEditCalibMethod.Text.Trim() != "")
         {
             sDTTableItem.CalibMethod = textEditCalibMethod.Text;
         }
         else
         {
             MessageBox.Show("校准方法不能为空!");
         }
         if (CalibrationEvent != null)
         {
             CalibrationEvent(new Dictionary <string, object[]>()
             {
                 { "SaveSDTTableItem", new object[] { XmlUtility.Serializer(typeof(SDTTableItem), sDTTableItem) } }
             });
         }
     }
     else
     {
         MessageBox.Show("该项目没有对应的校准曲线!不能保存!");
     }
 }
Beispiel #3
0
 public void DeleteSDTTableItemByProAndDate(SDTTableItem s)
 {
     try
     {
         ism_SqlMap.Delete("Calibrator.DeleteSDTTableItemByProAndDate", s);
     }
     catch (Exception e)
     {
         LogInfo.WriteErrorLog("DeleteSDTTableItemByProAndDate(SDTTableItem s)==" + e.ToString(), Module.Calibration);
     }
 }
Beispiel #4
0
        private void comBoxEditCalibTime_SelectedIndexChanged(object sender, EventArgs e)
        {
            textEditBlkConc.Text   = "";
            textEditBlkAbs.Text    = "";
            textEditBlkFactor.Text = "";
            textEditSDT1Conc.Text  = "";
            textEditSDT1Abs.Text   = "";
            textEditFactor1.Text   = "";
            textEditSDT2Conc.Text  = "";
            textEditSDT2Abs.Text   = "";
            textEditFactor2.Text   = "";
            textEditSDT3Conc.Text  = "";
            textEditSDT3Abs.Text   = "";
            textEditFactor3.Text   = "";
            textEditSDT4Conc.Text  = "";
            textEditSDT4Abs.Text   = "";
            textEditFactor4.Text   = "";
            textEditSDT5Conc.Text  = "";
            textEditSDT5Abs.Text   = "";
            textEditFactor5.Text   = "";
            textEditSDT6Conc.Text  = "";
            textEditSDT6Abs.Text   = "";
            textEditFactor6.Text   = "";

            SDTTableItem calibrationCurve = new SDTTableItem();
            string       projectName      = textEditProjectName.Text;
            string       CalibMethod      = textEditCalibMethod.Text;
            string       sampleType       = textEditSampleType.Text;
            string       time             = comBoxEditCalibTime.Text;

            foreach (SDTTableItem sdt in lisCalibrationCurve)
            {
                if (sdt.ProjectName == projectName && sdt.SampleType == sampleType && sdt.CalibMethod == CalibMethod && sdt.DrawDate.ToString() == time)
                {
                    calibrationCurve = sdt;
                }
            }
            CalibConcentrationAdd(calibrationCurve);
            chartControl1.Series.Clear();
            DataTable dt = new DataTable();

            dt = CreateData();
            CreateChart(dt);
        }
Beispiel #5
0
        /// <summary>
        /// 获取所有校准曲线状态为(CALIBRATING)的数据
        /// </summary>
        /// <param name="projectName"></param>
        /// <param name="sampleType"></param>
        /// <returns></returns>
        public SDTTableItem QuerySDTTableItemByCalibrating(string projectName, string sampleType, DateTime calibrationDT, string calibMethod)
        {
            SDTTableItem sdtItem = new SDTTableItem();

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("ProjectName", projectName);
                ht.Add("SampleType", sampleType);
                ht.Add("DrawDate", calibrationDT);
                ht.Add("CalibMethod", calibMethod);
                ht.Add("CalibState", CalibRemarks.CALI);
                sdtItem = ism_SqlMap.QueryForObject("Calibrator.QuerySDTTableItemByCalibrating", ht) as SDTTableItem;
            }
            catch (Exception e)
            {
                LogInfo.WriteErrorLog("QuerySDTTableItemByCalibrating(string projectName, string sampleType)==" + e.ToString(), Module.Calibration);
            }

            return(sdtItem);
        }
Beispiel #6
0
        /// <summary>
        /// 修改该曲线是否可以使用
        /// </summary>
        /// <param name="t"></param>
        public void SetSDTUsingFlag(SDTTableItem t)
        {
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("IsUsed", false);
                ht.Add("ProjectName", t.ProjectName);
                ht.Add("SampleType", t.SampleType);
                ism_SqlMap.Update("Calibrator.UpdateCalibCurveIsNotUsed", ht);

                ht.Clear();
                ht.Add("IsUsed", true);
                ht.Add("ProjectName", t.ProjectName);
                ht.Add("SampleType", t.SampleType);
                ht.Add("DrawDate", t.DrawDate);
                ism_SqlMap.Update("Calibrator.UpdateCalibCurveIsUsed", ht);
            }
            catch (Exception e)
            {
                LogInfo.WriteErrorLog("SetSDTUsingFlag(SDTTableItem t)==" + e.ToString(), Module.Calibration);
            }
        }
Beispiel #7
0
        public SDTTableItem GetAssayUsingTable(string projectName, string sampleType)
        {
            SDTTableItem sdtItem = new SDTTableItem();

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("ProjectName", projectName);
                ht.Add("SampleType", sampleType);
                sdtItem = ism_SqlMap.QueryForObject("Calibrator.GetAssayUsingTable", ht) as SDTTableItem;

                if (sdtItem == null)
                {
                    sdtItem = new SDTTableItem();
                }
            }
            catch (Exception e)
            {
                LogInfo.WriteErrorLog("GetAssayUsingTable(string projectName, string sampleType)==" + e.ToString(), Module.Calibration);
            }

            return(sdtItem);
        }
Beispiel #8
0
        /// <summary>
        /// 修改校准曲线表的吸光度
        /// </summary>
        /// <param name="calibResInfo"></param>
        public void UpdateCalibratingCurve(CalibrationResultinfo calibResInfo)
        {
            try
            {
                // 1.获取原来项目对应校准曲线数据
                Hashtable ht = new Hashtable();
                ht.Add("ProjectName", calibResInfo.ProjectName);
                ht.Add("SampleType", calibResInfo.SampleType);
                ht.Add("CalibMethod", calibResInfo.CalibMethod);
                ht.Add("DrawDate", calibResInfo.CalibrationDT.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                SDTTableItem sdtItem = ism_SqlMap.QueryForObject("Calibrator.QuerySDTTableItemByCalibrating", ht) as SDTTableItem;

                // 2.更新对应校准品校准测得的吸光度
                if (sdtItem != null)
                {
                    float fAbsNew = 0;
                    if (calibResInfo.CalibratorName == sdtItem.BlkItem)
                    {
                        if (sdtItem.BlkAbs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.BlkAbs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("BlkAbs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib1Item)
                    {
                        if (sdtItem.SDT1Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT1Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT1Abs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib2Item)
                    {
                        if (sdtItem.SDT2Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT2Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT2Abs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib3Item)
                    {
                        if (sdtItem.SDT3Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT3Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT3Abs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib4Item)
                    {
                        if (sdtItem.SDT4Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT4Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT4Abs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib5Item)
                    {
                        if (sdtItem.SDT5Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT5Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT5Abs", fAbsNew);
                    }
                    else if (calibResInfo.CalibratorName == sdtItem.Calib6Item)
                    {
                        if (sdtItem.SDT6Abs == 0)
                        {
                            fAbsNew = calibResInfo.CalibAbs;
                        }
                        else
                        {
                            fAbsNew = (sdtItem.SDT6Abs + calibResInfo.CalibAbs) / 2;
                        }
                        ht.Add("SDT6Abs", fAbsNew);
                    }
                    ism_SqlMap.Update("Calibrator.UpdateSDTTableItem", ht);
                }
            }
            catch (Exception e)
            {
                LogInfo.WriteErrorLog("UpdateCalibratingCurve(CalibrationResultinfo calibResInfo)==" + e.ToString(), Module.Calibration);
            }
        }
Beispiel #9
0
        private void CalibConcentrationAdd(SDTTableItem listCalibrationCurve)
        {
            //listCalibrationCurve.Sort(delegate(SDTTableItem x, SDTTableItem y)
            //{
            //    return x.BlkConc.CompareTo(y.BlkAbs);
            //});

            //this.Invoke(new EventHandler(delegate
            //{
            float f = 0.0f;

            if (listCalibrationCurve != null)
            {
                if (listCalibrationCurve.BlkItem != null && listCalibrationCurve.BlkItem != "")
                {
                    textEditBlkConc.Text        = listCalibrationCurve.BlkConc.ToString("#0.00");
                    textEditBlkAbs.Text         = listCalibrationCurve.BlkAbs.ToString("#0.0000");
                    this.textEditBlkFactor.Text = "0.00";
                }
                if (listCalibrationCurve.Calib1Item != null && listCalibrationCurve.Calib1Item != "")
                {
                    textEditSDT1Conc.Text = listCalibrationCurve.SDT1Conc.ToString("#0.00");
                    textEditSDT1Abs.Text  = listCalibrationCurve.SDT1Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT1Conc / (listCalibrationCurve.SDT1Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor1.Text = float.IsInfinity(f) == true ? "0.00" : f.ToString("#0.00");
                    this.textEditFactor1.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
                if (listCalibrationCurve.Calib2Item != null && listCalibrationCurve.Calib2Item != "")
                {
                    textEditSDT2Conc.Text = listCalibrationCurve.SDT2Conc.ToString("#0.00");
                    textEditSDT2Abs.Text  = listCalibrationCurve.SDT2Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT2Conc / (listCalibrationCurve.SDT2Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor2.Text = float.IsInfinity(f) == true ? "0.00":f.ToString("#0.00");
                    this.textEditFactor2.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
                if (listCalibrationCurve.Calib3Item != null && listCalibrationCurve.Calib3Item != "")
                {
                    textEditSDT3Conc.Text = listCalibrationCurve.SDT3Conc.ToString("#0.00");
                    textEditSDT3Abs.Text  = listCalibrationCurve.SDT3Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT3Conc / (listCalibrationCurve.SDT3Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor3.Text = float.IsInfinity(f) == true ? "0.00" : f.ToString("#0.00");
                    this.textEditFactor3.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
                if (listCalibrationCurve.Calib4Item != null && listCalibrationCurve.Calib4Item != "")
                {
                    textEditSDT4Conc.Text = listCalibrationCurve.SDT4Conc.ToString("#0.00");
                    textEditSDT4Abs.Text  = listCalibrationCurve.SDT4Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT4Conc / (listCalibrationCurve.SDT4Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor4.Text = float.IsInfinity(f) == true ? "0.00" : f.ToString("#0.00");
                    this.textEditFactor4.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
                if (listCalibrationCurve.Calib5Item != null && listCalibrationCurve.Calib5Item != "")
                {
                    textEditSDT5Conc.Text = listCalibrationCurve.SDT5Conc.ToString("#0.00");
                    textEditSDT5Abs.Text  = listCalibrationCurve.SDT5Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT5Conc / (listCalibrationCurve.SDT5Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor5.Text = float.IsInfinity(f) == true ? "0.00" : f.ToString("#0.00");
                    this.textEditFactor5.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
                if (listCalibrationCurve.Calib6Item != null && listCalibrationCurve.Calib6Item != "")
                {
                    textEditSDT6Conc.Text = listCalibrationCurve.SDT6Conc.ToString("#0.00");
                    textEditSDT6Abs.Text  = listCalibrationCurve.SDT6Abs.ToString("#0.0000");
                    try
                    {
                        f = listCalibrationCurve.SDT6Conc / (listCalibrationCurve.SDT6Abs - listCalibrationCurve.BlkAbs);
                    }
                    catch
                    {
                        f = 0.0f;
                    }
                    this.textEditFactor6.Text = float.IsInfinity(f) == true ? "0.00" : f.ToString("#0.00");
                    this.textEditFactor6.Text = float.IsNaN(f) == true ? "0.00" : f.ToString("#0.00");
                }
            }
            //}));
        }
Beispiel #10
0
        public bool IsSdtCurveRight(SDTTableItem curve)
        {
            CalibrationResultinfo results = null;
            bool blkrihgtflag             = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.BlkItem);
            if (results != null)
            {
                blkrihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                blkrihgtflag = true;
            }
            bool s1rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib1Item);
            if (results != null)
            {
                s1rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s1rihgtflag = true;
            }
            bool s2rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib2Item);
            if (results != null)
            {
                s2rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s2rihgtflag = true;
            }
            bool s3rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib3Item);
            if (results != null)
            {
                s3rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s3rihgtflag = true;
            }
            bool s4rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib4Item);
            if (results != null)
            {
                s4rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s4rihgtflag = true;
            }
            bool s5rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib5Item);
            if (results != null)
            {
                s5rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s5rihgtflag = true;
            }
            bool s6rihgtflag = false;

            results = myBatis.GetSDTResultByProject(curve.ProjectName, curve.SampleType, curve.DrawDate, curve.Calib6Item);
            if (results != null)
            {
                s6rihgtflag = CheckResultsHasRihgt(results);
            }
            else
            {
                s6rihgtflag = true;
            }
            if (blkrihgtflag == true && s1rihgtflag == true && s2rihgtflag == true && s3rihgtflag == true && s4rihgtflag == true && s5rihgtflag == true && s6rihgtflag == true)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #11
0
        public float GetResultConcValue(ResultInfo samResultInfo)
        {
            float        c     = 0;
            SDTTableItem table = new SDTTableItem();
            AssayProjectCalibrationParamInfo calParam = myBatis.GetAssayProjectCalParamInfo(samResultInfo.ProjectName, samResultInfo.SampleType) as AssayProjectCalibrationParamInfo;

            if (calParam.CalibrationMethod == "K系数法")
            {
                c = CalculateConc.GetKConftMethodConc(calParam, samResultInfo.AbsValue);
            }
            else
            {
                table = myBatis.GetAssayUsingTable(samResultInfo.ProjectName, samResultInfo.SampleType);
                c     = CalculateConc.GetConc(table, samResultInfo.AbsValue);
            }

            //table = myBatis.GetAssayUsingTable(samResultInfo.ProjectName, samResultInfo.SampleType);
            ////曲线拟合计算样本浓度值
            //c = CalculateConc.GetConc(table, samResultInfo.AbsValue);

            //修正定标体积和样本体积差异
            AssayProjectParamInfo assayProParam = myBatis.GetAssProParamInfo("GetAssayProjectParamInfoByNameAndType", samResultInfo.ProjectName, samResultInfo.SampleType);

            if (assayProParam == null)
            {
                return(0);
            }

            string dilutionType = "";

            if (samResultInfo.GetType().Name == "SampleResultInfo")
            {
                dilutionType = myBatis.GetSampleTaskDilutionType(samResultInfo as SampleResultInfo);
            }
            else
            {
                dilutionType = "常规体积";
            }
            //定标体积校正
            float SampleVol = 0;
            float SdtVol    = 0;

            if (assayProParam != null)
            {
                if (assayProParam.CalibSamVol == 0)
                {
                    SdtVol = assayProParam.CalibStosteVol;
                }
                else
                {
                    SdtVol = assayProParam.CalibSamVol;
                }

                switch (dilutionType)
                {
                case "减量体积":    //减量体积
                    if (assayProParam.DecSamVol == 0)
                    {
                        SampleVol = assayProParam.DecStosteVol;
                    }
                    else
                    {
                        SampleVol = assayProParam.DecSamVol;
                    }
                    break;

                case "增量体积":    //增量体积
                    if (assayProParam.IncSamVol == 0)
                    {
                        SampleVol = assayProParam.IncStosteVol;
                    }
                    else
                    {
                        SampleVol = assayProParam.IncSamVol;
                    }
                    break;

                case "常规体积":    //常规体积
                    if (assayProParam.ComSamVol == 0)
                    {
                        SampleVol = assayProParam.ComStosteVol;
                    }
                    else
                    {
                        SampleVol = assayProParam.ComSamVol;
                    }
                    break;

                case "自定义":
                    break;
                }
            }
            if (table != null /*&& table.SDTCurve != "Absolute"*/)//
            {
                float k1 = SdtVol / (SdtVol + (assayProParam.Reagent1Vol == 100000000 ? 0 : assayProParam.Reagent1Vol) + (assayProParam.Reagent2Vol == 100000000 ? 0 : assayProParam.Reagent2Vol)) * (SampleVol + (assayProParam.Reagent1Vol == 100000000 ? 0 : assayProParam.Reagent1Vol) + (assayProParam.Reagent2Vol == 100000000 ? 0 : assayProParam.Reagent2Vol)) / SampleVol;
                c = c * k1;
            }

            //原液体积折算
            float k = 1.0f;

            if (assayProParam != null && table != null)
            {
                switch (dilutionType)
                {
                case "减量体积":
                    k = (assayProParam.DecStosteVol + assayProParam.DecDilutionVol) / assayProParam.DecStosteVol;
                    break;

                case "增量体积":
                    k = (assayProParam.IncStosteVol + assayProParam.IncDilutionVol) / assayProParam.IncStosteVol;
                    break;

                case "常规体积":
                    k = (assayProParam.ComStosteVol + assayProParam.ComDilutionVol) / assayProParam.ComStosteVol;
                    break;

                case "自定义":
                    break;
                }

                /*
                 * if (table.SDTCurve == "Absolute")
                 * {
                 *  c = c * 1.0f;
                 * }
                 * else*/
                {
                    c = c * k;
                }
            }


            if (assayProParam != null)
            {
                c = c * assayProParam.InstrumentFactorA + assayProParam.InstrumentFactorB;
            }


            return(c);
        }
Beispiel #12
0
 public string AddSDTTableItem(string strDBMethod, SDTTableItem dataConfig)
 {
     return(myBatis.AddSDTTableItem(strDBMethod, dataConfig));
 }