public static string List2Json <T>(IList <T> list, int total, List <t_CM_PointsInfo> listPar) { pdermsWebEntities b = new pdermsWebEntities(); StringBuilder json = new StringBuilder(); //{"total":5,"rows":[ //int total = list.Count; json.Append("{\"total\":"); json.Append(total); json.Append(",\"rows\":["); for (int i = 0; i < list.Count; i++) { T obj = Activator.CreateInstance <T>(); Type type = obj.GetType(); PropertyInfo[] pis = type.GetProperties(); json.Append("{"); for (int j = 0; j < pis.Length; j++) { json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(list[i], null) + "\""); if ("TagID" == pis[j].Name.ToString()) { int tagid = Convert.ToInt32(pis[j].GetValue(list[i], null)); var pointInf = listPar.Where(o => o.TagID == tagid); if (pointInf.Count() > 0) { t_CM_PointsInfo poinf = pointInf.First(); json.Append(","); json.Append("\"" + "TagName" + "\":\"" + poinf.TagName + "\""); json.Append(","); json.Append("\"" + "Remarks" + "\":\"" + poinf.Remarks + "\""); b.t_DM_CircuitInfo.Where(p => p.CID == poinf.CID).FirstOrDefault(); if (b.t_DM_CircuitInfo.Where(p => p.CID == poinf.CID).FirstOrDefault() != null) { json.Append(","); json.Append("\"" + "CName" + "\":\"" + b.t_DM_CircuitInfo.Where(p => p.CID == poinf.CID && p.PID == poinf.PID).FirstOrDefault().CName + "\""); } else { json.Append(","); json.Append("\"" + "CName" + "\":\"--\""); } } } if (j < pis.Length - 1) { json.Append(","); } } json.Append("}"); if (i < list.Count - 1) { json.Append(","); } } json.Append("]}"); return(json.ToString()); }
//曲线报表默认加载设备参数 public string SelectPoints(int pid, int did, int cid) { string res = ""; string strsql = "select * from t_CM_PointsInfo where pid=" + pid + " and did=" + did + " and cid = " + cid + " and DataTypeID!=23 order by DataTypeID"; List <t_CM_PointsInfo> list = bll.ExecuteStoreQuery <t_CM_PointsInfo>(strsql).ToList(); //List<V_DeviceInfoState_PDR1> list = bll.ExecuteStoreQuery<V_DeviceInfoState_PDR1>(strsql).ToList(); //List<V_DeviceInfoState_PDR1> Tinlist = list.Where(g => g.DataTypeID == 24).ToList(); //List<V_DeviceInfoState_PDR1> Toutlist = list.Where(g => g.DataTypeID == 12).ToList(); List <t_CM_PointsInfo> Tinlist = list.Where(g => g.DataTypeID == 24).ToList(); List <t_CM_PointsInfo> Toutlist = list.Where(g => g.DataTypeID == 12).ToList(); //设备温度 List <t_CM_PointsInfo> NTlist = list.Where(g => g.DataTypeID == 1).OrderByDescending(J => J.TagID).ToList(); if (NTlist.Count > 0) { t_CM_PointsInfo jo = NTlist[0]; List <t_CM_PointsInfo> NNTlist = NTlist.Where(k => k.Position == jo.Position).ToList(); int Nc = NNTlist.Count; if (Nc > 3) { Nc = 3; } for (int i = 0; i < Nc; i++) { t_CM_PointsInfo dio = NNTlist[i]; res += dio.DataTypeID + "_" + dio.TagID + ","; } } //环境温度 if (Tinlist.Count > 0) { foreach (t_CM_PointsInfo dio in Tinlist) { res += "24" + "_" + dio.TagID + ","; } } else if (Toutlist.Count > 0) { foreach (t_CM_PointsInfo dio in Toutlist) { res += "12" + "_" + dio.TagID + ","; } } //电流 List <t_CM_PointsInfo> ETlist = list.Where(g => g.Position.Contains("电流")).ToList(); if (ETlist.Count > 0) { t_CM_PointsInfo jo = ETlist[0]; List <t_CM_PointsInfo> EETlist = ETlist.Where(k => k.Position == jo.Position).ToList(); foreach (t_CM_PointsInfo dio in EETlist) { res += dio.DataTypeID + "_" + dio.TagID + ","; } } //如果以上几个都没有数据,按顺序取3个点的数据 if (list.Count > 0 && NTlist.Count <= 0 && Tinlist.Count <= 0 && Toutlist.Count <= 0 && ETlist.Count <= 0) { int count = list.Count; if (count > 2) { count = 2; } for (int i = 0; i < count; i++) { t_CM_PointsInfo dio = list[i]; res += dio.DataTypeID + "_" + dio.TagID + ","; } } return(res.TrimEnd(',')); }
public ActionResult SavePointsInfo(t_CM_PointsInfo info) { string result = "OK"; try { List <t_CM_PointsInfo> list = bll.t_CM_PointsInfo.Where(p => p.TagName == info.TagName && p.TagID != info.TagID && p.PID == info.PID).ToList(); if (list.Count > 0) { result = "此测点已存在,请重新录入! "; } else { info.Remarks = info.Remarks.Trim(); info.TagName = info.TagName.Trim(); if (info.TagID > 0) { t_CM_PointsInfo pointsinfo = bll.t_CM_PointsInfo.Where(r => r.TagID == info.TagID).First(); pointsinfo.ABCID = info.ABCID; pointsinfo.DataTypeID = info.DataTypeID; pointsinfo.DID = info.DID; pointsinfo.MPID = info.MPID; pointsinfo.PIOID = info.PIOID; pointsinfo.PID = info.PID; pointsinfo.CID = info.CID; pointsinfo.Position = info.Position; pointsinfo.TagName = info.TagName; pointsinfo.报警上限1 = info.报警上限1; pointsinfo.报警上限2 = info.报警上限2; pointsinfo.报警上限3 = info.报警上限3; //pointsinfo.报警死区 = info.报警死区; pointsinfo.感器SN编码 = info.感器SN编码; pointsinfo.工程上限 = info.工程上限; pointsinfo.工程下限 = info.工程下限; pointsinfo.实时库索引 = info.实时库索引; pointsinfo.数据类型 = info.数据类型; pointsinfo.通信地址 = info.通信地址; pointsinfo.中文描述 = info.中文描述; pointsinfo.变比 = info.变比; pointsinfo.系数 = info.系数; pointsinfo.报警下限1 = info.报警下限1; pointsinfo.报警下限2 = info.报警下限2; pointsinfo.报警下限3 = info.报警下限3; //pointsinfo.站内点号 = info.站内点号; //pointsinfo.置0说明 = info.置0说明; //pointsinfo.置1说明 = info.置1说明; //pointsinfo.初始值 = info.初始值; //pointsinfo.单位 = info.单位; //pointsinfo.例外报告死区 = info.例外报告死区; //pointsinfo.码值上限 = info.码值上限; //pointsinfo.码值下限 = info.码值下限; //pointsinfo.远动数据类型 = info.远动数据类型; //pointsinfo.报警定义 = info.报警定义; //pointsinfo.分组 = info.分组; //pointsinfo.最大间隔时间 = info.最大间隔时间; //pointsinfo.小信号切除值 = info.小信号切除值; //pointsinfo.报警级别 = info.报警级别; //pointsinfo.报警方式 = info.报警方式; //pointsinfo.速率报警限制 = info.速率报警限制; //pointsinfo.UseState = info.UseState; //pointsinfo.设备点名 = info.设备点名; if (info.Remarks != null) { pointsinfo.Remarks = Server.HtmlEncode(info.Remarks).Replace("\n", "<br>"); } else { pointsinfo.Remarks = info.Remarks; } bll.ObjectStateManager.ChangeObjectState(pointsinfo, EntityState.Modified); bll.SaveChanges(); Common.InsertLog("点表管理", CurrentUser.UserName, "编辑点表信息[" + pointsinfo.TagName + "]"); result = "OKedit"; } else { //int realtimeindex = (int)bll.t_CM_PointsInfo.Max(r => r.实时库索引);//博高不需要 info.实时库索引 = 0;//realtimeindex + 1; info.例外报告死区 = 0.1; info.码值下限 = 0; info.码值上限 = 125; //info.远动数据类型 = "UI"; //info.报警下限1 = -999000; //info.报警下限2 = -999000; //info.报警下限3 = -999000; info.报警定义 = 1; info.分组 = 1; info.初始值 = 0; info.最大间隔时间 = 30; info.小信号切除值 = 0; info.报警级别 = 0; info.报警方式 = 1; info.速率报警限制 = 0; info.UseState = 0; if (info.Remarks != null) { info.Remarks = info.Remarks.Replace("\n", "<br>"); } else { info.Remarks = info.Remarks; } bll.t_CM_PointsInfo.AddObject(info); bll.SaveChanges(); Common.InsertLog("点表管理", CurrentUser.UserName, "新增点表信息[" + info.TagName + "]"); result = "OKadd" + "," + info.TagID;// +"," + info.实时库索引; } updatePointStatu((int)info.PID); } } catch (Exception ex) { result = ex.ToString(); result = "出错了!"; } return(Content(result)); }