Jack.Peng
2021-03-29 fc405391846c5b54f560ce7038e8db94b7271071
1.不输出单独报表合并表格。
2个文件已修改
311 ■■■■■ 已修改文件
P066.Data/Form1.Designer.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
P066.Data/Form1.cs 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
P066.Data/Form1.Designer.cs
@@ -32,23 +32,26 @@
            this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
            this.btnAnalyze = new System.Windows.Forms.Button();
            this.btnLoadData2 = new System.Windows.Forms.Button();
            this.btnLoadData3 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // btnLoadData1
            // 
            this.btnLoadData1.Location = new System.Drawing.Point(12, 12);
            this.btnLoadData1.Location = new System.Drawing.Point(16, 15);
            this.btnLoadData1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnLoadData1.Name = "btnLoadData1";
            this.btnLoadData1.Size = new System.Drawing.Size(132, 23);
            this.btnLoadData1.Size = new System.Drawing.Size(176, 29);
            this.btnLoadData1.TabIndex = 0;
            this.btnLoadData1.Text = "加载文件夹1";
            this.btnLoadData1.Text = "加载复检报表文件夹";
            this.btnLoadData1.UseVisualStyleBackColor = true;
            this.btnLoadData1.Click += new System.EventHandler(this.btnLoadData1_Click);
            // 
            // btnAnalyze
            // 
            this.btnAnalyze.Location = new System.Drawing.Point(12, 70);
            this.btnAnalyze.Location = new System.Drawing.Point(16, 88);
            this.btnAnalyze.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnAnalyze.Name = "btnAnalyze";
            this.btnAnalyze.Size = new System.Drawing.Size(132, 23);
            this.btnAnalyze.Size = new System.Drawing.Size(176, 29);
            this.btnAnalyze.TabIndex = 1;
            this.btnAnalyze.Text = "开始分析";
            this.btnAnalyze.UseVisualStyleBackColor = true;
@@ -56,22 +59,35 @@
            // 
            // btnLoadData2
            // 
            this.btnLoadData2.Location = new System.Drawing.Point(12, 41);
            this.btnLoadData2.Location = new System.Drawing.Point(16, 51);
            this.btnLoadData2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnLoadData2.Name = "btnLoadData2";
            this.btnLoadData2.Size = new System.Drawing.Size(149, 23);
            this.btnLoadData2.Size = new System.Drawing.Size(199, 29);
            this.btnLoadData2.TabIndex = 1;
            this.btnLoadData2.Text = "刮伤、镀膜破损文件夹";
            this.btnLoadData2.UseVisualStyleBackColor = true;
            this.btnLoadData2.Click += new System.EventHandler(this.btnLoadData2_Click);
            // 
            // btnLoadData3
            //
            this.btnLoadData3.Location = new System.Drawing.Point(276, 15);
            this.btnLoadData3.Name = "btnLoadData3";
            this.btnLoadData3.Size = new System.Drawing.Size(176, 29);
            this.btnLoadData3.TabIndex = 2;
            this.btnLoadData3.Text = "加载初检报表文件夹";
            this.btnLoadData3.UseVisualStyleBackColor = true;
            this.btnLoadData3.Click += new System.EventHandler(this.btnLoadData3_Click);
            //
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.ClientSize = new System.Drawing.Size(1067, 562);
            this.Controls.Add(this.btnLoadData3);
            this.Controls.Add(this.btnAnalyze);
            this.Controls.Add(this.btnLoadData2);
            this.Controls.Add(this.btnLoadData1);
            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
