using CollaborativePlatformMain.DFEntity.MessageSubUtil;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace CollaborativePlatformMain.Util
{
///
///
/// 文件名(File Name): CreatLevelUtil.cs
///
/// 描述(Description): 创建标高工具类
///
/// 数据表(Tables): nothing
///
/// 作者(Author): Ou Rui Song
///
/// 日期(Create Date): 2024年4月28日15:50:23
///
/// 修改记录(Revision History):
/// R1:
/// 修改作者:
/// 修改日期:
/// 修改理由:
///
///
public class CreatLevelUtil
{
///
/// 添加标高楼层
///
/// 标高数据
/// 标高高度
/// 标高个数
/// 地上、地下
public static void AddLevelFool(ref ObservableCollection levelTableEntities, string levelHight, string levelNum, string updw)
{
//添加的层高
double levelh = Convert.ToInt32(levelHight);
levelTableEntities = new ObservableCollection(levelTableEntities.OrderBy(x => x.FloorHeight));
if (levelTableEntities.Count > 1)
{
levelTableEntities.First().FloorHeight = levelh;
}
levelTableEntities = new ObservableCollection(levelTableEntities.OrderBy(x => x.StructuralElevation));
//个数
int num = int.Parse(levelNum);
Regex reg = new Regex(@"^(\-|\+)?\d+(\.\d+)?$");
if (updw.Equals("地上"))
{
LevelTableEntity max = levelTableEntities.Last();
for (int i = 0; i < num; i++)
{
string newNmae = "";
if (reg.IsMatch(max.LevelNmae))
{
newNmae = (double.Parse(max.LevelNmae) + (i + 1)) + "";
}
else
{
newNmae = max.LevelNmae;
}
double structuralElevation = max.FloorHeight / 1000 + max.StructuralElevation;
double sum = Math.Round(structuralElevation + levelh / 1000 * (i), 2);
LevelTableEntity levelTableCreationEntity = new LevelTableEntity(Guid.NewGuid().ToString(), newNmae, sum, levelh);
if (i == num - 1)
{
levelTableCreationEntity.FloorHeight = 0;
}
levelTableEntities.Insert(levelTableEntities.Count - 1, levelTableCreationEntity);
}
}
else
{
LevelTableEntity min = levelTableEntities.FirstOrDefault();
for (int i = 0; i < num; i++)
{
string newNmae = "";
if (reg.IsMatch(min.LevelNmae))
{
double nundex = double.Parse(min.LevelNmae);
if (nundex == 1)
{
nundex = 0;
}
newNmae = (nundex - (i + 1)) + "";
}
else
{
newNmae = min.LevelNmae;
}
double sum = Math.Round(min.StructuralElevation - (levelh * (i + 1)) / 1000, 2);
LevelTableEntity levelTableCreationEntity = new LevelTableEntity(Guid.NewGuid().ToString(), newNmae, sum, levelh);
levelTableEntities.Insert(0, levelTableCreationEntity);
}
}
levelTableEntities = new ObservableCollection(levelTableEntities.OrderByDescending(x => x.StructuralElevation));
}
}
}