コード例 #1
0
        public static double GetTotalMatVarCost(List <BatchIssue> issues, IMaterialDetailsRepository materialDetailsRepository)
        {
            double cost = 0;

            foreach (var issue in issues)
            {
                switch (issue.FaultType)
                {
                case BatchIssue.FaultTypes.Overweigh:
                    cost += materialDetailsRepository.GetCostMaterialLoss(issue.MaterialName, issue.WeightDiffference);
                    break;

                case BatchIssue.FaultTypes.Underweigh:
                    cost += materialDetailsRepository.GetCostMaterialLoss(issue.MaterialName, issue.WeightDiffference);
                    break;

                default:
                    break;
                }
            }
            return(cost);
        }
        private List <MaterialTotals> GetUnsortedTotals(List <BatchReport> reports, List <MaterialDetails> allMaterialDetails)
        {
            List <MaterialTotals> totals       = new List <MaterialTotals>();
            var materialsNamesIncludedInMatVar = _materialDetailsRepository.GetMaterialNamesThatAreIncludedInMatVar();

            foreach (var report in reports)
            {
                foreach (var vessel in report.AllVessels)
                {
                    foreach (var material in vessel.Materials)
                    {
                        if (materialsNamesIncludedInMatVar.Contains(material.Name))
                        {
                            var    tempMaterialDetail = allMaterialDetails.Where(x => x.Name == material.Name).FirstOrDefault();
                            double totalKg            = material.TargetWeight - material.ActualWeight;

                            if (material.Name.Contains("DYE"))
                            {
                                totalKg = helper.CalculateDyeAmountInSolution(material.Name, material.TargetWeight - material.ActualWeight);
                            }

                            if (totals.Any(x => x.Name == material.Name))
                            {
                                totals.Find(x => x.Name == material.Name).TotalKg += totalKg;
                            }
                            else
                            {
                                totals.Add(new MaterialTotals
                                {
                                    Name        = material.Name,
                                    ShortName   = ShortNameTo13Charactors(tempMaterialDetail.ShortName),
                                    ProductCode = tempMaterialDetail.ProductCode,
                                    TotalKg     = Math.Round(totalKg, 2),
                                    Cost        = Math.Round(_materialDetailsRepository.GetCostMaterialLoss(material.Name, totalKg), 2),
                                    CostPerTon  = tempMaterialDetail.CostPerTon
                                });
                            }
                        }
                    }
                }
            }
            return(totals);
        }