From e5bd758158da36fc8068cb6d686d8affc7f29639 Mon Sep 17 00:00:00 2001 From: Jack.Peng <jack.peng@broconcentric.com> Date: 星期四, 25 三月 2021 21:47:29 +0800 Subject: [PATCH] 1.读取文件全部单独拆分来读取,易于后期维护。 --- P066.Data/Form1.cs | 391 +++++++++++++++++++------------------------------------ 1 files changed, 139 insertions(+), 252 deletions(-) diff --git a/P066.Data/Form1.cs b/P066.Data/Form1.cs index b6ce01a..bdd66be 100644 --- a/P066.Data/Form1.cs +++ b/P066.Data/Form1.cs @@ -19,8 +19,10 @@ DirectoryInfo directoryInfo1; DirectoryInfo directoryInfo2; private P066RunParam runparam = new P066RunParam(); + private ReadFile readfile = new ReadFile(); + private WriteFile writefile = new WriteFile(); + - public Form1() { InitializeComponent(); @@ -49,11 +51,12 @@ private void btnAnalyze_Click(object sender, EventArgs e) { - var fileinfos11 = directoryInfo1.GetFiles(); - //var fileinfos22 = directoryInfo2.GetFiles(); + #region 璇诲彇鏂囦欢澶逛笅鐨勬墍鏈夋枃浠讹紝骞跺皢鏂囦欢鎸夌収涓婁笅杩涜鍖哄垎;涓婅〃鏍间负fileInfo1锛屼笅琛ㄦ牸涓篺ileInfo2 + + 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.Length; i++) + 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") ) { @@ -63,11 +66,8 @@ { fileInfo2.Add(fileinfos11[i]); } - - } - - + #endregion List<ResultData> DataListMerge = new List<ResultData>(); var listSum = new List<ResultData>(); var JudgeListSum = new List<ResultData>(); @@ -75,31 +75,55 @@ string filenameDir = ""; int WhiteI = 0; int WhiteningI = 0; + int ScratchI = 0; + int ZoomI = 0; int ChuNum = 0; int FuNum = 0; int GuaNum = 0; - #region//鑾峰彇鏃堕棿鎴冲苟鎺掑簭 - var allLines1 = File.ReadAllLines(fileInfo1[0].FullName, Encoding.Default); - List<ResultData> dataList1 = new List<ResultData>(); - if (allLines1.Length > 1) - { - dataList1 = GetData(allLines1); - } - var dataGroup111 = dataList1.GroupBy(a => a.TimeTip); + #region 璇诲彇涓�涓〃鏍间腑鎵�鏈夋椂闂存埑骞舵帓搴� + var dataList = GetFileData(fileInfo1[0]); + var dataGroup = dataList.GroupBy(a => a.TimeTip); var dataListSum22 = new List<string>(); - foreach (var item in dataGroup111) + foreach (var item in dataGroup) { dataListSum22.Add(item.Key); } dataListSum22 = dataListSum22.Distinct().ToList(); dataListSum22.Sort(); #endregion - - for (int i = 0; i < fileInfo1.Count; i++) - { - CompareFile(fileInfo1[i], fileInfo2[i], dataListSum22, out DataListMerge); - var list = DataListMerge; /*CompareFile(fileInfo1[i], fileInfo2[i],dataListSum22)*/ + #region 璇诲彇鍒掍激銆侀晙鑶滅牬鎹熸枃浠跺す鏂囦欢 + if (directoryInfo2 != null) + { + var fileinfos22 = directoryInfo2.GetFiles().ToList().FindAll(a=>a.Extension==".csv"); + + 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); + listSum.AddRange(list); + list = GetBkLocation(list); + } + else if (fileinfos22[i].Name.Contains("闀�鑶滅牬鎹�")) + { + ZoomI++; + list.ForEach(a => a.Lensnumber = ZoomI); + listSum.AddRange(list); + } + + } + + directoryInfo2 = null; + } + #endregion + + for (int i = 0; i < fileInfo1.Count; i++) + { + var list= CompareFile(fileInfo1[i], fileInfo2[i], dataListSum22); if (fileInfo1[i].Name.Contains("鐧界偣")) { WhiteI++; @@ -114,8 +138,9 @@ } - string currPath = ""; + #region//鍒ゆ柇鏄垵妫�鏂囦欢澶硅繕鏄妫�鏂囦欢澶� + string currPath = ""; if (fileInfo1[i].Name.Contains("鍒濇涓")) { ChuNum++; @@ -188,8 +213,8 @@ } - } - + } + #region//灏嗚澶囧垽鏂粨鏋滆緭鍑哄埌CSV鎶ヨ〃涓� var title12 = $"鏃堕棿鎴�,鐩告満搴忓彿,璁惧鍒ゆ柇缁撴灉,缂洪櫡绫诲瀷,璁惧鍚庡鐞嗙粨鏋�,鏈�澶у昂瀵�,浣嶇疆,X,Y,R,瑙掑害"; @@ -199,14 +224,14 @@ foreach (var item in dataListSum22) { var Lens1 = listSum.FindAll(a => a.TimeTip == item&&a.Lensnumber==1); - WriteJR(Lens1,item,1,file12); + writefile.WriteJR(Lens1,item,1,file12); var Lens2 = listSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 2); - WriteJR(Lens2,"",2,file12); + writefile.WriteJR(Lens2,"",2,file12); var Lens3 = listSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 3); - WriteJR(Lens3,"",3,file12); + writefile.WriteJR(Lens3,"",3,file12); var Lens4 = listSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 4); - WriteJR(Lens4,"",4,file12); - + writefile.WriteJR(Lens4,"",4,file12); + } #endregion @@ -251,60 +276,28 @@ } - private void CompareFile(FileInfo fileInfo1, FileInfo fileInfo2,List<string> DataTipsor,out List<ResultData> DataListMerger) + #region 涓や釜琛ㄦ牸杩涜姣旇緝,濡傛灉涓や釜琛ㄦ牸涓湁璁惧鍒ゆ柇鏍囧噯涓嶇粺涓�锛屽皢璇ョ偣鍙樹负NG锛屽垹闄や袱涓〃鏍间腑NG鐐圭浉杩戠殑鏈�灏忓昂瀵哥偣. + private List<ResultData> CompareFile(FileInfo fileInfo1, FileInfo fileInfo2,List<string> DataTipsor) { - var allLines1 = File.ReadAllLines(fileInfo1.FullName, Encoding.Default); - var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default); - List<ResultData> dataList1 = new List<ResultData>(); - List<ResultData> dataList2 = new List<ResultData>(); - if (allLines1.Length>1) - { - dataList1 = GetData(allLines1); - } - if (allLines2.Length > 1) - { - dataList2 = GetData(allLines2); - } + var dataList1 = GetFileData(fileInfo1); + var dataList2 = GetFileData(fileInfo2); var dataList = new List<ResultData>(); foreach (var item in DataTipsor) { var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result); var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result); var itemToRemove = new List<ResultData>(); - #region//璁$畻琛ㄦ牸2鏈�澶у昂瀵� - for (int ii = 0; ii < list2.Count; ii++) - { - if (list2[ii].Width > list2[ii].Height) - { - list2[ii].ex = list2[ii].Width * 0.0043; - } - else - { - list2[ii].ex = list2[ii].Height * 0.0043; - } - - } - #endregion + //璁$畻琛ㄦ牸1鏈�澶у昂瀵� + GetMaxSize(list1); + //璁$畻琛ㄦ牸2鏈�澶у昂瀵� + GetMaxSize(list2); for (int i = 0; i < list1.Count; i++) { - #region//璁$畻琛ㄦ牸1鏈�澶у昂瀵� - if (list1[i].Width > list1[i].Height) - { - list1[i].ex = list1[i].Width * 0.0043; - } - else - { - list1[i].ex = list1[i].Height * 0.0043; - } - - #endregion for (int j = 0; j < list2.Count; j++) { if (list1[i].JudgmentResult != list2[j].JudgmentResult) { - list1[i].JudgmentResult = "NG"; - list2[j].JudgmentResult = "NG"; - + list1[i].JudgmentResult = list2[j].JudgmentResult = "NG"; } if (list1[i].PostTreatmentResults.Length<list2[j].PostTreatmentResults.Length) { @@ -314,7 +307,6 @@ { list2[j].PostTreatmentResults = list1[i].PostTreatmentResults; } - var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y); if (distance < 20) { @@ -327,13 +319,9 @@ { itemToRemove.Add(list1[i]); } - - - } } } - dataList.AddRange(list1); dataList.AddRange(list2); for (int i = 0; i < itemToRemove.Count; i++) @@ -341,14 +329,13 @@ dataList.Remove(itemToRemove[i]); } } - - DataListMerger=dataList; - + return dataList; } - + #endregion - - //鑾峰彇涓瑙掑害鍜屼綅缃� + + + #region 鑾峰彇涓瑙掑害鍜屼綅缃� private List<ResultData> GetMidLocation(List<ResultData> list) { var group = list.GroupBy(a => a.TimeTip); @@ -461,7 +448,8 @@ } return list; } - //鑾峰彇涓鍒櫧瑙掑害鍜屼綅缃� + #endregion + #region 鑾峰彇涓鍒櫧瑙掑害鍜屼綅缃� private List<ResultData> GetWhiteLocation(List<ResultData> list) { var group = list.GroupBy(a => a.TimeTip); @@ -590,7 +578,9 @@ } return list; } - //鑾峰彇鑳屾澘瑙掑害鍜屼綅缃� + #endregion + + #region 鑾峰彇鑳屾澘瑙掑害鍜屼綅缃� private List<ResultData> GetBkLocation(List<ResultData> list) { var group = list.GroupBy(a => a.TimeTip); @@ -689,194 +679,91 @@ } return list; } - - //鍐欏叆璁惧鍒ゆ柇缁撴灉鎶ヨ〃 - private void WriteJR(List<ResultData> Lens,string item,int LensNumb, string file12) - { - if (Lens.Count == 0) - { - - var content11 = $"{item},{LensNumb},{"OK"}"; - File.AppendAllText(file12, content11, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - } - else - { - if (Lens[0].DefectType == "鍒櫧") - { - var content11 = $"{item},{LensNumb},{Lens[0].JudgmentResult},{Lens[0].DefectType}"; - File.AppendAllText(file12, content11, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - for (int i = 0; i < Lens.Count; i++) - { - if (Lens[i].DefectType == "鍒櫧") - { - var content111 = $"{""},{""},{""},{""},{""},{Lens[i].ex},{Lens[i].location},{Lens[i].X},{Lens[i].Y},{(int)(Lens[i].R)},{(int)(Lens[i].angle)}"; - File.AppendAllText(file12, content111, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - } - else - { - var content111 = $"{""},{""},{""},{Lens[i].DefectType},{""},{Lens[i].ex},{Lens[i].location},{Lens[i].X},{Lens[i].Y},{(int)(Lens[i].R)},{(int)(Lens[i].angle)}"; - File.AppendAllText(file12, content111, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - } - - } - } - else - { - var content11 = $"{item},{LensNumb},{Lens[0].JudgmentResult},{Lens[0].DefectType},{Lens[0].PostTreatmentResults}"; - File.AppendAllText(file12, content11, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - for (int i = 0; i < Lens.Count; i++) - { - var content111 = $"{""},{""},{""},{""},{""},{Lens[i].ex},{Lens[i].location},{Lens[i].X},{Lens[i].Y},{(int)(Lens[i].R)},{(int)(Lens[i].angle)}"; - File.AppendAllText(file12, content111, Encoding.UTF8); - File.AppendAllText(file12, "\r\n"); - } - } - - } - } - - - //璁$畻涓ょ偣涔嬮棿璺濈 + #endregion + #region 璁$畻涓ょ偣涔嬮棿璺濈 private double GetDistance(double x1, double y1, double x2, double y2) { return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2)); } - //璁$畻瑙掑害 + #endregion + #region 璁$畻瑙掑害 private double GetAngle(double x1, double y1,double size) { return Math.Atan2((y1 - size), (x1 - size)) * (180 / Math.PI); } - - private List<ResultData> GetData(string[] allLines) + #endregion + #region 璁$畻鏈�澶у昂瀵� + private List<ResultData> GetMaxSize(List<ResultData> list) { - var dataList = new List<ResultData>(); - var nametemp = allLines[1].Split(',')[0]; - var resulttemp = allLines[1].Split(',')[1]; - string Ptr = ""; - string defectType = ""; - for (int i = 1; i < allLines.Length; i++) + for (int i = 0; i < list.Count; i++) { - - var data = allLines[i].Split(','); - - - if (data[0] == "") + if (list[i].Width > list[i].Height) { - data[0] = nametemp; - data[1] = resulttemp; - if (data[3] != "鍒櫧") - { - data[10] = Ptr; - } - - } - if (data[3] == "鍒櫧") - { - defectType = "鍒櫧"; - Ptr = "鍒櫧"; + list[i].ex = list[i].Width * 0.0043; } else { - defectType = "鐧界偣"; - Ptr = data[10]; + list[i].ex = list[i].Height * 0.0043; } - - if (data[6] == "-") - { - - dataList.Add(new ResultData() - { - TimeTip = data[0].Split('-')[0], - ImageFileName = data[0], - JudgmentResult = data[1], - Result = data[3] == "OK", - DefectType = defectType, - - }); ; ; - - continue; - - } - var data6 = data[6].Split('#').ToList(); - data6.Remove(""); - var temp6 = Convert.ToInt32(data6[0]); - for (int a6 = 0; a6 < data6.Count; a6++) - { - if (Convert.ToInt32(data6[a6]) > temp6) - { - temp6 = Convert.ToInt32(data6[a6]); - } - } - data[6] = Convert.ToString(temp6); - - var data7 = data[7].Split('#').ToList(); - data7.Remove(""); - var temp7 = Convert.ToInt32(data7[0]); - for (int a7 = 0; a7 < data7.Count; a7++) - { - if (Convert.ToInt32(data7[a7]) > temp7) - { - temp7 = Convert.ToInt32(data7[a7]); - } - } - data[7] = Convert.ToString(temp7); - - - dataList.Add(new ResultData() - { - TimeTip = data[0].Split('-')[0], - ImageFileName = data[0], - JudgmentResult = data[1], - Result = data[3] == "OK", - Probability = Convert.ToDouble(data[4]), - Uncertainty = Convert.ToDouble(data[5]), - //Height = Convert.ToDouble(data[6].Replace("#", "").Replace("-", "")), - //Width = Convert.ToDouble(data[7].Replace("#", "").Replace("-", "")), - Height = Convert.ToDouble(data[6]), - Width = Convert.ToDouble(data[7]), - X = Convert.ToDouble(data[8].Replace("#", "").Replace("-", "")), - Y = Convert.ToDouble(data[9].Replace("#", "").Replace("-", "")), - DefectType = defectType, - PostTreatmentResults = Ptr, - - }); ; ; - - nametemp = data[0]; - resulttemp = data[1]; - //Ptr = data[10]; } + return list; + } + #endregion + #region 鑾峰彇鏂囦欢鍚嶇О骞剁‘瀹氱己闄风被鍨� + private string GetDefactType(FileInfo fileinfo) + { + string defatType=""; + if (fileinfo.Name.Contains("鐧界偣")) + { + defatType= "鐧界偣"; + } + else if (fileinfo.Name.Contains("鍒櫧")) + { + defatType = "鍒櫧"; + } + else if (fileinfo.Name.Contains("闀�鑶滅牬鎹�")) + { + defatType = "闀�鑶滅牬鎹�"; + } + else if (fileinfo.Name.Contains("鍒掍激")) + { + defatType = "鍒掍激"; + } + + + + return defatType; + } + #endregion + private List <ResultData> GetFileData(FileInfo fileInfos) + { + var allLines = File.ReadAllLines(fileInfos.FullName, Encoding.Default); + List<ResultData> dataList = new List<ResultData>(); + if (allLines.Length > 1) + { + switch (GetDefactType(fileInfos)) + { + case "鐧界偣": + dataList = readfile.GetWhiteFile(allLines); + break; + case "鍒櫧": + dataList = readfile.GetWhiteningFile(allLines); + break; + case "鍒掍激": + dataList = readfile.GetScratchPartFile(allLines); + break; + case "闀�鑶滅牬鎹�": + dataList = readfile.GetZoomPartFile(allLines); + break; + //default: + // dataList1 = null; + // break; + } + } return dataList; } - - - } - - public class ResultData - { - public string TimeTip = ""; - public string JudgmentResult = ""; - public string ImageFileName = ""; - public bool Result = true; - public int Lensnumber = 0; - public double Probability = 0; - public double Uncertainty = 0; - public double Height = 0; - public double Width = 0; - public double X = 0; - public double Y = 0; - public double ex = 0; - public string location = ""; - public double angle = 0; - public double R = 0; - public string DefectType = ""; - public string PostTreatmentResults = ""; } -- Gitblit v1.8.0