修复仓储与店铺订单列表 SqlSugar 可空筛选条件 SQL 翻译错误。
This commit is contained in:
commit
0bc826b6a3
@ -599,13 +599,19 @@ public class PlatformStoreOrderService : ApplicationService
|
||||
var (hasCustomerFilter, customerIdValue) = WarehouseCustomerHelper.ToCustomerFilter(customerId);
|
||||
var fulfillStatus = input.FulfillStatus?.Trim();
|
||||
var platformOrderNo = input.PlatformOrderNo?.Trim();
|
||||
var hasStoreFilter = input.StoreId.HasValue;
|
||||
var storeIdValue = input.StoreId.GetValueOrDefault();
|
||||
var hasFulfillStatusFilter = !string.IsNullOrWhiteSpace(fulfillStatus);
|
||||
var hasPlatformOrderNoFilter = !string.IsNullOrWhiteSpace(platformOrderNo);
|
||||
var hasSuspendedFilter = input.IsSuspended.HasValue;
|
||||
var isSuspendedValue = input.IsSuspended.GetValueOrDefault();
|
||||
|
||||
return x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!input.StoreId.HasValue || x.StoreId == input.StoreId.Value)
|
||||
&& (string.IsNullOrWhiteSpace(fulfillStatus) || x.FulfillStatus == fulfillStatus)
|
||||
&& (!input.IsSuspended.HasValue || x.IsSuspended == input.IsSuspended.Value)
|
||||
&& (string.IsNullOrWhiteSpace(platformOrderNo) || x.PlatformOrderNo.Contains(platformOrderNo));
|
||||
&& (!hasStoreFilter || x.StoreId == storeIdValue)
|
||||
&& (!hasFulfillStatusFilter || x.FulfillStatus == fulfillStatus)
|
||||
&& (!hasSuspendedFilter || x.IsSuspended == isSuspendedValue)
|
||||
&& (!hasPlatformOrderNoFilter || x.PlatformOrderNo.Contains(platformOrderNo!));
|
||||
}
|
||||
|
||||
private static PlatformStoreOrderOutput MapOrderOutput(
|
||||
|
||||
@ -170,20 +170,37 @@ public class PlatformStoreService : ApplicationService
|
||||
var platformCode = input.PlatformCode?.Trim();
|
||||
var nickname = input.StoreNickname?.Trim();
|
||||
var filter = input.ExpirationFilter?.Trim().ToLowerInvariant();
|
||||
var hasPlatformCode = !string.IsNullOrWhiteSpace(platformCode);
|
||||
var hasNickname = !string.IsNullOrWhiteSpace(nickname);
|
||||
var now = DateTime.Now;
|
||||
var within7Days = now.AddDays(7);
|
||||
|
||||
return x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (string.IsNullOrWhiteSpace(platformCode) || x.PlatformCode == platformCode)
|
||||
&& (string.IsNullOrWhiteSpace(nickname) || x.StoreNickname.Contains(nickname))
|
||||
&& (string.IsNullOrWhiteSpace(filter) || filter == "normal"
|
||||
? string.IsNullOrWhiteSpace(filter) || !x.TokenExpireTime.HasValue || x.TokenExpireTime > within7Days
|
||||
: filter == "expired"
|
||||
? x.TokenExpireTime.HasValue && x.TokenExpireTime < now
|
||||
: filter == "within7days"
|
||||
? x.TokenExpireTime.HasValue && x.TokenExpireTime >= now && x.TokenExpireTime <= within7Days
|
||||
: true);
|
||||
// 显式按过期筛选分支构造表达式,避免嵌套三元被 ORM 翻译成非法 IIF。
|
||||
return filter switch
|
||||
{
|
||||
"expired" => x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!hasPlatformCode || x.PlatformCode == platformCode)
|
||||
&& (!hasNickname || x.StoreNickname.Contains(nickname!))
|
||||
&& x.TokenExpireTime.HasValue
|
||||
&& x.TokenExpireTime < now,
|
||||
"within7days" => x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!hasPlatformCode || x.PlatformCode == platformCode)
|
||||
&& (!hasNickname || x.StoreNickname.Contains(nickname!))
|
||||
&& x.TokenExpireTime.HasValue
|
||||
&& x.TokenExpireTime >= now
|
||||
&& x.TokenExpireTime <= within7Days,
|
||||
"normal" => x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!hasPlatformCode || x.PlatformCode == platformCode)
|
||||
&& (!hasNickname || x.StoreNickname.Contains(nickname!))
|
||||
&& (!x.TokenExpireTime.HasValue || x.TokenExpireTime > within7Days),
|
||||
_ => x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!hasPlatformCode || x.PlatformCode == platformCode)
|
||||
&& (!hasNickname || x.StoreNickname.Contains(nickname!))
|
||||
};
|
||||
}
|
||||
|
||||
private static PlatformStoreOutput MapOutput(SalesStore entity) =>
|
||||
|
||||
@ -23,9 +23,11 @@ public partial class WarehouseService
|
||||
|
||||
var keyword = input.Keyword?.Trim();
|
||||
var hasKeyword = !string.IsNullOrWhiteSpace(keyword);
|
||||
var hasEnabledFilter = input.IsEnabled.HasValue;
|
||||
var isEnabledValue = input.IsEnabled.GetValueOrDefault();
|
||||
var items = await BinLocationRepository.GetListAsync(x =>
|
||||
x.WarehouseId == input.WarehouseId
|
||||
&& (!input.IsEnabled.HasValue || x.IsEnabled == input.IsEnabled.Value)
|
||||
&& (!hasEnabledFilter || x.IsEnabled == isEnabledValue)
|
||||
&& (!hasKeyword || x.BinCode.Contains(keyword!) || (x.BinName != null && x.BinName.Contains(keyword!))));
|
||||
items = items.OrderBy(x => x.BinCode).ThenBy(x => x.Id).ToList();
|
||||
|
||||
|
||||
@ -24,11 +24,14 @@ public partial class WarehouseService
|
||||
var keyword = input.Keyword?.Trim();
|
||||
var hasKeyword = !string.IsNullOrWhiteSpace(keyword);
|
||||
var receiptStatus = input.ReceiptStatus?.Trim();
|
||||
var hasWarehouseFilter = input.WarehouseId.HasValue;
|
||||
var warehouseIdValue = input.WarehouseId.GetValueOrDefault();
|
||||
var hasReceiptStatusFilter = !string.IsNullOrWhiteSpace(receiptStatus);
|
||||
|
||||
Expression<Func<CInboundNotice, bool>> predicate = x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!input.WarehouseId.HasValue || x.WarehouseId == input.WarehouseId.Value)
|
||||
&& (string.IsNullOrWhiteSpace(receiptStatus) || x.ReceiptStatus == receiptStatus)
|
||||
&& (!hasWarehouseFilter || x.WarehouseId == warehouseIdValue)
|
||||
&& (!hasReceiptStatusFilter || x.ReceiptStatus == receiptStatus)
|
||||
&& (!hasKeyword || x.NoticeNo.Contains(keyword!) || (x.MarkReference != null && x.MarkReference.Contains(keyword!)));
|
||||
|
||||
var pageIndex = OmsDocHelper.NormalizePage(input.Page);
|
||||
@ -302,9 +305,11 @@ public partial class WarehouseService
|
||||
{
|
||||
var resolvedCustomerId = await ResolveListCustomerIdAsync(customerId);
|
||||
var (hasCustomerFilter, customerIdValue) = CustomerFilter(resolvedCustomerId);
|
||||
var hasWarehouseFilter = warehouseId.HasValue;
|
||||
var warehouseIdValue = warehouseId.GetValueOrDefault();
|
||||
var notices = await InboundNoticeRepository.GetListAsync(x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!warehouseId.HasValue || x.WarehouseId == warehouseId.Value));
|
||||
&& (!hasWarehouseFilter || x.WarehouseId == warehouseIdValue));
|
||||
|
||||
return new WarehouseInboundSummaryOutput
|
||||
{
|
||||
|
||||
@ -18,10 +18,12 @@ public partial class WarehouseService
|
||||
{
|
||||
var customerId = await ResolveListCustomerIdAsync(input.CustomerId);
|
||||
var (hasCustomerFilter, customerIdValue) = CustomerFilter(customerId);
|
||||
var hasWarehouseFilter = input.WarehouseId.HasValue;
|
||||
var warehouseIdValue = input.WarehouseId.GetValueOrDefault();
|
||||
var inventories = await InventoryRepository.GetListAsync(x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& x.Qty > 0
|
||||
&& (!input.WarehouseId.HasValue || x.WarehouseId == input.WarehouseId.Value));
|
||||
&& (!hasWarehouseFilter || x.WarehouseId == warehouseIdValue));
|
||||
|
||||
var skuIds = inventories.Select(x => x.SkuId).Distinct().ToArray();
|
||||
var skus = skuIds.Length == 0
|
||||
|
||||
@ -24,11 +24,14 @@ public partial class WarehouseService
|
||||
var keyword = input.Keyword?.Trim();
|
||||
var hasKeyword = !string.IsNullOrWhiteSpace(keyword);
|
||||
var lifecycleStatus = input.LifecycleStatus?.Trim();
|
||||
var hasWarehouseFilter = input.WarehouseId.HasValue;
|
||||
var warehouseIdValue = input.WarehouseId.GetValueOrDefault();
|
||||
var hasLifecycleStatusFilter = !string.IsNullOrWhiteSpace(lifecycleStatus);
|
||||
|
||||
Expression<Func<CParcel, bool>> predicate = x =>
|
||||
(!hasCustomerFilter || x.CustomerId == customerIdValue)
|
||||
&& (!input.WarehouseId.HasValue || x.WarehouseId == input.WarehouseId.Value)
|
||||
&& (string.IsNullOrWhiteSpace(lifecycleStatus) || x.LifecycleStatus == lifecycleStatus)
|
||||
&& (!hasWarehouseFilter || x.WarehouseId == warehouseIdValue)
|
||||
&& (!hasLifecycleStatusFilter || x.LifecycleStatus == lifecycleStatus)
|
||||
&& (!hasKeyword || x.TrackingNo.Contains(keyword!) || (x.CarrierName != null && x.CarrierName.Contains(keyword!)));
|
||||
|
||||
var pageIndex = OmsDocHelper.NormalizePage(input.Page);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user