private MotorAxesParameterVueModel GetVueModelBlitz(MachineInfoModel machine)
        {
            var par = _parameterMachineService.GetParameters(machine, (int)enPanel.BlitzMotorAxes);

            var result = new MotorAxesParameterVueModel
            {
                motors = par
                         .Where(p => p.VarNumber == 428 || p.VarNumber == 430 || p.VarNumber == 432 || p.VarNumber == 434)
                         .OrderBy(n => n.VarNumber).ToList(),

                axes = par.Where(p => p.VarNumber == 450 || p.VarNumber == 452 || p.VarNumber == 454)
                       .OrderBy(n => n.VarNumber).ToList()
            };

            //per questi parametri che sono interi elimino o decimali
            foreach (var mot in result.motors)
            {
                mot.Value = double.IsNaN(double.Parse(mot.Value)) ? "" : double.Parse(mot.Value).ToString("0");
            }

            foreach (var ax in result.axes)
            {
                ax.Value = double.IsNaN(double.Parse(ax.Value)) ? "" : ax.ConvertedDistanceValue();
            }


            return(result);
        }
        private ChartViewModel GetHistoricalOptions(MachineInfoModel machine, PeriodModel period)
        {
            var options = new ChartViewModel();

            var granularity    = Common.GetAggregationType(period.StartDate, period.EndDate);
            var startDateTrend = Common.GetStartDateTrend(period.EndDate, period.StartDate, granularity);

            var periodTrend = new PeriodModel();

            periodTrend.StartDate   = startDateTrend.ToUniversalTime().Date;
            periodTrend.EndDate     = period.EndDate.ToUniversalTime().Date.AddDays(1).AddTicks(-1);
            periodTrend.Aggregation = granularity;

            var data = _pieceService.GetAggregationPieces(machine, periodTrend, enDataType.Historical).OrderBy(o => o.Day).ToList();

            if (data.Count == 0)
            {
                return(null);
            }
            var days = data.Select(s => s.Day).Distinct().ToList();

            var valori = _stateService.GetDayActivity(machine, days);

            options.categories = CommonViewService.GetTimeCategories(days, granularity);
            options.yTitle     = $"{Resource.Efficiency} (%)";
            options.yTitle2    = $"{Resource.Productivity} (pz/h)";
            options.series     = GetSeriesChartProd(valori, false);

            return(options);
        }
예제 #3
0
        /// <summary>
        /// Ritorna i dati di barre e spezzoni in base al tipo di aggregazione
        /// </summary>
        /// <param name="machine"></param>
        /// <param name="period"></param>
        /// <returns>Lista dei dettagli di barre e spezzoni</returns>
        public List <HistoryBarModel> GetAggregationBar(MachineInfoModel machine, PeriodModel period)
        {
            var result = new List <HistoryBarModel>();

            try
            {
                result = _context.Set <HistoryBar>().Where(hb => hb.MachineId == machine.Id && hb.Day >= period.StartDate && hb.Day <= period.EndDate).GroupBy(g => g.MachineId).Select(n => new HistoryBarModel
                {
                    Count        = n.Count(),
                    Id           = n.Max(i => i.Id),
                    Length       = n.Sum(i => i.Length),
                    Day          = n.Max(i => i.Day),
                    MachineId    = n.Key,
                    OffcutCount  = n.Sum(i => i.OffcutCount),
                    OffcutLength = n.Sum(i => i.OffcutLength),
                    Period       = null,
                    System       = null,
                    TypeHistory  = "d"
                }).ToList();
            }
            catch (Exception ex)
            {
                string errMessage = string.Format(ex.GetStringLog(),
                                                  machine.Id.ToString(),
                                                  string.Concat(period.StartDate.ToString(), " - ", period.EndDate.ToString(), " - ", period.Aggregation.ToString()));
                LogService.WriteLog(errMessage, LogService.TypeLevel.Error, ex);
            }

            return(result);
        }
        private SensorSpindlesParameterVueModel GetSensorSpindlesVueModel(MachineInfoModel machine)
        {
            var panels = _machineService.GetMachinePanels(machine.Model.Id);
            SensorSpindlesParameterVueModel result = null;

            if (panels.Contains((int)enPanel.XMUSp_SensorsLMX))
            {
                var par = _parameterMachineService.GetParameters(machine, (int)enPanel.XMUSp_SensorsLMX);
                result = new SensorSpindlesParameterVueModel
                {
                    SoglieAmpereMandrini         = par.FirstOrDefault(p => p.VarNumber == 40131),
                    SoglieAmpereContatore        = par.FirstOrDefault(p => p.VarNumber == 40135),
                    AccelerometroINT_1           = par.FirstOrDefault(p => p.VarNumber == 39601),
                    AccelerometroINT_2           = par.FirstOrDefault(p => p.VarNumber == 39602),
                    AccelerometroINT_3           = par.FirstOrDefault(p => p.VarNumber == 39603),
                    HSD_NumCollRilevate          = par.FirstOrDefault(p => p.VarNumber == 32234),
                    AccelContatoreINT_2          = par.FirstOrDefault(p => p.VarNumber == 39612),
                    AccelContatoreINT_3          = par.FirstOrDefault(p => p.VarNumber == 39613),
                    TemperSchedaMinutiINT        = par.FirstOrDefault(p => p.VarNumber == 39733),
                    TemperSchedaContatoreINT     = par.FirstOrDefault(p => p.VarNumber == 39723),
                    TemperStatoreMinutiINT       = par.FirstOrDefault(p => p.VarNumber == 39731),
                    TemperStatoreContatoreINT    = par.FirstOrDefault(p => p.VarNumber == 39721),
                    TemperCuscinettiMinutiINT    = par.FirstOrDefault(p => p.VarNumber == 39732),
                    TemperCuscinettiContatoreINT = par.FirstOrDefault(p => p.VarNumber == 39722)
                };
            }

            return(result);
        }
