ESS端学习记录

master
xiaochanghai 10 months ago
parent defb5651f7
commit d6dcf4ef6f
  1. 19
      Tiobon.Core.Api/Controllers/Ghre/Ghre_StudyRecordController.cs
  2. 7
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 4
      Tiobon.Core.IServices/Ghre/IGhre_StudyRecordServices.cs
  4. 5
      Tiobon.Core.Model/ViewModels/Menu.cs
  5. 40
      Tiobon.Core.Services/CommonServices.cs
  6. 68
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  7. 7
      Tiobon.Core/Tiobon.Core.xml

@ -39,6 +39,19 @@ public class Ghre_StudyRecordController : BaseController<IGhre_StudyRecordServic
} }
#endregion #endregion
#region 获取学习记录
/// <summary>
/// 获取学习记录
/// </summary>
/// <param name="body"></param>
/// <returns></returns>
[HttpPost, Route("QueryStaff")]
public async Task<ServicePageResult<Ghre_StudyRecordDto>> QueryStaff([FromBody] QueryBody body)
{
return await _service.QueryStaff(body);
}
#endregion
#region 获取课程 #region 获取课程
/// <summary> /// <summary>
/// 获取课程 /// 获取课程
@ -79,4 +92,10 @@ public class Ghre_StudyRecordController : BaseController<IGhre_StudyRecordServic
return await _service.RecordDuration(id, insert.StudyDuration); return await _service.RecordDuration(id, insert.StudyDuration);
} }
#endregion #endregion
[HttpPost, Route("ExportStaffExcel")]
public async Task<ServiceResult<ExcelData>> ExportStaffExcel([FromBody] QueryExport body)
{
return await _service.ExportStaffExcel(body);
}
} }

@ -991,6 +991,13 @@
<param name="body"></param> <param name="body"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryStaff(Tiobon.Core.Common.QueryBody)">
<summary>
获取学习记录
</summary>
<param name="body"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)"> <member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)">
<summary> <summary>
获取课程 获取课程

@ -15,11 +15,15 @@ namespace Tiobon.Core.IServices
Task<ServicePageResult<Ghre_StudyRecordESS>> QueryESS(QueryBody filter, string condition, bool? IsEnable = true); Task<ServicePageResult<Ghre_StudyRecordESS>> QueryESS(QueryBody filter, string condition, bool? IsEnable = true);
Task<ServicePageResult<Ghre_StudyRecordDto>> QueryStaff(QueryBody filter);
Task<ServiceResult<Ghre_StudyRecordCourse>> QueryCourse(QueryBody body, long id); Task<ServiceResult<Ghre_StudyRecordCourse>> QueryCourse(QueryBody body, long id);
Task<ServiceResult> Join(long courseId); Task<ServiceResult> Join(long courseId);
Task<ServiceResult> RecordDuration(long studyRecordId, decimal? duration); Task<ServiceResult> RecordDuration(long studyRecordId, decimal? duration);
Task<ServiceResult<ExcelData>> ExportStaffExcel(QueryExport body);
} }
} }

