Ejemplo n.º 1
0
        public ActionResult Create([Bind(Include = "Id,Serial,Name,Code,ParentCode,DesinCode,MainType,SubType,System")] KKSCode kks)
        {
            if (ModelState.IsValid)
            {
                KKSCode Self = bll.KKSCodes.DbSet.Where(p => p.Code == kks.Code).FirstOrDefault();
                if (Self != null)
                {
                    return(Json(new { success = false, errors = "这个KKS码已存在" }));
                }

                if (kks.ParentCode != null)
                {
                    KKSCode Parent = bll.KKSCodes.DbSet.Where(p => p.Code == kks.ParentCode).FirstOrDefault();
                    if (Parent == null)
                    {
                        return(Json(new { success = false, errors = "这个上级KKS码不存在" }));
                    }
                }

                var result = bll.KKSCodes.Add(kks);
                if (result)
                {
                    return(Json(new { success = result }));
                }
                else
                {
                    return(Json(new { success = result, errors = bll.KKSCodes.ErrorMessage }));
                }
            }

            return(View(kks));
        }
Ejemplo n.º 2
0
        public ActionResult DeleteConfirmed(int id)
        {
            KKSCode kks    = bll.KKSCodes.Find(id);
            string  Code   = kks.Code.ToString();
            string  System = kks.System.ToString();

            bll.KKSCodes.DeleteById(id);

            return(RedirectToAction("Index"));
        }
Ejemplo n.º 3
0
        public string FindKKSCodeByName(string name)
        {
            KKSCode kks = db.KKSCodes.DbSet.FirstOrDefault(i => i.Name.Contains(name));

            if (kks == null)
            {
                return("");
            }
            else
            {
                return(kks.Code);
            }
        }
Ejemplo n.º 4
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            KKSCode kks = bll.KKSCodes.Find(id);

            if (kks == null)
            {
                return(HttpNotFound());
            }

            return(PartialView(kks));
        }
Ejemplo n.º 5
0
        private static string GetKKSCode(string strTageName, ref List <KKSCode> kksList)
        {
            if (strTageName == "")
            {
                return(strTageName);
            }

            KKSCode Tag = kksList.Find(p => p.Code == strTageName);

            if (Tag == null)
            {
                int nLength = strTageName.Length;
                strTageName = strTageName.Substring(0, nLength - 1);
                strTageName = GetKKSCode(strTageName, ref kksList);
            }

            return(strTageName);
        }
Ejemplo n.º 6
0
        public static TagToKKSInfo GetKKSCode(string tagName, List <KKSCode> kksList)
        {
            TagToKKSInfo info = new TagToKKSInfo(tagName);

            if (tagName == "")
            {
                return(info);
            }

            string         key      = tagName;
            List <KKSCode> kksCodes = null;

            while (key.Length > 0)
            {
                if (kksDict.ContainsKey(key))
                {
                    kksCodes = kksDict[key]; //从缓存取,考虑可能很多个测点是相同的kks
                }
                else
                {
                    kksCodes = kksList.Where(p => p.Code.StartsWith(key)).ToList();

                    if (kksCodes.Count > 0 && key.Length > 1)
                    {
                        KKSCode kks = kksCodes.Find(p => p.Code == key);//完全相同的
                        if (kks != null)
                        {
                            kksCodes = new List <KKSCode>()
                            {
                                kks
                            };                                     //使用一个
                        }
                        else
                        {
                            var kksCodes2 = FindCommonParent(kksCodes);
                            //if (kksCodes2.Count > 1)
                            //{
                            //    info = ReParese(kksList, key, tagName);
                            //    return info;
                            //}
                            //else
                            //{
                            //    kksCodes = kksCodes2;
                            //}

                            kksCodes = kksCodes2;
                        }
                    }
                    kksDict.Add(key, kksCodes);
                }
                if (kksCodes.Count == 0)
                {
                    int nLength = key.Length;
                    key = key.Substring(0, nLength - 1);
                }
                else
                {
                    info.Key = key;
                    break;
                }
            }

            info.KKSList = kksCodes;
            return(info);
        }
