123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /* ==============================================================================
- * 功能描述:数据检查规范
- * 创 建 者:Garrett
- * 创建日期:2018/11/7 15:40:23
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text.RegularExpressions;
- using SAGA.DotNetUtils;
- using SAGA.DotNetUtils.NPOI;
- using ServiceRevitLib.Common;
- namespace ServiceRevitLib.Utils
- {
- /// <summary>
- /// DataCheckRule
- /// </summary>
- class DataCheckRule
- {
- public static string MCRPath = Path.Combine(MBIConst.MBIResourcePath, @"DataCheck\模型检查结果输出格式-模版.xlsx");
- /// <summary>
- /// 获取设备编码检查Cateogry 列表
- /// </summary>
- /// <returns></returns>
- public static List<DCR_CodeCheckCategory> GetCodeCheckCategories()
- {
- var list = NPOIHelper
- .ConvertExcelSheetToModel<DCR_CodeCheckCategory>(MCRPath);
- return list;
- }
- /// <summary>
- /// 获取预定义的连接件类
- /// </summary>
- /// <returns></returns>
- public static List<DCR_Connector> GetPreDefineConnectors()
- {
- var list = NPOIHelper
- .ConvertExcelSheetToModel<DCR_Connector>(MCRPath);
- return list;
- }
- /// <summary>
- /// 获取可识别的管道系统名称
- /// </summary>
- /// <returns></returns>
- public static List<DCR_MEPSystem> GetMepSystems()
- {
- var list = NPOIHelper
- .ConvertExcelSheetToModel<DCR_MEPSystem>(MCRPath);
- return list;
- }
- /// <summary>
- /// 获取设备关联的系统类型
- /// </summary>
- /// <returns></returns>
- public static List<DCR_EquipReferSystem> GetEquipReferSystems()
- {
- var list = NPOIHelper
- .ConvertExcelSheetToModel<DCR_SystemReferEquip>(MCRPath);
- List<Tuple<string, string>> tuples = new List<Tuple<string, string>>();
- //将集合转化为:系统名称-设备名称
- list.ForEach(t => t.Equips.ForEach(tt => tuples.Add(new Tuple<string, string>(t.SystemName, tt))));
- //将集合转化为:设备名称-多个系统名称
- var newList = tuples.GroupBy(t => t.Item2).Select(tt => new DCR_EquipReferSystem()
- { EquipName = tt.Key, Systems = tt.Select(t => t.Item1).ToList() }).ToList();
- return newList;
- }
- }
- /// <summary>
- /// 参考-可识别的系统名称
- /// </summary>
- [SheetInfo(SheetName = "参考-可识别的系统名称", RowStartIndex = 0)]
- public class DCR_MEPSystem
- {
- [CellIndex(0)]
- public string Name { get; set; }
- }
- /// <summary>
- /// 参考-revit分类
- /// </summary>
- [SheetInfo(SheetName = "参考-revit分类", RowStartIndex = 0)]
- public class DCR_CodeCheckCategory
- {
- [CellIndex(0)]
- public string Name { get; set; }
- }
- /// <summary>
- /// 设备类是否有连接件
- /// </summary>
- [SheetInfo(SheetName = "参考-连接件对照表", RowStartIndex = 1)]
- public class DCR_Connector
- {
- [CellIndex(4)]
- public string Name { get; set; }
- [CellIndex(5)]
- public string Code { get; set; }
- [CellIndex(6)]
- public string PName { get; set; }
- [CellIndex(7)]
- public string PCode { get; set; }
- [CellIndex(8)]
- public string HvacConnector { get; set; }
- [CellIndex(9)]
- public string PipeConnector { get; set; }
- }
- /// <summary>
- /// 参考-管网与相关设备
- /// </summary>
- [SheetInfo(SheetName = "参考-管网及相关设备", RowStartIndex = 3)]
- public class DCR_SystemReferEquip
- {
- [CellIndex(3)]
- public string SystemName { get; set; }
- [CellIndex(4)]
- public string ReferEquipName { get; set; }
- private List<string> m_Equips;
- public List<string> Equips
- {
- get
- {
- if (m_Equips == null)
- m_Equips = ConverToList(ReferEquipName);
- return m_Equips;
- }
- }
- public List<string> ConverToList(string str)
- {
- var list = new List<string>();
- if (str.IsNotNullEmpty())
- {
- Regex regex = new Regex(@"^[A-Z]{4}");
- list = str.Split(new[] { ',', ',' })
- .Where(t => Regex.IsMatch(t, $"{RegexConstPattern.IsEquip}"))
- .Select(tt => regex.Match(tt).Value).ToList();
- }
- return list;
- }
- }
- /// <summary>
- /// 设备关联的系统
- /// </summary>
- public class DCR_EquipReferSystem
- {
- /// <summary>
- /// 设备名称
- /// </summary>
- public string EquipName { get; set; }
- /// <summary>
- /// 系统名称
- /// </summary>
- public List<string> Systems { get; set; }
- }
- }
|