예제 #5
0
        private ChartViewModel GetKpisOptions(MachineInfoModel machine, PeriodModel period)
        {
            var options = new ChartViewModel();
            var data    = _stateService.GetAggregationStates(machine, period, enDataType.Dashboard);


            var stateProd = data.FirstOrDefault(w => w.enState == enState.Production);

            var stateManual = data.FirstOrDefault(w => w.enState == enState.Manual);


            var totalValue = machine.MachineTypeId == (int)enMachineType.Troncatrice || machine.MachineTypeId == (int)enMachineType.CentroLavoro ?
                             stateProd?.ElapsedTime + stateManual?.ElapsedTime : stateProd?.ElapsedTime;
            var totalOn = data.Where(w => w.enState != enState.Offline).Select(s => s.ElapsedTime).Sum();

            decimal?percProd = Common.GetPercentage(totalValue, totalOn);

            options.series = new List <SerieViewModel>()
            {
                new SerieViewModel {
                    stateProductivityGreenThreshold  = machine.StateProductivityGreenThreshold ?? 0,
                    stateProductivityYellowThreshold = machine.StateProductivityYellowThreshold ?? 0,
                    y = CommonViewService.getKpiViewModel(percProd, machine.StateProductivityGreenThreshold, machine.StateProductivityYellowThreshold).value ?? (decimal)0
                }
            };
            return(options);
        }
        private OtherDataParameterVueModel GetOtherDataVueModel(MachineInfoModel machine)
        {
            var par = _parameterMachineService.GetParameters(machine, (int)enPanel.OtherMachineData);

            if (machine.Model.ModelCodev997 == 508)
            {
                var result = new OtherDataParameterVueModel
                {
                    AsseXKm                   = par.FirstOrDefault(p => p.VarNumber == 700),
                    AsseYKm                   = par.FirstOrDefault(p => p.VarNumber == 702),
                    AsseZKm                   = par.FirstOrDefault(p => p.VarNumber == 704),
                    CountRotationA            = par.FirstOrDefault(p => p.VarNumber == 706),
                    OreVitaMacchina           = par.FirstOrDefault(p => p.VarNumber == 347),
                    OreParzialiDaIngrassaggio = par.FirstOrDefault(p => p.VarNumber == 348),
                    ModelCode                 = machine.Model.ModelCodev997
                };
                return(result);
            }
            else
            {
                var result = new OtherDataParameterVueModel
                {
                    AsseXKm                   = par.FirstOrDefault(p => p.VarNumber == 3000),
                    AsseYKm                   = par.FirstOrDefault(p => p.VarNumber == 3002),
                    AsseZKm                   = par.FirstOrDefault(p => p.VarNumber == 3004),
                    CountRotationA            = par.FirstOrDefault(p => p.VarNumber == 3006),
                    CycleCountXFlow           = par.FirstOrDefault(p => p.VarNumber == 3200),
                    OreVitaMacchina           = par.FirstOrDefault(p => p.VarNumber == 369),
                    OreParzialiDaIngrassaggio = par.FirstOrDefault(p => p.VarNumber == 365),
                    ModelCode                 = machine.Model.ModelCodev997
                };
                return(result);
            }
        }
