Files
2026-08-04 18:36:40 +08:00

1068 lines
46 KiB
C#
Raw Permalink 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 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;
}
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<DataResult<DataTable>> 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<AGearEntity> queryProcessListA;
public List<BatteryEntity> queryProcessListD;
public List<BatteryEntity> queryProcessListE;
public List<BatteryReplace> queryProcessListF;
public List<EGearEntity> queryProcessListB;
/// <summary>
/// DataTable-->List
/// 获取三语切换的DataTable.ColumnName
/// </summary>
/// <param name="selectType"></param>
/// <param name="dataTable"></param>
/// <returns></returns>
public DataTable GetHistoryOutData(int selectType, DataTable dataTable)
{
string selectTypeStr = "";
//查询数据保存成List
switch (selectType)
{
case 0:
queryProcessListA = dataTable.ToList<AGearEntity>();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 1:
queryProcessListD = dataTable.ToList<BatteryEntity>();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 2:
queryProcessListF = dataTable.ToList<BatteryReplace>();
selectTypeStr = "FrmHistory_dgv_Main_";
break;
case 3:
queryProcessListB = dataTable.ToList<EGearEntity>();
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<string, string> GetNewColumnName = originalName =>
{
// 这里可以根据具体需求实现自定义逻辑
return LanguageManager.GetString($"{selectTypeStr + originalName}");
};
// 使用自定义方法替换列名
dataTable = dataTable.ReplaceColumnNamesWithCustomMethod(GetNewColumnName);
return dataTable;
}
private PLCCommunication.Common.DataConvert.DataResult<DataTable> 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<DataTable>("开始时间不能大于结束时间".Translated());
}
TimeSpan timeSpan = endTime - startTime;
if (timeSpan.TotalDays > 7.0)
{
return DataResult.CreateFailResult<DataTable>("查询时间不能超过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>(dataTable);
}
else
{
return DataResult.CreateFailResult<DataTable>("未能查到数据,请检测".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();
}
}
}
/// <summary>
/// 显示序列号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgv_Main_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
DataGridViewHelper.DgvRowPostPaint((DataGridView)sender, e);
}
/// <summary>
/// 给DataGridView绘制边框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgv_Main_Paint(object sender, PaintEventArgs e)
{
DataGridViewHelper.DgvRowPaint((DataGridView)sender, e, Color.FromArgb(1, 146, 235));
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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 统计查询
/// <summary>
/// 班次
/// </summary>
private DataTable dtClasses = null;
/// <summary>
/// 日
/// </summary>
private DataTable dtDays = null;
/// <summary>
/// 周
/// </summary>
private DataTable dtWeeks = null;
/// <summary>
/// 月
/// </summary>
private DataTable dtMonths = null;
#region 1、按班次查询
/// <summary>
/// 按班次查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
}
}
/// <summary>
/// 按班次导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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<object>.ExportDataTableToCSV(dtClasses, saveFileDialog.FileName, out msg))
{
MessageBox.Show("导出成功!".Translated());
}
}
#endregion
# region 2、按日查询
/// <summary>
/// 按日查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_DaysQuery_Click(object sender, EventArgs e)
{
dtDays = null;
string startDateTime = dtpDays.Value.ToString("yyyy-MM-dd 00:00:00");
string endDateTime = dtpDays.Value.ToString("yyyy-MM-dd 23:59:59");
dtDays = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.GetStaticByDay(startDateTime, endDateTime));
//if (dtDays != null )//&& dtDays.Rows.Count > 0
//{
// this.dgvDays.DataSource = null;
// this.dgvDays.DataSource = dtDays;
//}
if (dtDays != null)
{
dtDays = GetHistoryOutData(5, dtDays);
this.dgvDays.DataSource = null;
this.dgvDays.DataSource = dtDays;
}
}
/// <summary>
/// 按日导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_DaysExPort_Click(object sender, EventArgs e)
{
if (dgvDays.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<object>.ExportDataTableToCSV(dtDays, saveFileDialog.FileName, out msg))
{
MessageBox.Show("导出成功!".Translated());
}
}
#endregion
#region 3、按周查询
/// <summary>
/// 按周查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_WeekQuery_Click(object sender, EventArgs e)
{
dtWeeks = null;
//确定星期几
var index = (int)dtpWeek.Value.DayOfWeek;
index = index == 0 ? 7 : index;
//当前周的范围
string retStartDay = dtpWeek.Value.AddDays(-(index - 1)).ToString();
string retEndDay = dtpWeek.Value.AddDays(7 - index).ToString();
dtWeeks = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.GetStaticByWeek(retStartDay, retEndDay));
//if (dtWeeks != null)//&& dtWeeks.Rows.Count > 0
//{
// this.dgvWeek.DataSource = null;
// this.dgvWeek.DataSource = dtWeeks;
//}
if (dtWeeks != null)
{
dtWeeks = GetHistoryOutData(7, dtWeeks);
this.dgvWeek.DataSource = null;
this.dgvWeek.DataSource = dtWeeks;
}
}
/// <summary>
/// 按周导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_WeekExPort_Click(object sender, EventArgs e)
{
if (dgvWeek.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<object>.ExportDataTableToCSV(dtWeeks, saveFileDialog.FileName, out msg))
{
MessageBox.Show("导出成功!".Translated());
}
}
#endregion
#region 4、按月查询
/// <summary>
/// 按月查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_MonthQuery_Click(object sender, EventArgs e)
{
dtMonths = null;
string startDateTime = dtMonth.Value.ToString("yyyy-MM-01 00:00:00");
string endDateTime = new DateTime(dtMonth.Value.Year, dtMonth.Value.Month, DateTime.DaysInMonth(dtMonth.Value.Year, dtMonth.Value.Month)).ToString("yyyy-MM-dd 23:59:59");//通过指定日期计算当月最后一天
dtMonths = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.GetStaticByMonth(startDateTime, endDateTime));
//if (dtMonths != null)// && dtMonths.Rows.Count > 0
//{
// this.dgvMonth.DataSource = null;
// this.dgvMonth.DataSource = dtMonths;
//}
if (dtMonths != null)
{
dtMonths = GetHistoryOutData(6, dtMonths);
this.dgvMonth.DataSource = null;
this.dgvMonth.DataSource = dtMonths;
}
}
/// <summary>
/// 按月导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_MonthExPort_Click(object sender, EventArgs e)
{
if (dgvMonth.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<object>.ExportDataTableToCSV(dtMonths, saveFileDialog.FileName, out msg))
{
MessageBox.Show("导出成功!".Translated());
}
}
#endregion
#endregion
/// <summary>
/// 选择班次时间变更
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmb_AlarmType_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmb_AlarmType.SelectedIndex == 1) //白班
{
DateTime baiClassStart = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 8:30:00"));
DateTime baiClassEnd = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 20:29:59"));
dtp_AlarmTimeStart.Value = baiClassStart;
dtp_AlarmTimeEnd.Value = baiClassEnd;
}
else if (cmb_AlarmType.SelectedIndex == 2) //夜班
{
DateTime yeClassStart = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 20:30:00"));
DateTime yeClassEnd = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd 8:29:59"));
dtp_AlarmTimeStart.Value = yeClassStart;
dtp_AlarmTimeEnd.Value = yeClassEnd;
}
else
{
DateTime baiClassStart = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
DateTime baiClassEnd = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
dtp_AlarmTimeStart.Value = baiClassStart;
dtp_AlarmTimeEnd.Value = baiClassEnd;
}
}
#region 告警查询
/// <summary>
/// 查询数据
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="alarmType"></param>
/// <returns></returns>
private DataResult<DataTable> QueryProcess(string start, string end, int alarmType)
{
DateTime startDateTime = Convert.ToDateTime(start);
DateTime endDateTime = Convert.ToDateTime(end);
if (startDateTime >= endDateTime)
{
return DataResult.CreateFailResult<DataTable>("开始时间不能大于结束时间".Translated());
}
TimeSpan timeSpan = endDateTime - startDateTime;
if (timeSpan.TotalDays > 1.0)
{
return DataResult.CreateFailResult<DataTable>("查询范围不能超过1天".Translated());
}
DataTable dataTable = CommonMethods.db.QueryDataTable(CommonMethods.dBSQL.SelectHostAlarmData(start, end, alarmType));
if (dataTable != null)
{
dataTable = GetHistoryOutData(8, dataTable);
return DataResult.CreateSuccessResult<DataTable>(dataTable);
}
else
{
return DataResult.CreateFailResult<DataTable>("未能查到数据,请检测".Translated());
}
}
/// <summary>
/// 报警信息查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_AlarmQuery_Click(object sender, EventArgs e)
{
string start = this.dtp_AlarmTimeStart.Text;
string end = this.dtp_AlarmTimeEnd.Text;
int alarmType = this.cmb_AlarmType.SelectedIndex;
Task<DataResult<DataTable>> task1 = Task.Run(() =>
{
return QueryProcess(start, end, alarmType);
});
var task2 = task1.ContinueWith(task =>
{
this.Invoke(new Action(() =>
{
if (task.Result.IsSuccess)
{
this.dgv_AlarmData.DataSource = null;
this.dgv_AlarmData.DataSource = task.Result.Content;
}
else
{
new FrmMsgBoxOutWithAck(2, "查询失败:".Translated() + task.Result.Message, "告警查询".Translated()).Show();
}
}));
});
}
/// <summary>
/// 报警信息导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_AlarmExport_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_AlarmData.DataSource);
if (new FrmMsgBoxWithAck("导出报警成功,是否立即打开?".Translated(), "打开报警记录".Translated()).ShowDialog() == DialogResult.OK)
{
Process.Start(saveFileDialog.FileName);
}
}
}
private void dgv_AlarmData_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
DataGridViewHelper.DgvRowPostPaint((DataGridView)sender, e);
}
#endregion
#region 进出站补传Mes
/// <summary>
/// 进出站补传Mes
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private async void btn_ReUpMes_Click(object sender, EventArgs e)
{
this.btn_ReUpMes.Text = "补传中……".Translated();
this.btn_ReUpMes.Enabled = false;
//#region
//int selectType = this.cmb_SelectType.SelectedIndex;
//List<string> barCodes = new List<string>();
//string remark = string.Empty;
//MesResType mesResType = MesResType.D;
//string flag = "2";
//string result = string.Empty;
//string info = string.Empty;
//bool totalUpResult = false;
////0、拿到数据源
//DataTable dt = (DataTable)this.dgv_Main.DataSource;
//try
//{
// if (selectType >= 2 && CommonMethods.mesConfig.isConnected)//dgv有未上传查询结果且cmb_SelectType选择未上传//
// {
// switch (selectType)
// {
// case 2://进站
// #region 数据判断
// if (queryProcessListA == null)
// {
// new FrmMsgBoxOutWithAck(2, "未查询到需补传数据, 请确认!".Translated(), "警告".Translated()).ShowDialog();
// break;
// }
// else if (queryProcessListA.Count <= 0)
// {
// new FrmMsgBoxOutWithAck(2, "未查询到需补传数据, 请确认!".Translated(), "警告".Translated()).ShowDialog();
// break;
// }
// #endregion
// #region 数据组合/上传
// // 2、数据组合
// for (int i = 0; i < queryProcessListA.Count; i++)
// {
// barCodes.Add(queryProcessListA[i].BarCode);
// }
// // 数据上传
// var (success, mesage, resType) = await CommonMethods.hbgMes.ManyCellInStationAsync(CommonMethods.mesConfig.ProductInStation, CommonMethods.mesConfig.siteCode, CommonMethods.mesConfig.lineCode,
// CommonMethods.mesConfig.equipNum, CommonMethods.mesConfig.MaterialCode, CommonMethods.mesConfig.mesUserName, barCodes);
// #endregion
// #region 数据判断/存入数据库
// //3、数据判断
// for (int i = 0; i < barCodes.Count; i++)
// {
// if (success) //调用接口成功
// {
// //4、补传成功标志位
// totalUpResult = true;
// mesResType = resType[i];
// flag = "1";
// switch (mesResType)
// {
// case MesResType.C:// 警示(MES认为是可以当成良品流下去的)
// case MesResType.D:// 条码上传OK
// result = "MES OK";
// remark = mesage[i];
// break;
// case MesResType.A:// 停线,设备报警停机
// case MesResType.B:// 排出
// default:
// result = "MES NG";
// remark = mesage[i];
// break;
// }
// }
// else
// {
// flag = "2";
// result = "MES NG";
// remark = mesage[0];
// }
// if (!remark.Contains("发生一个或多个错误"))
// {
// try
// {
// // 更新数据库
// UpdateIsUpMES(0, flag, result, remark, barCodes[i]);
// }
// catch (Exception ex)
// {
// LogHelper.Instance.WriteError($"补传更新数据库异常,原因:{ex}", "SysErrorLog");
// }
// }
// }
// #endregion
// // 清零
// queryProcessListA.Clear();
// if (totalUpResult)
// {
// new FrmMsgBoxOutWithAck(1, "查询范围内进站数据补传成功".Translated(), "提示".Translated()).ShowDialog();
// }
// else
// {
// new FrmMsgBoxOutWithAck(1, $"查询范围内进站数据补传失败".Translated(), "提示".Translated()).ShowDialog();
// }
// break;
// case 3://出站
// #region 数据判断
// if (queryProcessListB == null)
// {
// new FrmMsgBoxOutWithAck(2, "未查询到需补传数据, 请确认!".Translated(), "警告".Translated()).ShowDialog();
// break;
// }
// else if (queryProcessListB.Count <= 0)
// {
// new FrmMsgBoxOutWithAck(2, "未查询到需补传数据, 请确认!".Translated(), "警告".Translated()).ShowDialog();
// break;
// }
// #endregion
// #region 数据组合/上传
// #region 单条 ×
// //for (int i = 0; i < queryProcessListB.Count; i++)
// //{
// // // 数据上传
// // var (success1, mesage1, resType1) = await CommonMethods.hbgMes.SingleCellOutStationAsync(CommonMethods.mesConfig.ProductOutStation, CommonMethods.mesConfig.siteCode, CommonMethods.mesConfig.lineCode,
// // CommonMethods.mesConfig.equipNum, CommonMethods.mesConfig.MaterialCode, CommonMethods.mesConfig.ModelName, CommonMethods.mesConfig.mesUserName, queryProcessListB[i], 1, CommonMethods.mesConfig.materialLotCodeLocator);
// // #region 数据判断/存入数据库
// // //3、数据判断
// // if (success1) // 调用接口成功
// // {
// // //4、补传成功标志位
// // totalUpResult = true;
// // flag = "1";
// // mesResType = resType1;
// // info = queryProcessListB[i].Info;
// // // 本地判断OK,MES判断OK
// // if (queryProcessListB[i].Result.Contains("OK") && mesResType == MesResType.D)
// // {
// // result = "OK";
// // info = "良品".Translated();
// // }
// // // 本地判断OK,MES判断NG
// // else if (queryProcessListB[i].Result.Contains("OK") && mesResType != MesResType.D)
// // {
// // switch (mesResType)
// // {
// // case MesResType.A: // 停线,设备报警停机
// // result = "MES NG";
// // remark = $"A,{mesage1}";
// // break;
// // case MesResType.B: // MES不良
// // result = "MES NG";
// // remark = $"B,{mesage1}";
// // break;
// // case MesResType.C: // 警示
// // result = "OK"; // MES认为是可以当成良品流下去的
// // remark = $"Alarm:{mesage1}";
// // break;
// // case MesResType.D: // 条码上传OK
// // result = "OK";
// // remark = $"D,{mesage1}";
// // break;
// // default:
// // result = "MES NG";
// // remark = $"{mesage1}";
// // break;
// // }
// // }
// // // 本地判断NG,MES判断OK
// // else if (queryProcessListB[i].Result.Contains("NG") && mesResType == MesResType.D)
// // {
// // result = "NG";
// // remark = $"D,{mesage1}";
// // }
// // // 本地判断NG,MES判断NG
// // else if (queryProcessListB[i].Result.Contains("NG") && mesResType != MesResType.D)
// // {
// // result = "NG";
// // remark = $"{mesResType},{mesage1}";
// // }
// // // 其他情况
// // else
// // {
// // result = "MES NG";
// // remark = mesage1;
// // }
// // }
// // else
// // {
// // flag = "2";
// // result = "MES NG";
// // remark = mesage1;
// // }
// // if (!remark.Contains("发生一个或多个错误"))
// // {
// // try
// // {
// // // 更新数据库
// // UpdateIsUpMES(1, flag, result, remark, queryProcessListB[i].BarCode, info);
// // }
// // catch (Exception ex)
// // {
// // LogHelper.Instance.WriteError($"补传更新数据库异常,原因:{ex}", "SysErrorLog");
// // }
// // }
// // #endregion
// //}
// #endregion
// #region 多条
// List<string> listRemark = GetList<string>(queryProcessListB.Count, "");//备注
// List<string> listResult = GetList<string>(queryProcessListB.Count, "OK");//结果
// List<string> listFlag = GetList<string>(queryProcessListB.Count, "");//是否上传标志
// List<string> listMesMesage = GetList<string>(queryProcessListB.Count, "");//mesMesage
// List<MesResType> listMesResType = GetMesType(queryProcessListB.Count);//mesType.B
// var (success1, mesage1, mesResType1) = await CommonMethods.hbgMes.ManyCellOutStationAsync(CommonMethods.mesConfig.ProductOutStation, CommonMethods.mesConfig.siteCode, CommonMethods.mesConfig.lineCode,
// CommonMethods.mesConfig.equipNum, CommonMethods.mesConfig.MaterialCode, CommonMethods.mesConfig.ModelName, CommonMethods.mesConfig.mesUserName, queryProcessListB, 1, CommonMethods.mesConfig.materialLotCodeLocator,new List<string>(),new List<string>());
// if (success1)
// {
// //补传成功标志位
// totalUpResult = true;
// listMesMesage = mesage1;
// listMesResType = mesResType1;
// listFlag = GetList<string>(queryProcessListB.Count, "1");
// }
// else
// {
// listRemark = GetList<string>(queryProcessListB.Count, "");
// listFlag = GetList<string>(queryProcessListB.Count, "2");
// }
// #endregion
// #region 数据判断/存入数据库
// for (int i = 0; i < queryProcessListB.Count; i++)
// {
// // 本地判断OK,MES判断OK
// if (queryProcessListB[i].Result.Contains("OK") && listMesResType[i] == MesResType.D)
// {
// listResult[i] = "OK,MES OK";
// queryProcessListB[i].Info = "良品".Translated();
// }
// // 本地判断OK,MES判断NG
// else if (queryProcessListB[i].Result.Contains("OK") && listMesResType[i] != MesResType.D)
// {
// switch (listMesResType[i])
// {
// case MesResType.A: // 停线,设备报警停机
// listResult[i] = "OK,MES NG";
// listRemark[i] += $"A,{listMesMesage[i]}";
// break;
// case MesResType.B: // MES不良
// listResult[i] = "OK,MES NG";
// listRemark[i] += $"B,{listMesMesage[i]}";
// break;
// case MesResType.C: // 警示
// listResult[i] = "OK,MES OK"; // MES认为是可以当成良品流下去的
// listRemark[i] += $"Alarm:{listMesMesage[i]}";
// break;
// case MesResType.D: // 条码上传OK
// listResult[i] = "OK,MES OK";
// listRemark[i] += $"D,{listMesMesage[i]}";
// break;
// default:
// listResult[i] = "OK,MES NG";
// listRemark[i] += $"{listMesMesage[i]}";
// break;
// }
// }
// // 本地判断NG,MES判断OK
// else if (queryProcessListB[i].Result.Contains("NG") && listMesResType[i] == MesResType.D)
// {
// listResult[i] = "NG,MES OK";
// listRemark[i] += $"D,{listMesMesage[i]}";
// }
// // 本地判断NG,MES判断NG
// else if (queryProcessListB[i].Result.Contains("NG") && listMesResType[i] != MesResType.D)
// {
// listResult[i] = "NG,MES NG";
// listRemark[i] += $"{listMesResType[i].ToString()},{listMesMesage[i]}";
// }
// // 其他情况
// else
// {
// listResult[i] = "NG,MES NG";
// listRemark[i] += listMesMesage[i];
// }
// // 数据赋值
// queryProcessListB[i].Flag = listFlag[i];
// queryProcessListB[i].Result = listResult[i].TrimStart(',').TrimEnd(',');
// queryProcessListB[i].Remark = listRemark[i].TrimStart(',').TrimEnd(',');
// if (!listRemark[i].Contains("发生一个或多个错误"))
// {
// try
// {
// // 更新数据库
// UpdateIsUpMES(1, queryProcessListB[i].Flag, queryProcessListB[i].Result, queryProcessListB[i].Remark, queryProcessListB[i].BarCode, queryProcessListB[i].Info);
// }
// catch (Exception ex)
// {
// LogHelper.Instance.WriteError($"补传更新数据库异常,原因:{ex}", "SysErrorLog");
// }
// }
// }
// #endregion
// #endregion
// // 清零
// queryProcessListB.Clear();
// if (totalUpResult)
// {
// new FrmMsgBoxOutWithAck(1, "查询范围内出站数据补传成功".Translated(), "提示".Translated()).ShowDialog();
// }
// else
// {
// new FrmMsgBoxOutWithAck(1, $"查询范围内进站数据补传失败".Translated(), "提示".Translated()).ShowDialog();
// }
// break;
// default:
// break;
// }
// }
// else
// {
// new FrmMsgBoxOutWithAck(2, "未选择未上传查询或MES未在线, 请确认!".Translated(), "警告".Translated()).ShowDialog();
// }
//}
//catch (Exception ex)
//{
// //CommonMethods.AddLog(true, $"电芯数据补传异常,原因:{ex.Message}");
// LogHelper.Instance.WriteError($"电芯数据补传异常,原因:{ex}", "SysErrorLog");
//}
//#endregion
//finally
//{
// this.btn_ReUpMes.Text = "补传".Translated();
// this.btn_ReUpMes.Enabled = true;
//}
}
/// <summary>
/// 更新数据库字段值
/// </summary>
/// <param name="barcode"></param>
private void UpdateIsUpMES(int type, string flag, string result, string remark, string barcode, string info = "")
{
switch (type)
{
case 0://结果,备注,进站是否上传MES
AGearEntity m = new AGearEntity
{
BarCode = barcode,
//Flag = flag,
Result = result,
Remark = remark,
};
//int a = CommonMethods.db.UpdateSingle(m, it => new AGearEntity() { Flag = m.Flag, Result = m.Result, Remark = m.Remark }, it => it.BarCode == m.BarCode);
break;
case 1://结果,备注,出站是否上传MES
BGearEntity m1 = new BGearEntity
{
//BarCode = barcode,
//Flag = flag,
//Info = info,
Result = result,
Remark = remark,
};
//int b = CommonMethods.db.UpdateSingle(m1, it => new BGearEntity() { Flag = m1.Flag, Info = m1.Info, Result = m1.Result, Remark = m1.Remark }, it => it.BarCode == m1.BarCode);
break;
default:
break;
}
}
#region 创建空的数组List
public List<T> GetList<T>(int num, T data)
{
List<T> list = new List<T>();
for (int i = 0; i < num; i++)
{
list.Add(data);
}
return list;
}
public List<MesResType> GetMesType(int Num)
{
List<MesResType> mesResTypes = new List<MesResType>();
for (int i = 0; i < Num; i++)
{
mesResTypes.Add(MesResType.B);
}
return mesResTypes;
}
#endregion
#endregion
}
}