优化查询逻辑

develop
old易 2024-03-25 17:33:48 +08:00
parent 4ba9aebe0e
commit a3e6ba14c6
4 changed files with 111 additions and 25 deletions

View File

@ -14,6 +14,6 @@ namespace New_College.IServices
/// </summary>
public interface IT_TbSNeedDataInfoPevServices :IBaseServices<TbSNeedDataInfoPerviewViewDto>
{
Task<List<TbSNeedDataInfoPerviewViewDto>> GetAIPerview(OneSubmitGoRequest request);
}
}

View File

@ -23,6 +23,7 @@ namespace New_College.Model.ViewModels
/// </summary>
public class OneSubmitGoRequest : BasePageRequest
{
public string subjecttype { get; set; }
public string Name { get; set; }
/// <summary>
/// 起始分数
@ -357,7 +358,7 @@ namespace New_College.Model.ViewModels
/// </summary>
public int PlanId { get; set; }
}
public class PlanItem

View File

@ -63,31 +63,32 @@ namespace New_College.Services
public async Task<AIPerviewDto> GetAIPerview(OneSubmitGoRequest request)
{
var subjecttype = request.SubjectClaim.Length == 2 ? request.SubjectClaim : "综合";
request.subjecttype = request.SubjectClaim.Length == 2 ? request.SubjectClaim : "综合";
request.SubjectClaim = request.SubjectClaim.Length == 2 ? (request.SubjectClaim == "理科" ? "物,化,生" : "政,史,地") : request.SubjectClaim;
var aidto = new AIPerviewDto();
int startscore = request.Score - 60;
int endscore = request.Score + 15;
var claim = request.SubjectClaim.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList();
var natureNames = NatureHelper.NatureNames(request.Nature);
Expression<Func<TbSNeedDataInfoPerviewViewDto, bool>> expression = Expressionable.Create<TbSNeedDataInfoPerviewViewDto>()
.And(c => c.Location == request.Location)
.And(c => c.SubjectType == subjecttype)
.AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(c.MajorName, request.Major))
.AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(c._23subject, claim[0]) || SqlFunc.Contains(c._23subject, claim[1]) || SqlFunc.Contains(c._23subject, claim[2]) || c._23subject == "不限")
.AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.Province))
.AndIF(request.Syl.HasValue && request.Syl == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "双一流"))
.AndIF(request._211.HasValue && request._211 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "211"))
.AndIF(request._985.HasValue && request._985 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "985"))
.AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership)
.AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => SqlFunc.ContainsArray(natureNames, c.Nature))
.AndIF(request.EndScore > request.StartScore, c => SqlFunc.Between(c._23Score, startscore, endscore))
.ToExpression();
var querylist = (await t_TbSNeedDataInfoPev.Query(expression)).Select(c => new TbSNeedDataInfoPerviewViewDto()
//int startscore = request.Score - 60;
//int endscore = request.Score + 15;
//var claim = request.SubjectClaim.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList();
//var natureNames = NatureHelper.NatureNames(request.Nature);
//Expression<Func<TbSNeedDataInfoPerviewViewDto, bool>> expression = Expressionable.Create<TbSNeedDataInfoPerviewViewDto>()
// .And(c => c.Location == request.Location)
// .And(c => c.SubjectType == subjecttype)
// .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(c.MajorName, request.Major))
// .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(c._23subject, claim[0]) || SqlFunc.Contains(c._23subject, claim[1]) || SqlFunc.Contains(c._23subject, claim[2]) || c._23subject == "不限")
// .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.Province))
// .AndIF(request.Syl.HasValue && request.Syl == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "双一流"))
// .AndIF(request._211.HasValue && request._211 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "211"))
// .AndIF(request._985.HasValue && request._985 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "985"))
// .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership)
// .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => SqlFunc.ContainsArray(natureNames, c.Nature))
// .AndIF(request.EndScore > request.StartScore, c => SqlFunc.Between(c._23Score, startscore, endscore))
// .ToExpression();
var baselist = await t_TbSNeedDataInfoPev.GetAIPerview(request);
var querylist = baselist.Select(c => new TbSNeedDataInfoPerviewViewDto()
{
//ID = c.ID,
LnstitutionalLevel = c.LnstitutionalLevel,

View File

@ -6,20 +6,104 @@ using New_College.IRepository.Base;
using System.Threading.Tasks;
using System.Collections.Generic;
using New_College.Model.ViewModels;
using OSS.Common.Resp;
using System.Text;
using System.Data.Entity.SqlServer;
using System.Security.Claims;
using Microsoft.Extensions.Primitives;
namespace New_College.Services
{
public class T_TbSNeedDataInfoPevServices : BaseServices<TbSNeedDataInfoPerviewViewDto>, IT_TbSNeedDataInfoPevServices
{
private readonly IBaseRepository<TbSNeedDataInfoPerviewViewDto> _dal;
public T_TbSNeedDataInfoPevServices(IBaseRepository<TbSNeedDataInfoPerviewViewDto> dal)
{
this._dal = dal;
base.BaseDal = dal;
}
/// <summary>
/// 查询条件
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<List<TbSNeedDataInfoPerviewViewDto>> GetAIPerview(OneSubmitGoRequest request)
{
//.And(c => c.Location == request.Location)
// .And(c => c.SubjectType == subjecttype)
// .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(c.MajorName, request.Major))
// .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(c._23subject, claim[0]) || SqlFunc.Contains(c._23subject, claim[1]) || SqlFunc.Contains(c._23subject, claim[2]) || c._23subject == "不限")
// .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.Province))
// .AndIF(request.Syl.HasValue && request.Syl == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "双一流"))
// .AndIF(request._211.HasValue && request._211 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "211"))
// .AndIF(request._985.HasValue && request._985 == 1, c => SqlFunc.Contains(c.LnstitutionalLevel, "985"))
// .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership)
// .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => SqlFunc.ContainsArray(natureNames, c.Nature))
// .AndIF(request.EndScore > request.StartScore, c => SqlFunc.Between(c._23Score, startscore, endscore))
var claim01 = "";
var claim02 = "";
var claim03 = "";
if (!string.IsNullOrWhiteSpace(request.SubjectClaim))
{
var claim = request.SubjectClaim.Split(",");
claim01 = claim[0];
claim02 = claim[1];
claim03 = claim[2];
}
StringBuilder sbsql = new StringBuilder();
sbsql.AppendFormat("SELECT LnstitutionalLevel,UniversityName,Nature,_23SchoolScore from T_TbSNeedDataInfo where Location='{0}' ", request.Location);
sbsql.AppendFormat(" and SubjectType='{0}'",request.subjecttype);
if (!string.IsNullOrWhiteSpace(request.Major))
{
sbsql.AppendFormat(" and MajorName like'%{0}%'", request.Major);
}
if (!string.IsNullOrWhiteSpace(request.SubjectClaim))
{
sbsql.AppendFormat(" and (_23subject like'%{0}%' or _23subject like'%{1}%' or _23subject like'%{2}%' )", claim01, claim02, claim03);
}
if (!string.IsNullOrWhiteSpace(request.Province))
{
sbsql.AppendFormat(" and Province ='{0}'", request.Province);
}
if (request.Syl.HasValue && request.Syl == 1)
{
sbsql.Append(" and LnstitutionalLevel like'%双一流%'");
}
if (request._211.HasValue && request._211 == 1)
{
sbsql.Append(" and LnstitutionalLevel like'%211%'");
}
if (request._985.HasValue && request._985 == 1)
{
sbsql.Append(" and LnstitutionalLevel like'%985%'");
}
if (!string.IsNullOrWhiteSpace(request.Ownership))
{
sbsql.AppendFormat(" and Ownership ='{0}'", request.Ownership);
}
if (!string.IsNullOrWhiteSpace(request.Nature))
{
sbsql.AppendFormat(" and '{0}' like '%Nature%'", request.Nature);
}
if (request.EndScore > request.StartScore)
{
sbsql.AppendFormat(" and (_23Score BETWEEN {0} and {1})", request.Score - 60, request.Score + 15);
}
var list = await _dal.QuerySql(sbsql.ToString());
return list;
}
}
}