예제 #7
0
        public List <ToolMachineModel> GetTools(MachineInfoModel machine, bool xmodule = false)
        {
            List <ToolMachineModel> result = new List <ToolMachineModel>();

            try
            {
                List <ToolMachine> query = null;
                if (machine.Type.Id == (int)enMachineType.LineaTaglioLavoro)
                {
                    Regex regex = new Regex(@"^[1-2]\d{3}$");
                    if (xmodule)
                    {
                        query = _context.Set <ToolMachine>().Where(w => w.IsActive && w.MachineId == machine.Id).ToList().Where(w => regex.IsMatch(w.Code)).OrderBy(w => w.CodeAsInt).ThenByDescending(w => w.CurrentLife).ToList();
                    }
                    else
                    {
                        query = _context.Set <ToolMachine>().Where(w => w.IsActive && w.MachineId == machine.Id).ToList().Where(w => !regex.IsMatch(w.Code)).OrderBy(w => w.CodeAsInt).ThenByDescending(w => w.CurrentLife).ToList();
                    }
                }
                else
                {
                    query = _context.Set <ToolMachine>().Where(w => w.IsActive && w.MachineId == machine.Id).ToList().OrderBy(w => w.CodeAsInt).ThenByDescending(w => w.CurrentLife).ToList();
                }

                result = query.Adapt <List <ToolMachineModel> >();
            }
            catch (Exception ex)
            {
                string errMessage = string.Format(ex.GetStringLog(), machine.Id.ToString());
                LogService.WriteLog(errMessage, LogService.TypeLevel.Error, ex);
            }

            return(result);
        }
        public MultiSpindleParameterVueModel GetMultiSpindleVueModel(MachineInfoModel machine, int?position)
        {
            var par    = _parameterMachineService.GetParameters(machine, (int)enPanel.Multispindle, position ?? 11);
            var result = GetMultiSpindleVueModelCluster(par, position ?? 11);

            return(result);
        }
예제 #9
0
        private MessageVueModel GetVueModel(MachineInfoModel machine, PeriodModel period, string actualMachineGroup = null)
        {
            var result = new MessageVueModel();

            var data = _messageService.GetAggregationMessages(machine, period, enDataType.Summary, actualMachineGroup);

            if (data.Count == 0)
            {
                return(result);
            }

            var messages = data.Select(a => new MessageDataModel()
            {
                code        = a.Code,
                type        = a.Type != null ? ((enTypeAlarm)a.Type).GetDescription() : "",
                parameters  = a.Params,
                quantity    = a.Count ?? 0,
                day         = a.Day == null ? "-" : a.Day.Value.ToString("t"),
                description = a.Description
            }).ToList();

            messages = messages.OrderByDescending(o => o.quantity).ToList();

            var sorting = new SortingViewModel
            {
                duration = enSorting.Descending.GetDescription()
            };

            result.messages = messages;
            result.sorting  = sorting;

            return(result);
        }
예제 #10
0
        public List <EfficiencyStateMachineModel> GetDayActivity(MachineInfoModel machine, List <DateTime> days)
        {
            var res = new List <EfficiencyStateMachineModel>();

            foreach (var day in days)
            {
                var result = new EfficiencyStateMachineModel();
                var dateTo = day.AddDays(1);
                result.StatesTime = _context.Set <HistoryState>()
                                    .Where(w => w.MachineId == machine.Id && w.Day >= day && w.Day <= dateTo &&
                                           w.StateId != (int?)enState.Offline &&
                                           w.Operator != null && w.Shift == null)
                                    .GroupBy(g => g.StateId).ToDictionary(s => s.Key, s => s.Sum(x => x.ElapsedTime));

                result.TotalTime = 0;
                if (result.StatesTime != null && result.StatesTime.Count > 0)
                {
                    result.TotalTime = result.StatesTime.Values.Sum();
                }

                result.machineType = machine.MachineTypeId;
                result.Day         = day;

                //tot. pezzi prodotti
                var tmp2 = _context.Set <HistoryPiece>()
                           .Where(w => w.MachineId == machine.Id && w.Day >= day && w.Day <= dateTo &&
                                  w.Operator != null && w.Shift == null).ToList();
                result.CompletedCount = tmp2.Sum(x => x.CompletedCount);
                res.Add(result);
            }

            return(res);
        }
