private MdxObject ProcessActions( MdxObject baseObject, IEnumerable <DrillActionContainer> rootActions, DrillContext drillContext) { foreach (var rootAction in rootActions) { if (rootAction.Action != null) { drillContext.MdxContext = new MdxActionContext(rootAction.HierarchyUniqueName, rootAction.MemberUniqueName); drillContext.RootAction = rootAction; drillContext.Processed = false; baseObject = this.ProcessConcreteObject( baseObject, drillContext, null); if (!drillContext.Processed) { baseObject = rootAction.Action.Process(baseObject, drillContext.MdxContext); } } baseObject = this.ProcessActions(baseObject, rootAction.Children, drillContext); } return(baseObject); }
public async void QueryWorkBySerialNo() { try { await Task.Run(() => { if (QuerySearialNO != null) { using var db = new DrillContext(); Workrecs = db.Workrec.Where(w => w.SerialNo.Contains(QuerySearialNO)) .OrderByDescending(w => w.LastTime).ToList(); RecordsCount = Workrecs.Count; } }); ConnectStatus = "Success!"; } catch (Exception e) { ConnectStatus = "failure!"; _windowManager.ShowMessageBox("Connect Net DataBase Failure!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } if (Workrecs != null) { Workrec = Workrecs.FirstOrDefault(); } }
public static void AddWorkrec(Workrec workRecord) { var _workRecord = new Workrec() { SerialNo = workRecord.SerialNo, Layer = workRecord.Layer, HoleCount = workRecord.HoleCount, LastTime = workRecord.LastTime }; using (var db = new DrillContext()) { //int i = db.Workrec.Where(w => w.SerialNo == workRecord.SerialNo).Count(); var temp = db.Workrec.Where(w => w.SerialNo == workRecord.SerialNo).FirstOrDefault(); if (temp != null) { temp.LastTime = _workRecord.LastTime; temp.HoleCount = (short)(_workRecord.HoleCount); db.Workrec.Update(temp); db.SaveChanges(); } else { db.Workrec.Add(_workRecord); db.SaveChanges(); } } }
public static void AddHolerec(Holerec holeRecod) { var _holeRecord = new Holerec() { Data = holeRecod.Data, TestTime = holeRecod.TestTime, MaxPressure = holeRecod.MaxPressure, MacId = holeRecod.MacId, SerialNo = holeRecod.SerialNo, HoleNumber = holeRecod.HoleNumber, LayerNo = holeRecod.LayerNo }; using var db = new DrillContext(); var temp = db.Holerec.Where(h => h.SerialNo == holeRecod.SerialNo && h.HoleNumber == holeRecod.HoleNumber).FirstOrDefault(); if (temp != null) { temp.Data = holeRecod.Data; temp.TestTime = holeRecod.TestTime; temp.MaxPressure = holeRecod.MaxPressure; temp.MacId = holeRecod.MacId; db.Holerec.Update(temp); } else { db.Holerec.Add(_holeRecord); } db.SaveChanges(); }
public async void QueryWorkByDate() { try { await Task.Run(() => { using var db = new DrillContext(); Workrecs = db.Workrec.Where(w => w.LastTime >= StartTime && w.LastTime <= EndTime) .OrderByDescending(w => w.LastTime).ToList(); RecordsCount = Workrecs.Count; //if (Workrec != null) QueryHole(); //Workrecs变化后会触发dategrid的selectchange 事件 会触发 queryhole 过程 }); ConnectStatus = "Success!"; } catch (Exception) { ConnectStatus = "failure!"; _windowManager.ShowMessageBox("Connect Net DataBase Failure!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } //Workrec与dategrid 的selectitem绑定 如果将下面的Workrec查询放在异步方法中, //dategrid 的workrecs查询后会导致dategrid 的selectitem变化-》Workrec的变化,导致下面的Workrec查询没起到作用 if (Workrecs != null) { Workrec = Workrecs.FirstOrDefault(); } }
public async Task LocalBatchExport() { if (_windowManager.ShowMessageBox("批量导出当前工件数据到Excel文件", "导出数据", MessageBoxButton.OKCancel, MessageBoxImage.Information) == MessageBoxResult.OK) { CanLocalBatchExport = false; await Task.Run(() => { if (_historyView.Workrecs.Count > 0) { foreach (var workerec in _historyView.Workrecs) { var fileName = Global.SystemPara.OutputPath + "Net" + workerec.SerialNo + ".xls"; using var db = new DrillContext(); var holerecs = db.Holerec.Where(h => h.SerialNo == workerec.SerialNo).ToList(); if (holerecs.Count > 0 && CommonMethods.GetFilePath(fileName)) { Status = "正在导出工件" + workerec.SerialNo + "数据"; for (int i = 1; i < _historyView.Holerecs.Count + 1; i++) { var points = new List <Models.Point>(); points = CommonMethods.StringToList(_historyView.Holerecs[i - 1].Data); NopiExcelHelper <Models.Point> .AddExcel(points, fileName, "hole" + i.ToString(), _historyView.Holerecs[i - 1].MaxPressure); } } } } }); CanLocalBatchExport = true; Status = ""; } }
public async void BatchExport() { if (_windowManager.ShowMessageBox("Batch Export works' data to Excel", "Export data", MessageBoxButton.OKCancel, MessageBoxImage.Information) == MessageBoxResult.OK) { CanBatchExport = CanQuery = false; await Task.Run(() => { if (Workrecs.Count > 0) { foreach (var workerec in Workrecs) { var fileName = Global.SystemPara.OutputPath + workerec.SerialNo + ".xls"; using var db = new DrillContext(); var holerecs = db.Holerec.Where(h => h.SerialNo == workerec.SerialNo).ToList(); if (holerecs.Count > 0 && CommonMethods.GetFilePath(fileName)) { Status = "Exporting work" + workerec.SerialNo + "'s data"; 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); } } } } }); CanBatchExport = CanQuery = true; Status = ""; } }
public void Start2() { Workrec2.HoleCount = 0; Holerec2.HoleNumber = 1; if (Workrec2.Layer == 0) { Workrec2.Layer = 1; } if (Holerec2.LayerNo == 0) { Holerec2.LayerNo = 1; } if (Workrec2.SerialNo == null) { Workrec2.SerialNo = DateTime.Now.Date.ToString("yyyMMdd") + DateTime.Now.TimeOfDay.ToString("hhmm"); } //判断当前测试工件输入正确与否 重复与否 //进入测试状态后按钮使能 //判断#2台是否有相同号工作 if (Working1 && Workrec2.SerialNo == Workrec1.SerialNo) { _windowManager.ShowMessageBox("测试工件号已在#1台测试,请变更工件号", "警告", MessageBoxButton.OK); return; } CanStart2 = false; //查询数据中是否相同的工件 using var db = new DrillContext(); if (db.Workrec.Any(w => w.SerialNo == Workrec2.SerialNo)) { var dialogResult = _windowManager.ShowMessageBox("测试工件号已存在,继续以此工件号测试请按'Yes'变更请按'No'", "警告", MessageBoxButton.YesNo, MessageBoxImage.Exclamation); if (dialogResult == MessageBoxResult.No) { //此处为增加textbox焦点控制代码 Workrec2IsFocus = CanStart2 = true; return; } else { var holerecs = db.Holerec.Where(h => h.SerialNo == Workrec2.SerialNo).ToList(); if (holerecs != null) { Holerec2.HoleNumber = (short)(holerecs.Last().HoleNumber + 1); } else { Holerec2.HoleNumber = 1; } } } else { Holerec2.HoleNumber = 1; } Working2 = true; CanRedo2 = CanStop2 = true; }
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 DrillContext(); db.Holerec.Remove(Holerec); db.SaveChanges(); }); QueryHole(); } }
public async void QueryWorkBySerialNO() { await Task.Run(() => { if (QuerySearialNO != null) { using var db = new DrillContext(); Workrecs = db.Workrec.Where(w => w.SerialNo.Contains(QuerySearialNO)).OrderByDescending(w => w.LastTime).ToList(); } }); if (Workrecs != null) { Workrec = Workrecs.FirstOrDefault(); } }
public async void DeleteHoleRec() { if (Holerec != null && _windowManager.ShowMessageBox( "Confirm to Delete the record of the work" + Workrec.SerialNo + "Hole" + Holerec.HoleNumber, "Waring", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { await Task.Run(() => { var db = new DrillContext(); db.Holerec.Remove(Holerec); db.SaveChanges(); }); QueryHole(); } }
public async void QueryWorkByDate() { await Task.Run(() => { using var db = new DrillContext(); Workrecs = db.Workrec.Where(w => w.LastTime >= StartTime && w.LastTime <= EndTime).OrderByDescending(w => w.LastTime).ToList(); //if (Workrec != null) QueryHole(); //Workrecs变化后会触发dategrid的selectchange 事件 会触发 queryhole 过程 }); //Workrec与dategrid 的selectitem绑定 如果将下面的Workrec查询放在异步方法中, //dategrid 的workrecs查询后会导致dategrid 的selectitem变化-》Workrec的变化,导致下面的Workrec查询没起到作用 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 DrillContext(); var temph = db.Holerec.Where(h => h.SerialNo == Workrec.SerialNo).ToList(); db.Workrec.Remove(Workrec); db.Holerec.RemoveRange(temph); db.SaveChanges(); }); Query(); } }
public MdxExpression Process(MdxExpression baseExpression) { //var hierarchies = new Dictionary<string, List<DrillActionContainer>>(); //foreach (var action in this.Actions) //{ // List<DrillActionContainer> hierarchyActions; // hierarchies.TryGetValue(action.HierarchyUniqueName, out hierarchyActions); // if (hierarchyActions == null) // { // hierarchyActions = new List<DrillActionContainer>(); // hierarchies.Add(action.HierarchyUniqueName, hierarchyActions); // } // hierarchyActions.Add(action); //} var processedExpression = baseExpression; //foreach (var kv in hierarchies) //{ //var flatList = new List<DrillActionContainer>(); //this.GetFlatList(this.Actions, flatList); //flatList.Sort((a, b) => Comparer<int>.Default.Compare(b.Created, a.Created)); //flatList) //{ var drillContext = new DrillContext(); processedExpression = this.ProcessActions( processedExpression, this.Actions, drillContext ) as MdxExpression; foreach (var co in drillContext.ConcreteObjects.Values) { if (co.Assign != null) { co.Commit(); } } //} //} return(processedExpression); }
public async void QueryHole() { await Task.Run(() => { using var db = new DrillContext(); Holerecs = db.Holerec.Where(h => h.SerialNo == Workrec.SerialNo).ToList(); }); MyModel.Title = "Work" + Workrec.SerialNo + "'s Chart"; 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 QueryWorkBySerialNO() { await Task.Run(() => { using var db = new DrillContext(); if (QuerySearialNO != null) { Workrecs = db.Workrec.Where(w => w.SerialNo.Contains(QuerySearialNO)).OrderByDescending(w => w.LastTime).ToList(); } if (Workrecs != null) { Workrec = Workrecs.FirstOrDefault(); } Holerecs.Clear(); foreach (var item in Workrecs) { Holerecs.AddRange(db.Holerec.Where(h => h.SerialNo == item.SerialNo).ToList()); } // QueryHole(); }); }
public MdxExpression Process(MdxExpression baseExpression) { var processedExpression = baseExpression; var drillContext = new DrillContext(); processedExpression = this.ProcessActions( processedExpression, this.Actions, drillContext ) as MdxExpression; foreach (var assigners in drillContext.ConcreteObjects.Values) { foreach (var co in assigners.Values) { if (co.Assign != null) { co.Commit(); } } } return(processedExpression); }
public async void QueryWorkByDate() { await Task.Run(() => { using (var db = new DrillContext()) { Workrecs = db.Workrec.Where(w => w.LastTime >= StartTime && w.LastTime <= EndTime).OrderByDescending(w => w.LastTime).ToList(); if (Workrecs != null) { Workrec = Workrecs.FirstOrDefault(); } Holerecs = new List <Holerec>(); Holerecs.Clear(); foreach (var item in Workrecs) { var temp = db.Holerec.Where(h => h.SerialNo == item.SerialNo).ToList(); Holerecs.AddRange(temp); } }; int i = Holerecs.Count; // QueryHole(); }); }
private MdxObject ProcessConcreteObject(MdxObject baseObject, DrillContext context, Action <MdxExpression> assign) { if (baseObject == null) { return(null); } var concreteObject = this.ConcretizeMdxObject != null? this.ConcretizeMdxObject(baseObject, context.MdxContext) : baseObject; if (concreteObject != null) { Dictionary <MdxObject, ConcreteObjectAssigner> assigners; context.ConcreteObjects.TryGetValue(context.MdxContext.HierarchyUniqueName, out assigners); if (assigners == null) { assigners = new Dictionary <MdxObject, ConcreteObjectAssigner>(); context.ConcreteObjects.Add(context.MdxContext.HierarchyUniqueName, assigners); } ConcreteObjectAssigner assigner; assigners.TryGetValue(baseObject, out assigner); if (assigner == null) { assigner = new ConcreteObjectAssigner(); assigner.Object = concreteObject; assigner.Assign = assign; assigners.Add(baseObject, assigner); } context.Processed = true; concreteObject = context.RootAction.Action.Process(assigner.Object, context.MdxContext); //context.ConcreteObjects[context.MdxContext.HierarchyUniqueName] assigners[baseObject].Object = concreteObject; //concreteObject = this.ProcessActions2(baseObject, context.RootAction, context.MdxContext); //concreteObject = this.ProcessActions( // concreteObject, // context.RootAction, // context.MdxContext); return(concreteObject); } if (baseObject is MdxBinaryExpression) { var binExpr = baseObject as MdxBinaryExpression; context.Parents.Push(baseObject); this.ProcessConcreteObject(binExpr.Left, context, left => binExpr.Left = left); //var left = //if (left != null) //{ // binExpr.Left = left; //} this.ProcessConcreteObject(binExpr.Right, context, right => binExpr.Right = right); context.Parents.Pop(); //var right = //if (right != null) //{ // binExpr.Right = right; //} } if (baseObject is MdxCalcProperty) { var calcProp = baseObject as MdxCalcProperty; context.Parents.Push(baseObject); this.ProcessConcreteObject(calcProp.Expression, context, expr => calcProp.Expression = expr); //var expr = //if (expr != null) //{ // calcProp.Expression = expr; //} context.Parents.Pop(); } if (baseObject is MdxCaseExpression) { var caseExpr = baseObject as MdxCaseExpression; context.Parents.Push(baseObject); this.ProcessConcreteObject(caseExpr.Value, context, value => caseExpr.Value = value); //var value = //if (value != null) //{ // caseExpr.Value = value; //} this.ProcessConcreteObject(caseExpr.Else, context, elseExpr => caseExpr.Else = elseExpr); //var elseExpr = //if (elseExpr != null) //{ // caseExpr.Else = elseExpr; //} foreach (var whenClause in caseExpr.When) { this.ProcessConcreteObject(whenClause, context, null); } context.Parents.Pop(); } //if (baseObject is MdxConstantExpression) //{ //} if (baseObject is MdxFunctionExpression) { var funcExpr = baseObject as MdxFunctionExpression; context.Parents.Push(baseObject); for (int i = 0; i < funcExpr.Arguments.Count; i++) { var j = i; this.ProcessConcreteObject(funcExpr.Arguments[i], context, expr => funcExpr.Arguments[j] = expr); //var expr = //if (expr != null) //{ // funcExpr.Arguments[i] = expr; //} } context.Parents.Pop(); } //if (baseObject is MdxObjectList<>) //{ //} //if (baseObject is MdxObjectReferenceExpression) //{ //} //if (baseObject is MdxParameterExpression) //{ //} if (baseObject is MdxPropertyExpression) { var propExpr = baseObject as MdxPropertyExpression; context.Parents.Push(baseObject); this.ProcessConcreteObject(propExpr.Object, context, propObj => propExpr.Object = propObj); //var propObj = //if (propObj != null) //{ // propExpr.Object = propObj; //} for (int i = 0; i < propExpr.Args.Count; i++) { var j = i; this.ProcessConcreteObject(propExpr.Args[i], context, argExpr => propExpr.Args[j] = argExpr); //var argExpr = //if (argExpr != null) //{ // propExpr.Args[i] = argExpr; //} } context.Parents.Pop(); } //if (baseObject is MdxSelectStatement) //{ //} if (baseObject is MdxSetExpression) { var setExpr = baseObject as MdxSetExpression; context.Parents.Push(baseObject); for (int i = 0; i < setExpr.Expressions.Count; i++) { var j = i; this.ProcessConcreteObject(setExpr.Expressions[i], context, expr => setExpr.Expressions[j] = expr); //var expr = //if (expr != null) //{ // setExpr.Expressions[i] = expr; //} } context.Parents.Pop(); } if (baseObject is MdxTupleExpression) { var tupleExpr = baseObject as MdxTupleExpression; context.Parents.Push(baseObject); for (int i = 0; i < tupleExpr.Members.Count; i++) { var j = i; this.ProcessConcreteObject(tupleExpr.Members[i], context, memberExpr => tupleExpr.Members[j] = memberExpr); //var memberExpr = //if (memberExpr != null) //{ // tupleExpr.Members[i] = memberExpr; //} } context.Parents.Pop(); } if (baseObject is MdxUnaryExpression) { var unaryExpr = baseObject as MdxUnaryExpression; context.Parents.Push(baseObject); this.ProcessConcreteObject(unaryExpr.Expression, context, expr => unaryExpr.Expression = expr); //var expr = //if (expr != null) //{ // unaryExpr.Expression = expr; //} context.Parents.Pop(); } if (baseObject is MdxWhenClause) { var whenClause = baseObject as MdxWhenClause; context.Parents.Push(baseObject); this.ProcessConcreteObject(whenClause.When, context, when => whenClause.When = when); //var when = //if (when != null) //{ // whenClause.When = when; //} this.ProcessConcreteObject(whenClause.Then, context, then => whenClause.Then = then); //var then = //if (then != null) //{ // whenClause.Then = then; //} context.Parents.Pop(); } if (baseObject is MdxWhereClause) { var whereClause = baseObject as MdxWhereClause; context.Parents.Push(baseObject); this.ProcessConcreteObject(whereClause.Expression, context, expr => whereClause.Expression = expr); //var expr = //if (expr != null) //{ // whereClause.Expression = expr; //} context.Parents.Pop(); } if (baseObject is MdxWithCalculatedCellItem) { var withCell = baseObject as MdxWithCalculatedCellItem; context.Parents.Push(baseObject); this.ProcessConcreteObject(withCell.AsExpression, context, asExpr => withCell.AsExpression = asExpr); //var asExpr = //if (asExpr != null) //{ // withCell.AsExpression = asExpr; //} this.ProcessConcreteObject(withCell.Expression, context, expr => withCell.Expression = expr); //var expr = //if (expr != null) //{ // withCell.Expression = expr; //} this.ProcessConcreteObject(withCell.ForExpression, context, forExpr => withCell.ForExpression = forExpr); //var forExpr = //if (forExpr != null) //{ // withCell.ForExpression = forExpr; //} this.ProcessConcreteObject(withCell.Name, context, nameExpr => withCell.Name = (MdxObjectReferenceExpression)nameExpr); //var nameExpr = //if (nameExpr != null) //{ // withCell.Name = nameExpr; //} foreach (var calcProp in withCell.CalcProperties) { this.ProcessConcreteObject(calcProp, context, null); } context.Parents.Pop(); } if (baseObject is MdxWithMemberItem) { var withMember = baseObject as MdxWithMemberItem; context.Parents.Push(baseObject); this.ProcessConcreteObject(withMember.Expression, context, expr => withMember.Expression = expr); //var expr = //if (expr != null) //{ // withMember.Expression = expr; //} this.ProcessConcreteObject(withMember.Name, context, nameExpr => withMember.Name = (MdxObjectReferenceExpression)nameExpr); //var nameExpr = //if (nameExpr != null) //{ // withMember.Name = nameExpr; //} foreach (var calcProp in withMember.CalcProperties) { this.ProcessConcreteObject(calcProp, context, null); } context.Parents.Pop(); } if (baseObject is MdxWithSetItem) { var withSet = baseObject as MdxWithSetItem; context.Parents.Push(baseObject); this.ProcessConcreteObject(withSet.Expression, context, expr => withSet.Expression = expr); //var expr = //if (expr != null) //{ // withSet.Expression = expr; //} this.ProcessConcreteObject(withSet.Name, context, nameExpr => withSet.Name = (MdxObjectReferenceExpression)nameExpr); //var nameExpr = //if (nameExpr != null) //{ // withSet.Name = nameExpr; //} foreach (var calcProp in withSet.CalcProperties) { this.ProcessConcreteObject(calcProp, context, null); } context.Parents.Pop(); } return(baseObject); }