Exemple #1
0
        private void CheckTargetVsActualWeights(BatchReport report)
        {
            foreach (Material material in GetAllMaterialsUsedInBatch(report))
            {
                if (MaterialNamesIncludedInMatVar.Contains(material.Name))
                {
                    double difference = Math.Round(material.TargetWeight - material.ActualWeight, 2);
                    double percentage = Math.Round(100 - ((material.ActualWeight / material.TargetWeight) * 100), 2);

                    if (Math.Abs(percentage) >= 5)
                    {
                        BatchIssue issue = new BatchIssue()
                        {
                            MaterialName      = material.Name,
                            MaterialShortName = _MaterialDetailsrepository.GetSingleMaterial(material.Name).ShortName ?? material.Name,
                            FaultType         = BatchIssue.FaultTypes.Overweigh,
                            TimeLost          = 0,
                            PercentOut        = percentage,
                            WeightDiffference = difference,
                            Message           = $"{material.Name} {GetUnderOverMessage(difference)} by {difference} kg",
                            IssueCreatedBy    = IssueDescriptor
                        };
                        report.BatchIssues.Add(issue);
                    }
                }
            }
        }
        private void CheckActivePrewigherWeighTimes(BatchReport report, Material material)
        {
            Material activeMaterial = GetSingleMaterialFromVessel(report, Vessel.VesselTypes.ActivePreWeigher, material.Name);

            DateTime batchReadyForPerfumeTime = GetTimeBatchWasReadyForPreweigher(report, Vessel.VesselTypes.ActivePreWeigher);

            if (activeMaterial.StartTime.AddMinutes(activeMaterial.WeighTime) > batchReadyForPerfumeTime)
            {
                double timeLost = activeMaterial.StartTime.AddMinutes(activeMaterial.WeighTime).Subtract(batchReadyForPerfumeTime).TotalMinutes;

                BatchIssue issue = new BatchIssue()
                {
                    MaterialName      = activeMaterial.Name,
                    MaterialShortName = _materialDetailsRepository.GetSingleMaterial(material.Name).ShortName ?? material.Name,
                    IssueCreatedBy    = IssueDescriptor,
                    FaultType         = BatchIssue.FaultTypes.WeighTime,
                    Message           = $"{activeMaterial.Name} took {activeMaterial.WeighTime} minute to weigh but the mixer " +
                                        $"did not need it until {batchReadyForPerfumeTime.ToShortTimeString() } so only {timeLost} " +
                                        $"minutes where lost.",
                    TimeLost = timeLost
                };
            }
        }
        public IActionResult MaterialUsageSingle(string name, DateSelectorModal dateSelectorModal)
        {
            List <BatchReport>     reports = new List <BatchReport>();
            MaterialDetails        details = _materialDetailsRepository.GetSingleMaterial(name);
            MaterialUsageViewModel materialUsageViewModel = new MaterialUsageViewModel();

            materialUsageViewModel.Name              = details.Name;
            materialUsageViewModel.ProductCode       = details.ProductCode;
            materialUsageViewModel.ShortName         = details.ShortName;
            materialUsageViewModel.CostPerTon        = details.CostPerTon;
            materialUsageViewModel.DateSelectorModal = dateSelectorModal;
            reports = helper.GetBatchReportsForDateSelector(materialUsageViewModel.DateSelectorModal);
            materialUsageViewModel.streamInfo = GetStreamMatVarBreakdown(reports, details.Name);
            CalculateWeeklyUsageForSetTimePeriod(materialUsageViewModel, reports, details);
            materialUsageViewModel.WeeklyUsage = materialUsageViewModel.WeeklyUsage.OrderBy(x => x.Year).ThenBy(x => x.WeekNo).ToList();

            return(View("MaterialUsageSingle", materialUsageViewModel));
        }
        private List <PcsParameterTotals> GetWeightsForRecipeType(List <BatchReport> dayReports, RecipeTypes recipeType)
        {
            List <PcsWeightParameters> parametersToLookFor = _pcsParameterRepository.GetParametersForRecipeType(recipeType);
            List <PcsParameterTotals>  materials           = new List <PcsParameterTotals>();

            foreach (var parameter in parametersToLookFor)
            {
                List <IPcsIndividualParameters> weights = GetWeights(dayReports.Where(x => x.RecipeType == recipeType).ToList(), parameter.Parameter);
                string parameterShortName = _materialDetailsRepository.GetSingleMaterial(parameter.Parameter).ShortName;

                if (weights.Count != 0)
                {
                    decimal tolerance = weights.Select(x => x.Tolerance).FirstOrDefault();
                    materials.Add(new PcsParameterTotals(parameterShortName + " (+/- " + tolerance.ToString() + "%)", weights, _pcsScoringRepository));
                }
            }
            return(materials);
        }
 private void CheckWaitTimes(BatchReport report)
 {
     foreach (var vessel in report.AllVessels)
     {
         foreach (var material in vessel.Materials)
         {
             if (material.WaitTime > waitTimeLimit)
             {
                 BatchIssue issue = new BatchIssue
                 {
                     FaultType         = BatchIssue.FaultTypes.WaitTime,
                     MaterialName      = material.Name,
                     MaterialShortName = _materialDetailsRepository.GetSingleMaterial(material.Name).ShortName ?? material.Name,
                     TimeLost          = Math.Round(material.WaitTime, 2),
                     WeightDiffference = 0,
                     Message           = $"The batch had to wait { material.WaitTime } minutes for { material.Name }. " +
                                         $"This is usually because it is being used by another stream.",
                     IssueCreatedBy = IssueDescriptor
                 };
                 report.BatchIssues.Add(issue);
             }
         }
     }
 }