CRVM-redis-6/Host/DataSearchForm.cs
2025-11-07 02:02:31 +08:00

522 lines
21 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 System;
using System.Data;
using System.Windows.Forms;
using CRVM.SIDExcuter;
using CRVM.Entity;
using System.Text;
using System.Collections.Generic;
using System.IO;
namespace CRVM
{
public delegate void ShowGridData(object sender, string path);
struct SelectConditions
{
public DateTime start;
public DateTime end;
public bool isSelByDate;
public string coilid;
public bool isAlarm;
};
public partial class DataSearchForm : Form
{
public event ShowGridData showdata;
//string[] columnArrayCoilInfo = { "生产结束时间", "报警状态", "热卷号", "冷卷号", "钢种牌号", "出钢记号", "宽度(mm)", "入口厚度(mm)", "出口厚度(mm)", "成品长度", "结束标记", "原始数据文件路径", "能量数据文件路径" };
//int[] columnArrayCoilInfoWidth = { 200, 100, 150, 150, 0, 120, 120, 120, 120, 120, 100, 400, 400 };
string[] columnArrayCoilInfo = { "生产结束时间", "报警状态", "热卷号", "冷卷号", "钢种牌号", "出钢记号", "宽度(mm)", "入口厚度(mm)", "出口厚度(mm)", "成品长度", "成品长度(L2)", "结束标记", "原始数据文件路径", "能量数据文件路径"
// "辊号(1/B/U)", "累重[t](1/B/U)", "辊号(1/B/L)", "累重[t](1/B/L)","辊号(1/M/U)", "累重[t](1/M/U)", "辊号(1/M/L)", "累重[t](1/M/L)","辊号(1/W/U)", "累重[t](1/W/U)", "辊号(1/W/L)", "累重[t](1/W/L)",
// "辊号(2/B/U)", "累重[t](2/B/U)", "辊号(2/B/L)", "累重[t](2/B/L)","辊号(2/M/U)", "累重[t](2/M/U)", "辊号(2/M/L)", "累重[t](2/M/L)","辊号(2/W/U)", "累重[t](2/W/U)", "辊号(2/W/L)", "累重[t](2/W/L)",
// "辊号(3/B/U)", "累重[t](3/B/U)", "辊号(3/B/L)", "累重[t](3/B/L)","辊号(3/M/U)", "累重[t](3/M/U)", "辊号(3/M/L)", "累重[t](3/M/L)","辊号(3/W/U)", "累重[t](3/W/U)", "辊号(3/W/L)", "累重[t](3/W/L)",
// "辊号(4/B/U)", "累重[t](4/B/U)", "辊号(4/B/L)", "累重[t](4/B/L)","辊号(4/M/U)", "累重[t](4/M/U)", "辊号(4/M/L)", "累重[t](4/M/L)","辊号(4/W/U)", "累重[t](4/W/U)", "辊号(4/W/L)", "累重[t](4/W/L)",
// "辊号(5/B/U)", "累重[t](5/B/U)", "辊号(5/B/L)", "累重[t](5/B/L)","辊号(5/M/U)", "累重[t](5/M/U)", "辊号(5/M/L)", "累重[t](5/M/L)","辊号(5/W/U)", "累重[t](5/W/U)", "辊号(5/W/L)", "累重[t](5/W/L)",
};
int[] columnArrayCoilInfoWidth = { 200, 100, 150, 150, 0, 120, 120, 120, 120, 120, 120, 100, 400, 400
// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125,
// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125,
// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125,
// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125,
// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125,
};
string[] columnArrayAlarmInfo = { "开始位置", "结束位置", "机架", "类型", "能量" };
int[] columnArrayAlarmInfoWidth = { 100, 100, 70, 70, 110 };
string Dbpath;
DataTable orignViewData = null;
List<string> allCoilIdList = new List<string>();
public DataSearchForm()
{
InitializeComponent();
}
private void DataSearch_Load(object sender, EventArgs e)
{
InitalSetting();
}
private void DoReadWork(SelectConditions condition)
{
if (this.backgroundWorker1.IsBusy)
{
MessageBox.Show("数据正在加载中,请稍后!");
return;
}
else
{
this.backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;
this.backgroundWorker1.DoWork += backgroundWorker1_DoWork;
this.backgroundWorker1.RunWorkerAsync(condition);//传入查询条件,开始异步查询
this.Cursor = Cursors.WaitCursor;
tableLayoutPanel1.Enabled = false;
}
}
void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
SelectConditions condition = (SelectConditions)e.Argument;
DataTable data = null;
try
{
if (condition.isSelByDate)//根据时间查询
{
data = DbHelper.GetInstance("").GetCoilInfoByDate(condition.isAlarm, condition.start, condition.end);
}
else//根据卷号查询
{
data = DbHelper.GetInstance("").GetCoilInfoByColdId(condition.coilid);
}
//重新组织数据
if (data != null)
{
for (int i = 0; i < data.Columns.Count; i++)
{
data.Columns[i].ColumnName = columnArrayCoilInfo[i];
}
for (int i = 0; i < data.Rows.Count; i++)
{
if (data.Rows[i]["报警状态"].ToString().Trim() == "1")
{
data.Rows[i]["报警状态"] = "Y";
}
else
{
data.Rows[i]["报警状态"] = "N";
}
if (data.Rows[i]["结束标记"].ToString().Trim() == "0")
{
data.Rows[i]["结束标记"] = "超时";
}
else if (data.Rows[i]["结束标记"].ToString().Trim() == "1")
{
data.Rows[i]["结束标记"] = "剪切";
}
else
{
data.Rows[i]["结束标记"] = "手动";
}
}
}
e.Result = data;//输出结果
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
e.Result = null;
}
}
void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
this.Cursor = Cursors.Default;
this.tableLayoutPanel1.Enabled = true;
DataTable data = (DataTable)e.Result;
dataGrid_coilInfo.DataSource = data;
ResetCoilInfoDataGridView(dataGrid_coilInfo);
}
private void InitalSetting()
{
date_Start.Value = SysParam.Instance.searchStartTime;
date_End.Value = SysParam.Instance.searchEndTime;
checkBox_alarm.Checked = SysParam.Instance.searchAlarmChecked ? true : false;
panel5.Visible = false;
SelectConditions condition = new SelectConditions();
condition.isSelByDate = true;
condition.isAlarm = SysParam.Instance.searchAlarmChecked;
condition.start = date_Start.Value;
condition.end = date_End.Value;
DoReadWork(condition);
}
//显示钢卷的详细报警信息
private void dataGridcoilInfo_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0)
{
return;
}
if (e.ColumnIndex == 2)
{
if (dataGrid_coilInfo.Columns.Contains("冷卷号"))
{
DataTable dt = DbHelper.GetInstance("").SelAlarmInfoByColdId(dataGrid_coilInfo.CurrentRow.Cells["冷卷号"].Value.ToString());
if (dt.Rows.Count > 0)
{
dataGrid_alarmData.DataSource = dt;
for (int i = 0; i < dataGrid_alarmData.Rows.Count; i++)
{
if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "0") { dataGrid_alarmData.Rows[i].Cells[3].Value = "低频"; }
if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "1") { dataGrid_alarmData.Rows[i].Cells[3].Value = "中频"; }
if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "2") { dataGrid_alarmData.Rows[i].Cells[3].Value = "高频"; }
}
ResetAlarmInfoDataGridView(dataGrid_alarmData);
panel5.Visible = true;
}
else
{
panel5.Visible = false;
MessageBox.Show("不存在报警缺陷!");
}
}
}
if (e.ColumnIndex == 0)
{
if (dataGrid_coilInfo.Columns.Contains("选择"))
{
string cellValue = dataGrid_coilInfo.CurrentRow.Cells["选择"].Value.ToString();
if (cellValue == "true")
{
dataGrid_coilInfo.CurrentRow.Cells["选择"].Value = "false";
}
else
{
dataGrid_coilInfo.CurrentRow.Cells["选择"].Value = "true";
}
}
}
}
private void btn_SearchByDate_Click(object sender, EventArgs e)
{
SelectConditions condition = new SelectConditions();
condition.isSelByDate = true;
condition.isAlarm = SysParam.Instance.searchAlarmChecked;
condition.start = date_Start.Value;
condition.end = date_End.Value;
SysParam.Instance.searchStartTime = date_Start.Value;
SysParam.Instance.searchEndTime = date_End.Value;
DoReadWork(condition);
}
private void btn_ViewOrignData_Click(object sender, EventArgs e)
{
if (this.dataGrid_coilInfo.SelectedRows.Count > 0)
{
Dbpath = this.dataGrid_coilInfo.SelectedRows[0].Cells["原始数据文件路径"].Value.ToString();
if (showdata != null)
{
showdata(sender, Dbpath);
}
this.Close();
}
else
{
MessageBox.Show("请选择要查询的钢卷!");
}
}
private void btn_ViewEnergyData_Click(object sender, EventArgs e)
{
if (this.dataGrid_coilInfo.SelectedRows.Count > 0)
{
Dbpath = this.dataGrid_coilInfo.SelectedRows[0].Cells["能量数据文件路径"].Value.ToString();
if (showdata != null)
{
showdata(sender, Dbpath);
}
}
else
{
MessageBox.Show("请选择要查询的钢卷!");
}
}
private void btn_SearchByColdId_Click(object sender, EventArgs e)
{
SelectConditions condition = new SelectConditions();
condition.isSelByDate = false;
condition.coilid = textBox_ColdId.Text.Trim();
DoReadWork(condition);
}
private void checkBox_alarm_CheckedChanged(object sender, EventArgs e)
{
if (checkBox_alarm.Checked)
{
SysParam.Instance.searchAlarmChecked = true;
}
else
{
SysParam.Instance.searchAlarmChecked = false;
}
}
private void ResetCoilInfoDataGridView(DataGridView dgv)
{
if (dgv.Columns.Contains("选择"))
{
for (int i = 1; i < dgv.Columns.Count; i++)
{
dgv.Columns[i].Width = columnArrayCoilInfoWidth[i - 1];
dataGrid_coilInfo.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
if (i == 5)
{
dgv.Columns[i].Visible = false;
}
}
}
else
{
for (int i = 0; i < dgv.Columns.Count; i++)
{
dgv.Columns[i].Width = columnArrayCoilInfoWidth[i];
dataGrid_coilInfo.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
if (i == 4)
{
dgv.Columns[i].Visible = false;
}
}
}
if (!dgv.Columns.Contains("选择"))
{
DataGridViewCheckBoxColumn addColumn = new DataGridViewCheckBoxColumn();
addColumn.HeaderText = "选择";
addColumn.Name = "选择";
addColumn.Resizable = System.Windows.Forms.DataGridViewTriState.False;
addColumn.TrueValue = "true";
//dgv.Columns.Add(addColumn);
dgv.Columns.Insert(0, addColumn);
dgv.Columns["选择"].DisplayIndex = 0;
dgv.Columns["选择"].ReadOnly = false;
addFullSelect();
}
else
{
dgv.Columns["选择"].ReadOnly = false;
}
for (int i = 0; i < dgv.Rows.Count; i++)
{
dgv.Rows[i].Cells["选择"].Value = "false";
}
}
private void ResetAlarmInfoDataGridView(DataGridView dgv)
{
for (int i = 0; i < dgv.Columns.Count; i++)
{
dgv.Columns[i].HeaderText = columnArrayAlarmInfo[i];
dgv.Columns[i].Name = columnArrayAlarmInfo[i];
dgv.Columns[i].Width = columnArrayAlarmInfoWidth[i];
dataGrid_alarmData.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
panel5.Visible = false;
if (tabControl1.SelectedTab.Text == "时间检索")
{
btn_SearchByDate_Click(sender, e);
}
else
{
btn_SearchByColdId_Click(sender, e);
}
}
private void btn_Export_Click(object sender, EventArgs e)
{
if (this.dataGrid_coilInfo.SelectedRows.Count <= 0)
{
MessageShowForm form = new MessageShowForm("警告", "请选择导出的卷!");
form.ShowDialog();
return;
}
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string filePath = folderBrowserDialog1.SelectedPath;
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string filePath_orig = filePath + "\\original data";
if (!Directory.Exists(filePath_orig))
{
Directory.CreateDirectory(filePath_orig);
}
bool flag = false;
if (dataGrid_coilInfo.Columns.Contains("选择"))
{
for (int i = 0; i < dataGrid_coilInfo.Rows.Count; i++)
{
string checkValue = dataGrid_coilInfo.Rows[i].Cells["选择"].Value.ToString();
if (checkValue == "true")//选中
{
string coldcoilno = this.dataGrid_coilInfo.Rows[i].Cells["冷卷号"].Value.ToString().Trim();
string sourcefileName_orig = this.dataGrid_coilInfo.Rows[i].Cells["原始数据文件路径"].Value.ToString().Trim();
if (!File.Exists(sourcefileName_orig))
{
MessageShowForm form = new MessageShowForm("警告", "原始数据源文件dat不存在" + sourcefileName_orig);
form.ShowDialog();
return;
}
//string destfileName_orig = sourcefileName_orig.Substring(sourcefileName_orig.Length - 18, 18);
string destfileName_orig = Path.GetFileName(sourcefileName_orig);
File.Copy(sourcefileName_orig, filePath_orig + "\\" + destfileName_orig + "_" + coldcoilno, true);
string filePath_energy = filePath + "\\energy data";
if (!Directory.Exists(filePath_energy))
{
Directory.CreateDirectory(filePath_energy);
}
string sourcefileName_energy = this.dataGrid_coilInfo.Rows[i].Cells["能量数据文件路径"].Value.ToString();
if (!File.Exists(sourcefileName_energy))
{
MessageShowForm form = new MessageShowForm("警告", "能量数据源文件txt不存在" + sourcefileName_energy);
form.ShowDialog();
return;
}
if (!File.Exists(sourcefileName_energy))
{
MessageShowForm form = new MessageShowForm("警告", "能量数据源文件txt不存在");
form.ShowDialog();
return;
}
//string destfileName_energy = sourcefileName_orig.Substring(sourcefileName_energy.Length - 18, 18);
string destfileName_energy = Path.GetFileName(sourcefileName_energy);
File.Copy(sourcefileName_energy, filePath_energy + "\\" + destfileName_energy + "_" + coldcoilno, true);
flag = true;
}
}
}
if (flag)
{
MessageBox.Show("拷贝成功!");
}
else
{
MessageBox.Show("没有需要拷贝的文件!");
}
}
}
private void btnExportCoilMsg_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string saveDirectory = saveFileDialog1.FileName;
ExportToCSV export = new ExportToCSV(saveDirectory);
DataTable data = new DataTable();
for (int i = 1; i < dataGrid_coilInfo.Columns.Count; i++)
{
DataColumn col = new DataColumn();
col.ColumnName = dataGrid_coilInfo.Columns[i].HeaderText;
data.Columns.Add(col);
}
for (int j = 0; j < dataGrid_coilInfo.Rows.Count; j++)
{
if (dataGrid_coilInfo.Columns.Contains("选择"))
{
if (dataGrid_coilInfo.Rows[j].Cells["选择"].Value.ToString() == "true")
{
DataRow row = data.NewRow();
for (int i = 0; i < data.Columns.Count; i++)
{
row[i] = dataGrid_coilInfo.Rows[j].Cells[i + 1].Value;
}
data.Rows.Add(row);
}
}
}
export.writeProductData(data);
if (export.writeOK)
{
MessageBox.Show("导出钢卷信息成功!");
}
else
{
MessageBox.Show("导出钢卷信息失败!");
}
}
}
CheckBox ckbox = new CheckBox();
private void addFullSelect()
{
System.Drawing.Rectangle rect = dataGrid_coilInfo.GetCellDisplayRectangle(0, -1, true);
ckbox.Text = "全选";
//ckbox.Checked = true;
ckbox.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
ckbox.Font = dataGrid_coilInfo.Columns[0].DefaultCellStyle.Font;
ckbox.Size = new System.Drawing.Size(dataGrid_coilInfo.Columns[0].Width, 30);
ckbox.Location = new System.Drawing.Point(rect.Location.X, rect.Location.Y);
ckbox.CheckedChanged += ckbox_CheckedChanged;
dataGrid_coilInfo.Controls.Add(ckbox);
}
void ckbox_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < dataGrid_coilInfo.Rows.Count; i++)
{
if (dataGrid_coilInfo.Columns.Contains("选择"))
{
if (ckbox.Checked)
{
dataGrid_coilInfo.Rows[i].Cells["选择"].Value = "true";
}
else
{
dataGrid_coilInfo.Rows[i].Cells["选择"].Value = "false";
}
}
}
}
}
}