perf: 优化人员同步权限和历史查询
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user