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();
+ });
+ }
+
+ }
}
}