using SqlSugar; using WMS.BZModels; using WMS.Info; using wms.sqlsugar.model.fj; using WMS.BZSqlSugar; using WMS.BZModels.Dto.FJ.TaskDtos; namespace WMS.BZServices.FJ { public class AgvTaskInfoService { private readonly Repository _agvtaskrepository; public AgvTaskInfoService(Repository agvtaskrepository) { _agvtaskrepository = agvtaskrepository; } public PagedInfo GetPageList(Pagination pagination, AgvTaskoldQueryDto agvTaskoldQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(agvTaskoldQueryDto.KeyWord) || m.AgvID.Contains(agvTaskoldQueryDto.KeyWord) || m.Station.Contains(agvTaskoldQueryDto.KeyWord) || m.Position.Contains(agvTaskoldQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(agvTaskoldQueryDto.ID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvID), m => m.AgvID.Contains(agvTaskoldQueryDto.AgvID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Station), m => m.Station.Contains(agvTaskoldQueryDto.Station)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Position), m => m.Position.Contains(agvTaskoldQueryDto.Position)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskType), m => m.TaskType.Equals(agvTaskoldQueryDto.TaskType)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvStatus), m => m.AgvStatus.Equals(agvTaskoldQueryDto.AgvStatus)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Status), m => m.Status.Equals(agvTaskoldQueryDto.Status)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskId), m => m.TaskId.GetValueOrDefault().ToString().Contains(agvTaskoldQueryDto.TaskId)); predicate = predicate.And(p => p.Status < 99 || p.AgvStatus<99); predicate = predicate.And(p => p.AddTime >= DateTime.Now.AddDays(-3).Date); var query = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(p => p.Take(1)); //if (agvTaskoldQueryDto != null && agvTaskoldQueryDto.AddTimeFrom.HasValue) //{ // var endtime = DateTime.Now; // if (agvTaskoldQueryDto.AddTimeTo.HasValue) // { // endtime = agvTaskoldQueryDto.AddTimeTo.Value; // } // query = _agvtaskoldrepository.Queryable().Where(predicate.ToExpression()).SplitTable(AgvTaskoldQueryDto.AddTimeFrom.Value, endtime); //} var list = query.ToPage(pagination); return list; } public PagedInfo GetPageList1(Pagination pagination, AgvTaskoldQueryDto agvTaskoldQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(agvTaskoldQueryDto.KeyWord) || m.AgvID.Contains(agvTaskoldQueryDto.KeyWord) || m.Station.Contains(agvTaskoldQueryDto.KeyWord) || m.Position.Contains(agvTaskoldQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(agvTaskoldQueryDto.ID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvID), m => m.AgvID.Contains(agvTaskoldQueryDto.AgvID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Station), m => m.Station.Contains(agvTaskoldQueryDto.Station)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Position), m => m.Position.Contains(agvTaskoldQueryDto.Position)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskType), m => m.TaskType.Equals(agvTaskoldQueryDto.TaskType)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.AgvStatus), m => m.AgvStatus.Equals(agvTaskoldQueryDto.AgvStatus)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.Status), m => m.Status.Equals(agvTaskoldQueryDto.Status)); predicate = predicate.AndIF(!string.IsNullOrEmpty(agvTaskoldQueryDto?.TaskId), m => m.TaskId.GetValueOrDefault().ToString().Contains(agvTaskoldQueryDto.TaskId)); predicate = predicate.And(p => p.Status >= 99); var query = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(p => p.Take(1)); //if (agvTaskoldQueryDto != null && agvTaskoldQueryDto.AddTimeFrom.HasValue) //{ // var endtime = DateTime.Now; // if (agvTaskoldQueryDto.AddTimeTo.HasValue) // { // endtime = agvTaskoldQueryDto.AddTimeTo.Value; // } // query = _agvtaskoldrepository.Queryable().Where(predicate.ToExpression()).SplitTable(AgvTaskoldQueryDto.AddTimeFrom.Value, endtime); //} var list = query.ToPage(pagination); return list; } public int GetTaskUnFinishCount() { var predicate = Expressionable.Create(); predicate = predicate.And(m => m.Status < (int)BZModels.TaskStatus.Finish); var count = _agvtaskrepository.Queryable().Where(predicate.ToExpression()).SplitTable(tabs => tabs.Take(3)).Count(); return count; } public void UpdateAgvState(List ids, string userId, int state) { if (!ids.Any()) { throw new ArgumentException("没有选择任务!"); } var list = _agvtaskrepository.Queryable().With(SqlWith.NoLock).SplitTable(tabs => tabs.Take(3)).Where(o => ids.Contains(o.ID.ToString())).ToList(); if (!list.Any()) { throw new ArgumentException("没有找到该任务!"); } foreach (var id in list) { _agvtaskrepository.UseTranAction(() => { _agvtaskrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_AgvTaskInfo() { AgvStatus = state, EditTime = DateTime.Now, EditWho=userId, // ManualRemarks = "手动变更状态" }).Where(p => p.ID == id.ID).SplitTable(tabs => tabs.Take(3)).ExecuteCommand(); }); } } } }