fix 优化通信记录查询

This commit is contained in:
2025-01-08 17:41:15 +08:00
parent a54efe83ad
commit 64e4adf500
2 changed files with 53 additions and 87 deletions

View File

@@ -223,94 +223,53 @@ public class DeviceUploadLogService : IDeviceUploadLogService
_ => throw new UserFriendlyException("不支持当前设备类型")
};
if (request.IsOutsource.HasValue && request.IsOutsource.Value)
{
var r = await _dbContext.Queryable<OutsourceEntity>()
.LeftJoin<DeviceUploadLogEntity>((os, x) => os.Code == x.UserUniqueNo)
.LeftJoin<DeviceEntity>((os, x, device) => x.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((os, x, device, ga) => os.Code == ga.Code)
.LeftJoin<GainfoEntity>((os, x, device, ga, gaSap) => gaSap.Code == os.SapCode)
.WhereIF(request.SearchDateTimePeriod.HasValue(), (os, x) => x.RaiseDateTime >= request.SearchDateTimePeriod.Start
&& x.RaiseDateTime <= request.SearchDateTimePeriod.End)
.Where((os, x) => x.Type == type)
.WhereIF(request.Search.IsPresent(), (os, x, device, ga, gaSap) =>
x.UserUniqueNo == request.Search
|| x.DeviceUniqueNo == request.Search
|| os.Supplier == request.Search
|| os.SapCode == request.Search
).OrderBy((os, x, device, ga, gaSap) => x.ModifiedTime, OrderByType.Desc)
.Select((os, x, device, ga, gaSap) => new DeviceUploadLogResponse
{
Id = x.Id,
OriginUserUniqueNo = x.UserUniqueNo,
OutsourceSupplier = os.Supplier,
SapUserCode = os.SapCode,
SapUserName = gaSap.Name,
DeviceUniqueNo = x.DeviceUniqueNo,
RaiseDateTime = x.RaiseDateTime,
CreateTime = x.CreateTime,
SerialNo = x.SerialNo,
UserNo = ga.No,
UserCode = ga.Code,
UserName = ga.Name,
DeployPlace = device.DeployPlace,
Sync = x.Sync,
Status = x.Status,
}).ToPageListAsync(request.PageIndex, request.PageSize);
var userType = request.IsOutsource.HasValue && request.IsOutsource.Value
? GainfoUserTypeEnumType.Outsource
: GainfoUserTypeEnumType.Normal;
return new Pagination<DeviceUploadLogResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = r
};
}
else
if (request.UserType.HasValue)
{
var r = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((x, device) => x.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((x, device, ga) => x.UserUniqueNo == ga.Code)
.LeftJoin<OutsourceEntity>((x, device, ga, os) => x.UserUniqueNo == os.Code)
.LeftJoin<GainfoEntity>((x, device, ga, os, gaSap) => gaSap.Code == os.SapCode)
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.RaiseDateTime >= request.SearchDateTimePeriod.Start
&& x.RaiseDateTime <= request.SearchDateTimePeriod.End)
.Where((x, device) => x.Type == type && !SqlFunc.IsNullOrEmpty(x.UserUniqueNo))
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.IsOutsource.HasValue && request.IsOutsource.Value,
x => SqlFunc.Subqueryable<OutsourceEntity>().Where(p => p.Code == x.UserUniqueNo).Any())
.WhereIF(request.IsOutsource.HasValue && !request.IsOutsource.Value,
x => SqlFunc.Subqueryable<OutsourceEntity>().Where(p => p.Code == x.UserUniqueNo).NotAny())
.WhereIF(request.Search.IsPresent(), (x, device, ga, os) =>
x.UserUniqueNo == request.Search || x.DeviceUniqueNo == request.Search
)
.OrderBy(x => x.ModifiedTime, OrderByType.Desc)
.Select((x, device, ga, os, gaSap) => new DeviceUploadLogResponse
{
Id = x.Id,
OriginUserUniqueNo = x.UserUniqueNo,
OutsourceSupplier = os.Supplier,
SapUserCode = os.SapCode,
SapUserName = gaSap.Name,
DeviceUniqueNo = x.DeviceUniqueNo,
RaiseDateTime = x.RaiseDateTime,
CreateTime = x.CreateTime,
SerialNo = x.SerialNo,
UserNo = ga.No,
UserCode = ga.Code,
UserName = ga.Name,
DeployPlace = device.DeployPlace,
Sync = x.Sync,
Status = x.Status,
}).ToPageListAsync(request.PageIndex, request.PageSize);
return new Pagination<DeviceUploadLogResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = r
};
userType = request.UserType.Value;
}
var r = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((x, device) => x.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((x, device, ga) => x.UserUniqueNo == ga.Code)
.LeftJoin<OutsourceEntity>((x, device, ga, os) => x.UserUniqueNo == os.Code)
.LeftJoin<GainfoEntity>((x, device, ga, os, gaSap) => gaSap.Code == os.SapCode)
.WhereIF(request.SearchDateTimePeriod.HasValue(), x => x.RaiseDateTime >= request.SearchDateTimePeriod.Start
&& x.RaiseDateTime <= request.SearchDateTimePeriod.End)
.Where((x, device) => x.Type == type && x.UserType == userType)
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.Search.IsPresent(), (x, device, ga, os) =>
x.UserUniqueNo == request.Search || x.DeviceUniqueNo == request.Search
)
.OrderBy(x => x.ModifiedTime, OrderByType.Desc)
.Select((x, device, ga, os, gaSap) => new DeviceUploadLogResponse
{
Id = x.Id,
OriginUserUniqueNo = x.UserUniqueNo,
OutsourceSupplier = os.Supplier,
SapUserCode = os.SapCode,
SapUserName = gaSap.Name,
DeviceUniqueNo = x.DeviceUniqueNo,
RaiseDateTime = x.RaiseDateTime,
CreateTime = x.CreateTime,
SerialNo = x.SerialNo,
UserNo = ga.No,
UserCode = ga.Code,
UserName = ga.Name,
DeployPlace = device.DeployPlace,
Sync = x.Sync,
Status = x.Status,
}).ToPageListAsync(request.PageIndex, request.PageSize);
return new Pagination<DeviceUploadLogResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = r
};
}
}