using DevExpress.XtraBars.ToolbarForm; using DevExpress.XtraEditors; using DevExpress.XtraEditors.DXErrorProvider; using DeviceRepair.Models; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using TsSFCDevice.Client.Biz.Impl; using TsSFCDevice.Control; namespace TsSFCDevice.Client.Launch.Maintain { public partial class pageMaintainEdit : ToolbarForm { public DeviceWarrantyRequestFormView CurrentRequestForm = null; public List Accessories = null; /// /// 现象区分 /// int SymptomlDistinction { get { return Convert.ToInt32(ddlSymptomlDistinction.EditValue); } } /// /// 维修方式 /// int Maintenance { get { return Convert.ToInt32(ddlMaintenance.EditValue); } } /// /// 开始时间 /// DateTime StartTime { get { return Convert.ToDateTime(de_StartDate.EditValue); } } /// /// 结束时间 /// DateTime EndTime { get { return Convert.ToDateTime(de_EndDate.EditValue); } } /// /// 故障原因 /// string MaintainCause { get { return txtCause.EditValue?.ToString()?.Trim(); } } /// /// 维修内容 /// string MaintainContent { get { return txtContent.EditValue?.ToString()?.Trim(); } } /// /// 是否需要验证 /// bool NeedValidate { get { return (bool)ckbNeedValidate.EditValue; } } /// /// 二次验证的理由 /// string MaintaionReason { get { return txtReason.EditValue?.ToString()?.Trim() ?? ""; } } /// /// 验证编号 /// string ValidateNo { get { return txtNo.EditValue?.ToString()?.Trim() ?? ""; } } /// /// 是否停机(停机状态) /// bool IsDown { get { return (bool)ckbIsDown.EditValue; } } public pageMaintainEdit() : this(null) { } public pageMaintainEdit(DeviceWarrantyRequestFormView qequestForm) { InitializeComponent(); CurrentRequestForm = qequestForm; this.Load += PageMaintainEdit_Load; } private void PageMaintainEdit_Load(object sender, EventArgs e) { InitializeLookupControl(); try { layoutControlItem9.Enabled = !NeedValidate; layoutControlItem10.Enabled = NeedValidate; de_StartDate.EditValue = CurrentRequestForm.CreatOn.Value; de_EndDate.EditValue = DateTime.Now; if (CurrentRequestForm != null && CurrentRequestForm.MaintaionItems != null) { // 现象区分 ddlSymptomlDistinction.EditValue = CurrentRequestForm.MaintaionItems.SymptomlDistinction; // 维修方式 ddlMaintenance.EditValue = CurrentRequestForm.MaintaionItems.Maintenance; // 开始时间 de_StartDate.EditValue = CurrentRequestForm.MaintaionItems.MaintainStartTime; // 结束时间 de_EndDate.EditValue = CurrentRequestForm.MaintaionItems.MaintainEndTime; // 故障原因 txtCause.EditValue = CurrentRequestForm.MaintaionItems.MaintainCause; // 故障内容 txtContent.EditValue = CurrentRequestForm.MaintaionItems.MaintainContent; // 配件 if (CurrentRequestForm.MaintaionItems.AccessoriesItems != null && CurrentRequestForm.MaintaionItems.AccessoriesItems.Count > 0) { Accessories = CurrentRequestForm.MaintaionItems.AccessoriesItems; string[] AccessoriesLst = Accessories.Select(x => x.FieldName).ToArray(); txt_Accessories.EditValue = string.Join(";", AccessoriesLst); } // 是否需要再验证 ckbNeedValidate.EditValue = CurrentRequestForm.MaintaionItems.BeValidate; // 理由 txtReason.EditValue = CurrentRequestForm.MaintaionItems.Reason ?? ""; // 验证编码 txtNo.EditValue = CurrentRequestForm.MaintaionItems.ValidateNo ?? ""; // 是否停机 ckbIsDown.EditValue = CurrentRequestForm.IsDown; } } catch (Exception ex) { XtraMessageBoxHelper.Error(ex.Message); } } void InitializeLookupControl() { try { splashScreenManager1.ShowWaitForm(); IList SelectionDatas = CustomFieldRepository.Instance.GetDatas(("SymptomlDistinction,Maintenance").Split(',')); ddlSymptomlDistinction.Properties.DataSource = SelectionDatas.Where(x => x.FieldCode == "SymptomlDistinction" && x.Status).ToList(); ddlSymptomlDistinction.Properties.DisplayMember = "FieldText"; ddlSymptomlDistinction.Properties.ValueMember = "AutoID"; ddlSymptomlDistinction.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; if (ddlSymptomlDistinction.Properties.DataSource != null && (ddlSymptomlDistinction.Properties.DataSource as List).Count > 0) { ddlSymptomlDistinction.EditValue = (ddlSymptomlDistinction.Properties.DataSource as List)[0].AutoID; } ddlMaintenance.Properties.DataSource = SelectionDatas.Where(x => x.FieldCode == "Maintenance" && x.Status).ToList(); ddlMaintenance.Properties.DisplayMember = "FieldText"; ddlMaintenance.Properties.ValueMember = "AutoID"; ddlMaintenance.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup; if (ddlMaintenance.Properties.DataSource != null && (ddlMaintenance.Properties.DataSource as List).Count > 0) { ddlMaintenance.EditValue = (ddlMaintenance.Properties.DataSource as List)[0].AutoID; } splashScreenManager1.TryCloseWait(); } catch (Exception ex) { splashScreenManager1.TryCloseWait(); XtraMessageBoxHelper.Error(ex.Message); } } /// /// 初始化验证控件 /// private void InitializeValidationProvider() { try { List param = new List { ddlSymptomlDistinction, ddlMaintenance, de_StartDate, de_EndDate, txtCause, txtContent }; foreach (var item in param) { dxValidationProvider1.RemoveControlError(item); } dxValidationProvider1.RemoveControlError(txtNo); dxValidationProvider1.RemoveControlError(txtReason); dxValidationProvider1 = new DXValidationProvider(); //实例化一个必填规则,错误提示为:该字段不能为空 ConditionValidationRule required = new ConditionValidationRule("RequiredRule", ConditionOperator.IsNotBlank) { ErrorText = $"字段不能为空" }; if (NeedValidate) { param.Add(txtNo); } else { param.Add(txtReason); } for (int i = 0; i < param.Count; i++) { string FieldName = Root.Items.FirstOrDefault(x => (x as DevExpress.XtraLayout.LayoutControlItem).Control == param[i])?.Text; required.ErrorText = $"字段:{FieldName.Replace(":", "")} 不能为空"; dxValidationProvider1.SetValidationRule(param[i], required); dxValidationProvider1.SetIconAlignment(param[i], ErrorIconAlignment.MiddleRight); } } catch (Exception ex) { XtraMessageBoxHelper.Error(ex.Message); } } /// /// 配件 /// /// /// private void btn_AccessoriesEdit_Click(object sender, EventArgs e) { using (dlgAccessoriesEdit dlg = new dlgAccessoriesEdit(Accessories)) { if (dlg.ShowDialog(this) == DialogResult.OK) { Accessories = dlg.CurrentAccessories; string[] AccessoriesLst = dlg.CurrentAccessories.Select(x => x.FieldName).ToArray(); txt_Accessories.EditValue = string.Join(";", AccessoriesLst); } } } private void ckbNeedValidate_SelectedIndexChanged(object sender, EventArgs e) { layoutControlItem9.Enabled = !NeedValidate; layoutControlItem10.Enabled = NeedValidate; if (NeedValidate) { txtNo.EditValue = ""; txtReason.EditValue = "N/A"; } else { txtReason.EditValue = ""; txtNo.EditValue = "N/A"; } } /// /// 关闭窗体前 先保存数据 /// /// /// private void pageMaintainEdit_FormClosing(object sender, FormClosingEventArgs e) { if (DialogResult == DialogResult.OK) return; try { if (MaintenanceRepository.Instance.DataBeSubmit(CurrentRequestForm.AutoID)) return; DeviceWarrantyRequestMaintaionView Entity = new DeviceWarrantyRequestMaintaionView { AccessoriesItems = Accessories, BeValidate = NeedValidate, FormID = CurrentRequestForm.AutoID, MaintainCause = MaintainCause, MaintainContent = MaintainContent, MaintainStartTime = StartTime, MaintainEndTime = EndTime, Maintenance = Maintenance, SymptomlDistinction = SymptomlDistinction, Reason = MaintaionReason, ValidateNo = ValidateNo, IsSubmit = false }; if (CurrentRequestForm.MaintaionItems != null) { Entity.AutoID = CurrentRequestForm.MaintaionItems.AutoID; } APIResponseData apiResponseData = MaintenanceRepository.Instance.Insert(Entity.TodbModel(), Entity.AccessoriesItems); if (!apiResponseData.IsSuccess) throw new Exception(apiResponseData.Message); } catch (Exception ex) { throw; } } private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { InitializeValidationProvider(); if (dxValidationProvider1.Validate()) { if (StartTime > EndTime) { throw new Exception($"修理结束时间在修理开始时间之后!"); } // 故障原因 if (string.IsNullOrWhiteSpace(MaintainCause)) { dxErrorProvider1.SetError(txtCause, $"字段:故障原因 不能为空"); return; } // 维修内容 if (string.IsNullOrWhiteSpace(MaintainContent)) { dxErrorProvider1.SetError(txtContent, $"字段:维修内容 不能为空"); return; } // 理由 | 验证编码 if (NeedValidate && string.IsNullOrWhiteSpace(ValidateNo)) { dxErrorProvider1.SetError(txtNo, $"字段:验证编码 不能为空"); return; } else if (!NeedValidate && string.IsNullOrWhiteSpace(MaintaionReason)) { dxErrorProvider1.SetError(txtReason, $"字段:理由 不能为空"); return; } DeviceWarrantyRequestMaintaionView Entity = new DeviceWarrantyRequestMaintaionView { AccessoriesItems = Accessories, BeValidate = NeedValidate, FormID = CurrentRequestForm.AutoID, MaintainCause = MaintainCause, MaintainContent = MaintainContent, MaintainStartTime = StartTime, MaintainEndTime = EndTime, Maintenance = Maintenance, SymptomlDistinction = SymptomlDistinction, Reason = MaintaionReason, ValidateNo = ValidateNo, IsSubmit = true }; if (CurrentRequestForm.MaintaionItems != null) { Entity.AutoID = CurrentRequestForm.MaintaionItems.AutoID; } APIResponseData apiResponseData = MaintenanceRepository.Instance.Insert(Entity.TodbModel(), Entity.AccessoriesItems); if (!apiResponseData.IsSuccess) throw new Exception(apiResponseData.Message); this.DialogResult = DialogResult.OK; } } catch (Exception ex) { XtraMessageBoxHelper.Error(ex.Message); } } } }