领胜LDS 键盘AOI检测项目
wells.liu
2020-07-16 30458c0bca8066d98ca901b5065832a44a7e970e
src/Bro.M071.Process/UI/M071_DataForm.cs
@@ -1,11 +1,15 @@
using Bro.M071.DBManager;
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;
@@ -17,6 +21,11 @@
    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();
@@ -32,7 +41,54 @@
        private void buttonQuery_Click(object sender, EventArgs e)
        {
            ProductionMeasurementRecordsRequest recordsRequest = new ProductionMeasurementRecordsRequest();
            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();
@@ -45,15 +101,169 @@
            labelTotal.Text = $"数量:{recordsRequest.TotalNum} 总页数:{recordsRequest.TotalPage}";
            textBoxPageNum.Text = recordsRequest.PageNum.ToString();
        }
        #endregion
        #region 测量结果
        private void InitialMeasurementResultLayout()
        {
            comboBoxResult_MR.DataSource = new List<string>() { "", "OK", "NG" };
            comboBoxMeasurementType_MR.DataSource = new List<string>() { "", "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();
        }
        #endregion
        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<string>() { "生产记录", "检测结果", "原始数据" };
            var productionRecordsColumns = new Dictionary<string, string>()
                {
                    {"ProductionCode", "产品编码"},
                    {"ProductionBarcode", "产品条码"},
                    {"ProductionResult", "产品结果"},
                    {"OperationStartTime", "操作开始时间"},
                    {"OperationEndTime", "操作结束时间"}
                };
            var keyUnitColumns = new Dictionary<string, string>()
                {
                    {"ProductionBarcode", "产品条码"},
                    {"Key", "键"},
                    {"MeasurementItem", "检测项"},
                    {"ItemValue", "检测值"}
                };
            var measurementUnitResultColumns = new Dictionary<string, string>()
                {
                    {"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
    }
}