/// <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); } } } }
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("该项目没有对应的校准曲线!不能保存!"); } }
public void DeleteSDTTableItemByProAndDate(SDTTableItem s) { try { ism_SqlMap.Delete("Calibrator.DeleteSDTTableItemByProAndDate", s); } catch (Exception e) { LogInfo.WriteErrorLog("DeleteSDTTableItemByProAndDate(SDTTableItem s)==" + e.ToString(), Module.Calibration); } }
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); }
/// <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); }
/// <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); } }
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); }
/// <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); } }
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"); } } //})); }
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); } }
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); }
public string AddSDTTableItem(string strDBMethod, SDTTableItem dataConfig) { return(myBatis.AddSDTTableItem(strDBMethod, dataConfig)); }