Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
        private SeriesDTO GetCompressedSeries(SensorDataHeadEntity eHead, SystemData valueType, string seriesName)
        {
            DataRow[] rows = mSensorCompressedData.GetSensorSeriesValues(valueType.ToString());

            mDataDic.Add(seriesName, rows);

            return(ToSeriesDTO(eHead, seriesName, rows));
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
                    }
                }
            }
        }
Esempio n. 12
0
        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);
            }
        }
Esempio n. 13
0
        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);
            }
        }
Esempio n. 14
0
        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));
            }
        }
Esempio n. 15
0
        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));
            }
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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);
            }
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
        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);
            }
        }
Esempio n. 23
0
        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);
                    }
                }
            }
        }