using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using ZhonTai.Common.Domain.Db; using ZhonTai.Common.Configs; using ZhonTai.Common.Extensions; using ZhonTai.Plate.Personnel.Domain.Organization; using ZhonTai.Plate.Personnel.Domain.Organization.Output; using ZhonTai.Plate.Personnel.Domain.Position; using ZhonTai.Plate.Personnel.Domain.Position.Output; using ZhonTai.Plate.Personnel.Domain.Employee; using ZhonTai.Plate.Personnel.Domain.Employee.Output; using ZhonTai.Plate.Admin.Domain.Tenant; namespace ZhonTai.Plate.Personnel.Repository { public class CustomGenerateData : GenerateData, IGenerateData { public virtual async Task GenerateDataAsync(IFreeSql db, AppConfig appConfig) { #region 数据表 //人事 #region 部门 var organizations = await db.Queryable().ToListAsync(); var organizationTree = organizations.ToTree((r, c) => { return c.ParentId == 0; }, (r, c) => { return r.Id == c.ParentId; }, (r, datalist) => { r.Childs ??= new List(); r.Childs.AddRange(datalist); }); #endregion #region 岗位 var positions = await db.Queryable().ToListAsync(); #endregion #region 员工 var employees = await db.Queryable().ToListAsync(); #endregion #endregion #region 生成数据 var isTenant = appConfig.Tenant; SaveDataToJsonFile(organizationTree, isTenant); SaveDataToJsonFile(positions, isTenant); SaveDataToJsonFile(employees, isTenant); if (isTenant) { var tenantId = (await db.Queryable().Where(a => a.Code.ToLower() == "zhontai").ToOneAsync())?.Id; organizationTree = organizations.Where(a => a.TenantId == tenantId).ToList().ToTree((r, c) => { return c.ParentId == 0; }, (r, c) => { return r.Id == c.ParentId; }, (r, datalist) => { r.Childs ??= new List(); r.Childs.AddRange(datalist); }); SaveDataToJsonFile(organizationTree); SaveDataToJsonFile(positions.Where(a => a.TenantId == tenantId)); SaveDataToJsonFile(employees.Where(a => a.TenantId == tenantId)); } #endregion } } }