Files
jinko.yikatong/Src/Dlhis.Basic/Organization/Repositories/Implements/GainfoSapRepository.cs

88 lines
2.7 KiB
C#

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<List<SapPersonItem>> GetLatestPersonsAsync(List<string> workCodes)
{
var persons = new List<SapPersonItem>();
foreach (var chunk in workCodes.Chunk(2000))
{
var items = await _dbContext.Queryable<GainfoSapEntity>()
.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;
}
}