DeviceManager/DeviceRepairAndOptimization/Pages/Maintain/pageMaintainView.cs
2024-06-03 00:38:52 +08:00

776 lines
31 KiB
C#
Raw 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 DevExpress.XtraBars.ToolbarForm;
using DeviceRepair.Models;
using DeviceRepair.Models.Common;
using DeviceRepair.Utils;
using DeviceRepairAndOptimization.Biz;
using DeviceRepairAndOptimization.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace DeviceRepairAndOptimization.Pages.Maintain
{
public partial class pageMaintainView : ToolbarForm
{
/// <summary>
/// 设备编号
/// </summary>
string Filter_DeviceID
{
get { return txt_DeviceID.EditValue.ToString().Trim(); }
}
DeviceWarrantyRequestFormFilter _filter;
DeviceWarrantyRequestFormFilter FilterInfo
{
get
{
if (_filter == null)
_filter = new DeviceWarrantyRequestFormFilter();
_filter.EquipmentID = EquipmentID;
if (Filter_Start_Date == DateTime.MinValue)
de_StartDate.EditValue = DateTime.Today.AddMonths(-1);
_filter.StartTime = Filter_Start_Date;
if (Filter_End_Date == DateTime.MinValue)
de_EndDate.EditValue = DateTime.Today.AddDays(1).AddMilliseconds(-1);
_filter.EndTime = Filter_End_Date.AddDays(1).AddMilliseconds(-1);
_filter.Status = Filter_Status;
_filter.DownStatus = Filter_DownStatus;
return _filter;
}
}
string EquipmentID
{
get { return txt_DeviceID.Text.Trim(); }
}
/// <summary>
/// 设备状态
/// </summary>
DeviceWarrantyRequestFormStatus Filter_Status
{
get { return (DeviceWarrantyRequestFormStatus)((int)(cb_Status.EditValue)); }
}
/// <summary>
/// 设备停机状态
/// </summary>
DeviceRunningStatus Filter_DownStatus
{
get { return (DeviceRunningStatus)cbbIsDown.SelectedIndex; }
}
/// <summary>
/// 开始时间
/// </summary>
DateTime Filter_Start_Date
{
get { return Convert.ToDateTime(de_StartDate.EditValue); }
}
/// <summary>
/// 结束时间
/// </summary>
DateTime Filter_End_Date
{
get { return Convert.ToDateTime(de_EndDate.EditValue); }
}
List<LookUpItemModel> lookupMaintenanceStatus;
int m_SelectedCurrentRowIndex = 0;
DeviceWarrantyRequestFormView CurrentObjectInfo = null;
Dictionary<int, string> _UserMapping;
Dictionary<int, string> UserMapping
{
get
{
if (_UserMapping == null)
{
try
{
APIResponseData apiResponseData = UserManager.Instance.GetUserMapping();
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
_UserMapping = apiResponseData.ToDeserializeObject<Dictionary<int, string>>();
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
return _UserMapping;
}
}
public pageMaintainView()
{
InitializeComponent();
this.Load += PageMaintainView_Load;
}
/// <summary>
/// 程序加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void PageMaintainView_Load(object sender, EventArgs e)
{
//ToDescription
if (lookupMaintenanceStatus == null)
lookupMaintenanceStatus = new List<LookUpItemModel>();
foreach (DeviceWarrantyRequestFormStatus item in Enum.GetValues(typeof(DeviceWarrantyRequestFormStatus)))
{
lookupMaintenanceStatus.Add(new LookUpItemModel
{
ValueMember = (int)item,
DisplayMember = item.ToDescription()
});
}
cbbIsDown.Properties.Items.BeginUpdate();
foreach (DeviceRunningStatus item in Enum.GetValues(typeof(DeviceRunningStatus)))
{
cbbIsDown.Properties.Items.Add(item.ToDescription());
}
cbbIsDown.Properties.Items.EndUpdate();
cbbIsDown.SelectedIndex = 0;
// 设置显示成员和值成员
layoutControlGroup4.ViewInfo.OwnerILayoutControl.AllowCustomizationMenu = false;
Root.ViewInfo.OwnerILayoutControl.AllowCustomizationMenu = false;
GridViewInitialize(gridView1);
cb_Status.Properties.DataSource = lookupMaintenanceStatus;
cb_Status.Properties.DisplayMember = "DisplayMember";
cb_Status.Properties.ValueMember = "ValueMember";
cb_Status.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
cb_Status.EditValue = (int)DeviceWarrantyRequestFormStatus.All;
de_StartDate.EditValue = DateTime.Today.AddMonths(-1);
de_EndDate.EditValue = DateTime.Today;
}
List<DeviceWarrantyRequestFormView> DataSource;
/// <summary>
/// 数据加载
/// </summary>
void LoadingGridviewDatas()
{
try
{
splashScreenManager1.ShowWaitForm();
APIResponseData apiResponseData = MaintenanceManager.Instance.GetDatas(FilterInfo);
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
DataSource = apiResponseData.ToDeserializeObject<List<DeviceWarrantyRequestFormView>>();
foreach (DeviceWarrantyRequestFormView item in DataSource)
{
if (string.IsNullOrWhiteSpace(item.CreatorName))
{
item.CreatorName = UserMapping.ContainsKey(item.CreatBy.Value) ? UserMapping[item.CreatBy.Value] : "";
}
}
SizeF size = this.CreateGraphics().MeasureString((DataSource.Count).ToString(), gridView1.Appearance.ViewCaption.Font);
gridView1.IndicatorWidth = Convert.ToInt32(size.Width) + 25;
gridControl1.DataSource = null;
gridControl1.DataSource = DataSource.ToDataTable();
gridView1.BestFitColumns();
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
gridControl1.DataSource = null;
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 行选择模式,且全部只读
/// </summary>
/// <param name="view"></param>
void GridViewInitialize(DevExpress.XtraGrid.Views.Grid.GridView view)
{
gridView1.OptionsMenu.EnableColumnMenu = false;
view.OptionsSelection.EnableAppearanceFocusedCell = false;
view.OptionsScrollAnnotations.ShowSelectedRows = DevExpress.Utils.DefaultBoolean.False;
foreach (DevExpress.XtraGrid.Columns.GridColumn item in view.Columns)
{
item.OptionsColumn.AllowEdit = false;
item.OptionsColumn.AllowGroup = DevExpress.Utils.DefaultBoolean.True;
item.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
item.OptionsColumn.AllowShowHide = false;
}
view.BestFitColumns();
}
/// <summary>
/// 表格行号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
e.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
SizeF size = e.Graphics.MeasureString((e.RowHandle + 1).ToString(), e.Appearance.Font);
}
}
/// <summary>
/// 多选框标题修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.Caption == "Selection")
{
e.Info.Caption = "选择";
}
}
/// <summary>
/// 单元格点击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
e.Handled = true;
return;
}
if (e.Column.Caption == "Selection")
{
if (this.m_SelectedCurrentRowIndex == e.RowHandle && this.gridView1.IsRowSelected(e.RowHandle))
this.gridView1.UnselectRow(e.RowHandle);
}
}
/// <summary>
/// 选择行改变
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
bool WaitIsShowBefore = splashScreenManager1.IsSplashFormVisible;
try
{
if (!WaitIsShowBefore)
splashScreenManager1.ShowWaitForm();
if (e.FocusedRowHandle >= 0)
{
m_SelectedCurrentRowIndex = e.FocusedRowHandle;
DataRowView drv = gridView1.GetRow(e.FocusedRowHandle) as DataRowView;
string AutoID = drv.Row["AutoID"]?.ToString();
int intAutoID = 0;
if (!int.TryParse(AutoID, out intAutoID) && intAutoID <= 0)
{
throw new Exception("获取行数据出错,请重试!");
}
CurrentObjectInfo = DataSource.FirstOrDefault(x => x.AutoID == intAutoID);
if (CurrentObjectInfo == null)
{
throw new Exception("获取行数据出错,请重试!");
}
btn_Maintain.Enabled = CurrentObjectInfo.MaintaionItems == null || CurrentObjectInfo.MaintaionItems.SubmitBy == 0 ? true : false;
btn_ChangeDownStatus.Enabled = CurrentObjectInfo.MaintaionItems == null || CurrentObjectInfo.MaintaionItems?.SubmitBy == 0 ? true : false;
// 双重确认
btn_Validate.Enabled = false;
if (CurrentObjectInfo.MaintaionItems != null && CurrentObjectInfo.MaintaionItems.SubmitBy > 0)
{
// 技术人员确认
if ((GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM1") || GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM2")) && CurrentObjectInfo.MaintaionItems.ValidateBy == 0)
{
btn_Validate.Enabled = true;
btn_Validate.Tag = "1";
}//&& CurrentObjectInfo.MaintaionItems.ValidateBy != GlobalInfo.CurrentUser.AutoID
else if (CurrentObjectInfo.MaintaionItems.ValidateBy > 0 && CurrentObjectInfo.MaintaionItems.ValidateBy != GlobalInfo.CurrentUser.AutoID && (GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM2") || GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM3")))
{
if (CurrentObjectInfo.MaintaionItems.Validate2By == 0)
{
btn_Validate.Enabled = true;
btn_Validate.Tag = "2";
}
}
}
simpleButton1.Enabled = CurrentObjectInfo.RestorationConfirmationBy > 0;
btn_Export.Enabled = CurrentObjectInfo.RestorationConfirmationBy > 0;
#region
ucMaintenance view = new ucMaintenance(CurrentObjectInfo);
this.splitContainerControl1.Panel2.Controls.Clear();
this.splitContainerControl1.Panel2.Controls.Add(view);
view.Show();
this.splitContainerControl1.Panel2.Refresh();
#endregion
#region
if (gridView1.SelectedRowsCount > 0)
{
for (int i = 0; i < this.gridView1.RowCount; i++)
{
if (this.gridView1.IsRowSelected(i) && this.gridView1.FocusedRowHandle.ToString().Equals(i.ToString()) == false)
{
this.gridView1.UnselectRow(i);
}
}
}
this.gridView1.SelectRow(e.FocusedRowHandle);
#endregion
}
else
{
CurrentObjectInfo = null;
}
if (!WaitIsShowBefore)
splashScreenManager1.CloseWaitForm();
}
catch (Exception ex)
{
if (!WaitIsShowBefore)
splashScreenManager1.CloseWaitForm();
gridView1.FocusedRowChanged += gridView1_FocusedRowChanged;
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 查询数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Query_Click(object sender, EventArgs e)
{
if (!GlobalInfo.HasRole("BIZ_REPAIRRECORD_VIEW"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
LoadingGridviewDatas();
}
private void splitContainerControl1_SplitterMoved(object sender, EventArgs e)
{
this.splitContainerControl1.Panel2.Refresh();
this.splitContainerControl1.Panel1.Refresh();
}
private void pageMaintainView_SizeChanged(object sender, EventArgs e)
{
this.Refresh();
}
/// <summary>
/// 维修
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Maintain_Click(object sender, EventArgs e)
{
try
{
if (!GlobalInfo.HasRole("BIZ_REPAIRRECORD_EDIT"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
if (CurrentObjectInfo == null)
{
throw new Exception($"请选择要维修的停机单!");
}
using (pageMaintainEdit view = new pageMaintainEdit(CurrentObjectInfo))
{
if (view.ShowDialog() == DialogResult.OK)
{
XtraMessageBoxHelper.Info("操作成功!");
}
LoadingGridviewDatas();
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 双重恢复验证
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Validate_Click(object sender, EventArgs e)
{
try
{
if (!GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM1") && !GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM2") && !GlobalInfo.HasRole("BIZ_FIELD_MAINTENANCE_COMFIRM3"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
if (CurrentObjectInfo == null)
{
throw new Exception($"请选择要操作的停机单!");
}
if (XtraMessageBoxHelper.Ask($"是否确认当前设备已恢复!") == DialogResult.OK)
{
int t = 0;
if (!int.TryParse(btn_Validate.Tag + "", out t) && (t != 1 && t != 2))
{
throw new Exception($"当前操作员类型获取出错,请重试!");
}
APIResponseData apiResponseData = MaintenanceManager.Instance.DoubleValidateMaintenance(CurrentObjectInfo.AutoID, t);
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
XtraMessageBoxHelper.Info("操作成功!");
LoadingGridviewDatas();
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 修改停机状态
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_ChangeDownStatus_Click(object sender, EventArgs e)
{
try
{
if (!GlobalInfo.HasRole("BIZ_REPAIRRECORD_EDIT"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
if (CurrentObjectInfo == null)
{
throw new Exception($"请选择要维修的停机单!");
}
if (XtraMessageBoxHelper.Ask($"是否确认将维修单:<color=red>{CurrentObjectInfo.AutoID}</color>的停机状态修改为:<color=blue>{(CurrentObjectInfo.IsDown ? "" : "")}</color>状态!") == DialogResult.OK)
{
APIResponseData apiResponseData = MaintenanceManager.Instance.ChangeDownStatus(CurrentObjectInfo.AutoID, !CurrentObjectInfo.IsDown);
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
XtraMessageBoxHelper.Info("操作成功!");
LoadingGridviewDatas();
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton1_Click(object sender, EventArgs e)
{
try
{
if (!GlobalInfo.HasRole("BIZ_REPAIRRECORD_PRINT"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
if (CurrentObjectInfo == null)
{
throw new Exception("获取对象失败,请重试!");
}
DataTable table = SubassembliesCurrentData();
FastReport.Report report = new FastReport.Report();
var vLabelDir = System.IO.Path.Combine(Application.StartupPath, "Labels");
//判断文件夹是否存在
if (!System.IO.Directory.Exists(vLabelDir))
{
throw new Exception("缺少待打印的标签模板目录!");
}
//路径拼接模板文件名
var vFileName = System.IO.Path.Combine(vLabelDir, "DeviceMaintenance.frx");
//判断模板文件是否存在
if (!System.IO.File.Exists(vFileName))
{
throw new Exception("缺少待打印的标签模板文件!");
}
report.Load(vFileName);
report.DoublePass = true;
DataSet dsDatas = new DataSet();
dsDatas.Tables.Add(table);
report.RegisterData(dsDatas, "MaintenanceInfo");
//report.Design();
if (report.Prepare(true))
{
report.ShowPrepared();
}
report.Dispose();
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
private DataTable SubassembliesCurrentData()
{
DataTable table = new DataTable("MaintenanceInfo");
table.Columns.Add("申请部门", typeof(string));
table.Columns.Add("名称", typeof(string));
table.Columns.Add("设备编号", typeof(string));
table.Columns.Add("接收部门", typeof(string));
table.Columns.Add("现象区分", typeof(string));
table.Columns.Add("故障发生地点", typeof(string));
table.Columns.Add("故障发生时间", typeof(string));
table.Columns.Add("维修方式", typeof(string));
table.Columns.Add("产品批号", typeof(string));
table.Columns.Add("修理开始日期", typeof(string));
table.Columns.Add("修理结束日期", typeof(string));
table.Columns.Add("质量部评估", typeof(string));
table.Columns.Add("工程部评估", typeof(string));
table.Columns.Add("总修复时间", typeof(string));
table.Columns.Add("总停机时间", typeof(string));
table.Columns.Add("故障现象", typeof(string));
table.Columns.Add("故障原因", typeof(string));
table.Columns.Add("维修内容", typeof(string));
table.Columns.Add("配件", typeof(string));
table.Columns.Add("人员", typeof(string));
table.Columns.Add("是否需要再验证", typeof(string));
table.Columns.Add("验证编号", typeof(string));
table.Columns.Add("设备恢复确认", typeof(string));
table.Columns.Add("申请部门确认/日期", typeof(string));
APIResponseData apiResponseData = FieldsManager.Instance.GetQuery("SymptomlDistinction,Maintenance,Accessories");
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
List<FieldsInfo> SelectionDatas = apiResponseData.ToDeserializeObject<List<FieldsInfo>>();
Dictionary<int, FieldsInfo> keyValuePairs = SelectionDatas.ToDictionary(x => x.AutoID, x => x);
DataRow dr = table.NewRow();
dr["申请部门"] = $"生产部 - {CurrentObjectInfo.CreatorName}";
dr["名称"] = CurrentObjectInfo.EquipmentName;
dr["设备编号"] = CurrentObjectInfo.EquipmentID;
dr["接收部门"] = "设备实施部";
dr["现象区分"] = keyValuePairs.ContainsKey(CurrentObjectInfo.MaintaionItems.SymptomlDistinction) ? keyValuePairs[CurrentObjectInfo.MaintaionItems.SymptomlDistinction].FieldText : "";
dr["故障发生地点"] = CurrentObjectInfo.LocationName;
dr["故障发生时间"] = CurrentObjectInfo.CreatOn.Value.ToString("yyyy-MM-dd HH:mm:ss");
dr["维修方式"] = keyValuePairs.ContainsKey(CurrentObjectInfo.MaintaionItems.Maintenance) ? keyValuePairs[CurrentObjectInfo.MaintaionItems.Maintenance].FieldText : "";
dr["产品批号"] = CurrentObjectInfo.InProduction ? $@"Yes, Product Lot/Testing Order产品批号/检测任务号{Environment.NewLine}{CurrentObjectInfo.Batch}" : "No";
dr["修理开始日期"] = CurrentObjectInfo.MaintaionItems.MaintainStartTime.ToString("yyyy-MM-dd HH:mm:ss");
dr["修理结束日期"] = CurrentObjectInfo.MaintaionItems.MaintainEndTime.ToString("yyyy-MM-dd HH:mm:ss");
if (CurrentObjectInfo.EvaluatorItems != null && CurrentObjectInfo.EvaluatorItems.Count > 0)
{
var PEItem = CurrentObjectInfo.EvaluatorItems.Where(x => x.EvaluatorCode == "PE").FirstOrDefault();
if (PEItem != null)
{
dr["质量部评估"] = $"{PEItem.Description} - {PEItem.CreatorName}";
}
var QEItem = CurrentObjectInfo.EvaluatorItems.Where(x => x.EvaluatorCode == "QE").FirstOrDefault();
if (QEItem != null)
{
dr["工程部评估"] = $"{QEItem.Description} - {QEItem.CreatorName}";
}
}
DateTime FormSubDate = CurrentObjectInfo.CreatOn.Value;
TimeSpan timeDifference = CurrentObjectInfo.MaintaionItems.MaintainEndTime - CurrentObjectInfo.MaintaionItems.MaintainStartTime;
dr["总修复时间"] = $"{timeDifference.Days}天/{(timeDifference.Hours)}小时/{(timeDifference.Minutes)}分钟/{timeDifference.Seconds}秒";
timeDifference = CurrentObjectInfo.MaintaionItems.MaintainEndTime - FormSubDate;
dr["总停机时间"] = $"{timeDifference.Days}天/{(timeDifference.Hours)}小时/{(timeDifference.Minutes)}分钟/{timeDifference.Seconds}秒";
dr["故障现象"] = CurrentObjectInfo.FaultSymptoms;
dr["故障原因"] = CurrentObjectInfo.MaintaionItems.MaintainCause;
dr["维修内容"] = CurrentObjectInfo.MaintaionItems.MaintainContent;
//配件
if (CurrentObjectInfo.MaintaionItems.AccessoriesItems != null && CurrentObjectInfo.MaintaionItems.AccessoriesItems.Count > 0)
{
System.Text.StringBuilder builder = new System.Text.StringBuilder();
foreach (DeviceWarrantyRequestAccessoriesInfo item in CurrentObjectInfo.MaintaionItems.AccessoriesItems)
{
builder.Append($"{item.FieldName} x {item.AccessoriesCount};");
}
dr["配件"] = builder.ToString();
}
dr["人员"] = UserMapping[CurrentObjectInfo.MaintaionItems.SubmitBy];
if (CurrentObjectInfo.MaintaionItems.BeValidate)
{
dr["是否需要再验证"] = $"Yes 需要Validation ID验证编号{CurrentObjectInfo.MaintaionItems.ValidateNo}";
}
else
{
dr["是否需要再验证"] = $"No 不需要, Rational理由{CurrentObjectInfo.MaintaionItems.Reason}";
}
dr["验证编号"] = "";
string doubleValidate = "";
if (CurrentObjectInfo.MaintaionItems.ValidateBy == 0)
{
doubleValidate = "N/A";
}
else
{
doubleValidate = $"{UserMapping[CurrentObjectInfo.MaintaionItems.ValidateBy]} / {CurrentObjectInfo.MaintaionItems.ValidateOn.ToString("yyyy-MM-dd HH:mm:ss")}";
if (CurrentObjectInfo.MaintaionItems.Validate2By == 0)
{
doubleValidate += " N/A";
}
else
{
doubleValidate += $" {UserMapping[CurrentObjectInfo.MaintaionItems.Validate2By]} / {CurrentObjectInfo.MaintaionItems.Validate2On.ToString("yyyy-MM-dd HH:mm:ss")}";
}
}
dr["设备恢复确认"] = doubleValidate;
dr["申请部门确认/日期"] = $"{CurrentObjectInfo.RestorationConfirmationOnName} / { CurrentObjectInfo.RestorationConfirmationOn.Value.ToString("yyyy-MM-dd HH:mm:ss")}";
table.Rows.Add(dr);
return table;
}
/// <summary>
/// 导出Word
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Export_Click(object sender, EventArgs e)
{
try
{
if (!GlobalInfo.HasRole("BIZ_REPAIRRECORD_EXPORT"))
{
XtraMessageBoxHelper.Error($"当前账号缺少此操作的权限");
return;
}
using (FolderBrowserDialog folderDialog = new FolderBrowserDialog())
{
folderDialog.Description = "请选择保存文件的路径:";
folderDialog.ShowNewFolderButton = true;
DialogResult result = folderDialog.ShowDialog();
if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(folderDialog.SelectedPath))
{
string selectedPath = folderDialog.SelectedPath;
if (CurrentObjectInfo == null)
{
throw new Exception("获取对象失败,请重试!");
}
DataTable table = SubassembliesCurrentData();
FastReport.Report report = new FastReport.Report();
var vLabelDir = Path.Combine(Application.StartupPath, "Labels");
//判断文件夹是否存在
if (!Directory.Exists(vLabelDir))
{
throw new Exception("缺少待打印的标签模板目录!");
}
//路径拼接模板文件名
var vFileName = Path.Combine(vLabelDir, "DeviceMaintenance.frx");
//判断模板文件是否存在
if (!File.Exists(vFileName))
{
throw new Exception("缺少待打印的标签模板文件!");
}
report.Load(vFileName);
report.DoublePass = true;
DataSet dsDatas = new DataSet();
dsDatas.Tables.Add(table);
report.RegisterData(dsDatas, "MaintenanceInfo");
string filePath = Path.Combine(selectedPath, ("维修单" + CurrentObjectInfo.AutoID + ".docx"));
if (report.Prepare())
{
FastReport.Export.OoXML.Word2007Export export = new FastReport.Export.OoXML.Word2007Export();
report.MaxPages = 1;
export.CurPage = 1;
report.Export(export, filePath);
}
report.Dispose();
}
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
}
}