领胜LDS 键盘AOI检测项目
wells.liu
2020-07-16 30458c0bca8066d98ca901b5065832a44a7e970e
测量结果 查询+导出功能
7个文件已修改
586 ■■■■ 已修改文件
src/Bro.M071.DBManager/MeasurementUnitResultManager.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Model/Model/KeyUnitData.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Model/Model/MeasurementUnitResult.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/M071_DataForm.Designer.cs 175 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/M071_DataForm.cs 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/UI/M071_DataForm.resx 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.UI.Config/App.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.DBManager/MeasurementUnitResultManager.cs
@@ -1,6 +1,7 @@
using Bro.Common.Helper;
using Bro.M071.Model;
using Bro.M071.Model.Model;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -75,11 +76,11 @@
                                ProductionCode = productionMeasurementRecords.ProductionCode,
                                ProductionBarcode = productionMeasurementRecords.ProductionBarcode,
                                ProductionMeasurementRecordsId = productionMeasurementRecords.ID,
                                OperationStartTime= productionMeasurementRecords.OperationStartTime,
                                OperationStartTime = productionMeasurementRecords.OperationStartTime,
                                OperationEndTime = productionMeasurementRecords.OperationEndTime,
                                Id= measurementUnitResult.ID,
                                MeasurementName= measurementUnitResult.MeasurementName,
                                Id = measurementUnitResult.ID,
                                MeasurementName = measurementUnitResult.MeasurementName,
                                MeasurementType = measurementUnitResult.MeasurementType,
                                MeasurementValue = measurementUnitResult.MeasurementValue,
                                MeasurementResult = measurementUnitResult.MeasurementResult
@@ -90,6 +91,86 @@
            }
        }
        public ProductionMeasurementUnitResultExportDataSet GetProductionMeasurementUnitResultExportDataSet(MeasurementUnitResultRequest request)
        {
            ProductionMeasurementUnitResultExportDataSet productionMeasurementUnitResultExportDataSet = new ProductionMeasurementUnitResultExportDataSet();
            using (DBModel context = new DBModel())
            {
                var mList = context.MeasurementUnitResult.Where(u => u.IS_DELETED == 0);
                var pList = context.ProductionMeasurementRecords.Where(u => u.IS_DELETED == 0);
                var kList = context.KeyUnitData.Where(u => u.IS_DELETED == 0);
                if (!string.IsNullOrWhiteSpace(request.ProductionBarcode))
                {
                    pList = pList.Where(u => u.ProductionBarcode.Contains(request.ProductionBarcode));
                }
                if (!string.IsNullOrWhiteSpace(request.ProductionCode))
                {
                    pList = pList.Where(u => u.ProductionCode.Contains(request.ProductionCode));
                }
                if (request.StartTime != null)
                {
                    pList = pList.Where(u => u.OperationStartTime >= request.StartTime);
                }
                if (request.EndTime != null)
                {
                    pList = pList.Where(u => u.OperationStartTime <= request.EndTime);
                }
                //mList
                if (!string.IsNullOrWhiteSpace(request.MeasurementName))
                {
                    mList = mList.Where(u => u.MeasurementName.Contains(request.MeasurementName));
                }
                if (!string.IsNullOrWhiteSpace(request.MeasurementResult))
                {
                    mList = mList.Where(u => u.MeasurementResult == request.MeasurementResult);
                }
                if (!string.IsNullOrWhiteSpace(request.MeasurementType))
                {
                    mList = mList.Where(u => u.MeasurementType == request.MeasurementType);
                }
                productionMeasurementUnitResultExportDataSet.ProductionMeasurementRecordList = pList.ToList();
                var measurementUnitResults = from productionMeasurementRecords in pList
                                             join measurementUnitResult in mList on productionMeasurementRecords.ID equals measurementUnitResult.ProductionMeasurementRecordsId
                                             select new MeasurementUnitResult_DTO
                                             {
                                                 ProductionCode = productionMeasurementRecords.ProductionCode,
                                                 ProductionBarcode = productionMeasurementRecords.ProductionBarcode,
                                                 ProductionMeasurementRecordsId = productionMeasurementRecords.ID,
                                                 OperationStartTime = productionMeasurementRecords.OperationStartTime,
                                                 OperationEndTime = productionMeasurementRecords.OperationEndTime,
                                                 Id = measurementUnitResult.ID,
                                                 MeasurementName = measurementUnitResult.MeasurementName,
                                                 MeasurementType = measurementUnitResult.MeasurementType,
                                                 MeasurementValue = measurementUnitResult.MeasurementValue,
                                                 MeasurementResult = measurementUnitResult.MeasurementResult
                                             };
                productionMeasurementUnitResultExportDataSet.MeasurementUnitResultList = measurementUnitResults.ToList();
                var keyUnitDataQuery = from productionMeasurementRecords in pList
                                       join keyUnitData in kList on productionMeasurementRecords.ID equals
                                       keyUnitData.ProductionMeasurementRecordsId
                                       select new KeyUnitData_DTO
                                       {
                                           ProductionCode = productionMeasurementRecords.ProductionCode,
                                           ProductionBarcode = productionMeasurementRecords.ProductionBarcode,
                                           ProductionMeasurementRecordsId = productionMeasurementRecords.ID,
                                           Id = keyUnitData.ID,
                                           Key = keyUnitData.Key,
                                           MeasurementItem = keyUnitData.MeasurementItem,
                                           ItemValue = keyUnitData.ItemValue,
                                       };
                productionMeasurementUnitResultExportDataSet.KeyUnitDataList = keyUnitDataQuery.ToList();
                return productionMeasurementUnitResultExportDataSet;
            }
        }
        public void BatchAddMeasurementUnitResult(List<MeasurementUnitResult> records)
        {
            try
src/Bro.M071.Model/Model/KeyUnitData.cs
@@ -34,6 +34,11 @@
        [StringLength(64)]
        public string ItemValue { get; set; }
        /// <summary>
        /// 产品编码
        /// </summary>
        [NotMapped]
        public string ProductionCode { get; set; }
        [NotMapped]
        public string ProductionBarcode { get; set; }
    }
