using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using TProduct.Model; namespace TProduct.WinFrmUI.TValve { public partial class AddTest4FactoryMainPage : DocumentPage, ITestValve { public AddTest4FactoryMainPage() { InitializeComponent(); this.PageTitle.Caption = "新建测试"; this.selPumpSeriesCtrl.SetReadOnly(); this.selPumpSeriesCtrl.SetProductType(eProductType.Pump); btnResetAdd.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); } textEditName.Focus(); RefreshData(); } private List _allSeries = null; private List _allWorkBenchBase = null; private List _allParts = null; private TProduct.Model.eProductType _productType = TProduct.Model.eProductType.Valve; public TProduct.Model.ProductSeries SelProductSeries { get; set; } public TProduct.Model.ProductMainExValve SelProductValve { 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; } 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; } var allMeters = new BLL.PressureMeter().GetAll(); if (allMeters == null) { allMeters = new List(); } SearchLookUpEditPressMeter.Properties.DataSource = allMeters; if (allMeters.Count > 0) { SearchLookUpEditPressMeter.EditValue = allMeters[0].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.Valve, TProduct.Model.eTestType.ValveTest).ForEach(x => this.imageComboTestStandard.Properties.Items.Add(x.Name, x.ID, -1)); this.imageComboTestStandard.SelectedIndex = 0; } //是否修改了泵列表 public bool IsChangeValveList() { return selectProductCtrl.IsChangeList; } private void simpleBtnOK_Click(object sender, EventArgs e) { this.dxErrorProvider1.ClearErrors(); //CloseSelf.Invoke(); //return; if (_selWorkBench == null) { XtraMessageBox.Show("请选择测试台!"); return; } if (SelProductValve == 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; } long meter_id = 0; if (checkEdit根据测点设置出口压力.Checked) { if (SearchLookUpEditPressMeter.EditValue != null) { meter_id = Convert.ToInt64(SearchLookUpEditPressMeter.EditValue); } } string grade_id = ""; //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.Valve, CreateTime = DateTime.Now, CreateUserID = user_id, SeriesID = this.SelProductSeries.ID, ProductID = this.SelProductValve.ID, PartID = this._selPart.ID, IsFixed = false, UseStatus = TProduct.Model.eUseStatus.Enable, Name = textEditName.Text, Code = textEditTestCode.Text, JudgeResult = TProduct.Model.eTestJudgeResult.未判断 }; 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) }; 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.ValveTest, BenchID = _selWorkBench.ID,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestStandardID = standard_id,//暂时统一测试台, 统一标准, 以后改成可以通过界面设置 TestGradeID = grade_id, ItemCount = 1 }; int item_count = 1; 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.ValveTest, JudgeResult = TProduct.Model.eTestJudgeResult.未判断, UseStatus = TProduct.Model.eUseStatus.Enable, InstrumentInfo = new Model.PrjItemInstrumentSetting() { OutletPressureMeterID = meter_id }, AutoTestInfo = autoTestSettingBundle, DurabilityTestInfo = durabilityTestBundle, ItemParas = null }; testItemTrees.Add(new TProduct.Model.TestProjectItemBundleTree() { Bundle = featTestItemMap, Items = new List() { featTestItem } }); var views = new BLL.TestProject().Insert(testProjectBase, testItemTrees); var feat_test_viewModel = views.FirstOrDefault(); //if (OnAddTest != null) // OnAddTest(views, imageComboDataSouce.SelectedIndex); if (OnTestValve != null) { OnTestValve( this.SelProductValve, 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; var test_setting = new Model.WorkBenchSetting4Valve(_selWorkBench.TestSetting); this.testAutoTestDetailsCtrl1.SetAble(test_setting.IsAutoTestAble); checkEdit是否介质温度修正.Checked = test_setting.IsTemperatureTrn; layoutControlGroup6.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; if (!string.IsNullOrEmpty(_selWorkBench.TestSetting)) { //var setting = new Model.WorkBenchSetting4Valve(_selWorkBench.TestSetting); } if (_selWorkBench.MeterInfo != null && _selWorkBench.MeterInfo.OutletPressureMeterID.HasValue && _selWorkBench.MeterInfo.OutletPressureMeterID.Value > 0) { checkEdit根据测点设置出口压力.Checked = false; SearchLookUpEditPressMeter.EditValue = _selWorkBench.MeterInfo.OutletPressureMeterID.Value; } else { checkEdit根据测点设置出口压力.Checked = true; } //if (string.IsNullOrEmpty(SelectWorkBenchBase.ProductStyleID)) // return; //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); } 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.Valve, 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(SelProductSeries.ID, 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; } private void selectProductValveCtrl1_CheckedChanedEvent(TProduct.Model.ProductMainExValve obj) { _isAddPart = false; this._selPart = null; if (obj == null) return; SelProductValve = 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 bool _isAddPart = false; public event Action OnTestValve; 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) { _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 = SelProductValve.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 (!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) { //if (_selWorkBench.LinkTag == "WH701") //{ // TProduct.WinFrmUI.TestBench.ViewWorkBenchInstrument701Dlg frm = new TProduct.WinFrmUI.TestBench.ViewWorkBenchInstrument701Dlg(); // frm.SetBindingData(this._selWorkBench); // frm.Show(); //} //else { TProduct.WinFrmUI.TestBench.SetAllInstruments4KeDiDlg frm = new TProduct.WinFrmUI.TestBench.SetAllInstruments4KeDiDlg(); frm.SetBindingData(this._selWorkBench); frm.Show(); } } } private void checkEdit根据测点设置出口压力_CheckedChanged(object sender, EventArgs e) { SearchLookUpEditPressMeter.Enabled = !checkEdit根据测点设置出口压力.Checked; } } }