@@ -84,6 +100,7 @@
        private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
        private System.Windows.Forms.Button btnAnalyze;
        private System.Windows.Forms.Button btnLoadData2;
        private System.Windows.Forms.Button btnLoadData3;
    }
}
P066.Data/Form1.cs
@@ -18,6 +18,7 @@
    {
        DirectoryInfo directoryInfo1;
        DirectoryInfo directoryInfo2;
        DirectoryInfo directoryInfo3;
        private P066RunParam runparam = new P066RunParam();
        private ReadFile readfile = new ReadFile();
        private WriteFile writefile = new WriteFile();
@@ -46,35 +47,29 @@
            directoryInfo2 = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
        }
        private void btnLoadData3_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog()!=DialogResult.OK)
            {
                return;
            }
            directoryInfo3 = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
        }
        private void btnAnalyze_Click(object sender, EventArgs e)
        {
            #region 读取文件夹下的所有文件,并将文件按照上下进行区分;上表格为fileInfo1,下表格为fileInfo2
            var fileinfos11 = directoryInfo1.GetFiles().ToList().FindAll(a => a.Extension == ".csv");
            List<FileInfo> fileInfo1 = new List<FileInfo>();
            List<FileInfo> fileInfo2 = new List<FileInfo>();
            for (int i = 0; i < fileinfos11.Count; i++)
            {
                if (fileinfos11[i].Name.Contains("1_1") || fileinfos11[i].Name.Contains("2_1") || fileinfos11[i].Name.Contains("3_1") || fileinfos11[i].Name.Contains("4_1") )
                {
                    fileInfo1.Add(fileinfos11[i]);
                }
                else
                {
                    fileInfo2.Add(fileinfos11[i]);
                }
            }
            GentClassificationFile(directoryInfo1, out List<FileInfo> fileInfo1, out List<FileInfo> fileInfo2);     //fileInfo1复检上文件夹,fileInfo2复检下文件夹
            GentClassificationFile(directoryInfo3, out List<FileInfo> fileInfo3, out List<FileInfo> fileInfo4);     //fileInfo3初检上文件夹,fileInfo4初检下文件夹
            #endregion
            List<ResultData> DataListMerge = new List<ResultData>();
            var listSum = new List<ResultData>();
            var JudgeListSum = new List<ResultData>();
            string filename = "";
            string filenameDir = "";
            int WhiteI = 0;
            int WhiteningI = 0;
            //int WhiteI = 0;
            //int WhiteningI = 0;
            int ScratchI = 0;
            int ZoomI = 0;
            int ChuNum = 0;
@@ -83,13 +78,13 @@
            #region 读取一个表格中所有时间戳并排序
            var dataList = GetFileData(fileInfo1[0]); 
            var dataGroup = dataList.GroupBy(a => a.TimeTip);
            var dataListSum22 = new List<string>();
            var DataTipsor = new List<string>();
            foreach (var item in dataGroup)
            {
                dataListSum22.Add(item.Key);
                DataTipsor.Add(item.Key);
            }
            dataListSum22 = dataListSum22.Distinct().ToList();
            dataListSum22.Sort();
            DataTipsor = DataTipsor.Distinct().ToList();
            DataTipsor.Sort();
            #endregion
            #region 读取划伤、镀膜破损文件夹文件
@@ -100,13 +95,13 @@
            for (int i = 0; i < fileinfos22.Count; i++)
            {
               var list = GetFileData(fileinfos22[i]);
                GetMaxSize(list);
                if (fileinfos22[i].Name.Contains("划伤"))
                {
                    ScratchI++;
                    list.ForEach(a => a.Lensnumber = ScratchI);
                    GetMaxSize(list);
                    GetBkLocation(list);
                    listSum.AddRange(list);
                    list = GetBkLocation(list);
                }
                else if (fileinfos22[i].Name.Contains("镀膜破损"))
                {
@@ -120,71 +115,71 @@
                directoryInfo2 = null;
            }
            #endregion
            listSum.AddRange(GetClassificationLens(fileInfo1, fileInfo2, DataTipsor));
            for (int i = 0; i < fileInfo1.Count; i++)
             {
                var list= CompareFile(fileInfo1[i], fileInfo2[i], dataListSum22);
                if (fileInfo1[i].Name.Contains("白点"))
                {
                    WhiteI++;
                    list.ForEach(a => a.Lensnumber = WhiteI);
                    listSum.AddRange(list);
                }
                if (fileInfo1[i].Name.Contains("刮白"))
                {
                    WhiteningI++;
                    list.ForEach(a => a.Lensnumber = WhiteningI);
                    listSum.AddRange(list);
            {
                //var list = CompareFile(fileInfo1[i], fileInfo2[i], DataTipsor);
                //if (fileInfo1[i].Name.Contains("白点"))
                //{
                //    WhiteI++;
                //    list.ForEach(a => a.Lensnumber = WhiteI);
                //    listSum.AddRange(list);
                //}
                //else if (fileInfo1[i].Name.Contains("刮白"))
                //{
                //    WhiteningI++;
                //    list.ForEach(a => a.Lensnumber = WhiteningI);
                //    listSum.AddRange(list);
                }
                //}
                #region//判断是初检文件夹还是复检文件夹
                string currPath = "";
                if (fileInfo1[i].Name.Contains("初检中框"))
                {
                    ChuNum++;
                    filenameDir = "初检中框白点";
                    filename = "初检中框白点" + ChuNum;
                    //给镜头区分位置及角度
                    list = GetMidLocation(list);
                }
               else if (fileInfo1[i].Name.Contains("复检中框")&& fileInfo1[i].Name.Contains("白点"))
                {
                    FuNum=FuNum+1;
                    filenameDir = "复检中框白点";
                    filename = "复检中框白点" + FuNum;
                    //给镜头区分位置及角度
                    list = GetMidLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("复检中框") && fileInfo1[i].Name.Contains("刮白"))
                    {
                        GuaNum=GuaNum+1;
                        filenameDir = "复检中框刮白";
                        filename = "复检中框刮白" + GuaNum;
                    //给镜头区分位置及角度
                    list = GetWhiteLocation(list);
                }
               else if (fileInfo1[i].Name.Contains("初检背板"))
                {
                    ChuNum++;
                    filenameDir = "初检背板白点";
                    filename = "初检背板白点" + ChuNum;
                    //给镜头区分位置及角度
                    list = GetBkLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("复检背板") && fileInfo1[i].Name.Contains("白点"))
                {
                    FuNum = FuNum + 1;
                    filenameDir = "复检背板白点";
                    filename = "复检背板白点" + FuNum;
                    //给镜头区分位置及角度
                    list = GetBkLocation(list);
                }
                //if (fileInfo1[i].Name.Contains("初检中框"))
                //{
                //    ChuNum++;
                //    filenameDir = "初检中框白点";
                //    filename = "初检中框白点" + ChuNum;
                //    //给镜头区分位置及角度
                //    list = GetMidLocation(list);
                //}
                //else if (fileInfo1[i].Name.Contains("复检中框") && fileInfo1[i].Name.Contains("白点"))
                //{
                //    FuNum = FuNum + 1;
                //    filenameDir = "复检中框白点";
                //    filename = "复检中框白点" + FuNum;
                //    //给镜头区分位置及角度
                //    list = GetMidLocation(list);
                //}
                //else if (fileInfo1[i].Name.Contains("复检中框") && fileInfo1[i].Name.Contains("刮白"))
                //{
                //    GuaNum = GuaNum + 1;
                //    filenameDir = "复检中框刮白";
                //    filename = "复检中框刮白" + GuaNum;
                //    //给镜头区分位置及角度
                //    list = GetWhiteLocation(list);
                //}
                //else if (fileInfo1[i].Name.Contains("初检背板"))
                //{
                //    ChuNum++;
                //    filenameDir = "初检背板白点";
                //    filename = "初检背板白点" + ChuNum;
                //    //给镜头区分位置及角度
                //    list = GetBkLocation(list);
                //}
                //else if (fileInfo1[i].Name.Contains("复检背板") && fileInfo1[i].Name.Contains("白点"))
                //{
                //    FuNum = FuNum + 1;
                //    filenameDir = "复检背板白点";
                //    filename = "复检背板白点" + FuNum;
                //    //给镜头区分位置及角度
                //    //list = GetBkLocation(list);
                //}
                currPath = directoryInfo1.Parent.FullName;
                string subPath = currPath + "/" + filenameDir + "合并后" + "/";
                if (false==Directory.Exists(subPath))
                if (false == Directory.Exists(subPath))
                {
                    Directory.CreateDirectory(subPath);
                }
@@ -192,36 +187,36 @@
                #endregion  
                var title1 = $"时间戳,文件名,判断,可能性,不确定性,高,宽,X,Y,最大尺寸,位置,R,角度";
                var file1 = $"{subPath}\\{filename}.csv";
                File.AppendAllText(file1, title1, Encoding.UTF8);
                File.AppendAllText(file1, "\r\n");
                foreach (var item in dataListSum22)
                {
                    var list11 = list.FindAll(a =>a.TimeTip==item&&!a.Result);
                    for (int q = 0; q < list11.Count; q++)
                    {
                        string result = list11[q].Result ? "OK" : "NG";
                        var content = $"{list11[q].TimeTip},{list11[q].ImageFileName},{result},{list11[q].Probability},{list11[q].Uncertainty},{list11[q].Height},{list11[q].Width},{list11[q].X},{list11[q].Y},{list11[q].ex},{list11[q].location},{ Convert.ToInt32(list11[q].R)},{ Convert.ToInt32(list11[q].angle)}";
                        File.AppendAllText(file1, content, Encoding.UTF8);
                        File.AppendAllText(file1, "\r\n");
                    }
                //var title1 = $"时间戳,文件名,判断,可能性,不确定性,高,宽,X,Y,最大尺寸,位置,R,角度";
                //var file1 = $"{subPath}\\{filename}.csv";
                //File.AppendAllText(file1, title1, Encoding.UTF8);
                //File.AppendAllText(file1, "\r\n");
                }
             }
                //foreach (var item in DataTipsor)
                //{
                //    var list11 = list.FindAll(a => a.TimeTip == item && !a.Result);
                //    for (int q = 0; q < list11.Count; q++)
                //    {
                //        string result = list11[q].Result ? "OK" : "NG";
                //        var content = $"{list11[q].TimeTip},{list11[q].ImageFileName},{result},{list11[q].Probability},{list11[q].Uncertainty},{list11[q].Height},{list11[q].Width},{list11[q].X},{list11[q].Y},{list11[q].ex},{list11[q].location},{ Convert.ToInt32(list11[q].R)},{ Convert.ToInt32(list11[q].angle)}";
                //        File.AppendAllText(file1, content, Encoding.UTF8);
                //        File.AppendAllText(file1, "\r\n");
                //    }
                //}
            }
            #region//将设备判断结果输出到CSV报表中
            var title12 = $"时间戳,相机序号,设备判断结果,缺陷类型,设备后处理结果,最大尺寸,位置,X,Y,R,角度";
            var file12 = $"{directoryInfo1.Parent.FullName}\\{filenameDir + "设备判断结果"}.csv";
            File.AppendAllText(file12, title12, Encoding.UTF8);
            File.AppendAllText(file12, "\r\n");
            foreach (var item in dataListSum22)
            foreach (var item in DataTipsor)
            {
                var Lens1 = listSum.FindAll(a => a.TimeTip == item&&a.Lensnumber==1);
                writefile.WriteJR(Lens1,item,1,file12);
@@ -243,7 +238,7 @@
            var file = $"{directoryInfo1.Parent.FullName}\\{filenameDir + "缺陷总数报表"}.csv";
            File.AppendAllText(file, title, Encoding.UTF8);
            File.AppendAllText(file, "\r\n");
            foreach (var item in dataListSum22)
            foreach (var item in DataTipsor)
            {
                var listLensnumber1 = listSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 1);
                var listLensnumberCount1 = listLensnumber1.Count;
@@ -737,6 +732,78 @@
            return defatType;
        }
        #endregion
        #region 将文件夹进行区分上表格、下表格
        private void GentClassificationFile(DirectoryInfo directoryInfo,out List<FileInfo> fileinfo1, out List<FileInfo> fileinfo2)
        {
            var fileinfos11 = directoryInfo.GetFiles().ToList().FindAll(a => a.Extension == ".csv");
            List<FileInfo> fileInfo1 = new List<FileInfo>();
            List<FileInfo> fileInfo2 = new List<FileInfo>();
            for (int i = 0; i < fileinfos11.Count; i++)
            {
                if (fileinfos11[i].Name.Contains("1_1") || fileinfos11[i].Name.Contains("2_1") || fileinfos11[i].Name.Contains("3_1") || fileinfos11[i].Name.Contains("4_1"))
                {
                    fileInfo1.Add(fileinfos11[i]);
                }
                else
                {
                    fileInfo2.Add(fileinfos11[i]);
                }
            }
            fileinfo1 = fileInfo1;
            fileinfo2 = fileInfo2;
        }
        #endregion
        #region  获取白点、刮白数据并按镜头输出
        private List<ResultData> GetClassificationLens(List<FileInfo> fileInfo1, List<FileInfo> fileInfo2, List<string> DataTipsor)
        {
            List<ResultData> listsum = new List<ResultData>();
            int WhiteI = 0;
            int WhiteningI = 0;
            for (int i = 0; i < fileInfo1.Count; i++)
            {
                var list = CompareFile(fileInfo1[i], fileInfo2[i], DataTipsor);
                if (fileInfo1[i].Name.Contains("白点"))
                {
                    WhiteI++;
                    list.ForEach(a => a.Lensnumber = WhiteI);
                    listsum.AddRange(list);
                }
                else if (fileInfo1[i].Name.Contains("刮白"))
                {
                    WhiteningI++;
                    list.ForEach(a => a.Lensnumber = WhiteningI);
                    listsum.AddRange(list);
                }
                if (fileInfo1[i].Name.Contains("初检中框"))
                {
                    list = GetMidLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("复检中框") && fileInfo1[i].Name.Contains("白点"))
                {
                    list = GetMidLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("复检中框") && fileInfo1[i].Name.Contains("刮白"))
                {
                    list = GetWhiteLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("初检背板"))
                {
                    //给镜头区分位置及角度
                    list = GetBkLocation(list);
                }
                else if (fileInfo1[i].Name.Contains("复检背板") && fileInfo1[i].Name.Contains("白点"))
                {
                    list = GetBkLocation(list);
                }
            }
            return listsum;
        }
        #endregion
        private List <ResultData> GetFileData(FileInfo fileInfos)
        {
            var allLines = File.ReadAllLines(fileInfos.FullName, Encoding.Default);
@@ -757,9 +824,6 @@
                    case "镀膜破损":
                        dataList = readfile.GetZoomPartFile(allLines);
                        break;
                    //default:
                    //    dataList1 = null;
                    //    break;
                }
            }
            return dataList;