@@ -42,4 +47,36 @@
    {
    }
    public class KeyUnitData_DTO
    {
        public string Id { get; set; }
        /// <summary>
        /// 产品测量记录Id
        /// </summary>
        public string ProductionMeasurementRecordsId { get; set; }
        /// <summary>
        /// 键单元
        /// </summary>
        public string Key { get; set; }
        /// <summary>
        /// 检测项
        /// </summary>
        public string MeasurementItem { get; set; }
        /// <summary>
        /// 该键 检测项 的值
        /// </summary>
        public string ItemValue { get; set; }
        /// <summary>
        /// 产品编码
        /// </summary>
        public string ProductionCode { get; set; }
        public string ProductionBarcode { get; set; }
    }
}
src/Bro.M071.Model/Model/MeasurementUnitResult.cs
@@ -110,6 +110,34 @@
        }
    }
    public class ProductionMeasurementUnitResultExportDataSet
    {
        public List<ProductionMeasurementRecords> ProductionMeasurementRecordList { get; set; }
        ///// <summary>
        ///// 关系数据
        ///// </summary>
        //public List<MeasurementAndKeyDataRelation> MeasurementAndKeyDataRelationList { get; set; }
        /// <summary>
        /// 检测结果
        /// </summary>
        public List<MeasurementUnitResult_DTO> MeasurementUnitResultList { get; set; }
        /// <summary>
        /// 原始数据
        /// </summary>
        public List<KeyUnitData_DTO> KeyUnitDataList { get; set; }
        public ProductionMeasurementUnitResultExportDataSet()
        {
            ProductionMeasurementRecordList = new List<ProductionMeasurementRecords>();
            MeasurementUnitResultList = new List<MeasurementUnitResult_DTO>();
            KeyUnitDataList = new List<KeyUnitData_DTO>();
        }
    }
    /// <summary>
    /// MeasurementUnitResult_DTO 数据库查询使用
    /// </summary>
