From eb662f5360e6e2c3d6972f4921bc9bd526d81913 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 22 一月 2025 18:31:12 +0800
Subject: [PATCH] 111

---
 StandardPda/MES.Service/service/BasicData/MesItemsManager.cs |  344 +++++++++++++++++++--------------------------------------
 1 files changed, 114 insertions(+), 230 deletions(-)

diff --git a/StandardPda/MES.Service/service/BasicData/MesItemsManager.cs b/StandardPda/MES.Service/service/BasicData/MesItemsManager.cs
index 491b84b..d5a23f8 100644
--- a/StandardPda/MES.Service/service/BasicData/MesItemsManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/MesItemsManager.cs
@@ -8,15 +8,6 @@
 
 public class MesItemsManager : Repository<MesItems>
 {
-    public MesItems GetItemQcPrint(WarehouseQuery query)
-    {
-        return Db.Queryable<MesItems>()
-            .Where(c => c.Factory == query.Factory
-                        && c.Company == query.Company
-                        && c.ItemNo == query.ItemNo).First();
-    }
-
-
     public bool Save(ErpItems item)
     {
         var entity = GetMesItems(item);
@@ -25,20 +16,8 @@
         {
             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 "2":
-                //    if (InsertItem(db, entity))
-                //        return 1;
-                //    break;
                 case "3":
-                    if (DeleteItem(db, entity.Id))
+                    if (DeleteItem(db, entity))
                         return 1;
                     break;
                 case "2":
@@ -58,224 +37,129 @@
 
     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 "2":
-                    //    if (!InsertItemBatch(db, itemGroup.Value))
-                    //        throw new NotImplementedException("鎻掑叆澶辫触");
-                    //    break;
-                    case "3":
-                        if (!DeleteItemBatch(db, itemGroup.Value))
-                            throw new NotImplementedException("鍒犻櫎澶辫触");
-                        break;
-                    case "2":
-                    case "4":
-                    case "5":
-                        if (!InsertOrUpdateBatch(db, itemGroup.Value))
-                            throw new NotImplementedException("鍚屾澶辫触");
-                        break;
-                    default:
-                        throw new ArgumentNullException(
-                            $"type娌℃湁{itemGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�");
-                }
-
-            return 1;
-        }) > 0;
+        var result = items.Select(Save).ToList();
+        return result.All(b => b);
     }
 
-    private bool UpdateItemStatus(SqlSugarScope db, decimal itemId,
-        string status)
+    private bool DeleteItem(SqlSugarScope db, List<MesItems> listItem)
     {
-        var result = db.Updateable<MesItems>()
-            .SetColumns(s => s.Fforbidstatus == status)
-            .Where(s => s.Id == itemId).ExecuteCommand();
+        // 鎻愬彇鎵�鏈夐渶瑕佺殑 MesId 缁勫悎 
+        var ids = listItem.Select(customer => customer.Id.ToString())
+            .ToList();
 
-        if (result > 0)
-            return true;
+        // 浣跨敤杩欎簺 MesId 鍘绘煡璇� MesLinkU9 琛紝鎵惧埌瀵瑰簲鐨� U9Id
+        var u9Ids = Db.Queryable<MesLinkU9>()
+            .Where(u =>
+                ids.Contains(u.MesId) && u.TableType == "MES_ITEMS")
+            .Select(u => u.U9Id)
+            .Distinct() // 搴旂敤 Distinct 鍘婚噸
+            .ToList();
 
-        throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触");
-    }
+        // 鏍规嵁 U9Id 鎵惧埌鎵�鏈夊搴旂殑 MesId锛岃繘琛屽垹闄�
+        // 娉ㄦ剰锛氳繖閲屽亣璁炬偍纭疄鎯宠鍒犻櫎杩欎簺璁板綍銆傚鏋滀笉纭畾锛岃鍏堟煡璇互楠岃瘉缁撴灉銆�
+        var idsToDelete = Db.Queryable<MesLinkU9>()
+            .Where(u => u9Ids.Contains(u.U9Id) && u.TableType == "MES_ITEMS")
+            .Select(u => u.MesId)
+            .Distinct() // 搴旂敤 Distinct 鍘婚噸
+            .ToList();
 
