Beispiel #1
0
        public async Task <object> CloneBPFC(CloneDto clone)
        {
            try
            {
                var bpfc = await _repoBPFC.FindAll()
                           .Include(x => x.ModelName)
                           .Include(x => x.ModelNo)
                           .Include(x => x.ArtProcess)
                           .Include(x => x.ArticleNo)
                           .Include(x => x.Glues).ThenInclude(x => x.GlueIngredients)
                           .Include(x => x.Plans)
                           .FirstOrDefaultAsync(x => x.ID == clone.BPFCID);

                var artNo = await FindArticleNoByCloneDto(clone);

                clone.ArticleNOID = artNo.ID;
                var artProcess = await FindArtProcessByCloneDto(clone);

                var bpfcForClone = await FindBPFCByCloneDto(clone, artProcess);

                // Not exists bpfc -> add new -> clone
                if (bpfcForClone == null)
                {
                    var bpfcClone = await CreateNewBPFCByCloneDto(clone, artProcess.ID);
                    await CloneGlueByCloneDto(clone, bpfc, bpfcClone);
                }
                else
                {
                    await CloneGlueByCloneDto(clone, bpfc, bpfcForClone);
                }
                return(new
                {
                    message = "The BPFC has been cloned!",
                    status = true
                });
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("Loi clone model name", ex);
                return(new
                {
                    message = "",
                    status = false
                });
            }
        }
Beispiel #2
0
        public async Task <bool> CloneModelName(int modelNameID, int modelNOID, int articleNOID, int processID)
        {
            try
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required,
                                                        new TransactionOptions {
                    IsolationLevel = IsolationLevel.ReadCommitted
                }, TransactionScopeAsyncFlowOption.Enabled))
                {
                    var bpfc = await _repoBPFC.FindAll()
                               .Include(x => x.ModelName)
                               .Include(x => x.ModelNo)
                               .Include(x => x.ArtProcess)
                               .Include(x => x.ArticleNo)
                               .Include(x => x.Glues)
                               .Include(x => x.Plans)
                               .FirstOrDefaultAsync(x => x.ModelNameID == modelNameID &&
                                                    x.ModelNoID == modelNOID &&
                                                    x.ArticleNoID == articleNOID &&
                                                    x.ArtProcessID == processID);

                    if (bpfc == null)
                    {
                        return(false);
                    }
                    var modelNameData = bpfc.ModelName;
                    modelNameData.ID = 0;
                    _repoModelName.Add(modelNameData);
                    await _repoModelName.SaveAll();

                    var modelNoData = bpfc.ModelNo;
                    modelNoData.ID          = 0;
                    modelNoData.ModelNameID = modelNameData.ID;
                    _repoModelNO.Add(modelNoData);
                    await _repoModelNO.SaveAll();

                    var articleNOData = bpfc.ArticleNo;
                    articleNOData.ID        = 0;
                    articleNOData.ModelNoID = modelNoData.ID;
                    _repoArticleNo.Add(articleNOData);
                    await _repoArticleNo.SaveAll();

                    var artProcessData = bpfc.ArtProcess;
                    artProcessData.ID          = 0;
                    artProcessData.ArticleNoID = articleNOData.ID;
                    _repoArtProcess.Add(artProcessData);
                    await _repoArtProcess.SaveAll();

                    var bpfcData = bpfc;
                    bpfcData.ModelName    = null;
                    bpfcData.ModelNo      = null;
                    bpfcData.ArticleNo    = null;
                    bpfcData.ArtProcess   = null;
                    bpfcData.Glues        = null;
                    bpfcData.Plans        = null;
                    bpfcData.ID           = 0;
                    bpfcData.ModelNameID  = modelNameData.ID;
                    bpfcData.ModelNoID    = modelNoData.ID;
                    bpfcData.ArticleNoID  = articleNOData.ID;
                    bpfcData.ArtProcessID = artProcessData.ID;
                    _repoBPFC.Add(bpfcData);
                    await _repoBPFC.SaveAll();

                    var gluesData = bpfc.Glues.ToList();
                    gluesData.ForEach(item =>
                    {
                        item.ID = 0;
                        item.BPFCEstablishID = bpfcData.ID;
                    });

                    _repoGlue.AddRange(gluesData);
                    await _repoGlue.SaveAll();

                    var planData = bpfc.Plans.ToList();
                    planData.ForEach(item =>
                    {
                        item.ID = 0;
                        item.BPFCEstablishID = bpfcData.ID;
                    });

                    _repoPlan.AddRange(planData);
                    await _repoPlan.SaveAll();

                    scope.Complete();
                }
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Loi clone model name", ex);
                return(false);
            }
        }
