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;
//}
}
}