diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 35ac049..36204fd 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -60,16 +60,14 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.RepairOrderStateToCheckComputation(); } - [HttpPost] - public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); } [HttpPost] public void SyncCCancelOrder() { dataRepairBusiness.SyncCCancelOrder(); } [HttpPost] - public void SelectBExistsAndCNotExists() - { dataRepairBusiness.SelectBExistsAndCNotExists(); } + public void BSyncToC() + { dataRepairBusiness.BSyncToC(); } [HttpPost] public void SyncHistoryPurchaseScheme() diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 3af8d51..a18cacc 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -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.部分发货 }; - var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).OrderByDescending(o => o.StartTime).ToList(); - var orderIdLIst = orderList.Select(o => o.Id).ToList(); - var orderSkuList = fsql.Select().Where(osku => orderIdLIst.Contains(osku.OrderId)).ToList(); - var poList = fsql.Select().Where(opi => orderIdLIst.Contains(opi.OrderId) && opi.IsEnabled == true).ToList(); - var purchaseExpressOrderList = fsql.Select() - .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>(); - - 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.Id).Set(o => o.OrderState, order.OrderState)); - Console.WriteLine($"{order.Id},{order.StartTime},计算状态:{order.OrderState}"); - } - } - var updateOrderList = new List>(); - 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().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().OrderByDescending(p => p.Id).ToList(p => p.Id); - var bIds = fsql.Select().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().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()