优化查询逻辑
parent
4ba9aebe0e
commit
a3e6ba14c6
|
|
@ -14,6 +14,6 @@ namespace New_College.IServices
|
|||
/// </summary>
|
||||
public interface IT_TbSNeedDataInfoPevServices :IBaseServices<TbSNeedDataInfoPerviewViewDto>
|
||||
{
|
||||
|
||||
Task<List<TbSNeedDataInfoPerviewViewDto>> GetAIPerview(OneSubmitGoRequest request);
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue