讲师上课分析

master
xiaochanghai 9 months ago
parent 11334b82ce
commit 68b8c1ea49
  1. 3608
      Model/Tiobon.Web.pdm
  2. 17
      Tiobon.Core.Api/Controllers/Ghre/Ghre_StudyRecordController.cs
  3. 7
      Tiobon.Core.Api/Tiobon.Core.xml
  4. 3
      Tiobon.Core.IServices/Ghre/IGhre_StudyRecordServices.cs
  5. 12
      Tiobon.Core.Model/ViewModels/Extend/TeacherClassAnalysis.cs
  6. 113
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  7. 245
      Tiobon.Core/Tiobon.Core.Model.xml
  8. 12
      Tiobon.Core/Tiobon.Core.xml

File diff suppressed because it is too large Load Diff

@ -1,4 +1,6 @@
namespace Tiobon.Core.Api.Controllers; using Tiobon.Core.Model.ViewModels.Extend;
namespace Tiobon.Core.Api.Controllers;
/// <summary> /// <summary>
/// 培训记录(Controller) /// 培训记录(Controller)
@ -98,4 +100,17 @@ public class Ghre_StudyRecordController : BaseController<IGhre_StudyRecordServic
{ {
return await _service.ExportStaffExcel(body); return await _service.ExportStaffExcel(body);
} }
#region 讲师上课分析
/// <summary>
/// 讲师上课分析
/// </summary>
/// <param name="body"></param>
/// <returns></returns>
[HttpPost, Route("QueryTeacherClassAnalysis")]
public async Task<ServicePageResult<TeacherClassAnalysis>> QueryTeacherClassAnalysis([FromBody] QueryBody body)
{
return await _service.QueryTeacherClassAnalysis(body);
}
#endregion
} }

@ -1059,6 +1059,13 @@
<param name="id"></param> <param name="id"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryTeacherClassAnalysis(Tiobon.Core.Common.QueryBody)">
<summary>
讲师上课分析
</summary>
<param name="body"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController">
<summary> <summary>
必选修规则(Controller) 必选修规则(Controller)

@ -2,6 +2,7 @@
using Tiobon.Core.IServices.BASE; using Tiobon.Core.IServices.BASE;
using Tiobon.Core.Model; using Tiobon.Core.Model;
using Tiobon.Core.Model.Models; using Tiobon.Core.Model.Models;
using Tiobon.Core.Model.ViewModels.Extend;
namespace Tiobon.Core.IServices namespace Tiobon.Core.IServices
{ {
@ -27,5 +28,7 @@ namespace Tiobon.Core.IServices
Task<ServiceResult<ExcelData>> ExportStaffExcel(QueryExport body); Task<ServiceResult<ExcelData>> ExportStaffExcel(QueryExport body);
Task SyncToESS(); Task SyncToESS();
Task<ServicePageResult<TeacherClassAnalysis>> QueryTeacherClassAnalysis(QueryBody filter);
} }
} }

@ -0,0 +1,12 @@
namespace Tiobon.Core.Model.ViewModels.Extend;
public class TeacherClassAnalysis
{
public string DeptName { get; set; }
public string TeacherName { get; set; }
public string TeacherLevel { get; set; }
public string TeacherLevelLabel { get; set; }
public string CourseName { get; set; }
public string StandardHour { get; set; }
public string NUM { get; set; }
}

