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;
namespace DeviceRepairAndOptimization.Biz.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,GlobalInfo.CurrentUser.RealName); } ),
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;
}
}
}
[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();
}
}
}
}