课程管理 课程场景/课件名称/课程负责人 新增可多选查询,查询优化

master
xiaochanghai 11 months ago
parent 6d898d9695
commit 71eecae0bd
  1. 2
      Tiobon.Core.Common/Attribute/QueryFilter.cs
  2. 19
      Tiobon.Core.Services/BASE/BaseServices.cs
  3. 39
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  4. 4
      Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs
  5. 2
      Tiobon.Core.Services/Ghre/Ghre_SchoolServices.cs

@ -101,7 +101,7 @@ public class QueryBody
} }
public class JsonParam public class JsonParam
{ {
public string columnValue { get; set; } public object columnValue { get; set; }
public string operationKey { get; set; } public string operationKey { get; set; }
public string token { get; set; } public string token { get; set; }

@ -3,7 +3,6 @@ using System.Dynamic;
using System.Linq.Expressions; using System.Linq.Expressions;
using AgileObjects.AgileMapper; using AgileObjects.AgileMapper;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using SqlSugar; using SqlSugar;
using Tiobon.Core.Common; using Tiobon.Core.Common;
@ -764,7 +763,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
continue; continue;
if (!string.IsNullOrWhiteSpace(value)) if (!string.IsNullOrWhiteSpace(value))
{ {
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); var jsonParam = JsonHelper.JsonToObj<JsonParam>(value);
switch (jsonParam.operationKey) switch (jsonParam.operationKey)
{ {
@ -798,6 +797,22 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
case "Less"://小于 case "Less"://小于
conditions += $" AND {name} <'{jsonParam.columnValue}'"; conditions += $" AND {name} <'{jsonParam.columnValue}'";
break; break;
case "EqualAny"://
if (jsonParam.columnValue != null)
{
var ids = JsonHelper.JsonToObj<List<string>>(jsonParam.columnValue.ToString());
conditions += $" AND {name} IN ({string.Join(",", ids.Select(id => "'" + id + "'"))})";
}
break;
case "NotEqualAny"://
if (jsonParam.columnValue != null)
{
var ids = JsonHelper.JsonToObj<List<string>>(jsonParam.columnValue.ToString());
conditions += $" AND {name} NOT IN ({string.Join(",", ids.Select(id => "'" + id + "'"))})";
}
break;
default: default:
break; break;
} }

@ -38,15 +38,16 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
RefAsync<int> totalCount = 0; RefAsync<int> totalCount = 0;
string sql = @"SELECT * string sql = @"SELECT *
FROM (SELECT A.*, FROM (SELECT A.*,
D.SceneName CourseSceneName, D.SceneName + ' (' + D.SceneNo + ')' CourseSceneName,
E.CourseWareName, E.CourseWareName + ' (' + E.CourseWareNo + ')' CourseWareName,
F.StaffName ManagerStaffName, F.StaffName + ' (' + F.StaffNo + ')' ManagerStaffName,
G.UserName CreateName, G.UserName CreateName,
H.UserName UpdateName, H.UserName UpdateName,
CASE A.InOrOut CASE A.InOrOut
WHEN 'In' THEN F.StaffName WHEN 'In' THEN F.StaffName
WHEN 'Out' THEN J.TeacherName WHEN 'Out' THEN J.TeacherName
END TeacherName, ISNULL(A.UpdateTime, A.CreateTime) CreateTime1 END TeacherName,
ISNULL (A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Course A FROM Ghre_Course A
LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id
LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id
@ -107,6 +108,34 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
case "NotEqual": case "NotEqual":
conditions += $" AND {name} !='{jsonParam.columnValue}'"; conditions += $" AND {name} !='{jsonParam.columnValue}'";
break; break;
case "GreaterOrEqual"://大于等于
conditions += $" AND {name} >='{jsonParam.columnValue}'";
break;
case "Greater"://大于
conditions += $" AND {name} >'{jsonParam.columnValue}'";
break;
case "LessOrEqual"://小于等于
conditions += $" AND {name} <='{jsonParam.columnValue}'";
break;
case "Less"://小于
conditions += $" AND {name} <'{jsonParam.columnValue}'";
break;
case "EqualAny"://
if (jsonParam.columnValue != null)
{
var ids1 = JsonHelper.JsonToObj<List<string>>(jsonParam.columnValue.ToString());
conditions += $" AND {name} IN ({string.Join(",", ids1.Select(id => "'" + id + "'"))})";
}
break;
case "NotEqualAny"://
if (jsonParam.columnValue != null)
{
var ids1 = JsonHelper.JsonToObj<List<string>>(jsonParam.columnValue.ToString());
conditions += $" AND ({name} NOT IN ({string.Join(",", ids1.Select(id => "'" + id + "'"))}) OR {name} IS NULL)";
}
break;
default: default:
break; break;
} }
@ -139,7 +168,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
x.InOrOutLabel = await GetParaLabel("CourseInOrOut", x.InOrOut); x.InOrOutLabel = await GetParaLabel("CourseInOrOut", x.InOrOut);
x.IsOPenLabel = x.IsOPen == true ? "是" : "否"; x.IsOPenLabel = x.IsOPen == true ? "是" : "否";
var courseClass = classs.Where(a => x.CourseClassId.Contains(a.Id.ToString())).ToList(); var courseClass = classs.Where(a => x.CourseClassId.Contains(a.Id.ToString())).ToList();
x.CourseClassName = string.Join(",", courseClass.Select(a => a.ClassName)); x.CourseClassName = string.Join(",", courseClass.Select(a => a.ClassName + " (" + a.ClassNo + ")"));
}); });
return new ServicePageResult<Ghre_CourseDto>(filter.pageNum, totalCount, filter.pageSize, data); return new ServicePageResult<Ghre_CourseDto>(filter.pageNum, totalCount, filter.pageSize, data);

@ -74,11 +74,11 @@ public class Ghre_QuestionServices : BaseServices<Ghre_Question, Ghre_QuestionDt
switch (jsonParam.operationKey) switch (jsonParam.operationKey)
{ {
case "Include": case "Include":
var ids = await Db.Queryable<Ghre_Course>().Where(x => x.CourseName.Contains(jsonParam.columnValue)).Select(x => x.Id).ToListAsync(); var ids = await Db.Queryable<Ghre_Course>().Where(x => x.CourseName.Contains(jsonParam.columnValue.ToString())).Select(x => x.Id).ToListAsync();
query = query.Where(x => x.CourseId != null && ids.Contains(x.CourseId.Value)); query = query.Where(x => x.CourseId != null && ids.Contains(x.CourseId.Value));
break; break;
case "NotInclude": case "NotInclude":
var ids1 = await Db.Queryable<Ghre_Course>().Where(x => x.CourseName.Contains(jsonParam.columnValue)).Select(x => x.Id).ToListAsync(); var ids1 = await Db.Queryable<Ghre_Course>().Where(x => x.CourseName.Contains(jsonParam.columnValue.ToString())).Select(x => x.Id).ToListAsync();
query = query.Where(x => x.CourseId != null && !ids1.Contains(x.CourseId.Value)); query = query.Where(x => x.CourseId != null && !ids1.Contains(x.CourseId.Value));
break; break;
case "IsNull": case "IsNull":

@ -42,7 +42,7 @@ public class Ghre_SchoolServices : BaseServices<Ghre_School, Ghre_SchoolDto, Ins
if (name == "SchoolNo1") if (name == "SchoolNo1")
{ {
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
schoolNo1 = jsonParam?.columnValue; schoolNo1 = jsonParam?.columnValue?.ToString();
} }
} }
var condition = string.Empty; var condition = string.Empty;

Loading…
Cancel
Save