Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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(""), "文件应该存在");
            //}
        }