using DevExpress.Spreadsheet; using DevExpress.Utils.Menu; using DevExpress.XtraSpreadsheet.Menu; using DeviceRepair.Models; using DeviceRepair.Models.Enum; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using TsSFCDevice.Client.Biz.Base.Utils; namespace TsSFCDevice.Client.Launch.PreserveTemplate { [JsonObject(MemberSerialization.OptIn)] public class BaseTemplate { internal delegate void WriteValueEventHandler(EnumMaintenanceCellType CellType, string value, EnumMaintenanceOperationType operationType, bool IsException = false); internal virtual event WriteValueEventHandler OnWriteValue; internal Worksheet worksheet; /// /// 设备名称 /// [JsonProperty] internal virtual List EquipmentName { get; set; } /// /// 设备安装地点 /// [JsonProperty] internal virtual List InstallationSite { get; set; } /// /// 设备型号规格 /// [JsonProperty] internal virtual List DeviceSpecification { get; set; } /// /// 设备编号 /// [JsonProperty] internal virtual List EquipmentID { get; set; } /// /// 年 /// [JsonProperty] internal virtual List Year { get; set; } [JsonProperty] internal virtual List YearAndMonth { get; set; } /// /// 内容 /// [JsonProperty] internal virtual List Content { get; set; } /// /// 其他异常处理 /// [JsonProperty] internal virtual List ExceptionDescription { get; set; } /// /// 操作员 /// [JsonProperty] internal virtual List Operation { get; set; } /// /// 操作日期 /// [JsonProperty] internal virtual List OperationDate { get; set; } /// /// 最大行下标 /// internal virtual int LastUsedRowIndex { get { return worksheet.Rows.LastUsedIndex; } } /// /// 最大列下标 /// internal virtual int LastUsedColumnIndex { get { return worksheet.GetUsedRange().ColumnCount - 1; } } internal virtual string ExceptionFreezeString { get; } /// /// 签名 /// internal SpreadsheetPopupMenu _popupOperation; internal virtual SpreadsheetPopupMenu popupOperation { get { if (_popupOperation == null) { _popupOperation = new SpreadsheetPopupMenu() { Caption = "签名", Items = { new DXMenuItem("签名",(s,e)=> { WriteValue(EnumMaintenanceCellType.Operation,Utility.SystemRuntimeInfo.CurrentUser.UserName); } ), new DXMenuItem("清空",(s,e)=> { WriteValue(EnumMaintenanceCellType.Operation,"", EnumMaintenanceOperationType.Clear); } ), } }; } return _popupOperation; } } /// /// 正文 /// internal SpreadsheetPopupMenu _popupContent; internal virtual SpreadsheetPopupMenu popupContent { get { if (_popupContent == null) { _popupContent = new SpreadsheetPopupMenu() { Caption = "正文", Items = { new DXMenuItem("正常",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "√"); }), new DXMenuItem("紧固",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "N"); }), new DXMenuItem("给油",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "U"); }), new DXMenuItem("清洁",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "C"); }), new DXMenuItem("修理",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "R"); }), new DXMenuItem("调整",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "T"); }), new DXMenuItem("替换",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "H"); }), new DXMenuItem("有问题/异常",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "△", EnumMaintenanceOperationType.Write,true);} ), new DXMenuItem("不适用或无生产",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "N/A"); }), new DXMenuItem("清空",(s,e)=>{WriteValue(EnumMaintenanceCellType.Content, "", EnumMaintenanceOperationType.Clear); }), } }; } return _popupContent; } } /// /// 操作时间 /// internal SpreadsheetPopupMenu _popupDate; internal virtual SpreadsheetPopupMenu popupDate { get { if (_popupDate == null) { _popupDate = new SpreadsheetPopupMenu() { Caption = "操作时间", Items = { new DXMenuItem("时间",(a,aa)=> { WriteValue(EnumMaintenanceCellType.OperationDate, DateTime.Now.ToString("yyyy-MM-dd")); }), new DXMenuItem("清空",(a,aa)=> { WriteValue(EnumMaintenanceCellType.OperationDate, "", EnumMaintenanceOperationType.Clear); } ), } }; } return _popupDate; } } /// /// 其他异常处理 /// internal SpreadsheetPopupMenu _popupException; internal virtual SpreadsheetPopupMenu popupException { get { if (_popupException == null) { _popupException = new SpreadsheetPopupMenu() { Caption = "其他异常处理", Items = { new DXMenuItem("编辑",(a,aa)=> { WriteValue(EnumMaintenanceCellType.ExceptionDescription, "", EnumMaintenanceOperationType.Write,true); } ), new DXMenuItem("清空", (a, aa) => { WriteValue(EnumMaintenanceCellType.ExceptionDescription, "", EnumMaintenanceOperationType.Clear,false); }), }, }; } return _popupException; } } public BaseTemplate() { InstallationSite = new List(); EquipmentName = new List(); DeviceSpecification = new List(); EquipmentID = new List(); Year = new List(); Content = new List(); ExceptionDescription = new List(); Operation = new List(); OperationDate = new List(); } /// /// 初始化对象 /// /// Worksheet 控件对象 /// 当前计划类型 /// 当前编辑列 public BaseTemplate(Worksheet ws) { InstallationSite = new List(); EquipmentName = new List(); DeviceSpecification = new List(); EquipmentID = new List(); Year = new List(); Content = new List(); ExceptionDescription = new List(); Operation = new List(); OperationDate = new List(); YearAndMonth = new List(); worksheet = ws; } public virtual void WriteValue(EnumMaintenanceCellType CellType, string value, EnumMaintenanceOperationType operationType = EnumMaintenanceOperationType.Write, bool IsException = false) { OnWriteValue?.Invoke(CellType, value, operationType, IsException); } public virtual void ReplaceData(BaseTemplate Data) { foreach (SheetDataItem item in Data.EquipmentName) { SheetDataItem sdi = EquipmentName.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.InstallationSite) { SheetDataItem sdi = InstallationSite.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.DeviceSpecification) { SheetDataItem sdi = DeviceSpecification.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.EquipmentID) { SheetDataItem sdi = EquipmentID.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.Year) { SheetDataItem sdi = Year.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.YearAndMonth) { SheetDataItem sdi = YearAndMonth.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.Content) { SheetDataItem sdi = Content.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.ExceptionDescription) { SheetDataItem sdi = ExceptionDescription.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.Operation) { SheetDataItem sdi = Operation.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } foreach (SheetDataItem item in Data.OperationDate) { SheetDataItem sdi = OperationDate.FirstOrDefault(x => x.ColumnIndex == item.ColumnIndex && x.RowIndex == item.RowIndex); sdi.Value = item.Value; } } /// /// 表单验证 /// /// public virtual TemplateValidateResultModel FormValidate(Guid Sign, EnumMaintenanceType OperationType, string OperationTypeValue, EnumMaintenanceBanciType Banci = EnumMaintenanceBanciType.None) { return new TemplateValidateResultModel(); } } [JsonObject(MemberSerialization.OptIn)] public class SubTemplateData { internal BaseTemplate Datas; public SubTemplateData(BaseTemplate m_Data) { Datas = m_Data; } /// /// 设备名称 /// [JsonProperty] internal virtual List EquipmentName { get { return Datas.EquipmentName; } } /// /// 设备安装地点 /// [JsonProperty] internal virtual List InstallationSite { get { return Datas.InstallationSite; } } /// /// 设备型号规格 /// [JsonProperty] internal virtual List DeviceSpecification { get { return Datas.DeviceSpecification.Where(x => x.Value != null && x.Sign != Guid.Empty).ToList(); } } /// /// 设备编号 /// [JsonProperty] internal virtual List EquipmentID { get { return Datas.EquipmentID; } } /// /// 年 /// [JsonProperty] internal virtual List Year { get { return Datas.Year; } } [JsonProperty] internal virtual List YearAndMonth { get { return Datas.YearAndMonth; } } /// /// 内容 /// [JsonProperty] internal virtual List Content { get { return Datas.Content.Where(x => x.Value != null && x.Sign != Guid.Empty).ToList(); } } /// /// 其他异常处理 /// [JsonProperty] internal virtual List ExceptionDescription { get { return Datas.ExceptionDescription.Where(x => x.Value != null && x.Sign != Guid.Empty).ToList(); } } /// /// 操作员 /// [JsonProperty] internal virtual List Operation { get { return Datas.Operation.Where(x => x.Value != null && x.Sign != Guid.Empty).ToList(); } } /// /// 操作日期 /// [JsonProperty] internal virtual List OperationDate { get { return Datas.OperationDate.Where(x => x.Value != null && x.Sign != Guid.Empty).ToList(); } } } }