public JsonResult GetHistoryData(string axisNumStr) { log = LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name); var retData = new VM_Result_Data(); if (HisMain.IsAxisNum(axisNumStr)) { var axisNum = new HisData(axisNumStr); var bllHisData = new MesWeb.BLL.T_HisData(axisNum.TableName); try { var hisDataList = bllHisData.GetModelList("machineID = " + axisNum.MachineId); var sensorDataList = new List <VM_Sensor_Online>(); foreach (var item in ParamCodeDic) { //找出映射的数据 var data = (from s in hisDataList where s.ParameterCodeID == item.Key select s).ToList(); if (data.Count > 0) { //生成传感器的数据结构 var sensorData = new VM_Sensor_Online { ParamCodeId = item.Value }; sensorData.SeriesData = new List <VM_Sensor_Data>(); foreach (var d in data) { try { var seriesData = new VM_Sensor_Data { X = ((DateTime)(d.CollectedTime)).AddHours(8).ToUniversalTime().ToString(), Y = float.Parse(d.CollectedValue) }; sensorData.SeriesData.Add(seriesData); } catch (Exception e) { log.Error(e); continue; } } sensorDataList.Add(sensorData); } } retData.Appendix = sensorDataList; retData.Content = "加载机台历史数据成功"; retData.Code = RESULT_CODE.OK; } catch (Exception e) { log.Error(e); retData.Content = "加载机台历史数据失败"; } } return(Json(retData)); }
/// <summary> /// 获取机台传感器数据 /// </summary> /// <param name="dpData">原始所有数据</param> /// <returns></returns> public VM_Result_Data GetSensorData(SensorData data) { //int calcMs = 0; //按参数类型分组 var groupData = (from d in data.CollectedData group d by d.ParameterCodeID into g select g); var sensorOnlines = new List <VM_Sensor_Online>(); foreach (var specGp in groupData) { var sensorOnline = new VM_Sensor_Online(); var paramCodeId = specGp.Key; if (paramCodeId == null) { continue; } //获取参数 ID sensorOnline.ParamCodeId = paramCodeId; sensorOnline.SeriesData = new List <VM_Sensor_Data>(); //获取参数值 foreach (var spec in specGp) { //防止速度过快数据重叠 // calcMs += 5; // Random rand = new Random(); // var randMs = rand.Next(calcMs,calcMs + 4); // var x = ((DateTime)(spec.CollectedTime)).AddMilliseconds(randMs); // //设置精度到毫秒级别 //f表示保留一位小数,即精度为 0.5s = 500ms; //重新生成时间保证时间不重叠 var m = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"); // var m = x.ToString(); sensorOnline.SeriesData.Add(new VM_Sensor_Data { X = m, Y = float.Parse(spec.CollectedValue) }); sensorOnline.Message = spec.CollectedValue.ToString(); } sensorOnlines.Add(sensorOnline); } var retData = new VM_Result_Data(); if (sensorOnlines.Count > 0) { retData.Appendix = sensorOnlines; retData.Code = RESULT_CODE.OK; retData.Content = "更新实时数据成功"; } return(retData); }