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