private void buttonFinish_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                AST_CartTask uiAstCartTask = (AST_CartTask)this.dataGrid.SelectedItem;
                if (uiAstCartTask != null &&
                    MessageBox.Show(string.Format(CultureInfo.InvariantCulture, "确认强制完成 {0}?", uiAstCartTask.CFG_Cart.Name), this.Title, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                    {
                        AST_CartTask dbAstCartTask = dbContext.AST_CartTasks
                                                     .First(lt => lt.Id == uiAstCartTask.Id);

                        dbAstCartTask.AssortingStatus     = AssortingStatus.Finished;
                        dbAstCartTask.CFG_Cart.CartStatus = CartStatus.Assorted;

                        dbContext.SaveChanges();
                    }

                    MessageBox.Show(string.Format(CultureInfo.InvariantCulture, "已强制完成 {0}。\r\n \r\n请手动指派 AGV 搬运到物料超市。", uiAstCartTask.CFG_Cart.Name), this.Title, MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            finally
            {
                try { this.DoSearch(); }
                catch { }
            }
        }
Example #2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                {
                    AST_CartTask astCartTask = dbContext.AST_CartTasks
                                               .First(lt => lt.Id == this.astCartTaskId);
                    List <AST_CartTaskItem> astCartTaskItems = dbContext.AST_CartTaskItems
                                                               .Include(lti => lti.AST_PalletTaskItem)
                                                               .Include(lti => lti.AST_PalletTaskItem.AST_PalletTask.CFG_Pallet)
                                                               .Where(lti => lti.AST_CartTaskId == this.astCartTaskId)
                                                               .OrderBy(lti => lti.CartPosition)
                                                               .ToList();

                    this.Title = this.Title + ":" + astCartTask.CFG_Cart.Name;
                    this.dataGrid.ItemsSource = astCartTaskItems;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
                this.Close();
            }
        }
 private void buttonDetail_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         AST_CartTask astCartTask = (AST_CartTask)this.dataGrid.SelectedItem;
         if (astCartTask != null)
         {
             CartTaskItemsWindow dialog = new CartTaskItemsWindow(astCartTask.Id);
             dialog.ShowDialog();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
     }
 }
        /// <summary>
        /// 按巷道查询当前任务。
        /// </summary>
        /// <param name="cfgChannelId">巷道的主键。</param>
        public AssortingKanbanTaskInfo QueryCurrentTaskInfo(int cfgChannelId)
        {
            AssortingKanbanTaskInfo result = new AssortingKanbanTaskInfo();

            try
            {
                using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                {
                    AST_PalletTask astPalletTask = dbContext.AST_PalletTasks
                                                   .FirstOrDefault(pt => pt.CFG_ChannelId == cfgChannelId && pt.PickStatus != PickStatus.Finished);
                    //新增PDA拣料显示
                    if (astPalletTask == null)
                    {
                        AST_PalletTask lastPalletTask           = dbContext.AST_PalletTasks.Where(t => t.CFG_ChannelId == cfgChannelId).OrderByDescending(t => t.CreateTime).FirstOrDefault();
                        DateTime       dPtlPalletLastArriveTime = DateTime.MinValue;
                        if (lastPalletTask != null)
                        {
                            dPtlPalletLastArriveTime = lastPalletTask.CreateTime;
                        }

                        result = QueryPDACurrentTaskInfo(cfgChannelId, dPtlPalletLastArriveTime);
                        if (result != null)
                        {
                            return(result);
                        }
                        result = new AssortingKanbanTaskInfo();
                    }

                    AST_CartTask astCartTask = dbContext.AST_CartTaskItems
                                               .Where(cti => cti.AST_CartTask.CFG_ChannelId == cfgChannelId && cti.AssortingStatus != AssortingStatus.Finished)
                                               .Select(cti => cti.AST_CartTask)
                                               .FirstOrDefault();

                    string currentBatchCode;
                    if (astPalletTask == null)
                    {
                        currentBatchCode = dbContext.AST_LesTasks
                                           .Where(lt => lt.CFG_ChannelId == cfgChannelId && !lt.TaskGenerated)
                                           .Select(lt => lt.BatchCode)
                                           .FirstOrDefault();
                    }
                    else
                    {
                        currentBatchCode = astPalletTask.BatchCode;
                    }

                    if (!string.IsNullOrEmpty(currentBatchCode))
                    {
                        AST_LesTask currentBatchFirstAstLesTask = new AST_LesTask();
                        if (astPalletTask == null)
                        {
                            currentBatchFirstAstLesTask = dbContext.AST_LesTasks.First(lt => lt.BatchCode == currentBatchCode);
                        }
                        else
                        {
                            currentBatchFirstAstLesTask = dbContext.AST_LesTasks.First(lt => lt.BatchCode == currentBatchCode && lt.CFG_PalletId == astPalletTask.CFG_PalletId);
                        }

                        string projectCode = currentBatchFirstAstLesTask.ProjectCode;
                        string projectStep = currentBatchFirstAstLesTask.ProjectStep;

                        string[] codes = projectCode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        string[] steps = projectStep.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        if (codes.Length > 1 && codes[0] == codes[1])
                        {
                            projectCode = codes[0];
                        }
                        if (steps.Length > 1 && steps[0] == steps[1])
                        {
                            projectStep = steps[0];
                        }

                        result.CurrentBatchInfo.PickType = "P"; //PTL料架拣料
                        //result.CurrentBatchInfo.PickType = 1; //PTL料架拣料
                        result.CurrentBatchInfo.ProjectCode         = projectCode;
                        result.CurrentBatchInfo.ProjectStep         = projectStep;
                        result.CurrentBatchInfo.BatchCode           = currentBatchFirstAstLesTask.BatchCode;
                        result.CurrentBatchInfo.FinishedPalletCount = dbContext.AST_PalletResults
                                                                      .Count(pr => pr.CFG_ChannelId == cfgChannelId && pr.BatchCode == currentBatchCode);
                        result.CurrentBatchInfo.TotalPalletCount = dbContext.AST_LesTasks
                                                                   .Where(lt => lt.CFG_ChannelId == cfgChannelId && lt.BatchCode == currentBatchCode)
                                                                   .Select(lt => lt.CFG_PalletId)
                                                                   .Distinct()
                                                                   .Count();
                        //以下 4 个汇总界面不展示
                        result.CurrentBatchInfo.FinishedMaterialTypeCount = 0;
                        result.CurrentBatchInfo.TotalMaterialTypeCount    = 0;
                        result.CurrentBatchInfo.FinishedMaterialCount     = 0;
                        result.CurrentBatchInfo.TotalMaterialCount        = 0;

                        List <CFG_ChannelCurrentCart> cfgChannelCurrentCarts = dbContext.CFG_ChannelCurrentCarts
                                                                               .Where(ccc => ccc.CFG_ChannelId == cfgChannelId)
                                                                               .OrderBy(ccc => ccc.Position)
                                                                               .ToList();
                        foreach (CFG_ChannelCurrentCart cfgChannelCurrentCart in cfgChannelCurrentCarts)
                        {
                            CFG_ChannelCurrentCartDto cfgChannelCurrentCartDto = new CFG_ChannelCurrentCartDto();
                            cfgChannelCurrentCartDto.CFG_ChannelCurrentCartId = cfgChannelCurrentCart.Id;
                            cfgChannelCurrentCartDto.CFG_ChannelId            = cfgChannelCurrentCart.CFG_ChannelId;
                            cfgChannelCurrentCartDto.Position   = cfgChannelCurrentCart.Position;
                            cfgChannelCurrentCartDto.CFG_CartId = cfgChannelCurrentCart.CFG_CartId;
                            if (cfgChannelCurrentCart.CFG_Cart != null)
                            {
                                cfgChannelCurrentCartDto.CartCode = cfgChannelCurrentCart.CFG_Cart.Code;
                                cfgChannelCurrentCartDto.CartName = cfgChannelCurrentCart.CFG_Cart.Name;
                            }
                        }

                        if (astPalletTask != null)
                        {
                            AST_PalletTaskDto astPalletTaskDto = new AST_PalletTaskDto();
                            astPalletTaskDto.AST_PalletTaskId     = astPalletTask.Id;
                            astPalletTaskDto.CFG_PalletId         = astPalletTask.CFG_PalletId;
                            astPalletTaskDto.PalletCode           = astPalletTask.CFG_Pallet.Code;
                            astPalletTaskDto.PalletType           = astPalletTask.CFG_Pallet.PalletType;
                            astPalletTaskDto.PalletRotationStatus = astPalletTask.CFG_Pallet.PalletRotationStatus;

                            List <AST_PalletTaskItem> astPalletTaskItems = astPalletTask.AST_PalletTaskItems
                                                                           .OrderBy(pti => pti.FromPalletPosition)
                                                                           .ToList();
                            astPalletTaskItems.Sort(new PalletTaskSortComparer()); //正在拣选的排在最前面
                            foreach (AST_PalletTaskItem astPalletTaskItem in astPalletTaskItems)
                            {
                                AST_PalletTaskItemDto astPalletTaskItemDto = new AST_PalletTaskItemDto();
                                astPalletTaskItemDto.AST_PalletTaskItemId = astPalletTaskItem.Id;
                                astPalletTaskItemDto.FromPalletPosition   = astPalletTaskItem.FromPalletPosition;
                                astPalletTaskItemDto.WorkStationCode      = astPalletTaskItem.CFG_WorkStation.Code;
                                astPalletTaskItemDto.MaterialCode         = astPalletTaskItem.MaterialCode;
                                astPalletTaskItemDto.MaterialName         = astPalletTaskItem.MaterialName;
                                astPalletTaskItemDto.MaterialBarcode      = astPalletTaskItem.MaterialBarcode;
                                astPalletTaskItemDto.ToPickQuantity       = astPalletTaskItem.ToPickQuantity;
                                astPalletTaskItemDto.IsSpecial            = astPalletTaskItem.IsSpecial;
                                astPalletTaskItemDto.IsBig          = astPalletTaskItem.IsBig;
                                astPalletTaskItemDto.PickStatus     = astPalletTaskItem.PickStatus;
                                astPalletTaskItemDto.PickedQuantity = astPalletTaskItem.PickedQuantity;

                                astPalletTaskDto.Items.Add(astPalletTaskItemDto);
                            }

                            result.CurrentPalletTask = astPalletTaskDto;
                        }

                        if (astCartTask != null)
                        {
                            AST_CartTaskDto astCartTaskDto = new AST_CartTaskDto();
                            astCartTaskDto.AST_CartTaskId = astCartTask.Id;
                            astCartTaskDto.CFG_CartId     = astCartTask.CFG_CartId;
                            astCartTaskDto.CartCode       = astCartTask.CFG_Cart.Code;
                            astCartTaskDto.CartName       = astCartTask.CFG_Cart.Name;

                            List <AST_CartTaskItem> astCartTaskItems = astCartTask.AST_CartTaskItems
                                                                       .OrderBy(cti => cti.CartPosition)
                                                                       .ToList();
                            foreach (AST_CartTaskItem astCartTaskItem in astCartTaskItems)
                            {
                                AST_PalletTaskItem astPalletTaskItem = astCartTaskItem.AST_PalletTaskItem;

                                AST_CartTaskItemDto astCartTaskItemDto = new AST_CartTaskItemDto();
                                astCartTaskItemDto.AST_CartTaskItemId = astCartTaskItem.Id;
                                astCartTaskItemDto.CartPosition       = astCartTaskItem.CartPosition;
                                astCartTaskItemDto.WorkStationCode    = astCartTask.CFG_WorkStation.Code;
                                astCartTaskItemDto.MaterialCode       = astPalletTaskItem.MaterialCode;
                                astCartTaskItemDto.MaterialName       = astPalletTaskItem.MaterialName;
                                astCartTaskItemDto.MaterialBarcode    = astPalletTaskItem.MaterialBarcode;
                                astCartTaskItemDto.MaxQuantityInSingleCartPosition = astPalletTaskItem.MaxQuantityInSingleCartPosition;
                                astCartTaskItemDto.IsSpecial       = astPalletTaskItem.IsSpecial;
                                astCartTaskItemDto.IsBig           = astPalletTaskItem.IsBig;
                                astCartTaskItemDto.AssortingStatus = astCartTaskItem.AssortingStatus;
                                astCartTaskItemDto.PickedQuantity  = astCartTaskItem.AssortedQuantity;

                                astCartTaskDto.Items.Add(astCartTaskItemDto);
                            }

                            result.CurrentCartTask = astCartTaskDto;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                DbEntityValidationException dbEntityValidationException = ex as DbEntityValidationException;
                if (dbEntityValidationException != null)
                {
                    foreach (DbEntityValidationResult validationResult in dbEntityValidationException.EntityValidationErrors)
                    {
                        foreach (DbValidationError validationError in validationResult.ValidationErrors)
                        {
                            message += Environment.NewLine + validationError.ErrorMessage;
                        }
                    }
                }
                message += Environment.NewLine + ex.StackTrace;

                Logger.Log("ForAssortingKanbanService.QueryCurrentTaskInfo", DateTime.Now.ToString("HH:mm:ss") + Environment.NewLine
                           + message + Environment.NewLine
                           + Environment.NewLine);
            }

            return(result);
        }
Example #5
0
        void threadStart(object unused)
        {
            while (!this.threadNeedQuit)
            {
                try
                {
                    if (this.holdingDays > 0 && this.holdingDays < TimeSpan.MaxValue.TotalDays)
                    {
                        DateTime minTime = DateTime.Today.Subtract(TimeSpan.FromDays(this.holdingDays));

                        using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                        {
                            //装配指引部分
                            List <ASM_AssembleIndication> asmAssembleIndications = dbContext.ASM_AssembleIndications
                                                                                   .Where(ai => ai.CarArrivedTime < minTime &&
                                                                                          ai.AssembleStatus == AssembleStatus.Finished &&
                                                                                          ai.ASM_AssembleResults.All(ar => ar.ASM_AssembleResultMessage.SentSuccessful))
                                                                                   .ToList();
                            foreach (ASM_AssembleIndication asmAssembleIndication in asmAssembleIndications)
                            {
                                ASM_AssembleIndicationMessage     asmAssembleIndicationMessage = asmAssembleIndication.ASM_AssembleIndicationMessage;
                                List <ASM_AssembleIndicationItem> asmAssembleIndicationItems   = asmAssembleIndication.ASM_AssembleIndicationItems.ToList();
                                List <ASM_Task>           asmTasks           = asmAssembleIndication.ASM_Tasks.ToList();
                                List <ASM_AssembleResult> asmAssembleResults = asmAssembleIndication.ASM_AssembleResults.ToList();

                                foreach (ASM_AssembleResult asmAssembleResult in asmAssembleResults)
                                {
                                    ASM_AssembleResultMessage     asmAssembleResultMessage = asmAssembleResult.ASM_AssembleResultMessage;
                                    List <ASM_AssembleResultItem> asmAssembleResultItems   = asmAssembleResult.ASM_AssembleResultItems.ToList();

                                    dbContext.ASM_AssembleResultItems.RemoveRange(asmAssembleResultItems);
                                    dbContext.ASM_AssembleResultMessages.Remove(asmAssembleResultMessage);
                                    dbContext.ASM_AssembleResults.Remove(asmAssembleResult);
                                }

                                foreach (ASM_Task asmTask in asmTasks)
                                {
                                    List <ASM_TaskItem> asmTaskItems = asmTask.ASM_TaskItems.ToList();

                                    dbContext.ASM_TaskItems.RemoveRange(asmTaskItems);
                                    dbContext.ASM_Tasks.Remove(asmTask);
                                }

                                dbContext.ASM_AssembleIndicationItems.RemoveRange(asmAssembleIndicationItems);
                                dbContext.ASM_AssembleIndicationMessages.Remove(asmAssembleIndicationMessage);
                                dbContext.ASM_AssembleIndications.Remove(asmAssembleIndication);
                            }

                            //分拣部分
                            List <AST_PalletArrived> astPalletArriveds = dbContext.AST_PalletArriveds
                                                                         .Where(pa => pa.ArrivedTime < minTime)
                                                                         .ToList();
                            foreach (AST_PalletArrived astPalletArrived in astPalletArriveds)
                            {
                                AST_PalletArrivedMessage astPalletArrivedMessage = astPalletArrived.AST_PalletArrivedMessage;

                                dbContext.AST_PalletArrivedMessages.Remove(astPalletArrivedMessage);
                                dbContext.AST_PalletArriveds.Remove(astPalletArrived);
                            }

                            List <AST_PalletTask> astPalletTasks = dbContext.AST_PalletTasks
                                                                   .Where(pt => pt.CreateTime < minTime &&
                                                                          pt.PickStatus == PickStatus.Finished)
                                                                   .ToList();
                            foreach (AST_PalletTask astPalletTask in astPalletTasks)
                            {
                                List <AST_PalletTaskItem> astPalletTaskItems = astPalletTask.AST_PalletTaskItems.ToList();
                                foreach (AST_PalletTaskItem astPalletTaskItem in astPalletTaskItems)
                                {
                                    List <AST_LesTaskItem>  astLesTaskItems  = astPalletTaskItem.AST_LesTaskItems.ToList();
                                    List <AST_CartTaskItem> astCartTaskItems = astPalletTaskItem.AST_CartTaskItems.ToList();

                                    List <AST_LesTask>        astLesTasks        = new List <AST_LesTask>();
                                    List <AST_LesTaskMessage> astLesTaskMessages = new List <AST_LesTaskMessage>();
                                    foreach (AST_LesTaskItem astLesTaskItem in astLesTaskItems)
                                    {
                                        AST_LesTask        astLesTask        = astLesTaskItem.AST_LesTask;
                                        AST_LesTaskMessage astLesTaskMessage = astLesTask.AST_LesTaskMessage;

                                        if (astLesTask != null && !astLesTasks.Contains(astLesTask))
                                        {
                                            astLesTasks.Add(astLesTask);
                                        }
                                        if (astLesTaskMessage != null && !astLesTaskMessages.Contains(astLesTaskMessage))
                                        {
                                            astLesTaskMessages.Add(astLesTaskMessage);
                                        }

                                        dbContext.AST_LesTaskItems.Remove(astLesTaskItem);
                                    }
                                    dbContext.AST_LesTaskMessages.RemoveRange(astLesTaskMessages);
                                    dbContext.AST_LesTasks.RemoveRange(astLesTasks);

                                    List <AST_CartTask> astCartTasks = new List <AST_CartTask>();
                                    foreach (AST_CartTaskItem astCartTaskItem in astCartTaskItems)
                                    {
                                        AST_CartTask astCartTask = astCartTaskItem.AST_CartTask;

                                        if (astCartTask != null && !astCartTasks.Contains(astCartTask))
                                        {
                                            astCartTasks.Add(astCartTask);
                                        }

                                        dbContext.AST_CartTaskItems.Remove(astCartTaskItem);
                                    }
                                    dbContext.AST_CartTasks.RemoveRange(astCartTasks);

                                    dbContext.AST_PalletTaskItems.Remove(astPalletTaskItem);
                                }

                                dbContext.AST_PalletTasks.Remove(astPalletTask);
                            }

                            List <AST_PalletResult> astPalletResults = dbContext.AST_PalletResults
                                                                       .Where(pr => pr.EndPickTime < minTime &&
                                                                              pr.AST_PalletResultMessage.SentSuccessful)
                                                                       .ToList();
                            foreach (AST_PalletResult astPalletResult in astPalletResults)
                            {
                                AST_PalletResultMessage     astPalletResultMessage = astPalletResult.AST_PalletResultMessage;
                                List <AST_PalletResultItem> astPalletResultItems   = astPalletResult.AST_PalletResultItems.ToList();

                                dbContext.AST_PalletResultItems.RemoveRange(astPalletResultItems);
                                dbContext.AST_PalletResultMessages.Remove(astPalletResultMessage);
                                dbContext.AST_PalletResults.Remove(astPalletResult);
                            }

                            List <AST_CartResult> astCartResults = dbContext.AST_CartResults
                                                                   .Where(cr => cr.EndPickTime < minTime &&
                                                                          cr.AST_CartResultMessage.SentSuccessful)
                                                                   .ToList();
                            foreach (AST_CartResult astCartResult in astCartResults)
                            {
                                AST_CartResultMessage     astCartResultMessage = astCartResult.AST_CartResultMessage;
                                List <AST_CartResultItem> astCartResultItems   = astCartResult.AST_CartResultItems.ToList();

                                dbContext.AST_CartResultItems.RemoveRange(astCartResultItems);
                                dbContext.AST_CartResultMessages.Remove(astCartResultMessage);
                                dbContext.AST_CartResults.Remove(astCartResult);
                            }

                            //手持机分拣部分
                            List <AST_PalletArrived_PDA> astPalletArrived_PDAs = dbContext.AST_PalletArrived_PDAs
                                                                                 .Where(pa => pa.ArrivedTime < minTime)
                                                                                 .ToList();
                            foreach (AST_PalletArrived_PDA astPalletArrived_PDA in astPalletArrived_PDAs)
                            {
                                AST_PalletArrivedMessage_PDA astPalletArrivedMessage_PDA = astPalletArrived_PDA.AST_PalletArrivedMessage_PDA;

                                dbContext.AST_PalletArrivedMessage_PDAs.Remove(astPalletArrivedMessage_PDA);
                                dbContext.AST_PalletArrived_PDAs.Remove(astPalletArrived_PDA);
                            }

                            List <AST_PalletTask_PDA> astPalletTask_PDAs = dbContext.AST_PalletTask_PDAs
                                                                           .Where(pt => pt.CreateTime < minTime &&
                                                                                  pt.PickStatus == PickStatus.Finished)
                                                                           .ToList();
                            foreach (AST_PalletTask_PDA astPalletTask_PDA in astPalletTask_PDAs)
                            {
                                List <AST_PalletTaskItem_PDA> astPalletTaskItem_PDAs = astPalletTask_PDA.AST_PalletTaskItem_PDAs.ToList();
                                foreach (AST_PalletTaskItem_PDA astPalletTaskItem_PDA in astPalletTaskItem_PDAs)
                                {
                                    List <AST_LesTaskItem_PDA> astLesTaskItem_PDAs = astPalletTaskItem_PDA.AST_LesTaskItem_PDAs.ToList();

                                    List <AST_LesTask_PDA>        astLesTask_PDAs        = new List <AST_LesTask_PDA>();
                                    List <AST_LesTaskMessage_PDA> astLesTaskMessage_PDAs = new List <AST_LesTaskMessage_PDA>();
                                    foreach (AST_LesTaskItem_PDA astLesTaskItem_PDA in astLesTaskItem_PDAs)
                                    {
                                        // AST_LesTaskItem_PDA -> AST_LesTask_PDA FK ERROR
                                        AST_LesTask_PDA        astLesTask_PDA        = astLesTaskItem_PDA.AST_LesTask_PDA;
                                        AST_LesTaskMessage_PDA astLesTaskMessage_PDA = null;
                                        if (astLesTask_PDA != null)
                                        {
                                            astLesTaskMessage_PDA = astLesTask_PDA.AST_LesTaskMessage_PDA;
                                        }

                                        if (astLesTask_PDA != null && !astLesTask_PDAs.Contains(astLesTask_PDA))
                                        {
                                            astLesTask_PDAs.Add(astLesTask_PDA);
                                        }
                                        if (astLesTaskMessage_PDA != null && !astLesTaskMessage_PDAs.Contains(astLesTaskMessage_PDA))
                                        {
                                            astLesTaskMessage_PDAs.Add(astLesTaskMessage_PDA);
                                        }

                                        dbContext.AST_LesTaskItem_PDAs.Remove(astLesTaskItem_PDA);
                                    }
                                    dbContext.AST_LesTaskMessage_PDAs.RemoveRange(astLesTaskMessage_PDAs);
                                    dbContext.AST_LesTask_PDAs.RemoveRange(astLesTask_PDAs);

                                    dbContext.AST_PalletTaskItem_PDAs.Remove(astPalletTaskItem_PDA);
                                }

                                dbContext.AST_PalletTask_PDAs.Remove(astPalletTask_PDA);
                            }

                            List <AST_PalletPickResult_PDA> astPalletPickResults = dbContext.AST_PalletPickResult_PDAs
                                                                                   .Where(pa => pa.ReceivedTime < minTime)
                                                                                   .ToList();
                            foreach (AST_PalletPickResult_PDA astPalletPickResult in astPalletPickResults)
                            {
                                dbContext.AST_PalletPickResult_PDAs.Remove(astPalletPickResult);
                            }

                            List <AST_PalletPickResultMessage_PDA> astPalletPickResultMessages = dbContext.AST_PalletPickResultMessage_PDAs
                                                                                                 .Where(t => t.ReceivedTime < minTime).ToList();
                            foreach (AST_PalletPickResultMessage_PDA astPalletPickResultMessage in astPalletPickResultMessages)
                            {
                                dbContext.AST_PalletPickResultMessage_PDAs.Remove(astPalletPickResultMessage);
                            }

                            //AGV搬运部分
                            List <DST_DistributeTask> dstDistributeTasks = dbContext.DST_DistributeTasks.Where(t => t.reqTime < minTime).ToList();
                            foreach (DST_DistributeTask dstDistributeTask in dstDistributeTasks)
                            {
                                dbContext.DST_DistributeTasks.Remove(dstDistributeTask);
                            }

                            List <DST_DistributeTaskResult> dstDistributeTaskResults = dbContext.DST_DistributeTaskResults.Where(t => t.receiveTime < minTime).ToList();
                            foreach (DST_DistributeTaskResult dstDistributeTaskResult in dstDistributeTaskResults)
                            {
                                dbContext.DST_DistributeTaskResults.Remove(dstDistributeTaskResult);
                            }

                            List <DST_DistributeArriveTask> dstDistributeArriveTasks = dbContext.DST_DistributeArriveTasks.Where(t => t.receiveTime < minTime).ToList();
                            foreach (DST_DistributeArriveTask dstDistributeArriveTask in dstDistributeArriveTasks)
                            {
                                dbContext.DST_DistributeArriveTasks.Remove(dstDistributeArriveTask);
                            }

                            List <DST_DistributeArriveTaskResult> dstDistributeArriveTaskResults = dbContext.DST_DistributeArriveTaskResults.Where(t => t.sendTime < minTime).ToList();
                            foreach (DST_DistributeArriveTaskResult dstDistributeArriveTaskResult in dstDistributeArriveTaskResults)
                            {
                                dbContext.DST_DistributeArriveTaskResults.Remove(dstDistributeArriveTaskResult);
                            }

                            List <DST_DistributeArriveResult> dstDistributeArriveResults = dbContext.DST_DistributeArriveResults.Where(t => t.arriveTime < minTime).ToList();
                            foreach (DST_DistributeArriveResult dstDistributeArriveResult in dstDistributeArriveResults)
                            {
                                dbContext.DST_DistributeArriveResults.Remove(dstDistributeArriveResult);
                            }

                            dbContext.SaveChanges();
                        }
                    }
                }
                catch (Exception ex)
                {
                    string message = ex.Message;
                    DbEntityValidationException dbEntityValidationException = ex as DbEntityValidationException;
                    if (dbEntityValidationException != null)
                    {
                        foreach (DbEntityValidationResult validationResult in dbEntityValidationException.EntityValidationErrors)
                        {
                            foreach (DbValidationError validationError in validationResult.ValidationErrors)
                            {
                                message += Environment.NewLine + validationError.ErrorMessage;
                            }
                        }
                    }
                    message += Environment.NewLine + ex.StackTrace;

                    Logger.Log(this.GetType().Name, DateTime.Now.ToString("HH:mm:ss") + Environment.NewLine
                               + message + Environment.NewLine
                               + Environment.NewLine);
                }
                finally
                {
                    Thread.Sleep(this.threadPeriod);
                }
            }
        }