예제 #11
0
        /// <summary>
        /// Ritorna l'elenco dei job in base all'aggregazione
        /// </summary>
        /// <param name="machine"></param>
        /// <param name="period"></param>
        /// <returns>Lista dei dettagli degli stati</returns>
        public List <HistoryJobModel> GetAggregationJobs(MachineInfoModel machine, PeriodModel period)
        {
            var result = new List <HistoryJobModel>();

            try
            {
                result = _context.Set <HistoryJob>().Where(hb =>
                                                           hb.MachineId == machine.Id && hb.Day >= period.StartDate && hb.Day <= period.EndDate).ToList()
                         .GroupBy(g => new { g.MachineId, g.Code, Day = g.Day.Value.Date })
                         .Select(n => new HistoryJobModel
                {
                    Id             = n.Max(i => i.Id),
                    Code           = n.Key.Code,
                    Day            = n.Key.Day,
                    MachineId      = n.Key.MachineId,
                    TotalPieces    = n.OrderByDescending(i => i.Id).FirstOrDefault()?.TotalPieces,
                    ElapsedTime    = n.Max(i => i.ElapsedTime),
                    PiecesProduced = GetProdPieces(n.Max(i => i.Id), n.Key.Day),
                    Period         = null
                }).ToList();
            }
            catch (Exception ex)
            {
                var errMessage = string.Format(ex.GetStringLog(),
                                               machine.Id.ToString(),
                                               string.Concat(period.StartDate.ToString(), " - ", period.EndDate.ToString(), " - ", period.Aggregation.ToString()));
                LogService.WriteLog(errMessage, LogService.TypeLevel.Error, ex);
            }

            return(result);
        }
        private ElectroSpindleParameterVueModel GetElectroSpindleVueModel(MachineInfoModel machine)
        {
            var panels = _machineService.GetMachinePanels(machine.Model.Id);
            ElectroSpindleParameterVueModel result = null;

            if (panels.Contains((int)enPanel.Electrospindle))
            {
                var par = _parameterMachineService.GetParameters(machine, (int)enPanel.Electrospindle);
                if (machine.Model.ModelCodev997 == 508)
                {
                    result = new ElectroSpindleParameterVueModel
                    {
                        OreLavoroTotali      = par.FirstOrDefault(p => p.VarNumber == 714),
                        SblocchiPinza        = par.FirstOrDefault(p => p.VarNumber == 103),
                        RpmRange1500         = par.FirstOrDefault(p => p.VarNumber == 750),
                        RpmRange5500         = par.FirstOrDefault(p => p.VarNumber == 752),
                        RpmRange8000         = par.FirstOrDefault(p => p.VarNumber == 754),
                        RpmRange11500        = par.FirstOrDefault(p => p.VarNumber == 756),
                        RpmRange14500        = par.FirstOrDefault(p => p.VarNumber == 758),
                        RpmRange20000        = par.FirstOrDefault(p => p.VarNumber == 760),
                        ShowSovrassorbimento = false
                    };
                }
                else
                {
                    result = new ElectroSpindleParameterVueModel
                    {
                        OreLavoroTotali      = par.FirstOrDefault(p => p.VarNumber == 3012),
                        SblocchiPinza        = par.FirstOrDefault(p => p.VarNumber == 103),
                        QtaSovrassorbimento  = par.FirstOrDefault(p => p.VarNumber == 3024),
                        RpmRange1500         = par.FirstOrDefault(p => p.VarNumber == 3030),
                        RpmRange5500         = par.FirstOrDefault(p => p.VarNumber == 3032),
                        RpmRange8000         = par.FirstOrDefault(p => p.VarNumber == 3034),
                        RpmRange11500        = par.FirstOrDefault(p => p.VarNumber == 3036),
                        RpmRange14500        = par.FirstOrDefault(p => p.VarNumber == 3038),
                        RpmRange20000        = par.FirstOrDefault(p => p.VarNumber == 3040),
                        ShowSovrassorbimento = true
                    };
                }
            }
            else if (panels.Contains((int)enPanel.XSpindles))
            {
                var par = _parameterMachineService.GetParameters(machine, (int)enPanel.XSpindles);
                result = new ElectroSpindleParameterVueModel
                {
                    OreLavoroTotali      = par.FirstOrDefault(p => p.VarNumber == 40162),
                    SblocchiPinza        = par.FirstOrDefault(p => p.VarNumber == 40300),
                    RpmRange1500         = par.FirstOrDefault(p => p.VarNumber == 40121),
                    RpmRange5500         = par.FirstOrDefault(p => p.VarNumber == 40122),
                    RpmRange8000         = par.FirstOrDefault(p => p.VarNumber == 40123),
                    RpmRange11500        = par.FirstOrDefault(p => p.VarNumber == 40124),
                    RpmRange14500        = par.FirstOrDefault(p => p.VarNumber == 40125),
                    RpmRange20000        = par.FirstOrDefault(p => p.VarNumber == 40126),
                    ShowSovrassorbimento = false
                };
            }

            return(result);
        }
        private AxesLmxParameterVueModel GetLinearAxesLmxVueModel(MachineInfoModel machine)
        {
            var par = _parameterMachineService.GetParameters(machine, (int)enPanel.LinearAxesLMX);

            var result = new AxesLmxParameterVueModel
            {
                AxesLmx = par.OrderBy(n => n.VarNumber).ToList()
            };


            return(result);
        }
