using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TProduct.WinFrmUI.Data4Owner { public class OpenDtoHelper { public string Export() { SaveFileDialog dlg = new SaveFileDialog(); dlg.Title = "TProduct信息"; dlg.FileName = DateTime.Now.ToString("yyyy-MM-dd HH") + ".bin"; dlg.Filter = "bin文件 (*.bin)|*.bin"; if (dlg.ShowDialog() != DialogResult.OK) return null; var filePath = dlg.FileName; TProduct.OpenDto.DsFullPacking4Owner fullInfo = new TProduct.OpenDto.DsFullPacking4Owner(); var allStation = new BLL.StationBase().GetAll(); var allLoginUser = new BLL.LoginUser().GetAll(); var allSereis = new BLL.ProductSeries().GetAll(); var allManufacturer = new BLL.ManufacturerBase().GetAll(); var allWorkBench = new BLL.WorkBenchBase().GetAll(); var allPumps = new BLL.ProductPump().GetExPartAll(); #region 泵站和泵 List allStation_dto = new List(); foreach (var station in allStation) { var dto_station = TProduct.AutoMapperHelper.GetSingle(station); dto_station.CreateUserName = (from x in allLoginUser where x.ID == station.CreateUserID select x.RealName).FirstOrDefault(); dto_station.UpdateUserName = (from x in allLoginUser where x.ID == station.UpdateUserID select x.RealName).FirstOrDefault(); var allPump = from x in allPumps where x.StationID == station.ID select x; if (allPump == null || allPump.Count() == 0) { allStation_dto.Add(dto_station); continue; } dto_station.Pumps = new List(); foreach (var pump in allPump) { TProduct.OpenDto.ProductPump pump_dto = new OpenDto.ProductPump(); #region 泵信息 pump_dto.ID = pump.ID; pump_dto.CreateUserName = (from x in allLoginUser where x.ID == pump.CreateUserID select x.RealName).FirstOrDefault(); pump_dto.CreateTime = pump.CreateTime; pump_dto.UpdateUserName = (from x in allLoginUser where x.ID == pump.UpdateUserID select x.RealName).FirstOrDefault(); pump_dto.UpdateTime = pump.UpdateTime; pump_dto.Code = pump.Code; pump_dto.Name = pump.Name; pump_dto.SeriesName = (from x in allSereis where x.ID == pump.SeriesID select x.Name).FirstOrDefault(); if (!string.IsNullOrEmpty(pump.RatedParas)) { var ratedParas = Model.RatedParas4Pump.ToModel(pump.RatedParas); pump_dto.RatedParas = new OpenDto.RatedParas4Pump(); pump_dto.RatedParas.Q = ratedParas.Q; pump_dto.RatedParas.H = ratedParas.H; pump_dto.RatedParas.P = ratedParas.P; pump_dto.RatedParas.E = ratedParas.E; pump_dto.RatedParas.NPSHr = ratedParas.NPSHr; pump_dto.RatedParas.IsFrequency = ratedParas.IsFrequency; pump_dto.RatedParas.IsSxp = ratedParas.IsSxp; pump_dto.RatedParas.StageNumber = ratedParas.StageNumber; pump_dto.RatedParas.OutletDia = ratedParas.OutletDia; pump_dto.RatedParas.InletDia = ratedParas.InletDia; pump_dto.RatedParas.NpshGaoChaZd = ratedParas.NpshGaoChaZd; pump_dto.RatedParas.IsInletPress = ratedParas.IsInletPress; pump_dto.RatedParas.CurrentType = ratedParas.CurrentType.ToString(); pump_dto.RatedParas.Voltage = ratedParas.Voltage; pump_dto.RatedParas.CurrentI = ratedParas.CurrentI; pump_dto.RatedParas.MaxQ = ratedParas.MaxQ; pump_dto.RatedParas.MaxH = ratedParas.MaxH; } pump_dto.SortCode = pump.SortCode; pump_dto.Ratedn = pump.Ratedn; pump_dto.D2 = pump.D2; pump_dto.PosiAngle = pump.PosiAngle; pump_dto.CurveFitTypeQH = pump.CurveFitTypeQH; pump_dto.CurveFitTypeQE = pump.CurveFitTypeQE; pump_dto.CurveFitTypeQP = pump.CurveFitTypeQP; pump_dto.PartID = pump.PartID; pump_dto.PartCode = pump.PartCode; pump_dto.PartName = pump.PartName; pump_dto.LastTestUserName = (from x in allLoginUser where x.ID == pump.LastTestUserID select x.RealName).FirstOrDefault(); pump_dto.LastTestTime = pump.LastTestTime; pump_dto.ManufacturerName = (from x in allManufacturer where x.ID == pump.ManufacturerID select x.FullName).FirstOrDefault(); pump_dto.ManufactureTime = pump.ManufactureTime; #endregion if (pump.MotorMainID.HasValue && pump.MotorMainID > 0) { var motor = new BLL.ProductMotor().GetExByProductID(pump.MotorMainID.Value); if (motor != null) { pump_dto.Motor = new OpenDto.ProductMotor(); #region 电机信息 pump_dto.Motor.ID = motor.ID; pump_dto.Motor.CreateUserName = (from x in allLoginUser where x.ID == motor.CreateUserID select x.RealName).FirstOrDefault(); pump_dto.Motor.CreateTime = motor.CreateTime; pump_dto.Motor.UpdateUserName = (from x in allLoginUser where x.ID == motor.UpdateUserID select x.RealName).FirstOrDefault(); pump_dto.Motor.UpdateTime = motor.UpdateTime; pump_dto.Motor.Code = motor.Code; pump_dto.Motor.Name = motor.Name; pump_dto.Motor.SeriesName = (from x in allSereis where x.ID == motor.SeriesID select x.Name).FirstOrDefault(); if (!string.IsNullOrEmpty(motor.RatedParas)) { var ratedParas = Model.RatedParas4Motor.ToModel(motor.RatedParas); pump_dto.Motor.IsFrequency = ratedParas.IsFrequency; pump_dto.Motor.E_PLC = ratedParas.E_PLC; pump_dto.Motor.E_Self = ratedParas.E_Self; pump_dto.Motor.CurrentType = ratedParas.CurrentType.ToString(); } #endregion } } dto_station.Pumps.Add(pump_dto); } allStation_dto.Add(dto_station); } fullInfo.Stations = allStation_dto; #endregion #region 测试台 fullInfo.Benchs = new List(); foreach (var bench in allWorkBench) { if (bench.ProductType != Model.eProductType.Pump) continue; OpenDto.WorkBenchBase dto_bench = new OpenDto.WorkBenchBase(); dto_bench.ID = bench.ID; dto_bench.CreateUserName = (from x in allLoginUser where x.ID == bench.CreateUserID select x.RealName).FirstOrDefault(); //bench.CreateUserID; dto_bench.CreateTime = bench.CreateTime; dto_bench.UpdateUserName = (from x in allLoginUser where x.ID == bench.UpdateUserID select x.RealName).FirstOrDefault(); //bench.UpdateUserID; dto_bench.UpdateTime = bench.UpdateTime; dto_bench.Code = bench.Code; dto_bench.Name = bench.Name; dto_bench.LastUseTime = bench.LastUseTime; dto_bench.LastUseUserID = bench.LastUseUserID; dto_bench.UseStatus = bench.UseStatus.ToString(); dto_bench.PipeIndex = bench.PipeIndex; dto_bench.PipeParas = bench.PipeParas; dto_bench.LinkType = bench.LinkType.ToString(); //dto_bench.TestMethod = bench.TestMethod; //dto_bench.TestSetting = bench.TestSetting; dto_bench.Tag = bench.Tag; dto_bench.LinkTag = bench.LinkTag; dto_bench.SortCode = bench.SortCode; if (bench.LinkInfo != null) { dto_bench.ReceiveWaitTime = bench.LinkInfo.ReceiveWaitTime; dto_bench.PollTime = bench.LinkInfo.PollTime; } var test_setting = new Model.WorkBenchSetting4Pump(bench.TestSetting); dto_bench.NpshCriterion = test_setting.NpshCriterion; dto_bench.IsTemperatureTrn = test_setting.IsTemperatureTrn; dto_bench.Elevation = test_setting.Elevation; dto_bench.AtmosphericPressure = test_setting.AtmosphericPressure; dto_bench.IsAutoTestAble = test_setting.IsAutoTestAble; dto_bench.IsOperateValveDegree = test_setting.IsOperateValveDegree; dto_bench.IsInitialElectricalAble = test_setting.IsInitialElectricalAble; var method = new Model.WorkBenchMethod4Pump(bench.TestMethod); dto_bench.TestMethodPower = method.Power == null ? "" : method.Power.ToString(); dto_bench.TestMethodPress = method.Press == null ? "" : method.Press.ToString(); dto_bench.TestMethodTorque = method.Torque == null ? "" : method.Torque.ToString(); dto_bench.TestMethodNpsh = method.Npsh == null ? "" : method.Npsh.ToString(); dto_bench.InletIsUseWaterLevel = method.InletIsUseWaterLevel; // var allMps = new BLL.WorkBenchMonitorPoint().GetByBenchID(bench.ID); dto_bench.Points = new List(); foreach (var mp in allMps) { var mp_dto = new TProduct.OpenDto.MonitorPointBase(); mp_dto.ID = mp.ID; mp_dto.Code = mp.Code; mp_dto.Name = mp.Name; mp_dto.MonitorType = (OpenDto.eMonitorType)(int)mp.MonitorType; mp_dto.Property = mp.Property; mp_dto.PipeDia = mp.PipeDia; mp_dto.Elevation = mp.Elevation; mp_dto.SortCode = mp.SortCode; if (mp.ValueCoeffParas != null) { mp_dto.ValueCoeffParas = new OpenDto.ValueCoeffParas(); mp_dto.ValueCoeffParas.Method = mp.ValueCoeffParas.Method; mp_dto.ValueCoeffParas.Multiply1 = mp.ValueCoeffParas.Multiply1; mp_dto.ValueCoeffParas.Add1 = mp.ValueCoeffParas.Add1; mp_dto.ValueCoeffParas.InterpolationType = mp.ValueCoeffParas.InterpolationType; mp_dto.ValueCoeffParas.RealValues = mp.ValueCoeffParas.RealValues; mp_dto.ValueCoeffParas.Multiplys = mp.ValueCoeffParas.Multiplys; mp_dto.ValueCoeffParas.Adds = mp.ValueCoeffParas.Adds; } mp_dto.SumCalcCoeff = mp.SumCalcCoeff; //mp_dto.AnalogParas = mp.AnalogParas; //mp_dto.DigitalParas = mp.DigitalParas; dto_bench.Points.Add(mp_dto); } fullInfo.Benchs.Add(dto_bench); } #endregion #region 测试数据 List allTestItem_dto = new List(); var allTestItem = new BLL.TestProjectItemView().GetAll(); foreach (var featTest in allTestItem) { if (featTest.TestType != Model.eTestType.FeatTest) continue; var testItem_dto = new TProduct.OpenDto.TestProjectItem(); testItem_dto.SeriesID = featTest.SeriesID; testItem_dto.ProductID = featTest.ProductID; testItem_dto.PartID = featTest.PartID; testItem_dto.ProjectUseStatus = featTest.ProjectUseStatus.ToString(); var pump = allPumps.Find(x=>x.PartID == featTest.PartID); if(pump == null) { continue; } testItem_dto.ProjectCode = featTest.ProjectCode; testItem_dto.ProjectName = featTest.ProjectName; testItem_dto.IsFixed = featTest.IsFixed; testItem_dto.ProjectJudgeResult = featTest.ProjectJudgeResult.ToString(); testItem_dto.ReportFileNO = featTest.ReportFileNO; testItem_dto.ItemParas = new OpenDto.TestProjectItemParas(); if (featTest.ProjectParas != null) { testItem_dto.ItemParas.Elevation = featTest.ProjectParas.Elevation; testItem_dto.ItemParas.AtmosphericPressure = featTest.ProjectParas.AtmosphericPressure; testItem_dto.ItemParas.IsTemperatureTrn = featTest.ProjectParas.IsTemperatureTrn; testItem_dto.ItemParas.JzWenDu = featTest.ProjectParas.JzWenDu; testItem_dto.ItemParas.InspectionNumber = featTest.ProjectParas.InspectionNumber; testItem_dto.ItemParas.TestNature = featTest.ProjectParas.TestNature.ToString(); testItem_dto.ItemParas.SpeedSimuMethod = featTest.ProjectParas.SpeedSimuMethod == null ? "" : featTest.ProjectParas.SpeedSimuMethod.ToString(); } //testItem_dto.AlarmSetting = featTest.AlarmSetting; testItem_dto.ProjectID = featTest.ProjectID; testItem_dto.TestStandardID = featTest.TestStandardID; testItem_dto.TestGradeID = featTest.TestGradeID; testItem_dto.BenchID = featTest.BenchID; testItem_dto.ItemID = featTest.ItemID; testItem_dto.ItemCode = featTest.ItemCode; testItem_dto.ItemName = featTest.ItemName; testItem_dto.ItemUseStatus = featTest.ItemUseStatus.ToString(); testItem_dto.ItemCreateUserName = (from x in allLoginUser where x.ID == featTest.ItemCreateUserID select x.RealName).FirstOrDefault(); testItem_dto.ItemCreateTime = featTest.ItemCreateTime; testItem_dto.LastTestUserName = (from x in allLoginUser where x.ID == featTest.LastTestUserID select x.RealName).FirstOrDefault(); testItem_dto.TestStartTime = featTest.TestStartTime; testItem_dto.TestEndTime = featTest.TestEndTime; testItem_dto.ItemLogContent = featTest.ItemLogContent; testItem_dto.ItemJudgeResult = featTest.ItemJudgeResult.ToString(); if (featTest.ItemParas != null) { testItem_dto.ItemParas.NpshJudgeThreshold = featTest.ItemParas.NpshJudgeThreshold; testItem_dto.ItemParas.IsEntendZeroH = featTest.ItemParas.IsEntendZeroH; testItem_dto.ItemParas.FlowInZeroH = featTest.ItemParas.FlowInZeroH; } testItem_dto.CoordinateParas = featTest.CoordinateParas; //testItem_dto.PointNumber = featTest.PointNumber; //testItem_dto.AutoTestInfo = featTest.AutoTestInfo; //testItem_dto.DurabilityTestInfo = featTest.DurabilityTestInfo; if (featTest.InstrumentInfo != null) { testItem_dto.ItemParas.OutletPressureMeterID = featTest.InstrumentInfo.OutletPressureMeterID; testItem_dto.ItemParas.OutletPressureMeterElevation = featTest.InstrumentInfo.OutletPressureMeterElevation; testItem_dto.ItemParas.OutletPressureMeterPipeDia = featTest.InstrumentInfo.OutletPressureMeterPipeDia; testItem_dto.ItemParas.InletPressureMeterID = featTest.InstrumentInfo.OutletPressureMeterID; testItem_dto.ItemParas.InletPressureMeterElevation = featTest.InstrumentInfo.InletPressureMeterElevation; testItem_dto.ItemParas.InletPressureMeterPipeDia = featTest.InstrumentInfo.InletPressureMeterPipeDia; testItem_dto.ItemParas.FlowMeterRangeMin = featTest.InstrumentInfo.FlowMeterRangeMin; testItem_dto.ItemParas.FlowMeterRangeMax = featTest.InstrumentInfo.FlowMeterRangeMax; } if (featTest.ElectricInfo != null) { testItem_dto.ItemParas.Ct = featTest.ElectricInfo.Ct; testItem_dto.ItemParas.Pt = featTest.ElectricInfo.Pt; } testItem_dto.ItemTestResult = featTest.ItemTestResult; testItem_dto.ItemTestTarget = featTest.ItemTestTarget; var wrkBench = allWorkBench.Find(x => x.ID == featTest.BenchID); if (wrkBench == null) { continue; } var allMps = new BLL.WorkBenchMonitorPoint().GetByBenchID(featTest.BenchID); if (allMps == null || allMps.Count == 0) continue; // if (featTest.PointNumber > 0) { var records = new BLL.PumpFeatTestRecord().GetByTestItem(featTest); if (records != null && records.Count>0) { testItem_dto.PointNumber = records.Count(); testItem_dto.Records = new List(); foreach (var record in records) { var record_dt0 = new OpenDto.PumpFeatTestRecord(); record_dt0.ID = record.ID; record_dt0.CorrectPtQ = record.CorrectPtQ; record_dt0.CorrectPtH = record.CorrectPtH; record_dt0.CorrectPtE = record.CorrectPtE; record_dt0.CorrectPtP = record.CorrectPtP; record_dt0.TestPtQ = record.TestPtQ; record_dt0.TestPtH = record.TestPtH; record_dt0.TestPtE = record.CorrectPtE; record_dt0.TestPtP = record.TestPtP; record_dt0.Speed = record.Speed; var vvvMonitorRecordList = new Model.MonitorRecord4DsList(record.MonitorRecords); record_dt0.Records = new List(); foreach (var mp in allMps) { var mp_dto = new TProduct.OpenDto.MonitorPointValue(); mp_dto.ID = mp.ID; mp_dto.Code = mp.Code; mp_dto.Name = mp.Name; mp_dto.MonitorType = (OpenDto.eMonitorType)(int)mp.MonitorType; mp_dto.Property = mp.Property; mp_dto.PipeDia = mp.PipeDia; mp_dto.Elevation = mp.Elevation; mp_dto.SortCode = mp.SortCode; if (mp.ValueCoeffParas != null) { mp_dto.ValueCoeffParas = new OpenDto.ValueCoeffParas(); mp_dto.ValueCoeffParas.Method = mp.ValueCoeffParas.Method; mp_dto.ValueCoeffParas.Multiply1 = mp.ValueCoeffParas.Multiply1; mp_dto.ValueCoeffParas.Add1 = mp.ValueCoeffParas.Add1; mp_dto.ValueCoeffParas.InterpolationType = mp.ValueCoeffParas.InterpolationType; mp_dto.ValueCoeffParas.RealValues = mp.ValueCoeffParas.RealValues; mp_dto.ValueCoeffParas.Multiplys = mp.ValueCoeffParas.Multiplys; mp_dto.ValueCoeffParas.Adds = mp.ValueCoeffParas.Adds; } mp_dto.SumCalcCoeff = mp.SumCalcCoeff; //mp_dto.AnalogParas = mp.AnalogParas; //mp_dto.DigitalParas = mp.DigitalParas; var va = vvvMonitorRecordList.Find(x => x.ID == mp.ID); if (va != null) { mp_dto.Value = va.Value; } record_dt0.Records.Add(mp_dto); } testItem_dto.Records.Add(record_dt0); } } else { } } allTestItem_dto.Add(testItem_dto); } fullInfo.TestItems = allTestItem_dto; #endregion fullInfo.Version = "V1.0"; var content = fullInfo.ToDsString(); var enCode = Encoding.GetEncoding("GB2312"); if (enCode == null) return null; FileStream fs = new FileStream(filePath, FileMode.Create); //获得字节数组 byte[] data = enCode.GetBytes(content); //开始写入 fs.Write(data, 0, data.Length); //清空缓冲区、关闭流 fs.Flush(); fs.Close(); return null; } } }