//private t_CM_UserInfo CurrentUser //{ // get { return loginbll.CurrentUser; } //} public JsonResult GetHisDataByTime(int pid, int cid, string time) { List <AlarmAnyis> datas = new List <AlarmAnyis>(); try { string startTime = Convert.ToDateTime(time).AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss"); string endTime = Convert.ToDateTime(time).AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss"); var tagids = string.Join(",", bll.t_CM_PointsInfo.Where(p => p.DataTypeID == 2 && p.PID == pid && p.CID == cid).Select(p => p.TagID).ToArray()); if (!string.IsNullOrEmpty(tagids)) { var data = HisDataDAL.getInstance().GetHisData(pid, tagids, startTime, endTime); foreach (var item in data.GroupBy(p => p.TagID)) { AlarmAnyis model = new AlarmAnyis(); model.Name = bll.t_CM_PointsInfo.Where(p => p.TagID == item.Key).FirstOrDefault().中文描述; model.list = item.OrderBy(p => p.RecTime).ToList(); datas.Add(model); } return(Json(datas.OrderBy(p => p.Name), JsonRequestBehavior.AllowGet)); } else { return(Json(datas, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { throw ex; } }
//历史数据查询 //[Login] public ActionResult HisData(int rows, int page, int pid = 0, int CID = 0, string dname = "", string cname = "", string startdate = "", string enddate = "", string typename = "", string sort = "记录时间", string order = "asc") { string strJson = "{\"total\":0,\"rows\":[]}"; if ((CID == 1 || CID == 3 || CID == 12) && pid == 177) { return(Content("{\"total\":3025,\"rows\":[{\"PID\":\"0\",\"PV\":\"0\",\"AlarmStatus\":\"暂无数据\",\"AlarmLimits\":\"0\"}]}")); } int rowcount; int nDataType = ("" == typename) ? 0 : Convert.ToInt32(typename); //取tagid List <t_CM_PointsInfo> listPoint = bll.t_CM_PointsInfo.Where(o => o.CID == CID && o.PID == pid && !o.Position.Equals("备用01") && o.TagName.Contains(cname)).ToList(); //int[] tagIDS = listPoint.Select(c => c.TagID).ToArray(); string tagIDS = string.Join(",", listPoint.Select(c => c.TagID).ToArray()); List <t_SM_HisData> list = HisDataDAL.getInstance().GetHisData(out rowcount, rows, page, pid, tagIDS, dname, cname, startdate, enddate, typename, sort, order).ToList(); strJson = List2Json(list, rowcount, listPoint); list.Clear(); list = null; return(Content(strJson)); }
//导出历史数据查询 public JsonResult ExportHisData(int pid, string dname = "", string cname = "", string startdate = "", string enddate = "", string typename = "", string sort = "记录时间", string order = "asc") { try { int rowcount; List <t_CM_PointsInfo> listPoint = bll.t_CM_PointsInfo.Where(o => o.PID == pid && !o.Position.Equals("备用01") && o.TagName.Contains(cname)).ToList(); string tagIDS = string.Join(",", listPoint.Select(c => c.TagID).ToArray()); if (pid == 0) { pid = Convert.ToInt32(HomeController.GetPID(CurrentUser.UNITList).Split(',')[0]); } //string tablename = "配电房_" + pid.ToString("00000") + "_历史数据表"; //string strsql = "SELECT 设备名称,设备编码,测点名称,测点编号,监测位置,测量值,报警状态,记录时间 监测时间 FROM " + tablename; //string query = GetHisQuery(dname, cname, startdate, enddate, typename); //strsql = strsql + " where " + query + " order by 记录时间 desc "; List <t_SM_HisData> list = HisDataDAL.getInstance().GetHisData(out rowcount, 30000, 1, pid, tagIDS, dname, cname, startdate, enddate, typename, sort, order).ToList(); //var count = bll.ExecuteStoreQuery<ExHisData>(strsql).Count(); //if (rowcount > 30000) //{ // return Json(new { code = 0, v = "最多可导出30000条,当前导出条数为" + rowcount + "条,请重新选择" }, JsonRequestBehavior.AllowGet); //} //string strPath = Server.MapPath("~/Download/"); //string strExport = "历史数据导出_" + DateTime.Now.ToString("yyyy-MM-dd HH_mm_ss") + ".csv"; //string strFullExport = strPath + strExport; //List<配电房_00001_历史数据表> list = bll.ExecuteStoreQuery<配电房_00001_历史数据表>(strFullSql).ToList(); //ExportCSV(strFullExport, list); //else //{ List <ExHisData> list_his = new List <ExHisData>(); var pointList = bll.t_CM_PointsInfo.Where(p => p.PID == pid).ToList(); var devList = bll.t_DM_DeviceInfo.Where(p => p.PID == pid).ToList(); var MonitorList = bll.t_CM_MonitorPosition.ToList(); foreach (var item in list) { ExHisData model = new ExHisData(); var point = pointList.Where(p => p.TagID == item.TagID).FirstOrDefault(); if (point != null) { var dev = devList.Where(p => p.DID == point.DID).FirstOrDefault(); if (dev != null) { model.设备名称 = dev.DeviceName; model.设备编码 = dev.DeviceCode; } model.测点名称 = point.TagName; var MonitorPosition = MonitorList.Where(p => p.MPID == point.MPID).FirstOrDefault(); if (MonitorPosition != null) { model.监测位置 = MonitorPosition.Name; } } model.测点编号 = item.TagID; model.测量值 = item.PV.Value; model.报警状态 = item.AlarmStatus; model.记录时间 = item.RecTime; model.监测时间 = item.RecTime; list_his.Add(model); } DataSet ds = ConvertToDataSet <ExHisData>(list_his); if (ds != null) { ExportExcel.doExport2003(ds, "~/DownLoad/historydata.xls"); return(Json(new { code = 1, v = "/DownLoad/historydata.xls" }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { code = 0, v = "没有可导出的数据" }, JsonRequestBehavior.AllowGet)); } //} } catch (Exception ex) { return(Json(ex.Message)); } }