using iWare_SCADA_BusinessLogical; using iWare_SCADA_BusinessLogical.Utils; using iWare_SCADA_Model; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock; namespace iWare_SCADA_FormTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { string path = ConfigHelper.GetConfigString("OP80QualityData_Test");//OP80的地址 var newFiles = FileHelper.DetectNewFilesCSV(path, 300, DateTime.Now.AddDays(-100), DateTime.Now.AddDays(1)); foreach (System.IO.FileInfo file in newFiles) { MessageBox.Show("找到文件:" + file.FullName); var toPath = file.FullName.Replace("CA4GC20TD_Test", "CA4GC20TD_COPY"); MessageBox.Show("要移动到:" + file.FullName); File.Move(file.FullName, toPath);//移动 } MessageBox.Show("成功"); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message); } } private void button2_Click(object sender, EventArgs e) { try { string path = ConfigHelper.GetConfigString("OP60QualityData_Test"); var newFiles = FileHelper.DetectNewFiles(path, "*.dfq", 300, DateTime.Now.AddDays(-100), DateTime.Now.AddDays(1)); foreach (System.IO.FileInfo file in newFiles) { //MessageBox.Show("找到文件:" + file.FullName); var toPath = file.FullName.Replace("Measuring_Data_df_Test", "Measuring_Data_df_Copy"); //MessageBox.Show("要移动到:" + file.FullName); File.Move(file.FullName, toPath);//移动 } MessageBox.Show("成功"); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message); } } private void button3_Click(object sender, EventArgs e) { try { string path = ConfigHelper.GetConfigString("OP60QualityData_Zhengshi"); var newFiles = FileHelper.DetectNewFiles(path, "*.dfq", 300, DateTime.Now.AddDays(-100), DateTime.Now.AddDays(1)); foreach (System.IO.FileInfo source_doFile in newFiles) { //MessageBox.Show("找到FullName:" + source_doFile.FullName+ ",Name:" + source_doFile.Name); //目标文件的完整目录 string destFileName = source_doFile.FullName.Replace("Measuring_Data_dfq", "Measuring_Data_df_Copy"); string source_file_name = source_doFile.Name.Replace(".dfq", "");//不带扩展名的文件名字 destFileName = destFileName.Replace(source_file_name, source_file_name + "_" + "_" + DateTime.Now.ToString("yyyyMMddHHmmss")); File.Copy(source_doFile.FullName, destFileName, true); //FileInfo destFile = new FileInfo(destFileName); //MessageBox.Show("新文件找到FullName:" + destFile.FullName + ",Name:" + destFile.Name); } MessageBox.Show("成功"); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message); } } private void button4_Click(object sender, EventArgs e) { string paht = "C:\\Users\\Administrator\\Desktop\\临时\\aa\\FO_000006966558.txt"; DataCaptureHandler_02 dataCaptureHandler_02 = new DataCaptureHandler_02(); dataCaptureHandler_02.GetCH5InfoForOP30(paht, new WorkPieceLogMiddle()); } private void btn_TongJi_Click(object sender, EventArgs e) { //统计 //某段时间的统计 var str_start = this.dateTimePicker_Start.Value.ToString("yyyy-MM-dd" + " " + "00:00:00"); var str_end = this.dateTimePicker_End.Value.ToString("yyyy-MM-dd" + " " + "23:59:59"); var start = Convert.ToDateTime(str_start); var end = Convert.ToDateTime(str_end); int allPlacesCount = 0; List strList = new List() { "OP05","OP10","OP20","OP30","OP35","OP40","OP50","OP60","OP70","OP80" }; var q_strList = string.Join(",", strList); var str = ""; str += "时间范围: " + str_start + "至" + str_end + " \r\n"; using (DbModel edm = new DbModel()) { var allPlaces = edm.WorkPieceLog.Where(x => (x.CreatedTime >= start && x.CreatedTime <= end)).ToList(); var groups = allPlaces.GroupBy(x => x.WorkingProcedure).OrderBy(x => x.Key); foreach (var gg in groups) { var _key = gg.Key; var _list = gg.ToList(); var emtype = " "; var _list_youzhi = _list.Where(x => x.WorkPieceID.Length > 20 && x.WorkPieceID != emtype).ToList(); var _list_empty = _list.Where(x => string.IsNullOrEmpty(x.WorkPieceID) || x.WorkPieceID == emtype).ToList(); var _list_other = _list.Where(x => !((x.WorkPieceID.Length > 20 && x.WorkPieceID != emtype) || (string.IsNullOrEmpty(x.WorkPieceID) || x.WorkPieceID == emtype))).ToList(); var _list_other_str_list = _list_other.Select(x => x.WorkPieceID).Distinct().ToList(); var _list_other_str = string.Join("|", _list_other_str_list); str += $"==================【{_key}】========================= \r\n"; str += $"总量: {_list.Count()},正确二维码数:{_list_youzhi.Count()},空值:{_list_empty.Count},其他:{_list_other.Count},分别是{_list_other_str} \r\n"; //再进行分组,统计 二维码不对的数据 var _list_qc_error = _list.Where(x => string.IsNullOrEmpty(x.WorkPieceID) || x.WorkPieceID.Length <= 20).ToList(); var group_qc_error = _list_qc_error.GroupBy(x => new { x.WorkPieceID, x.CreatedUserName }); str += $"二维码不对的数据,总量: {_list_qc_error.Count()} \r\n"; foreach (var item in group_qc_error) { str += $"二维码不对的数据,WorkPieceID: {item.Key.WorkPieceID},CreatedUserName: {item.Key.CreatedUserName},数量:{item.ToList().Count()} \r\n"; } //再进行分组,统计 二维码对的数据 var group_qc_ok = _list_youzhi.GroupBy(x => new { x.CreatedUserName }); str += $"二维码正确的数据,总量: {_list_youzhi.Count()} \r\n"; foreach (var item in group_qc_ok) { str += $"二维码正确的数据,CreatedUserName: {item.Key.CreatedUserName},数量:{item.ToList().Count()} \r\n"; } //再进行分组,统计 二维码对的数据-去重 var _list_youzhi_quchong = _list_youzhi.Select(x => new { x.CreatedUserName }).Distinct().ToList(); var group_qc_ok_quchong = _list_youzhi_quchong.GroupBy(x => new { x.CreatedUserName }); str += $"(去重后)二维码正确的数据,总量: {_list_youzhi_quchong.Count()} \r\n"; foreach (var item in group_qc_ok_quchong) { str += $"(去重后)二维码正确的数据,CreatedUserName: {item.Key.CreatedUserName},数量:{item.ToList().Count()} \r\n"; } str += "\r\n"; } } str += "\r\n"; this.tb_TongJi.Text = str; } private void button5_Click(object sender, EventArgs e) { //分析缺工序 this.tb_TongJi.Text = ""; //某段时间的统计 var str_start = this.dateTimePicker_Start.Value.ToString("yyyy-MM-dd" + " " + "00:00:00"); var str_end = this.dateTimePicker_End.Value.ToString("yyyy-MM-dd" + " " + "23:59:59"); var start = Convert.ToDateTime(str_start); var end = Convert.ToDateTime(str_end); int allNum = 0; int allPlaces_QueShi_Count = 0; List workPieceProcessList = new List(); List js_strList = new List(); List strList = new List() { "OP05","OP10","OP20","OP30","OP35","OP40","OP50","OP60","OP70","OP80" }; var q_strList = string.Join(",", strList); var str = ""; using (DbModel edm = new DbModel()) { var pieces = edm.WorkPieceInfo.AsNoTracking().Where(x => (x.CreatedTime >= start && x.CreatedTime <= end)).ToList(); var queryIds = pieces.Select(x => x.WorkPieceID).ToList(); var allPlaces = edm.WorkPieceProcess.AsNoTracking().Where(x => queryIds.Contains(x.WorkPieceID)).ToList(); allNum = allPlaces.Count(); var groups = allPlaces.GroupBy(x => x.WorkPieceID).OrderBy(x => x.Key); foreach (var gg in groups) { var _key = gg.Key; if (_key.Length != 22) { continue; } if (!(_key.IndexOf("DZ") > -1)) { continue; } //重新读取数据库 var _list = gg.ToList().OrderByDescending(x => x.CreatedTime); if (_key == "DZ045L2408290100451PAS") { var zz = ""; } var fisrt = _list.FirstOrDefault(); var first_pr = fisrt.WorkingProcedureCurrent; var bb = first_pr.Substring(2, 2); int ii = Convert.ToInt32(bb); List new_strList = GetListForOP(ii);//全部的 var curList = _list.Select(x => x.WorkingProcedureCurrent).ToList(); var cur_new_strList = new_strList.Where(x => !curList.Contains(x)).ToList(); if (cur_new_strList.Count > 0) { // //再读下数据库 // _list = edm.WorkPieceProcess.AsNoTracking().Where(x => //x.WorkPieceID == _key).ToList().OrderByDescending(x => x.CreatedTime); // curList = _list.Select(x => x.WorkingProcedureCurrent).ToList(); // cur_new_strList = new_strList.Where(x => !curList.Contains(x)).ToList(); } //看看前面的工序是否都有 foreach (var item in cur_new_strList) { workPieceProcessList.Add(new WorkPieceProcess() { WorkingProcedureCurrent = item, WorkPieceID = _key }); js_strList.Add(item); allPlaces_QueShi_Count++; } } } var hzStr = ""; //var groups22 = js_strList.GroupBy(x => x).OrderBy(x => x.Count()); var groups22 = js_strList.GroupBy(x => x).OrderBy(x => x.Key); foreach (var gg in groups22) { hzStr += $"工序缺失{gg.Key} 共{gg.ToList().Count()}个" + "\r\n"; } var total = $"总计缺失:{allPlaces_QueShi_Count}。"; total += "\r\n"; //汇总数据 //计算有效数据率 total += $"总工序数量:{allNum},有工序数据{(allNum - allPlaces_QueShi_Count)};"; total += "\r\n"; total += $"有效数据率:{((double)(allNum - allPlaces_QueShi_Count) / (double)allNum * 100).ToString("0.0")}%"; total += "\r\n"; total += "时间范围: " + str_start + "至" + str_end + " \r\n"; total += hzStr; total += "\r\n"; //处理 workPieceProcessList = workPieceProcessList.OrderBy(x => x.WorkingProcedureCurrent).ThenBy(x => x.WorkPieceID).ToList(); foreach (var item in workPieceProcessList) { str += $"缺少{item.WorkingProcedureCurrent}工序,WorkPieceID: {item.WorkPieceID} \r\n"; } str += "\r\n"; this.tb_TongJi.Text = total + str; } private List GetListForOP(int ii) { List new_strList = new List() { }; List strList = new List() { "OP05","OP10","OP20","OP30","OP35","OP40","OP50","OP60","OP70","OP80" }; foreach (var item in strList) { var bb = item.Substring(2, 2); int dd = Convert.ToInt32(bb); if (dd <= ii) { new_strList.Add(item); } } return new_strList; } private void button6_Click(object sender, EventArgs e) { try { string path = @"U:\\NutrunnerData\\FO\\SEQ_24"; var newFiles = FileHelper.DetectNewFiles(path, "*.dfq", 300, DateTime.Now.AddDays(-100), DateTime.Now.AddDays(1)); foreach (System.IO.FileInfo file in newFiles) { //MessageBox.Show("找到文件:" + file.FullName); var toPath = file.FullName.Replace("Measuring_Data_df_Test", "Measuring_Data_df_Copy"); //MessageBox.Show("要移动到:" + file.FullName); File.Move(file.FullName, toPath);//移动 } MessageBox.Show("成功"); } catch (Exception ex) { MessageBox.Show("异常:" + ex.Message); } } } }