From a4ae3bf5f1826e8e29a95da3dc2c947d713d4ebb Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 06 六月 2025 15:38:14 +0800
Subject: [PATCH] 1.仓库信息储存逻辑调整 2.生产订单接口优化。

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

diff --git a/MES.Service/service/BasicData/MesItemsManager.cs b/MES.Service/service/BasicData/MesItemsManager.cs
new file mode 100644
index 0000000..e405e58
--- /dev/null
+++ b/MES.Service/service/BasicData/MesItemsManager.cs
@@ -0,0 +1,202 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service.BasicData;
+
+public class MesItemsManager : Repository<MesItems>
+{
+    public bool Save(ErpItems item)
+    {
+        var entity = GetMesItems(item);
+
+        return UseTransaction(db =>
+        {
+            switch (item.Type)
+            {
+                case "0":
+                    if (UpdateItemStatus(db, entity.Id, "A"))
+                        return 1;
+                    break;
+                case "1":
+                    if (UpdateItemStatus(db, entity.Id, "B"))
+                        return 1;
+                    break;
+                case "3":
+                    if (DeleteItem(db, entity.Id))
+                        return 1;
+                    break;
+                case "2":
+                case "4":
+                case "5":
+                    if (InsertOrUpdate(db, entity))
+                        return 1;
+                    break;
+                default:
+                    throw new ArgumentNullException(
+                        $"type娌℃湁{item.Type}杩欎釜绫诲瀷鐨勫弬鏁�");
+            }
+
+            throw new NotImplementedException("鎿嶄綔澶辫触");
+        }) > 0;
+    }
+
+    public bool SaveList(List<ErpItems> items)
+    {
+        var list = items.Select(GetMesItems).ToList();
+        var groupBy = list.GroupBy(s => s.Type)
+            .ToDictionary(g => g.Key, g => g.ToList());
+
+        return UseTransaction(db =>
+        {
+            foreach (var itemGroup in groupBy)
+                switch (itemGroup.Key)
+                {
+                    case "0":
+                        if (!UpdateItemStatusBatch(db, itemGroup.Value, "A"))
+                            throw new NotImplementedException("鍚敤澶辫触");
+                        break;
+                    case "1":
+                        if (!UpdateItemStatusBatch(db, itemGroup.Value, "B"))
+                            throw new NotImplementedException("绂佺敤澶辫触");
+                        break;
+                    case "3":
+                        if (!DeleteItemBatch(db, itemGroup.Value))
+                            throw new NotImplementedException("鍒犻櫎澶辫触");
+                        break;
+                    case "2":
+                    case "4":
+                        if (!InsertOrUpdateBatch(db, itemGroup.Value))
+                            throw new NotImplementedException("鍚屾澶辫触");
+                        break;
+                    default:
+                        throw new ArgumentNullException(
+                            $"type娌℃湁{itemGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�");
+                }
+
+            return 1;
+        }) > 0;
+    }
+
+    private bool UpdateItemStatus(SqlSugarScope db, decimal itemId,
+        string status)
+    {
+        var result = db.Updateable<MesItems>()
+            .SetColumns(s => s.Fforbidstatus == status)
+            .Where(s => s.Id == itemId).ExecuteCommand();
+
+        if (result > 0)
+            return true;
+
+        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+    }
+
+    private bool InsertItem(SqlSugarScope db, MesItems entity)
+    {
+        var insert = db.Insertable(entity).ExecuteCommand();
+        if (insert > 0)
+            return true;
+
+        throw new NotImplementedException("鎻掑叆澶辫触");
+    }
+
+    private bool DeleteItem(SqlSugarScope db, decimal itemId)
+    {
+        var deleteById = db.Deleteable<MesItems>()
+            .Where(s => s.Id == itemId).ExecuteCommand();
+        if (deleteById > 0)
+            return true;
+
+        throw new NotImplementedException("鍒犻櫎澶辫触");
+    }
+
+    private MesItems GetMesItems(ErpItems item)
+    {
+        return new MesItems
+        {
+            Id = Convert.ToDecimal(item.Id),
+            EItemId = long.Parse(item.Id),
+            ItemId = long.Parse(item.Id),
+            Type = item.Type,
+            ItemNo = item.FNumber,
+            ItemName = item.FName,
+            ItemModel = item.FSpecification,
+            ItemUnit = item.FBaseUnitId,
+            Lowlimit = Convert.ToDouble(item.FSafeStock),
+            Highlimit = Convert.ToDouble(item.FMaxStock),
+            PrdPack = Convert.ToDouble(item.FMinPackCount),
+            DepotCode = item.FStockId,
+            Fmaterialgroup = item.FMaterialGroup,
+            Remarks = item.FDescription,
+            Ffinishreceiptoverrate =
+                Convert.ToDecimal(item.FFinishReceiptOverRate),
+            Fissuetype = item.FIssueType,
+            Fisbatchmanage = Convert.ToInt32(item.FIsBatchManage),
+            Fpurchaserid = item.FPurchaserId,
+            Fpurchaseunitid = Convert.ToDecimal(item.FPurchaseUnitId),
+            Storeunit = item.FStoreUnitID,
+            Saleunit = item.FSaleUnitId,
+            Fforbidstatus = item.FForbidStatus,
+            MaterialProperti = item.FErpClsID,
+            ProductionWorkshop = item.FWorkShopId,
+            ProduceUnit = item.FPRODUCEUNITID,
+            SubconUnit = item.FSUBCONUNITID,
+            FSubsidiary = item.FUseOrgId,
+            Fumbrella = item.FCreateOrgId,
+            LastupdateDate = DateTime.Now,
+            CreateDate = DateTime.Now,
+            MnemonicCode = item.FMnemonicCode,
+            Company = "1000",
+            Factory = "1000"
+        };
+    }
+
+    private bool UpdateItemStatusBatch(SqlSugarScope db,
+        List<MesItems> itemList, string status)
+    {
+        var ids = itemList.Select(it => it.Id).ToArray();
+        var result = db.Updateable<MesItems>()
+            .SetColumns(s => s.Fforbidstatus == status)
+            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
+
+        if (result > 0)
+            return true;
+
+        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
+    }
+
+    private bool InsertItemBatch(SqlSugarScope db, List<MesItems> itemList)
+    {
+        var insertRange = db.Insertable(itemList).ExecuteCommand();
+        if (insertRange > 0)
+            return true;
+
+        throw new NotImplementedException("鎻掑叆澶辫触");
+    }
+
+    private bool DeleteItemBatch(SqlSugarScope db, List<MesItems> itemList)
+    {
+        var ids = itemList.Select(it => it.Id).ToArray();
+        var deleteByIds = db.Deleteable<MesItems>()
+            .Where(s => ids.Contains(s.Id)).ExecuteCommand();
+        if (deleteByIds > 0)
+            return true;
+
+        throw new NotImplementedException("鍒犻櫎澶辫触");
+    }
+
+    private bool InsertOrUpdate(SqlSugarScope db, MesItems entity)
+    {
+        db.Deleteable<MesItems>().Where(s => s.Id == entity.Id)
+            .ExecuteCommand();
+
+        var insert = db.Insertable(entity).ExecuteCommand();
+        return insert > 0;
+    }
+
+    private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesItems> itemList)
+    {
+        return itemList.All(entity => InsertOrUpdate(db, entity));
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3