Beispiel #3
0
        public async Task <object> Summary(int building)
        {
            var item     = _repoBuilding.FindById(building);
            var lineList = await _repoBuilding.FindAll().Where(x => x.ParentID == item.ID).ToListAsync();

            var plannings = await _repoPlan.FindAll().Where(x => lineList.Select(x => x.ID).Contains(x.BuildingID)).ToListAsync();

            // Header
            var header = new List <object> {
                new
                {
                    field      = "GlueID",
                    headerText = "GlueID",
                    width      = 60,
                    textAlign  = "Center",
                    minWidth   = 10
                },
                new
                {
                    field      = "Supplier",
                    headerText = "Supplier",
                    width      = 60,
                    textAlign  = "Center",
                    minWidth   = 10
                },
                new
                {
                    field      = "Chemical",
                    headerText = "Chemical",
                    width      = 60,
                    textAlign  = "Center",
                    minWidth   = 10
                }
            };

            foreach (var line in lineList)
            {
                var itemHeader = new
                {
                    field      = line.Name,
                    headerText = line.Name,
                    width      = 20,
                    textAlign  = "Center",
                    minWidth   = 5
                };
                header.Add(itemHeader);
            }
            // end header

            // Data
            var data  = new List <object>();
            var data2 = new List <object>();
            var model = (from glue in _repoGlue.FindAll().ToList()
                         join bpfc in _repoBPFC.FindAll().ToList() on glue.BPFCEstablishID equals bpfc.ID
                         join plan in _repoPlan.FindAll().ToList() on bpfc.ID equals plan.BPFCEstablishID
                         join bui in lineList on plan.BuildingID equals bui.ID
                         select new SummaryDto
            {
                GlueID = glue.ID,
                BuildingID = bui.ID,
                GlueName = glue.Name,
                BuildingName = bui.Name,
                Comsumption = glue.Consumption,
                ModelNameID = bpfc.ModelNameID,
                WorkingHour = plan.WorkingHour,
                HourlyOutput = plan.HourlyOutput
            }).ToList();

            var glueList = await _repoGlue.FindAll()
                           .Include(x => x.GlueIngredients)
                           .ThenInclude(x => x.Ingredient)
                           .ThenInclude(x => x.Supplier)
                           .Include(x => x.MixingInfos)
                           .Where(x => plannings.Select(p => p.BPFCEstablishID).Contains(x.BPFCEstablishID))
                           .ToListAsync();

            var glueDistinct = glueList.DistinctBy(x => x.Name);

            foreach (var glue in glueDistinct)
            {
                var itemData = new Dictionary <string, object>();
                var supplier = glue.GlueIngredients.FirstOrDefault(x => x.Position.Equals("A")) == null ? "#N/A" : glue.GlueIngredients.FirstOrDefault(x => x.Position.Equals("A")).Ingredient.Supplier.Name;
                itemData.Add("GlueID", glue.ID);
                itemData.Add("Supplier", supplier);
                itemData.Add("Chemical", glue.Name);
                var listTotal         = new List <double>();
                var listStandardTotal = new List <double>();
                var listWorkingHour   = new List <double>();
                var listHourlyOuput   = new List <double>();

                foreach (var line in lineList.OrderBy(x => x.Name))
                {
                    var sdtCon = model.FirstOrDefault(x => x.GlueName == glue.Name && x.BuildingID == line.ID);
                    if (sdtCon != null)
                    {
                        itemData.Add(line.Name, sdtCon.Comsumption.ToDouble());
                        listTotal.Add(sdtCon.Comsumption.ToDouble());
                        listWorkingHour.Add(sdtCon.WorkingHour.ToDouble());
                        listHourlyOuput.Add(sdtCon.HourlyOutput.ToDouble());
                        var standard = sdtCon.Comsumption.ToDouble() * sdtCon.WorkingHour.ToDouble() * sdtCon.HourlyOutput.ToDouble();
                        listStandardTotal.Add(standard);
                    }
                    else
                    {
                        itemData.Add(line.Name, 0);
                    }
                }

                itemData.Add("Standard", Math.Round(listStandardTotal.Sum(), 2));
                var    mixingInfos = _repoMixingInfo.FindAll().Where(x => x.GlueID == glue.ID).ToList();
                double realTotal   = 0;
                foreach (var real in mixingInfos)
                {
                    realTotal += real.ChemicalA.ToDouble() + real.ChemicalB.ToDouble() + real.ChemicalC.ToDouble() + real.ChemicalD.ToDouble() + real.ChemicalE.ToDouble();
                }

                itemData.Add("Real", realTotal);
                itemData.Add("Count", glue.MixingInfos.Count());
                data.Add(itemData);
            }
            header.Add(new
            {
                field      = "TotalComsumption",
                headerText = "Total Consumption",
                width      = 60,
                textAlign  = "Center",
                minWidth   = 10
            });
            // End Data
            return(new { header, data });
        }
Beispiel #4
0
        //Lấy danh sách Brand và phân trang
        public async Task <PagedList <BPFCEstablishDto> > GetWithPaginations(PaginationParams param)
        {
            var lists = _repoBPFCEstablish.FindAll().ProjectTo <BPFCEstablishDto>(_configMapper).OrderBy(x => x.ID);

            return(await PagedList <BPFCEstablishDto> .CreateAsync(lists, param.PageNumber, param.PageSize));
        }
        public async Task <object> GetDetailBPFC(int bpfcID)
        {
            var model = await _repoBPFCEstablish.FindAll().Where(x => x.ID == bpfcID).Include(x => x.ModelName)
                        .Include(x => x.ModelNo)
                        .Include(x => x.ArticleNo)
                        .Include(x => x.ArtProcess).ThenInclude(x => x.Process)
                        .ProjectTo <BPFCEstablishDto>(_configMapper).OrderBy(x => x.ID).ToListAsync();

            return(model);
        }