-    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>().In(itemId).ExecuteCommand();
-        if (deleteById > 0)
-            return true;
-
-        throw new NotImplementedException("鍒犻櫎澶辫触");
-    }
-
-    private MesItems GetMesItems(ErpItems item)
-    {
-        return new MesItems
-        {
-            Id = Convert.ToDecimal(item.Id),
-            ItemId = Convert.ToDecimal(item.Id),
-            ItemNo = item.FNumber,
-            ItemName = item.FName,
-            ItemModel = item.FSpecification,
-            ItemUnit = item.FBaseUnitId,
-            Lowlimit = item.FSafeStock,
-            Highlimit = item.FMaxStock,
-            PrdPack = item.FMinPackCount,
-            DepotCode = item.FStockId,
-            /// <summary>
-            /// 鎺ュ彛瀛楁璋冩暣锛氬凡鍒犻櫎鎴栦笉鍐嶄娇鐢≒PBOM00019124瀛楁銆�
-            /// </summary>
-            /// <remarks>
-            /// 淇敼浜猴細姹犲崡楠�
-            /// 淇敼鏃ユ湡锛�2024-12-25
-            /// 璇存槑锛氭瀛楁宸茶鍒犻櫎鎴栦笉鍐嶄娇鐢ㄤ簬褰撳墠鎺ュ彛涓��
-            /// 淇濈暀琚敞閲婄殑浠g爜浠ヨ褰曚慨鏀瑰巻鍙层��
-            /// </remarks>
-            //Ppbom00019124 = item.PPBOM00019124,
-            Fmaterialgroup = item.FMaterialGroup,
-            Remarks = item.FDescription,
-            Ffinishreceiptoverrate = item.FFinishReceiptOverRate,
-            Fissuetype = item.FIssueType,
-            Fisbatchmanage = item.FIsBatchManage,
-            Fpurchaserid = item.FPurchaserId,
-            Fpurchaseunitid = item.FPurchaseUnitId,
-            Storeunit = item.FStoreUnitID,
-            Saleunit = item.FSaleUnitId,
-            Fforbidstatus = item.FForbidStatus,
-            MaterialProperti = item.FErpClsID,
-            ProductionWorkshop = item.FWorkShopId,
-            ProduceUnit = item.FPRODUCEUNITID,
-            SubconUnit = item.FSUBCONUNITID,
-            CreateOrg = Convert.ToDecimal(item.FCreateOrgId),
-            UseOrg = Convert.ToDecimal(item.FUseOrgId),
-            LossPercent = item.FLOSSPERCENT,
-            MnemonicCode = item.FMnemonicCode,
-            ExpPeriod = item.FExpPeriod,
-            //ColorName = item.FColor,
-            CreateDate = DateTime.Now,
-            Company = "1000",
-            Factory = "1000",
-            /// <summary>
-            /// 鎺ュ彛瀛楁璋冩暣锛氭爣鍑嗙増鎺ュ彛鏂板瀛楁銆�
-            /// </summary>
-            /// <remarks>
-            /// 淇敼浜猴細<姹犲崡楠�>
-            /// 淇敼鏃ユ湡锛�<2024-12-31>
-            /// 淇敼璇存槑锛�
-            /// - 鍘熶唬鐮侊細绌�
-            /// - 淇敼鍚庯細    
-            /// </remarks>
-            FOLDNUMBER = item.FOldNumber,
-            FMINSTOCK = item.FMinStock,
-            FFINISHRECEIPTSHORTRATE = item.FFinishReceiptShortRate,
-            FDEFAULTVENDOR = item.FDefaultVendor,
-            FDOCUMENTSTATUS = item.FDocumentStatus,
-            FMFGPOLICYID = item.FMfgPolicyId,
-            FBOMUNITID = item.FBOMUnitId,
-            FISKITTING = item.FIsKitting,
-            FISCOBY = item.FIsCoby,
-            FOVERCONTROLMODE = item.FOverControlMode,
-            F_MJBH = item.F_MJBH
-        };
-    }
-
-    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>().In(ids).ExecuteCommand();
-        if (deleteByIds > 0)
-            return true;
-
-        throw new NotImplementedException("鍒犻櫎澶辫触");
-    }
-
-    /// <summary>
-    ///     "鎻掑叆鎴栨洿鏂扮殑鏂规硶"璋冩暣锛氫慨鏀逛负鍏堝垹闄ゅ啀鎻掑叆銆�
-    /// </summary>
-    /// <remarks>
-    ///     淇敼浜猴細姹犲崡楠�
-    ///     淇敼鏃ユ湡锛�2024-12-31
-    ///     淇敼璇存槑锛歚
-    /// </remarks>
-    /// 鍘熶唬鐮侊細
-    //private bool InsertOrUpdate(SqlSugarScope db, MesItems entity)
-    //{
-    //    var exists = db.Queryable<MesItems>().Any(e => e.Id == entity.Id);
-    //    if (exists)
-    //    {
-    //        var update = db.Updateable(entity).ExecuteCommand();
-    //        if (update > 0)
-    //            return true;
-    //    }
-    //    else
-    //    {
-    //        var insert = db.Insertable(entity).ExecuteCommand();
-    //        if (insert > 0)
-    //            return true;
-    //    }
-
-    //    return false;
-    //}
-    private bool InsertOrUpdate(SqlSugarScope db, MesItems entity)
-    {
-        db.Deleteable<MesItems>()
-            .Where(s => s.Id == entity.Id)
+        var deleteByIds = Db.Deleteable<MesProject>().In(idsToDelete)
             .ExecuteCommand();
-
-        var insert = db.Insertable(entity).ExecuteCommand();
-        return insert > 0;
+        // if (deleteByIds > 0)
+        //     return true;
+        return true;
+        //throw new NotImplementedException("鍒犻櫎澶辫触");
     }
 