예제 #14
0
        public List <MessageMachineModel> GetMaintenanceNotifications(MachineInfoModel machine, PeriodModel period,
                                                                      string userId)
        {
            var notificationsUser = GetMaintenanceMessages(machine, period);
            var notificationsRead = _context.Set <MessageMachineNotification>().Where(n => n.UserId == userId)
                                    .Select(nu => nu.IdMessageMachine).ToList();

            notificationsUser = notificationsUser.Where(o => notificationsRead.All(i => i != o.Id)).OrderBy(n => n.Day)
                                .ToList();

            return(notificationsUser);
        }
예제 #15
0
        public List <MessageMachineModel> GetMaintenanceMessages(MachineInfoModel machine, PeriodModel period)
        {
            var result = new List <MessageMachineModel>();

            try
            {
                var query = _context.Set <MessageMachine>().Where(m => m.MachineId == machine.Id &&
                                                                  m.Machine.ActivationDate != null &&
                                                                  m.MessagesIndex.IsPeriodicM && m.IgnoreDate == null && !m.MessagesIndex.IsDisabled)
                            .ToList();

                query = query.GroupBy(g => g.MessagesIndexId)
                        .Select(s => new MessageMachine
                {
                    Day             = s.Max(i => i.Day),
                    MessagesIndexId = s.Key,
                    Operator        = s.OrderByDescending(i => i.Day).FirstOrDefault()?.Operator,
                    Id         = s.OrderByDescending(i => i.Day).FirstOrDefault()?.Id ?? 0,
                    IgnoreDate = s.OrderByDescending(i => i.Day).FirstOrDefault()?.IgnoreDate,
                    MachineId  = machine.Id,
                    Machine    = _context.Set <Machine>().Find(machine.Id)
                }).ToList()
                        .OrderByDescending(o => o.Day).ToList();

                query = query.Where(m =>
                {
                    var msg = _context.Set <MessagesIndex>().Find(m.MessagesIndexId);
                    if (msg == null)
                    {
                        return(false);
                    }
                    var span        = msg.PeriodicSpan ?? 0;
                    m.MessagesIndex = msg;
                    return(span > 0 &&
                           m.Machine.ActivationDate?.AddHours(span) <= DateTime.UtcNow ||
                           span == 0);
                }).ToList();

                var cl = _languageService.GetCurrentLanguage() ?? 0;
                result = query.BuildAdapter().AddParameters("idLanguage", cl).AdaptToType <List <MessageMachineModel> >();
            }
            catch (Exception ex)
            {
                var errMessage = string.Format(ex.GetStringLog(),
                                               machine.Id.ToString(),
                                               string.Concat(period.StartDate.ToString(), " - ", period.EndDate.ToString(), " - ",
                                                             period.Aggregation.ToString()));
                LogService.WriteLog(errMessage, LogService.TypeLevel.Error, ex);
            }

            return(result);
        }
        private SensorSpindlesAxelParameterVueModel GetSensorsAxelVueModel(MachineInfoModel machine)
        {
            var par    = _parameterMachineService.GetParameters(machine, (int)enPanel.AXEL_Sp_Sensors);
            var result = new SensorSpindlesAxelParameterVueModel
            {
                TempoSovraAssorbimento = par.FirstOrDefault(p => p.VarNumber == 2616),
                QtaSovrassorbimento    = par.FirstOrDefault(p => p.VarNumber == 2624),
                TempoSovraTemperatura  = par.FirstOrDefault(p => p.VarNumber == 2618),
                QtaSovraTemperatura    = par.FirstOrDefault(p => p.VarNumber == 2626),
                NumSblocchiPinza       = par.FirstOrDefault(p => p.VarNumber == 103)
            };

            return(result);
        }
        private OtheDataAxelVueModel GetOtherDataAxelVueModel(MachineInfoModel machine)
        {
            var par    = _parameterMachineService.GetParameters(machine, (int)enPanel.AXEL5_MachineData);
            var result = new OtheDataAxelVueModel
            {
                ClickIsolaSx          = par.FirstOrDefault(p => p.VarNumber == 2620),
                ClickIsolaDx          = par.FirstOrDefault(p => p.VarNumber == 2622),
                OreVitaMacchina       = par.FirstOrDefault(p => p.VarNumber == 347),
                OreUltimoIngrassaggio = par.FirstOrDefault(p => p.VarNumber == 348),
                KmMorse = par.Where(p => p.VarNumber >= 500 && p.VarNumber <= 522).ToList()
            };

            return(result);
        }
        private OtherDataLmxParameterVueModel GetOtherDataLmxVueModel(MachineInfoModel machine)
        {
            var par    = _parameterMachineService.GetParameters(machine, (int)enPanel.OtherMachineDataLmx);
            var result = new OtherDataLmxParameterVueModel
            {
                OreVitaMacchina  = par.FirstOrDefault(p => p.VarNumber == 542),
                OreUltimoIngr    = par.FirstOrDefault(p => p.VarNumber == 20095),
                NumBarreCaricate = par.FirstOrDefault(p => p.VarNumber == 544),
                EtiMancanti      = par.FirstOrDefault(p => p.VarNumber == 40402),
                EtiPerse         = par.FirstOrDefault(p => p.VarNumber == 40400),
                EtiStampate      = par.FirstOrDefault(p => p.VarNumber == 40401)
            };

            return(result);
        }
        private ToolWarehouseVueModel GetToolsWarehouseAxelVueModel(MachineInfoModel machine)
        {
            var par   = _parameterMachineService.GetParameters(machine, (int)enPanel.AXEL_ToolW);
            var lista = par.Select(n => new ToolWarehouseValueModel
            {
                Code  = n.Cluster,
                Value = n.ConvertedValue
            }).ToList();

            var result = new ToolWarehouseVueModel
            {
                toolsWharehouse = lista
            };

            return(result);
        }
        private AxisAxelVueModel GetAxesAxelVueModel(MachineInfoModel machine)
        {
            var par = _parameterMachineService.GetParameters(machine, (int)enPanel.AXEL5_Axes);

            var result = new AxisAxelVueModel
            {
                AsseX    = par.FirstOrDefault(p => p.VarNumber == 2600),
                AsseY    = par.FirstOrDefault(p => p.VarNumber == 2602),
                AsseZ    = par.FirstOrDefault(p => p.VarNumber == 2604),
                AsseRotA = par.FirstOrDefault(p => p.VarNumber == 2610),
                AsseRotC = par.FirstOrDefault(p => p.VarNumber == 2606),
                AsseRotD = par.FirstOrDefault(p => p.VarNumber == 2608)
            };

            return(result);
        }
