using Dlhis.Entity.Basic.Entity; using Dlhis.Jip.Api.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using SqlSugar; namespace Dlhis.Basic.Organization.Repositories.Implements; public class GainfoSapRepository : IGainfoSapRepository { private readonly IDbContext _dbContext; public GainfoSapRepository(IDbContext dbContext) { _dbContext = dbContext; } public async Task> GetLatestPersonsAsync(List workCodes) { var persons = new List(); foreach (var chunk in workCodes.Chunk(2000)) { var items = await _dbContext.Queryable() .Where(x => chunk.Contains(x.ename)) .Select(x => new { RowNumber = SqlFunc.RowNumber(SqlFunc.Desc(x.logdate), x.ename), x.gname, x.gname2, x.ename, x.idno, x.birthday, x.email, x.appellation, x.phone, x.ZSTATUS, x.createdate, x.PERNR, x.WERKS, x.KOSTL, x.ZZ_ZD, x.Z_ZJ, x.STELL, x.STELL_NM, x.ZLZRQ, x.MASSN, x.MNTXT, x.ZZ_COUNNM, x.ZZ_GZDJD, x.ZZ_GZDCQ }) .MergeTable() .Where(x => x.RowNumber == 1) .Select(x => new SapPersonItem { NAME = x.gname, NAME2 = x.gname2, ZWORKCODE = x.ename, ZZ_SFZH = x.idno, GBDAT = x.birthday, ZXUELI = x.email, ORGEH = x.appellation, ZMOBILE = x.phone, ZSTATUS = x.ZSTATUS, ZRZRQ = x.createdate, PERNR = x.PERNR, WERKS = x.WERKS, KOSTL_XJ = x.KOSTL, ZZ_ZD = x.ZZ_ZD, Z_ZJ = x.Z_ZJ, PLANS = x.STELL, STELL = x.STELL, STELL_NM = x.STELL_NM, ZLZRQ = x.ZLZRQ, MASSN = x.MASSN, MNTXT = x.MNTXT, ZZ_COUNNM = x.ZZ_COUNNM, ZZ_GZDJD = x.ZZ_GZDJD, ZZ_GZDCQ = x.ZZ_GZDCQ }) .ToListAsync(); persons.AddRange(items); } return persons; } }