|
|
@ -278,6 +278,65 @@ namespace BBWYB.Server.Business |
|
|
|
.Where(o => o.StartTime <= time && o.OrderState == Enums.OrderState.待验收) |
|
|
|
.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public void RepairOrderState() |
|
|
|
{ |
|
|
|
var orderStateList = new List<Enums.OrderState?>() { Enums.OrderState.待发货, Enums.OrderState.待收货, Enums.OrderState.部分发货, Enums.OrderState.部分收货, Enums.OrderState.待付款, Enums.OrderState.等待采购 }; |
|
|
|
var orderList = fsql.Select<Order>().Where(o => orderStateList.Contains(o.OrderState)).ToList(); |
|
|
|
var orderIdLIst = orderList.Select(o => o.Id).ToList(); |
|
|
|
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList(); |
|
|
|
var poList = fsql.Select<OrderPurchaseInfo>().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); |
|
|
|
var updateOrderQueue = new Queue<IUpdate<Order>>(); |
|
|
|
|
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); |
|
|
|
var polist1 = poList.Where(p => p.OrderId == order.Id).ToList(); |
|
|
|
var oldState = order.OrderState; |
|
|
|
order.CalculationOrderState(fsql, oskuList, polist1); |
|
|
|
if (oldState != order.OrderState) |
|
|
|
{ |
|
|
|
updateOrderQueue.Enqueue(fsql.Update<Order>(order.Id).Set(o => o.OrderState, order.OrderState)); |
|
|
|
Console.WriteLine($"{order.Id},{order.StartTime},计算状态:{order.OrderState}"); |
|
|
|
} |
|
|
|
} |
|
|
|
var updateOrderList = new List<IUpdate<Order>>(); |
|
|
|
while (true) |
|
|
|
{ |
|
|
|
if (updateOrderQueue.TryDequeue(out var update)) |
|
|
|
{ |
|
|
|
updateOrderList.Add(update); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
break; |
|
|
|
} |
|
|
|
if (updateOrderList.Count() > 50) |
|
|
|
{ |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
foreach (var u in updateOrderList) |
|
|
|
u.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
Console.WriteLine($"执行数据库 {DateTime.Now}"); |
|
|
|
updateOrderList.Clear(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (updateOrderList.Count() > 0) |
|
|
|
{ |
|
|
|
fsql.Transaction(() => |
|
|
|
{ |
|
|
|
foreach (var u in updateOrderList) |
|
|
|
u.ExecuteAffrows(); |
|
|
|
}); |
|
|
|
updateOrderList.Clear(); |
|
|
|
Console.WriteLine($"最后执行数据库 {DateTime.Now}"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|