예제 #21
0
        public List <ParameterMachineValueModel> GetParameters(MachineInfoModel machine, int idPanel, int?idCluster = null)
        {
            var result = new List <ParameterMachineValueModel>();

            //var parametersValues = _parameterMachineValueRepository.Get(p => p.MachineId == machine.Id, tracked: false).GroupBy(g => g.VarNumber);
            var parametersValues = _parameterMachineValueRepository.GetByParameters(machine.Id, idPanel, idCluster);

            var varNums = new Dictionary <string, ParameterMachineValueModel>();

            foreach (var i in parametersValues)
            {
                varNums.Add(i.VarNumber, i.BuildAdapter().AdaptToType <ParameterMachineValueModel>());
            }

            //se ci sono dati cerco tutti i parametri di quel modello per avere almeno le descrizioni
            //if(varNums.Any())
            {
                var parametri = _parameterMachineRepository.GetByParameters(machine.MachineModelId ?? 0).Where(p => p.PanelId == idPanel && (idCluster == null || p.Cluster == idCluster.ToString())).OrderBy(pp => pp.VarNumber).ToList();


                foreach (var pm in parametri)
                {
                    if (varNums.ContainsKey(pm.VarNumber))
                    {
                        result.Add(varNums[pm.VarNumber]);
                    }
                    else
                    {
                        var ve = new ParameterMachineValueModel
                        {
                            VarNumber   = int.Parse(pm.VarNumber),
                            Description = LocalizationService.GetResource(pm.Keyword),
                            Value       = pm.DefaultValue,
                            Cluster     = pm.Cluster,
                            Keyword     = pm.Keyword,
                            CnUm        = pm.CnUm,
                            HmiUm       = pm.HmiUm
                        };
                        result.Add(ve);
                    }
                }
            }



            return(result);
        }
