Пример #1
0
        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());
        }
Пример #2
0
        //曲线报表默认加载设备参数
        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(','));
        }
Пример #3
0
        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));
        }