diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index fe21727..df6b0a4 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -62,5 +62,13 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public void RepairOrderState() { dataRepairBusiness.RepairOrderState(); } + + [HttpPost] + public void SyncCCancelOrder() + { dataRepairBusiness.SyncCCancelOrder(); } + + [HttpPost] + public void SelectBExistsAndCNotExists() + { dataRepairBusiness.SelectBExistsAndCNotExists(); } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 260d66d..49b735d 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -14,11 +14,13 @@ namespace BBWYB.Server.Business private KuaiDi100Manager kuaiDi100Manager; private PurchaseSchemeBusiness purchaseSchemeBusiness; private PurchaseOrderBusiness purchaseOrderBusiness; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness) : base(fsql, nLogManager, idGenerator) + private FreeSqlMultiDBManager freeSqlMultiDBManager; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness, PurchaseOrderBusiness purchaseOrderBusiness, FreeSqlMultiDBManager freeSqlMultiDBManager) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; this.purchaseSchemeBusiness = purchaseSchemeBusiness; this.purchaseOrderBusiness = purchaseOrderBusiness; + this.freeSqlMultiDBManager = freeSqlMultiDBManager; } @@ -282,17 +284,50 @@ namespace BBWYB.Server.Business public void RepairOrderState() { - var orderStateList = new List() { Enums.OrderState.待发货, Enums.OrderState.待收货, Enums.OrderState.部分发货, Enums.OrderState.部分收货, Enums.OrderState.待付款, Enums.OrderState.等待采购 }; - var orderList = fsql.Select().Where(o => orderStateList.Contains(o.OrderState)).ToList(); + 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) @@ -333,10 +368,30 @@ namespace BBWYB.Server.Business updateOrderList.Clear(); Console.WriteLine($"最后执行数据库 {DateTime.Now}"); } + } + public void SyncCCancelOrder() + { + var c_cancel_orderlist = freeSqlMultiDBManager.BBWYCfsql.Select().Where(p => p.OrderState == Enums.OrderState.已取消).ToList(); + var c_cancel_orderIdlist = c_cancel_orderlist.Select(p => p.Id).ToList(); + if (c_cancel_orderIdlist.Count() > 0) + { + fsql.Transaction(() => + { + fsql.Update(c_cancel_orderIdlist).Set(o => o.OrderState, Enums.OrderState.已取消).ExecuteAffrows(); + }); + } + } - + public void SelectBExistsAndCNotExists() + { + 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()}"); } } } diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs index 088ee57..86e8672 100644 --- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs +++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs @@ -21,8 +21,7 @@ namespace BBWYB.Server.Business IList orderPurchaseInfoList = null) { if (order.OrderState == Enums.OrderState.已取消 || - order.OrderState == Enums.OrderState.已完成 || - order.OrderState == Enums.OrderState.待付款) + order.OrderState == Enums.OrderState.已完成) //order.OrderState == Enums.OrderState.待付款 return; if (orderSkuList == null) diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index dab1f9a..6605a33 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -12,6 +12,7 @@ using Newtonsoft.Json; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; +using System.Collections.Concurrent; using System.Linq.Expressions; using System.Security.Cryptography; using Yitter.IdGenerator; @@ -550,7 +551,7 @@ namespace BBWYB.Server.Business } catch { - + } //var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'"; diff --git a/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs index ccc561c..3e9aaf4 100644 --- a/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs +++ b/BBWYB.Server.Model/Db/BBWY/PurchaseOrderV2.cs @@ -116,7 +116,7 @@ namespace BBWYB.Server.Model.Db.BBWY /// 采购单状态(待付款=0,待发货=1,待收货=2,待质检=3,待打包=4,待结算=5,已完成=6) /// [Column(MapType = typeof(int?))] - public Enums.PurchaseOrderState? OrderState { get; set; } + public Enums.OrderState? OrderState { get; set; } /// /// 支付时间