修复仓储与店铺订单列表 SqlSugar 可空筛选条件 SQL 翻译错误。

列表 predicate 改用 hasWarehouseFilter/hasStoreFilter 等本地变量,避免 ORM 生成非法 SQL。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zzh 2026-07-11 17:15:06 +08:00
parent c2d7b5c854
commit 86a978b557
5 changed files with 29 additions and 11 deletions

View File

@ -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(

View File

@ -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();

View File

@ -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
{

View File

@ -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

View File

@ -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);