using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wms.sqlsugar.model.cp; using WMS.BZModels; using WMS.Info; using WMS.BZSqlSugar; using NPOI.SS.Formula.Functions; using WMS.BZModels.Dto.CP.TaskDtos; using System.Collections; namespace WMS.BZServices.CP { public class TaskInfoService { private readonly Repository _wcstaskinforepository; private readonly Repository _wcstaskoldrepository; public TaskInfoService(Repository wcstaskinforepository, Repository wcstaskoldrepository) { _wcstaskinforepository = wcstaskinforepository; _wcstaskoldrepository = wcstaskoldrepository; } public PagedInfo GetPageList(Pagination pagination, WCSTaskinfoQueryDto wCSTaskinfoQueryDto) { var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.ID), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.ID)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.KeyWord), m => m.ID.ToString().Contains(wCSTaskinfoQueryDto.KeyWord) || m.BarCode.Contains(wCSTaskinfoQueryDto.KeyWord) || m.AddrTo.Contains(wCSTaskinfoQueryDto.KeyWord) || m.AddrFrom.Contains(wCSTaskinfoQueryDto.KeyWord) || m.Floor.ToString() == wCSTaskinfoQueryDto.KeyWord || m.Tunnel.Contains(wCSTaskinfoQueryDto.KeyWord) || m.Device.Contains(wCSTaskinfoQueryDto.KeyWord) || m.MaterialCode.Contains(wCSTaskinfoQueryDto.KeyWord)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BarCode), m => m.BarCode.Contains(wCSTaskinfoQueryDto.BarCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.MaterialCode), m => m.MaterialCode.Contains(wCSTaskinfoQueryDto.MaterialCode)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrFrom), m => m.AddrFrom.Contains(wCSTaskinfoQueryDto.AddrFrom)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrTo), m => m.AddrTo.Contains(wCSTaskinfoQueryDto.AddrTo)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.AddrNext), m => m.AddrNext.Contains(wCSTaskinfoQueryDto.AddrNext)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Type), m => m.Type.Equals(wCSTaskinfoQueryDto.Type)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Status), m => m.Status.Equals(wCSTaskinfoQueryDto.Status)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.BusType), m => m.BusType.Equals(wCSTaskinfoQueryDto.BusType)); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeFrom.HasValue, m => m.AddTime >= wCSTaskinfoQueryDto.AddTimeFrom); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.AddTimeTo.HasValue, m => m.AddTime <= wCSTaskinfoQueryDto.AddTimeTo); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeBegin.HasValue, m => m.StartTime >= wCSTaskinfoQueryDto.StartTimeBegin); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.StartTimeEnd.HasValue, m => m.StartTime <= wCSTaskinfoQueryDto.StartTimeEnd); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeBegin.HasValue, m => m.EedTime >= wCSTaskinfoQueryDto.EndTimeBegin); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.EndTimeEnd.HasValue, m => m.EedTime <= wCSTaskinfoQueryDto.EndTimeEnd); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Tunnel), m => m.Tunnel.Contains(wCSTaskinfoQueryDto.Tunnel)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.Device), m => m.Device.Contains(wCSTaskinfoQueryDto.Device)); predicate = predicate.AndIF(wCSTaskinfoQueryDto != null && wCSTaskinfoQueryDto.OutType.HasValue, m => m.OutType.Equals(wCSTaskinfoQueryDto.OutType)); predicate = predicate.AndIF(!string.IsNullOrEmpty(wCSTaskinfoQueryDto?.TaskGroupKey), m => m.TaskGroupKey.Contains(wCSTaskinfoQueryDto.TaskGroupKey)); var list = _wcstaskinforepository.Queryable().Where(predicate.ToExpression()) .ToPage(pagination); return list; } public void Priority(TaskPriorityDto dto) { if (dto == null) throw new ArgumentException("数据不能为空!"); if (!dto.TaskIds.Any()) { throw new ArgumentException("没有数据!"); } var lists = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList(); if (!lists.Any()) { throw new ArgumentException("没有任务数据!"); } _wcstaskinforepository.UseTranAction(() => { foreach (var item in lists) { _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSTaskinfo() { Priority = Convert.ToInt32(dto.Priority), ManualRemarks = dto.ManualRemarks, EditWho = dto.User, EditTime = DateTime.Now, }).Where(p => p.ID == item.ID).ExecuteCommand(); } }); } public void ReScanCode(TaskPriorityDto dto) { if (dto == null) throw new ArgumentException("数据不能为空!"); if (!dto.TaskIds.Any()) { throw new ArgumentException("没有数据!"); } var lists = _wcstaskinforepository.Queryable().With(SqlWith.NoLock).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList(); if (!lists.Any()) { throw new ArgumentException("没有任务数据!"); } var oldlists = _wcstaskoldrepository.Queryable().With(SqlWith.NoLock).SplitTable(tabs => tabs.Take(3)).Where(o => dto.TaskIds.Contains(o.ID.ToString())).ToList(); _wcstaskinforepository.UseTranAction(() => { foreach (var item in lists) { _wcstaskinforepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCSTaskinfo() { BarCode = "", AddrNext = "8058", EditWho = dto.User, EditTime = DateTime.Now, }).Where(p => p.ID == item.ID).ExecuteCommand(); } foreach (var olditem in oldlists) { _wcstaskoldrepository.AsUpdateable().With("WITH(ROWLOCK,UPDLOCK)").SetColumns(p => new WCS_TaskOld() { BarCode = "", AddrNext = "8058", EditWho = dto.User, EditTime = DateTime.Now, }).Where(p => p.ID == olditem.ID).SplitTable(p => p.Take(3)).ExecuteCommand(); } }); } } }