@ -56,8 +56,8 @@ public class ModuleReturn
public class ModuleESSReturn public class ModuleESSReturn
{ {
public JM_PageControlT1 JM_PageControlT1 { get; set; } = new JM_PageControlT1(); public JM_PageControlT1 JM_PageControlT1 { get; set; } = new JM_PageControlT1();
public JM_TableColumnT1 DT_TableColumnT1 { get; set; } = new JM_TableColumnT1(); public List<TableColumn> DT_TableColumnT1 { get; set; } = new List<TableColumn>();
public JM_TableColumnT1 DT_TableDataSearchT1 { get; set; } = new JM_TableColumnT1(); public List<TableColumn> DT_TableDataSearchT1 { get; set; } = new List<TableColumn>();
public List<DT_PageMutiMsg> DT_PageMutiMsg { get; set; } public List<DT_PageMutiMsg> DT_PageMutiMsg { get; set; }
public DT_Procedure DT_Procedure { get; set; } = new DT_Procedure(); public DT_Procedure DT_Procedure { get; set; } = new DT_Procedure();
@ -120,6 +120,7 @@ public class TableColumn
public object searchColumnDefaultValue { get; set; } = ""; public object searchColumnDefaultValue { get; set; } = "";
public string AppColumnType { get; set; } public string AppColumnType { get; set; }
public int pageColumnID { get; set; } public int pageColumnID { get; set; }
public int IsRange { get; set; } = 0;
} }
public class searchOperator public class searchOperator
{ {

@ -279,14 +279,14 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND b.elementType = 'FnKey') order by fnKeySeq"; AND b.elementType = 'FnKey') order by fnKeySeq";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
result.JM_PageControlT1.Toolbar = await Db.Ado.SqlQueryAsync<Toolbar>(sql); result.JM_PageControlT1.Toolbar = DbAccess.QueryList<Toolbar>(sql);
#endregion #endregion
#region 定义表格页面的栏位, 含 表格栏位, 常用查询栏位, 高级查询栏位,可编辑栏位 #region 定义表格页面的栏位, 含 表格栏位, 常用查询栏位, 高级查询栏位,可编辑栏位
await Db.Ado.BeginTranAsync(); Db.Ado.BeginTran();
sql = @"IF OBJECT_ID('tempdb.[dbo].[#TmpInitPageSettingQuery]') IS NOT NULL DROP TABLE [dbo].[#TmpInitPageSettingQuery] sql = @"IF OBJECT_ID('tempdb.[dbo].[#TmpInitPageSettingQuery]') IS NOT NULL DROP TABLE [dbo].[#TmpInitPageSettingQuery]
CREATE TABLE [dbo].[#TmpInitPageSettingQuery](pageColumnID int) alter TABLE [dbo].[#TmpInitPageSettingQuery] CREATE TABLE [dbo].[#TmpInitPageSettingQuery](pageColumnID int) alter TABLE [dbo].[#TmpInitPageSettingQuery]
add [elementType] [nvarchar](1000) , [field] [nvarchar](1000) ,[label] [nvarchar](1000) , add [elementType] [nvarchar](1000) , [field] [nvarchar](1000) ,[label] [nvarchar](1000) ,
@ -300,7 +300,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
[selfDefine] [nvarchar](2000) , [selectUI] [nvarchar](1000) , [isPrimaryKey] [nvarchar](1000) , [selfDefine] [nvarchar](2000) , [selectUI] [nvarchar](1000) , [isPrimaryKey] [nvarchar](1000) ,
isSorted nvarchar(10),isHidden nvarchar(10),isSearched nvarchar(10),sortNo int, isSorted nvarchar(10),isHidden nvarchar(10),isSearched nvarchar(10),sortNo int,
[searchOperator] nvarchar(max),searchColumnDefaultValue nvarchar(1000),AppColumnType nvarchar(100)"; [searchOperator] nvarchar(max),searchColumnDefaultValue nvarchar(1000),AppColumnType nvarchar(100)";
int count = await Db.Ado.ExecuteCommandAsync(sql); int count = Db.Ado.ExecuteCommand(sql);
sql = @"SELECT count (1) UserHasSetting sql = @"SELECT count (1) UserHasSetting
@ -312,7 +312,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND a.IsEnable = 1 AND a.IsEnable = 1
AND a.PageSettingQueryId = b.PageSettingQueryId"; AND a.PageSettingQueryId = b.PageSettingQueryId";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
int UserHasSetting = await Db.Ado.GetIntAsync(sql); int UserHasSetting = Db.Ado.GetInt(sql);
if (UserHasSetting == 0) if (UserHasSetting == 0)
{ {
sql = @"INSERT INTO [dbo].[#TmpInitPageSettingQuery] sql = @"INSERT INTO [dbo].[#TmpInitPageSettingQuery]
@ -367,7 +367,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND IsEnable = 1 AND IsEnable = 1
ORDER BY SortNo"; ORDER BY SortNo";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
count = await Db.Ado.ExecuteCommandAsync(sql); count = Db.Ado.ExecuteCommand(sql);
} }
else else
{ {
@ -491,7 +491,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND kk.elementtype = Ghrs_PageSettingQuery.elementtype) AND kk.elementtype = Ghrs_PageSettingQuery.elementtype)
ORDER BY SortNo "; ORDER BY SortNo ";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
count = await Db.Ado.ExecuteCommandAsync(sql); count = Db.Ado.ExecuteCommand(sql);
} }
@ -791,7 +791,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
SET width = 50 SET width = 50
WHERE elementType = 'FnKey' OR field = 'Muti';"; WHERE elementType = 'FnKey' OR field = 'Muti';";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
count = await Db.Ado.ExecuteCommandAsync(sql); count = Db.Ado.ExecuteCommand(sql);
sql = @"select pageColumnID,elementType, field,label,meky, multipleSelect, dataType, sql = @"select pageColumnID,elementType, field,label,meky, multipleSelect, dataType,
required, palceholder, dataSourceType,dataSource, sortable, sortOrder, required, palceholder, dataSourceType,dataSource, sortable, sortOrder,
@ -811,7 +811,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
from [dbo].[#TmpInitPageSettingQuery] from [dbo].[#TmpInitPageSettingQuery]
order by sortno asc"; order by sortno asc";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
var TableColumn = await Db.Ado.SqlQueryAsync<TableColumn1>(sql); var TableColumn = Db.Ado.SqlQuery<TableColumn1>(sql);
result.JM_TableColumnT1.TableColumn = Mapper.Map(TableColumn).ToANew<List<TableColumn>>(); result.JM_TableColumnT1.TableColumn = Mapper.Map(TableColumn).ToANew<List<TableColumn>>();
result.JM_TableColumnT1.TableColumn = result.JM_TableColumnT1.TableColumn.Where(x => x.field != "DetailYN" && x.field != "Muti").ToList(); result.JM_TableColumnT1.TableColumn = result.JM_TableColumnT1.TableColumn.Where(x => x.field != "DetailYN" && x.field != "Muti").ToList();
result.JM_TableColumnT1.TableColumn.ForEach(x => result.JM_TableColumnT1.TableColumn.ForEach(x =>
@ -823,7 +823,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
if (x.multipleSearchValue == "true") if (x.multipleSearchValue == "true")
x.searchColumnDefaultValue = new List<string>(); x.searchColumnDefaultValue = new List<string>();
}); });
await Db.Ado.CommitTranAsync(); Db.Ado.CommitTran();
sql = @"SELECT Langkey field, sql = @"SELECT Langkey field,
CASE {2} CASE {2}
@ -842,11 +842,11 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
WHERE IsEnable = 1 WHERE IsEnable = 1
AND (LangKey LIKE 'GHR_Page%' OR LangKey LIKE 'GHR_Common%')"; AND (LangKey LIKE 'GHR_Page%' OR LangKey LIKE 'GHR_Common%')";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
result.DT_PageMutiMsg = await Db.Ado.SqlQueryAsync<DT_PageMutiMsg>(sql); result.DT_PageMutiMsg = Db.Ado.SqlQuery<DT_PageMutiMsg>(sql);
sql = "select QueryProcedure, EditProcedure, IUDProcedure from Ghrs_Menu where MenuNo='{0}'"; sql = "select QueryProcedure, EditProcedure, IUDProcedure from Ghrs_Menu where MenuNo='{0}'";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId); sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
DataTable dt = await Db.Ado.GetDataTableAsync(sql); DataTable dt = Db.Ado.GetDataTable(sql);
if (dt.Rows.Count > 0) if (dt.Rows.Count > 0)
{ {
result.DT_Procedure.QueryProcedure = dt.Rows[0]["QueryProcedure"].ToString(); result.DT_Procedure.QueryProcedure = dt.Rows[0]["QueryProcedure"].ToString();
@ -1085,7 +1085,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND A.IsEnable = 1 AND A.IsEnable = 1
AND B.IsEnable = 1 AND B.IsEnable = 1
AND B.RoleNo = 'TrainingExamScore'"; AND B.RoleNo = 'TrainingExamScore'";
var toolbarRoles = await Db.Ado.SqlQueryAsync<ToolbarRole>(sql); var toolbarRoles = DbAccess.QueryList<ToolbarRole>(sql);
if (toolbarRoles != null && toolbarRoles.Any()) if (toolbarRoles != null && toolbarRoles.Any())
result.JM_PageControlT1.Toolbar.Add(new Toolbar() result.JM_PageControlT1.Toolbar.Add(new Toolbar()
{ {
@ -1121,6 +1121,10 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
}); });
break; break;
case "F_ESS_StudyRecord":
result.DT_Procedure.ExportExcel = "/api/Ghre_StudyRecord/ExportStaffExcel";
break;
} }
#endregion #endregion
@ -1138,12 +1142,18 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
var result1 = await GetModuleInfoAsync(param); var result1 = await GetModuleInfoAsync(param);
result.JM_PageControlT1 = result1.Data.JM_PageControlT1; result.JM_PageControlT1 = result1.Data.JM_PageControlT1;
result.DT_TableColumnT1 = result1.Data.JM_TableColumnT1; result.DT_TableColumnT1 = result1.Data.JM_TableColumnT1.TableColumn;
result.DT_PageMutiMsg = result1.Data.DT_PageMutiMsg; result.DT_PageMutiMsg = result1.Data.DT_PageMutiMsg;
result.DT_Procedure = result1.Data.DT_Procedure; result.DT_Procedure = result1.Data.DT_Procedure;
result.DT_TableDataSearchT1 = result.DT_TableColumnT1; result.DT_TableDataSearchT1 = result.DT_TableColumnT1.ToList();
result.DT_TableDataSearchT1 = result.DT_TableDataSearchT1.OrderBy(x => x.searchColumnSeq).Where(x => x.searchable == true).ToList();
result.DT_TableDataSearchT1.TableColumn = result.DT_TableDataSearchT1.TableColumn.Where(x => x.searchable == true).ToList(); result.DT_TableDataSearchT1.ForEach(x =>
{
if (x.searchOperator != null && x.searchOperator.Where(o => o.@operator == "Range").Any())
x.IsRange = 1;
});
return new ServiceResult<ModuleESSReturn>() { Success = true, Message = "查询成功", Data = result, }; return new ServiceResult<ModuleESSReturn>() { Success = true, Message = "查询成功", Data = result, };
} }
#endregion #endregion