src/Bro.M071.Process/UI/M071_DataForm.Designer.cs
@@ -28,10 +28,10 @@
        /// </summary>
        private void InitializeComponent()
        {
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle45 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle46 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle47 = new System.Windows.Forms.DataGridViewCellStyle();
            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle48 = new System.Windows.Forms.DataGridViewCellStyle();
            this.tabControl1 = new System.Windows.Forms.TabControl();
            this.tabPage1 = new System.Windows.Forms.TabPage();
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
@@ -72,6 +72,14 @@
            this.buttonToBeforePage_MR = new System.Windows.Forms.Button();
            this.buttonToFirstPage_MR = new System.Windows.Forms.Button();
            this.dataGridView2 = new System.Windows.Forms.DataGridView();
            this.ProductionCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ProductionBarcode = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementName = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementType = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.OperationStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.OperationEndTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
            this.comboBoxMeasurementType_MR = new System.Windows.Forms.ComboBox();
            this.label10 = new System.Windows.Forms.Label();
@@ -90,14 +98,6 @@
            this.panel3 = new System.Windows.Forms.Panel();
            this.buttonExport_MR = new System.Windows.Forms.Button();
            this.buttonQuery_MR = new System.Windows.Forms.Button();
            this.ProductionCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.ProductionBarcode = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementName = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementType = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.MeasurementResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.OperationStartTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.OperationEndTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.tabControl1.SuspendLayout();
            this.tabPage1.SuspendLayout();
            this.tableLayoutPanel1.SuspendLayout();
@@ -186,6 +186,7 @@
            this.textBoxPageNum.Name = "textBoxPageNum";
            this.textBoxPageNum.Size = new System.Drawing.Size(80, 21);
            this.textBoxPageNum.TabIndex = 2;
            this.textBoxPageNum.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ToPage);
            // 
            // buttonToLastPage
            // 
@@ -197,6 +198,7 @@
            this.buttonToLastPage.TabIndex = 1;
            this.buttonToLastPage.Text = "最后页";
            this.buttonToLastPage.UseVisualStyleBackColor = true;
            this.buttonToLastPage.Click += new System.EventHandler(this.buttonToLastPage_Click);
            // 
            // buttonToNextPage
            // 
@@ -208,6 +210,7 @@
            this.buttonToNextPage.TabIndex = 1;
            this.buttonToNextPage.Text = "后一页";
            this.buttonToNextPage.UseVisualStyleBackColor = true;
            this.buttonToNextPage.Click += new System.EventHandler(this.buttonToNextPage_Click);
            // 
            // buttonToBeforePage
            // 
@@ -219,6 +222,7 @@
            this.buttonToBeforePage.TabIndex = 1;
            this.buttonToBeforePage.Text = "前一页";
            this.buttonToBeforePage.UseVisualStyleBackColor = true;
            this.buttonToBeforePage.Click += new System.EventHandler(this.buttonToBeforePage_Click);
            // 
            // buttonToFirstPage
            // 
@@ -230,6 +234,7 @@
            this.buttonToFirstPage.TabIndex = 1;
            this.buttonToFirstPage.Text = "第一页";
            this.buttonToFirstPage.UseVisualStyleBackColor = true;
            this.buttonToFirstPage.Click += new System.EventHandler(this.buttonToFirstPage_Click);
            // 
            // labelTotal
            // 
@@ -287,9 +292,9 @@
            // Column4
            // 
            this.Column4.DataPropertyName = "OperationStartTime";
            dataGridViewCellStyle1.Format = "G";
            dataGridViewCellStyle1.NullValue = null;
            this.Column4.DefaultCellStyle = dataGridViewCellStyle1;
            dataGridViewCellStyle45.Format = "G";
            dataGridViewCellStyle45.NullValue = null;
            this.Column4.DefaultCellStyle = dataGridViewCellStyle45;
            this.Column4.HeaderText = "生产时间(开始)";
            this.Column4.Name = "Column4";
            this.Column4.ReadOnly = true;
