/// <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);
        }
Exemple #2
0
 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();
                }
            }
        }
Exemple #4
0
        private void OnReceivedData(List <OpcParameter> parameters)
        {
            PressOperationData data = PressOperationData.ConvertToPressDataItem(parameters);

            if (zdButton5.Enabled != !data.ShowGraph)
            {
                zdButton5.Invoke(new Action(() =>
                {
                    zdButton5.Enabled = !data.ShowGraph;//активность кнопки (назад)
                }));
            }
        }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        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();
                }
            }
        }
Exemple #7
0
        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);
            }
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        private static void ProcessReceivedData(List <OpcParameter> parameters)
        {
            PressOperationData data = PressOperationData.ConvertToPressDataItem(parameters);

            SavePressOperationData(data);
        }
Exemple #11
0
        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;
            }
        }
Exemple #12
0
 private static void OnReceivedData(List <OpcParameter> parameters)
 {
     Dal.InsertPressOperationData(PressOperationData.ConvertToPressDataItem(parameters));
 }