fix 查询优化

This commit is contained in:
2024-04-10 13:11:23 +08:00
parent ce4a3409e9
commit 335a1211fb
8 changed files with 89 additions and 27 deletions

View File

@@ -4,7 +4,10 @@ namespace Dlhis.Basic.Organization.Request;
public class TenantDepartmentRequest
{
[Required]
/// <summary>
/// 厂区/基地/租户
/// </summary>
[Required(ErrorMessage = "厂区不能为空")]
public string Tenant { get; set; }
/// <summary>

View File

@@ -105,11 +105,6 @@ public class GainfoDetailResponse
/// </summary>
public string CostId { get; set; }
/// <summary>
/// 已婚/未婚
/// </summary>
public string Marital { get; set; }
/// <summary>
/// 国家
/// </summary>
@@ -120,16 +115,16 @@ public class GainfoDetailResponse
/// </summary>
public string NationName { get; set; }
/// <summary>
/// 人脸base64
/// </summary>
public string Face { get; set; }
/// <summary>
/// 厂区
/// </summary>
public string Factory { get; set; }
/// <summary>
/// 工作地
/// </summary>
public string Workplace { get; set; }
/// <summary>
/// 厂区名称
/// </summary>
@@ -138,5 +133,14 @@ public class GainfoDetailResponse
/// <summary>
/// 入职日期
/// </summary>
public DateTime OnboardingDate { get; set; }
public DateTime? EntryDate { get; set; }
//***********************************************************************************************************************
/// <summary>
/// 人脸base64
/// </summary>
public string Face { get; set; }
}

View File

