Beispiel #1
0
        public async Task NetBatchExport()
        {
            if (_windowManager.ShowMessageBox("批量导出当前工件数据到Excel文件", "导出数据", MessageBoxButton.OKCancel,
                                              MessageBoxImage.Information) == MessageBoxResult.OK)
            {
                CanNetBatchExport = false;
                await Task.Run(() =>
                {
                    if (_netHistoryView.Workrecs.Count > 0)
                    {
                        foreach (var workerec in _netHistoryView.Workrecs)
                        {
                            var fileName = Global.SystemPara.OutputPath + "Net" + workerec.SerialNo + ".xls";
                            using var db = new AliDbContext();
                            var holerecs = db.Holerecs.Where(h => h.SerialNo == workerec.SerialNo).ToList();
                            if (holerecs.Count > 0 && CommonMethods.GetFilePath(fileName))
                            {
                                Status = "正在导出工件" + workerec.SerialNo + "数据";
                                for (int i = 1; i < holerecs.Count + 1; i++)
                                {
                                    var points = new List <Models.Point>();
                                    points     = CommonMethods.StringToList(holerecs[i - 1].Data);
                                    NopiExcelHelper <Models.Point> .AddExcel(points, fileName, "hole" + i.ToString(),
                                                                             holerecs[i - 1].MaxPressure);
                                }
                            }
                        }
                    }
                });

                CanNetBatchExport = true;
                Status            = "";
            }
        }
        public async void Confirm()
        {
            try
            {
                await Task.Run(() =>
                {
                    Indicate = "Visible";
                    Workrecs = new List <Workrec>();
                    Holerecs = new List <Holerec>();
                    using (var db = new DrillContext())
                    {
                        Workrecs = db.Workrec.Where(w => w.LastTime >= StartTime && w.LastTime <= EndTime).AsNoTracking().ToList();
                        Holerecs = db.Holerec.Where(h => h.TestTime >= StartTime && h.TestTime <= EndTime).AsNoTracking().ToList();
                    }
                    using (var alidb = new AliDbContext())
                    {
                        var aliworkrecs = new List <Workrec>();
                        var aliholerecs = new List <Holerec>();
                        aliworkrecs     = alidb.Workrecs.AsNoTracking().ToList(); //一次性缓存
                        aliholerecs     = alidb.Holerecs.AsNoTracking().ToList(); //
                        foreach (var item in Workrecs)
                        {
                            //if (alidb.Workrecs.Any(w => w.Id == item.Id)==false)
                            if (aliworkrecs.Any(w => w.Id == item.Id) == false)
                            {
                                alidb.Workrecs.Add(item);
                            }
                            else
                            {
                                alidb.Workrecs.Update(item);
                            }
                        }
                        foreach (var item in Holerecs)
                        {
                            //if(alidb.Holerecs.Any(h => h.Id == item.Id) == false)
                            if (aliholerecs.Any(h => h.Id == item.Id) == false)
                            {
                                alidb.Holerecs.Add(item);
                            }
                            else
                            {
                                alidb.Holerecs.Update(item);
                            }
                        }
                        alidb.SaveChanges();
                    }
                });

                Indicate = "Hidden";
                _windowManager.ShowMessageBox("上传完成", "信息", MessageBoxButton.OK);
            }
            catch (Exception)
            {
                Indicate = "Hidden";
                _windowManager.ShowMessageBox("网络数据库连接失败!", "警告");
            }
        }
        public async void DeleteHoleRec()
        {
            if (Holerec != null && _windowManager.ShowMessageBox("确认要删除工件" + Workrec.SerialNo + "洞号" + Holerec.HoleNumber +
                                                                 "的记录?", "警告", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
            {
                await Task.Run(() =>
                {
                    var db = new AliDbContext();
                    db.Holerecs.Remove(Holerec);
                    db.SaveChanges();
                });

                QueryHole();
            }
        }
        public async void QueryWorkBySerialNO()
        {
            await Task.Run(() =>
            {
                if (QuerySearialNO != null)
                {
                    using var db = new AliDbContext();
                    Workrecs     = db.Workrecs.Where(w => w.SerialNo.Contains(QuerySearialNO)).OrderByDescending(w => w.LastTime).ToList();
                }
            });

            if (Workrecs != null)
            {
                Workrec = Workrecs.FirstOrDefault();
            }
        }
        public async void DeleteWorkRec()
        {
            if (Workrec != null && _windowManager.ShowMessageBox("确认要删除工件号为" + Workrec.SerialNo +
                                                                 "的记录?", "警告", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
            {
                await Task.Run(() =>
                {
                    var db    = new AliDbContext();
                    var temph = db.Holerecs.Where(h => h.SerialNo == Workrec.SerialNo).ToList();
                    db.Workrecs.Remove(Workrec);
                    db.Holerecs.RemoveRange(temph);
                    db.SaveChanges();
                });

                Query();
            }
        }
        public async void QueryHole()
        {
            await Task.Run(() =>
            {
                using var db = new AliDbContext();
                Holerecs     = db.Holerecs.Where(h => h.SerialNo == Workrec.SerialNo).ToList();
            });

            MyModel.Title = "工件" + Workrec.SerialNo + "曲线";
            MyModel.Series.Clear();
            for (int i = 0; i < Holerecs.Count; i++)
            {
                List <DataPoint>    DataPoints = new List <DataPoint>();
                List <Models.Point> points     = new List <Models.Point>();
                points = CommonMethods.StringToList(Holerecs[i].Data);
                for (int j = 0; j < points.Count; j++)
                {
                    var temppoint = new DataPoint(points[j].x * Global.SystemPara.con_factor_x, points[j].y * Global.SystemPara.con_factor_y);
                    DataPoints.Add(temppoint);
                }
                OxyPlot.Series.LineSeries lineSeries = new OxyPlot.Series.LineSeries();
                lineSeries.Points.AddRange(DataPoints);
                lineSeries.Color               = OxyColor.FromRgb(255, 0, 0);
                lineSeries.StrokeThickness     = 1;
                lineSeries.TrackerFormatString = "{0}\n{1}: {2:0.#}mm\n{3}: {4:0.##}Mpa";
                MyModel.Series.Add(lineSeries);
            }
            if (Holerecs != null)
            {
                Holerec = Holerecs.FirstOrDefault();
                if (Workrec != null)
                {
                    HoleGridSelectChange();
                }
            }
            MyModel.InvalidatePlot(true);
        }
        public async void QueryWorkByDate()
        {
            try
            {
                await Task.Run(() =>
                {
                    using var db = new AliDbContext();
                    Workrecs     = db.Workrecs.Where(w => w.LastTime >= StartTime && w.LastTime <= EndTime).OrderByDescending(w => w.LastTime).ToList();

                    //if (Workrec != null) QueryHole();  //Workrecs变化后会触发dategrid的selectchange 事件 会触发 queryhole 过程
                });
            }
            catch (Exception)
            {
                _windowManager.ShowMessageBox("网络数据库连接失败!", "警告");
            }

            //Workrec与dategrid 的selectitem绑定 如果将下面的Workrec查询放在异步方法中,
            //dategrid 的workrecs查询后会导致dategrid 的selectitem变化-》Workrec的变化,导致下面的Workrec查询没起到作用
            if (Workrecs != null)
            {
                Workrec = Workrecs.FirstOrDefault();
            }
        }