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/SysDepartmentManager.cs | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 214 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/SysDepartmentManager.cs b/MES.Service/service/BasicData/SysDepartmentManager.cs new file mode 100644 index 0000000..ca70322 --- /dev/null +++ b/MES.Service/service/BasicData/SysDepartmentManager.cs @@ -0,0 +1,214 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; + +namespace MES.Service.service.BasicData; + +public class SysDepartmentManager : Repository<SysDepartment> +{ + // 褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉� + + // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜閮ㄩ棬璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔 + public bool Save(ErpDepartment department) + { + var entity = + GetSysDepartment(department); // 灏� ErpDepartment 杞崲涓� SysDepartment + + return UseTransaction(db => + { + switch (department.Type) + { + case "0": + if (UpdateDepartmentStatus(db, entity.Id, "A")) // 鍚敤閮ㄩ棬 + return 1; + break; + case "1": + if (UpdateDepartmentStatus(db, entity.Id, "B")) // 绂佺敤閮ㄩ棬 + return 1; + break; + case "3": + if (DeleteDepartment(db, entity.Id)) // 鍒犻櫎閮ㄩ棬 + return 1; + break; + case "2": + case "4": + if (InsertOrUpdateDepartment(db, entity)) // 鎻掑叆鎴栨洿鏂伴儴闂� + return 1; + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{department.Type}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + throw new NotImplementedException("鎿嶄綔澶辫触"); + }) > 0; + } + + // 鏇存柊閮ㄩ棬鐘舵�佺殑鏂规硶 + private bool UpdateDepartmentStatus(SqlSugarScope db, decimal departmentId, + string status) + { + var result = db.Updateable<SysDepartment>() + .SetColumns(s => s.Depextr4 == status) + .Where(s => s.Id == departmentId).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + // 鎻掑叆鏂伴儴闂ㄧ殑鏂规硶 + private bool InsertDepartment(SqlSugarScope db, SysDepartment entity) + { + var insert = db.Insertable(entity).ExecuteCommand(); + if (insert > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + // 鍒犻櫎閮ㄩ棬鐨勬柟娉� + private bool DeleteDepartment(SqlSugarScope db, decimal departmentId) + { + var deleteById = db.Deleteable<SysDepartment>() + .Where(s => s.Id == departmentId).ExecuteCommand(); + if (deleteById > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎻掑叆鎴栨洿鏂伴儴闂ㄧ殑鏂规硶 + private bool InsertOrUpdateDepartment(SqlSugarScope db, + SysDepartment entity) + { + db.Deleteable<SysDepartment>() + .Where(s => s.Id == entity.Id).ExecuteCommand(); + + var insert = db.Insertable(entity).ExecuteCommand(); + return insert > 0; + } + + // 灏� ErpDepartment 瀵硅薄杞崲涓� SysDepartment 瀵硅薄鐨勬柟娉� + private SysDepartment GetSysDepartment(ErpDepartment department) + { + return new SysDepartment + { + Departmentcode = department.FNumber, + Departmentname = department.FName, + Departmentid = Convert.ToDecimal(department.Id), + Id = Convert.ToDecimal(department.Id), + Depextr1 = department.FDeptProperty, + Depextr2 = department.FGroup, + Depextr3 = department.FWIPStockID, + Depextr4 = department.FForbidStatus, + FParentID = department.FParentID, + FSubsidiary = department.FUseOrgId, + Fumbrella = department.FCreateOrgId, + CreateDate = DateTime.Now, + LastupdateDate = DateTime.Now, + Company = "1000", + Factory = "1000" + }; + } + + // SaveList 鏂规硶鐢ㄤ簬淇濆瓨澶氫釜閮ㄩ棬璁板綍锛屾牴鎹被鍨嬫壒閲忔墽琛屼笉鍚岀殑鎿嶄綔 + public bool SaveList(List<ErpDepartment> departments) + { + var list = new List<SysDepartment>(); + departments.ForEach(s => + { + var entity = + GetSysDepartment(s); // 灏� ErpDepartment 杞崲涓� SysDepartment + entity.Type = s.Type; + list.Add(entity); + }); + + var groupBy = list.GroupBy(s => s.Type) + .ToDictionary(g => g.Key, g => g.ToList()); + return UseTransaction(db => + { + foreach (var departmentGroup in groupBy) + switch (departmentGroup.Key) + { + case "0": + if (!UpdateDepartmentStatusBatch(db, + departmentGroup.Value, "A")) // 鎵归噺鍚敤閮ㄩ棬 + throw new NotImplementedException("鍚敤澶辫触"); + break; + case "1": + if (!UpdateDepartmentStatusBatch(db, + departmentGroup.Value, "B")) // 鎵归噺绂佺敤閮ㄩ棬 + throw new NotImplementedException("绂佺敤澶辫触"); + break; + case "3": + if (!DeleteDepartmentBatch(db, + departmentGroup.Value)) // 鎵归噺鍒犻櫎閮ㄩ棬 + throw new NotImplementedException("鍒犻櫎澶辫触"); + break; + case "2": + case "4": + if (!InsertOrUpdateDepartmentBatch(db, + departmentGroup.Value)) // 鎵归噺鎻掑叆鎴栨洿鏂伴儴闂� + throw new NotImplementedException("鍚屾澶辫触"); + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{departmentGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + return 1; + }) > 0; + } + + // 鎵归噺鏇存柊閮ㄩ棬鐘舵�佺殑鏂规硶 + private bool UpdateDepartmentStatusBatch(SqlSugarScope db, + List<SysDepartment> departmentList, string status) + { + var ids = departmentList.Select(it => it.Id).ToArray(); + var result = db.Updateable<SysDepartment>() + .SetColumns(s => s.Depextr4 == status) + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + // 鎵归噺鎻掑叆閮ㄩ棬鐨勬柟娉� + private bool InsertDepartmentBatch(SqlSugarScope db, + List<SysDepartment> departmentList) + { + var insertRange = db.Insertable(departmentList).ExecuteCommand(); + if (insertRange > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + // 鎵归噺鍒犻櫎閮ㄩ棬鐨勬柟娉� + private bool DeleteDepartmentBatch(SqlSugarScope db, + List<SysDepartment> departmentList) + { + var ids = departmentList.Select(it => it.Id).ToArray(); + var deleteByIds = + db.Deleteable<SysDepartment>() + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + + if (deleteByIds > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + // 鎵归噺鎻掑叆鎴栨洿鏂伴儴闂ㄧ殑鏂规硶 + private bool InsertOrUpdateDepartmentBatch(SqlSugarScope db, + List<SysDepartment> departmentList) + { + return departmentList.All( + entity => InsertOrUpdateDepartment(db, entity)); + } +} \ No newline at end of file -- Gitblit v1.9.3