using IStation.OpenDto;
using System.Collections.Generic;
using System.Linq;
namespace IStation.WinFrmUI.Basic
{
///
///
///
public class ConvertHelper
{
public static bool ConvertTProduct(FullPacking packing)
{
if (packing == null)
return false;
if (packing.Stations == null || !packing.Stations.Any())
return false;
var testItemGroup = packing.TestItems?.GroupBy(x => x.PartID);
var stations = new List();
var products = new List();
var curves = new List();
var curveMappings = new List();
foreach (var itemStaton in packing.Stations)
{
var station = new Model.Station();
station.ID = itemStaton.ID;
station.Name = itemStaton.Name;
station.TagName = itemStaton.Tag;
station.SortCode = itemStaton.SortCode;
station.Description = itemStaton.Note;
stations.Add(station);
if (itemStaton.Pumps == null || !itemStaton.Pumps.Any())
continue;
foreach (var itemPump in itemStaton.Pumps)
{
Model.Equipment enginePump, pump, motor;
//添加机泵组
enginePump = new Model.Equipment()
{
ID = SnowflakeIdHelper.NextId(),
BelongType = IStation.ObjectType.Station,
BelongID = station.ID,
Catalog = IStation.Equipment.EnginePump,
Supplier = itemPump.ManufacturerName,
NO = itemPump.PartCode,
Name = itemPump.PartName + "-机组",
ModelType = itemPump.Code,
Specification = itemPump.SeriesName,
TagName = itemPump.Tag,
UseStatus = Model.eProductStatus.Enable,
SortCode = itemPump.SortCode,
Description = itemPump.ProductParas
};
{
var ratedParas = new Model.EnginePump();
enginePump.RatedParas = ratedParas.ToJson();
}
products.Add(enginePump);
//添加泵
pump = new Model.Equipment()
{
ID = itemPump.PartID,
BelongType = IStation.ObjectType.Station,
BelongID = station.ID,
Catalog = IStation.Equipment.Pump,
Supplier = itemPump.ManufacturerName,
ParentIds = new List() { enginePump.ID },
NO = itemPump.PartCode,
Name = itemPump.PartName,
ModelType = itemPump.Code,
Specification = itemPump.SeriesName,
TagName = itemPump.Tag,
UseStatus = Model.eProductStatus.Enable,
SortCode = 0,
Description = itemPump.ProductParas
};
if (itemPump.RatedParas != null)
{
var itemRatedParas = itemPump.RatedParas;
var ratedParas = new Model.Pump();
ratedParas.Qr = itemRatedParas.Q;
ratedParas.Hr = itemRatedParas.H;
ratedParas.Pr = itemRatedParas.P;
ratedParas.Er = itemRatedParas.E;
if (itemPump.Ratedn.HasValue)
ratedParas.Nr = itemPump.Ratedn.Value;
if (itemRatedParas.NPSHr.HasValue)
ratedParas.NPSHr = itemRatedParas.NPSHr.Value;
ratedParas.Oc = itemRatedParas.OutletDia;
ratedParas.Ic = itemRatedParas.InletDia;
//ratedParas.IOd
ratedParas.StNumr = itemRatedParas.StageNumber;
ratedParas.IsBp = itemRatedParas.IsFrequency;
ratedParas.IsSxp = itemRatedParas.IsSxp;
pump.RatedParas = ratedParas.ToJson();
}
products.Add(pump);
//添加电机
if (itemPump.Motor != null)
{
var itemMotor = itemPump.Motor;
motor = new Model.Equipment()
{
ID = itemMotor.PartID,
BelongType = IStation.ObjectType.Station,
BelongID = station.ID,
Catalog = IStation.Equipment.Motor,
Supplier = itemMotor.ManufacturerName,
ParentIds = new List() { enginePump.ID },
NO = itemMotor.PartCode,
Name = itemMotor.PartName,
ModelType = itemMotor.Code,
Specification = itemMotor.SeriesName,
TagName = itemMotor.Tag,
UseStatus = Model.eProductStatus.Enable,
SortCode = 0,
Description = itemMotor.ProductParas
};
products.Add(motor);
var ratedParas = new Model.Motor();
if (itemMotor.RatedPower.HasValue)
ratedParas.Pr = itemMotor.RatedPower.Value;
if (itemMotor.Ratedn.HasValue)
ratedParas.Nr = itemMotor.Ratedn.Value;
if (itemMotor.RatedI.HasValue)
ratedParas.Ir = itemMotor.RatedI.Value;
ratedParas.Er = itemMotor.E_Self;
motor.RatedParas = ratedParas.ToJson();
}
//添加测试曲线
if (testItemGroup == null || !testItemGroup.Any())
continue;
var testItems = testItemGroup.Where(x => x.Key == pump.ID).FirstOrDefault().ToList();
testItems = testItems?.Where(x => x.Records != null && x.Records.Any()).ToList();
if (testItems == null || !testItems.Any())
continue;
foreach (var testItem in testItems)
{
List qhPoints = new List(),
qePoints = new List(),
qpPoints = new List();
testItem.Records.ForEach(record =>
{
var qhPoint = new Model.CurvePoint()
{
X = record.CorrectPtQ,
Y = record.CorrectPtH
};
qhPoints.Add(qhPoint);
if (record.CorrectPtE.HasValue)
{
var qePoint = new Model.CurvePoint()
{
X = record.CorrectPtQ,
Y = record.CorrectPtE.Value
};
qePoints.Add(qePoint);
}
if (record.CorrectPtP.HasValue)
{
var qpPoint = new Model.CurvePoint()
{
X = record.CorrectPtQ,
Y = record.CorrectPtP.Value
};
qpPoints.Add(qpPoint);
}
});
var curve = new Model.PumpCurve();
curve.ID = SnowflakeIdHelper.NextId();
curve.CurveCode = $"[现场测试]{testItem.ItemName}";
curve.SourceFrom = Model.eCurveSourceFrom.现场测试;
curve.CreateMethod = Model.eCurveCreateMethod.中间格式导入;
//curve.PointInfo = new Model.FeatCurvePointGroup(qhPoints, qePoints, qpPoints);
curve.CurveInfo = new Model.FeatCurveExpressGroup();
var qhFitType = (Model.eCurveFitType)(int)itemPump.CurveFitTypeQH;
curve.CurveInfo.CurveQH = new Model.CurveExpress(qhPoints, qhFitType, true);
if (qePoints.Any())
{
var qeFitType = (Model.eCurveFitType)(int)itemPump.CurveFitTypeQE;
curve.CurveInfo.CurveQE = new Model.CurveExpress(qePoints, qeFitType, true);
}
if (qpPoints.Any())
{
var qpFitType = (Model.eCurveFitType)(int)itemPump.CurveFitTypeQP;
curve.CurveInfo.CurveQP = new Model.CurveExpress(qpPoints, qpFitType, true);
}
curve.ReliabilityStatus = Model.PumpCurve.eReliabilityStatus.Normal;
curve.CreateTime = testItem.ItemCreateTime;
curve.Description = testItem.ProjectUseStatus;
curves.Add(curve);
var curveMpping = new Model.PumpCurveMapping();
curveMpping.PumpID = pump.ID;
curveMpping.CurveID = curve.ID;
curveMpping.OtherName = $"[测试]{testItem.ItemName}";
curveMpping.IsWorking = false;
curveMpping.SortCode = 1;
curveMappings.Add(curveMpping);
}
};
}
var result_Station = new BLL.Station().Covers(stations);
var result_product = new BLL.Equipment().Covers(products);
var result_pumpCurve = new BLL.PumpCurve().Covers(curves);
var result_pumpMapping = new BLL.PumpCurveMapping().Covers(curveMappings);
return true;
}
}
}