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)); }
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")); }
public string FindKKSCodeByName(string name) { KKSCode kks = db.KKSCodes.DbSet.FirstOrDefault(i => i.Name.Contains(name)); if (kks == null) { return(""); } else { return(kks.Code); } }
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)); }
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); }
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); }
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); }
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); //} }
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); } }
/// <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); } }