88 lines
2.7 KiB
C#
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;
|
|
}
|
|
}
|