CreatLevelUtil.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using CollaborativePlatformMain.DFEntity.MessageSubUtil;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Threading.Tasks;
  9. namespace CollaborativePlatformMain.Util
  10. {
  11. /// <summary>
  12. ///
  13. /// <para>文件名(File Name): CreatLevelUtil.cs</para>
  14. ///
  15. /// <para>描述(Description): 创建标高工具类</para>
  16. ///
  17. /// <para>数据表(Tables): nothing</para>
  18. ///
  19. /// <para>作者(Author): Ou Rui Song</para>
  20. ///
  21. /// <para>日期(Create Date): 2024年4月28日15:50:23</para>
  22. ///
  23. /// 修改记录(Revision History):
  24. /// R1:
  25. /// 修改作者:
  26. /// 修改日期:
  27. /// 修改理由:
  28. ///
  29. /// </summary>
  30. public class CreatLevelUtil
  31. {
  32. /// <summary>
  33. /// 添加标高楼层
  34. /// </summary>
  35. /// <param name="levelTableEntities">标高数据</param>
  36. /// <param name="levelHight">标高高度</param>
  37. /// <param name="levelNum">标高个数</param>
  38. /// <param name="updw">地上、地下</param>
  39. public static void AddLevelFool(ref ObservableCollection<LevelTableEntity> levelTableEntities, string levelHight, string levelNum, string updw)
  40. {
  41. //添加的层高
  42. double levelh = Convert.ToInt32(levelHight);
  43. levelTableEntities = new ObservableCollection<LevelTableEntity>(levelTableEntities.OrderBy(x => x.FloorHeight));
  44. if (levelTableEntities.Count > 1)
  45. {
  46. levelTableEntities.First().FloorHeight = levelh;
  47. }
  48. levelTableEntities = new ObservableCollection<LevelTableEntity>(levelTableEntities.OrderBy(x => x.StructuralElevation));
  49. //个数
  50. int num = int.Parse(levelNum);
  51. Regex reg = new Regex(@"^(\-|\+)?\d+(\.\d+)?$");
  52. if (updw.Equals("地上"))
  53. {
  54. LevelTableEntity max = levelTableEntities.Last();
  55. for (int i = 0; i < num; i++)
  56. {
  57. string newNmae = "";
  58. if (reg.IsMatch(max.LevelNmae))
  59. {
  60. newNmae = (double.Parse(max.LevelNmae) + (i + 1)) + "";
  61. }
  62. else
  63. {
  64. newNmae = max.LevelNmae;
  65. }
  66. double structuralElevation = max.FloorHeight / 1000 + max.StructuralElevation;
  67. double sum = Math.Round(structuralElevation + levelh / 1000 * (i), 2);
  68. LevelTableEntity levelTableCreationEntity = new LevelTableEntity(Guid.NewGuid().ToString(), newNmae, sum, levelh);
  69. if (i == num - 1)
  70. {
  71. levelTableCreationEntity.FloorHeight = 0;
  72. }
  73. levelTableEntities.Insert(levelTableEntities.Count - 1, levelTableCreationEntity);
  74. }
  75. }
  76. else
  77. {
  78. LevelTableEntity min = levelTableEntities.FirstOrDefault();
  79. for (int i = 0; i < num; i++)
  80. {
  81. string newNmae = "";
  82. if (reg.IsMatch(min.LevelNmae))
  83. {
  84. double nundex = double.Parse(min.LevelNmae);
  85. if (nundex == 1)
  86. {
  87. nundex = 0;
  88. }
  89. newNmae = (nundex - (i + 1)) + "";
  90. }
  91. else
  92. {
  93. newNmae = min.LevelNmae;
  94. }
  95. double sum = Math.Round(min.StructuralElevation - (levelh * (i + 1)) / 1000, 2);
  96. LevelTableEntity levelTableCreationEntity = new LevelTableEntity(Guid.NewGuid().ToString(), newNmae, sum, levelh);
  97. levelTableEntities.Insert(0, levelTableCreationEntity);
  98. }
  99. }
  100. levelTableEntities = new ObservableCollection<LevelTableEntity>(levelTableEntities.OrderByDescending(x => x.StructuralElevation));
  101. }
  102. }
  103. }