예제 #1
0
 private DiagrammUnitModel GetDiagrammViewModel(ABCGroupModel groupModel, DiagrammViewModel diagrammViewModel)
 => new DiagrammUnitModel()
 {
     V = diagrammViewModel.IncludeV ? groupModel.ABCModels.Where(x => x.VEN == "V").Sum(x => x.SumPercentage):0,
     E = diagrammViewModel.IncludeE ? groupModel.ABCModels.Where(x => x.VEN == "E").Sum(x => x.SumPercentage):0,
     N = diagrammViewModel.IncludeN ? groupModel.ABCModels.Where(x => x.VEN == "N").Sum(x => x.SumPercentage):0
 };
예제 #2
0
        public (ABCGroupModel, ABCGroupModel, ABCGroupModel) GetABC(FilterView filter)
        {
            double GetPercentageOfTotal(List <ABCUnitModel> models, List <SalesViewModel> sales)
            => models.Count() != 0 ? (double)(sales.Count()) / models.Count : 0;

            var medicineSales = GetSalesViewModels(filter)
                                .OrderByDescending(x => x.SalesSum).ToList();

            var salesSum  = medicineSales.Sum(x => x.SalesSum);
            var abcModels = new List <ABCUnitModel>();

            var increaseSumPercentage = 0.0;

            foreach (var medicine in medicineSales)
            {
                var percentage = (double)medicine.SalesSum / salesSum;
                increaseSumPercentage += percentage;
                abcModels.Add(new ABCUnitModel()
                {
                    MedicineName          = medicine.MedicineName,
                    SumPercentage         = percentage,
                    IncreaseSumPercentage = increaseSumPercentage,
                    VEN = medicine.VEN
                });
            }

            var A = new ABCGroupModel()
            {
                ABCModels = abcModels.Where(x => x.IncreaseSumPercentage <= 0.8).ToList()
            };

            A.PercentageOfTotalCount = GetPercentageOfTotal(A.ABCModels, medicineSales);

            var B = new ABCGroupModel()
            {
                ABCModels = abcModels.Where(x => x.IncreaseSumPercentage > 0.8 && x.IncreaseSumPercentage <= 0.95).ToList()
            };

            B.PercentageOfTotalCount = GetPercentageOfTotal(B.ABCModels, medicineSales);

            var C = new ABCGroupModel()
            {
                ABCModels = abcModels.Where(x => x.IncreaseSumPercentage > 0.95).ToList()
            };

            C.PercentageOfTotalCount = GetPercentageOfTotal(C.ABCModels, medicineSales);

            return(A, B, C);
        }