| | |
| | | using MES.Service.DB; |
| | | using AngleSharp.Dom; |
| | | using Castle.Core.Resource; |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using MES.Service.util; |
| | | using SqlSugar; |
| | | using System.Collections.Generic; |
| | | using System.Security.Cryptography; |
| | | |
| | | namespace MES.Service.service.BasicData; |
| | | |
| | |
| | | break; |
| | | case "2": |
| | | case "4": |
| | | //先删除,后新增 |
| | | if (InsertOrUpdateBatch(db, entity)) |
| | | return 1; |
| | | break; |
| | |
| | | |
| | | 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>(); |
| | | |
| | | customers = customer.ErpDetails.Select(ErpDetails => new MesCustomer |
| | | foreach (ErpDetail 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.ToString(), |
| | | OrgId = erpDetail.FUseOrgId.ToString(), |
| | | TableType = "MES_CUSTOMER" |
| | | |
| | | }).ToList(); |
| | | }; |
| | | 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()); |
| | | } |
| | | |
| | | 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(); |
| | | // 提取所有需要的 MesId 组合 |
| | | var mesIds = customerList.Select(customer => customer.Id.ToString()).ToList(); |
| | | |
| | | // 使用这些 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; |
| | | |
| | |
| | | /// 新代码 |
| | | 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; |