@@ -14,7 +14,6 @@ using Kurisu.SqlSugar.Services;
using Mapster;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Mvc;
using System.Linq.Expressions;
namespace Dlhis.Basic.Organization.Services.Implements;
@@ -61,7 +60,7 @@ public class GainfoService : IGainfoService
var currentTenantId = _currentUser.GetStringTenantId();
//根据组织架构搜索档案
Expression<Func<GainfoEntity, bool>> where = LinqExpressionExtensions.False<GainfoEntity>();
var where = LinqExpressionExtensions.False<GainfoEntity>();
foreach (var item in request.DepartmentSelections)
{
var depts = await GetRecursionDepartmentNosAsync(item.DepartmentNos);
@@ -449,13 +448,15 @@ public class GainfoService : IGainfoService
Degree = ga.Degree,
Werks = ga.Werks,
CostId = ga.CostId,
Marital = "未知",
NativeName = ga.Native,
CountryName = ga.CountryNo,
NationName = ga.Nation,
ClassName = ga.IdClass,
EntryDate = ga.EntryDate,
Workplace = ga.Workplace,
Factory = ga.Factory,
OnboardingDate = ga.CreateTime,
DepartmentName = de.Name,
Position = pos.Name,
@@ -477,9 +478,18 @@ public class GainfoService : IGainfoService
info.Face = await _dbContext.ChangeDb("face").Queryable<GainfoFaceEntity>().Where(x => x.UserCode == info.Code).Select(x => x.Face).SingleAsync();
}
try
{
var tenantsResult = await _tenantApi.GetTenantsInternalAsync();
var tenants = tenantsResult.Data;
info.FactoryName = tenants.FirstOrDefault(x => x.Code == info.Factory)?.Name;
info.Workplace = tenants.FirstOrDefault(x => x.Code == info.Workplace)?.Name;
info.Factory = tenants.FirstOrDefault(x => x.Code == info.Factory)?.Name;
}
catch (Exception)
{
}
}
return info;
@@ -546,9 +556,10 @@ public class GainfoService : IGainfoService
return departmentNos.Distinct().ToList();
void RecursionGetNext(string currentCode, List<DepartmentEntity> departments, List<string> result)
//local method
void RecursionGetNext(string currentNo, List<DepartmentEntity> departments, List<string> result)
{
var next = departments.Where(x => x.PNo == currentCode).ToList();
var next = departments.Where(x => x.PNo == currentNo).ToList();
foreach (var item in next)
{

View File

@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Basic.Enums;
using Kurisu.Core.CustomClass;
using Kurisu.Core.DataAccess.Dto;
@@ -6,6 +7,17 @@ namespace Dlhis.Canteen.MealSupplementRecord.Request;
public class MealSupplementRecordRequest : PageDto, IValidatableObject
{
/// <summary>
/// 餐补状态 MealSupplementStatusEnumtype
/// </summary>
[EnumDataType(typeof(MealSupplementStatusEnumtype))]
public MealSupplementStatusEnumtype? Status { get; set; }
/// <summary>
/// 同步状态
/// </summary>
public bool? Sync { get; set; }
/// <summary>
/// 餐补日期范围
/// </summary>

View File

@@ -3,6 +3,7 @@ using Dlhis.Canteen.MealSupplementRecord.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Entity.Canteen.Entities;
using Dlhis.Sys.Api;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.Core.User.Abstractions;
@@ -17,36 +18,60 @@ public class MealSupplementRecordService : IMealSupplementRecordService
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly ITenantApi _tenantApi;
public MealSupplementRecordService(IDbContext dbContext, ICurrentUser currentUser)
public MealSupplementRecordService(IDbContext dbContext, ICurrentUser currentUser, ITenantApi tenantApi)
{
_dbContext = dbContext;
_currentUser = currentUser;
_tenantApi = tenantApi;
}
public async Task<Pagination<MealSupplementRecordResponse>> GetPageAsync(MealSupplementRecordRequest request)
{
var page = await _dbContext.Queryable<MealSupplementRecordEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.Code == ga.Code)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.Code == request.Search || ga.Name.Contains(request.Search))
.WhereIF(request.DateTimePeriod?.Start.HasValue == true && request.DateTimePeriod?.End.HasValue == true,
.WhereIF(request.Status.HasValue, x => x.Status == request.Status)
.WhereIF(request.Sync.HasValue, x => x.Sync == request.Sync)
.WhereIF(request.DateTimePeriod?.Start.HasValue == true
&& request.DateTimePeriod?.End.HasValue == true,
x => x.Date >= request.DateTimePeriod.Start && x.Date <= request.DateTimePeriod.End)
.WhereIF(request.Search.IsPresent(), (x, ga) => x.Code == request.Search || ga.Name == request.Search)
.Select((x, ga) => new MealSupplementRecordResponse
{
Amount = x.Amount,
Code = x.Code,
Date = x.Date,
Factory = x.Factory,
Remark = x.Remark,
Result = x.Result,
Status = x.Status,
Sync = x.Sync,
UniqueId = x.UniqueId,
UserName = ga.Name,
Workplace = x.Workplace,
Factory = x.Factory,
})
.ToPageListAsync(request);
try
{
var tenantsResult = await _tenantApi.GetTenantsInternalAsync();
var tenants = tenantsResult.Data;
page.Data.ForEach(item =>
{
item.Workplace = tenants.FirstOrDefault(x => x.Code == item.Workplace)?.Name;
item.Factory = tenants.FirstOrDefault(x => x.Code == item.Factory)?.Name;
});
}
catch (Exception)
{
}
return page;
}

View File

@@ -9,11 +9,16 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Request;
public class DeviceUploadLogPageRequest : PageDto, IValidatableObject
{
/// <summary>
/// 设备类型
/// 设备类型 DeviceTypeEnumType
/// </summary>
[EnumDataType(typeof(DeviceTypeEnumType))]
public DeviceTypeEnumType? Type { get; set; }
/// <summary>
/// 同步状态
/// </summary>
public bool? Sync { get; set; }
/// <summary>
/// 查询日期范围类型 DateTimeSearchEnumType

View File

@@ -35,6 +35,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
.LeftJoin<DeviceEntity>((deviceUp, device) => deviceUp.DeviceUniqueNo == device.UniqueNo)
.LeftJoin<GainfoEntity>((deviceUp, device, ga) => deviceUp.UserUniqueNo == ga.Code)
.WhereIF(type.HasValue, (deviceUp, device) => deviceUp.Type == type)
.WhereIF(request.Sync.HasValue, deviceUp => deviceUp.Sync == request.Sync)
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.RaiseDateTime >= request.SearchDateTimePeriod.Start)
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.RaiseDateTime <= request.SearchDateTimePeriod.End)
.WhereIF(request.Search.IsPresent(), (deviceUp, device, ga) =>

View File

@@ -32,7 +32,8 @@ public class DeviceTaskAssignmentService : IDeviceTaskAssignmentService
.WhereIF(request.Status.IsPresent(), deviceTask => request.Status.Contains(deviceTask.Status))
.WhereIF(request.Type.HasValue, (deviceTask, ga, device) => deviceTask.DeviceType == request.Type)
.WhereIF(!request.Search.IsEmpty(), (deviceTask, ga, device) =>
ga.Name == request.Search
ga.No == request.Search //详情使用
|| ga.Name == request.Search
|| ga.Code == request.Search
|| deviceTask.DeviceUniqueNo == request.Search
)