Example #1
0
        /// <summary>
        /// 获取所有的测点相应的数据
        /// </summary>
        public static void GetAllMonitorNodeData()
        {
            DateTime start = DateTime.Now;

            Log.Info(LogTags.KKS, string.Format("获取KKS数据..."));
            LocationService service     = new LocationService();
            var             bll         = Bll.Instance();
            var             monitorList = bll.DevMonitorNodes.ToList();
            //List<string>
            string tags = "";

            WebApiHelper.IsSaveJsonToFile = true;

            //List<DbModel.Location.AreaAndDev.DevMonitorNode> monitorList2 =
            //    new List<DbModel.Location.AreaAndDev.DevMonitorNode>();
            //for (int i = 0; i < monitorList.Count; i++)
            //{
            //    DbModel.Location.AreaAndDev.DevMonitorNode node = monitorList[i];
            //    string tag = node.TagName;
            //    if (!tag.Contains("/"))// "/"会导致失败
            //    {
            //        monitorList2.Add(node);
            //    }
            //}

            for (int i = 0; i < monitorList.Count; i++)
            {
                DbModel.Location.AreaAndDev.DevMonitorNode node = monitorList[i];
                string tag = node.TagName;
                if (tags == "")
                {
                    tags = tag;
                }
                else
                {
                    tags += "," + tag;
                }

                if ((i + 1) % 40 == 0)                           //每100个获取一次数据,200个不行,url长度有限制的
                {
                    var dataList = service.GetSomesisList(tags); //获取监控信息并保存到数据库中
                    Log.Info(LogTags.KKS,
                             string.Format("获取KKS数据[{3:p3}]:{0}...,({1}/{2})", node.Describe, i, monitorList.Count,
                                           ((i + 0.0f) / monitorList.Count)));
                    tags = "";
                }
            }

            if (tags != "")
            {
                var dataList = service.GetSomesisList(tags); //获取监控信息并保存到数据库中
            }

            WebApiHelper.IsSaveJsonToFile = false;
            TimeSpan time = DateTime.Now - start;

            Log.Info(LogTags.KKS, string.Format("【5】【GetAllMonitorNodeData】完成 用时:{0}", time));
        }
        private void MenuGetMonitorData_Click(object sender, RoutedEventArgs e)
        {
            DevMonitorNode monitorNode = dg_monitor.SelectedItem as DevMonitorNode;

            if (monitorNode == null)
            {
                return;
            }
            LocationService service  = new LocationService();
            var             dataList = service.GetSomesisList(monitorNode.TagName); //获取监控信息并保存到数据库中

            Log.Info(LogTags.KKS, WebApiHelper.LastUrl);
            Log.Info(LogTags.KKS, WebApiHelper.LastJson);
        }
        private void MenuLoadMonitorNodeFile_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                //Dev_Monitor monitor = new Dev_Monitor();
                string        dirPath = AppDomain.CurrentDomain.BaseDirectory + "Data\\DeviceData\\" + DbModel.AppSetting.ParkName + "\\";
                DirectoryInfo di      = new DirectoryInfo(dirPath);
                if (di.Exists == false)
                {
                    MessageBox.Show("不存在目录:" + di.FullName);
                    return;
                }

                string    xlsFile = di.FullName + "设备测点列表.xls";
                DataTable dt      = ExcelHelper.LoadTable(new FileInfo(xlsFile), null, true);

                Dictionary <string, DevMonitorNodeList> dict = new Dictionary <string, DevMonitorNodeList>();
                foreach (DataRow row in dt.Rows)
                {
                    DevMonitorNode node = new DevMonitorNode();
                    node.SetNull();
                    var pKKs = row[1].ToString();
                    node.ParentKKS = row[1].ToString();
                    node.Describe  = row[2].ToString();
                    node.TagName   = row[3].ToString();
                    if (!dict.ContainsKey(pKKs))
                    {
                        dict.Add(pKKs, new DevMonitorNodeList());
                    }

                    var list = dict[pKKs];
                    list.Add(node);
                }

                foreach (string key in dict.Keys)
                {
                    string xmlFile = di.FullName + key + ".xml";
                    XmlSerializeHelper.Save(dict[key], xmlFile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Example #4
0
        /// <summary>
        /// 重新分析测点数据,原来未找到kks的进行二次深入分析
        /// </summary>
        public static void ReParseMonitPoint(bool fromFile)
        {
            DateTime start = DateTime.Now;

            Log.Info(LogTags.KKS, "重新分析设备监控节点");

            Bll bll = new Bll();
            List <DbModel.Location.AreaAndDev.DevMonitorNode> monitors = null;

            if (fromFile) //从文件读取
            {
                string basePath = AppDomain.CurrentDomain.BaseDirectory;
                Log.Info(LogTags.KKS, "BaseDirectory:" + basePath);
                string filePath = basePath + "Data\\KKS\\EDOS_New.xls";
                monitors =
                    DevInfoHelper.CreateDevMonitorNodeListFromFile <DbModel.Location.AreaAndDev.DevMonitorNode>(
                        new FileInfo(filePath));
            }
            else //从数据库读取
            {
                monitors = bll.DevMonitorNodes.ToList();
            }

            var kksCodes = bll.KKSCodes.ToListEx();
            var kksDict  = KKSCode.ToDict(kksCodes);

            for (int i = 0; i < monitors.Count; i++)
            {
                DbModel.Location.AreaAndDev.DevMonitorNode monitor = monitors[i];
                if (i > 0)
                {
                    monitor.PreNode = monitors[i - 1];
                }
                if (i < monitors.Count - 1)
                {
                    monitor.NextMode = monitors[i + 1];
                }
                if (kksDict.ContainsKey(monitor.ParentKKS))
                {
                    monitor.KKSCode = kksDict[monitor.ParentKKS];
                }
            }

            var monitors1   = monitors.Where(i => i.ParseResult == "0").ToList();
            var monitors2   = monitors.Where(i => i.ParseResult == "1").ToList();
            var monitors31  = monitors.Where(i => i.ParseResult == "-1").ToList();
            var monitors311 = monitors31.Where(i => i.Unit != "").ToList();
            var monitors32  = monitors.Where(i => i.ParseResult == "-2").ToList();
            var monitors321 = monitors32.Where(i => i.Unit != "").ToList();
            var monitors4   = monitors.Where(i => i.ParseResult.ToInt() > 1).ToList();

            List <DbModel.Location.AreaAndDev.DevMonitorNode> editMonitorNodes =
                new List <DbModel.Location.AreaAndDev.DevMonitorNode>();

            for (int i = 0; i < monitors4.Count; i++)
            {
                DbModel.Location.AreaAndDev.DevMonitorNode monitorNode = monitors4[i];
                try
                {
                    var          parentCode = monitorNode.ParentKKS;
                    TagToKKSInfo info       = KKSCodeHelper.ReParese(kksCodes, monitorNode.ParentKKS, monitorNode.KKS);
                    var          code       = info.GetParentCode();

                    if (info.Type == 1 || info.Type == 0)
                    {
                        monitorNode.ParentKKS   = code;
                        monitorNode.ParseResult = "1"; //这里统一为1
                        editMonitorNodes.Add(monitorNode);

                        Log.Info(LogTags.KKS,
                                 string.Format("解析测点:{0}=>{1}[{2}],({3}/{4})", parentCode, code, info.KKS, i, monitors4.Count));
                    }
                    else
                    {
                        if (monitorNode.PreNode != null)
                        {
                            if (monitorNode.PreNode.KKSCode != null)
                            {
                                var kksCode = monitorNode.PreNode.KKSCode.GetAncestor("系统");
                                if (kksCode != null)
                                {
                                    monitorNode.ParentKKS   = kksCode.Code;
                                    monitorNode.ParseResult = "1"; //感觉这里要区分开来了
                                    editMonitorNodes.Add(monitorNode);
                                }
                                else
                                {
                                    Log.Info(LogTags.KKS,
                                             string.Format("monitorNode.PreNode.KKSCode 未找到系统节点:{0}", monitorNode.PreNode.KKSCode));
                                }
                            }
                            else
                            {
                                Log.Info(LogTags.KKS,
                                         string.Format("monitorNode.PreNode.KKSCode == null:{0}", monitorNode.PreNode));
                            }
                        }
                        else
                        {
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Error(LogTags.KKS, monitorNode + "\n" + e + "");
                }
            }

            bll.DevMonitorNodes.EditRange(editMonitorNodes);

            TimeSpan time = DateTime.Now - start;

            Log.Info(LogTags.KKS, string.Format("【4】【ReParseMonitPoint】完成 用时:{0}", time));
        }