using Bro.Common.Helper; using Bro.M071.DBManager; using Bro.M071.Model.Model; using Bro.UI.Model.Winform; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Bro.M071.Process.UI { [MenuNode("M071_DataForm", "数据查询界面", 3, "M071Node", true)] public partial class M071_DataForm : MenuFrmBase { public ProductionMeasurementRecordsManager _productionMeasurementRecordsManager = new ProductionMeasurementRecordsManager(); public MeasurementUnitResultManager _measurementUnitResultManager = new MeasurementUnitResultManager(); ProductionMeasurementRecordsRequest recordsRequest = new ProductionMeasurementRecordsRequest(); MeasurementUnitResultRequest resultRequest = new MeasurementUnitResultRequest(); public M071_DataForm() { InitializeComponent(); InitialProductionRecordsLayout(); InitialMeasurementResultLayout(); } #region 产品记录 private void InitialProductionRecordsLayout() { comboBoxPResult.DataSource = new List() { "", "OK", "NG" }; } private void buttonQuery_Click(object sender, EventArgs e) { recordsRequest.PageNum = 1; GetProductionMeasurementRecords(); } private void buttonToFirstPage_Click(object sender, EventArgs e) { recordsRequest.PageNum = 1; GetProductionMeasurementRecords(); } private void buttonToBeforePage_Click(object sender, EventArgs e) { if (recordsRequest.PageNum != 1) { recordsRequest.PageNum = recordsRequest.PageNum - 1; GetProductionMeasurementRecords(); } } private void buttonToNextPage_Click(object sender, EventArgs e) { if (recordsRequest.PageNum != recordsRequest.TotalPage && recordsRequest.TotalPage != 0) { recordsRequest.PageNum = recordsRequest.PageNum + 1; GetProductionMeasurementRecords(); } } private void buttonToLastPage_Click(object sender, EventArgs e) { if (recordsRequest.TotalPage != 0) { recordsRequest.PageNum = recordsRequest.TotalPage; GetProductionMeasurementRecords(); } } private void ToPage(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { recordsRequest.PageNum = Convert.ToInt32(textBoxPageNum.Text); if (recordsRequest.PageNum > recordsRequest.TotalPage) { recordsRequest.PageNum = recordsRequest.TotalPage == 0 ? 1 : recordsRequest.TotalPage; } GetProductionMeasurementRecords(); } } private void GetProductionMeasurementRecords() { recordsRequest.ProductionCode = textBoxPCode.Text; recordsRequest.ProductionBarcode = textBoxPBarCode.Text; recordsRequest.ProductionResult = comboBoxPResult.SelectedItem?.ToString(); recordsRequest.StartTime = Convert.ToDateTime(dateTimePStartTime.Value.ToString("D").ToString()); recordsRequest.EndTime = Convert.ToDateTime(dateTimePEndTime.Value.AddDays(1).ToString("D").ToString()).AddSeconds(-1); var queryData = _productionMeasurementRecordsManager.GetProductionMeasurementRecords(recordsRequest); dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = queryData; labelTotal.Text = $"数量:{recordsRequest.TotalNum} 总页数:{recordsRequest.TotalPage}"; textBoxPageNum.Text = recordsRequest.PageNum.ToString(); } #endregion #region 测量结果 private void InitialMeasurementResultLayout() { comboBoxResult_MR.DataSource = new List() { "", "OK", "NG" }; comboBoxMeasurementType_MR.DataSource = new List() { "", "Slant", "Alignment", "RowAlignment" }; } private void buttonQuery_MR_Click(object sender, EventArgs e) { resultRequest.PageNum = 1; GetMeasurementUnitResult(); } private void GetMeasurementUnitResult() { resultRequest.ProductionCode = textBoxPCode_MR.Text; resultRequest.ProductionBarcode = textBoxtextBoxPBarCode_MR.Text; resultRequest.MeasurementName = textBoxMeasurementName_MR.Text; resultRequest.MeasurementType = comboBoxMeasurementType_MR.SelectedItem?.ToString(); resultRequest.MeasurementResult = comboBoxResult_MR.SelectedItem?.ToString(); resultRequest.StartTime = Convert.ToDateTime(dateTimePickerStartTime_MR.Value.ToString("D").ToString()); resultRequest.EndTime = Convert.ToDateTime(dateTimePickerEndTime_MR.Value.AddDays(1).ToString("D").ToString()).AddSeconds(-1); var queryData = _measurementUnitResultManager.GetMeasurementUnitResult(resultRequest); dataGridView2.AutoGenerateColumns = false; dataGridView2.DataSource = queryData; labelTotal_MR.Text = $"数量:{recordsRequest.TotalNum} 总页数:{recordsRequest.TotalPage}"; textBoxPageNum_MR.Text = recordsRequest.PageNum.ToString(); } private void ToPageMR(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { resultRequest.PageNum = Convert.ToInt32(textBoxPageNum.Text); if (resultRequest.PageNum > resultRequest.TotalPage) { resultRequest.PageNum = resultRequest.TotalPage == 0 ? 1 : resultRequest.TotalPage; } GetMeasurementUnitResult(); } } private void buttonExport_MR_Click(object sender, EventArgs e) { try { var exportData = GetMeasurementUnitResultAndKeyUnitData(); if (exportData != null) { ExportProductionExcel(exportData); MessageBox.Show("导出完成"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void ExportProductionExcel(ProductionMeasurementUnitResultExportDataSet productionMeasurementUnitResultExportDataSet) { ExcelExportSet excelExportDto = new ExcelExportSet(); excelExportDto.Worksheets = new List() { "生产记录", "检测结果", "原始数据" }; var productionRecordsColumns = new Dictionary() { {"ProductionCode", "产品编码"}, {"ProductionBarcode", "产品条码"}, {"ProductionResult", "产品结果"}, {"OperationStartTime", "操作开始时间"}, {"OperationEndTime", "操作结束时间"} }; var keyUnitColumns = new Dictionary() { {"ProductionBarcode", "产品条码"}, {"Key", "键"}, {"MeasurementItem", "检测项"}, {"ItemValue", "检测值"} }; var measurementUnitResultColumns = new Dictionary() { {"ProductionBarcode", "产品条码"}, {"MeasurementName", "检测名称"}, {"MeasurementType", "检测类型"}, {"MeasurementValue", "检测值"}, {"MeasurementResult", "检测结果"}, }; excelExportDto.WorksheetColumns[excelExportDto.Worksheets[0]] = productionRecordsColumns; excelExportDto.WorksheetColumns[excelExportDto.Worksheets[1]] = keyUnitColumns; excelExportDto.WorksheetColumns[excelExportDto.Worksheets[2]] = measurementUnitResultColumns; excelExportDto.WorksheetDataTable[excelExportDto.Worksheets[0]] = ExcelExportHelper.ListToDataTable(productionMeasurementUnitResultExportDataSet.ProductionMeasurementRecordList, productionRecordsColumns); excelExportDto.WorksheetDataTable[excelExportDto.Worksheets[1]] = ExcelExportHelper.ListToDataTable(productionMeasurementUnitResultExportDataSet.KeyUnitDataList, keyUnitColumns); excelExportDto.WorksheetDataTable[excelExportDto.Worksheets[2]] = ExcelExportHelper.ListToDataTable(productionMeasurementUnitResultExportDataSet.MeasurementUnitResultList, measurementUnitResultColumns); var exportPath = ConfigurationManager.AppSettings["ExportPath"]; if (!Directory.Exists(exportPath)) { Directory.CreateDirectory(exportPath); } var fileName = Path.Combine(exportPath, $"ExportData_{DateTime.Now.ToString("HHmmss")}.xlsx"); byte[] filecontent = ExcelExportHelper.CreateOrAppendExcel(excelExportDto, fileName); FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write); fs.Write(filecontent, 0, filecontent.Length); fs.Flush(); fs.Close(); } private ProductionMeasurementUnitResultExportDataSet GetMeasurementUnitResultAndKeyUnitData() { ProductionMeasurementUnitResultExportDataSet productionMeasurementUnitResultExportDataSet = new ProductionMeasurementUnitResultExportDataSet(); try { MeasurementUnitResultRequest measurementUnitResultRequest = resultRequest.DeepSerializeClone(); measurementUnitResultRequest.PageNum = 1; measurementUnitResultRequest.PageSize = 10000; productionMeasurementUnitResultExportDataSet = _measurementUnitResultManager.GetProductionMeasurementUnitResultExportDataSet(measurementUnitResultRequest); } catch (Exception ex) { MessageBox.Show(ex.Message); } return productionMeasurementUnitResultExportDataSet; } private void buttonToFirstPage_MR_Click(object sender, EventArgs e) { resultRequest.PageNum = 1; GetMeasurementUnitResult(); } private void buttonToBeforePage_MR_Click(object sender, EventArgs e) { if (resultRequest.PageNum != 1) { resultRequest.PageNum = resultRequest.PageNum - 1; GetMeasurementUnitResult(); } } private void buttonToNextPage_MR_Click(object sender, EventArgs e) { if (resultRequest.PageNum != resultRequest.TotalPage && resultRequest.TotalPage != 0) { resultRequest.PageNum = resultRequest.PageNum + 1; GetMeasurementUnitResult(); } } private void buttonToLastPage_MR_Click(object sender, EventArgs e) { if (resultRequest.TotalPage != 0) { resultRequest.PageNum = resultRequest.TotalPage; GetMeasurementUnitResult(); } } #endregion } }