Beispiel #1
0
        public void Initialize(List <ProjectModel> projects, object selectedEntity)
        {
            // 项目级别信息集合
            var projectHierarchyItemsList = new List <NavigatorItemViewModel>();

            foreach (var p in projects)
            {
                // 为项目信息创建导航节点
                var projectHierarchyItem = new NavigatorItemViewModel(p);
                projectHierarchyItemsList.Add(projectHierarchyItem);

                // 判断当前节点是否为选中节点
                if (selectedEntity != null && selectedEntity.GetType() == typeof(ProjectModel) && (selectedEntity as ProjectModel).Equals(p))
                {
                    _selectedItem = projectHierarchyItem;
                }

                // 判断项目下是否有控制器节点
                if (p.Controllers.Count != 0)
                {
                    // 创建“控制器”导航节点
                    var controllerHierarchyItemsList = new List <NavigatorItemViewModel>();

                    foreach (var c in p.Controllers)
                    {
                        // 为“控制器信息”创建导航节点
                        var controllerHierarchyItem = new NavigatorItemViewModel(c);
                        controllerHierarchyItem.Parent = projectHierarchyItem;
                        controllerHierarchyItemsList.Add(controllerHierarchyItem);

                        // 判断当前节点是否为选中节点
                        if (selectedEntity != null && selectedEntity.GetType() == typeof(ControllerModel) && (selectedEntity as ControllerModel).Equals(c))
                        {
                            _selectedItem = controllerHierarchyItem;
                        }
                        #region 根据控制器类型获取配置的节点
                        IControllerConfig     config    = ControllerConfigManager.GetConfigObject(c.Type);
                        ControllerNodeModel[] nodeModel = config.GetNodes();
                        #endregion
                        if (nodeModel.Length != 0)
                        {
                            var controllerNodeHierarchyItemList = new List <NavigatorItemViewModel>();
                            foreach (var cNode in nodeModel)
                            {
                                //为“控制器节点类型”创建导航节点
                                var nodeHierarchyItem = new NavigatorItemViewModel(cNode);
                                nodeHierarchyItem.Parent = controllerHierarchyItem;
                                controllerNodeHierarchyItemList.Add(nodeHierarchyItem);
                                if (selectedEntity != null && selectedEntity.GetType() == typeof(ControllerNodeModel) && (selectedEntity as ControllerNodeModel).Equals(cNode))
                                {
                                    _selectedItem = controllerHierarchyItem;
                                }
                                //如果节点类型为“回路”,需要为其增加“回路号”导航节点
                                if (cNode.Type == ControllerNodeType.Loop) //回路数据应该加载回路信息
                                {
                                    if (c.Loops.Count > 0)                 //加载回路数据
                                    {
                                        var loopHierarchyItemList = new List <NavigatorItemViewModel>();
                                        foreach (var l in c.Loops)
                                        {
                                            //为回路信息创建导航节点
                                            var loopHierarchyItem = new NavigatorItemViewModel(l);
                                            loopHierarchyItem.Parent = nodeHierarchyItem;
                                            loopHierarchyItemList.Add(loopHierarchyItem);
                                            if (selectedEntity != null && selectedEntity.GetType() == typeof(LoopModel) && (selectedEntity as LoopModel).Equals(l))
                                            {
                                                _selectedItem = loopHierarchyItem;
                                            }
                                        }
                                        nodeHierarchyItem.Children = new CollectionView(loopHierarchyItemList);
                                    }
                                }
                            }
                            controllerHierarchyItem.Children = new CollectionView(controllerNodeHierarchyItemList);
                        }
                    }
                    projectHierarchyItem.Children = new CollectionView(controllerHierarchyItemsList);
                }
            }

            this.Projects = new CollectionView(projectHierarchyItemsList);

            // 设置选中节点状态,并展开当前选中节点
            if (_selectedItem != null)
            {
                _selectedItem.IsSelected = true;
                NavigatorItemViewModel current = _selectedItem.Parent;

                while (current != null)
                {
                    current.IsExpanded = true;
                    current            = current.Parent;
                }
            }
        }
 protected override bool GenerateExcelTemplateLoopSheet(List <string> sheetNames, IControllerConfig config, Model.BusinessModel.ExcelTemplateCustomizedInfo summaryInfo, ref IExcelService excelService)
 {
     try
     {
         #region 生成所有回路页签模板
         int                   currentLoopStartIndex       = 2;
         int                   defaultLoopCodeLength       = 2;                                 //默认回路编码长度
         string                loopSheetNamePrefix         = "";                                //回路页签名称前缀
         short                 maxDeviceAmount             = config.GetMaxDeviceAmountValue();
         int                   maxLoopAmount               = config.GetMaxLoopAmountValue();    //允许最大回路数量
         int                   defaultDeviceTypeCode       = summaryInfo.DefaultDeviceTypeCode; //默认器件编码
         DeviceType            defaultDeviceType           = config.GetDeviceTypeViaDeviceCode(defaultDeviceTypeCode);
         ColumnConfigInfo[]    deviceColumnDefinitionArray = config.GetDeviceColumns();         //取得器件的列定义信息
         List <MergeCellRange> lstMergeCellRange           = new List <MergeCellRange>();
         ControllerNodeModel[] nodes = config.GetNodes();
         for (int i = 0; i < nodes.Length; i++)
         {
             switch (nodes[i].Type)
             {
             case ControllerNodeType.Loop:
                 loopSheetNamePrefix = nodes[i].Name;
                 break;
             }
         }
         for (int i = currentLoopStartIndex; i <= summaryInfo.LoopSheetAmount + 1; i++)
         {
             lstMergeCellRange.Clear();
             for (int j = 0; j < summaryInfo.LoopAmountPerSheet; j++)
             {
                 if (maxLoopAmount < (j + 1 + (i - currentLoopStartIndex) * summaryInfo.LoopAmountPerSheet))//已经超出最大回路编号,退出循环
                 {
                     break;
                 }
                 string loopCode  = summaryInfo.MachineNumberFormatted + (j + 1 + (i - currentLoopStartIndex) * summaryInfo.LoopAmountPerSheet).ToString().PadLeft(defaultLoopCodeLength, '0');
                 int    extraLine = 0;
                 if (j != 0)
                 {
                     extraLine = 2;
                 }
                 //回路标题:回路1
                 excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + j * extraLine, 0, loopSheetNamePrefix + ":" + loopCode, CellStyleType.SubCaption);
                 for (int devColumnCount = 0; devColumnCount < deviceColumnDefinitionArray.Length; devColumnCount++)
                 {
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + 1 + j * extraLine, devColumnCount, deviceColumnDefinitionArray[devColumnCount].ColumnName, CellStyleType.TableHead);
                 }
                 //回路标题行合并
                 MergeCellRange mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + j * extraLine;
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + j * extraLine;
                 mergeCellRange.FirstColumnIndex = 0;
                 mergeCellRange.LastColumnIndex  = deviceColumnDefinitionArray.Length - 1;
                 lstMergeCellRange.Add(mergeCellRange);
                 //回路默认器件信息
                 for (int k = 0; k < maxDeviceAmount; k++)
                 {
                     string deviceCode = (k + 1).ToString().PadLeft(summaryInfo.SelectedDeviceCodeLength - defaultLoopCodeLength - summaryInfo.MachineNumberFormatted.Length, '0');
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 0, loopCode + deviceCode, CellStyleType.Data);  //器件编码
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 1, defaultDeviceType.Name, CellStyleType.Data); //器件类型
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 2, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 3, "0", CellStyleType.Data);                    //屏蔽
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 4, "2", CellStyleType.Data);                    //灵敏度
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 5, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 6, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 7, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 8, null, CellStyleType.Data);
                     excelService.SetCellValue(sheetNames[i], j * maxDeviceAmount + k + (j * extraLine + 2), 9, null, CellStyleType.Data);
                 }
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 1;
                 mergeCellRange.LastColumnIndex  = 1;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.DeviceType.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 2;
                 mergeCellRange.LastColumnIndex  = 2;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.Feature.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 3;
                 mergeCellRange.LastColumnIndex  = 3;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.Disable.ToString(), mergeCellRange);
                 mergeCellRange = new MergeCellRange();
                 mergeCellRange.FirstRowIndex    = j * maxDeviceAmount + (j * extraLine + 2);
                 mergeCellRange.LastRowIndex     = j * maxDeviceAmount + (j * extraLine + 2) + maxDeviceAmount - 1;
                 mergeCellRange.FirstColumnIndex = 4;
                 mergeCellRange.LastColumnIndex  = 4;
                 excelService.SetSheetValidationForListConstraint(sheetNames[i], RefereceRegionName.SensitiveLevel.ToString(), mergeCellRange);
             }
             excelService.SetColumnWidth(sheetNames[i], 1, 15f);
             excelService.SetColumnWidth(sheetNames[i], 9, 50f);
             excelService.SetMergeCells(sheetNames[i], lstMergeCellRange);//设置"回路页签"合并单元格
         }
         #endregion
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
Beispiel #3
0
        public void Initialize(List <ProjectModel> projects, object selectedEntity)
        {
            // create the top level collectionview for the customers
            var projectHierarchyItemsList = new List <HierarchyItemViewModel>();

            foreach (var p in projects)
            {
                // create the hierarchy item and add to the list
                var projectHierarchyItem = new HierarchyItemViewModel(p);

                projectHierarchyItemsList.Add(projectHierarchyItem);

                // check if this is the selected item
                if (selectedEntity != null && selectedEntity.GetType() == typeof(ProjectModel) && (selectedEntity as ProjectModel).Equals(p))
                {
                    _selectedItem = projectHierarchyItem;
                }

                // if there are any orders in projectHierarchyItem
                if (p.Controllers.Count != 0)
                {
                    // create a new list of HierarchyItems
                    var controllerHierarchyItemsList = new List <HierarchyItemViewModel>();
                    // loop through the orders and add them
                    foreach (var c in p.Controllers)
                    {
                        // create the hierarchy item and add to the list
                        var controllerHierarchyItem = new HierarchyItemViewModel(c);
                        controllerHierarchyItem.Parent = projectHierarchyItem;
                        controllerHierarchyItemsList.Add(controllerHierarchyItem);

                        // check if this is the selected item
                        if (selectedEntity != null && selectedEntity.GetType() == typeof(ControllerModel) && (selectedEntity as ControllerModel).Equals(c))
                        {
                            _selectedItem = controllerHierarchyItem;
                        }


                        IControllerConfig     config    = ControllerConfigManager.GetConfigObject(c.Type);
                        ControllerNodeModel[] nodeModel = config.GetNodes();
                        if (nodeModel.Length != 0)
                        {
                            var controllerNodeHierarchyItemList = new List <HierarchyItemViewModel>();
                            foreach (var cNode in nodeModel)
                            {
                                var nodeHierarchyItem = new HierarchyItemViewModel(cNode);
                                nodeHierarchyItem.Parent = controllerHierarchyItem;
                                controllerNodeHierarchyItemList.Add(nodeHierarchyItem);
                                if (selectedEntity != null && selectedEntity.GetType() == typeof(ControllerNodeModel) && (selectedEntity as ControllerNodeModel).Equals(cNode))
                                {
                                    _selectedItem = controllerHierarchyItem;
                                }
                                if (cNode.Type == ControllerNodeType.Loop) //回路数据应该加载回路信息
                                {
                                    if (c.Loops.Count > 0)                 //加载回路数据
                                    {
                                        var loopHierarchyItemList = new List <HierarchyItemViewModel>();
                                        foreach (var l in c.Loops)
                                        {
                                            var loopHierarchyItem = new HierarchyItemViewModel(l);
                                            loopHierarchyItem.Parent = nodeHierarchyItem;
                                            loopHierarchyItemList.Add(loopHierarchyItem);
                                            if (selectedEntity != null && selectedEntity.GetType() == typeof(LoopModel) && (selectedEntity as LoopModel).Equals(l))
                                            {
                                                _selectedItem = loopHierarchyItem;
                                            }
                                        }
                                        nodeHierarchyItem.Children = new CollectionView(loopHierarchyItemList);
                                    }
                                }
                            }
                            controllerHierarchyItem.Children = new CollectionView(controllerNodeHierarchyItemList);
                        }
                    }
                    // create the children of the customer
                    projectHierarchyItem.Children = new CollectionView(controllerHierarchyItemsList);
                }
            }

            this.Projects = new CollectionView(projectHierarchyItemsList);

            // select the selected item and expand it'type parents
            if (_selectedItem != null)
            {
                _selectedItem.IsSelected = true;
                HierarchyItemViewModel current = _selectedItem.Parent;

                while (current != null)
                {
                    current.IsExpanded = true;
                    current            = current.Parent;
                }
            }
        }