private static void AddContentStringToStatus(SensorStatusDTO dtoStatus, IList <SensorDataLineValueEntity> lstLineValue, string valueType) { var lst = lstLineValue.Where(lv => lv.ValueType == valueType); if (lst != null && lst.Count() > 0) { SensorDataLineValueEntity eLineValue = lst.First(); if (eLineValue != null) { StatusItemDTO item = new StatusItemDTO(valueType, StatusItemDTO.StatusItemType.StringValue, eLineValue.ContentString); dtoStatus.StatusData.Add(item); } } }
private static void AddContentNumberToStatus(SensorStatusDTO dtoStatus, IList <SensorDataLineValueEntity> lstLineValue, string valueType) { var lst = lstLineValue.Where(lv => lv.ValueType == valueType); if (lst != null && lst.Count() > 0) { SensorDataLineValueEntity eLineValue = lst.First(); if (eLineValue != null) { string temp = string.Empty; if (eLineValue.ContentNumber != null && eLineValue.ContentNumber.HasValue) { temp = eLineValue.ContentNumber.Value.ToString("0.00"); } StatusItemDTO item = new StatusItemDTO(valueType, StatusItemDTO.StatusItemType.DoubleValue, temp); dtoStatus.StatusData.Add(item); } } }
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); } }