schangxiang@126.com
2025-01-08 4e475294999e7053036cc162de388010f6ee3132
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_FormTest/Form1.cs
@@ -1,4 +1,5 @@
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_BusinessLogical;
using iWare_SCADA_BusinessLogical.Utils;
using iWare_SCADA_Model;
using System;
using System.Collections.Generic;
@@ -102,7 +103,10 @@
        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)
@@ -183,5 +187,172 @@
            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<WorkPieceProcess> workPieceProcessList = new List<WorkPieceProcess>();
            List<string> js_strList = new List<string>();
            List<string> strList = new List<string>() {
                "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<string> 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<string> GetListForOP(int ii)
        {
            List<string> new_strList = new List<string>() { };
            List<string> strList = new List<string>() {
                "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);
            }
        }
    }
}