Browse Source

修复订单状态

yijia
shanji 2 years ago
parent
commit
4360499c1d
  1. 3
      BBWYB.Server.API/Controllers/DataRepairController.cs
  2. 59
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  3. 2
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs

3
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -59,5 +59,8 @@ namespace BBWYB.Server.API.Controllers
{
dataRepairBusiness.RepairOrderStateToCheckComputation();
}
[HttpPost]
public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); }
}
}

59
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

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

2
BBWYB.Server.Business/Extensions/OrderStateExtension.cs

@ -41,7 +41,7 @@ namespace BBWYB.Server.Business
#region 部分采购
foreach (var osku in orderSkuList)
{
if (!orderPurchaseInfoList.Any(opi => opi.BelongSkuIds.Contains(osku.SkuId)))
if (!orderPurchaseInfoList.Any(opi => !string.IsNullOrEmpty(opi.BelongSkuIds) && opi.BelongSkuIds.Contains(osku.SkuId)))
{
order.OrderState = Enums.OrderState.;
return;

Loading…
Cancel
Save