diff --git a/Src/Dlhis.External/OpenApi/Services/Implements/GainfoService.cs b/Src/Dlhis.External/OpenApi/Services/Implements/GainfoService.cs index e279c30e..1028ce32 100644 --- a/Src/Dlhis.External/OpenApi/Services/Implements/GainfoService.cs +++ b/Src/Dlhis.External/OpenApi/Services/Implements/GainfoService.cs @@ -1,28 +1,60 @@ -using Dlhis.External.OpenApi.Response; -using Kurisu.AspNetCore.Utils; -using Kurisu.AspNetCore.Utils.Extensions; +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Basic.Enums; +using Dlhis.External.OpenApi.Response; +using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; namespace Dlhis.External.OpenApi.Services.Implements; public class GainfoService : IGainfoService { - private readonly RedisCache _redisCache; + private readonly IDbContext _dbContext; - public GainfoService(RedisCache redisCache) + public GainfoService(IDbContext dbContext) { - _redisCache = redisCache; + _dbContext = dbContext; } public async Task> GetAllGainfosAsync() { - var data = await _redisCache.ListRangeAsync("gainfo:shanxi"); - return data.Select(x => x.ToString().ToObject()).ToList(); + var gainfos = await _dbContext.Queryable() + .LeftJoin((x, d) => x.DepartmentNo == d.No) + .Where(x => x.Factory == "2401") + .Select((x, d) => new GainfoOpenResponse + { + Code = x.Code, + DepartmentNo = x.DepartmentNo, + DepartmentName = d.Name, + Name = x.Name, + Gender = x.Gender, + Status = GainfoStatusEnumType.Working, + }) + .ToListAsync(); + + var gainfoLeaves = await _dbContext.Queryable().AS("GainfoLeave") + .LeftJoin((x, d) => x.DepartmentNo == d.No) + .Where(x => x.Factory == "2401") + .Select((x, d) => new GainfoOpenResponse + { + Code = x.Code, + DepartmentNo = x.DepartmentNo, + DepartmentName = d.Name, + Name = x.Name, + Gender = x.Gender, + Status = GainfoStatusEnumType.Leave, + }) + .ToListAsync(); + + return gainfos.Concat(gainfoLeaves).ToList(); } public async Task> GetDepartmentsAsync() { - var departmentKey = "department:all"; - var data = await _redisCache.ListRangeAsync(departmentKey); - return data.Select(x => x.ToString().ToObject()).ToList(); + return await _dbContext.Queryable() + .Select(x => new DepartmentOpenResponse + { + Name = x.Name, + No = x.No, + PNo = x.PNo + }).ToListAsync(); } -} +} \ No newline at end of file