Ejemplo n.º 7
0
        public static List <KKSCode> FindCommonParent(List <KKSCode> input)
        {
            List <KKSCode> kksDevs = new List <KKSCode>();

            kksDevs.AddRange(input);

            int count1 = 0;
            int count2 = 1;

            do
            {
                count1 = kksDevs.Count;
                for (int i = 0; i < kksDevs.Count; i++)
                {
                    KKSCode code = kksDevs[i];
                    //KKSCode parent = code.Parent;
                    //if (kksDevs.Contains(parent))
                    //{
                    //    kksDevs.RemoveAt(i);
                    //    i--;
                    //}

                    var ancestors = code.GetAncestors();
                    foreach (KKSCode ancestor in ancestors)
                    {
                        if (kksDevs.Contains(ancestor))
                        {
                            kksDevs.RemoveAt(i);
                            i--;
                            break;
                        }
                    }
                }//删除子节点

                count2 = kksDevs.Count;

                bool    isSameParent = true;
                KKSCode commonParent = null;
                foreach (var kksDev in kksDevs)
                {
                    if (commonParent == null)
                    {
                        commonParent = kksDev.Parent;
                    }
                    else
                    {
                        if (commonParent != kksDev.Parent)
                        {
                            isSameParent = false;
                            break;
                        }
                    }
                }

                if (isSameParent && commonParent != null)
                {
                    return(new List <KKSCode>()
                    {
                        commonParent
                    });
                }
            } while (count1 != count2);

            return(kksDevs);
        }
Ejemplo n.º 8
0
        public static void ImportKKSNodeFromFile <T>(FileInfo file)
            where T : KKSCode, new()
        {
            if (file.Exists == false)
            {
                Log.Info("不存在文件:" + file.FullName);
            }
            Log.Info(LogTags.KKS, string.Format("读取文件"));
            DataTable dt = ExcelHelper.Load(new FileInfo(file.FullName), true).Tables[0].Copy();

            dt.Rows.RemoveAt(0);//备注行
            Log.Info(LogTags.KKS, string.Format("解析数据"));
            Dictionary <string, KKSCode> kksList = new Dictionary <string, KKSCode>();

            for (int j = 0; j < dt.Rows.Count; j++)
            {
                DataRow dr         = dt.Rows[j];
                string  code       = dr[1].ToString().Trim();
                string  name       = dr[2].ToString().Trim();
                string  nodeType   = dr[3].ToString().Trim(); //节点类型:机组、系统、子系统、设备、部件
                string  parentCode = dr[4].ToString().Trim();
                string  codeType   = dr[5].ToString().Trim(); //专业
                KKSCode kks        = new KKSCode();
                if (code.StartsWith("SH"))
                {
                    code = code.Substring(2);
                }
                if (parentCode.StartsWith("SH"))
                {
                    parentCode = parentCode.Substring(2);
                }
                kks.Code       = code;
                kks.Name       = name;
                kks.MainType   = nodeType;
                kks.SubType    = codeType;
                kks.ParentCode = parentCode;
                if (!kksList.ContainsKey(code))
                {
                    kksList.Add(code, kks);
                }
                else
                {
                }
            }

            Bll bll = new Bll();

            Log.Info(LogTags.KKS, string.Format("清空数据"));
            bool r1 = bll.KKSCodes.Clear(1);

            List <KKSCode> list = kksList.Values.ToList();

            Log.Info(LogTags.KKS, string.Format("写入数据"));
            if (bll.KKSCodes.AddRange(bll.Db, list) == false)
            {
                Log.Error(LogTags.KKS, "写入失败:" + bll.KKSCodes.ErrorMessage);
            }
            else
            {
                Log.Info(LogTags.KKS, "KKS数量:" + list.Count);
            }

            //List<KKSCode> temp = new List<KKSCode>();
            //for (int i = 0; i < list.Count; i++)
            //{
            //    if (i % 100 == 0)
            //    {
            //        if (bll.KKSCodes.AddRange(bll.Db, temp) == false)
            //        {
            //            Log.Error(LogTags.KKS, "写入失败:" + bll.KKSCodes.ErrorMessage);
            //        }
            //        else
            //        {
            //            Log.Info(LogTags.KKS, "KKS数量:" + temp.Count);
            //        }
            //        temp.Clear();
            //    }
            //    temp.Add(list[i]);
            //}
            //if (bll.KKSCodes.AddRange(bll.Db, temp) == false)
            //{
            //    Log.Error(LogTags.KKS, "写入失败:" + bll.KKSCodes.ErrorMessage);
            //}
            //else
            //{
            //    Log.Info(LogTags.KKS, "KKS数量:" + temp.Count);
            //}
        }