@@ -298,9 +303,9 @@
            // Column5
            // 
            this.Column5.DataPropertyName = "OperationEndTime";
            dataGridViewCellStyle2.Format = "G";
            dataGridViewCellStyle2.NullValue = null;
            this.Column5.DefaultCellStyle = dataGridViewCellStyle2;
            dataGridViewCellStyle46.Format = "G";
            dataGridViewCellStyle46.NullValue = null;
            this.Column5.DefaultCellStyle = dataGridViewCellStyle46;
            this.Column5.HeaderText = "生产时间(结束)";
            this.Column5.Name = "Column5";
            this.Column5.ReadOnly = true;
@@ -532,6 +537,7 @@
            this.textBoxPageNum_MR.Name = "textBoxPageNum_MR";
            this.textBoxPageNum_MR.Size = new System.Drawing.Size(80, 21);
            this.textBoxPageNum_MR.TabIndex = 2;
            this.textBoxPageNum_MR.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ToPageMR);
            // 
            // buttonToLastPage_MR
            // 
@@ -543,6 +549,7 @@
            this.buttonToLastPage_MR.TabIndex = 1;
            this.buttonToLastPage_MR.Text = "最后页";
            this.buttonToLastPage_MR.UseVisualStyleBackColor = true;
            this.buttonToLastPage_MR.Click += new System.EventHandler(this.buttonToLastPage_MR_Click);
            // 
            // buttonToNextPage_MR
            // 
@@ -554,6 +561,7 @@
            this.buttonToNextPage_MR.TabIndex = 1;
            this.buttonToNextPage_MR.Text = "后一页";
            this.buttonToNextPage_MR.UseVisualStyleBackColor = true;
            this.buttonToNextPage_MR.Click += new System.EventHandler(this.buttonToNextPage_MR_Click);
            // 
            // buttonToBeforePage_MR
            // 
@@ -565,6 +573,7 @@
            this.buttonToBeforePage_MR.TabIndex = 1;
            this.buttonToBeforePage_MR.Text = "前一页";
            this.buttonToBeforePage_MR.UseVisualStyleBackColor = true;
            this.buttonToBeforePage_MR.Click += new System.EventHandler(this.buttonToBeforePage_MR_Click);
            // 
            // buttonToFirstPage_MR
            // 
@@ -576,6 +585,7 @@
            this.buttonToFirstPage_MR.TabIndex = 1;
            this.buttonToFirstPage_MR.Text = "第一页";
            this.buttonToFirstPage_MR.UseVisualStyleBackColor = true;
            this.buttonToFirstPage_MR.Click += new System.EventHandler(this.buttonToFirstPage_MR_Click);
            // 
            // dataGridView2
            // 
