public SummaryNodeInfo DisplaySummaryInfo(ProjectModel projectModel) { SummaryNodeInfo rootNode = new SummaryNodeInfo(); rootNode.NodeLevel = 0; rootNode.DisplayName = "不需显示的根结点"; rootNode.ParentNode = null; SummaryNodeInfo projectNode = new SummaryNodeInfo(); projectNode.DisplayName = projectModel.Name; projectNode.NodeLevel = 1; projectNode.ParentNode = rootNode; // projectNode.ChildNode = null; projectNode.Amount = 1; projectNode.OrderNumber = 0; Dictionary <string, int> nodeAmount; nodeAmount = InitializeSummaryNode(ref projectNode, null); if (projectModel.Controllers.Count > 0) { int i = 0; SummaryNodeInfo controllerNode; foreach (var c in projectModel.Controllers) { controllerNode = new SummaryNodeInfo(); i++; controllerNode.DisplayName = c.Name; controllerNode.NodeLevel = 1; controllerNode.ParentNode = rootNode; // controllerNode.ChildNode = null; controllerNode.Amount = 1; controllerNode.OrderNumber = i; Dictionary <string, int> cNodeAmount; cNodeAmount = InitializeSummaryNode(ref controllerNode, c); controllerNode.NodeAmount = cNodeAmount; AccumulateNodeAmount(ref nodeAmount, cNodeAmount); rootNode.ChildNodes.Add(controllerNode); } } projectNode.NodeAmount = nodeAmount; rootNode.ChildNodes.Add(projectNode); return(rootNode); }
/// <summary> /// 初始始化基本节点信息 /// </summary> /// <param name="parentNode"></param> private Dictionary <string, int> InitializeSummaryNode(ref SummaryNodeInfo parentNode, ControllerModel controller) { Dictionary <string, int> nodeAmount = InitializeNodeAmount(); int i = 0; SummaryNodeInfo loopNode; loopNode = new SummaryNodeInfo(); i++; loopNode.DisplayName = NodeCategory.回路.ToString(); loopNode.NodeLevel = 2; loopNode.ParentNode = parentNode; // loopNode.ChildNode = null; if (controller != null) { loopNode.Amount = controller.Loops.Count; nodeAmount[NodeCategory.回路.ToString()] = controller.Loops.Count; } loopNode.OrderNumber = i; parentNode.ChildNodes.Add(loopNode); //此处简化业务逻辑,等丰富 SummaryNodeInfo deviceInfoNode; deviceInfoNode = new SummaryNodeInfo(); i++; deviceInfoNode.DisplayName = NodeCategory.器件数量.ToString(); deviceInfoNode.NodeLevel = 2; deviceInfoNode.ParentNode = parentNode; deviceInfoNode.Amount = 0; if (controller != null) { foreach (var l in controller.Loops) { // loopNode.ChildNode = null; deviceInfoNode.Amount += l.DeviceAmount; } } nodeAmount[NodeCategory.器件数量.ToString()] = deviceInfoNode.Amount; deviceInfoNode.OrderNumber = i; //System.Collections.Generic.Dictionary<int, int> deviceType = new Dictionary<int, int>(); //deviceType.Add() parentNode.ChildNodes.Add(deviceInfoNode); SummaryNodeInfo standardLinkageNode; standardLinkageNode = new SummaryNodeInfo(); i++; standardLinkageNode.DisplayName = NodeCategory.标准组态.ToString(); standardLinkageNode.NodeLevel = 2; standardLinkageNode.ParentNode = parentNode; standardLinkageNode.Amount = 0; nodeAmount[NodeCategory.标准组态.ToString()] = standardLinkageNode.Amount; standardLinkageNode.OrderNumber = i; parentNode.ChildNodes.Add(standardLinkageNode); SummaryNodeInfo mixedLinkageNode; mixedLinkageNode = new SummaryNodeInfo(); i++; mixedLinkageNode.DisplayName = NodeCategory.混合组态.ToString(); mixedLinkageNode.NodeLevel = 2; mixedLinkageNode.ParentNode = parentNode; // loopNode.ChildNode = null; mixedLinkageNode.Amount = 0; nodeAmount[NodeCategory.混合组态.ToString()] = mixedLinkageNode.Amount; mixedLinkageNode.OrderNumber = i; parentNode.ChildNodes.Add(mixedLinkageNode); SummaryNodeInfo generalLinkageNode; generalLinkageNode = new SummaryNodeInfo(); i++; generalLinkageNode.DisplayName = NodeCategory.通用组态.ToString(); generalLinkageNode.NodeLevel = 2; generalLinkageNode.ParentNode = parentNode; // loopNode.ChildNode = null; generalLinkageNode.Amount = 0; nodeAmount[NodeCategory.通用组态.ToString()] = generalLinkageNode.Amount; generalLinkageNode.OrderNumber = i; parentNode.ChildNodes.Add(generalLinkageNode); SummaryNodeInfo mannualBoardNode; mannualBoardNode = new SummaryNodeInfo(); i++; mannualBoardNode.DisplayName = NodeCategory.网络手控盘.ToString(); mannualBoardNode.NodeLevel = 2; mannualBoardNode.ParentNode = parentNode; // loopNode.ChildNode = null; mannualBoardNode.Amount = 0; nodeAmount[NodeCategory.网络手控盘.ToString()] = mannualBoardNode.Amount; mannualBoardNode.OrderNumber = i; parentNode.ChildNodes.Add(mannualBoardNode); return(nodeAmount); }
public void DisplayProjectInfo() { List <LoopModel> lstLoop = new List <LoopModel>(); lstLoop.Add(new TestAssistant.LoopBuilder <DeviceInfo8036>().WithControllerID(1).WithDeviceAmount(1) .WithDevice(new TestAssistant.DeviceBuilder8036().WithLoopID(1).Builder()).Build()); List <ControllerModel> lstController = new List <ControllerModel>(); lstController.Add(new TestAssistant.ControllerBuilder().WithProjectID(1).WithLoop(lstLoop).Build()); lstController.Add(new TestAssistant.ControllerBuilder().WithProjectID(1).WithID(2).WithName("Controller2") .WithLoop(lstLoop).Build()); ProjectModel pModel = new TestAssistant.ProjectBuilder() .WithController(lstController) //.WithController(new TestAssistant.ControllerBuilder().WithProjectID(1).WithID(2).WithName("Controller2") // .WithLoop(new TestAssistant.LoopBuilder().WithControllerID(2) // .WithDevice(new TestAssistant.DeviceBuilder8036().WithLoopID(1) // .Builder()) // .WithDevice(new TestAssistant.DeviceBuilder8036().WithLoopID(1).WithID(2).WithSimpleCode("002") // .Builder()) //.Build()) //.Build()) .Build(); SummaryNodeInfo summaryInfo = _projManager.DisplaySummaryInfo(pModel); Assert.That(summaryInfo.ChildNodes.Count(), Is.EqualTo(3), "应为三个子节点"); var result = from s in summaryInfo.ChildNodes where s.OrderNumber == 0 select s; SummaryNodeInfo projectNodeInfo = result.FirstOrDefault(); Assert.That(projectNodeInfo.DisplayName, Is.EqualTo("秦皇岛火车站"), "项目名称应为秦皇岛火车站"); result = from s in summaryInfo.ChildNodes where s.OrderNumber > 0 orderby s.OrderNumber select s; Assert.That(result.Count(), Is.EqualTo(2), "应为两个控制器"); //控制器级别 Assert.That(result.ElementAt(0).DisplayName, Is.EqualTo("Controller8036"), "控制器名称应为8036"); var controllerNodes = result.ElementAt(0).ChildNodes; Assert.That(controllerNodes.Count, Is.EqualTo(6), "应为6个节点"); string strNodes = ""; foreach (var node in controllerNodes) { strNodes += node.DisplayName; } Assert.That(strNodes.IndexOf("回路"), Is.GreaterThan(-1), "未找到回路"); var controller = result.ElementAt(0); Assert.That(controller.NodeAmount["回路"], Is.EqualTo(1), "应为一个回路"); Assert.That(controller.NodeAmount["器件数量"], Is.EqualTo(1), "应为一个器件"); //Assert.That(deviceResult.Count, Is.EqualTo(1), "应为一个器件"); //Assert.That(deviceResult.ElementAt(0).DisplayName, Is.EqualTo(""), "应为一个器件"); Assert.That(result.ElementAt(1).DisplayName, Is.EqualTo("Controller2"), "控制器名称应为Controller2"); //foreach (var controllerNodeInfo in result) //{ // Assert.That(controllerNodeInfo.DisplayName, Is.EqualTo(""), "文件应该存在"); //} }