using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using TProduct.Model; namespace TProduct.WinFrmUI.TPump { public partial class AddTest4FactoryMainPage : DocumentPage, ITestPump { private List _allFlowMeterList; private List _allPressMeterList; public AddTest4FactoryMainPage() { InitializeComponent(); this.PageTitle.Caption = "新建测试"; this.labelProductTip.Text = " "; this.selPumpSeriesCtrl.SetReadOnly(); this.selPumpSeriesCtrl.SetProductType(eProductType.Pump); btnResetAdd.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; checkEdit汽蚀测试.Checked = false; lblNpshInfo.Text = " "; layoutControlGroup汽蚀.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; this.simpleBtnOK.SetConfirmButtonColor(); this.IsShowWatingFrm = true; } private void AddTestDlg_Load(object sender, EventArgs e) { if (TProduct.UserSetting.Setting.Code.TestItemCodeAutoMethod == 1) { var count = new BLL.TestProjectItem().GetCountByDay(DateTime.Now); textEditTestCode.Text = string.Format("PJ-{0}-{1:000}", DateTime.Now.ToString("yyyyMMdd"), count + 1); } RefreshData(); this.imageComboCt.Properties.Items.Clear(); this.imageComboCt.Properties.Items.Add(new DevExpress.XtraEditors.Controls.ImageComboBoxItem("未知", 0, -1)); if (TProduct.UserSetting.Setting.PumpTest.CtList != null) { foreach (var ct in TProduct.UserSetting.Setting.PumpTest.CtList) { var content = string.Format("电流比{0} (电流{1}A)", ct, ct * 5); this.imageComboCt.Properties.Items.Add(new DevExpress.XtraEditors.Controls.ImageComboBoxItem(content, Convert.ToInt32(ct), -1)); } } this.imageComboCt.SelectedIndex = 0; //默认是否设置电压比 this.check根据电机电压计算PT.Checked = TProduct.CorpSetting.PumpTest. IsDefaultPt; this.testAutoTestDetailsCtrl1.SetBindingData(null); textEditName.Focus(); } private List _allSeries = null; private List _allWorkBenchBase = null; private List _allParts = null; private TProduct.Model.eProductType _productType = TProduct.Model.eProductType.Pump; public TProduct.Model.ProductSeries SelProductSeries { get; set; } public TProduct.Model.ProductMainExPump SelProductPump { get; set; } private TProduct.Model.PartBase _selPart = null; public TProduct.Model.PartBase SelPart { get => _selPart; } private TProduct.Model.WorkBenchBase _selWorkBench = null;//选择的测试台 public TProduct.Model.WorkBenchBase SelWorkBenchBase { get => _selWorkBench; set => _selWorkBench = value; } //电气参数 private bool _isInitialElectricalAble = false; public void RefreshData() { _allSeries = new BLL.ProductSeries().GetByProductType(_productType); if (_allSeries == null) { XtraMessageBox.Show("请添加产品系列!"); return; } _allWorkBenchBase = new BLL.WorkBenchBase().GetByProductType(_productType); if (_allWorkBenchBase == null) { XtraMessageBox.Show("请添加测试台!"); return; } _allFlowMeterList = new BLL.FlowMeter().GetAll(); if (_allFlowMeterList == null) { XtraMessageBox.Show("未设置流量计信息"); return; } flowMeterCombo.Properties.DataSource = _allFlowMeterList; if (_allFlowMeterList.Count > 0) { flowMeterCombo.EditValue = _allFlowMeterList[0].ID; } _allPressMeterList = new BLL.PressureMeter().GetAll(); if (_allPressMeterList == null) { XtraMessageBox.Show("未设置压力计信息"); return; } var pressMeters出口 = _allPressMeterList.Where(x => string.IsNullOrEmpty(x.Property) || x.Property == TProduct.Model.MonitorTypeProperty.出口); if (pressMeters出口.Count() > 0) { pressMeterCombo出口.Properties.DataSource = pressMeters出口; pressMeterCombo出口.EditValue = pressMeters出口.First().ID; } var pressMeters进口 = _allPressMeterList.Where(x => string.IsNullOrEmpty(x.Property) || x.Property == TProduct.Model.MonitorTypeProperty.进口); if (pressMeters进口.Count() > 0) { pressMeterCombo进口.Properties.DataSource = pressMeters进口; pressMeterCombo进口.EditValue = pressMeters进口.First().ID; } selectManufacturerCtrl.SetBindingData(0); selectSenderCtrl.SetBindingData(0); tabbedControlGroup1.SelectedTabPageIndex = 0; this.selPumpSeriesCtrl.SetBindingData(0); //if (ProductID > 0) //{ // this.selectProductCtrl.SetBindingData4Series(SeriesID, ProductID); //} this.imageComboTestStandard.Properties.Items.Clear(); TProduct.Common.TestStandardHelper.Instance.GetStandardList(TProduct.Model.eProductType.Pump, TProduct.Model.eTestType.FeatTest).ForEach(x => this.imageComboTestStandard.Properties.Items.Add(x.Name, x.ID, -1)); this.imageComboTestStandard.SelectedIndex = 0; } //是否修改了泵列表 public bool IsChangePumpList() { return selectProductCtrl.IsChangeList; } private void simpleBtnOK_Click(object sender, EventArgs e) { this.dxErrorProvider1.ClearErrors(); //CloseSelf.Invoke(); //return; if (_selWorkBench == null) { XtraMessageBox.Show("请选择测试台!"); return; } if (checkEdit任意产品.Checked) { } else { if (SelProductPump == null) { XtraMessageBox.Show("请选择测试型号!"); return; } } if (imageComboTestStandard.SelectedIndex < 0) { XtraMessageBox.Show("请选择测试标准!"); return; } var standard_id = this.imageComboTestStandard.EditValue.ToString(); if (imageComboTestGrade.SelectedIndex < 0) { XtraMessageBox.Show("请选择测试标准!"); return; } if (!SetPartInfo()) { return; } #region 仪表信息 long press_meter_id出口 = 0; if (pressMeterCombo出口.EditValue != null) { press_meter_id出口 = Convert.ToInt64(pressMeterCombo出口.EditValue); } else { XtraMessageBox.Show("请选择出口压力计!"); return; } long press_meter_id进口 = 0; if (pressMeterCombo进口.EditValue != null) {//可能没有 press_meter_id进口 = Convert.ToInt64(pressMeterCombo进口.EditValue); } long flow_meter_id = 0; if (flowMeterCombo.EditValue != null) { flow_meter_id = Convert.ToInt64(flowMeterCombo.EditValue); } else { XtraMessageBox.Show("请选择出口流量计!"); return; } #endregion var grade_id = this.imageComboTestGrade.EditValue.ToString(); var user_id = TProduct.WinFrmUI.GlobeParas.CurrentLoginUser.ID; var testProjectBase = new TProduct.Model.TestProjectBase() { ProductType = TProduct.Model.eProductType.Pump, CreateTime = DateTime.Now, CreateUserID = user_id, IsFixed = false, UseStatus = TProduct.Model.eUseStatus.Enable, Name = textEditName.Text, Code = textEditTestCode.Text, JudgeResult = TProduct.Model.eTestJudgeResult.未判断 }; if (!checkEdit任意产品.Checked) { testProjectBase.SeriesID = this.SelProductSeries == null ? 0 : this.SelProductSeries.ID; testProjectBase.ProductID = this.SelProductPump == null ? 0 : this.SelProductPump.ID; testProjectBase.PartID = this._selPart == null ? 0 : this._selPart.ID; } testProjectBase.ProjectParas = new TProduct.Model.TestProjectParas() { JzWenDu = Convert.ToDouble(spinEdit介质温度.Value), IsTemperatureTrn = this.checkEdit是否介质温度修正.Checked, TestNature = (eTestProjectNature)Convert.ToInt32( imageComboBoxProjectNature.EditValue), InspectionNumber = Convert.ToInt32(spinEditInspectionNumber.Value) }; if (imageComboBoxSpeedSimuMethod.SelectedIndex == 0) testProjectBase.ProjectParas.SpeedSimuMethod = null; else testProjectBase.ProjectParas.SpeedSimuMethod = eSpeedSimuMethod.不换算; TProduct.Model.DurabilityTestBundle durabilityTestBundle = null; if (checkEdit同时计时进行耐久试验.Checked) { durabilityTestBundle = new Model.DurabilityTestBundle(); durabilityTestBundle.IsHave = true; } TProduct.Model.TestAlarmSettingBundle alarmSettingBundle = null; if (!this.BuildAlarmSetting(out alarmSettingBundle)) { return; } testProjectBase.AlarmSetting = alarmSettingBundle; var testItemTrees = new List(); var featTestItemMap = new TProduct.Model.TestProjectItemBundle() { TestType = TProduct.Model.eTestType.FeatTest, BenchID = _selWorkBench.ID,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestStandardID = standard_id,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestGradeID = grade_id, ItemCount = 1 }; int item_count = 1; if (checkEdit汽蚀测试.Checked) { item_count = item_count + Convert.ToInt32(spinEditNpshPtNumber.EditValue); } TProduct.Model.AutoTestSettingBundle autoTestSettingBundle = this.testAutoTestDetailsCtrl1.GetBindingData(); var codes = new BLL.TestProjectItem().CreateNO(item_count); var featTestItem = new TProduct.Model.TestProjectItem() { CreateTime = DateTime.Now, CreateUserID = user_id, LastTestUserID = user_id, Code = codes.First(), Name = "性能测试", TestType = TProduct.Model.eTestType.FeatTest, JudgeResult = TProduct.Model.eTestJudgeResult.未判断, UseStatus = TProduct.Model.eUseStatus.Enable, AutoTestInfo = autoTestSettingBundle, DurabilityTestInfo = durabilityTestBundle, ItemParas = null }; // featTestItem.InstrumentInfo = new Model.PrjItemInstrumentSetting(); featTestItem.InstrumentInfo.SetPressMeter出口(_allPressMeterList.Find(x=>x.ID == press_meter_id出口)); featTestItem.InstrumentInfo.SetPressMeter进口(_allPressMeterList.Find(x => x.ID == press_meter_id进口)); featTestItem.InstrumentInfo.SetFlowMeter(_allFlowMeterList.Find(x => x.ID == flow_meter_id )); if (_isInitialElectricalAble) { featTestItem.ElectricInfo = new Model.PrjItemElectricInfo(); featTestItem.ElectricInfo.Ct = imageComboCt.EditValue == null ? 0 : Convert.ToInt32(imageComboCt.EditValue); featTestItem.ElectricInfo.Pt = -1;//表示根据电压计算 featTestItem.ElectricInfo.Xw = Convert.ToInt32(imageCombo相位.EditValue); } else { featTestItem.ElectricInfo = new Model.PrjItemElectricInfo(); featTestItem.ElectricInfo.Ct = -1; featTestItem.ElectricInfo.Pt = -1;//表示根据电压计算 featTestItem.ElectricInfo.Xw = Convert.ToInt32(imageCombo相位.EditValue); } testItemTrees.Add(new TProduct.Model.TestProjectItemBundleTree() { Bundle = featTestItemMap, Items = new List() { featTestItem } }); if (checkEdit汽蚀测试.Checked && item_count > 0) { TProduct.Model.TestProjectItemBundleTree tree_npsh = new TProduct.Model.TestProjectItemBundleTree(); tree_npsh.Bundle = new TProduct.Model.TestProjectItemBundle() { TestType = TProduct.Model.eTestType.NpshTest, BenchID = _selWorkBench.ID,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestStandardID = standard_id,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestGradeID = grade_id, ItemCount = Convert.ToInt32(spinEditNpshPtNumber.EditValue) }; tree_npsh.Items = new List(); for (int i = 1; i < item_count; i++) { var npshTestItem = new TProduct.Model.TestProjectItem() { CreateTime = DateTime.Now, CreateUserID = user_id, LastTestUserID = user_id, Code = codes[i], Name = "汽蚀点" + i, TestType = TProduct.Model.eTestType.NpshTest, JudgeResult = TProduct.Model.eTestJudgeResult.未判断, UseStatus = TProduct.Model.eUseStatus.Enable, ItemParas = null }; tree_npsh.Items.Add(npshTestItem); } testItemTrees.Add(tree_npsh); } var views = new BLL.TestProject().Insert(testProjectBase, testItemTrees); var feat_test_viewModel = views.FirstOrDefault(); var dataSourceType = imageComboDataSouce.SelectedIndex; if (dataSourceType == 2 && feat_test_viewModel != null) {//单点生成 CreateDemoDataByOnePoint( SelProductPump, SelPart, feat_test_viewModel, SelWorkBenchBase); } //if (OnAddTest != null) // OnAddTest(views, imageComboDataSouce.SelectedIndex); if (OnTestPump != null) { OnTestPump( this.SelProductPump, this._selPart, views.FirstOrDefault(), _selWorkBench); } this.CloseSelf(); } private void SetSelPartInfo() { if (imageComboPart.SelectedIndex < 0) return; var part_id = Convert.ToInt64(this.imageComboPart.EditValue); _selPart = this._allParts.Find(x => x.ID == part_id); if (_selPart == null) return; this.TextEditPartCode.EditValue = _selPart.Code; this.TextEditPartName.EditValue = _selPart.Name; this.TextManufactureTime.EditValue = _selPart.ManufactureTime; this.textEditSendTime.EditValue = _selPart.SendTime; this.MemoEditNote.EditValue = _selPart.Note; this.selectManufacturerCtrl.SetBindingData(_selPart.ManufacturerID); this.selectSenderCtrl.SetBindingData(_selPart.SenderID); } private bool BuildAlarmSetting(out TProduct.Model.TestAlarmSettingBundle alarmSettingBundle) { if (!string.IsNullOrEmpty(textEdit超电流报警设置.Text) || !string.IsNullOrEmpty(textEdit超功率报警设置.Text)) { alarmSettingBundle = new TProduct.Model.TestAlarmSettingBundle(); if (!string.IsNullOrEmpty(textEdit超电流报警设置.Text)) { double th = 0; if (!double.TryParse(textEdit超电流报警设置.Text, out th)) { MessageBox.Show("超电流报警设置不合理"); return false; } if (th < 0.1) { MessageBox.Show("超电流报警设置不合理"); return false; } alarmSettingBundle.Add(new Model.TestAlarmSettingItem() { JudgeType = 0, MonitorProp = null, MonitorType = Model.eMonitorType.相电流, Threshold = th }); } if (!string.IsNullOrEmpty(textEdit超功率报警设置.Text)) { double th = 0; if (!double.TryParse(textEdit超功率报警设置.Text, out th)) { MessageBox.Show("超功率报警设置不合理"); return false; } if (th < 0.1) { MessageBox.Show("超功率报警设置不合理"); return false; } alarmSettingBundle.Add(new Model.TestAlarmSettingItem() { JudgeType = 0, MonitorProp = null, MonitorType = Model.eMonitorType.功率, Threshold = th }); } return true; } else { alarmSettingBundle = null; return true; } } private void imgComWorkBenchBase_SelectedValueChanged(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.imgComWorkBenchBaseFeat.Text)) return; var id = Convert.ToInt64(this.imgComWorkBenchBaseFeat.EditValue); _selWorkBench = _allWorkBenchBase.Find(x => x.ID == id); if (_selWorkBench == null) return; int pipeLineId = _selWorkBench.PipelineID; if(pipeLineId == 0) { MessageBox.Show("未设置工作台的管路信息"); return; } if (_allFlowMeterList == null) { XtraMessageBox.Show("未设置流量计信息"); return; } var flowMeter = _allFlowMeterList.Find(x => x.IsHavePipeLine( pipeLineId)); if (flowMeter != null) { flowMeterCombo.EditValue = flowMeter.ID; } else { XtraMessageBox.Show("此管路未设置流量计信息"); return; } var test_setting = new Model.WorkBenchSetting4Pump(_selWorkBench.TestSetting); this.testAutoTestDetailsCtrl1.SetAble(test_setting.IsAutoTestAble); checkEdit是否介质温度修正.Checked = test_setting.IsTemperatureTrn; if (_selWorkBench.TestType != null && !_selWorkBench.TestType.Contains(TProduct.Model.eTestType.NpshTest)) { lblNpshInfo.Text = "汽蚀测试(工作台未设置汽蚀)"; checkEdit汽蚀测试.Enabled = false; } else if (string.IsNullOrEmpty(_selWorkBench.TestMethod)) { lblNpshInfo.Text = "汽蚀测试(工作台未设置汽蚀测试法)"; checkEdit汽蚀测试.Enabled = false; } else { lblNpshInfo.Text = " "; var method = new Model.WorkBenchMethod4Pump(_selWorkBench.TestMethod); if (method.Npsh == null) { lblNpshInfo.Text = "汽蚀测试(工作台未设置汽蚀测试法)"; checkEdit汽蚀测试.Enabled = false; } else if (method.Npsh.Value == TProduct.Model.eNpshTestMethod.ByE) { checkEdit汽蚀测试.Enabled = true; textEditNpshMethod.Text = "效率下降判别"; } else if (method.Npsh.Value == TProduct.Model.eNpshTestMethod.ByH) { checkEdit汽蚀测试.Enabled = true; textEditNpshMethod.Text = "扬程下降判别"; } } if (checkEdit汽蚀测试.Checked) { if (_selWorkBench.TestType != null && _selWorkBench.TestType.Contains(TProduct.Model.eTestType.NpshTest)) { checkEdit汽蚀测试.Checked = false; } } _isInitialElectricalAble = false; imageComboCt.Enabled = false; imageComboPt.Enabled = false; check根据电机电压计算PT.Enabled = false; if (!string.IsNullOrEmpty(_selWorkBench.TestSetting)) { var setting = new Model.WorkBenchSetting4Pump(_selWorkBench.TestSetting); if (setting.IsInitialElectricalAble) { _isInitialElectricalAble = true; imageComboCt.Enabled = true; imageComboPt.Enabled = true; check根据电机电压计算PT.Enabled = true; } } //三种状态 0 表示用的是测点设置, 为null表示不设置默认值, >0 表示选择默认压力计 if (_selWorkBench.MeterInfo != null && _selWorkBench.MeterInfo.OutletPressureMeterID.HasValue) { if (_selWorkBench.MeterInfo.OutletPressureMeterID.Value > 0) { pressMeterCombo出口.EditValue = _selWorkBench.MeterInfo.OutletPressureMeterID.Value; } } //this.imgComProductSeries.EditValue = null; //var ids = SelectWorkBenchBase.ProductStyleID.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries); //_selectProductStyle = new BLL.ProductStyle().GetByID(long.Parse(ids.First())); //productSeriesList?.ForEach(x => this.imgComProductSeries.Properties.Items.Add(x.Name, x.ID, -1)); //mgrWorkBenchMonitorPointPanel1.SetBindingData(this._selWorkBench); CheckProductAndBench(); } private void simpleBtnCancel_Click(object sender, EventArgs e) { } private void imageComboTestStandard_SelectedIndexChanged(object sender, EventArgs e) { if (imageComboTestStandard.SelectedIndex < 0) return; var standard_id = this.imageComboTestStandard.EditValue.ToString(); string defaultGradeId = null; var grades = TProduct.Common.TestStandardHelper.Instance.GetGradeList(TProduct.Model.eProductType.Pump, standard_id, out defaultGradeId); this.imageComboTestGrade.Properties.Items.Clear(); grades.ForEach(x => this.imageComboTestGrade.Properties.Items.Add(x.Name, x.ID, -1)); this.imageComboTestGrade.EditValue = defaultGradeId; } private void selectProductSeriesCtrl1_CheckedChanedEvent(TProduct.Model.ProductSeries series) { if (series == null) return; SelProductSeries = series; this.selectProductCtrl.SetBindingData4Series(series, 0); var benches = _allWorkBenchBase.Where(x => x.ProductStyleID == null || x.ProductStyleID.Contains(series.ProductStyleID)).OrderBy(x => x.SortCode).Select(x => x); if (benches == null || benches.Count() == 0) { MessageBox.Show("未配置此类型测试台"); return; } this.imgComWorkBenchBaseFeat.Properties.Items.Clear(); foreach (var x in benches) { if (x.UseStatus == Model.eUseStatus.Enable) this.imgComWorkBenchBaseFeat.Properties.Items.Add(x.Name, x.ID, -1); } this.imgComWorkBenchBaseFeat.SelectedIndex = 0; CheckProductAndBench(); } private void selectProductPumpCtrl1_CheckedChanedEvent(TProduct.Model.ProductMainExPump obj) { _isAddPart = false; this._selPart = null; if (obj == null) return; SelProductPump = obj; this.imageComboPart.Properties.Items.Clear(); _allParts = new BLL.PartBase().GetByProductMainID(obj.ID); if (_allParts == null || _allParts.Count() == 0) { SetAddPartStatus(); return; } _isAddPart = false; _allParts.ForEach(x => this.imageComboPart.Properties.Items.Add(string.Format( "{0} ({1})", x.Name, x.Code), x.ID, -1)); this.imageComboPart.SelectedIndex = 0; SetSelPartStatus(); } private void checkEdit汽蚀测试_CheckedChanged(object sender, EventArgs e) { if (checkEdit汽蚀测试.Checked) layoutControlGroup汽蚀.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; else layoutControlGroup汽蚀.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; } private bool _isAddPart = false; public event Action OnTestPump; private void btnAddPart_Click(object sender, EventArgs e) { SetAddPartStatus(); } private void btnResetAdd_Click(object sender, EventArgs e) { SetSelPartStatus(); } private void SetAddPartStatus() { imageComboPart.Enabled = false; btnResetAdd.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; this.TextEditPartCode.EditValue = ""; this.TextEditPartName.EditValue = ""; this.TextManufactureTime.EditValue = ""; this.textEditSendTime.EditValue = ""; this.MemoEditNote.EditValue = ""; _isAddPart = true; } private void SetSelPartStatus() { imageComboPart.Enabled = true; btnResetAdd.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; _isAddPart = false; SetSelPartInfo(); } private void imageComboPart_SelectedIndexChanged(object sender, EventArgs e) { if (imageComboPart.SelectedIndex < 0) return; SetSelPartInfo(); } private bool SetPartInfo() { var selManufacture = selectManufacturerCtrl.SelectManufacturer; if (selManufacture == null) { XtraMessageBox.Show("请选择生产商!"); return false; } var selSender = selectSenderCtrl.SelectSender; if (selSender == null) { XtraMessageBox.Show("请选择送检方!"); return false; } string manufactureTime = ""; string sendTime = ""; DateTime dt = DateTime.Now; manufactureTime = this.TextManufactureTime.Text; sendTime = this.textEditSendTime.Text; if (_isAddPart && SelProductPump != null) { _selPart = new TProduct.Model.PartBase(); if (string.IsNullOrEmpty(this.TextEditPartCode.Text)) { if (TProduct.UserSetting.Setting.Code.PartCodeAutoMethod == 1) _selPart.Code = "/"; } else { _selPart.Code = this.TextEditPartCode.Text.Trim(); } _selPart.Name = this.TextEditPartName.Text; _selPart.ProductMainID = SelProductPump.ID; _selPart.ManufacturerID = selManufacture.ID; _selPart.SenderID = selSender.ID; _selPart.Note = this.MemoEditNote.Text; _selPart.ManufactureTime = manufactureTime; _selPart.SendTime = sendTime; var bll = new BLL.PartBase(); _selPart.ID = bll.Insert(_selPart); if (_selPart.ID < 1) { XtraMessageBox.Show("添加失败!"); return false; } return true; } else { //如果有一个属性改变则修改 if(_selPart != null) { if (!String.Equals(this.TextEditPartName.Text, _selPart.Name) || !String.Equals(this.TextEditPartCode.Text, _selPart.Code) || !String.Equals(this.MemoEditNote.Text, _selPart.Note) || !String.Equals(manufactureTime, _selPart.ManufactureTime) || !String.Equals(sendTime, _selPart.SendTime) || selManufacture.ID != _selPart.ManufacturerID || selSender.ID != _selPart.SenderID) { _selPart.Code = this.TextEditPartCode.Text.Trim(); _selPart.Name = this.TextEditPartName.Text.Trim(); _selPart.ManufacturerID = selManufacture.ID; _selPart.SenderID = selSender.ID; _selPart.Note = this.MemoEditNote.Text.Trim(); _selPart.ManufactureTime = manufactureTime; _selPart.SendTime = sendTime; var bll = new BLL.PartBase(); return bll.Update(_selPart); } } } return true; } private void lblSetBench_Click(object sender, EventArgs e) { if (_selWorkBench == null) return; if (this._selWorkBench.LinkType == Model.eLinkType.ShunZhou) { TProduct.WinFrmUI.TestBench.SetAllInstruments4ShunDlg frm = new TProduct.WinFrmUI.TestBench.SetAllInstruments4ShunDlg(); frm.SetBindingData(this._selWorkBench); frm.Show(); } if (this._selWorkBench.LinkType == Model.eLinkType.KeDi) { TProduct.WinFrmUI.TestBench.SetAllInstruments4KeDiDlg frm = new TProduct.WinFrmUI.TestBench.SetAllInstruments4KeDiDlg(); frm.SetBindingData(this._selWorkBench); frm.Show(); } } protected bool CreateDemoDataByOnePoint( TProduct.Model.ProductMainExPump pump, TProduct.Model.PartBase part, TProduct.Model.TestProjectItemView testItem, TProduct.Model.WorkBenchBase workBench) { DrawLxpCurveOnePtPanel frm2 = new DrawLxpCurveOnePtPanel(); if (!frm2.SetBindingData(pump)) return false; if (frm2.ShowDialog() != DialogResult.OK) return false; var allMonitorPointList = new BLL.WorkBenchMonitorPoint().GetByBenchID(workBench.ID); var moinitor_press_inlet = allMonitorPointList.Find(x => x.MonitorType == TProduct.Model.eMonitorType.压力 && x.Property == TProduct.Model.MonitorTypeProperty.进口); var moinitor_press_outlet = allMonitorPointList.Find(x => x.MonitorType == TProduct.Model.eMonitorType.压力 && x.Property == TProduct.Model.MonitorTypeProperty.出口); List pointInfoQH = null; List pointInfoQE = null; List pointInfoQP = null; List pointInfoNPSH = null; var ratedN = pump.Ratedn.Value; var bll = new BLL.PumpFeatTestRecord(); frm2.GetFeatPoint(out pointInfoQH, out pointInfoQE, out pointInfoQP, out pointInfoNPSH); Random rd = new Random(); for (int i = 0; i < pointInfoQH.Count; i++) { var testQ = pointInfoQH[i].X; var testH = pointInfoQH[i].Y; double testP = 0; if (pointInfoQP[i].Y > 50) testP = Math.Round(pointInfoQP[i].Y, 1); else if (pointInfoQP[i].Y > 10) testP = Math.Round(pointInfoQP[i].Y, 2); else if (pointInfoQP[i].Y > 2) testP = Math.Round(pointInfoQP[i].Y, 3); else testP = Math.Round(pointInfoQP[i].Y, 4); var testE = pointInfoQE[i].Y; var rTestSpeed = pump.Ratedn.Value - rd.Next(1, 30) / 10.0; TProduct.Model.PumpFeatTestRecordViewModel _currentRecord = new TProduct.Model.PumpFeatTestRecordViewModel(); _currentRecord = new TProduct.Model.PumpFeatTestRecordViewModel(); _currentRecord.TestItemID = testItem.ItemID; _currentRecord.Time = DateTime.Now.AddSeconds(i * 120 + rd.Next(1, 15)); _currentRecord.RecordType = TProduct.Model.eRecordType.Statistics; //得到相似换算值 double xshsFlow = testQ * ratedN / rTestSpeed; double xshsHead = testH * ratedN * ratedN / rTestSpeed / rTestSpeed; //效率进行修正 double xshsEffice = CalcFeatTestData1Dlg.GetSpeedE(testE, rTestSpeed, ratedN); //功率 double xshsPower = 0; if (i == 0 || xshsFlow < 1) {//零流量点的功率 xshsPower = testP * ratedN * ratedN * ratedN / rTestSpeed / rTestSpeed / rTestSpeed; } else {//一般点的功率用效率计算 xshsPower = CalcFeatTestData1Dlg.CalculateP(xshsFlow, xshsHead, xshsEffice); } _currentRecord.Speed = rTestSpeed; _currentRecord.TestPtQ = TProduct.Common.RoundHelper.GetDispValueFlow(testQ); _currentRecord.TestPtH = TProduct.Common.RoundHelper.GetDispValueHead(testH); _currentRecord.TestPtE = TProduct.Common.RoundHelper.GetDispValueEta(testE); _currentRecord.TestPtP = TProduct.Common.RoundHelper.GetDispValuePower(testP); _currentRecord.CorrectPtQ = TProduct.Common.RoundHelper.GetDispValueFlow(xshsFlow); _currentRecord.CorrectPtH = TProduct.Common.RoundHelper.GetDispValueHead(xshsHead); _currentRecord.CorrectPtE = TProduct.Common.RoundHelper.GetDispValueEta(xshsEffice); _currentRecord.CorrectPtP = TProduct.Common.RoundHelper.GetDispValuePower(xshsPower); var p1m = -0.015 + rd.Next(100, 140) / 1000.0; //高差 double gc = 0; double OtherPressCoeff = 4 * 1000 / Math.PI / 3.6; double rPipeInV = 0; //if (moinitor_press_inlet != null && // moinitor_press_inlet.PipeDia != null && // moinitor_press_inlet.PipeDia > 10) //{ // double mm_inlet_dia = moinitor_press_inlet.PipeDia.Value; // rPipeInV = OtherPressCoeff * testQ / mm_inlet_dia / mm_inlet_dia; //} double rPipeOutV = 0; //if (moinitor_press_outlet != null && // moinitor_press_outlet.PipeDia != null && // moinitor_press_outlet.PipeDia > 10) //{ // double mm_outlet_dia = moinitor_press_outlet.PipeDia.Value; // rPipeOutV = OtherPressCoeff * testQ / mm_outlet_dia / mm_outlet_dia; //} //if (moinitor_press_outlet != null && moinitor_press_outlet.Elevation != null) //{ // gc += moinitor_press_outlet.Elevation.Value; //} //if (moinitor_press_inlet != null && moinitor_press_inlet.Elevation != null) //{ // gc -= moinitor_press_inlet.Elevation.Value; //} double rVDif = (rPipeOutV * rPipeOutV - rPipeInV * rPipeInV) / (TProduct.ConstantParas.g * 2.0); double p2m = Math.Round((testH - rVDif - gc) * TProduct.ConstantParas.g / 1000 + p1m, 4); TProduct.Model.MonitorRecord4DsList monitorRecord4Ds = new TProduct.Model.MonitorRecord4DsList(); foreach (var db in allMonitorPointList) { if (db.MonitorType == TProduct.Model.eMonitorType.功率) monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, testP)); if (db.MonitorType == TProduct.Model.eMonitorType.压力 && db.Property == TProduct.Model.MonitorTypeProperty.进口) monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, p1m)); if (db.MonitorType == TProduct.Model.eMonitorType.压力 && db.Property == TProduct.Model.MonitorTypeProperty.出口) monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, p2m)); if (db.MonitorType == TProduct.Model.eMonitorType.流量) monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, testQ)); if (db.MonitorType == TProduct.Model.eMonitorType.转速) monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, rTestSpeed)); if (db.MonitorType == TProduct.Model.eMonitorType.电机效率) { monitorRecord4Ds.Add(new TProduct.Model.MonitorRecord4Ds(db.ID, 100)); } } _currentRecord.MonitorRecordList = monitorRecord4Ds; _currentRecord.MonitorRecords = monitorRecord4Ds.ToDsString(); _currentRecord.ID = bll.Add(testItem, _currentRecord); } testItem.PointNumber = pointInfoQH.Count(); new BLL.TestProjectItem().UpdatePointNumberAndTime(testItem.ItemID, testItem.PointNumber); return true; } private void CheckProductAndBench() { this.labelProductTip.Text = " "; if (this._selWorkBench == null) return; if (this.SelProductSeries == null) return; if (string.IsNullOrEmpty(this._selWorkBench.TestSetting)) return; var test_setting = new Model.WorkBenchSetting4Pump(_selWorkBench.TestSetting); if (test_setting.SupplyCurrentType == null) return; if (this.SelProductSeries.Paras == null || this.SelProductSeries.Paras.SupplyCurrentType == null) return; if(test_setting.SupplyCurrentType.Value != this.SelProductSeries.Paras.SupplyCurrentType.Value) { this.labelProductTip.Text = "测试台设置和泵的供电方式不匹配"; } } private void checkEdit任意产品_CheckedChanged(object sender, EventArgs e) { if (checkEdit任意产品.Checked) { selPumpSeriesCtrl.Enabled = false; selectProductCtrl.Enabled = false; imageComboPart.Enabled = false; } else { selPumpSeriesCtrl.Enabled = true; selectProductCtrl.Enabled = true; imageComboPart.Enabled = true; } } } }