@@ -599,6 +609,70 @@
            this.dataGridView2.RowTemplate.Height = 23;
            this.dataGridView2.Size = new System.Drawing.Size(751, 579);
            this.dataGridView2.TabIndex = 2;
            //
            // ProductionCode
            //
            this.ProductionCode.DataPropertyName = "ProductionCode";
            this.ProductionCode.HeaderText = "产品编码";
            this.ProductionCode.Name = "ProductionCode";
            this.ProductionCode.ReadOnly = true;
            //
            // ProductionBarcode
            //
            this.ProductionBarcode.DataPropertyName = "ProductionBarcode";
            this.ProductionBarcode.HeaderText = "产品条码";
            this.ProductionBarcode.Name = "ProductionBarcode";
            this.ProductionBarcode.ReadOnly = true;
            //
            // MeasurementName
            //
            this.MeasurementName.DataPropertyName = "MeasurementName";
            this.MeasurementName.HeaderText = "检测名称";
            this.MeasurementName.Name = "MeasurementName";
            this.MeasurementName.ReadOnly = true;
            //
            // MeasurementType
            //
            this.MeasurementType.DataPropertyName = "MeasurementType";
            this.MeasurementType.HeaderText = "检测类型";
            this.MeasurementType.Name = "MeasurementType";
            this.MeasurementType.ReadOnly = true;
            //
            // MeasurementValue
            //
            this.MeasurementValue.DataPropertyName = "MeasurementValue";
            this.MeasurementValue.HeaderText = "检测值";
            this.MeasurementValue.Name = "MeasurementValue";
            this.MeasurementValue.ReadOnly = true;
            //
            // MeasurementResult
            //
            this.MeasurementResult.DataPropertyName = "MeasurementResult";
            this.MeasurementResult.HeaderText = "检测结果";
            this.MeasurementResult.Name = "MeasurementResult";
            this.MeasurementResult.ReadOnly = true;
            //
            // OperationStartTime
            //
            this.OperationStartTime.DataPropertyName = "OperationStartTime";
            dataGridViewCellStyle47.Format = "G";
            dataGridViewCellStyle47.NullValue = null;
            this.OperationStartTime.DefaultCellStyle = dataGridViewCellStyle47;
            this.OperationStartTime.HeaderText = "生产时间(开始)";
            this.OperationStartTime.Name = "OperationStartTime";
            this.OperationStartTime.ReadOnly = true;
            this.OperationStartTime.Width = 120;
            //
            // OperationEndTime
            //
            this.OperationEndTime.DataPropertyName = "OperationEndTime";
            dataGridViewCellStyle48.Format = "G";
            dataGridViewCellStyle48.NullValue = null;
            this.OperationEndTime.DefaultCellStyle = dataGridViewCellStyle48;
            this.OperationEndTime.HeaderText = "生产时间(结束)";
            this.OperationEndTime.Name = "OperationEndTime";
            this.OperationEndTime.ReadOnly = true;
            this.OperationEndTime.Width = 120;
            // 
            // tableLayoutPanel4
            // 
@@ -808,6 +882,7 @@
            this.buttonExport_MR.TabIndex = 18;
            this.buttonExport_MR.Text = "导出";
            this.buttonExport_MR.UseVisualStyleBackColor = true;
            this.buttonExport_MR.Click += new System.EventHandler(this.buttonExport_MR_Click);
            // 
            // buttonQuery_MR
            // 