예제 #22
0
        private ToolVueModel GetVueModel(MachineInfoModel machine, bool xmodule = false)
        {
            ToolVueModel result = new ToolVueModel();

            List <ToolMachineModel> data = _toolService.GetTools(machine, xmodule);

            List <ToolMachineModel> dataTools = data.Where(w => w.IsActive).ToList();

            //List<ToolMachineModel> dataHistorical = data.Where(w => w.IsActive == false).ToList();

            if (dataTools.Count == 0)
            {
                return(result);
            }
            var lan = _contextService.GetContext().ActualLanguage.InitialsLanguage;
            List <ToolDataModel> tools = dataTools.Select(t => new ToolDataModel()
            {
                code        = t.Code,
                description = t.Description,
                perc        = Common.GetPercentage(t.CurrentLife, t.ExpectedLife),
                changes     = new ChangeModel()
                {
                    //total = (t.BrokenEventsCount ?? 0) + (t.RevisedEventsCount ?? 0),
                    breaking    = 0,
                    replacement = 0,
                    //historical = dataHistorical.Where(w => w.Code == t.Code).Select(h => new HistoricalModel()
                    //{
                    //    date = h.DateReplaced.ToString(),
                    //    type = CommonViewService.GetTypeTool(h).ToLocalizedString(lan),
                    //    color_type = CommonViewService.GetTypeTool(h).GetDescription(),
                    //    duration = CommonViewService.getTimeViewModel(h.CurrentLife)
                    //}).OrderByDescending(o => o.date).ToList()
                },
                time = CommonViewService.getTimeViewModel((t.ExpectedLife ?? 0) - (t.CurrentLife ?? 0))
            }).ToList();

            tools = tools.OrderByDescending(o => o.perc).ToList();

            SortingViewModel sorting = new SortingViewModel();

            sorting.time = enSorting.Descending.GetDescription();

            result.tools   = tools;
            result.sorting = sorting;

            return(result);
        }
        private MotorBladeLmxParameterVueModel GetMotorBladeLmxVueModel(MachineInfoModel machine)
        {
            var par    = _parameterMachineService.GetParameters(machine, (int)enPanel.MotorBladeLMX);
            var result = new MotorBladeLmxParameterVueModel
            {
                RpmRange1500  = par.FirstOrDefault(p => p.VarNumber == 40111),
                RpmRange2500  = par.FirstOrDefault(p => p.VarNumber == 40112),
                RpmRange3000  = par.FirstOrDefault(p => p.VarNumber == 40113),
                TempoSovraAss = par.FirstOrDefault(p => p.VarNumber == 40115),
                QtaSovraAss   = par.FirstOrDefault(p => p.VarNumber == 40118),
                TempoTot      = par.FirstOrDefault(p => p.VarNumber == 40161),
                TagliLamaTot  = par.FirstOrDefault(p => p.VarNumber == 543),
                TagliLamaPar  = par.FirstOrDefault(p => p.VarNumber == 551)
            };

            return(result);
        }
예제 #24
0
        public MachineInfoModel GetMachineInfo(int machineId)
        {
            var result = new MachineInfoModel();

            try
            {
                var query = _machineRepository.GetByID(machineId);
                result = query.Adapt <MachineInfoModel>();
            }
            catch (Exception ex)
            {
                var errMessage = string.Format(ex.GetStringLog(), machineId.ToString());
                LogService.WriteLog(errMessage, LogService.TypeLevel.Error, ex);
            }

            return(result);
        }
        private AxesKeopeParameterVueModel GetAxesVueModelKeope(MachineInfoModel machine)
        {
            var par = _parameterMachineService.GetParameters(machine, (int)enPanel.KeopeAxes);

            var result = new AxesKeopeParameterVueModel
            {
                axes = par.Where(p =>
                                 p.VarNumber == 450 || p.VarNumber == 452 || p.VarNumber == 454 || p.VarNumber == 456 ||
                                 p.VarNumber == 458).OrderBy(n => n.VarNumber).ToList()
            };

            foreach (var ax in result.axes)
            {
                ax.Value = double.IsNaN(double.Parse(ax.Value)) ? "" : ax.ConvertedDistanceValue();
            }

            return(result);
        }
