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; } } }