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
#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 获取课程
/// <summary>
/// 获取课程
@ -79,4 +92,10 @@ public class Ghre_StudyRecordController : BaseController<IGhre_StudyRecordServic
return await _service.RecordDuration(id, insert.StudyDuration);
}
#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>
<returns></returns>
</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)">
<summary>
获取课程

@ -15,11 +15,15 @@ namespace Tiobon.Core.IServices
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> Join(long courseId);
Task<ServiceResult> RecordDuration(long studyRecordId, decimal? duration);
Task<ServiceResult<ExcelData>> ExportStaffExcel(QueryExport body);
}
}

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

@ -279,14 +279,14 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND b.elementType = 'FnKey') order by fnKeySeq";
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
#region 定义表格页面的栏位, 含 表格栏位, 常用查询栏位, 高级查询栏位,可编辑栏位
await Db.Ado.BeginTranAsync();
Db.Ado.BeginTran();
sql = @"IF OBJECT_ID('tempdb.[dbo].[#TmpInitPageSettingQuery]') IS NOT NULL DROP TABLE [dbo].[#TmpInitPageSettingQuery]
CREATE TABLE [dbo].[#TmpInitPageSettingQuery](pageColumnID int) alter TABLE [dbo].[#TmpInitPageSettingQuery]
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) ,
isSorted nvarchar(10),isHidden nvarchar(10),isSearched nvarchar(10),sortNo int,
[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
@ -312,7 +312,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND a.IsEnable = 1
AND a.PageSettingQueryId = b.PageSettingQueryId";
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)
{
sql = @"INSERT INTO [dbo].[#TmpInitPageSettingQuery]
@ -367,7 +367,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND IsEnable = 1
ORDER BY SortNo";
sql = string.Format(sql, param.menuName, App.User.ID, param.langId);
count = await Db.Ado.ExecuteCommandAsync(sql);
count = Db.Ado.ExecuteCommand(sql);
}
else
{
@ -491,7 +491,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
AND kk.elementtype = Ghrs_PageSettingQuery.elementtype)
ORDER BY SortNo ";
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
WHERE elementType = 'FnKey' OR field = 'Muti';";
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,
required, palceholder, dataSourceType,dataSource, sortable, sortOrder,
@ -811,7 +811,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
from [dbo].[#TmpInitPageSettingQuery]
order by sortno asc";
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 = result.JM_TableColumnT1.TableColumn.Where(x => x.field != "DetailYN" && x.field != "Muti").ToList();
result.JM_TableColumnT1.TableColumn.ForEach(x =>
@ -823,7 +823,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
if (x.multipleSearchValue == "true")
x.searchColumnDefaultValue = new List<string>();
});
await Db.Ado.CommitTranAsync();
Db.Ado.CommitTran();
sql = @"SELECT Langkey field,
CASE {2}
@ -842,11 +842,11 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
WHERE IsEnable = 1
AND (LangKey LIKE 'GHR_Page%' OR LangKey LIKE 'GHR_Common%')";
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 = 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)
{
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 B.IsEnable = 1
AND B.RoleNo = 'TrainingExamScore'";
var toolbarRoles = await Db.Ado.SqlQueryAsync<ToolbarRole>(sql);
var toolbarRoles = DbAccess.QueryList<ToolbarRole>(sql);
if (toolbarRoles != null && toolbarRoles.Any())
result.JM_PageControlT1.Toolbar.Add(new Toolbar()
{
@ -1121,6 +1121,10 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
});
break;
case "F_ESS_StudyRecord":
result.DT_Procedure.ExportExcel = "/api/Ghre_StudyRecord/ExportStaffExcel";
break;
}
#endregion
@ -1138,12 +1142,18 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
var result1 = await GetModuleInfoAsync(param);
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_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, };
}
#endregion

@ -11,11 +11,9 @@ using Newtonsoft.Json;
using Tiobon.Core.Common.Helper;
using SqlSugar;
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>
@ -61,10 +59,15 @@ namespace Tiobon.Core.Services
if (name == "Date")
{
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;
}
if (name == "IsPass" || name == "Source")
{
value = value.Replace("Include", "Equal");
}
if (!string.IsNullOrWhiteSpace(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)
{
if (await Db.Queryable<Ghre_StudyRecord>()
@ -730,4 +787,3 @@ namespace Tiobon.Core.Services
}
#endregion
}
}

@ -991,6 +991,13 @@
<param name="body"></param>
<returns></returns>
</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)">
<summary>
获取课程

Loading…
Cancel
Save