From 6761b0ed84fd7a03400b557244d0835f671dad94 Mon Sep 17 00:00:00 2001 From: sjz <1240968267@qq.com> Date: 星期一, 14 七月 2025 18:02:59 +0800 Subject: [PATCH] 修改多组织 --- MES.Service/service/BasicData/OrganizeManager.cs | 184 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 184 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..4af4abe --- /dev/null +++ b/MES.Service/service/BasicData/OrganizeManager.cs @@ -0,0 +1,184 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using MES.Service.DB; +using MES.Service.Modes; +using MES.Service.Dto.webApi; +using System.Xml.Linq; + +namespace MES.Service.service; + +public class OrganizeManager : Repository<Organize> +{ + + public bool Save(ErpOrganize item) + { + var entity = GetOrganize(item); + + return UseTransaction(db => + { + switch (item.Type) + { + case "0": + if (UpdateOrganizetatus(db, entity.Id, "A")) //鈭� + return 1; + break; + case "1": + if (UpdateOrganizetatus(db, entity.Id, "B")) //鈭� + return 1; + break; + case "2": + if (InsertItem(db, entity)) //鈭� + return 1; + break; + case "3": + if (UpdateOrganizetatus(db, entity.Id, "B")) //鈭� + return 1; + break; + 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> Organize) + { + var list = Organize.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 "2": + if (!InsertItemBatch(db, itemGroup.Value)) + throw new NotImplementedException("鎻掑叆澶辫触"); + break; + case "3": + if (!UpdateOrganizetatusBatch(db, itemGroup.Value, "B")) + throw new NotImplementedException("鍒犻櫎澶辫触"); + break; + 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, decimal itemId,string status) + { + var result = db.Updateable<Organize>().SetColumns(s => s.Fforbidstatus == status).Where(s => s.Id == itemId).ExecuteCommand(); + return true; + } + + private bool InsertItem(SqlSugarScope db, Organize entity) + { + var exists = db.Queryable<Organize>().Any(e => e.Id == entity.Id); + if (exists) + { + var result = db.Updateable<Organize>().ExecuteCommand(); + return true; + } + else + { + var insert = db.Insertable(entity).ExecuteCommand(); + if (insert > 0) + { + return true; + } + else + { + throw new NotImplementedException("鎻掑叆澶辫触"); + } + } + } + + private bool InsertOrUpdate(SqlSugarScope db, Organize entity) + { + var exists = db.Queryable<Organize>().Any(e => e.Id == entity.Id); + if (exists) + { + var update = db.Updateable(entity).ExecuteCommand(); + return true; + } + else + { + var insert = db.Insertable(entity).ExecuteCommand(); + if (insert > 0) + { + return true; + } + else + { + return false; + } + } + } + + private Organize GetOrganize(ErpOrganize Organize) + { + return new Organize + { + + Id = Convert.ToDecimal(Organize.Id), + Fnumber = Organize.FNumber, + Fname = Organize.FName, + Fforbidstatus = Organize.FForbidStatus, + Type = Organize.Type, + Fparentid=Organize.FParentID, + Fcreatedate=DateTime.Now + }; + } + + private bool UpdateOrganizetatusBatch(SqlSugarScope db,List<Organize> itemList, string status) + { + var ids = itemList.Select(it => it.Id).ToArray(); + var result = db.Updateable<Organize>().SetColumns(s => s.Fforbidstatus == status).Where(s => ids.Contains(s.Id)).ExecuteCommand(); + return true; + } + + private bool InsertItemBatch(SqlSugarScope db, List<Organize> itemList) + { + foreach (var entity in itemList) + { + if (!InsertItem(db, entity)) + { + return false; + } + } + return true; + } + + private bool InsertOrUpdateBatch(SqlSugarScope db, List<Organize> itemList) + { + foreach (var entity in itemList) + { + if (!InsertOrUpdate(db, entity)) + { + return false; + } + } + return true; + } + +} \ No newline at end of file -- Gitblit v1.9.3