Ejemplo n.º 9
0
        private Area AddTopoNode(string name, string kks, Area parent, AreaTypes type,
                                 TransformM transform = null, string otherName = "")
        {
            if (string.IsNullOrEmpty(kks))
            {
                KKSCode kksCode = KKSCodes.DbSet.FirstOrDefault(i => i.Name.Contains(name) && i.MainType == "土建");
                if (kksCode != null)
                {
                    kks = kksCode.Code;
                }
            }

            if (!string.IsNullOrEmpty(kks))
            {
                var topoNode = new Area()
                {
                    Name     = name,
                    ParentId = parent.Id,
                    Type     = type,

                    //Transfrom = transform,
                };
                topoNode.SetTransform(transform);
                Areas.Add(topoNode);

                KKSCode kksCode = KKSCodes.DbSet.FirstOrDefault(i => i.Code == kks);
                NodeKKS kks1    = null;
                if (kksCode != null)
                {
                    kks1 = new NodeKKS()
                    {
                        KKS = kks, NodeType = type, NodeId = topoNode.Id, KKSId = kksCode.Id
                    };
                    NodeKKSs.Add(kks1);
                }
                else
                {
                    kks1 = new NodeKKS()
                    {
                        KKS = kks, NodeType = type, NodeId = topoNode.Id
                    };
                    NodeKKSs.Add(kks1);
                }
                topoNode.KKS = kks1.KKS;
                //topoNode.Nodekks = kks1;
                //topoNode.NodekksId = kks1.Id;
                Areas.Edit(topoNode);

                return(topoNode);
            }
            else
            {
                var topoNode = new Area()
                {
                    Name     = name,
                    ParentId = parent.Id,
                    Type     = type,
                    //Transfrom = transform
                };
                topoNode.SetTransform(transform);
                bool result = Areas.Add(topoNode);
                return(topoNode);
            }
        }
Ejemplo n.º 10
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));
        }
        private PhysicalTopology AddTopoNode(string name, string kks, PhysicalTopology parent, Types type,
                                             TransformM transform = null, string otherName = "")
        {
            if (string.IsNullOrEmpty(kks))
            {
                KKSCode kksCode = KKSCodes.DbSet.FirstOrDefault(i => i.Name.Contains(name));
                if (kksCode != null)
                {
                    kks = kksCode.Code;
                }
            }

            if (!string.IsNullOrEmpty(kks))
            {
                PhysicalTopology topoNode = new PhysicalTopology()
                {
                    Name   = name,
                    Parent = parent,
                    Type   = type,

                    Transfrom = transform,
                };
                PhysicalTopologys.Add(topoNode);

                KKSCode kksCode = KKSCodes.DbSet.FirstOrDefault(i => i.Code == kks);
                NodeKKS kks1    = null;
                if (kksCode != null)
                {
                    kks1 = new NodeKKS()
                    {
                        KKS = kks, NodeType = type, NodeId = topoNode.Id, KKSId = kksCode.Id
                    };
                    NodeKKSs.Add(kks1);
                }
                else
                {
                    kks1 = new NodeKKS()
                    {
                        KKS = kks, NodeType = type, NodeId = topoNode.Id
                    };
                    NodeKKSs.Add(kks1);
                }
                topoNode.Nodekks   = kks1;
                topoNode.NodekksId = kks1.Id;
                PhysicalTopologys.Edit(topoNode);

                return(topoNode);
            }
            else
            {
                PhysicalTopology topoNode = new PhysicalTopology()
                {
                    Name      = name,
                    Parent    = parent,
                    Type      = type,
                    Transfrom = transform
                };
                PhysicalTopologys.Add(topoNode);
                return(topoNode);
            }
        }