using JinYuan.Helper;
using JinYuan.MES.Enums;
using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using Language;
using MiniExcelLibs;
using PLCCommunication.Common.DataConvert;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LargeSquareOne
{
public partial class FrmHistory : MultiLanguageForm
{
public static FrmHistory _Form;// 单例模式
public FrmHistory()
{
InitializeComponent();
this.cmb_SelectType.Items.AddRange(new string[] { /*"托盘码打印".Translated(), */"电池进站".Translated(), "电池与托盘绑定".Translated(), "电池替换".Translated() });
this.cmb_SelectType.SelectedIndex = 0;
this.dtp_Start.Value = DateTime.Now.AddHours(-2.0f);
this.dtp_End.Value = DateTime.Now;
this.cmb_AlarmType.Items.AddRange(new string[] { "全天".Translated(), "白班".Translated(), "夜班".Translated() });
this.cmb_AlarmType.SelectedIndex = 0;
this.cmbClass.Items.AddRange(new string[] { "白班".Translated(), "夜班".Translated() });
this.cmbClass.SelectedIndex = 0;
_Form = this;
}
///
/// 查询
///
///
///
private void btn_Query_Click(object sender, EventArgs e)
{
string str = this.cmb_SelectType.Text;
if (string.Compare(str, "电池进站".Translated()) == 0)
{
this.cmb_SelectType.SelectedIndex = 0;
}
else if (string.Compare(str, "电池与托盘绑定".Translated()) == 0)
{
this.cmb_SelectType.SelectedIndex = 1;
}
else if (string.Compare(str, "电池替换".Translated()) == 0)
{
this.cmb_SelectType.SelectedIndex = 2;
}
//else if (string.Compare(str, "托盘码打印".Translated()) == 0)
// {
// this.cmb_SelectType.SelectedIndex = 3;
// }
string vasid = this.txtVassoioID.Text.Trim();
string barCode = this.txtSteelShellCode.Text.Trim();
string start = this.dtp_Start.Text;
string end = this.dtp_End.Text;
int selectType = this.cmb_SelectType.SelectedIndex;
Task> task1 = Task.Run(() =>
{
return QueryProcess(selectType, vasid, barCode, start, end);
});
var task2 = task1.ContinueWith(task =>
{
this.Invoke(new Action(() =>
{
if (task.Result.IsSuccess)
{
this.dgv_Main.DataSource = null;
this.dgv_Main.DataSource = task.Result.Content;
}
else
{
new FrmMsgBoxOutWithAck(2, "查询失败:".Translated() + task.Result.Message, "错误提示".Translated()).Show();
}
}));
});
}
public List queryProcessListA;
public List queryProcessListD;
public List queryProcessListE;
public List queryProcessListF;
public List queryProcessListB;
///
/// DataTable-->List
/// 获取三语切换的DataTable.ColumnName
///
///
///
///
public DataTable GetHistoryOutData(int selectType, DataTable dataTable)
{
string selectTypeStr = "";
//查询数据保存成List
switch (selectType)
{
case 0:
queryProcessListA = dataTable.ToList();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 1:
queryProcessListD = dataTable.ToList();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 2:
queryProcessListF = dataTable.ToList();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 3:
queryProcessListB = dataTable.ToList();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 4:
selectTypeStr = "FrmHistory_dgvClass_";
break;
case 5:
selectTypeStr = "FrmHistory_dgvDays_";
break;
case 6:
selectTypeStr = "FrmHistory_dgvMonth_";
break;
case 7:
selectTypeStr = "FrmHistory_dgvWeek_";
break;
case 8:
selectTypeStr = "FrmHistory_dgv_AlarmData_";
break;
default:
selectTypeStr = "";
break;
}
// 自定义获取新列名的方法 钩子函数
Func GetNewColumnName = originalName =>
{
// 这里可以根据具体需求实现自定义逻辑
return LanguageManager.GetString($"{selectTypeStr + originalName}");
};
// 使用自定义方法替换列名
dataTable = dataTable.ReplaceColumnNamesWithCustomMethod(GetNewColumnName);
return dataTable;
}
private PLCCommunication.Common.DataConvert.DataResult QueryProcess(int selectType, string vasid, string barCode, string start, string end)
{
//判断时间
DateTime startTime = Convert.ToDateTime(start);
DateTime endTime = Convert.ToDateTime(end);
if (startTime > endTime)
{
return DataResult.CreateFailResult("开始时间不能大于结束时间".Translated());
}
TimeSpan timeSpan = endTime - startTime;
if (timeSpan.TotalDays > 7.0)
{
return DataResult.CreateFailResult("查询时间不能超过7天".Translated());
}
DataTable dataTable = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.SelectHostData(selectType, vasid, barCode, start, end));
if (dataTable != null)
{
dataTable = GetHistoryOutData(selectType, dataTable);
return DataResult.CreateSuccessResult(dataTable);
}
else
{
return DataResult.CreateFailResult("未能查到数据,请检测".Translated());
}
}
private void btn_ExPort_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "XLSX文件(*.xlsx)|*.xlsx|所有文件|*.*";
saveFileDialog.Title = "导出历史数据";
saveFileDialog.FileName = "历史数据".Translated() + DateTime.Now.ToString("yyyyMMddHHmmss");
saveFileDialog.DefaultExt = "xlsx";
saveFileDialog.AddExtension = true;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
MiniExcel.SaveAs(saveFileDialog.FileName, this.dgv_Main.DataSource);
if (new FrmMsgBoxWithAck("导出报表成功,是否立即打开?".Translated(), "打开报表记录".Translated()).ShowDialog() == DialogResult.OK)
{
Process.Start(saveFileDialog.FileName);
}
else
{
new FrmMsgBoxOutWithAck(2, "导出报表失败".Translated(), "数据报表导出".Translated()).ShowDialog();
}
}
}
///
/// 显示序列号
///
///
///
private void dgv_Main_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
DataGridViewHelper.DgvRowPostPaint((DataGridView)sender, e);
}
///
/// 给DataGridView绘制边框
///
///
///
private void dgv_Main_Paint(object sender, PaintEventArgs e)
{
DataGridViewHelper.DgvRowPaint((DataGridView)sender, e, Color.FromArgb(1, 146, 235));
}
///
///
///
///
///
private void dgv_Main_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex != -1 && e.ColumnIndex >= 5)
{
object value = this.dgv_Main.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (value == null || value?.ToString().Length == 0)
{
e.Value = "--";
}
}
}
#region 减少闪烁
protected override CreateParams CreateParams
{
get
{
CreateParams parss = base.CreateParams;
parss.ExStyle |= 0x02000000;
return parss;
}
}
#endregion
#region 统计查询
///
/// 班次
///
private DataTable dtClasses = null;
///
/// 日
///
private DataTable dtDays = null;
///
/// 周
///
private DataTable dtWeeks = null;
///
/// 月
///
private DataTable dtMonths = null;
#region 1、按班次查询
///
/// 按班次查询
///
///
///
private void btn_ClassQuery_Click(object sender, EventArgs e)
{
dtClasses = null;
DateTime strDate = dtClass.Value;
int strClass = cmbClass.SelectedIndex;
dtClasses = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.GetStaticByShift(strDate, strClass, CommonMethods.ChangeClassTime));
//if (dtClasses != null)//&& dtClasses.Rows.Count > 0
//{
// this.dgvClass.DataSource = null;
// this.dgvClass.DataSource = dtClasses;
//}
if (dtClasses != null)
{
dtClasses = GetHistoryOutData(4, dtClasses);
this.dgvClass.DataSource = null;
this.dgvClass.DataSource = dtClasses;
}
}
///
/// 按班次导出
///
///
///
private void btn_ClassExPort_Click(object sender, EventArgs e)
{
if (dgvClass.Columns.Count <= 0)
{
MessageBox.Show("导出失败,无查询结果".Translated());
return;
}
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = $"产能统计_按班次统计_{DateTime.Now.ToString("yyyyMMddHHmmss")}";
saveFileDialog.Filter = "*|*.csv";
if (saveFileDialog.ShowDialog() == DialogResult.Cancel)
return;
string msg = "";
if (CSVHelper