|
|
@ -1,4 +1,5 @@ |
|
|
|
using BBWYB.Common.Extensions; |
|
|
|
using BBWYB.Common.Http; |
|
|
|
using BBWYB.Common.Log; |
|
|
|
using BBWYB.Common.Models; |
|
|
|
using BBWYB.Server.Model; |
|
|
@ -21,7 +22,8 @@ namespace BBWYB.Server.Business |
|
|
|
private FreeSqlMultiDBManager freeSqlMultiDBManager; |
|
|
|
private VenderBusiness venderBusiness; |
|
|
|
private OP_PlatformClientFactory opPlatformClientFactory; |
|
|
|
public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) |
|
|
|
private RestApiService restApiService; |
|
|
|
public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager, VenderBusiness venderBusiness, OP_PlatformClientFactory opPlatformClientFactory, RestApiService restApiService) : base(fsql, nLogManager, idGenerator) |
|
|
|
{ |
|
|
|
this.kuaiDi100Manager = kuaiDi100Manager; |
|
|
|
this.purchaseSchemeBusiness = purchaseSchemeBusiness; |
|
|
@ -29,6 +31,7 @@ namespace BBWYB.Server.Business |
|
|
|
this.freeSqlMultiDBManager = freeSqlMultiDBManager; |
|
|
|
this.venderBusiness = venderBusiness; |
|
|
|
this.opPlatformClientFactory = opPlatformClientFactory; |
|
|
|
this.restApiService = restApiService; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -290,94 +293,6 @@ namespace BBWYB.Server.Business |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public void RepairOrderState() |
|
|
|
{ |
|
|
|
var orderStateList = new List<Enums.OrderState?>() { Enums.OrderState.待发货, Enums.OrderState.部分发货 }; |
|
|
|
var orderList = fsql.Select<Order>().Where(o => orderStateList.Contains(o.OrderState)).OrderByDescending(o => o.StartTime).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 purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>() |
|
|
|
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo) |
|
|
|
.Where((eori, peo) => orderIdLIst.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrder |
|
|
|
{ |
|
|
|
CreateTime = peo.CreateTime, |
|
|
|
ExpressContent = peo.ExpressContent, |
|
|
|
ExpressChangedTime = peo.ExpressChangedTime, |
|
|
|
ExpressState = peo.ExpressState, |
|
|
|
IsSubscribeKD100 = peo.IsSubscribeKD100, |
|
|
|
OrderId = eori.OrderId, |
|
|
|
PurchaseOrderId = eori.PurchaseOrderId, |
|
|
|
ShopId = eori.ShopId.Value, |
|
|
|
SourceExpressId = peo.SourceExpressId, |
|
|
|
SourceExpressName = peo.SourceExpressName, |
|
|
|
TargetExpressId = peo.TargetExpressId, |
|
|
|
TargetExpressName = peo.TargetExpressName, |
|
|
|
WaybillNo = peo.WaybillNo |
|
|
|
}); |
|
|
|
var updateOrderQueue = new Queue<IUpdate<Order>>(); |
|
|
|
|
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
if (order.IntoStoreType == null) |
|
|
|
order.IntoStoreType = Enums.IntoStoreType.发回齐越; |
|
|
|
var oskuList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); |
|
|
|
var polist1 = poList.Where(p => p.OrderId == order.Id).ToList(); |
|
|
|
|
|
|
|
foreach (var po in polist1) |
|
|
|
{ |
|
|
|
if (po.OrderState == null) |
|
|
|
{ |
|
|
|
var peoList = purchaseExpressOrderList.Where(peo => peo.OrderId == po.OrderId && po.PurchaseOrderId == po.PurchaseOrderId).ToList(); |
|
|
|
if (peoList.Count() > 0 && peoList.Count(peo => peo.ExpressState == "QianShou") == peoList.Count()) |
|
|
|
{ |
|
|
|
po.OrderState = Enums.PurchaseOrderState.已签收; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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}"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void SyncCCancelOrder() |
|
|
|
{ |
|
|
|
var c_cancel_orderlist = freeSqlMultiDBManager.BBWYCfsql.Select<Model.Db.BBWY.PurchaseOrderV2>().Where(p => p.OrderState == Enums.OrderState.已取消).ToList(); |
|
|
@ -392,14 +307,37 @@ namespace BBWYB.Server.Business |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void SelectBExistsAndCNotExists() |
|
|
|
public void BSyncToC() |
|
|
|
{ |
|
|
|
var cIds = freeSqlMultiDBManager.BBWYCfsql.Select<Model.Db.BBWY.PurchaseOrderV2>().OrderByDescending(p => p.Id).ToList(p => p.Id); |
|
|
|
var bIds = fsql.Select<Order>().OrderByDescending(o => o.Id).ToList(o => o.Id); |
|
|
|
var bexceptIdList = bIds.Except(cIds).ToList(); |
|
|
|
var cexceptIdList = cIds.Except(bIds).ToList(); |
|
|
|
Console.WriteLine($"B端在而C端不在的数量有 {bexceptIdList.Count()}"); |
|
|
|
Console.WriteLine($"C端在而B端不在的数量有 {cexceptIdList.Count()}"); |
|
|
|
var time = DateTime.Parse("2023-09-01"); |
|
|
|
var orderList = fsql.Select<Order>().Where(o => o.StartTime < time).OrderByDescending(o => o.Id).ToList(o => new { o.Id, o.OrderState }); |
|
|
|
var count = orderList.Count(); |
|
|
|
var i = 1; |
|
|
|
foreach (var order in orderList) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(500); |
|
|
|
try |
|
|
|
{ |
|
|
|
var url = "https://bbwy.qiyue666.com"; |
|
|
|
var result = restApiService.SendRequest(url, "api/BatchPurchase/UpdatePurchaseOrderState", new |
|
|
|
{ |
|
|
|
OrderId = order.Id, |
|
|
|
PurchaseOrderState = order.OrderState |
|
|
|
}, null, HttpMethod.Post); |
|
|
|
|
|
|
|
Console.WriteLine($"{i}/{count},{order.Id},{result.StatusCode}"); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
finally |
|
|
|
{ |
|
|
|
i++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void SyncHistoryPurchaseScheme() |
|
|
|