@ -19,8 +19,7 @@ using NPOI.SS.Util;
using NPOI.XSSF.UserModel; using NPOI.XSSF.UserModel;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using System.Data; using System.Data;
using Microsoft.AspNetCore.Http.HttpResults; using Tiobon.Core.Model.ViewModels.Extend;
using Org.BouncyCastle.Crypto;
namespace Tiobon.Core.Services; namespace Tiobon.Core.Services;
@ -1365,8 +1364,7 @@ WHERE A.Id = '{id}'";
} }
#endregion #endregion
#region 同步学习记录至ESS
#region 记录学习时长
public async Task SyncToESS() public async Task SyncToESS()
{ {
var dt = DateTime.Now; var dt = DateTime.Now;
@ -1418,4 +1416,111 @@ WHERE A.Id = '{id}'";
} }
} }
#endregion #endregion
#region 获取我的学习
/// <summary>
///
/// </summary>
/// <param name="filter"></param>
/// <param name="condition"></param>
/// <param name="IsEnable"></param>
/// <returns></returns>
public async Task<ServicePageResult<TeacherClassAnalysis>> QueryTeacherClassAnalysis(QueryBody filter)
{
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "DeptName ASC";
if (filter.pageSize == 0)
filter.pageSize = 10000;
string conditions = $" AND 1=1 ";
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (!string.IsNullOrWhiteSpace(value))
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
switch (jsonParam.operationKey)
{
case "Include":
conditions += $" AND {name} LIKE '%{jsonParam.columnValue}%'";
break;
case "NotInclude":
conditions += $" AND {name} NOT LIKE '%{jsonParam.columnValue}%'";
break;
case "IsNull":
conditions += $" AND {name} IS NULL";
break;
case "NotNull":
conditions += $" AND {name} IS NOT NULL";
break;
case "Equal":
conditions += $" AND {name} ='{jsonParam.columnValue}'";
break;
case "NotEqual":
conditions += $" AND {name} !='{jsonParam.columnValue}'";
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;
default:
break;
}
}
}
var sql = @$"SELECT DeptName,
TeacherName,
TeacherLevel,
CourseName,
SUM (StandardHour) StandardHour,
count (0) NUM
FROM (SELECT ISNULL
(C.DeptName + ' (' + C.DeptNo + ')',
D.SchoolName + ' (' + D.SchoolNo + ')') DeptName,
E.TeacherName + ' (' + E.TeacherNo + ')' TeacherName,
E.TeacherLevel,
B.CourseName,
B.StandardHour
FROM Ghre_StudyRecord A
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghro_Dept C ON B.TeacherDeptId = C.DeptID
LEFT JOIN Ghre_School D ON B.SchoolId = D.Id
LEFT JOIN Ghre_Teacher E ON B.SchoolTeacherId = E.Id
WHERE A.BeginTime IS NOT NULL AND A.CourseId IS NOT NULL {conditions}) A
GROUP BY DeptName,
TeacherName,
TeacherLevel,
CourseName
ORDER BY {filter.orderBy}";
var entitys = await Db.Ado.SqlQueryAsync<TeacherClassAnalysis>(sql);
var dt = DateTime.Now.Date;
entitys.ForEach(async x =>
{
x.TeacherLevelLabel = await GetParaLabel("TrainingTeacherLevel", x.TeacherLevel);
});
return new ServicePageResult<TeacherClassAnalysis>(filter.pageNum, entitys.Count, filter.pageSize, entitys);
}
#endregion
} }

