private DataTable GetProgramData(SensorDataHeadEntity eHead) { DataRow[] rowsProgramNo = null; DataRow[] rowsProgramName = null; DataRow[] rowsProgramPhase = null; if (mIsCompressed) { rowsProgramNo = mSensorCompressedData.GetSensorSeriesValues(SystemData.ProgramNo.ToString()); rowsProgramName = mSensorCompressedData.GetSensorSeriesValues(SystemData.ProgramName.ToString()); rowsProgramPhase = mSensorCompressedData.GetSensorSeriesValues(SystemData.ProgramPhase.ToString()); } else { SensorDataLineValueBll bllLineValue = new SensorDataLineValueBll(); DataTable dtProgramNo = bllLineValue.GetSensorSeriesValues(eHead.SensorDataHeadID.ToString().ToUpper(), SystemData.ProgramNo.ToString()); if (mSyncLast == null) { mSyncLast = Convert.ToDateTime(dtProgramNo.Rows[dtProgramNo.Rows.Count - 1]["ReceivedDate"]); rowsProgramNo = dtProgramNo.Select(); } else { rowsProgramNo = dtProgramNo.Select("ReceivedDate <= '" + mSyncLast.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } DataTable dtProgramName = bllLineValue.GetSensorSeriesValues(eHead.SensorDataHeadID.ToString().ToUpper(), SystemData.ProgramName.ToString()); rowsProgramName = dtProgramName.Select("ReceivedDate <= '" + mSyncLast.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); DataTable dtProgramPhase = bllLineValue.GetSensorSeriesValues(eHead.SensorDataHeadID.ToString().ToUpper(), SystemData.ProgramPhase.ToString()); rowsProgramPhase = dtProgramPhase.Select("ReceivedDate <= '" + mSyncLast.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } DataTable dtProgramData = new DataTable("ProgramData"); dtProgramData.Columns.Add("ReceivedDate", typeof(DateTime)); dtProgramData.Columns.Add("SensorDate", typeof(DateTime)); dtProgramData.Columns.Add(Properties.Resource.ProgramNo, typeof(string)); dtProgramData.Columns.Add(Properties.Resource.ProgramName, typeof(string)); dtProgramData.Columns.Add(Properties.Resource.ProgramPhase, typeof(string)); dtProgramData.BeginLoadData(); for (int i = 0; i < rowsProgramNo.Length; i++) { DataRow row = dtProgramData.NewRow(); row["ReceivedDate"] = rowsProgramNo[i]["ReceivedDate"]; row["SensorDate"] = rowsProgramNo[i]["SensorDate"]; row[Properties.Resource.ProgramNo] = rowsProgramNo[i]["ContentString"]; row[Properties.Resource.ProgramName] = rowsProgramName[i]["ContentString"]; row[Properties.Resource.ProgramPhase] = rowsProgramPhase[i]["ContentString"]; dtProgramData.Rows.Add(row); } dtProgramData.EndLoadData(); return(dtProgramData); }
public static IList <ErrorItemDTO> GetSensorErrors(SensorDataHeadEntity eHead, DateTime?dtSyncLast) { SensorDataLineValueBll bllLineValue = new SensorDataLineValueBll(); DataTable dt = bllLineValue.GetSensorSeriesValues(eHead.SensorDataHeadID.ToString().ToUpper(), SystemData.ErrorNo.ToString()); if (dt != null) { DataRow[] rows; if (dtSyncLast == null && !dtSyncLast.HasValue) { rows = dt.Select(); } else { rows = dt.Select("ReceivedDate <= '" + dtSyncLast.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } IList <ErrorItemDTO> lstError = new List <ErrorItemDTO>(); foreach (DataRow row in rows) { ErrorItemDTO item = new ErrorItemDTO(); item.BeginDateTime = ParseHelper.ParseToDateTime(row["SensorDate"]); item.ErrorNo = ParseHelper.ParseString(row["ContentString"]); lstError.Add(item); } return(lstError); } return(null); }
private Bitmap GetProgressMark(SensorDataHeadEntity eHead, SensorDataLineEntity eLine) { TimeSpan ts = eLine.SensorDate.Value.Subtract(eHead.BeginDate.Value); double mins = ts.TotalMinutes; string strPrefix = mins > 60 ? "DvMonitorOver_" : "DvMonitorIn_"; string strImageName = string.Empty; if (mins > 60) { mins = 55; //超过60分钟的保持在55分钟状态 } if (mSensor.PositionMark == "End") { mins = 60; //结束时为60分钟状态 } if (mSensor.PositionMark == "On") { mins = 0; } int num = Convert.ToInt16(mins) / 5 * 5; strImageName = strPrefix + num.ToString(); object obj = Infecon.CSSD.Resources.Images.ResourceManager.GetObject( strImageName, Infecon.CSSD.Resources.Images.resourceCulture); if (obj != null) { return(obj as Bitmap); } else { return(null); } }
private static string GetComment(SensorDataHeadEntity eHead, SeriesDTO dtoSeries) { if (eHead == null || !eHead.BeginDate.HasValue || dtoSeries == null || dtoSeries.Points == null || dtoSeries.Points.Count == 0) { return(string.Empty); } StringBuilder builder = new StringBuilder(); builder.AppendLine("开始时间:"); builder.Append(" ").AppendLine(eHead.BeginDate.Value.ToString("yyyy-MM-dd")); builder.Append(" ").AppendLine(eHead.BeginDate.Value.ToString("HH:mm:ss")); DateTime dtEnd = Convert.ToDateTime(dtoSeries.Points[dtoSeries.Points.Count - 1].Argument); //TimeSpan ts = dtEnd - eHead.BeginDate.Value; //builder.AppendLine("已用时间:"); //builder.Append(" ").Append(ts.TotalMinutes.ToString("f2")).AppendLine("分"); builder.AppendLine("更新时间:"); builder.Append(" ").AppendLine(dtEnd.ToString("HH:mm:ss")); return(builder.ToString()); }
private SeriesDTO GetSeriesInc(SensorDataHeadEntity eHead, SystemData valueType, string seriesName, DateTime lastReceivedDate) { SensorDataLineValueBll bllLineValue = new SensorDataLineValueBll(); DataTable dt = bllLineValue.GetSensorSeriesValuesInc(eHead.SensorDataHeadID.ToString().ToUpper(), valueType.ToString(), lastReceivedDate); DataRow[] rows = null; if (dt != null && dt.Rows.Count > 0) { if (mSyncLast == null) { mSyncLast = Convert.ToDateTime(dt.Rows[dt.Rows.Count - 1]["ReceivedDate"]); rows = dt.Select(); } else { rows = dt.Select("ReceivedDate <= '" + mSyncLast.Value.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"); } mDataDic.Add(seriesName, rows); } else { mDataDic.Add(seriesName, null); } return(ToSeriesDTO(eHead, seriesName, rows)); }
public ChartDTO GetChartData(string sdhID) { //mSyncLast = null; IsNew = true; mShowPropertyDic = GetShowPropertyData(); // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetEntity(new Guid(sdhID)); if (eHead == null) { return(null); } else { if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { // 已压缩 mIsCompressed = true; mSensorCompressedData = new SensorCompressedDataHelper(eHead); } return(GetChartDataByHead(eHead)); } }
private SensorStatusDTO GetStatusData(SensorDataHeadEntity eHead) { SensorStatusDTO dtoStatus = new SensorStatusDTO(); dtoStatus.SensorCaption = mSensor.SensorName; dtoStatus.SensorStatus = mSensor.PositionMark; StatusItemDTO item = null; SensorHelper <object> helper = new SensorHelper <object>(); SensorDataLineEntity eLine = helper.SelectSingle <SensorDataLineEntity>(string.Format("SensorDataHeadID = '{0}'", eHead.SensorDataHeadID.ToString().ToUpper()), "ReceivedDate DESC"); if (eLine != null) { dtoStatus.SensorDate = eLine.SensorDate; dtoStatus.ReceivedDate = eLine.ReceivedDate; // Temperature AddValueNumberToStatus(dtoStatus, eLine.ValueNumber1, Properties.Resource.TemperatureSeries); AddValueNumberToStatus(dtoStatus, eLine.ValueNumber2, Properties.Resource.PressureSeries); AddValueNumberToStatus(dtoStatus, eLine.ValueNumber3, Properties.Resource.HumiditySeries); AddValueNumberToStatus(dtoStatus, eLine.ValueNumber4, Properties.Resource.VoltageSeries); // 确定更新时间 if (eLine.SensorDate != null && eLine.SensorDate.HasValue) { item = new StatusItemDTO(Properties.Resource.UpdatedTime, StatusItemDTO.StatusItemType.DateTimeValue, eLine.SensorDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); dtoStatus.StatusData.Add(item); } } return(dtoStatus); }
private ChartDTO GetChartDataByHead(SensorDataHeadEntity eHead) { mHeadEntity = eHead; if (mHeadEntity == null) { return(null); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Sterilizer))) { // 灭菌 return(GetSterilizerChartData(mHeadEntity)); } else if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Washer))) { // 清洗 return(GetWasherChartData(mHeadEntity)); } else { logger.WarnFormat("未处理的设备类型([传感器:{0},设备类型:{1}])", Sensor.SensorKey, Sensor.SensorType); return(null); } //return null; }
private SeriesDTO GetCompressedSeries(SensorDataHeadEntity eHead, SystemData valueType, string seriesName) { DataRow[] rows = mSensorCompressedData.GetSensorSeriesValues(valueType.ToString()); mDataDic.Add(seriesName, rows); return(ToSeriesDTO(eHead, seriesName, rows)); }
private ChartDTO GetSterilizerChartDataInc(SensorDataHeadEntity eHead, DateTime lastReceivedDate) { SeriesDTO s1 = GetSeriesInc(eHead, SystemData.MeasurementSensor1, Properties.Resource.SterilizerSeries1, lastReceivedDate); SeriesDTO s2 = GetSeriesInc(eHead, SystemData.MeasurementSensor2, Properties.Resource.SterilizerSeries2, lastReceivedDate); SeriesDTO s3 = GetSeriesInc(eHead, SystemData.MeasurementSensor4, Properties.Resource.SterilizerSeries3, lastReceivedDate); SeriesDTO s4 = GetSeriesInc(eHead, SystemData.MeasurementSensor5, Properties.Resource.SterilizerSeries4, lastReceivedDate); SeriesDTO s5 = GetSeriesInc(eHead, SystemData.MeasurementSensor6, Properties.Resource.SterilizerSeries5, lastReceivedDate); SeriesDTO s6 = GetSeriesInc(eHead, SystemData.MeasurementSensor7, Properties.Resource.SterilizerSeries6, lastReceivedDate); if (s1 == null || s1.Points == null || s1.Points.Count == 0) { return(null); } MergeSterilizerSensorData(); Dictionary <string, SeriesDTO> dicSeriesTemp = new Dictionary <string, SeriesDTO>(); dicSeriesTemp.Add(Properties.Resource.SterilizerSeries1, s1); dicSeriesTemp.Add(Properties.Resource.SterilizerSeries2, s2); Dictionary <string, SeriesDTO> dicSeriesPressure = new Dictionary <string, SeriesDTO>(); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries3, s3); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries4, s4); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries5, s5); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries6, s6); ChartDTO chartData = new ChartDTO(); string temp = string.Empty; if (s2 != null && s2.Points.Count > 0) { temp = s2.Points[s2.Points.Count - 1].Values[0].ToString("#.0"); } string p2 = string.Empty; if (s4 != null && s4.Points.Count > 0) { p2 = s4.Points[s4.Points.Count - 1].Values[0].ToString("0"); } chartData.ChartTitle = GetChartTitle(); chartData.RealtimeInfo = string.Format("温度:{0}\n压力:{1}", temp, p2); chartData.SeriesDictionary.Add(AxesName.Temperature.ToString(), dicSeriesTemp); chartData.SeriesDictionary.Add(AxesName.Pressure.ToString(), dicSeriesPressure); chartData.Comment = GetComment(eHead, s1); chartData.ErrorData = Utility.GetSensorErrors(eHead, mSyncLast); return(chartData); }
public ChartDTO GetChartDataInc(DateTime?lastReceivedDate, bool canChangeHead) { //mSyncLast = null; IsNew = false; // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetNewestSensorDataHeadBySensorID(Sensor.SensorID.ToString().ToUpper()); if (eHead == null) { return(null); } else { if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { ChartDTO chartData = new ChartDTO(); chartData.IsAxisXCustomLabels = false; chartData.ChartTitle = GetChartTitle(); chartData.IsReset = true; return(chartData); } if (mHeadEntity != null && eHead.SensorDataHeadID == mHeadEntity.SensorDataHeadID && lastReceivedDate != null && lastReceivedDate.HasValue) { return(GetChartDataInc(eHead, lastReceivedDate.Value)); } else { if (canChangeHead) { mSensorData = null; ChartDTO dtoChart = GetChartDataByHead(eHead); dtoChart.IsReset = true; IsNew = true; return(dtoChart); } else { return(null); } } } }
private SeriesDTO ToSeriesDTO(SensorDataHeadEntity eHead, string seriesName, DataRow[] rows) { if (rows != null && rows.Length > 0) { IList <SeriesPointDTO> lstPoints = new List <SeriesPointDTO>(); SeriesPointDTO sp = null; int spCount = 0; DateTime?curSensorDate = null; DateTime?preSensorDate = null; double dif = 0; foreach (DataRow row in rows) { long sts = Convert.ToInt64(row["SensorTimeSpan"]); curSensorDate = ParseHelper.ParseToDateTime(row["SensorDate"]); // 间隔 spCount++; if (spCount > 1 && spCount < rows.Length) { dif = curSensorDate.Value.Subtract(preSensorDate.Value).TotalMilliseconds; if (dif < mReadingInterval) { continue; } } sp = new SeriesPointDTO(); sp.Argument = curSensorDate.Value.ToString("yyyy-MM-dd HH:mm:ss.fff"); sp.Values = new double[] { Convert.ToDouble(row["ContentNumber"]) }; sp.ReceivedDate = Convert.ToDateTime(row["ReceivedDate"]); lstPoints.Add(sp); preSensorDate = curSensorDate; } SeriesDTO s = new SeriesDTO(); s.SeriesTitle = seriesName; s.Points = lstPoints; return(s); } else { return(null); } }
public SensorStatusDTO GetStatusData() { // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetNewestSensorDataHeadBySensorID(Sensor.SensorID.ToString().ToUpper()); if (eHead == null) { SensorStatusDTO dtoStatus = new SensorStatusDTO(); dtoStatus.SensorCaption = mSensor.SensorName; dtoStatus.SensorStatus = mSensor.PositionMark; return(dtoStatus); } if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { SensorStatusDTO dtoStatus = new SensorStatusDTO(); dtoStatus.SensorCaption = mSensor.SensorName; dtoStatus.SensorStatus = mSensor.PositionMark; return(dtoStatus); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Sterilizer))) { // 灭菌 return(GetStatusData(eHead)); } else if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Washer))) { // 清洗 return(GetStatusData(eHead)); } else { logger.WarnFormat("未处理的设备类型([传感器:{0},设备类型:{1}])", Sensor.SensorKey, Sensor.SensorType); return(null); } }
public ChartDTO GetChartData() { mSyncLast = null; mDataDic = new Dictionary <string, DataRow[]>(); IsNew = true; mProgramData = null; mShowPropertyDic = GetShowPropertyData(); // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetNewestSensorDataHeadBySensorID(Sensor.SensorID.ToString().ToUpper()); if (eHead == null) { ChartDTO chartData = new ChartDTO(); chartData.ChartTitle = GetChartTitle(); return(chartData); } else { if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { ChartDTO chartData = new ChartDTO(); chartData.ChartTitle = GetChartTitle(); return(chartData); } //SensorDataLineBll bllLine = new SensorDataLineBll(); //mSectionList = bllLine.GetSensorDataLineByDataType(eHead.SensorDataHeadID.ToString(), Utility.GetEnumValue(DataType.Body_SectionTitle)); mProgramData = GetProgramData(eHead); return(GetChartDataByHead(eHead)); } }
public ChartDTO GetChartData() { //mSyncLast = null; IsNew = true; mShowPropertyDic = GetShowPropertyData(); // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetNewestSensorDataHeadBySensorID(Sensor.SensorID.ToString().ToUpper()); if (eHead == null) { ChartDTO chartData = new ChartDTO(); chartData.IsAxisXCustomLabels = false; chartData.ChartTitle = GetChartTitle(); return(chartData); } else { if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { ChartDTO chartData = new ChartDTO(); chartData.IsAxisXCustomLabels = false; chartData.ChartTitle = GetChartTitle(); return(chartData); } return(GetChartDataByHead(eHead)); } }
private SensorStatusDTO GetStatusData(SensorDataHeadEntity eHead) { SensorStatusDTO dtoStatus = new SensorStatusDTO(); dtoStatus.SensorCaption = mSensor.SensorName; dtoStatus.SensorStatus = mSensor.PositionMark; StatusItemDTO item = null; SensorHelper <object> helper = new SensorHelper <object>(); SensorDataLineEntity eLine = helper.SelectSingle <SensorDataLineEntity>(string.Format("SensorDataHeadID = '{0}'", eHead.SensorDataHeadID.ToString().ToUpper()), "ReceivedDate DESC"); if (eLine != null) { dtoStatus.ProgressMark = GetProgressMark(eHead, eLine); dtoStatus.ErrorData = Utility.GetSensorErrors(eHead, eLine.ReceivedDate); dtoStatus.SensorDate = eLine.SensorDate; dtoStatus.ReceivedDate = eLine.ReceivedDate; IList <SensorDataLineValueEntity> lstLineValue = helper.SelectList <SensorDataLineValueEntity>(string.Format("SensorDataLineID = '{0}'", eLine.SensorDataLineID.ToString().ToUpper()), string.Empty); if (lstLineValue != null && lstLineValue.Count > 0) { string temp = string.Empty; AddContentStringToStatus(dtoStatus, lstLineValue, SystemData.Status.ToString()); // 程序 AddContentStringToStatus(dtoStatus, lstLineValue, SystemData.ProgramNo.ToString()); AddContentStringToStatus(dtoStatus, lstLineValue, SystemData.ProgramName.ToString()); AddContentStringToStatus(dtoStatus, lstLineValue, SystemData.ProgramPhase.ToString()); AddProgramNameCaption(dtoStatus); // MeasurementSensor1 ~ MeasurementSensor7 AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor1.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor2.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor3.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor4.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor5.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor6.ToString()); AddContentNumberToStatus(dtoStatus, lstLineValue, SystemData.MeasurementSensor7.ToString()); // 已用时间 if (eLine.SensorDate != null && eLine.SensorDate.HasValue) { TimeSpan tsUsed = eLine.SensorDate.Value.Subtract(eHead.BeginDate.Value); item = new StatusItemDTO(Properties.Resource.ElapsedTime, StatusItemDTO.StatusItemType.DoubleValue, tsUsed.TotalMinutes.ToString("f2")); dtoStatus.StatusData.Add(item); } // 确定更新时间 if (eLine.SensorDate != null && eLine.SensorDate.HasValue) { item = new StatusItemDTO(Properties.Resource.UpdatedTime, StatusItemDTO.StatusItemType.DateTimeValue, eLine.SensorDate.Value.ToString("yyyy-MM-dd HH:mm:ss")); dtoStatus.StatusData.Add(item); } } } return(dtoStatus); }
private void AnalyseData(IList <string> row, string strByteData) { string sysNo = ParseHelper.ParseString(row[(int)SystemData.SystemNo]); string batchNo = ParseHelper.ParseString(row[(int)SystemData.BatchNo]); DateTime timestamp = ConvertDate(row[(int)SystemData.Timestamp]); SensorHelper <object> helperSensor = new SensorHelper <object>(); SensorEntity eSensor = helperSensor.SelectSingle <SensorEntity>(string.Format("SensorGroup = '{0}' AND SensorKey = '{1}'", mSensorGroup, sysNo), string.Empty); if (eSensor == null) { logger.WarnFormat("系统中组和编号为:[{0}].[{1}]的设备没有登记。", mSensorGroup, sysNo); return; } SensorDataHeadEntity eHead = helperSensor.SelectSingle <SensorDataHeadEntity>(string.Format("SensorID = '{0}' AND DataKey = '{1}'", eSensor.SensorID.ToString().ToUpper(), batchNo), string.Empty); Enumerator.BelimedStatus status;//0-Off,1-On,2-Run,3-End try { status = (Enumerator.BelimedStatus)Enum.Parse(typeof(Enumerator.BelimedStatus), row[(int)SystemData.Status]); } catch (Exception ex) { logger.ErrorFormat("传感器状态取得失败,状态值:[{0}]", row[(int)SystemData.Status]); throw ex; } System.Threading.Monitor.Enter(Monitor.Common.Utility.SyncSqlLock); try { logger.Info("开始保存数据。"); using (TransactionScope tran = Monitor.Common.Utility.GetTransactionScope()) { switch (status) { case Enumerator.BelimedStatus.Off: eSensor.PositionMark = status.ToString(); helperSensor.Update(eSensor); break; case Enumerator.BelimedStatus.On: eSensor.PositionMark = status.ToString(); helperSensor.Update(eSensor); break; case Enumerator.BelimedStatus.Run: if (eHead == null) { // 主数据 eHead = new SensorDataHeadEntity(); eHead.SensorDataHeadID = Guid.NewGuid(); eHead.SensorID = eSensor.SensorID; eHead.DataKey = batchNo; eHead.BeginDate = timestamp; eHead.IsCompressed = false; eHead.DataVer = DataVersion.V1.ToString(); helperSensor.Create(eHead); } eSensor.PositionMark = status.ToString(); helperSensor.Update(eSensor); // 原始数据 SensorDataRawLineEntity eRawLine = new SensorDataRawLineEntity(); eRawLine.SensorDataRawLineID = Guid.NewGuid(); eRawLine.SensorDataHeadID = eHead.SensorDataHeadID; eRawLine.ReceivedDate = DateTime.Now; eRawLine.RawData = strByteData; helperSensor.Create(eRawLine); // 解析数据 SensorDataLineEntity eLine = new SensorDataLineEntity(); eLine.SensorDataLineID = Guid.NewGuid(); eLine.SensorDataHeadID = eHead.SensorDataHeadID; eLine.SensorDataRawLineID = eRawLine.SensorDataRawLineID; eLine.ReceivedDate = eRawLine.ReceivedDate; eLine.SensorDate = timestamp; if (eLine.SensorDate != null && eLine.SensorDate.HasValue && eHead.BeginDate != null && eHead.BeginDate.HasValue) { eLine.SensorTimeSpan = Convert.ToInt64(eLine.SensorDate.Value.Subtract(eHead.BeginDate.Value).TotalMilliseconds); } //eLine.AnalysedData = row.ToString(); eLine.AnalysedData = string.Join(";", row.ToArray <string>()); helperSensor.Create(eLine); SensorDataLineValueEntity eLineValue = null; for (int i = 0; i < row.Count; i++) { eLineValue = new SensorDataLineValueEntity(); eLineValue.SensorDataLineValueID = Guid.NewGuid(); eLineValue.SensorDataHeadID = eLine.SensorDataHeadID; eLineValue.SensorDataLineID = eLine.SensorDataLineID; switch (i) { case (int)SystemData.Status: string ss = ParseHelper.ParseString(row[i]); if (!string.IsNullOrEmpty(ss)) { eLineValue.ValueType = SystemData.Status.ToString(); eLineValue.ContentString = ss; helperSensor.Create(eLineValue); } break; case (int)SystemData.ErrorNo: string errorNo = ParseHelper.ParseString(row[i]); if (!string.IsNullOrEmpty(errorNo)) { eLineValue.ValueType = SystemData.ErrorNo.ToString(); eLineValue.ContentString = errorNo; helperSensor.Create(eLineValue); } break; case (int)SystemData.ProgramNo: eLineValue.ValueType = SystemData.ProgramNo.ToString(); eLineValue.ContentString = ParseHelper.ParseString(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.ProgramName: eLineValue.ValueType = SystemData.ProgramName.ToString(); eLineValue.ContentString = ParseHelper.ParseString(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.ProgramPhase: eLineValue.ValueType = SystemData.ProgramPhase.ToString(); eLineValue.ContentString = ParseHelper.ParseString(row[i]); helperSensor.Create(eLineValue); break; default: break; } if (Convert.ToInt32(eSensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Washer))) { switch (i) { case (int)SystemData.MeasurementSensor1: // Med eLineValue.ValueType = SystemData.MeasurementSensor1.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor2: // CT eLineValue.ValueType = SystemData.MeasurementSensor2.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]) / 10; helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor3: // CDNo eLineValue.ValueType = SystemData.MeasurementSensor3.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor4: // DosV eLineValue.ValueType = SystemData.MeasurementSensor4.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]) / 10; helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor5: // Ao eLineValue.ValueType = SystemData.MeasurementSensor5.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; default: break; } } else if (Convert.ToInt32(eSensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Sterilizer))) { switch (i) { case (int)SystemData.MeasurementSensor1: // T1 eLineValue.ValueType = SystemData.MeasurementSensor1.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]) / 10; helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor2: // T2 eLineValue.ValueType = SystemData.MeasurementSensor2.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]) / 10; helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor4: // P1 eLineValue.ValueType = SystemData.MeasurementSensor4.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor5: // P2 eLineValue.ValueType = SystemData.MeasurementSensor5.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor6: // P3 eLineValue.ValueType = SystemData.MeasurementSensor6.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; case (int)SystemData.MeasurementSensor7: // P4 eLineValue.ValueType = SystemData.MeasurementSensor7.ToString(); eLineValue.ContentNumber = Convert.ToDecimal(row[i]); helperSensor.Create(eLineValue); break; default: break; } } } break; case Enumerator.BelimedStatus.End: if (eHead != null) { eHead.EndDate = ConvertDate(row[(int)SystemData.Timestamp]); helperSensor.Update(eHead); eSensor.PositionMark = status.ToString(); eSensor.Remarks = ParseHelper.ParseString(row[(int)SystemData.StatusInfo]); helperSensor.Update(eSensor); if (eHead.LogID != null && eHead.LogID.HasValue && eHead.LogID.Value != Guid.Empty) { DevicesUseLogEntity logEntity = helperSensor.SelectSingle <DevicesUseLogEntity>("LogID='" + eHead.LogID.Value.ToString().ToUpper() + "'", string.Empty); if (logEntity != null) { if (eHead.BeginDate != null && eHead.BeginDate.HasValue) { logEntity.OldBeginDate = logEntity.BeginDate; logEntity.BeginDate = eHead.BeginDate.Value; } logEntity.EndDate = eHead.EndDate; // TODO: DevicesUseLog 关联到 Sensor 的字段 //logEntity.MonitorDataID = eHead.SensorDataHeadID; helperSensor.Update(logEntity); } } } break; default: break; } tran.Complete(); logger.Info("数据保存成功。"); } } finally { System.Threading.Monitor.Exit(Monitor.Common.Utility.SyncSqlLock); } }
private ChartDTO GetChartDataByHead(SensorDataHeadEntity eHead) { mHeadEntity = eHead; if (mHeadEntity == null) { return(null); } IList <SensorDataLineEntity> lstLine = null; SensorHelper <object> helper = new SensorHelper <object>(); if (mIsCompressed) { lstLine = mSensorCompressedData.GetSensorDataLine(); } else { string strWhere = string.Format("SensorDataHeadID = '{0}'", eHead.SensorDataHeadID.ToString().ToUpper()); lstLine = helper.SelectList <SensorDataLineEntity>(strWhere, "ReceivedDate"); } SeriesDTO sTemperature = null; SeriesDTO sPressure = null; SeriesDTO sHumidity = null; SeriesDTO sVoltage = null; GetSeriesDto(lstLine, ref sTemperature, ref sPressure, ref sHumidity, ref sVoltage); MakeSensorData(lstLine); ChartDTO chartData = new ChartDTO(); chartData.IsAxisXCustomLabels = false; if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Temperature)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperatureHumidity)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressureAccurate))) { // 温度 AxesDTO axesTemperature = new AxesDTO(Properties.Resource.TemperatureSeries); axesTemperature.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.TemperatureUnit); Dictionary <string, SeriesDTO> dicSeriesTemperature = new Dictionary <string, SeriesDTO>(); dicSeriesTemperature.Add(Properties.Resource.TemperatureSeries, sTemperature); chartData.AxesDictionary.Add(Properties.Resource.TemperatureSeries, axesTemperature); chartData.SeriesDictionary.Add(Properties.Resource.TemperatureSeries, dicSeriesTemperature); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Humidity)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperatureHumidity))) { // 湿度 AxesDTO axesHumidity = new AxesDTO(Properties.Resource.HumiditySeries); axesHumidity.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.HumidityUnit); Dictionary <string, SeriesDTO> dicSeriesHumidity = new Dictionary <string, SeriesDTO>(); dicSeriesHumidity.Add(Properties.Resource.HumiditySeries, sHumidity); chartData.AxesDictionary.Add(Properties.Resource.HumiditySeries, axesHumidity); chartData.SeriesDictionary.Add(Properties.Resource.HumiditySeries, dicSeriesHumidity); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Pressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressureAccurate))) { // 气压 AxesDTO axesPressure = new AxesDTO(Properties.Resource.PressureSeries); axesPressure.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.PressureUnit); Dictionary <string, SeriesDTO> dicSeriesPressure = new Dictionary <string, SeriesDTO>(); dicSeriesPressure.Add(Properties.Resource.PressureSeries, sPressure); chartData.AxesDictionary.Add(Properties.Resource.PressureSeries, axesPressure); chartData.SeriesDictionary.Add(Properties.Resource.PressureSeries, dicSeriesPressure); } chartData.ChartTitle = GetChartTitle(); chartData.RealtimeInfo = GetRealtimeInfo(lstLine); chartData.Comment = GetComment(chartData.SeriesDictionary); chartData.ErrorData = null; return(chartData); }
private ChartDTO GetSterilizerChartData(SensorDataHeadEntity eHead) { SeriesDTO s1 = null; SeriesDTO s2 = null; SeriesDTO s3 = null; SeriesDTO s4 = null; SeriesDTO s5 = null; SeriesDTO s6 = null; if (mIsCompressed) { s1 = GetCompressedSeries(eHead, SystemData.MeasurementSensor1, Properties.Resource.SterilizerSeries1); s2 = GetCompressedSeries(eHead, SystemData.MeasurementSensor2, Properties.Resource.SterilizerSeries2); s3 = GetCompressedSeries(eHead, SystemData.MeasurementSensor4, Properties.Resource.SterilizerSeries3); s4 = GetCompressedSeries(eHead, SystemData.MeasurementSensor5, Properties.Resource.SterilizerSeries4); s5 = GetCompressedSeries(eHead, SystemData.MeasurementSensor6, Properties.Resource.SterilizerSeries5); s6 = GetCompressedSeries(eHead, SystemData.MeasurementSensor7, Properties.Resource.SterilizerSeries6); } else { s1 = GetSeries(eHead, SystemData.MeasurementSensor1, Properties.Resource.SterilizerSeries1); s2 = GetSeries(eHead, SystemData.MeasurementSensor2, Properties.Resource.SterilizerSeries2); s3 = GetSeries(eHead, SystemData.MeasurementSensor4, Properties.Resource.SterilizerSeries3); s4 = GetSeries(eHead, SystemData.MeasurementSensor5, Properties.Resource.SterilizerSeries4); s5 = GetSeries(eHead, SystemData.MeasurementSensor6, Properties.Resource.SterilizerSeries5); s6 = GetSeries(eHead, SystemData.MeasurementSensor7, Properties.Resource.SterilizerSeries6); } MergeSterilizerSensorData(); AxesDTO axesTemp = new AxesDTO(AxesName.Temperature.ToString()); axesTemp.AxisYProperty.Add(AxesDTO.AxisProperty.MinValueSerializable.ToString(), Properties.Resource.TempMinValue); axesTemp.AxisYProperty.Add(AxesDTO.AxisProperty.MaxValueSerializable.ToString(), Properties.Resource.TempMaxValue); axesTemp.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.TempUnit); AxesDTO axesPressure = new AxesDTO(AxesName.Pressure.ToString()); if (!Properties.Resource.PressureMinValue.Equals(Properties.Resource.PressureMaxValue)) { axesPressure.AxisYProperty.Add(AxesDTO.AxisProperty.MinValueSerializable.ToString(), Properties.Resource.PressureMinValue); axesPressure.AxisYProperty.Add(AxesDTO.AxisProperty.MaxValueSerializable.ToString(), Properties.Resource.PressureMaxValue); } axesPressure.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.PressureUnit); Dictionary <string, SeriesDTO> dicSeriesTemp = new Dictionary <string, SeriesDTO>(); dicSeriesTemp.Add(Properties.Resource.SterilizerSeries1, s1); dicSeriesTemp.Add(Properties.Resource.SterilizerSeries2, s2); Dictionary <string, SeriesDTO> dicSeriesPressure = new Dictionary <string, SeriesDTO>(); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries3, s3); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries4, s4); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries5, s5); dicSeriesPressure.Add(Properties.Resource.SterilizerSeries6, s6); ChartDTO chartData = new ChartDTO(); string temp = string.Empty; if (s2 != null && s2.Points.Count > 0) { temp = s2.Points[s2.Points.Count - 1].Values[0].ToString("#.0"); } string p2 = string.Empty; if (s4 != null && s4.Points.Count > 0) { p2 = s4.Points[s4.Points.Count - 1].Values[0].ToString("0"); } chartData.ChartTitle = GetChartTitle(); chartData.RealtimeInfo = string.Format("温度:{0}\n压力:{1}", temp, p2); chartData.AxesDictionary.Add(AxesName.Temperature.ToString(), axesTemp); chartData.AxesDictionary.Add(AxesName.Pressure.ToString(), axesPressure); chartData.SeriesDictionary.Add(AxesName.Temperature.ToString(), dicSeriesTemp); chartData.SeriesDictionary.Add(AxesName.Pressure.ToString(), dicSeriesPressure); chartData.Comment = GetComment(eHead, s1); chartData.ErrorData = Utility.GetSensorErrors(eHead, mSyncLast); return(chartData); }
private ChartDTO GetChartDataInc(SensorDataHeadEntity eHead, DateTime lastReceivedDate) { IList <SensorDataLineEntity> lstLine = null; SensorHelper <object> helper = new SensorHelper <object>(); if (mIsCompressed) { lstLine = mSensorCompressedData.GetSensorDataLine(); } else { string strWhere = string.Empty; if (CommonValue.DatabaseType == CommonValue.DatabaseFlag.Oracle) { strWhere = string.Format("SensorDataHeadID = '{0}' AND to_char(ReceivedDate, 'YYYY-MM-DD HH24:MI:SS.FF3') > '{1}'", eHead.SensorDataHeadID.ToString().ToUpper(), lastReceivedDate.ToString("yyyy-MM-dd HH:mm:ss.fff")); } else { strWhere = string.Format("SensorDataHeadID = '{0}' AND ReceivedDate > '{1}'", eHead.SensorDataHeadID.ToString().ToUpper(), lastReceivedDate.ToString("yyyy-MM-dd HH:mm:ss.fff")); } lstLine = helper.SelectList <SensorDataLineEntity>(strWhere, "ReceivedDate"); } SeriesDTO sTemperature = null; SeriesDTO sPressure = null; SeriesDTO sHumidity = null; SeriesDTO sVoltage = null; GetSeriesDto(lstLine, ref sTemperature, ref sPressure, ref sHumidity, ref sVoltage); MakeSensorData(lstLine); ChartDTO chartData = new ChartDTO(); chartData.IsAxisXCustomLabels = false; if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Temperature)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperatureHumidity)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressureAccurate))) { // 温度 Dictionary <string, SeriesDTO> dicSeriesTemperature = new Dictionary <string, SeriesDTO>(); dicSeriesTemperature.Add(Properties.Resource.TemperatureSeries, sTemperature); chartData.SeriesDictionary.Add(Properties.Resource.TemperatureSeries, dicSeriesTemperature); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Humidity)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperatureHumidity))) { // 湿度 Dictionary <string, SeriesDTO> dicSeriesHumidity = new Dictionary <string, SeriesDTO>(); dicSeriesHumidity.Add(Properties.Resource.HumiditySeries, sHumidity); chartData.SeriesDictionary.Add(Properties.Resource.HumiditySeries, dicSeriesHumidity); } if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Pressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressure)) || Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.TemperaturePressureAccurate))) { // 气压 Dictionary <string, SeriesDTO> dicSeriesPressure = new Dictionary <string, SeriesDTO>(); dicSeriesPressure.Add(Properties.Resource.PressureSeries, sPressure); chartData.SeriesDictionary.Add(Properties.Resource.PressureSeries, dicSeriesPressure); } chartData.ChartTitle = GetChartTitle(); chartData.RealtimeInfo = GetRealtimeInfo(lstLine); chartData.Comment = GetComment(chartData.SeriesDictionary); chartData.ErrorData = null; return(chartData); }
private ChartDTO GetWasherChartData(SensorDataHeadEntity eHead) { SeriesDTO s1 = null; SeriesDTO s2 = null; SeriesDTO s3 = null; SeriesDTO s4 = null; SeriesDTO s5 = null; if (mIsCompressed) { s1 = GetCompressedSeries(eHead, SystemData.MeasurementSensor1, Properties.Resource.WasherSeries1); s2 = GetCompressedSeries(eHead, SystemData.MeasurementSensor2, Properties.Resource.WasherSeries2); s3 = GetCompressedSeries(eHead, SystemData.MeasurementSensor3, Properties.Resource.WasherSeries3); s4 = GetCompressedSeries(eHead, SystemData.MeasurementSensor4, Properties.Resource.WasherSeries4); s5 = GetCompressedSeries(eHead, SystemData.MeasurementSensor5, Properties.Resource.WasherSeries5); } else { s1 = GetSeries(eHead, SystemData.MeasurementSensor1, Properties.Resource.WasherSeries1); s2 = GetSeries(eHead, SystemData.MeasurementSensor2, Properties.Resource.WasherSeries2); s3 = GetSeries(eHead, SystemData.MeasurementSensor3, Properties.Resource.WasherSeries3); s4 = GetSeries(eHead, SystemData.MeasurementSensor4, Properties.Resource.WasherSeries4); s5 = GetSeries(eHead, SystemData.MeasurementSensor5, Properties.Resource.WasherSeries5); } MergeWasherSensorData(); AxesDTO axesTemp = new AxesDTO(AxesName.Temperature.ToString()); axesTemp.AxisYProperty.Add(AxesDTO.AxisProperty.EndText.ToString(), Properties.Resource.TempUnit); //axesTemp.SeriesList.Add(sTempIndepCham); AxesDTO axesAo = new AxesDTO(AxesName.AoValue.ToString()); axesAo.AxisYProperty.Add(AxesDTO.AxisProperty.MinValueSerializable.ToString(), Properties.Resource.A0MinValue); axesAo.AxisYProperty.Add(AxesDTO.AxisProperty.MaxValueSerializable.ToString(), Properties.Resource.A0MaxValue); Dictionary <string, SeriesDTO> dicSeriesTemp = new Dictionary <string, SeriesDTO>(); dicSeriesTemp.Add(Properties.Resource.WasherSeries2, s2); Dictionary <string, SeriesDTO> dicSeriesAo = new Dictionary <string, SeriesDTO>(); dicSeriesAo.Add(Properties.Resource.WasherSeries5, s5); dicSeriesAo.Add(Properties.Resource.WasherSeries1, s1); dicSeriesAo.Add(Properties.Resource.WasherSeries3, s3); dicSeriesAo.Add(Properties.Resource.WasherSeries4, s4); ChartDTO chartData = new ChartDTO(); string temp = string.Empty; if (s2 != null && s2.Points.Count > 0) { temp = s2.Points[s2.Points.Count - 1].Values[0].ToString("#.0"); } string a0 = string.Empty; if (s5 != null && s5.Points.Count > 0) { a0 = s5.Points[s5.Points.Count - 1].Values[0].ToString("0"); } chartData.ChartTitle = GetChartTitle(); chartData.RealtimeInfo = string.Format("温度:{0}\nA0:{1}", temp, a0); chartData.AxesDictionary.Add(AxesName.Temperature.ToString(), axesTemp); chartData.AxesDictionary.Add(AxesName.AoValue.ToString(), axesAo); chartData.SeriesDictionary.Add(AxesName.Temperature.ToString(), dicSeriesTemp); chartData.SeriesDictionary.Add(AxesName.AoValue.ToString(), dicSeriesAo); chartData.Comment = GetComment(eHead, s1); chartData.ErrorData = Utility.GetSensorErrors(eHead, mSyncLast); return(chartData); }
private void SaveData(SensorData receivedData) { SensorHelper <object> helperSensor = new SensorHelper <object>(); SensorEntity eSensor = helperSensor.SelectSingle <SensorEntity>(string.Format("SensorGroup = '{0}' AND SensorKey = '{1}'", mSensorGroup, receivedData.SourceAddress), string.Empty); if (eSensor == null) { logger.WarnFormat("系统中组和编号为:[{0}].[{1}]的设备没有登记。", mSensorGroup, receivedData.SourceAddress); return; } string dataKey = receivedData.ReceiveDate.Value.ToString("yyyyMMdd"); SensorDataHeadEntity eHead = helperSensor.SelectSingle <SensorDataHeadEntity>(string.Format("SensorID = '{0}' AND DataKey = '{1}'", eSensor.SensorID.ToString().ToUpper(), dataKey), string.Empty); System.Threading.Monitor.Enter(Monitor.Common.Utility.SyncSqlLock); try { logger.Debug("开始保存数据。"); using (TransactionScope tran = Monitor.Common.Utility.GetTransactionScope()) { if (eHead == null) { // 主数据 eHead = new SensorDataHeadEntity(); eHead.SensorDataHeadID = Guid.NewGuid(); eHead.SensorID = eSensor.SensorID; eHead.DataKey = dataKey; eHead.BeginDate = receivedData.ReceiveDate; eHead.IsCompressed = false; helperSensor.Create(eHead); } // 原始数据 SensorDataRawLineEntity eRawLine = new SensorDataRawLineEntity(); eRawLine.SensorDataRawLineID = Guid.NewGuid(); eRawLine.SensorDataHeadID = eHead.SensorDataHeadID; eRawLine.ReceivedDate = receivedData.ReceiveDate; eRawLine.RawData = receivedData.SourceData; helperSensor.Create(eRawLine); // 明细数据 SensorDataLineEntity eLine = new SensorDataLineEntity(); eLine.SensorDataLineID = Guid.NewGuid(); eLine.SensorDataHeadID = eHead.SensorDataHeadID; eLine.SensorDataRawLineID = eRawLine.SensorDataRawLineID; eLine.ReceivedDate = eRawLine.ReceivedDate; eLine.SensorDate = eRawLine.ReceivedDate; if (eLine.SensorDate != null && eLine.SensorDate.HasValue && eHead.BeginDate != null && eHead.BeginDate.HasValue) { eLine.SensorTimeSpan = Convert.ToInt64(eLine.SensorDate.Value.Subtract(eHead.BeginDate.Value).TotalMilliseconds); } //eLine.AnalysedData = string.Empty; eLine.ValueNumber1 = receivedData.Temperature; eLine.ValueNumber2 = receivedData.Pressure; eLine.ValueNumber3 = receivedData.Humidity; eLine.ValueNumber4 = receivedData.Voltage; helperSensor.Create(eLine); tran.Complete(); logger.Debug("数据保存成功。"); } } finally { System.Threading.Monitor.Exit(Monitor.Common.Utility.SyncSqlLock); } }
public ChartDTO GetChartDataInc(DateTime?lastReceivedDate, bool canChangeHead) { mSyncLast = null; mDataDic = new Dictionary <string, DataRow[]>(); IsNew = false; mProgramData = null; // 刷新状态 SensorHelper <object> helper = new SensorHelper <object>(); mSensor = helper.SelectSingle <SensorEntity>(string.Format("SensorID = '{0}'", mSensor.SensorID.ToString().ToUpper()), string.Empty); SensorDataHeadBll bllHead = new SensorDataHeadBll(); SensorDataHeadEntity eHead = bllHead.GetNewestSensorDataHeadBySensorID(Sensor.SensorID.ToString().ToUpper()); if (eHead == null) { return(null); } else { if (mHeadEntity != null && eHead.SensorDataHeadID != mHeadEntity.SensorDataHeadID && !canChangeHead) { return(null); } if (eHead.IsCompressed != null && eHead.IsCompressed.HasValue && eHead.IsCompressed.Value) { if (canChangeHead) { ChartDTO chartData = new ChartDTO(); chartData.ChartTitle = GetChartTitle(); chartData.IsReset = true; return(chartData); } else { return(null); } } //SensorDataLineBll bllLine = new SensorDataLineBll(); //mSectionList = bllLine.GetSensorDataLineByDataType(eHead.SensorDataHeadID.ToString(), Utility.GetEnumValue(DataType.Body_SectionTitle)); if (mHeadEntity != null && eHead.SensorDataHeadID == mHeadEntity.SensorDataHeadID && lastReceivedDate != null && lastReceivedDate.HasValue) { mProgramData = GetProgramDataInc(eHead, lastReceivedDate.Value); if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Sterilizer))) { // 灭菌 return(GetSterilizerChartDataInc(eHead, lastReceivedDate.Value)); } else if (Convert.ToInt32(Sensor.SensorType).Equals(Convert.ToInt32(Common.Consts.SensorType.Washer))) { // 清洗 return(GetWasherChartDataInc(eHead, lastReceivedDate.Value)); } else { logger.WarnFormat("未处理的设备类型([传感器:{0},设备类型:{1}])", Sensor.SensorKey, Sensor.SensorType); return(null); } } else { if (canChangeHead) { mSensorData = null; ChartDTO dtoChart = GetChartDataByHead(eHead); dtoChart.IsReset = true; IsNew = true; return(dtoChart); } else { return(null); } } } }