| | |
| | | //当前类已经继承了 Repository 增、删、查、改的方法 |
| | | public bool Save(ErpItemType unit) |
| | | { |
| | | /// <summary> |
| | | /// save方法调整。 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2024-12-30 |
| | | /// 修改说明:` |
| | | /// </remarks> |
| | | |
| | | ///原代码 |
| | | //try |
| | | //{ |
| | | // switch (customer.Type) |
| | | // { |
| | | // case "0": |
| | | // return InsertItemType(entity); |
| | | // case "1": |
| | | // return DeleteItemType(entity.Id); |
| | | // default: |
| | | // throw new ArgumentNullException( |
| | | // $"type没有{customer.Type}这个类型的参数"); |
| | | // } |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // throw new ApplicationException($"操作失败: {ex.Message}", ex); |
| | | //} |
| | | |
| | | var entity = GetMesItemType(unit); |
| | | return UseTransaction(db => |
| | | { |
| | | switch (unit.Type) |
| | | { |
| | | case "0": |
| | | if (InsertItemType(db, entity)) |
| | | case "3": |
| | | if (DeleteItemType(entity)) |
| | | return 1; |
| | | break; |
| | | case "1": |
| | | if (DeleteItemType(entity.Id)) |
| | | case "2": |
| | | case "4": |
| | | if (InsertItemType(db, entity)) |
| | | return 1; |
| | | break; |
| | | default: |
| | |
| | | |
| | | throw new NotImplementedException("操作失败"); |
| | | }) > 0; |
| | | |
| | | } |
| | | /// <summary> |
| | | /// "插入或更新的方法"调整:修改为先删除再插入。 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2024-12-30 |
| | | /// 修改说明:` |
| | | /// </remarks> |
| | | |
| | | //// - 原代码: |
| | | //private bool InsertItemType(MesItemType entity) |
| | | //{ |
| | | // var insert = base.Insert(entity); |
| | | // if (insert) |
| | | // return true; |
| | | |
| | | // throw new NotImplementedException("插入失败"); |
| | | //} |
| | | |
| | | //// - 新代码: |
| | | private bool InsertItemType(SqlSugarScope db, MesItemType entity) |
| | | |
| | | private bool InsertItemType(SqlSugarScope db, List<MesItemType> entity) |
| | | { |
| | | db.Deleteable<MesItemType>() |
| | | .Where(s => s.Id == entity.Id) |
| | | .ExecuteCommand(); |
| | | DeleteItemType(entity); |
| | | |
| | | var insert = db.Insertable(entity).ExecuteCommand(); |
| | | return insert > 0; |
| | | } |
| | | |
| | | private bool DeleteItemType(decimal id) |
| | | private bool DeleteItemType(List<MesItemType> supplierId) |
| | | { |
| | | var deleteById = base.DeleteById(id); |
| | | if (deleteById) |
| | | return true; |
| | | // 提取所有需要的 MesId 组合 |
| | | var ids = supplierId.Select(customer => customer.Id.ToString()) |
| | | .ToList(); |
| | | |
| | | // 使用这些 MesId 去查询 MesLinkU9 表,找到对应的 U9Id |
| | | var u9Ids = Db.Queryable<MesLinkU9>() |
| | | .Where(u => |
| | | ids.Contains(u.MesId) && u.TableType == "MES_ITEM_TYPE") |
| | | .Select(u => u.U9Id) |
| | | .Distinct() // 应用 Distinct 去重 |
| | | .ToList(); |
| | | |
| | | throw new NotImplementedException("删除失败"); |
| | | // 根据 U9Id 找到所有对应的 MesId,进行删除 |
| | | // 注意:这里假设您确实想要删除这些记录。如果不确定,请先查询以验证结果。 |
| | | var idsToDelete = Db.Queryable<MesLinkU9>() |
| | | .Where(u => u9Ids.Contains(u.U9Id) && u.TableType == "MES_ITEM_TYPE") |
| | | .Select(u => u.MesId) |
| | | .Distinct() // 应用 Distinct 去重 |
| | | .ToList(); |
| | | |
| | | var deleteByIds = Db.Deleteable<MesProject>().In(idsToDelete) |
| | | .ExecuteCommand(); |
| | | // if (deleteByIds > 0) |
| | | // return true; |
| | | return true; |
| | | //throw new NotImplementedException("删除失败"); |
| | | } |
| | | |
| | | private MesItemType GetMesItemType(ErpItemType department) |
| | | private List<MesItemType> GetMesItemType(ErpItemType department) |
| | | { |
| | | return new MesItemType |
| | | |
| | | List<MesItemType> list = new(); |
| | | |
| | | foreach (var erpDetail in department.FUseOrgId) |
| | | { |
| | | Id = Convert.ToDecimal(department.Id), |
| | | Pgroup = department.FParentId, |
| | | Tcode = department.FNumber, |
| | | Tname = department.FName, |
| | | Description = department.FDescription, |
| | | CreateDate = DateTime.Now, |
| | | Company = "1000", |
| | | Factory = "1000" |
| | | }; |
| | | var exists = Db.Queryable<MesLinkU9>().Any(u => |
| | | u.U9Id == department.Id && u.OrgId == erpDetail.FUseOrgId && |
| | | u.TableType == "MES_ITEM_TYPE"); |
| | | |
| | | decimal mesId = 0; |
| | | if (exists) |
| | | { |
| | | //获取mesid |
| | | mesId = Convert.ToDecimal(Db.Queryable<MesLinkU9>() |
| | | .Where(u => |
| | | u.U9Id == department.Id && u.OrgId == erpDetail.FUseOrgId && |
| | | u.TableType == "MES_ITEM_TYPE") |
| | | .Select(u => u.MesId) // 选择 MesId 字段 |
| | | .First()); |
| | | } |
| | | else |
| | | { |
| | | var entity = new MesLinkU9 |
| | | { |
| | | CreateDate = DateTime.Now, |
| | | MesId = mesId.ToString(), |
| | | U9Id = department.Id, |
| | | OrgId = erpDetail.FUseOrgId, |
| | | TableType = "MES_ITEM_TYPE" |
| | | }; |
| | | mesId = Db.Insertable(entity).ExecuteReturnIdentity(); |
| | | } |
| | | |
| | | var mesItemType = new MesItemType |
| | | { |
| | | Id = mesId, |
| | | Pgroup = department.FParentId, |
| | | Tcode = department.FNumber, |
| | | Tname = department.FName, |
| | | Unit = department.Unit, |
| | | ForbidStatus = department.FForbidStatus, |
| | | IqcType = department.IqcType, |
| | | CreateDate = DateTime.Now, |
| | | Company = "1000", |
| | | Factory = "1000" |
| | | }; |
| | | |
| | | list.Add(mesItemType); |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | public bool SaveList(List<ErpItemType> departments) |
| | | { |
| | | var list = new List<MesItemType>(); |
| | | departments.ForEach(s => |
| | | { |
| | | var entity = GetMesItemType(s); |
| | | entity.Type = s.Type; |
| | | list.Add(entity); |
| | | }); |
| | | |
| | | var groupBy = list.GroupBy(s => s.Type) |
| | | .ToDictionary(g => g.Key, g => g.ToList()); |
| | | var result = new List<bool>(); |
| | | |
| | | foreach (var itemTypeGroup in groupBy) |
| | | try |
| | | { |
| | | switch (itemTypeGroup.Key) |
| | | { |
| | | case "0": |
| | | result.Add(InsertItemTypeBatch(itemTypeGroup.Value)); |
| | | break; |
| | | case "1": |
| | | result.Add(DeleteItemTypeBatch(itemTypeGroup.Value)); |
| | | break; |
| | | default: |
| | | throw new ArgumentNullException( |
| | | $"type没有{itemTypeGroup.Key}这个类型的参数"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new ApplicationException($"批量操作失败: {ex.Message}", ex); |
| | | } |
| | | |
| | | if (result.All(b => b)) |
| | | return true; |
| | | |
| | | throw new NotImplementedException("接口执行失败"); |
| | | } |
| | | |
| | | private bool InsertItemTypeBatch(List<MesItemType> itemTypeList) |
| | | { |
| | | /// <summary> |
| | | /// InsertItemTypeBatch方法调整,先删除再插入。 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 修改人:池南骏 |
| | | /// 修改日期:2024-12-30 |
| | | /// 修改说明:` |
| | | /// </remarks> |
| | | //新增:先删除,再插入 |
| | | var ids = itemTypeList.Select(it => it.Id).ToArray(); |
| | | var deleteByIds = |
| | | base.DeleteByIds(ids.Select(d => (dynamic)d).ToArray()); |
| | | |
| | | var insertRange = base.InsertRange(itemTypeList); |
| | | if (insertRange) |
| | | return true; |
| | | |
| | | throw new NotImplementedException("插入失败"); |
| | | } |
| | | |
| | | private bool DeleteItemTypeBatch(List<MesItemType> itemTypeList) |
| | | { |
| | | var ids = itemTypeList.Select(it => it.Id).ToArray(); |
| | | var deleteByIds = |
| | | base.DeleteByIds(ids.Select(d => (dynamic)d).ToArray()); |
| | | if (deleteByIds) |
| | | return true; |
| | | |
| | | throw new NotImplementedException("删除失败"); |
| | | var result = departments.Select(Save).ToList(); |
| | | return result.All(b => b); |
| | | } |
| | | } |