From 872ffd09a081373b3b736efe723b08d3c1a4c20f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 10 Oct 2023 01:51:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E8=A1=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/ConverterExtensions.cs | 12 ++ .../DataRepair/DataRepairBusiness.cs | 125 +++++++++++++++++- 2 files changed, 136 insertions(+), 1 deletion(-) diff --git a/BBWYB.Common/Extensions/ConverterExtensions.cs b/BBWYB.Common/Extensions/ConverterExtensions.cs index 2bc884e..9f27cc3 100644 --- a/BBWYB.Common/Extensions/ConverterExtensions.cs +++ b/BBWYB.Common/Extensions/ConverterExtensions.cs @@ -13,5 +13,17 @@ return null; } } + + public static int? ToInt32(this object? o) + { + try + { + return Convert.ToInt32(o); + } + catch + { + return null; + } + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 3ea8042..9f7905d 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -9,6 +9,7 @@ using FreeSql; using SDKAdapter; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; +using System.Data; using System.Net.Http.Headers; using Yitter.IdGenerator; @@ -514,6 +515,9 @@ namespace BBWYB.Server.Business { List insertSpuSaleInfoList = new List(); List insertSkuSaleInfoList = new List(); + List updatePurchaseSchemeList = new List(); + List updatePurchaserList = new List(); + List insertSkuHistoryPurchaserRelationList = new List(); var noOrderStateList = new List() { Enums.OrderState.已取消, @@ -584,6 +588,7 @@ namespace BBWYB.Server.Business #endregion #region 采购方案累计信息 + #region 采购件数 /* select opi.SchemeId,sum(osku.ItemTotal) from orderpurchaserelationinfo opi @@ -604,6 +609,15 @@ namespace BBWYB.Server.Business SchemeId = g.Key, ItemTotal = g.Sum(g.Value.Item3.ItemTotal) }); + foreach (var psItemCount in psItemCountGroups) + { + updatePurchaseSchemeList.Add(new PurchaseScheme() + { + Id = psItemCount.SchemeId.Value, + PurchasedItemCount = Convert.ToInt32(psItemCount.ItemTotal), + PurchasedAmount = 0M + }); + } } #endregion @@ -626,14 +640,109 @@ namespace BBWYB.Server.Business SchemeId = g.Key, Amount = g.Sum(g.Value.Item3.SkuAmount) }); + foreach (var psAmount in psAmountGroups) + { + var ps = updatePurchaseSchemeList.FirstOrDefault(x => x.Id == psAmount.SchemeId); + if (ps == null) + { + ps = new PurchaseScheme() { Id = psAmount.SchemeId.Value, PurchasedItemCount = 0 }; + updatePurchaseSchemeList.Add(ps); + } + ps.PurchasedAmount = psAmount.Amount; + } } #endregion - #endregion #region 采购商累计信息 + { + #region 采购SKU数 + var purchaserPurchasedList = fsql.Select() + .InnerJoin((opri, o, opi) => opri.OrderId == o.Id) + .InnerJoin((opri, o, opi) => opi.OrderId == opri.OrderId && opi.IsEnabled == true) + .Where((opri, o, opi) => !noOrderStateList.Contains(o.OrderState) && o.ShopId != 11 && !string.IsNullOrEmpty(opi.PurchaserId)) + .GroupBy((opri, o, opi) => new { o.ShopId, opi.PurchaserId, opri.BelongSkuId }) + .ToList(g => new + { + g.Key.ShopId, + g.Key.PurchaserId, + g.Key.BelongSkuId + }); + + var purchaserPurchasedGroups = purchaserPurchasedList.GroupBy(x => x.PurchaserId); + foreach (var g in purchaserPurchasedGroups) + { + updatePurchaserList.Add(new Purchaser() + { + Id = g.Key, + PurchasedSkuCount = g.Count(), + PurchasedCount = 0 + }); + insertSkuHistoryPurchaserRelationList.AddRange(g.Select(x => new SkuHistoryPurchaserRelation() + { + CreateTime = DateTime.Now, + Id = idGenerator.NewLong(), + PurchaserId = x.PurchaserId, + ShopId = x.ShopId, + SkuId = x.BelongSkuId + })); + } + #endregion + + #region 采购次数 + /* + select opi.PurchaserId,count(DISTINCT(opi.OrderId)) from orderpurchaserelationinfo opri + inner join `order` o on opri.OrderId=o.Id + inner join orderpurchaseinfo opi on opi.OrderId=opri.OrderId and opi.IsEnabled=1 + where o.OrderState not in (0,6) and o.ShopId !=11 and opi.PurchaserId is not null + group by opi.PurchaserId; + */ + var purchaserPurchasedCountList = fsql.Select() + .InnerJoin((opri, o, opi) => opri.OrderId == o.Id) + .InnerJoin((opri, o, opi) => opi.OrderId == opri.OrderId && opi.IsEnabled == true) + .Where((opri, o, opi) => !noOrderStateList.Contains(o.OrderState) && o.ShopId != 11 && !string.IsNullOrEmpty(opi.PurchaserId)) + .GroupBy((opri, o, opi) => opi.PurchaserId) + .ToList(g => new + { + PurchaserId = g.Key, + //Count = g.Count(g.Value.Item3.OrderId.Distinct()) + Count = SqlExt.DistinctCount(g.Value.Item3.OrderId) + }); + + foreach (var pcount in purchaserPurchasedCountList) + { + var p = updatePurchaserList.FirstOrDefault(x => x.Id == pcount.PurchaserId); + if (p == null) + { + p = new Purchaser() { Id = pcount.PurchaserId, PurchasedSkuCount = 0 }; + updatePurchaserList.Add(p); + } + p.PurchasedCount = Convert.ToInt32(pcount.Count); + } + //var purchaserPurchasedCountDataTable = fsql.Ado.ExecuteDataTable(@"select opi.PurchaserId,count(DISTINCT(opi.OrderId)) from orderpurchaserelationinfo opri + // inner join `order` o on opri.OrderId = o.Id + // inner join orderpurchaseinfo opi on opi.OrderId = opri.OrderId and opi.IsEnabled = 1 + // where o.OrderState not in (0, 6) and o.ShopId != 11 and opi.PurchaserId is not null + // group by opi.PurchaserId;"); + + //foreach (DataRow dataRow in purchaserPurchasedCountDataTable.Rows) + //{ + // var purchaserId = dataRow[0].ToString(); + // var count = dataRow[1].ToInt32() ?? 0; + + // var p = updatePurchaserList.FirstOrDefault(x => x.Id == purchaserId); + // if (p == null) + // { + // p = new Purchaser() { Id = purchaserId, PurchasedSkuCount = 0 }; + // updatePurchaserList.Add(p); + // } + // p.PurchasedCount = count; + + //} + #endregion + } #endregion fsql.Transaction(() => @@ -642,12 +751,26 @@ namespace BBWYB.Server.Business fsql.Delete().Where(s => 1 == 1).ExecuteAffrows(); fsql.Delete().Where(s => 1 == 1).ExecuteAffrows(); fsql.Delete().Where(t => t.TaskType == Enums.TimeLimitTaskType.待议价任务).ExecuteAffrows(); + fsql.Delete().Where(s => 1 == 1).ExecuteAffrows(); fsql.Update().Set(osku => osku.IsNeedOptimization, 0) .Set(osku => osku.IsOptimizationCompleted, 0) .Where(osku => osku.IsNeedOptimization == 1) .ExecuteAffrows(); + foreach (var updatePs in updatePurchaseSchemeList) + { + fsql.Update(updatePs.Id).Set(ps => ps.PurchasedItemCount, updatePs.PurchasedItemCount) + .Set(ps => ps.PurchasedAmount, updatePs.PurchasedAmount) + .ExecuteAffrows(); + } + foreach (var updatePurchaser in updatePurchaserList) + { + fsql.Update(updatePurchaser.Id).Set(p => p.PurchasedSkuCount, updatePurchaser.PurchasedSkuCount) + .Set(p => p.PurchasedCount, updatePurchaser.PurchasedCount) + .ExecuteAffrows(); + } fsql.Insert(insertSpuSaleInfoList).ExecuteAffrows(); fsql.Insert(insertSkuSaleInfoList).ExecuteAffrows(); + fsql.Insert(insertSkuHistoryPurchaserRelationList).ExecuteAffrows(); }); } }