From fa0a10bc830ffb25dcaf2bcf3f88be7b82da036e Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Tue, 26 Dec 2023 21:25:06 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E5=A4=8D=E9=87=87?=
 =?UTF-8?q?=E8=B4=AD=E5=95=86=E4=B8=BB=E8=90=A5=E7=B1=BB=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Controllers/DataRepairController.cs       |  9 ++++
 .../DataRepair/DataRepairBusiness.cs          | 51 +++++++++++++++++++
 2 files changed, 60 insertions(+)

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();
         }
+
+        /// <summary>
+        /// 定时补齐采购商主营类目
+        /// </summary>
+        [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<Purchaser>()
+                                    .Where(p => !fsql.Select<Purchaser_ExtendedInfo_Relation>().Where(per => per.ExtendedType == Enums.PurchaserBasicInfoType.主营类目 &&
+                                                                                                             per.PurchaserId == p.Id).Any())
+                                    .ToList(p => p.Id);
+            if (purchaserIdList.Count() == 0)
+                return;
+
+            var pspList = fsql.Select<PurchaseSchemeProduct, Product>()
+                              .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<Purchaser_ExtendedInfo_Relation> insertList = new List<Purchaser_ExtendedInfo_Relation>();
+
+            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();
+                });
+            }
+
+        }
     }
 }