310 lines
13 KiB
C#
310 lines
13 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|