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/OrganizeManager.cs | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 175 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/OrganizeManager.cs b/MES.Service/service/BasicData/OrganizeManager.cs new file mode 100644 index 0000000..76e863d --- /dev/null +++ b/MES.Service/service/BasicData/OrganizeManager.cs @@ -0,0 +1,175 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; + +namespace MES.Service.service; + +public class OrganizeManager : Repository<SysOrganization> +{ + public bool Save(ErpOrganize item) + { + var entity = GetOrganize(item); + + return UseTransaction(db => + { + switch (item.Type) + { + case "0": + if (UpdateOrganizetatus(db, entity.FNumber, "A")) + return 1; + break; + case "1": + if (UpdateOrganizetatus(db, entity.FNumber, "B")) + return 1; + break; + case "3": + if (DeleteItem(db, entity.FNumber)) + return 1; + break; + case "2": + case "4": + if (InsertOrUpdate(db, entity)) + return 1; + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{item.Type}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + throw new NotImplementedException("鎿嶄綔澶辫触"); + }) > 0; + } + + public bool SaveList(List<ErpOrganize> SysOrganization) + { + var list = SysOrganization.Select(GetOrganize).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 (!UpdateOrganizetatusBatch(db, itemGroup.Value, "A")) + throw new NotImplementedException("鍚敤澶辫触"); + break; + case "1": + if (!UpdateOrganizetatusBatch(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 UpdateOrganizetatus(SqlSugarScope db, string number, + string status) + { + var result = db.Updateable<SysOrganization>() + .SetColumns(s => s.IsStatus == status.Equals("A")) + .Where(s => s.FNumber == number).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + private bool InsertItem(SqlSugarScope db, SysOrganization entity) + { + var insert = db.Insertable(entity).ExecuteCommand(); + if (insert > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + private bool DeleteItem(SqlSugarScope db, string number) + { + var deleteById = db.Deleteable<SysOrganization>() + .Where(s => s.FNumber == number).ExecuteCommand(); + if (deleteById > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + private SysOrganization GetOrganize(ErpOrganize organize) + { + return new SysOrganization + { + Name = organize.FName, + FNumber = organize.FNumber, + FParentlD = organize.FParentID, + IsStatus = organize.FForbidStatus.Equals("A") + }; + } + + private bool UpdateOrganizetatusBatch(SqlSugarScope db, + List<SysOrganization> itemList, string status) + { + var numbers = itemList.Select(it => it.FNumber).ToArray(); + var result = db.Updateable<SysOrganization>() + .SetColumns(s => s.IsStatus == "A".Equals(status)) + .Where(s => numbers.Contains(s.FNumber)).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + private bool InsertItemBatch(SqlSugarScope db, + List<SysOrganization> itemList) + { + var insertRange = db.Insertable(itemList).ExecuteCommand(); + if (insertRange > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + private bool DeleteItemBatch(SqlSugarScope db, + List<SysOrganization> itemList) + { + var numbers = itemList.Select(it => it.FNumber).ToArray(); + var deleteByIds = db.Deleteable<SysOrganization>() + .Where(s => numbers.Contains(s.FNumber)).ExecuteCommand(); + if (deleteByIds > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + private bool InsertOrUpdate(SqlSugarScope db, SysOrganization entity) + { + db.Deleteable<SysOrganization>() + .Where(s => s.FNumber == entity.FNumber).ExecuteCommand(); + + var insert = db.Insertable(entity).ExecuteCommand(); + + return insert > 0; + } + + private bool InsertOrUpdateBatch(SqlSugarScope db, + List<SysOrganization> itemList) + { + return itemList.All(entity => InsertOrUpdate(db, entity)); + } +} \ No newline at end of file -- Gitblit v1.9.3