Пример #1
0
        public async Task ImportExcel(List <ScheduleDtoForImportExcel> scheduleDto)
        {
            try
            {
                var list      = new List <ScheduleUpdateDto>();
                var listExist = new List <object>();
                var result    = scheduleDto.DistinctBy(x => new
                {
                    x.ModelName,
                    x.ModelNo,
                    x.ArticleNo,
                    x.Process,
                    x.Object,
                    x.Part,
                    x.ProductionDate
                }).Where(x => x.ModelName != "").ToList();

                foreach (var item in result)
                {
                    var Schedule = await AddSchedule(item);

                    list.Add(Schedule);
                }

                var listAdd  = new List <SchedulesUpdate>();
                var listAdd2 = new List <ScheduleUpdateDto>();
                var b        = list.GroupBy(x => new
                {
                    x.ModelName,
                    x.ModelNo,
                    x.ArticleNo,
                    x.Treatment,
                    x.Process,
                    x.ProductionDate
                }).DistinctBy(x => x.Key);
                foreach (var x in b)
                {
                    if (!await _repoScheduleUpdate.FindAll().AnyAsync(y => y.ModelName == x.Key.ModelName && y.ModelNo == x.Key.ModelNo && y.ArticleNo == x.Key.ArticleNo && y.Treatment == x.Key.Treatment && y.Process == x.Key.Process))
                    {
                        // add schedule
                        var schedules = new SchedulesUpdate();

                        schedules.ModelName = x.Key.ModelName;
                        schedules.ModelNo   = x.Key.ModelNo;
                        schedules.ArticleNo = x.Key.ArticleNo;
                        schedules.Treatment = x.Key.Treatment;
                        schedules.Process   = x.Key.Process;
                        // schedules.a = x.Key.ArtProcessID;
                        schedules.CreatedBy  = x.FirstOrDefault().CreatedBy;
                        schedules.ApprovalBy = x.FirstOrDefault().ApprovalBy;
                        if (x.FirstOrDefault().ProcessID == 1)
                        {
                            schedules.ProductionDate = x.FirstOrDefault().ProductionDate;
                            schedules.EstablishDate  = x.FirstOrDefault().ProductionDate.AddDays(-30);
                        }
                        else
                        {
                            schedules.ProductionDate = x.FirstOrDefault().ProductionDate;
                            schedules.EstablishDate  = x.FirstOrDefault().ProductionDate.AddDays(-15);
                        }
                        schedules.CreatedDate    = DateTime.Now;
                        schedules.UpdateTime     = DateTime.Now;
                        schedules.ApprovalStatus = x.FirstOrDefault().ApprovalStatus;
                        schedules.FinishedStatus = x.FirstOrDefault().FinishedStatus;
                        _repoScheduleUpdate.Add(schedules);
                        listAdd.Add(schedules);
                        await _repoScheduleUpdate.SaveAll();

                        // luu db xong moi add part
                        foreach (var part in x.ToList())
                        {
                            if (part.Part == string.Empty)
                            {
                                var dataPart = new Part {
                                    Name = "Whole", ScheduleID = schedules.ID, Status = true
                                };
                                _repoPart.Add(dataPart);
                                await _repoPart.SaveAll();
                            }
                            else
                            {
                                _repoPart.Add(new Part
                                {
                                    ScheduleID = schedules.ID,
                                    Name       = part.Part,
                                });
                                await _repoPart.SaveAll();
                            }
                        }
                    }
                    else
                    {
                        listExist.Add(x.ToList());
                    }
                }
                var result1 = listAdd.Where(x => x.ID > 0).ToList();
                var result2 = listAdd.Where(x => x.ID == 0).ToList();
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Пример #2
0
        public async Task <bool> CreateSchedule(ScheduleDtoForImportExcel obj)
        {
            try
            {
                var process = await _repoProcess.FindAll().FirstOrDefaultAsync(x => x.Name.ToUpper().Equals(obj.Process.ToUpper()));

                var ProcessID = 0;
                if (process != null)
                {
                    ProcessID = process.ID;
                }
                var check = await _repoScheduleUpdate.FindAll().FirstOrDefaultAsync(y => y.ModelName.ToUpper().Equals(obj.ModelName.ToUpper()) && y.ModelNo.ToUpper().Equals(obj.ModelNo.ToUpper()) && y.ArticleNo.ToUpper().Equals(obj.ArticleNo.ToUpper()) && y.Treatment.ToUpper().Equals(obj.Process.ToUpper()) && y.Process.ToUpper().Equals(obj.Object.ToUpper()));

                if (check != null)
                {
                    var listCheck = await _repoPart.FindAll().Where(x => x.ScheduleID == check.ID).ToListAsync();

                    if (obj.listPart.Count == 0)
                    {
                        var checks = listCheck.Select(x => x.Name).Contains("Whole");
                        if (!listCheck.Select(x => x.Name).Contains("Whole"))
                        {
                            _repoPart.Add(new Part
                            {
                                Name       = "Whole",
                                ScheduleID = check.ID,
                                Status     = true
                            });
                            await _repoPart.SaveAll();
                        }
                        // var dataPart = new Part { Name = "Whole", ScheduleID = check.ID, Status = true };
                        // _repoPart.Add(dataPart);
                        // await _repoPart.SaveAll();
                    }
                    else
                    {
                        foreach (var part in obj.listPart)
                        {
                            if (!listCheck.Select(x => x.Name).Contains(part.value))
                            {
                                _repoPart.Add(new Part
                                {
                                    ScheduleID = check.ID,
                                    Name       = part.value,
                                });
                                await _repoPart.SaveAll();
                            }
                        }
                    }
                }
                if (check == null)
                {
                    // add schedule
                    var schedules = new SchedulesUpdate();

                    schedules.ModelName = obj.ModelName;
                    schedules.ModelNo   = obj.ModelNo;
                    schedules.ArticleNo = obj.ArticleNo;
                    schedules.Treatment = obj.Process;
                    schedules.Process   = obj.Object;

                    // schedules.a = x.Key.ArtProcessID;
                    schedules.CreatedBy  = obj.CreatedBy;
                    schedules.ApprovalBy = 0;
                    if (ProcessID == 1)
                    {
                        schedules.ProductionDate = obj.ProductionDate;
                        schedules.EstablishDate  = obj.ProductionDate.AddDays(-30);
                    }
                    else
                    {
                        schedules.ProductionDate = obj.ProductionDate;
                        schedules.EstablishDate  = obj.ProductionDate.AddDays(-15);
                    }
                    schedules.CreatedDate    = DateTime.Now;
                    schedules.UpdateTime     = DateTime.Now;
                    schedules.ApprovalStatus = false;
                    schedules.FinishedStatus = false;
                    _repoScheduleUpdate.Add(schedules);
                    await _repoScheduleUpdate.SaveAll();

                    // luu db xong moi add part

                    if (obj.listPart.Count == 0)
                    {
                        var dataPart = new Part {
                            Name = "Whole", ScheduleID = schedules.ID, Status = true
                        };
                        _repoPart.Add(dataPart);
                        await _repoPart.SaveAll();
                    }
                    else
                    {
                        foreach (var part in obj.listPart)
                        {
                            _repoPart.Add(new Part
                            {
                                ScheduleID = schedules.ID,
                                Name       = part.value,
                            });
                            await _repoPart.SaveAll();
                        }
                    }
                }
                return(true);
            }
            catch (System.Exception)
            {
                return(false);

                throw;
            }
        }