DeviceManager/DeviceRepairAndOptimization/Pages/RepairView/page_RepairRecordEdit.cs
2024-05-28 22:36:38 +08:00

310 lines
13 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using DevExpress.XtraEditors;
using DevExpress.XtraBars.ToolbarForm;
using DeviceRepairAndOptimization.Models;
using System.Reflection;
using SqlSugar;
using DeviceRepairAndOptimization.Common;
namespace DeviceRepairAndOptimization.Pages.RepairView
{
public partial class page_RepairRecordEdit : ToolbarForm
{
private DeviceRepairRecordModel CurrentData;
Dictionary<string, BaseEdit> ControlDictionary = null;
public page_RepairRecordEdit(DeviceRepairRecordModel model)
{
InitializeComponent();
CurrentData = model;
this.Load += Page_RepairRecordEdit_Load;
}
private void Page_RepairRecordEdit_Load(object sender, EventArgs e)
{
#region
ControlDictionary = new Dictionary<string, BaseEdit>
{
{"Plant",txt_Plant},
{"Installations",txt_Installations},
{"PurchaseOrder",txt_PurchaseOrder},
{"OrderType",txt_OrderType},
{"TypesOfMaintenanceOperations",txt_TypesOfMaintenanceOperations},
{"FullProgramCosts",txt_FullProgramCosts},
{"Acttotcost",txt_Acttotcost},
{"SystemStatus",txt_SystemStatus},
{"TestLot",txt_TestLot},
{"Tin",txt_Tin},
{"DescriptionOfTechnicalObjects",txt_DescriptionOfTechnicalObjects},
{"Descriptive",txt_Descriptive},
{"Importer",txt_Importer},
{"ActualDateOfIssuance",de_ActualDateOfIssuance},
{"BasicStartTime",te_BasicStartTime},
{"ReferenceDate",de_ReferenceDate},
{"ReferenceTime",te_ReferenceTime},
{"FinalModifier",txt_FinalModifier},
{"ReasonForDowntime",txt_ReasonForDowntime},
{"MaintenancePersonnel",txt_MaintenancePersonnel},
{"StartOfMaintenance",de_StartOfMaintenance},
{"MaintenanceCompletionTime",te_MaintenanceCompletionTime},
{"CauseOfFailure",txt_CauseOfFailure},
{"MaintenanceContent",txt_MaintenanceContent},
{"ReplacementParts",txt_ReplacementParts},
{"Downtime",txt_Downtime},
{"MaintenancePeriod",txt_MaintenancePeriod},
{"RepairMethods",txt_RepairMethods},
{"PhenomenologicalDistinction",txt_PhenomenologicalDistinction},
{"VerificationNumber",txt_VerificationNumber},
{"OtherThan",txt_OtherThan},
{"DeviceStatus",txt_DeviceStatus},
{"Tier",txt_Tier},
{"DidTheFaultCauseAShutdown",txt_DidTheFaultCauseAShutdown},
{"TierTrackers",txt_TierTrackers},
{"StatusFeedbackAndTime",txt_StatusFeedbackAndTime},
{"PartsAndServiceRequisitionTime",txt_PartsAndServiceRequisitionTime},
{"PartsAndServiceArrivalTime",txt_PartsAndServiceArrivalTime},
{"PmAndAmAssociatedProjectLocation",txt_PmAndAmAssociatedProjectLocation},
};
#endregion
InitializeData();
}
/// <summary>
/// 加载数据
/// </summary>
void InitializeData()
{
try
{
splashScreenManager1.ShowWaitForm();
if (CurrentData == null)
throw new Exception("编辑的行数据不能为空!");
// 绑定数据到控件
ObjectBindControl(CurrentData, ControlDictionary);
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
//splashScreenManager1.ShowWaitForm();
//// 数据校验
//if (ValidataForm())
//{
// APIResponseData apiResponseData = DeviceRepairManager.Instance.Editable(CurrentData);
// if (apiResponseData.Code != 1)
// throw new Exception(apiResponseData.Message);
// else
// {
// splashScreenManager1.TryCloseWait();
// DialogResult = System.Windows.Forms.DialogResult.OK;
// }
//}
//splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 数据对象校验
/// </summary>
/// <returns></returns>
bool ValidataForm()
{
try
{
//int ErrorCount = 0;
//DeviceRepairRecordModel valModel = new DeviceRepairRecordModel();
//Type personType = valModel.GetType();
//PropertyInfo[] properties = personType.GetProperties();
//foreach (var item in ControlDictionary)
//{
// PropertyInfo property = properties.FirstOrDefault(x => x.Name.Equals(item.Key, StringComparison.CurrentCultureIgnoreCase));
// if (property != null)
// {
// property.SetValue(valModel, item.Value.EditValue);
// }
//}
//APIResponseData apiResponseData = CommonManager.Instance.GetColumnInfo("DriveRepairRecord");
//if (apiResponseData.Code != 1)
// throw new Exception(apiResponseData.Message);
//List<DbColumnInfo> columns = apiResponseData.ToDeserializeObject<List<DbColumnInfo>>();
//Dictionary<string, DbColumnInfo> dColumns = columns.ToDictionary(x => x.DbColumnName, x => x);
//foreach (PropertyInfo property in properties)
//{
// if (!dColumns.ContainsKey(property.Name))
// {
// throw new Exception($"{property.Name}字段,不存在表中!");
// }
// else
// {
// DbColumnInfo colINfo = dColumns[property.Name];
// if (!ControlDictionary.ContainsKey(property.Name) || colINfo.IsPrimarykey)
// continue;
// object value = property.GetValue(valModel, null);
// if (value == null)
// {
// if (colINfo.IsNullable)
// continue;
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,不允许为空!");
// ErrorCount++;
// }
// switch (colINfo.DataType.ToLower())
// {
// case "int":
// int iValue = 0;
// if (!int.TryParse(value + "", out iValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,只能为整数!");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// case "decimal":
// decimal dValue = 0;
// if (!decimal.TryParse(value + "", out dValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,只能为十进制数值!");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// case "datetime":
// DateTime tValue = DateTime.MinValue;
// if (!DateTime.TryParse(value + "", out tValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,只能为时间类型!");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// case "float":
// float fValue = 0;
// if (!float.TryParse(value + "", out fValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,只能为小数类型!");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// case "bit":
// bool bValue = false;
// if (!bool.TryParse(value + "", out bValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,只能为是或否!");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// case "uniqueidentifier":
// Guid gValue = Guid.Empty;
// if (!Guid.TryParse(gValue + "", out gValue))
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段只能为Guid类型");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// default:
// if (value.ToString().Length > colINfo.Length)
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], $"{colINfo.ColumnDescription}字段,最大长度不允许超出{colINfo.Length}");
// ErrorCount++;
// }
// else
// {
// dxErrorProvider1.SetError(ControlDictionary[property.Name], "");
// }
// break;
// }
// }
//}
//if (ErrorCount == 0)
//{
// valModel.AutoID = CurrentData.AutoID;
// CurrentData = valModel;
// return true;
//}
return false;
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 数据绑定到控件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="model"></param>
/// <param name="dictionary"></param>
void ObjectBindControl<T>(T model, Dictionary<string, BaseEdit> dictionary) where T : class
{
Type personType = model.GetType();
PropertyInfo[] properties = personType.GetProperties();
foreach (PropertyInfo property in properties)
{
if (dictionary.ContainsKey(property.Name))
{
object value = property.GetValue(model, null);
dictionary[property.Name].EditValue = value;
}
}
}
}
}