From 6ceea5f0d142f3c1fe9c9eff8c497df02fa8f2ad Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期二, 05 十一月 2024 13:01:41 +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