예제 #26
0
        private JobVueModel GetVueModel(MachineInfoModel machine, PeriodModel period)
        {
            var result = new JobVueModel();

            var data = _jobService.GetAggregationJobs(machine, period);

            if (data.Count == 0)
            {
                return(result);
            }

            CurrentStateModel currentState = null;

            if (machine.Model.Name.ToUpper().Contains("FMC") ||
                (machine.Model.Name.ToUpper().Contains("LMX")))
            {
                currentState = GetCurrentState(machine.Id);
            }

            var jobs = data.Select(j => new JobDataModel()
            {
                code     = j.Code,
                perc     = getPercent(j),
                time     = CommonViewService.getTimeViewModel(j.ElapsedTime),
                quantity = j.PiecesProduced ?? 0,
                pieces   = j.TotalPieces != null && (j.TotalPieces > 0 && !j.Code.ToUpper().StartsWith("M#2")) ? (int)j.TotalPieces : (int)j.PiecesProduced,
                day      = j.Day.GetValueOrDefault(),
                ResidueWorkingTimeJob = getResTime(currentState, j)
            }).ToList();

            jobs = jobs.OrderBy(o => o.perc).ToList();

            var sorting = new SortingViewModel
            {
                progress = enSorting.Ascending.GetDescription()
            };

            result.jobs    = jobs;
            result.sorting = sorting;


            return(result);
        }
        private ToolsFmcLmxParameterVueModel GetToolsFmcLmxVueModel(MachineInfoModel context, int panel)
        {
            var  par     = _parameterMachineService.GetParameters(context, panel);
            bool xmodule = panel == (int)enPanel.XmuToolsLmx;
            var  tools   = _toolsService.GetTools(context, xmodule).Where(n => n.IsActive);
            var  dtos    = tools.Select(n => new ToolParameterMachineValueModel
            {
                Code        = par.FirstOrDefault(p => p.Cluster == n.Code)?.Cluster ?? n.Code,
                Description = n.Description,
                ElapsedLife = par.FirstOrDefault(p => p.Cluster == n.Code)?.ConvertedValue
            }).ToList();

            var result = new ToolsFmcLmxParameterVueModel
            {
                ToolsInfo = dtos,
                PanelId   = panel
            };

            return(result);
        }
        private RotaryAxesParameterVueModel GetRotaryAxesVueModel(MachineInfoModel machine)
        {
            var panels = _machineService.GetMachinePanels(machine.Model.Id);
            RotaryAxesParameterVueModel result = null;

            if (panels.Contains((int)enPanel.RotaryAxesLMX))
            {
                var par = _parameterMachineService.GetParameters(machine, (int)enPanel.RotaryAxesLMX);
                result = new RotaryAxesParameterVueModel
                {
                    NrotazioniAsse3C1 = par.FirstOrDefault(p => p.VarNumber == 308),
                    NrotazioniAsse3C2 = par.FirstOrDefault(p => p.VarNumber == 309),
                    NsblocchiForc1    = par.FirstOrDefault(p => p.VarNumber == 40301),
                    NsblocchiForc2    = par.FirstOrDefault(p => p.VarNumber == 40302),
                    NsblocchiForc3    = par.FirstOrDefault(p => p.VarNumber == 40303)
                };
            }

            return(result);
        }
예제 #29
0
        public List <EfficiencyStateMachineModel> GetOperatorsActivity(MachineInfoModel machine, DateTime dateFrom,
                                                                       DateTime dateTo)
        {
            var tmp = _context.Set <HistoryState>()
                      .Where(w => w.MachineId == machine.Id && w.Day >= dateFrom && w.Day <= dateTo && w.Operator != null &&
                             w.Operator != "Other" && w.StateId != (int?)enState.Offline && w.Shift == null)
                      .GroupBy(g => g.Operator).ToList();

            var totTime = tmp.Select(s => new EfficiencyStateMachineModel
            {
                TotalTime   = s.Sum(x => x.ElapsedTime),
                Operator    = s.Key,
                machineType = machine.MachineTypeId
            }).ToList();

            if (totTime.Count > 0)
            {
                foreach (var item in totTime)
                {
                    //tot. pezzi prodotti
                    var tmp2 = _context.Set <HistoryPiece>()
                               .Where(w => w.MachineId == machine.Id && w.Day >= dateFrom && w.Day <= dateTo &&
                                      w.Operator == item.Operator && w.Shift == null && w.Operator != null).ToList();

                    item.CompletedCount = tmp2.GroupBy(g => g.Operator)
                                          .Select(s => s.Sum(x => x.CompletedCount)).FirstOrDefault();

                    //tempo netto
                    var tmp3 = _context.Set <HistoryState>()
                               .Where(w => w.MachineId == machine.Id && w.Day >= dateFrom && w.Day <= dateTo &&
                                      w.Operator == item.Operator && w.Shift == null && w.Operator != null &&
                                      (w.StateId == (int)enState.Production || w.StateId == (int)enState.Manual))
                               .ToList();

                    item.StatesTime = tmp3.GroupBy(g => g.StateId)
                                      .ToDictionary(s => s.Key, s => s.Sum(x => x.ElapsedTime));
                }
            }

            return(totTime);
        }
        private TiltingAxesParameterVueModel GetTiltingAxesVueModel(MachineInfoModel machine)
        {
            var panels = _machineService.GetMachinePanels(machine.Model.Id);
            TiltingAxesParameterVueModel result = null;

            if (panels.Contains((int)enPanel.TiltingMSAxesLMX))
            {
                var par = _parameterMachineService.GetParameters(machine, (int)enPanel.TiltingMSAxesLMX);
                result = new TiltingAxesParameterVueModel
                {
                    NrotazioniAsse2A1 = par.FirstOrDefault(p => p.VarNumber == 302),
                    NrotazioniAsse2A2 = par.FirstOrDefault(p => p.VarNumber == 303),
                    NrotazioniAsse2A3 = par.FirstOrDefault(p => p.VarNumber == 304),
                    NrotazioniAsse2A4 = par.FirstOrDefault(p => p.VarNumber == 305),
                    NrotazioniAsse2A5 = par.FirstOrDefault(p => p.VarNumber == 306),
                    NrotazioniAsse2A6 = par.FirstOrDefault(p => p.VarNumber == 307)
                };
            }

            return(result);
        }