/// <inheritdoc/> public PressOperationData ConvertToPressDataItem(List <OpcParameter> parameters) { PressOperationData item = new PressOperationData(); bool run1 = parameters.FirstOrDefault(p => p.ParameterName == OpcConsts.Run1) != null? Convert.ToBoolean(parameters.FirstOrDefault(p => p.ParameterName == OpcConsts.Run1).ParameterValue) : false; bool run2 = parameters.FirstOrDefault(p => p.ParameterName == OpcConsts.Run2) != null? Convert.ToBoolean(parameters.FirstOrDefault(p => p.ParameterName == OpcConsts.Run2).ParameterValue) : false; if (run1) { parameters.ForEach(p => InitInternal1(p, item)); item.DateInsert = DateTime.Now; item.Press = press1; } if (run2) { parameters.ForEach(p => InitInternal2(p, item)); item.DateInsert = DateTime.Now; item.Press = press2; } item.Run = run1 || run2; return(item); }
private static void FireOperationDataCreated(PressOperationData data) { if (OperationDataCreated != null) { OperationDataCreated(data); } }
private List <PressOperationData> _batch = new List <PressOperationData>(); // todo подумать как лучше сохранять. private void M(List <OpcParameter> parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } PressOperationData data = this.ConvertToPressDataItem(parameters); if (data.Run && !lastRun) { uniqueID = Guid.NewGuid(); } lastRun = data.Run; if (data.Run) { data.UniqueID = uniqueID; this._batch.Add(data); if (this._batch.Count >= 5) // TODO: можно не сохранить последнюю пачку... { this._dbContex.PressOperationDatas.AddRange(this._batch); this._dbContex.SaveChanges(); this._batch.Clear(); } } }
private void OnReceivedData(List <OpcParameter> parameters) { PressOperationData data = PressOperationData.ConvertToPressDataItem(parameters); if (zdButton5.Enabled != !data.ShowGraph) { zdButton5.Invoke(new Action(() => { zdButton5.Enabled = !data.ShowGraph;//активность кнопки (назад) })); } }
public void StartWork() { _dal = new ZdPressDal(); if (WithFakeData) { Rundomizer = new Random(1); FakeTestTimer = new System.Windows.Forms.Timer { Interval = 3000 }; FakeTestTimer.Tick += (e, a) => { PressOperationData od = new PressOperationData { ShowGraph = true, DlinaSopr = cc++ *20 + Rundomizer.Next(2), DispPress = cc + Rundomizer.Next(200) * 10 }; if (cc % 10 == 0) { od.ShowGraph = false; cc = 0; } if (CurrentPressOperation.PressOperationData == null) { CurrentPressOperation.PressOperationData = new BindingList <PressOperationData>(); } FireOperationDataCreated(od); SavePressOperationData(od); }; FakeTestTimer.Start(); } else { OpcResponderSingleton.Instance.OnReceivedDataAction += OnReceivedData; OpcResponderSingleton.Instance.ConfigureProcessor(); OpcResponderSingleton.Instance.TimerStart(); } }
public void InsertPressOperationData(PressOperationData pressOperationData) { DbProviderFactory factory = SqlClientFactory.Instance; using (DbConnection conn = OpenConnection(factory, ConnectionString)) { using (DbCommand cmd = CreateTextCommand(conn, GetInsertPressOperationDataCommandAsText())) { AddParameter(cmd, "@PressOperationID", pressOperationData.PressOperationId, DbType.Int32); AddParameter(cmd, "@DlinaSopr", pressOperationData.DlinaSopr, DbType.Int32); AddParameter(cmd, "@DispPress", pressOperationData.DispPress, DbType.Double); cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } } }
public void LoadPressOperationData(PressOperation pressOperation) { int operationId = pressOperation.Id; string query = "SELECT [ID], [DispPress], [DlinaSopr], [PressOperationId], [DateInsert] FROM [ZDPress].[dbo].[PressOperationData] WHERE [PressOperationId] = @pressOperationId"; List <PressOperationData> data = new List <PressOperationData>(); DbProviderFactory factory = SqlClientFactory.Instance; using (DbConnection conn = OpenConnection(factory, ConnectionString)) { using (DbCommand cmd = CreateTextCommand(conn, query)) { AddParameter(cmd, "@pressOperationId", operationId, DbType.Int32); try { DbDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { int id = Convert.ToInt32(reader["ID"]); decimal dispPress = Convert.ToDecimal(reader["DispPress"]); int dlinaSopr = Convert.ToInt32(reader["DlinaSopr"]); int pressOperationId = Convert.ToInt32(reader["PressOperationId"]); DateTime dateInsert = Convert.ToDateTime(reader["DateInsert"]); PressOperationData item = new PressOperationData { Id = id, PressOperationId = pressOperationId, DispPress = dispPress, DlinaSopr = dlinaSopr, DateInsert = dateInsert }; data.Add(item); } } catch (Exception ex) { Logger.Log.Error("Error PageOperation", ex); throw; } } } pressOperation.PressOperationData = new BindingList <PressOperationData>(data); }
/// <summary> /// На основе OpcParameter инициализирует PressOperationData. /// </summary> /// <param name="parameter">OpcParameter</param> /// <param name="item">PressOperationData</param> private void InitInternal2(OpcParameter parameter, PressOperationData item) { if (parameter == null) { return; } dynamic val = Convert.ChangeType(parameter.ParameterValue, parameter.ParameterType); if (parameter.ParameterName == OpcConsts.Position2) { item.Position = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.Power2) { item.Power = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.Speed2) { item.Speed = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.PositionSP2) { item.PositionSP = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.PowerSP2) { item.PowerSP = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.SpeedSP2) { item.SpeedSP = Convert.ToDecimal(val); } if (parameter.ParameterName == OpcConsts.Temperature2) { item.Temperature = Convert.ToDecimal(val); } }
public Tuple <List <PressOperationData>, int> GetOperationData(int pressOperationId, int lastPressOperationDataId) { string query = "SELECT " + "(select TOP 1 id from dbo.pressOperations where id > CASE WHEN @pressOperationId = 0 THEN (SELECT MAX(ID) FROM [dbo].[PressOperations]) ELSE @pressOperationId END) as NextId, " + "(SELECT COUNT(1) FROM [dbo].[PressOperationData] WHERE [PressOperationId] = CASE WHEN @pressOperationId = 0 THEN (SELECT MAX(ID) FROM [dbo].[PressOperations]) ELSE @pressOperationId END AND [id] > @lastId) AS total," + "[ID], [DispPress], [DlinaSopr], [PressOperationId], [DateInsert] FROM [dbo].[PressOperationData] WHERE [PressOperationId] = CASE WHEN @pressOperationId = 0 THEN (SELECT MAX(ID) FROM [dbo].[PressOperations]) ELSE @pressOperationId END AND [id] > @lastId"; List <PressOperationData> data = new List <PressOperationData>(); DbProviderFactory factory = SqlClientFactory.Instance; int total = 0; using (DbConnection conn = OpenConnection(factory, ConnectionString)) { using (DbCommand cmd = CreateTextCommand(conn, query)) { AddParameter(cmd, "@pressOperationId", pressOperationId, DbType.Int32); AddParameter(cmd, "@lastId", lastPressOperationDataId, DbType.Int32); try { DbDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { int id = Convert.ToInt32(reader["ID"]); decimal dispPress = Convert.ToDecimal(reader["DispPress"]); int dlinaSopr = Convert.ToInt32(reader["DlinaSopr"]); int pressOperation_Id = Convert.ToInt32(reader["PressOperationId"]); total = Convert.ToInt32(reader["total"]); DateTime dateInsert = Convert.ToDateTime(reader["DateInsert"]); PressOperationData item = new PressOperationData { Id = id, PressOperationId = pressOperation_Id, DispPress = dispPress, DlinaSopr = dlinaSopr, DateInsert = dateInsert }; data.Add(item); } } catch (Exception ex) { Logger.Log.Error("Error PageOperation", ex); throw; } } } return(Tuple.Create <List <PressOperationData>, int>(data, total)); }
private static void ProcessReceivedData(List <OpcParameter> parameters) { PressOperationData data = PressOperationData.ConvertToPressDataItem(parameters); SavePressOperationData(data); }
private static void SavePressOperationData(PressOperationData data) { bool needCreatePressOperation = data.ShowGraph && CurrentPressOperation.Id == 0; if (needCreatePressOperation) { CurrentPressOperation = CreatePressOperation(); } //bool badStart = needCreatePressOperation && data.DlinaSopr != 0; bool changeSopr = _lastDlinaSopr != data.DlinaSopr && data.DlinaSopr < 300; System.Diagnostics.Trace.WriteLine(string.Format("_lastDlinaSopr")); _lastDlinaSopr = data.DlinaSopr; bool needCreatePressOperationData = data.ShowGraph && changeSopr; if (needCreatePressOperationData) { if (CurrentPressOperation.Id == 0) { throw new Exception("Press operaion was not created!"); } data.PressOperationId = CurrentPressOperation.Id; data.DispPress = data.DispPress / 100;//потому что надо _dal.InsertPressOperationData(data); if (CurrentPressOperation.PressOperationData == null) { CurrentPressOperation.PressOperationData = new BindingList <PressOperationData>(); } //CurrentPressOperation.PressOperationData.Add(data); // FireOperationDataCreated(data); } bool pressOperationWasFinished = !data.ShowGraph && CurrentPressOperation.Id != 0; if (pressOperationWasFinished) { // TODO: проверить что обновилось на форме ChartForm form = (ChartForm)UiHelper.GetFormSingle(typeof(ChartForm)); var operation = form.ViewModel.PressOperation; ReportDto reportDto = form.GetReportDto(); /*operation.AxisNumber = reportDto.NomerOsi; * operation.FactoryNumber = reportDto.NomerZavoda; * System.Diagnostics.Trace.WriteLine(" reportDto.NomerZavoda" + reportDto.NomerZavoda); * operation.WheelType = reportDto.TipKolesPar; * operation.Side = reportDto.Storona; * operation.WheelNumber = reportDto.NomerKolesa; * if (!string.IsNullOrWhiteSpace(reportDto.DiametrPodsChasti)) * { * operation.DWheel = Decimal.Parse(reportDto.DiametrPodsChasti); * } * if (!string.IsNullOrWhiteSpace(reportDto.DiametrOtvStupici)) * { * operation.DAxis = Decimal.Parse(reportDto.DiametrOtvStupici); * } * * if (!string.IsNullOrWhiteSpace(reportDto.DlinaStupici)) * { * operation.LengthStup = int.Parse(reportDto.DlinaStupici); * } * * //operation.Natiag = reportDto.Natag; * if (!string.IsNullOrWhiteSpace(reportDto.DlinaSoprag)) * { * operation.LengthSopriazh = int.Parse(reportDto.DlinaSoprag); * } * if (!string.IsNullOrWhiteSpace(reportDto.UsilZapres100)) * { * //operation.Power100Mm = Decimal.Parse(reportDto.UsilZapres100); * } * if (!string.IsNullOrWhiteSpace(reportDto.MaxUsilZapres)) * { * //operation.MaxPower = int.Parse(reportDto.MaxUsilZapres); * } * if (!string.IsNullOrWhiteSpace(reportDto.DlinaPramUch)) * { * //operation.LengthLines = int.Parse(reportDto.DlinaPramUch); * } */ //textBoxPods.DataBindings.Add(new Binding("Text", ViewModel, "PressOperation.DWheel", true, DataSourceUpdateMode.OnPropertyChanged)); //textBoxOtv.DataBindings.Add(new Binding("Text", ViewModel, "PressOperation.DAxis", true, DataSourceUpdateMode.OnPropertyChanged)); //textBoxDlin.DataBindings.Add(new Binding("Text", ViewModel, "PressOperation.LengthStup", true, DataSourceUpdateMode.OnPropertyChanged)); operation.Id = CurrentPressOperation.Id; _dal.UpdatePressOperationFieldTotal("OperationStop", operation, DateTime.Now, DbType.DateTime); _lastDlinaSopr = 0; using (AutoPrint demo = new AutoPrint(reportDto)) { demo.Run(); } CurrentPressOperation.Id = 0; } }
private static void OnReceivedData(List <OpcParameter> parameters) { Dal.InsertPressOperationData(PressOperationData.ConvertToPressDataItem(parameters)); }