using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.BZModels; using WMS.BZSqlSugar; using WMS.Info; using SqlSugar; using WMS.Util; using NPOI.SS.Formula.PTG; using wms.sqlsugar.model.pt; using WMS.BZModels.Dto.PT.TaskDtos; using Mapster; namespace WMS.BZServices.PT { public class WCSTaskOldService { private readonly Repository _wcstaskoldrepository; public WCSTaskOldService(Repository wcstaskoldrepository) { _wcstaskoldrepository = wcstaskoldrepository; } public PagedInfo GetPageList(Pagination pagination, WCSTaskoldQueryDto WCSTaskoldQueryDto) { ISugarQueryable query = GetQueryable(WCSTaskoldQueryDto); var list = query.ToPage(pagination); return list; } private ISugarQueryable GetQueryable(WCSTaskoldQueryDto WCSTaskoldQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.ID), m => m.ID.ToString().Contains(WCSTaskoldQueryDto.ID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.KeyWord), m => m.ID.ToString().Contains(WCSTaskoldQueryDto.KeyWord) || m.BarCode.Contains(WCSTaskoldQueryDto.KeyWord) || m.MaterialCode.Contains(WCSTaskoldQueryDto.KeyWord) || m.InvBarCode.Contains(WCSTaskoldQueryDto.KeyWord) || m.AddrFrom.Contains(WCSTaskoldQueryDto.KeyWord) || m.AddrTo.Contains(WCSTaskoldQueryDto.KeyWord) || m.Floor.ToString() == WCSTaskoldQueryDto.KeyWord || m.Tunnel.Contains(WCSTaskoldQueryDto.KeyWord) || m.Device.Contains(WCSTaskoldQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.BarCode), m => m.BarCode.Contains(WCSTaskoldQueryDto.BarCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.MaterialCode), m => m.MaterialCode.Contains(WCSTaskoldQueryDto.MaterialCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrFrom), m => m.AddrFrom.Contains(WCSTaskoldQueryDto.AddrFrom)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrTo), m => m.AddrTo.Contains(WCSTaskoldQueryDto.AddrTo)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AddrNext), m => m.AddrNext.Contains(WCSTaskoldQueryDto.AddrNext)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WmsTask), m => m.WmsTask.ToString().Contains(WCSTaskoldQueryDto.WmsTask)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.AgvTaskID), m => m.AgvTaskID.ToString().Contains(WCSTaskoldQueryDto.AgvTaskID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Type), m => ((int)m.Type).Equals(WCSTaskoldQueryDto.Type)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Status), m => ((int)m.Status).Equals(WCSTaskoldQueryDto.Status)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.BusType), m => m.BusType.Equals(WCSTaskoldQueryDto.BusType)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Tunnel), m => m.Tunnel.Contains(WCSTaskoldQueryDto.Tunnel)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Floor), m => m.Floor.ToString().Contains(WCSTaskoldQueryDto.Floor)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.Device), m => m.Device.Contains(WCSTaskoldQueryDto.Device)); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= WCSTaskoldQueryDto.AddTimeFrom); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeTo.HasValue, m => m.AddTime <= WCSTaskoldQueryDto.AddTimeTo); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= WCSTaskoldQueryDto.StartTimeBegin); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= WCSTaskoldQueryDto.StartTimeEnd); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.EndTimeBegin.HasValue, m => m.EndTime >= WCSTaskoldQueryDto.EndTimeBegin); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.EndTimeEnd.HasValue, m => m.EndTime <= WCSTaskoldQueryDto.EndTimeEnd); predicate = predicate.AndIF(WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.OutType.HasValue, m => m.OutType.Equals(WCSTaskoldQueryDto.OutType)); var query = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(p => p.Take(3)); if (WCSTaskoldQueryDto != null && WCSTaskoldQueryDto.AddTimeFrom.HasValue) { var endtime = DateTime.Now; if (WCSTaskoldQueryDto.AddTimeTo.HasValue) { endtime = WCSTaskoldQueryDto.AddTimeTo.Value; } query = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(WCSTaskoldQueryDto.AddTimeFrom.Value, endtime); } return query; } public IList GetList(WCSTaskoldQueryDto WCSTaskoldQueryDto) { ISugarQueryable sugarQueryable = GetQueryable(WCSTaskoldQueryDto); var list = sugarQueryable.ToList(); return list.Adapt>(); } public int GetTaskUnFinishCount() { var predicate = Expressionable.Create(); predicate = predicate.And(m => m.Status < (int)BZModels.TaskStatus.Finish); var count = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(tabs => tabs.Take(3)).Count(); return count; } } }