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/MesCustomerManager.cs | 192 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 192 insertions(+), 0 deletions(-) diff --git a/MES.Service/service/BasicData/MesCustomerManager.cs b/MES.Service/service/BasicData/MesCustomerManager.cs new file mode 100644 index 0000000..aeb8abe --- /dev/null +++ b/MES.Service/service/BasicData/MesCustomerManager.cs @@ -0,0 +1,192 @@ +锘縰sing MES.Service.DB; +using MES.Service.Dto.webApi; +using MES.Service.Modes; +using SqlSugar; + +namespace MES.Service.service.BasicData; + +public class MesCustomerManager : Repository<MesCustomer> +{ + public bool Save(ErpCustomer customer) + { + var entity = GetSysDepartment(customer); + + return UseTransaction(db => + { + switch (customer.Type) + { + case "0": + if (UpdateCustomerStatus(db, entity.Id, "A")) + return 1; + break; + case "1": + if (UpdateCustomerStatus(db, entity.Id, "B")) + return 1; + break; + case "3": + if (DeleteCustomer(db, entity.Id)) + return 1; + break; + case "2": + case "4": + if (InsertOrUpdate(db, entity)) + return 1; + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{customer.Type}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + throw new NotImplementedException("鎿嶄綔澶辫触"); + }) > 0; + } + + public bool SaveList(List<ErpCustomer> customers) + { + var list = customers.Select(GetSysDepartment).ToList(); + var groupBy = list.GroupBy(s => s.Type) + .ToDictionary(g => g.Key, g => g.ToList()); + + return UseTransaction(db => + { + foreach (var customerGroup in groupBy) + switch (customerGroup.Key) + { + case "0": + if (!UpdateCustomerStatusBatch(db, customerGroup.Value, + "A")) + throw new NotImplementedException("鍚敤澶辫触"); + break; + case "1": + if (!UpdateCustomerStatusBatch(db, customerGroup.Value, + "B")) + throw new NotImplementedException("绂佺敤澶辫触"); + break; + case "3": + if (!DeleteCustomerBatch(db, customerGroup.Value)) + throw new NotImplementedException("鍒犻櫎澶辫触"); + break; + case "2": + case "4": + if (!InsertOrUpdateBatch(db, customerGroup.Value)) + throw new NotImplementedException("鍚屾澶辫触"); + break; + default: + throw new ArgumentNullException( + $"type娌℃湁{customerGroup.Key}杩欎釜绫诲瀷鐨勫弬鏁�"); + } + + return 1; + }) > 0; + } + + private bool UpdateCustomerStatus(SqlSugarScope db, decimal customerId, + string status) + { + var result = db.Updateable<MesCustomer>() + .SetColumns(s => s.Fforbidstatus == status) + .Where(s => s.Id == customerId).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + private bool InsertCustomer(SqlSugarScope db, MesCustomer entity) + { + var insert = db.Insertable(entity).ExecuteCommand(); + if (insert > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + private bool DeleteCustomer(SqlSugarScope db, decimal customerId) + { + var deleteById = db.Deleteable<MesCustomer>() + .Where(s => s.Id == customerId).ExecuteCommand(); + if (deleteById > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + private MesCustomer GetSysDepartment(ErpCustomer customer) + { + //ERP鍌宠几鐨勬帴鍙f暩鎿氳綁鎻涚偤MES鏁告摎搴瓧娈� + + return new MesCustomer + { + Id = Convert.ToDecimal(customer.Id), + CustNo = customer.FNumber, + CustSname = customer.FShortName, + CustName = customer.FName, + Anred = customer.FTContact, + Telf1 = customer.Fmobilephone, + Fseller = customer.Fseller, + Fforbidstatus = customer.FForbidStatus, + Remark = customer.FDescription, + FSubsidiary = customer.FUseOrgId, + Fumbrella = customer.FCreateOrgId, + CreateDate = DateTime.Now, + LastupdateDate = DateTime.Now, + Company = "1000", + Factory = "1000", + DataType = customer.FDocumentStatus, + Type = customer.Type + }; + } + + private bool UpdateCustomerStatusBatch(SqlSugarScope db, + List<MesCustomer> customerList, string status) + { + var ids = customerList.Select(it => it.Id).ToArray(); + var result = db.Updateable<MesCustomer>() + .SetColumns(s => s.Fforbidstatus == status) + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + + if (result > 0) + return true; + + throw new NotImplementedException(status == "A" ? "鍚敤澶辫触" : "绂佺敤澶辫触"); + } + + private bool InsertCustomerBatch(SqlSugarScope db, + List<MesCustomer> customerList) + { + var insertRange = db.Insertable(customerList).ExecuteCommand(); + if (insertRange > 0) + return true; + + throw new NotImplementedException("鎻掑叆澶辫触"); + } + + private bool DeleteCustomerBatch(SqlSugarScope db, + List<MesCustomer> customerList) + { + var ids = customerList.Select(it => it.Id).ToArray(); + var deleteByIds = db.Deleteable<MesCustomer>() + .Where(s => ids.Contains(s.Id)).ExecuteCommand(); + if (deleteByIds > 0) + return true; + + throw new NotImplementedException("鍒犻櫎澶辫触"); + } + + private bool InsertOrUpdate(SqlSugarScope db, MesCustomer entity) + { + db.Deleteable<MesCustomer>().Where(s => s.Id == entity.Id) + .ExecuteCommand(); + + var insert = db.Insertable(entity).ExecuteCommand(); + + return insert > 0; + } + + private bool InsertOrUpdateBatch(SqlSugarScope db, + List<MesCustomer> customerList) + { + return customerList.All(entity => InsertOrUpdate(db, entity)); + } +} \ No newline at end of file -- Gitblit v1.9.3