-    private bool InsertOrUpdateBatch(SqlSugarScope db, List<MesItems> itemList)
+    private List<MesItems> GetMesItems(ErpItems item)
     {
-        foreach (var entity in itemList)
-            if (!InsertOrUpdate(db, entity))
-                return false;
+        List<MesItems> list = new();
 
-        return true;
+        foreach (var erpDetail in item.FUseOrgId)
+        {
+            var exists = Db.Queryable<MesLinkU9>().Any(u =>
+                u.U9Id == item.Id && u.OrgId == erpDetail.FUseOrgId &&
+                u.TableType == "MES_ITEMS");
+
+            decimal mesId = 0;
+            if (exists)
+            {
+                //鑾峰彇mesid
+                mesId = Convert.ToDecimal(Db.Queryable<MesLinkU9>()
+                    .Where(u =>
+                        u.U9Id == item.Id && u.OrgId == erpDetail.FUseOrgId &&
+                        u.TableType == "MES_ITEMS")
+                    .Select(u => u.MesId) // 閫夋嫨 MesId 瀛楁
+                    .First());
+            }
+            else
+            {
+                var entity = new MesLinkU9
+                {
+                    CreateDate = DateTime.Now,
+                    MesId = mesId.ToString(),
+                    U9Id = item.Id,
+                    OrgId = erpDetail.FUseOrgId,
+                    TableType = "MES_ITEMS"
+                };
+                mesId = Db.Insertable(entity).ExecuteReturnIdentity();
+            }
+
+            var items = new MesItems
+            {
+                Id = mesId,
+                ItemId = mesId,
+
+                Fmaterialgroup = item.FMaterialGroup,
+                ItemNo = item.FNumber,
+                OldItemNo = item.FOldNumber,
+                ItemName = item.FName,
+                CatalogNo = item.CatalogNo,
+                ItemModel = item.FSpecification,
+                SafeStock = item.FSafeStock,
+                Lowlimit = item.FMinStock,
+                Highlimit = item.FMaxStock,
+                DepotCode = item.FStockId,
+                Fisbatchmanage = item.FIsBatchManage,
+                MaterialProperti = item.FErpClsID,
+                Storeunit = item.FStoreUnitID,
+                ItemUnit = item.FBaseUnitId,
+                Fpurchaseunitid = item.FPurchaseUnitId,
+                Saleunit = item.FSaleUnitId,
+                ProduceUnit = item.FPRODUCEUNITID,
+                MaterialOutUomid = item.MaterialOutUomid,
+                CreateBy = item.CreateBy,
+                PubDescSeg38 = item.PubDescSeg38,
+                Description = item.Description,
+                PrivateDescSeg4 = item.PrivateDescSeg4,
+                PrivateDescSeg9 = item.PrivateDescSeg9,
+                IsDualQuantity = item.IsDualQuantity,
+                IsDualUom = item.IsDualUom,
+                IsMultyUom = item.IsMultyUom,
+                IsVarRatio = item.IsVarRatio,
+                ConverRatioRule = item.ConverRatioRule,
+                PrivateDescSeg11 = item.PrivateDescSeg11,
+                PrivateDescSeg7 = item.PrivateDescSeg7,
+                PrivateDescSeg2 = item.PrivateDescSeg2,
+                DocumentStatus = item.FDocumentStatus,
+                ForbidStatus = item.FForbidStatus,
+                UseOrg = erpDetail.FUseOrgId,
+                CreateDate = DateTime.Now,
+                Company = "1000",
+                Factory = "1000",
+            };
+            list.Add(items);
+        }
+
+        return list;
+    }
+
+    private bool InsertOrUpdate(SqlSugarScope db, List<MesItems> listItem)
+    {
+        DeleteItem(db, listItem);
+
+        var insert = db.Insertable(listItem).IgnoreColumns(true)
+            .ExecuteCommand();
+        return insert > 0;
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3