@@ -820,70 +895,6 @@
            this.buttonQuery_MR.Text = "查询";
            this.buttonQuery_MR.UseVisualStyleBackColor = true;
            this.buttonQuery_MR.Click += new System.EventHandler(this.buttonQuery_MR_Click);
            //
            // ProductionCode
            //
            this.ProductionCode.DataPropertyName = "ProductionCode";
            this.ProductionCode.HeaderText = "产品编码";
            this.ProductionCode.Name = "ProductionCode";
            this.ProductionCode.ReadOnly = true;
            //
            // ProductionBarcode
            //
            this.ProductionBarcode.DataPropertyName = "ProductionBarcode";
            this.ProductionBarcode.HeaderText = "产品条码";
            this.ProductionBarcode.Name = "ProductionBarcode";
            this.ProductionBarcode.ReadOnly = true;
            //
            // MeasurementName
            //
            this.MeasurementName.DataPropertyName = "MeasurementName";
            this.MeasurementName.HeaderText = "检测名称";
            this.MeasurementName.Name = "MeasurementName";
            this.MeasurementName.ReadOnly = true;
            //
            // MeasurementType
            //
            this.MeasurementType.DataPropertyName = "MeasurementType";
            this.MeasurementType.HeaderText = "检测类型";
            this.MeasurementType.Name = "MeasurementType";
            this.MeasurementType.ReadOnly = true;
            //
            // MeasurementValue
            //
            this.MeasurementValue.DataPropertyName = "MeasurementValue";
            this.MeasurementValue.HeaderText = "检测值";
            this.MeasurementValue.Name = "MeasurementValue";
            this.MeasurementValue.ReadOnly = true;
            //
            // MeasurementResult
            //
            this.MeasurementResult.DataPropertyName = "MeasurementResult";
            this.MeasurementResult.HeaderText = "检测结果";
            this.MeasurementResult.Name = "MeasurementResult";
            this.MeasurementResult.ReadOnly = true;
            //
            // OperationStartTime
            //
            this.OperationStartTime.DataPropertyName = "OperationStartTime";
            dataGridViewCellStyle3.Format = "G";
            dataGridViewCellStyle3.NullValue = null;
            this.OperationStartTime.DefaultCellStyle = dataGridViewCellStyle3;
            this.OperationStartTime.HeaderText = "生产时间(开始)";
            this.OperationStartTime.Name = "OperationStartTime";
            this.OperationStartTime.ReadOnly = true;
            this.OperationStartTime.Width = 120;
            //
            // OperationEndTime
            //
            this.OperationEndTime.DataPropertyName = "OperationEndTime";
            dataGridViewCellStyle4.Format = "G";
            dataGridViewCellStyle4.NullValue = null;
            this.OperationEndTime.DefaultCellStyle = dataGridViewCellStyle4;
            this.OperationEndTime.HeaderText = "生产时间(结束)";
            this.OperationEndTime.Name = "OperationEndTime";
            this.OperationEndTime.ReadOnly = true;
            this.OperationEndTime.Width = 120;
            // 
            // M071_DataForm
            // 
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;
@@ -18,6 +22,10 @@
    {
        public ProductionMeasurementRecordsManager _productionMeasurementRecordsManager = new ProductionMeasurementRecordsManager();
        public MeasurementUnitResultManager _measurementUnitResultManager = new MeasurementUnitResultManager();
        ProductionMeasurementRecordsRequest recordsRequest = new ProductionMeasurementRecordsRequest();
        MeasurementUnitResultRequest resultRequest = new MeasurementUnitResultRequest();
        public M071_DataForm()
        {
            InitializeComponent();
@@ -33,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();
@@ -46,35 +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", "HeightAlignment", "FullRowHeightAlignment" };
            comboBoxMeasurementType_MR.DataSource = new List<string>() { "", "Slant", "Alignment", "RowAlignment" };
        }
        private void buttonQuery_MR_Click(object sender, EventArgs e)
        {
            MeasurementUnitResultRequest recordsRequest = new MeasurementUnitResultRequest();
            recordsRequest.ProductionCode = textBoxPCode_MR.Text;
            recordsRequest.ProductionBarcode = textBoxtextBoxPBarCode_MR.Text;
            recordsRequest.MeasurementName = textBoxMeasurementName_MR.Text;
            recordsRequest.MeasurementType = comboBoxMeasurementType_MR.SelectedItem?.ToString();
            recordsRequest.MeasurementResult = comboBoxResult_MR.SelectedItem?.ToString();
            recordsRequest.StartTime = Convert.ToDateTime(dateTimePickerStartTime_MR.Value.ToString("D").ToString());
            recordsRequest.EndTime = Convert.ToDateTime(dateTimePickerEndTime_MR.Value.AddDays(1).ToString("D").ToString()).AddSeconds(-1);
            resultRequest.PageNum = 1;
            GetMeasurementUnitResult();
        }
            var queryData = _measurementUnitResultManager.GetMeasurementUnitResult(recordsRequest);
        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<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
    }
}
src/Bro.M071.Process/UI/M071_DataForm.resx
@@ -156,4 +156,43 @@
  <metadata name="OperationEndTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ProductionCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="ProductionBarcode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="MeasurementName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="MeasurementType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="MeasurementValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="MeasurementResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="OperationStartTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
  <metadata name="OperationEndTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
  </metadata>
</root>
src/Bro.UI.Config/App.config
@@ -41,6 +41,7 @@
    <add key="AuthorityCheck" value="False" />
    <add key="AuthorityServer" value="192.168.1.255:11001" />
    <add key="ClientSettingsProvider.ServiceUri" value="" />
    <add key="ExportPath" value="D:\PROJECTS\M071\Export" />
  </appSettings>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">