155 lines
5.2 KiB
C#
155 lines
5.2 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
|
||
using CustomOpenItemAddins;
|
||
|
||
namespace CustomOpenAddins.Models
|
||
{
|
||
public class Measurement
|
||
{
|
||
/// <summary>
|
||
/// 备注说明
|
||
/// </summary>
|
||
public string Description { get; set; } = string.Empty;
|
||
|
||
public Measurement(MeasurementUnit measurementUnit, DetailItem detail)
|
||
{
|
||
Detail = detail;
|
||
Unit = measurementUnit;
|
||
//根据围岩类型设置支护类型
|
||
switch (Detail.SubItem.Primary.Table.TypeOfSurrounding)
|
||
{
|
||
case TypeOfSurrounding.LevelTwo:
|
||
Proofs = new HashSet<Proof>(1) { new Proof("Ⅱ级限排型") };
|
||
break;
|
||
case TypeOfSurrounding.LevelThree:
|
||
Proofs = new HashSet<Proof>(9)
|
||
{
|
||
new Proof("Ⅲ级限排型"),
|
||
new Proof("Ⅲ级防水型"),
|
||
new Proof("Ⅲ级抗水压Ⅰ型"),
|
||
new Proof("Ⅲ级抗水压Ⅱ型"),
|
||
new Proof("Ⅲ级抗水压Ⅲ型"),
|
||
new Proof("Ⅲ级导洞1"),
|
||
new Proof("Ⅲ级导洞2"),
|
||
new Proof("Ⅲ级盾构拆解段"),
|
||
new Proof("Ⅲ级"),
|
||
};
|
||
break;
|
||
case TypeOfSurrounding.LevelFour:
|
||
Proofs = new HashSet<Proof>(6)
|
||
{
|
||
new Proof("Ⅳ a级限排型"),
|
||
new Proof("Ⅳ b级限排型"),
|
||
new Proof("Ⅳ a级防水型"),
|
||
new Proof("Ⅳ级平移横通道防水型"),
|
||
new Proof("Ⅳ级盾构拆解段"),
|
||
new Proof("Ⅳ级"),
|
||
};
|
||
break;
|
||
case TypeOfSurrounding.LevelFive:
|
||
Proofs = new HashSet<Proof>(7)
|
||
{
|
||
new Proof("Ⅴ a级限排型"),
|
||
new Proof("Ⅴ b级限排型"),
|
||
new Proof("Ⅴ a级防水型"),
|
||
new Proof("Ⅴ a级防水型"),
|
||
new Proof("Ⅴ级导洞1"),
|
||
new Proof("Ⅴ级导洞2"),
|
||
new Proof("Ⅴ级"),
|
||
};
|
||
break;
|
||
case TypeOfSurrounding.LevelSix:
|
||
Proofs = new HashSet<Proof>(4)
|
||
{
|
||
new Proof("Ⅵ级防水型"),
|
||
new Proof("Ⅵ级导洞1"),
|
||
new Proof("Ⅵ级导洞2"),
|
||
new Proof("Ⅵ级"),
|
||
};
|
||
break;
|
||
}
|
||
}
|
||
|
||
public override string ToString()
|
||
{
|
||
StringBuilder sb = new StringBuilder($"计量方式:{Mode.GetDescription()};计量单位{Unit.GetDescription()};");
|
||
foreach (var item in Proofs)
|
||
{
|
||
sb.AppendLine($"{item}");
|
||
}
|
||
return sb.ToString();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 父级细类
|
||
/// </summary>
|
||
public DetailItem Detail { get; }
|
||
|
||
/// <summary>
|
||
/// 计量方式
|
||
/// </summary>
|
||
public MeasurementMode Mode
|
||
{
|
||
get
|
||
{
|
||
switch (Unit)
|
||
{
|
||
case MeasurementUnit.Count:
|
||
case MeasurementUnit.Set:
|
||
case MeasurementUnit.Stick:
|
||
case MeasurementUnit.Hole:
|
||
return MeasurementMode.Count;
|
||
case MeasurementUnit.Meter:
|
||
case MeasurementUnit.Millimeter:
|
||
case MeasurementUnit.Centimeter:
|
||
return MeasurementMode.Length;
|
||
case MeasurementUnit.SquareMeter:
|
||
return MeasurementMode.Area;
|
||
case MeasurementUnit.CubicMeter:
|
||
return MeasurementMode.Volume;
|
||
default:
|
||
return MeasurementMode.Unknow;
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 计算规则
|
||
/// </summary>
|
||
public string CalculationRule { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 计量单位
|
||
/// </summary>
|
||
public MeasurementUnit Unit { get; }
|
||
|
||
/// <summary>
|
||
/// 合计计算结果
|
||
/// </summary>
|
||
public object Total { get { return Proofs.Sum(x => x.Amount); } }
|
||
|
||
/// <summary>
|
||
/// 防水类型
|
||
/// </summary>
|
||
public HashSet<Proof> Proofs { get; set; }
|
||
|
||
/// <summary>
|
||
/// 设置值
|
||
/// </summary>
|
||
/// <param name="index"></param>
|
||
/// <param name="value"></param>
|
||
/// <returns></returns>
|
||
public Measurement SetProof(int index, double value)
|
||
{
|
||
var proof = Proofs.ElementAt(index);
|
||
proof.Measurement = this;
|
||
proof.Amount = value;
|
||
return this;
|
||
}
|
||
}
|
||
}
|
||
|