S8MasterDataAdapter.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Admin.NET.Plugin.AiDOP.Entity.S0.Manufacturing;
  2. using Admin.NET.Plugin.AiDOP.Entity.S0.Warehouse;
  3. namespace Admin.NET.Plugin.AiDOP.Service.S8;
  4. public class S8MasterDataAdapter : ITransient
  5. {
  6. private readonly SqlSugarRepository<AdoS0DepartmentMaster> _deptRep;
  7. private readonly SqlSugarRepository<AdoS0EmployeeMaster> _empRep;
  8. private readonly SqlSugarRepository<AdoS0LineMaster> _lineRep;
  9. private readonly SqlSugarRepository<SysUser> _sysUserRep;
  10. public S8MasterDataAdapter(
  11. SqlSugarRepository<AdoS0DepartmentMaster> deptRep,
  12. SqlSugarRepository<AdoS0EmployeeMaster> empRep,
  13. SqlSugarRepository<AdoS0LineMaster> lineRep,
  14. SqlSugarRepository<SysUser> sysUserRep)
  15. {
  16. _deptRep = deptRep;
  17. _empRep = empRep;
  18. _lineRep = lineRep;
  19. _sysUserRep = sysUserRep;
  20. }
  21. public async Task<object> GetDepartmentsAsync(long? factoryRefId) =>
  22. await _deptRep.AsQueryable()
  23. .WhereIF(factoryRefId.HasValue, x => x.FactoryRefId == factoryRefId!.Value)
  24. .Take(500)
  25. .Select(x => new { id = x.Id, code = x.Department, name = x.Descr ?? x.Department })
  26. .ToListAsync();
  27. public async Task<object> GetEmployeesAsync(long? factoryRefId)
  28. {
  29. var emps = await _empRep.AsQueryable()
  30. .WhereIF(factoryRefId.HasValue, x => x.FactoryRefId == factoryRefId!.Value)
  31. .Take(500)
  32. .Select(x => new { x.Id, x.Name, x.Employee, x.SysUserId })
  33. .ToListAsync();
  34. var sysUserIds = emps.Where(e => e.SysUserId.HasValue && e.SysUserId.Value > 0)
  35. .Select(e => e.SysUserId!.Value).Distinct().ToList();
  36. Dictionary<long, (string? RealName, string? Account)> userMap = new();
  37. if (sysUserIds.Count > 0)
  38. {
  39. var users = await _sysUserRep.AsQueryable().ClearFilter()
  40. .Where(u => sysUserIds.Contains(u.Id))
  41. .Select(u => new { u.Id, u.RealName, u.Account })
  42. .ToListAsync();
  43. userMap = users.ToDictionary(u => u.Id, u => ((string?)u.RealName, (string?)u.Account));
  44. }
  45. return emps.Select(e =>
  46. {
  47. var bound = e.SysUserId.HasValue && e.SysUserId.Value > 0 && userMap.ContainsKey(e.SysUserId.Value);
  48. string? sysUserName = null;
  49. if (bound)
  50. {
  51. var (realName, account) = userMap[e.SysUserId!.Value];
  52. sysUserName = !string.IsNullOrWhiteSpace(realName) ? realName : account;
  53. }
  54. return new
  55. {
  56. id = e.Id,
  57. name = e.Name ?? e.Employee,
  58. empCode = e.Employee,
  59. sysUserId = e.SysUserId,
  60. sysUserName,
  61. bindStatus = bound ? "BOUND" : "UNBOUND"
  62. };
  63. }).ToList();
  64. }
  65. public async Task<object> GetLinesAsync(long? factoryRefId) =>
  66. await _lineRep.AsQueryable()
  67. .WhereIF(factoryRefId.HasValue, x => x.FactoryRefId == factoryRefId!.Value)
  68. .Take(500)
  69. .Select(x => new { id = x.Id, code = x.Line, name = x.Describe ?? x.Line })
  70. .ToListAsync();
  71. }