|
|
@ -31,6 +31,8 @@ namespace BBWYB.Server.Business |
|
|
|
private RestApiService restApiService => restApiServiceLazy.Value; |
|
|
|
private QiKuManager qikuManager => qikuManagerLazy.Value; |
|
|
|
|
|
|
|
private List<Enums.TimeLimitTaskType?> hgzTaskTypeList; |
|
|
|
|
|
|
|
public OrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) |
|
|
|
{ |
|
|
|
qikuManagerLazy = new Lazy<QiKuManager>(() => serviceProvider.GetService<QiKuManager>()); |
|
|
@ -38,6 +40,12 @@ namespace BBWYB.Server.Business |
|
|
|
restApiServiceLazy = new Lazy<RestApiService>(() => serviceProvider.GetService<RestApiService>()); |
|
|
|
|
|
|
|
waitConfigStateList = new List<Enums.PackConfigState?>() { Enums.PackConfigState.待配置, Enums.PackConfigState.需修改 }; |
|
|
|
|
|
|
|
hgzTaskTypeList = new List<Enums.TimeLimitTaskType?>() |
|
|
|
{ |
|
|
|
Enums.TimeLimitTaskType.合格证拟定任务, |
|
|
|
Enums.TimeLimitTaskType.合格证补充任务 |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private ISelect<Order, OrderConsignee, OrderCost> GetOrderListQueryConditions(QueryOrderRequest request) |
|
|
@ -60,11 +68,21 @@ namespace BBWYB.Server.Business |
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.Sku), osku => osku.SkuId == request.Sku) |
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.SourceSku), osku => osku.BelongSkuId == request.SourceSku) |
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.ProductId), osku => osku.ProductId == request.ProductId) |
|
|
|
.WhereIf(request.IsWaitConfig, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null); |
|
|
|
.WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState != 1, osku => waitConfigStateList.Contains(osku.PackConfigState) || osku.PackConfigState == null) |
|
|
|
.WhereIf(request.IsWaitConfig && request.IsOnlyDisplayPackConfigEditState == 1, osku => osku.PackConfigState == Enums.PackConfigState.需修改); |
|
|
|
select = select.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.OrderState != Enums.OrderState.已取消) |
|
|
|
.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IntoStoreType == Enums.IntoStoreType.发回齐越) |
|
|
|
.WhereIf(request.IsWaitConfig, (o, ocs, oct) => o.IsPurchased == true) |
|
|
|
.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); |
|
|
|
|
|
|
|
if (request.IsWaitConfig && request.IsOnlyDisplayCerConfigTimeOut == 1) |
|
|
|
{ |
|
|
|
var configTimeOutChildSelect = fsql.Select<TimeLimitTask>().As("t") |
|
|
|
.Where(t => t.ShopId == request.ShopId) |
|
|
|
.Where(t => hgzTaskTypeList.Contains(t.TaskType)) |
|
|
|
.Where(t => t.IsTimely == false); |
|
|
|
select = select.Where((o, ocs, oct) => configTimeOutChildSelect.Where(t => t.OrderId == o.Id).Any()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (request.IsOnlyDisplayPurchaseTimeOut == 1 && (request.OrderState == Enums.OrderState.等待采购 || request.OrderState == Enums.OrderState.部分采购)) |
|
|
@ -75,22 +93,34 @@ namespace BBWYB.Server.Business |
|
|
|
.Where(t => t.IsTimely == false); |
|
|
|
select = select.Where((o, ocs, oct) => childSelect.Where(t => t.OrderId == o.Id).Any()); |
|
|
|
} |
|
|
|
if (request.IsOnlyDisplayDeliveryTimeout == 1 && (request.OrderState == Enums.OrderState.待发货 || request.OrderState == Enums.OrderState.部分发货)) |
|
|
|
|
|
|
|
if (request.IsOnlyDisplayCheckComputationTimeOut == 1 && request.OrderState == Enums.OrderState.待核算) |
|
|
|
{ |
|
|
|
var before24hTime = DateTime.Now.AddHours(-24); |
|
|
|
var childSelect = fsql.Select<OrderPurchaseInfo>().As("opi2") |
|
|
|
.Where(opi2 => opi2.ShopId == request.ShopId && |
|
|
|
(opi2.OrderState == Enums.PurchaseOrderState.待发货 || opi2.OrderState == Enums.PurchaseOrderState.部分发货) && |
|
|
|
opi2.CreateTime < before24hTime); |
|
|
|
select = select.Where((o, ocs, oct) => childSelect.Where(opi2 => opi2.OrderId == o.Id).Any()); |
|
|
|
var childSelect = fsql.Select<TimeLimitTask>().As("t") |
|
|
|
.Where(t => t.ShopId == request.ShopId) |
|
|
|
.Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务) |
|
|
|
.Where(t => t.IsTimely == false); |
|
|
|
select = select.Where((o, ocs, oct) => childSelect.Where(t => t.OrderId == o.Id).Any()); |
|
|
|
} |
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(request.PurchaseOrderId)) |
|
|
|
var isDeliveryTimeout = request.IsOnlyDisplayDeliveryTimeout == 1 && (request.OrderState == Enums.OrderState.待发货 || request.OrderState == Enums.OrderState.部分发货); |
|
|
|
if (isDeliveryTimeout || !string.IsNullOrEmpty(request.PurchaseOrderId)) |
|
|
|
{ |
|
|
|
var childSelect = fsql.Select<OrderPurchaseInfo>().As("opi") |
|
|
|
.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
var childSelect = fsql.Select<OrderPurchaseInfo>().As("opi"); |
|
|
|
if (isDeliveryTimeout) |
|
|
|
{ |
|
|
|
var before24hTime = DateTime.Now.AddHours(-24); |
|
|
|
childSelect = childSelect.Where(opi => opi.ShopId == request.ShopId && |
|
|
|
(opi.OrderState == Enums.PurchaseOrderState.待发货 || opi.OrderState == Enums.PurchaseOrderState.部分发货) && |
|
|
|
opi.CreateTime < before24hTime); |
|
|
|
} |
|
|
|
if (!string.IsNullOrEmpty(request.PurchaseOrderId)) |
|
|
|
{ |
|
|
|
childSelect = childSelect.Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId); |
|
|
|
} |
|
|
|
select = select.Where((o, ocs, oct) => childSelect.Where(opi => opi.OrderId == o.Id).Any()); |
|
|
|
} |
|
|
|
|
|
|
|
select = select.WhereIf(request.OrderState == Enums.OrderState.待付款 || |
|
|
|
request.OrderState == Enums.OrderState.待验收 || |
|
|
|
request.OrderState == Enums.OrderState.待核算 || |
|
|
@ -275,26 +305,34 @@ namespace BBWYB.Server.Business |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 限时任务
|
|
|
|
|
|
|
|
#region 需要订单关联的任务 (采购任务)
|
|
|
|
var orderTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => orderIdList.Contains(t.OrderId)) |
|
|
|
.ToList<TimeLimitTaskResponse>(); |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 不需要订单关联的任务 (合格证任务)
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
foreach (var orderSku in order.ItemList) |
|
|
|
{ |
|
|
|
#region 寻找sku的限时任务
|
|
|
|
var purchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId); |
|
|
|
if (purchaseTimeLimitTask != null) |
|
|
|
orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask); |
|
|
|
orderSku.PurchaseTimeLimitTask = orderSku.TimeLimitTaskList.FirstOrDefault(t => t.TaskType == Enums.TimeLimitTaskType.采购任务); |
|
|
|
#region 采购限时任务
|
|
|
|
orderSku.PurchaseTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && |
|
|
|
t.SkuId == orderSku.SkuId && |
|
|
|
t.TaskType == Enums.TimeLimitTaskType.采购任务); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 合格证拟定任务
|
|
|
|
orderSku.CerConfigTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && |
|
|
|
t.SkuId == orderSku.SkuId && |
|
|
|
t.TaskType == Enums.TimeLimitTaskType.合格证拟定任务); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 合格证补充任务
|
|
|
|
orderSku.CerEditTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && |
|
|
|
t.SkuId == orderSku.SkuId && |
|
|
|
t.TaskType == Enums.TimeLimitTaskType.合格证补充任务); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 待核算任务
|
|
|
|
orderSku.CheckComputationTimeLimitTask = orderTimeLimitTaskList.FirstOrDefault(t => t.OrderId == order.Id && |
|
|
|
t.TaskType == Enums.TimeLimitTaskType.待核算任务); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 判断sku的发货状态
|
|
|
@ -617,7 +655,16 @@ namespace BBWYB.Server.Business |
|
|
|
if (Math.Abs(orderCost.Profit ?? 0) > 1M) |
|
|
|
throw new BusinessException("订单利润绝对值不能大于1"); |
|
|
|
|
|
|
|
fsql.Update<Order>(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
fsql.Update<Order>(orderId).Set(o => o.OrderState, Enums.OrderState.已完成).ExecuteAffrows(); |
|
|
|
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now) |
|
|
|
.Set(t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false)) |
|
|
|
.Where(t => t.OrderId == orderId) |
|
|
|
.Where(t => t.CompletionTime == null) |
|
|
|
.Where(t => t.TaskType == Enums.TimeLimitTaskType.待核算任务).ExecuteAffrows(); |
|
|
|
}); |
|
|
|
|
|
|
|
SendPurchaseOrderStateToC(orderId, Enums.OrderState.已完成); |
|
|
|
} |
|
|
|
|
|
|
|