From b957cfb89c9968f47cc5ce9795e6ffb05bc57fd8 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 30 十月 2024 16:05:48 +0800
Subject: [PATCH] 11

---
 MES.Service/service/BasicData/MesDepotsManager.cs |  205 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 205 insertions(+), 0 deletions(-)

diff --git a/MES.Service/service/BasicData/MesDepotsManager.cs b/MES.Service/service/BasicData/MesDepotsManager.cs
new file mode 100644
index 0000000..6f5da5a
--- /dev/null
+++ b/MES.Service/service/BasicData/MesDepotsManager.cs
@@ -0,0 +1,205 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service.BasicData;
+
+public class MesDepotsManager : Repository<MesDepots>
+{
+    // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜浠撳簱璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔
+    public bool Save(ErpDepots depots)
+    {
+        var entity = GetMesDepots(depots); // 灏� ErpDepots 杞崲涓� MesDepots
+        return UseTransaction(db =>
+        {
+            switch (depots.Type)
+            {
+                case "0":
+                    if (UpdateDepotStatus(db, entity.DepotId, "A")) return 1;
+
+                    break;
+                case "1":
+                    if (UpdateDepotStatus(db, entity.DepotId, "B")) return 1;
+
+                    break;
+                case "3":
+                    if (DeleteDepot(db, entity.DepotId)) return 1;
+
+                    break;
+                case "2":
+                case "4":
+                    if (InsertOrUpdate(db, entity)) return 1;
+
+                    break;
+                default:
+                    throw new ArgumentNullException(
+                        $"type娌℃湁{depots.Type}杩欎釜绫诲瀷鐨勫弬鏁�");
+            }
+
+            throw new NotImplementedException("鎿嶄綔澶辫触");
+        }) > 0;
+    }
+
+    // 鏇存柊浠撳簱鐘舵�佺殑鏂规硶
+    private bool UpdateDepotStatus(SqlSugarScope db, decimal depotId,
+        string status)
+    {
+        var result = db.Updateable<MesDepots>()
+            .SetColumns(s => s.IsNg == status)
+            .Where(s => s.DepotId == depotId).ExecuteCommand();
+
+        if (result > 0)
+            return true;
+
+        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+    }
+
+    // 鎻掑叆鏂颁粨搴撶殑鏂规硶
+    private bool InsertDepot(SqlSugarScope db, MesDepots entity)
+    {
+        var insert = db.Insertable(entity).ExecuteCommand();
+        if (insert > 0)
+            return true;
+
+        throw new NotImplementedException("瀹℃牳澶辫触");
+    }
+
+    // 鍒犻櫎浠撳簱鐨勬柟娉�
+    private bool DeleteDepot(SqlSugarScope db, decimal depotId)
+    {
+        var deleteById = db.Deleteable<MesDepots>()
+            .Where(s => s.DepotId == depotId).ExecuteCommand();
+        if (deleteById > 0)
+            return true;
+
+        throw new NotImplementedException("鍙嶅鏍稿け璐�");
+    }
+
+    // 鎻掑叆鎴栨洿鏂颁粨搴撶殑鏂规硶
+    private bool InsertOrUpdate(SqlSugarScope db, MesDepots entity)
+    {
+        db.Deleteable<MesDepots>()
+            .Where(s => s.DepotId == entity.DepotId)
+            .ExecuteCommand();
+        var insert = db.Insertable(entity).ExecuteCommand();
+        return insert > 0;
+    }
+
+    // 灏� ErpDepots 瀵硅薄杞崲涓� MesDepots 瀵硅薄鐨勬柟娉�
+    private MesDepots GetMesDepots(ErpDepots depots)
+    {
+        return new MesDepots
+        {
+            DepotCode = depots.FNumber,
+            DepotName = depots.FName,
+            DepotId = Convert.ToDecimal(depots.Id),
+            IsFkc = depots.FAllowMinusQty,
+            CreateBy = depots.FPrincipal,
+            Depottype = depots.FStockProperty,
+            IsNg = depots.FForbidStatus,
+            Zuid = depots.FGroup,
+            FSubsidiary = depots.FUseOrgId,
+            Fumbrella = depots.FCreateOrgId,
+            CreateDate = DateTime.Now,
+            LastupdateDate = DateTime.Now,
+            Company = "1000",
+            Factory = "1000"
+        };
+    }
+
+    // SaveList 鏂规硶鐢ㄤ簬淇濆瓨澶氫釜浠撳簱璁板綍锛屾牴鎹被鍨嬫壒閲忔墽琛屼笉鍚岀殑鎿嶄綔
+    public bool SaveList(List<ErpDepots> erpDepots)
+    {
+        var list = new List<MesDepots>();
+        erpDepots.ForEach(s =>
+        {
+            var entity = GetMesDepots(s); // 灏� ErpDepots 杞崲涓� MesDepots
+            entity.Type = s.Type;
+            list.Add(entity);
+        });
+
+        var groupBy = list.GroupBy(s => s.Type)
+            .ToDictionary(g => g.Key, g => g.ToList());
+        return UseTransaction(db =>
+        {
+            foreach (var depotsGroup in groupBy)
+                switch (depotsGroup.Key)
+                {
+                    case "0":
+                        if (!UpdateDepotStatusBatch(db, depotsGroup.Value,
+                                "A")) // 鎵归噺鍚敤浠撳簱
+                            throw new NotImplementedException("鍚敤澶辫触");
+                        break;
+                    case "1":
+                        if (!UpdateDepotStatusBatch(db, depotsGroup.Value,
+                                "B")) // 鎵归噺绂佺敤浠撳簱
+                            throw new NotImplementedException("绂佺敤澶辫触");
+                        break;
+                    case "3":
+                        if (!DeleteDepotBatch(db,
+                                depotsGroup.Value)) // 鎵归噺鍒犻櫎浠撳簱
+                            throw new NotImplementedException("鍒犻櫎澶辫触");
+                        break;
+                    case "2":
+                    case "4":
+                        if (!InsertOrUpdateBatch(db,
+                                depotsGroup.Value)) // 鎵归噺鎻掑叆鎴栨洿鏂颁粨搴�
+                            throw new NotImplementedException("鍚屾澶辫触");
+                        break;
+                    default:
+                        throw new ArgumentNullException(
+                            $"type娌℃湁{depotsGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�");
+                }
+
+            return 1;
+        }) > 0;
+    }
+
+    // 鎵归噺鏇存柊浠撳簱鐘舵�佺殑鏂规硶
+    private bool UpdateDepotStatusBatch(SqlSugarScope db,
+        List<MesDepots> depotList, string status)
+    {
+        var ids = depotList.Select(it => it.DepotId).ToArray();
+        var result = db.Updateable<MesDepots>()
+            .SetColumns(s => s.IsNg == status)
+            .Where(s => ids.Contains(s.DepotId)).ExecuteCommand();
+
+        if (result > 0)
+            return true;
+
+        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+    }
+
+    // 鎵归噺鎻掑叆浠撳簱鐨勬柟娉�
+    private bool InsertDepotBatch(SqlSugarScope db,
+        List<MesDepots> depotList)
+    {
+        var insertRange = db.Insertable(depotList).ExecuteCommand();
+        if (insertRange > 0)
+            return true;
+
+        throw new NotImplementedException("瀹℃牳澶辫触");
+    }
+
+    // 鎵归噺鍒犻櫎浠撳簱鐨勬柟娉�
+    private bool DeleteDepotBatch(SqlSugarScope db,
+        List<MesDepots> depotList)
+    {
+        var ids = depotList.Select(it => it.DepotId).ToArray();
+        var deleteByIds =
+            db.Deleteable<MesDepots>()
+                .Where(s => ids.Contains(s.DepotId)).ExecuteCommand();
+        if (deleteByIds > 0)
+            return true;
+
+        throw new NotImplementedException("鍙嶅鏍稿け璐�");
+    }
+
+    // 鎵归噺鎻掑叆鎴栨洿鏂颁粨搴撶殑鏂规硶
+    private bool InsertOrUpdateBatch(SqlSugarScope db,
+        List<MesDepots> depotList)
+    {
+        return depotList.All(entity => InsertOrUpdate(db, entity));
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3