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