@ -974,6 +974,111 @@
Reverse5 Reverse5
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase">
<summary>
Ghra_StaffTraining (Dto.Base)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.StaffTrainingID">
<summary>
StaffTrainingID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.StaffID">
<summary>
StaffID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.TrainingOrgID">
<summary>
TrainingOrgID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.TrainingOrgName">
<summary>
TrainingOrgName
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.CourseID">
<summary>
CourseID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.CourseName">
<summary>
CourseName
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.ClassHour">
<summary>
ClassHour
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.IsPass">
<summary>
IsPass
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.ClassCredit">
<summary>
ClassCredit
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.BeginDate">
<summary>
BeginDate
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.EndDate">
<summary>
EndDate
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.AttachmentIDs">
<summary>
AttachmentIDs
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.RemarkSz">
<summary>
RemarkSz
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.SortNo">
<summary>
SortNo
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.IsDefault">
<summary>
IsDefault
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.Reverse1">
<summary>
Reverse1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.Reverse2">
<summary>
Reverse2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.Reverse3">
<summary>
Reverse3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.Reverse4">
<summary>
Reverse4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingBase.Reverse5">
<summary>
Reverse5
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghra_TitleBase"> <member name="T:Tiobon.Core.Model.Models.Ghra_TitleBase">
<summary> <summary>
Ghra_Title (Dto.Base) Ghra_Title (Dto.Base)
@ -4700,6 +4805,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecordBase.StaffTrainingId">
<summary>
员工培训ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_StudyRuleBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_StudyRuleBase">
<summary> <summary>
必选修规则 (Dto.Base) 必选修规则 (Dto.Base)
@ -6362,6 +6472,11 @@
Ghra_StaffLicence (Dto.EditInput) Ghra_StaffLicence (Dto.EditInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.EditGhra_StaffTrainingInput">
<summary>
Ghra_StaffTraining (Dto.EditInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.EditGhra_TitleInput"> <member name="T:Tiobon.Core.Model.Models.EditGhra_TitleInput">
<summary> <summary>
Ghra_Title (Dto.EditInput) Ghra_Title (Dto.EditInput)
@ -6602,6 +6717,11 @@
Ghra_StaffLicence (Dto.InsertInput) Ghra_StaffLicence (Dto.InsertInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.InsertGhra_StaffTrainingInput">
<summary>
Ghra_StaffTraining (Dto.InsertInput)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhra_TitleInput"> <member name="T:Tiobon.Core.Model.Models.InsertGhra_TitleInput">
<summary> <summary>
Ghra_Title (Dto.InsertInput) Ghra_Title (Dto.InsertInput)
@ -7968,6 +8088,111 @@
Reverse5 Reverse5
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghra_StaffTraining">
<summary>
Ghra_StaffTraining (Model)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.StaffTrainingID">
<summary>
StaffTrainingID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.StaffID">
<summary>
StaffID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.TrainingOrgID">
<summary>
TrainingOrgID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.TrainingOrgName">
<summary>
TrainingOrgName
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.CourseID">
<summary>
CourseID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.CourseName">
<summary>
CourseName
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.ClassHour">
<summary>
ClassHour
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.IsPass">
<summary>
IsPass
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.ClassCredit">
<summary>
ClassCredit
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.BeginDate">
<summary>
BeginDate
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.EndDate">
<summary>
EndDate
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.AttachmentIDs">
<summary>
AttachmentIDs
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.RemarkSz">
<summary>
RemarkSz
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.SortNo">
<summary>
SortNo
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.IsDefault">
<summary>
IsDefault
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.Reverse1">
<summary>
Reverse1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.Reverse2">
<summary>
Reverse2
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.Reverse3">
<summary>
Reverse3
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.Reverse4">
<summary>
Reverse4
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTraining.Reverse5">
<summary>
Reverse5
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghra_Title"> <member name="T:Tiobon.Core.Model.Models.Ghra_Title">
<summary> <summary>
Ghra_Title (Model) Ghra_Title (Model)
@ -11696,6 +11921,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecord.StaffTrainingId">
<summary>
员工培训ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_StudyRule"> <member name="T:Tiobon.Core.Model.Models.Ghre_StudyRule">
<summary> <summary>
必选修规则 (Model) 必选修规则 (Model)
@ -14202,6 +14432,21 @@
修改信息 修改信息
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghra_StaffTrainingDto">
<summary>
Ghra_StaffTraining(Dto.View)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingDto.CreateDataInfo">
<summary>
创建信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghra_StaffTrainingDto.UpdateDataInfo">
<summary>
修改信息
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghra_TitleDto"> <member name="T:Tiobon.Core.Model.Models.Ghra_TitleDto">
<summary> <summary>
Ghra_Title(Dto.View) Ghra_Title(Dto.View)

@ -614,6 +614,11 @@
Ghra_StaffLicence(Controller) Ghra_StaffLicence(Controller)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Api.Controllers.Ghra_StaffTrainingController">
<summary>
Ghra_StaffTraining(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghra_TitleController"> <member name="T:Tiobon.Core.Api.Controllers.Ghra_TitleController">
<summary> <summary>
Ghra_Title(Controller) Ghra_Title(Controller)
@ -1054,6 +1059,13 @@
<param name="id"></param> <param name="id"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryTeacherClassAnalysis(Tiobon.Core.Common.QueryBody)">
<summary>
讲师上课分析
</summary>
<param name="body"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_StudyRuleController">
<summary> <summary>
必选修规则(Controller) 必选修规则(Controller)

Loading…
Cancel
Save