using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wms.sqlsugar.model.fj; using WMS.BZModels; using WMS.BZSqlSugar; using WMS.Info; using SqlSugar; using WMS.Util; using WMS.BZModels.Dto.FJ.BillInvDtos; using NPOI.SS.Formula.PTG; using WMS.BZModels.Dto.FJ.TaskDtos; using Mapster; namespace WMS.BZServices.FJ { public class WCSTaskOldService { private readonly Repository _wcstaskoldrepository; private readonly Repository _billBomsetgrprepository; public WCSTaskOldService(Repository wcstaskoldrepository, Repository billBomsetgrprepository) { _wcstaskoldrepository = wcstaskoldrepository; _billBomsetgrprepository = billBomsetgrprepository; } public PagedInfo GetPageList(Pagination pagination, WCSTaskoldQueryDto WCSTaskoldQueryDto) { ISugarQueryable taskQueryable = GetQueryable(WCSTaskoldQueryDto); #region "连表查询" //var lists = taskQueryable.LeftJoin(_billBomsetgrprepository.Queryable(), (taskold, bomset) => taskold.PalletType == bomset.ShortCode) // .Select((taskold, bomset) => new WCSTaskinfoDto // { // ID = taskold.ID.ToString(), // BarCode = taskold.BarCode, // Type = taskold.Type, // Status = taskold.Status, // AddrFrom = taskold.AddrFrom, // AddrTo = taskold.AddrTo, // AddrNext = taskold.AddrNext, // Tunnel = taskold.Tunnel, // Floor = taskold.Floor, // Device = taskold.Device, // LastInteractionPoint = taskold.LastInteractionPoint, // SrmStation = taskold.SrmStation, // WorkBench = taskold.WorkBench, // WarehouseCode = taskold.WarehouseCode, // WmsTask = taskold.WmsTask, // TaskGroupKey = taskold.TaskGroupKey, // WorkOrder = taskold.WorkOrder, // PalletType = taskold.PalletType, // ProdLine = taskold.ProdLine, // FullQty = taskold.FullQty, // Height = taskold.Height, // Weight = taskold.Weight, // Length = taskold.Length, // AddTime = taskold.AddTime, // AddWho = taskold.AddWho, // StartTime = taskold.StartTime, // EditWho = taskold.EditWho, // EditTime = taskold.EditTime, // EndTime = taskold.EndTime, // MatCode = taskold.MatCode, // InvBarCode = taskold.InvBarCode, // IsFast = taskold.IsFast, // Grade = taskold.Grade, // IsSurplus = taskold.IsSurplus, // IsRework = taskold.IsRework, // Uploaded = taskold.Uploaded, // AgvTaskID = taskold.AgvTaskID, // Priority = taskold.Priority, // ManualRemarks = taskold.ManualRemarks, // OutType = taskold.OutType, // MaterialCode = taskold.MaterialCode, // BusType = taskold.BusType, // GoodsType = taskold.GoodsType, // Line = taskold.Line, // Col = taskold.Col, // Layer = taskold.Layer, // Depth = taskold.Depth, // SetGrpCode = bomset.Code // }).MergeTable().ToPage(pagination); #endregion var list = taskQueryable.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?.Grade), m => m.Grade.Contains(WCSTaskoldQueryDto.Grade)); 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)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WorkBench), m => m.WorkBench.Contains(WCSTaskoldQueryDto.WorkBench)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.WarehouseCode), m => m.WarehouseCode.Equals(WCSTaskoldQueryDto.WarehouseCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(WCSTaskoldQueryDto?.MatCode), m => m.MatCode.Contains(WCSTaskoldQueryDto.MatCode)); var taskQueryable = _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; } taskQueryable = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).Where(predicate.ToExpression()).SplitTable(WCSTaskoldQueryDto.AddTimeFrom.Value, endtime); } return taskQueryable; } 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; } } }