using Admin.NET.Core.TaskModule.Enum; using iWareSql.MyDbContext; using System; using System.Collections.Generic; using System.Linq; namespace iWareSql.DataAccess { public class TaskHandler { /// /// 查找该库位是否存在 未结束的任务 /// /// /// /// public static wms_task IsExistNoFinishedTask(MyDbContext.MyDbContext dbContext, string location) { var wms_tasks = dbContext.wms_task .Where(CommonFilterExpressionForNoFinishAndNoCancel()) .Where(x => ( x.IsDelete == false) && (x.SourcePlaceCode == location || x.ToPlaceCode == location) ).FirstOrDefault(); return wms_tasks; } /// /// 获取当前未结束的任务的站点集合(包括起点和终点) /// /// /// public static List GetLocationListByNoFinishedTask(MyDbContext.MyDbContext dbContext) { List locationList = new List(); var wms_tasks = dbContext.wms_task .Where(CommonFilterExpressionForNoFinishAndNoCancel()) .Where(x => //x.AreaType == (int)AreaTypeEnum.立体库 // && ( x.IsDelete == false)).ToList(); locationList.AddRange(wms_tasks.Select(x => x.SourcePlaceCode).ToList()); locationList.AddRange(wms_tasks.Select(x => x.ToPlaceCode).ToList()); return locationList; } ///// ///// 某巷道 是否存在 未结束,但是已下发WCS 的任务 ///// ///// ///// ///// //public static wms_task IsExistNoFinishedAndHasIssueWCSTaskByLane(MyDbContext.MyDbContext dbContext, int lane) //{ // var wms_tasks = dbContext.wms_task // .Where(CommonFilterExpressionForNoFinishAndNoCancel()) // .Where(x => // x.State == 1 // && x.Lane == lane // && x.AreaType == (int)AreaTypeEnum.立体库 // && (x.IsDeleted == null || x.IsDeleted == false) // ) // .OrderByDescending(x => x.TaskPriority) // .FirstOrDefault(); // return wms_tasks; //} /// /// 更新任务表的任务消息 /// /// /// public static void UpdateTaskMsg(long taskId, string errMsg) { using (MyDbContext.MyDbContext dbContext = new MyDbContext.MyDbContext()) { var singleTask = dbContext.wms_task.Where(x => x.Id == taskId).FirstOrDefault(); singleTask.TaskMsg = errMsg; singleTask.UpdateTime = DateTime.Now; dbContext.SaveChanges(); } } /// /// 获取 任务 不是 已完成,并且不是 已取消 的任务筛选条件 /// /// public static Func CommonFilterExpressionForNoFinishAndNoCancel() { Func predicate = m => (m.TaskStatus!= Convert.ToInt32(TaskStatusEnum.已完成) && m.TaskStatus != Convert.ToInt32(TaskStatusEnum.已取消) ) ; return predicate; } ///// ///// 获取 任务 不是 已完成,并且不是 已取消 的任务,并且是 未下发WCS的筛选条件 ///// ///// //public static Func CommonFilterExpressionForNoFinishAndNoCancelWithNoIssueWCS() //{ // Func predicate = m => // //任务状态 0-未下发WCS ,1-已下发WCS // m.State != 1 && // (m.TaskState != Convert.ToInt32(WareTaskStateEnum.已完成) // && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已取消) // ) // ; // return predicate; //} ///// ///// 获取 任务 不是 已完成,并且不是 已取消 ,并且是 已暂停的 的任务筛选条件 ///// ///// //public static Func CommonFilterExpressionForNoFinishAndNoCancelAndNoStop() //{ // Func predicate = m => // (m.TaskState != Convert.ToInt32(WareTaskStateEnum.已完成) // && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已取消) // && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已暂停) // ) // ; // return predicate; //} } }