| | |
| | | using MES.Service.Modes; |
| | | using MES.Service.util; |
| | | using SqlSugar; |
| | | using System.Collections.Generic; |
| | | |
| | | namespace MES.Service.service.BasicData; |
| | | |
| | |
| | | break; |
| | | case "2": |
| | | case "4": |
| | | //先删除,后新增 |
| | | if (InsertOrUpdateBatch(db, entity)) |
| | | return 1; |
| | | break; |
| | |
| | | //var list = customers.Select(GetSysDepartment).ToList(); |
| | | |
| | | //因为U9的模式,会导致多组织的基础数据被处理成List<>,所以需要修改方法,SaveLits中应该是把单条处理出来的List数据加起来,而不是之前的方法处理。 |
| | | List<MesCustomer> mes_customers = new List<MesCustomer>(); |
| | | foreach (ErpCustomer customer in customers) |
| | | List<MesCustomer> mes_customers = new(); |
| | | foreach (var customer in customers) |
| | | { |
| | | var mesCustomerList = GetSysDepartment(customer); |
| | | if (mesCustomerList != null) |
| | | { |
| | | mes_customers.AddRange(mesCustomerList); |
| | | } |
| | | } |
| | | |
| | | var groupBy = mes_customers.GroupBy(s => s.Type) |
| | |
| | | switch (customerGroup.Key) |
| | | { |
| | | case "0": |
| | | if (!UpdateCustomerStatusBatch(db, customerGroup.Value,"A")) |
| | | if (!UpdateCustomerStatusBatch(db, customerGroup.Value, |
| | | "A")) |
| | | throw new NotImplementedException("启用失败"); |
| | | break; |
| | | case "1": |
| | | if (!UpdateCustomerStatusBatch(db, customerGroup.Value,"B")) |
| | | if (!UpdateCustomerStatusBatch(db, customerGroup.Value, |
| | | "B")) |
| | | throw new NotImplementedException("禁用失败"); |
| | | break; |
| | | case "3": |
| | |
| | | |
| | | private List<MesCustomer> GetSysDepartment(ErpCustomer customer) |
| | | { |
| | | //var db = SqlSugarHelper.GetInstance(); |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | //var id = db.Insertable(insertObj).ExecuteReturnIdentity(); |
| | | //根据序列获取新的MES_ID |
| | | |
| | | List<MesCustomer> customers = new List<MesCustomer>(); |
| | | List<MesCustomer> customers = new(); |
| | | |
| | | customers = customer.ErpDetails.Select(ErpDetails => new MesCustomer |
| | | foreach (var erpDetail in customer.ErpDetails) |
| | | { |
| | | Id = GetSeqUtil.GetSeq("U9_MES_ID"), |
| | | CustNo = customer.FNumber, |
| | | CustSname = customer.FShortName, |
| | | CustName = customer.FName, |
| | | Anred = customer.FContact, |
| | | Telf1 = customer.FMobilephone, |
| | | Fseller = customer.FSeller, |
| | | CUSTOMER_STATE = customer.State, |
| | | Fforbidstatus = customer.FForbidStatus, |
| | | UseOrg = Convert.ToDecimal(ErpDetails.FUseOrgId), |
| | | decimal mesId = 0; |
| | | var exists = db.Queryable<MesLinkU9>().Any(u => |
| | | u.U9Id == customer.Id && u.OrgId == erpDetail.FUseOrgId && |
| | | u.TableType == "MES_CUSTOMER"); |
| | | if (!exists) |
| | | { |
| | | mesId = GetSeqUtil.GetSeq("U9_MES_ID"); |
| | | var entity = new MesLinkU9 |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | MesId = mesId.ToString(), |
| | | U9Id = customer.Id, |
| | | OrgId = erpDetail.FUseOrgId, |
| | | TableType = "MES_CUSTOMER" |
| | | }; |
| | | var insertUser = db.Insertable(entity).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | mesId = Convert.ToDecimal(db.Queryable<MesLinkU9>() |
| | | .Where(u => |
| | | u.U9Id == customer.Id && |
| | | u.OrgId == erpDetail.FUseOrgId && |
| | | u.TableType == "MES_CUSTOMER") |
| | | .Select(u => u.MesId) // 选择 MesId 字段 |
| | | .First()); |
| | | } |
| | | |
| | | }).ToList(); |
| | | |
| | | var mesCustomer = new MesCustomer |
| | | { |
| | | Id = mesId, |
| | | CustNo = customer.FNumber, |
| | | CustSname = customer.FShortName, |
| | | CustName = customer.FName, |
| | | Anred = customer.FContact, |
| | | Telf1 = customer.FMobilephone, |
| | | Fseller = customer.FSeller, |
| | | CUSTOMER_STATE = customer.State, |
| | | Fforbidstatus = customer.FForbidStatus, |
| | | UseOrg = Convert.ToDecimal(erpDetail.FUseOrgId), |
| | | Type = customer.Type |
| | | }; |
| | | |
| | | customers.Add(mesCustomer); |
| | | } |
| | | |
| | | //customers = customer.ErpDetails.Select(ErpDetails => new MesCustomer |
| | | //{ |
| | | // Id = GetSeqUtil.GetSeq("U9_MES_ID"), |
| | | // CustNo = customer.FNumber, |
| | | // CustSname = customer.FShortName, |
| | | // CustName = customer.FName, |
| | | // Anred = customer.FContact, |
| | | // Telf1 = customer.FMobilephone, |
| | | // Fseller = customer.FSeller, |
| | | // CUSTOMER_STATE = customer.State, |
| | | // Fforbidstatus = customer.FForbidStatus, |
| | | // UseOrg = Convert.ToDecimal(ErpDetails.FUseOrgId), |
| | | |
| | | //}).ToList(); |
| | | |
| | | return customers; |
| | | } |
| | | |
| | |
| | | private bool DeleteCustomerBatch(SqlSugarScope db, |
| | | List<MesCustomer> customerList) |
| | | { |
| | | var ids = customerList.Select(it => it.Id).ToArray(); |
| | | var deleteByIds = db.Deleteable<MesCustomer>().In(ids).ExecuteCommand(); |
| | | if (deleteByIds > 0) |
| | | return true; |
| | | // 提取所有需要的 MesId 组合 |
| | | var mesIds = customerList.Select(customer => customer.Id.ToString()) |
| | | .ToList(); |
| | | |
| | | throw new NotImplementedException("删除失败"); |
| | | // 使用这些 MesId 去查询 MesLinkU9 表,找到对应的 U9Id |
| | | var u9Ids = db.Queryable<MesLinkU9>() |
| | | .Where(u => |
| | | mesIds.Contains(u.MesId) && u.TableType == "MES_CUSTOMER") |
| | | .Select(u => u.U9Id) |
| | | .Distinct() // 应用 Distinct 去重 |
| | | .ToList(); |
| | | |
| | | // 根据 U9Id 找到所有对应的 MesId,进行删除 |
| | | // 注意:这里假设您确实想要删除这些记录。如果不确定,请先查询以验证结果。 |
| | | var idsToDelete = db.Queryable<MesLinkU9>() |
| | | .Where(u => u9Ids.Contains(u.U9Id) && u.TableType == "MES_CUSTOMER") |
| | | .Select(u => u.MesId) |
| | | .Distinct() // 应用 Distinct 去重 |
| | | .ToList(); |
| | | |
| | | |
| | | //以上方法可以考虑优化,将U9id找个新建字段存在MES_CUSTOMER中,就可以少一步查询了。 |
| | | |
| | | var deleteByIds = db.Deleteable<MesCustomer>().In(idsToDelete) |
| | | .ExecuteCommand(); |
| | | // if (deleteByIds > 0) |
| | | // return true; |
| | | return true; |
| | | //throw new NotImplementedException("删除失败"); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// 新代码 |
| | | private bool InsertOrUpdate(SqlSugarScope db, MesCustomer entity) |
| | | { |
| | | db.Deleteable<MesCustomer>() |
| | | .Where(s => s.Id == entity.Id) |
| | | .ExecuteCommand(); |
| | | //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) |
| | | { |
| | | //先删除,再新增 |
| | | if (!DeleteCustomerBatch(db, customerList)) |
| | | return false; |
| | | |
| | | foreach (var entity in customerList) |
| | | if (!InsertOrUpdate(db, entity)) |
| | | return false; |