CustomGenerateData.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using ZhonTai.Common.Domain.Db;
  5. using ZhonTai.Common.Configs;
  6. using ZhonTai.Common.Extensions;
  7. using ZhonTai.Plate.Personnel.Domain.Organization;
  8. using ZhonTai.Plate.Personnel.Domain.Organization.Output;
  9. using ZhonTai.Plate.Personnel.Domain.Position;
  10. using ZhonTai.Plate.Personnel.Domain.Position.Output;
  11. using ZhonTai.Plate.Personnel.Domain.Employee;
  12. using ZhonTai.Plate.Personnel.Domain.Employee.Output;
  13. using ZhonTai.Plate.Admin.Domain.Tenant;
  14. namespace ZhonTai.Plate.Personnel.Repository
  15. {
  16. public class CustomGenerateData : GenerateData, IGenerateData
  17. {
  18. public virtual async Task GenerateDataAsync(IFreeSql db, AppConfig appConfig)
  19. {
  20. #region 数据表
  21. //人事
  22. #region 部门
  23. var organizations = await db.Queryable<OrganizationEntity>().ToListAsync<OrganizationDataOutput>();
  24. var organizationTree = organizations.ToTree((r, c) =>
  25. {
  26. return c.ParentId == 0;
  27. },
  28. (r, c) =>
  29. {
  30. return r.Id == c.ParentId;
  31. },
  32. (r, datalist) =>
  33. {
  34. r.Childs ??= new List<OrganizationDataOutput>();
  35. r.Childs.AddRange(datalist);
  36. });
  37. #endregion
  38. #region 岗位
  39. var positions = await db.Queryable<PositionEntity>().ToListAsync<PositionDataOutput>();
  40. #endregion
  41. #region 员工
  42. var employees = await db.Queryable<EmployeeEntity>().ToListAsync<EmployeeDataOutput>();
  43. #endregion
  44. #endregion
  45. #region 生成数据
  46. var isTenant = appConfig.Tenant;
  47. SaveDataToJsonFile<OrganizationEntity>(organizationTree, isTenant);
  48. SaveDataToJsonFile<PositionEntity>(positions, isTenant);
  49. SaveDataToJsonFile<EmployeeEntity>(employees, isTenant);
  50. if (isTenant)
  51. {
  52. var tenantId = (await db.Queryable<TenantEntity>().Where(a => a.Code.ToLower() == "zhontai").ToOneAsync())?.Id;
  53. organizationTree = organizations.Where(a => a.TenantId == tenantId).ToList().ToTree((r, c) =>
  54. {
  55. return c.ParentId == 0;
  56. },
  57. (r, c) =>
  58. {
  59. return r.Id == c.ParentId;
  60. },
  61. (r, datalist) =>
  62. {
  63. r.Childs ??= new List<OrganizationDataOutput>();
  64. r.Childs.AddRange(datalist);
  65. });
  66. SaveDataToJsonFile<OrganizationEntity>(organizationTree);
  67. SaveDataToJsonFile<PositionEntity>(positions.Where(a => a.TenantId == tenantId));
  68. SaveDataToJsonFile<EmployeeEntity>(employees.Where(a => a.TenantId == tenantId));
  69. }
  70. #endregion
  71. }
  72. }
  73. }