public PagedList <CustomerOrderInfoExt> GetCustomerOrderByBlockedList(CustomerOrderParam param, int maxCustomerOrderId = 0) { var ctx = this.UnitOfWork as LMS_DbContext; Check.Argument.IsNotNull(ctx, "数据库对象"); IQueryable <CustomerOrderInfoExt> list; int deleteSatus = CustomerOrder.StatusEnum.Delete.GetStatusValue(); Expression <Func <CustomerOrderInfo, bool> > filter = o => o.Status != deleteSatus; filter = filter.AndIf(o => o.CustomerCode == param.CustomerCode, !param.CustomerCode.IsNullOrWhiteSpace()); Expression <Func <WayBillInfo, bool> > filterWayBill = o => true; //if (!param.WayBillNumber.IsNullOrWhiteSpace()) //{ // var numberList = param.WayBillNumber.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) // .ToList(); // if (numberList.Count > 0) // { // string number = numberList[0]; // filterWayBill = numberList.Count == 1 ? filterWayBill.And(a => a.WayBillNumber == number) : filterWayBill.And(a => numberList.Contains(a.WayBillNumber)); // } //} //else if (!param.CustomerOrderNumber.IsNullOrWhiteSpace()) //{ // var numberList = // param.CustomerOrderNumber.Split(Environment.NewLine.ToCharArray(), // StringSplitOptions.RemoveEmptyEntries) // .ToList(); // if (numberList.Count > 0) // { // string number = numberList[0]; // filter = numberList.Count == 1 // ? filter.And(o => o.CustomerOrderNumber == number) // : filter.And(o => numberList.Contains(o.CustomerOrderNumber)); // } //} //else //{ if (!string.IsNullOrWhiteSpace(param.SearchContext)) { var numberList = param.SearchContext.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .ToList(); if (param.SearchWhere.HasValue && numberList.Count > 0) { switch (WayBill.ParseToSearchFilter(param.SearchWhere.Value)) { case WayBill.SearchFilterEnum.WayBillNumber: filterWayBill = filterWayBill.And(p => numberList.Contains(p.WayBillNumber)); break; case WayBill.SearchFilterEnum.TrackingNumber: filter = filter.And(p => numberList.Contains(p.TrackingNumber)); break; case WayBill.SearchFilterEnum.CustomerOrderNumber: filter = filter.And(p => numberList.Contains(p.CustomerOrderNumber)); break; } } } else { if (!param.CustomerOrderNumber.IsNullOrWhiteSpace()) { var numberList = param.CustomerOrderNumber.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .ToList(); filter = filter.AndIf(o => numberList.Contains(o.CustomerOrderNumber), numberList.Count > 0); } } //if (!param.WayBillNumber.IsNullOrWhiteSpace()) //{ // var numberList = // param.WayBillNumber.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) // .ToList(); // if (numberList.Count > 0) // { // string number = numberList[0]; // filterWayBill = numberList.Count == 1 // ? filterWayBill.And(a => a.WayBillNumber == number) // : filterWayBill.And(a => numberList.Contains(a.WayBillNumber)); // } //} filterWayBill = filterWayBill.AndIf(o => o.CountryCode == param.CountryCode, !param.CountryCode.IsNullOrWhiteSpace()); filter = filter .AndIf(o => o.ShippingMethodId == param.ShippingMethodId.Value, param.ShippingMethodId.HasValue) .AndIf(o => o.CreatedOn >= param.CreatedOnFrom.Value, param.CreatedOnFrom.HasValue) .AndIf(o => o.CreatedOn <= param.CreatedOnTo.Value, param.CreatedOnTo.HasValue) .AndIf(o => o.CustomerOrderID <= maxCustomerOrderId, maxCustomerOrderId > 0) ; //} ////异常类型只查询,拦截与入仓异常状态 //var lsitType = new List<int>() // { // WayBill.AbnormalTypeEnum.Intercepted.GetAbnormalTypeValue(), // WayBill.AbnormalTypeEnum.OutAbnormal.GetAbnormalTypeValue() // }; //lsitType.Contains(l.OperateType) //查询异常状态为未完成的 int abnormalStatus = WayBill.AbnormalStatusEnum.NO.GetAbnormalStatusValue(); list = from w in ctx.WayBillInfos.Where(filterWayBill) join l in ctx.AbnormalWayBillLogs on w.AbnormalID equals l.AbnormalID join o in ctx.CustomerOrderInfos.Where(filter) on w.CustomerOrderID equals o.CustomerOrderID where o.IsHold == true && l.AbnormalStatus == abnormalStatus orderby o.CustomerOrderID descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = w.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, CountryCode = w.CountryCode, ShippingMethodId = w.InShippingMethodID, ShippingMethodName = w.InShippingMethodName, CreatedOn = o.CreatedOn, AbnormalDescription = l.AbnormalDescription, RawTrackingNumber = w.RawTrackingNumber, TransferOrderDate = w.TransferOrderDate }; return(list.ToPagedList(param.Page, param.PageSize)); }
public PagedList <CustomerOrderInfoExt> GetCustomerOrderInfoList(CustomerOrderParam param, int maxCustomerOrderId = 0) { var ctx = this.UnitOfWork as LMS_DbContext; Check.Argument.IsNotNull(ctx, "数据库对象"); IQueryable <CustomerOrderInfoExt> list; int deleteSatus = CustomerOrder.StatusEnum.Delete.GetStatusValue(); Expression <Func <CustomerOrderInfo, bool> > filter = o => true; Expression <Func <WayBillInfo, bool> > filterWayBill = o => true; filter = filter.AndIf(o => o.IsHold == param.IsHold.Value, param.IsHold.HasValue) .AndIf(o => o.CustomerCode == param.CustomerCode, !param.CustomerCode.IsNullOrWhiteSpace()) .AndIf(o => o.Status == param.Status.Value, param.Status.HasValue) .AndIf(o => o.Status != deleteSatus, !param.Status.HasValue) .AndIf(o => o.CustomerOrderID <= maxCustomerOrderId, maxCustomerOrderId > 0) ; //Expression<Func<InStorageInfo, bool>> filterInStorage = o => true; //Expression<Func<OutStorageInfo, bool>> filterOutStorage = o => true; //Func<IQueryable<WayBillInfo>, IOrderedQueryable<WayBillInfo>> orderFunc; if (!string.IsNullOrWhiteSpace(param.SearchContext)) { var numberList = param.SearchContext.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .ToList(); if (param.SearchWhere.HasValue && numberList.Count > 0) { switch (WayBill.ParseToSearchFilter(param.SearchWhere.Value)) { case WayBill.SearchFilterEnum.WayBillNumber: filterWayBill = filterWayBill.And(p => numberList.Contains(p.WayBillNumber)); break; case WayBill.SearchFilterEnum.TrackingNumber: filter = filter.And(p => numberList.Contains(p.TrackingNumber)); break; case WayBill.SearchFilterEnum.CustomerOrderNumber: filter = filter.And(p => numberList.Contains(p.CustomerOrderNumber)); break; } } } else if (!param.CustomerOrderNumber.IsNullOrWhiteSpace()) { var numberList = param.CustomerOrderNumber.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries) .ToList(); if (numberList.Count > 0) { string number = numberList[0]; filter = numberList.Count == 1 ? filter.And(o => o.CustomerOrderNumber == number) : filter.And(o => numberList.Contains(o.CustomerOrderNumber)); } } if (param.IsReceived) { filterWayBill = filterWayBill .AndIf(o => o.InStorageCreatedOn >= param.CreatedOnFrom.Value, param.CreatedOnFrom.HasValue) .AndIf(o => o.InStorageCreatedOn <= param.CreatedOnTo.Value, param.CreatedOnTo.HasValue); } else if (param.IsDeliver) { filterWayBill = filterWayBill .AndIf(o => o.OutStorageCreatedOn >= param.CreatedOnFrom.Value, param.CreatedOnFrom.HasValue) .AndIf(o => o.OutStorageCreatedOn <= param.CreatedOnTo.Value, param.CreatedOnTo.HasValue); } else { filter = filter .AndIf(o => o.CreatedOn >= param.CreatedOnFrom.Value, param.CreatedOnFrom.HasValue) .AndIf(o => o.CreatedOn <= param.CreatedOnTo.Value, param.CreatedOnTo.HasValue); } filter = filter .AndIf(o => o.ShippingMethodId == param.ShippingMethodId.Value, param.ShippingMethodId.HasValue) .AndIf(o => o.ShippingInfo.CountryCode == param.CountryCode, !param.CountryCode.IsNullOrWhiteSpace()) .AndIf(o => o.IsPrinted == param.IsPrinted.Value, param.IsPrinted.HasValue); //} if (param.SearchWhere.HasValue && !string.IsNullOrWhiteSpace(param.SearchContext)) { if (param.IsDeliver) { list = from w in ctx.WayBillInfos.Where(filterWayBill) join o in ctx.CustomerOrderInfos.Where(filter) on w.CustomerOrderID equals o.CustomerOrderID orderby w.OutStorageCreatedOn descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = w.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = w.RawTrackingNumber, CountryCode = w.CountryCode, Weight = w.Weight ?? 0, SettleWeight = w.SettleWeight, Width = w.Width ?? 0, Height = w.Height ?? 0, Length = w.Length ?? 0, ShippingMethodId = w.InShippingMethodID, ShippingMethodName = w.InShippingMethodName, CreatedOn = w.OutStorageCreatedOn ?? DateTime.Now, TransferOrderDate = w.TransferOrderDate, }; } else if (param.IsReceived) { list = from w in ctx.WayBillInfos.Where(filterWayBill) //join i in ctx.InStorageInfos.Where(filterInStorage) on w.InStorageID equals i.InStorageID join o in ctx.CustomerOrderInfos.Where(filter) on w.CustomerOrderID equals o.CustomerOrderID orderby w.InStorageCreatedOn descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = w.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = w.RawTrackingNumber, CountryCode = w.CountryCode, Weight = w.Weight ?? 0, SettleWeight = w.SettleWeight, Width = w.Width ?? 0, Height = w.Height ?? 0, Length = w.Length ?? 0, ShippingMethodId = w.InShippingMethodID, ShippingMethodName = w.InShippingMethodName, CreatedOn = w.InStorageCreatedOn ?? DateTime.Now, TransferOrderDate = w.TransferOrderDate, }; } else { list = from w in ctx.WayBillInfos.Where(filterWayBill) join o in ctx.CustomerOrderInfos.Where(filter) on w.CustomerOrderID equals o.CustomerOrderID orderby o.CreatedOn descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = w.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = w.RawTrackingNumber, CountryCode = w.CountryCode, Weight = w.Weight ?? 0, SettleWeight = w.SettleWeight, Width = w.Width ?? 0, Height = w.Height ?? 0, Length = w.Length ?? 0, ShippingMethodId = w.InShippingMethodID, ShippingMethodName = w.InShippingMethodName, CreatedOn = o.CreatedOn, TransferOrderDate = w.TransferOrderDate, Remark = o.Remark, }; } } else { //if (param.IsDeliver) //{ // list = from o in ctx.CustomerOrderInfos.Where(filter) // join w in ctx.WayBillInfos.Where(filterWayBill) on o.CustomerOrderID equals w.CustomerOrderID // into Grp // from grp in Grp.DefaultIfEmpty() // orderby grp.TransferOrderDate descending, grp.CreatedOn descending // select new CustomerOrderInfoExt // { // CustomerCode = o.CustomerCode, // CustomerOrderID = o.CustomerOrderID, // CustomerOrderNumber = o.CustomerOrderNumber, // WayBillNumber = grp.WayBillNumber, // Status = o.Status, // TrackingNumber = o.TrackingNumber, // RawTrackingNumber = grp.RawTrackingNumber, // CountryCode = o.ShippingInfo.CountryCode, // Weight = grp.Weight ?? 0, // SettleWeight = grp.SettleWeight, // Width = grp.Width ?? 0, // Height = grp.Height ?? 0, // Length = grp.Length ?? 0, // ShippingMethodId = o.ShippingMethodId, // ShippingMethodName = o.ShippingMethodName, // CreatedOn = grp.CreatedOn, // TransferOrderDate = grp.TransferOrderDate, // }; //}else if (param.IsReceived) //{ // list = from o in ctx.CustomerOrderInfos.Where(filter) // join w in ctx.WayBillInfos.Where(filterWayBill) on o.CustomerOrderID equals w.CustomerOrderID // join i in ctx.InStorageInfos.Where(filterInStorage) on w.InStorageID equals i.InStorageID into Grp // from grp in Grp.DefaultIfEmpty() // orderby w.TransferOrderDate descending, grp.CreatedOn descending // select new CustomerOrderInfoExt // { // CustomerCode = o.CustomerCode, // CustomerOrderID = o.CustomerOrderID, // CustomerOrderNumber = o.CustomerOrderNumber, // WayBillNumber = w.WayBillNumber, // Status = o.Status, // TrackingNumber = o.TrackingNumber, // RawTrackingNumber = w.RawTrackingNumber, // CountryCode = o.ShippingInfo.CountryCode, // Weight = w.Weight ?? 0, // SettleWeight = w.SettleWeight, // Width = w.Width ?? 0, // Height = w.Height ?? 0, // Length = w.Length ?? 0, // ShippingMethodId = o.ShippingMethodId, // ShippingMethodName = o.ShippingMethodName, // CreatedOn = grp.CreatedOn, // TransferOrderDate = w.TransferOrderDate, // }; //} //else //{ if (param.Status.HasValue) { switch (CustomerOrder.ParseToStatus(param.Status.Value)) { case CustomerOrder.StatusEnum.None: case CustomerOrder.StatusEnum.OK: case CustomerOrder.StatusEnum.SubmitFail: list = from o in ctx.CustomerOrderInfos.Where(filter) orderby o.CreatedOn descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = "", Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = "", CountryCode = "", Weight = o.Weight, SettleWeight = 0, Width = o.Width, Height = o.Height, Length = o.Length, ShippingMethodId = o.ShippingMethodId, ShippingMethodName = o.ShippingMethodName, CreatedOn = o.CreatedOn, TransferOrderDate = null, Remark = o.Remark, }; break; default: list = from o in ctx.CustomerOrderInfos.Where(filter) join w in ctx.WayBillInfos.Where(filterWayBill) on o.CustomerOrderID equals w.CustomerOrderID into Grp from grp in Grp.DefaultIfEmpty() orderby grp.TransferOrderDate descending, o.CreatedOn descending, grp.WayBillNumber descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = grp.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = grp.RawTrackingNumber, CountryCode = grp.CountryCode, Weight = grp.Weight ?? 0, SettleWeight = grp.SettleWeight, Width = grp.Width ?? 0, Height = grp.Height ?? 0, Length = grp.Length ?? 0, ShippingMethodId = o.ShippingMethodId, ShippingMethodName = o.ShippingMethodName, CreatedOn = o.CreatedOn, TransferOrderDate = grp.TransferOrderDate, Remark = o.Remark, }; break; } } else { list = from o in ctx.CustomerOrderInfos.Where(filter) join w in ctx.WayBillInfos.Where(filterWayBill) on o.CustomerOrderID equals w.CustomerOrderID into Grp from grp in Grp.DefaultIfEmpty() orderby grp.TransferOrderDate descending, o.CreatedOn descending, grp.WayBillNumber descending select new CustomerOrderInfoExt { CustomerCode = o.CustomerCode, CustomerOrderID = o.CustomerOrderID, CustomerOrderNumber = o.CustomerOrderNumber, WayBillNumber = grp.WayBillNumber, Status = o.Status, TrackingNumber = o.TrackingNumber, RawTrackingNumber = grp.RawTrackingNumber, CountryCode = grp.CountryCode, Weight = grp.Weight ?? 0, SettleWeight = grp.SettleWeight, Width = grp.Width ?? 0, Height = grp.Height ?? 0, Length = grp.Length ?? 0, ShippingMethodId = o.ShippingMethodId, ShippingMethodName = o.ShippingMethodName, CreatedOn = o.CreatedOn, TransferOrderDate = grp.TransferOrderDate, Remark = o.Remark, }; } //} } return(list.ToPagedList(param.Page, param.PageSize)); }