diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index 4e3d431..dc85ffe 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -106,5 +106,14 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.SyncPurchaserName(); } + + /// + /// 定时补齐采购商主营类目 + /// + [HttpPost] + public void SyncPurchaserCategory() + { + dataRepairBusiness.SyncPurchaserCategory(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index e180933..ea8c16e 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1077,5 +1077,56 @@ namespace BBWYB.Server.Business }); } } + + public void SyncPurchaserCategory() + { + var purchaserIdList = fsql.Select() + .Where(p => !fsql.Select().Where(per => per.ExtendedType == Enums.PurchaserBasicInfoType.主营类目 && + per.PurchaserId == p.Id).Any()) + .ToList(p => p.Id); + if (purchaserIdList.Count() == 0) + return; + + var pspList = fsql.Select() + .InnerJoin((psp, p) => psp.ProductId == p.Id) + .Where((psp, p) => p.CategoryId != null && purchaserIdList.Contains(psp.PurchaserId)) + .ToList((psp, p) => new + { + psp.PurchaserId, + psp.ProductId, + p.CategoryId + }); + + if (pspList.Count() == 0) + return; + + List insertList = new List(); + + foreach (var purchaserId in purchaserIdList) + { + var currentPspList = pspList.Where(x => x.PurchaserId == purchaserId).ToList(); + if (currentPspList.Count() > 0) + { + var categoryList = currentPspList.GroupBy(x => x.CategoryId).Select(g => new Purchaser_ExtendedInfo_Relation() + { + Id = idGenerator.NewLong(), + ExtendedInfoId = g.Key, + ExtendedType = Enums.PurchaserBasicInfoType.主营类目, + PurchaserId = purchaserId + }).ToList(); + insertList.AddRange(categoryList); + Console.WriteLine($"insert count {insertList.Count()}"); + } + } + + if (insertList.Count() > 0) + { + fsql.Transaction(() => + { + fsql.Insert(insertList).ExecuteAffrows(); + }); + } + + } } }