@ -11,11 +11,9 @@ using Newtonsoft.Json;
using Tiobon.Core.Common.Helper; using Tiobon.Core.Common.Helper;
using SqlSugar; using SqlSugar;
using static Tiobon.Core.Model.Consts; using static Tiobon.Core.Model.Consts;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using MongoDB.Driver.Linq;
namespace Tiobon.Core.Services namespace Tiobon.Core.Services;
{
/// <summary> /// <summary>
/// 培训记录 (服务) /// 培训记录 (服务)
/// </summary> /// </summary>
@ -61,10 +59,15 @@ namespace Tiobon.Core.Services
if (name == "Date") if (name == "Date")
{ {
var jsonParam = JsonConvert.DeserializeObject<JsonParam1>(value); var jsonParam = JsonConvert.DeserializeObject<JsonParam1>(value);
conditions += $" AND (Date BETWEEN '{jsonParam.columnValue[0]}' AND '{jsonParam.columnValue[1]}')"; conditions += $" AND ((ExamDate BETWEEN '{jsonParam.columnValue[0]}' AND '{jsonParam.columnValue[1]}') OR (CourseBeginTime BETWEEN '{jsonParam.columnValue[0]}' AND '{jsonParam.columnValue[1]}') OR (CourseEndTime BETWEEN '{jsonParam.columnValue[0]}' AND '{jsonParam.columnValue[1]}'))";
continue; continue;
} }
if (name == "IsPass" || name == "Source")
{
value = value.Replace("Include", "Equal");
}
if (!string.IsNullOrWhiteSpace(value)) if (!string.IsNullOrWhiteSpace(value))
conditions = DealConditions(conditions, name, value); conditions = DealConditions(conditions, name, value);
} }
@ -97,8 +100,62 @@ namespace Tiobon.Core.Services
} }
public async Task<ServicePageResult<Ghre_StudyRecordDto>> QueryStaff(QueryBody filter)
{
return await QueryFilterPage(filter, $"UserId={App.User.ID}", true);
}
public async Task<ServiceResult<ExcelData>> ExportStaffExcel(QueryExport body)
{
QueryBody filter = new QueryBody();
filter.pageNum = 1;
filter.pageSize = 1000000;
filter.langId = body.langId;
var ids = new List<long>();
if (body.exportSet.SelectRowKeys != null && body.exportSet.SelectRowKeys.Any())
ids = body.exportSet.SelectRowKeys;
var data = await QueryFilterPage(filter, $"UserId={App.User.ID}", true);
string sql = $@"SELECT *
FROM Ghrs_PageSettingQuery
WHERE IsEnable = 1
AND PageNo = '{body.menuName}'
AND (defaultHidden = 'false' or defaultHidden is null)
ORDER BY SortNo ASC";
var columns = await Db.Ado.SqlQueryAsync<QueryExportColumn>(sql);
var fieldDescs = new Dictionary<string, string>();
if (body.exportSet.ExFields.Any())
body.exportSet.ExFields.ForEach(x =>
{
if (columns.Any(o => o.field == x))
fieldDescs.Add(x, columns.FirstOrDefault(o => o.field == x)?.label);
});
else
fieldDescs = columns.ToDictionary(item => item.field, item => item.label);
var dt = ToDataTable(data.result.DT_TableDataT1, fieldDescs, null);
// 获取所有列名
var dtColumns = dt.Columns;
var id = SnowFlakeSingle.instance.getID();
var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot";
var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}export{Path.DirectorySeparatorChar}{id}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(physicsPath + path))
Directory.CreateDirectory(physicsPath + path);
path = path + body.exportSet.TitleName + ".xlsx";
NPOIHelper.ExportExcel(dt, body.exportSet.TitleName, "sheet1", physicsPath + path);
var result = new ExcelData();
result.filePath = path;
result.fileName = body.exportSet.TitleName + ".xlsx";
return ServiceResult<ExcelData>.OprateSuccess("导出成功", result);
}
public override async Task<long> Add(InsertGhre_StudyRecordInput entity) public override async Task<long> Add(InsertGhre_StudyRecordInput entity)
{ {
if (await Db.Queryable<Ghre_StudyRecord>() if (await Db.Queryable<Ghre_StudyRecord>()
@ -730,4 +787,3 @@ namespace Tiobon.Core.Services
} }
#endregion #endregion
} }
}

@ -991,6 +991,13 @@
<param name="body"></param> <param name="body"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryStaff(Tiobon.Core.Common.QueryBody)">
<summary>
获取学习记录
</summary>
<param name="body"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)"> <member name="M:Tiobon.Core.Api.Controllers.Ghre_StudyRecordController.QueryCourse(Tiobon.Core.Common.QueryBody,System.Int64)">
<summary> <summary>
获取课程 获取课程

Loading…
Cancel
Save