2.新增考试新增、编辑数据接口

master
xiaochanghai 1 year ago
parent e23a18102e
commit d4abf33531
  1. 20
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamController.cs
  2. 25
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 4
      Tiobon.Core.IServices/Ghre/IGhre_ExamServices.cs
  4. 16
      Tiobon.Core.Model/View/Ghre/Ghre_Exam.Dto.View.cs
  5. 3
      Tiobon.Core.Model/ViewModels/Extend/DefaultGhre_ExamInput.cs
  6. 167
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  7. 25
      Tiobon.Core/Tiobon.Core.xml

@ -33,7 +33,7 @@ public class Ghre_ExamController : BaseController<IGhre_ExamServices, Ghre_Exam,
/// <param name="body">条件</param>
/// <returns></returns>
[HttpPost, Route("QueryList/{status}")]
public async Task<ServicePageResult<Ghre_ExamDto>> QueryList(string status, [FromBody] QueryBody body)
public async Task<dynamic> QueryList(string status, [FromBody] QueryBody body)
{
return await _service.QueryList(body, status);
}
@ -44,7 +44,7 @@ public class Ghre_ExamController : BaseController<IGhre_ExamServices, Ghre_Exam,
/// <summary>
/// 查询明细数据
/// </summary>
/// <param name="status">status</param
/// <param name="id">id</param>
/// <returns></returns>
[HttpPost, Route("QueryDefault/{id}")]
public async Task<ServiceResult<DefaultGhre_ExamInput>> QueryDefault(long id)
@ -59,7 +59,8 @@ public class Ghre_ExamController : BaseController<IGhre_ExamServices, Ghre_Exam,
/// <summary>
/// 根据员工ID查询员工数据
/// </summary>
/// <param name="status">status</param
/// <param name="Ids">Ids</param>
/// <param name="type">type</param>
/// <returns></returns>
[HttpPost, Route("QueryStaff/{type}")]
public async Task<ServiceResult<List<StaffTableData>>> QueryStaff([FromBody] List<int> Ids, string type)
@ -70,5 +71,18 @@ public class Ghre_ExamController : BaseController<IGhre_ExamServices, Ghre_Exam,
#endregion
#region 新增
/// <summary>
/// 新增
/// </summary>
/// <param name="id">id</param>
/// <param name="pageData">pageData</param>
/// <returns></returns>
[HttpPost("Insert1/{id}")]
public async Task<ServiceResult<long>> Insert1(long id, [FromBody] DefaultGhre_ExamPageData pageData)
{
return await _service.Insert1(id, pageData);
}
#endregion
}

@ -603,8 +603,29 @@
<param name="body">条件</param>
<returns></returns>
</member>
<!-- Badly formed XML comment ignored for member "M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryDefault(System.Int64)" -->
<!-- Badly formed XML comment ignored for member "M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryStaff(System.Collections.Generic.List{System.Int32},System.String)" -->
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryDefault(System.Int64)">
<summary>
查询明细数据
</summary>
<param name="id">id</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryStaff(System.Collections.Generic.List{System.Int32},System.String)">
<summary>
根据员工ID查询员工数据
</summary>
<param name="Ids">Ids</param>
<param name="type">type</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.Insert1(System.Int64,Tiobon.Core.Model.DefaultGhre_ExamPageData)">
<summary>
新增
</summary>
<param name="id">id</param>
<param name="pageData">pageData</param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamPaperConfigController">
<summary>
试卷配置(Controller)

@ -11,10 +11,12 @@ namespace Tiobon.Core.IServices
public interface IGhre_ExamServices : IBaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhre_ExamInput, EditGhre_ExamInput>
{
Task<dynamic> GetModuleInfo(ModuleParam param);
Task<ServicePageResult<Ghre_ExamDto>> QueryList(QueryBody body, string status);
Task<dynamic> QueryList(QueryBody body, string status);
Task<ServiceResult<DefaultGhre_ExamInput>> QueryDefault(long Id);
Task<ServiceResult<List<StaffTableData>>> QueryStaff(List<int> Ids, string type);
Task<ServiceResult<long>> Insert1(long id, DefaultGhre_ExamPageData pageData);
}
}

@ -31,4 +31,20 @@ public string CreateDataInfo { get; set; }
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
public string AfterHowLongLabel { get; set; }
public string CourseName { get; set; }
public string ExamModeLabel { get; set; }
public string OpenClassName { get; set; }
public int canCheckbox { get; set; } = 1; // checkbox是否可选 1 是 0否
public int canDetail { get; set; } = 1; // 可查看明细
public int canEdit { get; set; } = 1; // 可编辑
public int canCopy { get; set; } = 1; // 可复制
public int canDelete { get; set; } = 1; // 可作废
public int canPreview { get; set; } = 1; // 可预览
public int showLink { get; set; } = 1; // 显示考试链接按钮
public int showResult { get; set; } = 1; // 显示成绩按钮
public int canClose { get; set; } = 1; // 可归档
public int canCancelRelease { get; set; } = 1;// 可取消发布
}

@ -37,7 +37,8 @@ public class DefaultGhre_ExamColumn
public class DefaultGhre_ExamPageData : Ghre_ExamBase
{
public string AfterHowLong1 { get; set; }
public int? AfterHowLong1 { get; set; }
public List<string> ExamDate { get; set; } = new List<string>();
public List<StaffTableData> staffTableData { get; set; } = new List<StaffTableData>();
}

@ -11,7 +11,7 @@ using AgileObjects.AgileMapper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using NPOI.OpenXmlFormats.Wordprocessing;
using Tiobon.Core.Common.Helper;
namespace Tiobon.Core.Services;
@ -24,10 +24,12 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
private readonly IGhre_CourseServices _ghre_CourseServices;
private readonly IGhre_CourseSceneServices _ghre_CourseSceneServices;
private readonly IGhra_StaffServices _ghra_StaffSceneServices;
private readonly IGhre_ExamStaffServices _ghre_ExamStaffServices;
public Ghre_ExamServices(ICaching caching,
IGhre_CourseServices ghre_CourseServices,
IGhre_CourseSceneServices ghre_CourseSceneServices,
IGhra_StaffServices ghra_StaffSceneServices,
IGhre_ExamStaffServices ghre_ExamStaffServices,
IBaseRepository<Ghre_Exam> dal)
{
this._dal = dal;
@ -36,6 +38,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
_ghre_CourseServices = ghre_CourseServices;
_ghre_CourseSceneServices = ghre_CourseSceneServices;
_ghra_StaffSceneServices = ghra_StaffSceneServices;
_ghre_ExamStaffServices = ghre_ExamStaffServices;
}
public async Task<dynamic> GetModuleInfo(ModuleParam param)
{
@ -186,46 +189,61 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
return result;
}
public async Task<ServicePageResult<Ghre_ExamDto>> QueryList(QueryBody body, string status)
public async Task<dynamic> QueryList(QueryBody body, string status)
{
var data = await QueryFilterPage1(body, status);
var data1 = Mapper.Map(data.result.DT_TableDataT1).ToANew<List<Ghre_ExamDto>>();
//var linkIds = data1.Where(x => x.LinkId != null).Select(x => x.LinkId.Value).Distinct().ToList();
//var courses = await _ghre_CourseServices.Query(x => linkIds.Contains(x.Id));
//var courseScenes = await _ghre_CourseSceneServices.Query(x => linkIds.Contains(x.Id));
//data1.ForEach(async x =>
//{
// try
// {
// x.ScoreMethodLabel = await GetParaLabel("ScoreMethod", x.ScoreMethod);
// x.TotalScore1 = Regex.Replace(x.PassScore.ToString(), @"\.(0+)$", "") + "/" + Regex.Replace(x.TotalScore.ToString(), @"\.(0+)$", "");
// x.SetMethodLabel = await GetParaLabel("SetMethod", x.SetMethod);
// if (x.LinkType == "CourseId")
// x.CourseName = courses.FirstOrDefault(o => o.Id == x.LinkId)?.CourseName;
// else if (x.LinkType == "CourseSceneId")
// x.CourseName = courseScenes.FirstOrDefault(o => o.Id == x.LinkId)?.SceneName;
// }
// catch (Exception)
// {
// }
//});
return new ServicePageResult<Ghre_ExamDto>(body.pageNum, data.result.DT_TablePageInfoT1.TotalCount, body.pageSize, data1);
dynamic return1 = new ExpandoObject();
dynamic result = new ExpandoObject();
dynamic DT_TablePageInfoT1 = new ExpandoObject();
result.DT_TableDataT1 = data.result.DT_TableDataT1;
DT_TablePageInfoT1.PageNum = body.pageNum;
DT_TablePageInfoT1.PageSize = body.pageSize;
DT_TablePageInfoT1.TotalCount = data.result.DT_TablePageInfoT1.TotalCount;
result.DT_TablePageInfoT1 = DT_TablePageInfoT1;
dynamic CardConfig = new ExpandoObject();
CardConfig.cardTitle = "ExamName";
CardConfig.cardImage = "CoverUrl";
CardConfig.column1 = "AfterHowLongLabel";
CardConfig.column1Icon = "ghr-form-designer-deteSelect";
CardConfig.column2 = "CourseName";
CardConfig.column2Icon = "ghr-exam-paper";
CardConfig.column3 = "ExamModeLabel";
CardConfig.column3Icon = "ghr-online-exam";
CardConfig.column4 = "OpenClassName";
CardConfig.column4Icon = "ghr-link-openClass";
CardConfig.column5 = "";
CardConfig.column5Icon = "";
CardConfig.column6 = "";
CardConfig.column6Icon = "";
result.CardConfig = CardConfig;
return1.result = result;
return1.message = "查询成功!";
return1.Success = true;
return1.code = 0;
return1.type = "success";
return return1;
}
public async Task<ServicePageResult<Ghre_Exam>> QueryFilterPage1(QueryBody filter, string status = null)
public async Task<ServicePageResult<Ghre_ExamDto>> QueryFilterPage1(QueryBody filter, string status = null)
{
RefAsync<int> totalCount = 0;
string sql = @"SELECT *
FROM (SELECT A.*,
B.CourseName,
C.Id CourseTypeId,
C.ClassName CourseType
FROM Ghre_Exam A
LEFT JOIN Ghre_Course B ON A.CourseId = B.Id
LEFT JOIN Ghre_CourseClass C ON B.CourseClassId = C.Id
WHERE A.IsEnable = 1) A";
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime DESC";
RefAsync<int> totalCount = 0;
var query = Db.Queryable<Ghre_Exam>();
if (!string.IsNullOrWhiteSpace(status))
query = query.Where(x => x.Status == status);
string conditions = "1=1";
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
@ -234,6 +252,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (!string.IsNullOrWhiteSpace(value))
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
@ -265,12 +284,17 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
}
if (filter.pageSize == 0)
filter.pageSize = 10000;
query = query.Where(conditions);
var list = await query
.OrderByIF(!string.IsNullOrEmpty(filter.orderBy), filter.orderBy)
var data = await Db.SqlQueryable<Ghre_ExamDto>(sql)
.OrderBy(filter.orderBy)
.ToPageListAsync(filter.pageNum, filter.pageSize, totalCount);
return new ServicePageResult<Ghre_Exam>(filter.pageNum, totalCount, filter.pageSize, list);
//data.ForEach(async x =>
//{
// x.DifficultyLevelLabel = await GetParaLabel("DifficultyLevel", x.DifficultyLevel);
// x.QuestionTypeLabel = await GetParaLabel("QuestionType", x.QuestionType);
//});
return new ServicePageResult<Ghre_ExamDto>(filter.pageNum, totalCount, filter.pageSize, data);
}
@ -460,7 +484,22 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
if (Id != 0)
{
var exam = await base.QueryById(Id);
input.pageData = Mapper.Map(exam).ToANew<DefaultGhre_ExamPageData>();
var pageData = Mapper.Map(exam).ToANew<DefaultGhre_ExamPageData>();
if (pageData.AfterHowLong != 7 && pageData.AfterHowLong != 15 && pageData.AfterHowLong != 30)
{
pageData.AfterHowLong1 = pageData.AfterHowLong;
pageData.AfterHowLong = 0;
}
if (pageData.DateType == "ExamDate") pageData.ExamDate.Add(pageData.BeginTime.Value.ToString("yyyy/MM/dd"));
if (pageData.DateType == "ExamDate") pageData.ExamDate.Add(pageData.EndTime.Value.ToString("yyyy/MM/dd"));
input.pageData = pageData;
var staffs = await _ghre_ExamStaffServices.Query(x => x.ExamId == Id);
var ids = staffs.Select(x => Convert.ToInt32(x.StaffId)).ToList();
var staffTableData = await QueryStaff(ids, null);
pageData.staffTableData = staffTableData.Data;
}
#endregion
@ -484,8 +523,10 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
LEFT JOIN Ghra_Title C ON A.TitleID = C.TitleID
WHERE 1=1 AND A.IsEnable=1 ";
sql += $"AND StaffID IN({string.Join(",", Ids)});";
var list = await _ghra_StaffSceneServices.Query(x => Ids.Contains(x.StaffID));
if (Ids.Any())
sql += $"AND StaffID IN({string.Join(",", Ids)}) ";
else sql += "AND 1!=1 ";
//var list = await _ghra_StaffSceneServices.Query(x => Ids.Contains(x.StaffID));
var data = Db.Ado.SqlQuery<StaffTableData>(sql);
//var data = list.Select(x => new StaffTableData()
@ -498,4 +539,50 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
return ServiceResult<List<StaffTableData>>.OprateSuccess("查询成功!", data);
}
public async Task<ServiceResult<long>> Insert1(long id, DefaultGhre_ExamPageData pageData)
{
if (pageData.DateType == "ExamDate")
{
pageData.BeginTime = Convert.ToDateTime(pageData.ExamDate[0]);
pageData.EndTime = Convert.ToDateTime(pageData.ExamDate[1]);
}
if (pageData.AfterHowLong == 0)
pageData.AfterHowLong = pageData.AfterHowLong1;
if (id == 0)
{
pageData.Status = "Draft";
var insert = Mapper.Map(pageData).ToANew<InsertGhre_ExamInput>();
id = await base.Add(insert);
var insertStaffs = pageData.staffTableData.Select(x => new InsertGhre_ExamStaffInput()
{
ExamId = id,
StaffId = x.StaffID,
Source = x.DataSource
}).ToList();
await _ghre_ExamStaffServices.Add(insertStaffs);
return ServiceResult<long>.OprateSuccess("添加成功!", id);
}
else
{
var insert = Mapper.Map(pageData).ToANew<EditGhre_ExamInput>();
await base.Update(id, insert);
await _ghre_ExamStaffServices.Delete(x => x.ExamId == id);
var insertStaffs = pageData.staffTableData.Select(x => new InsertGhre_ExamStaffInput()
{
ExamId = id,
StaffId = x.StaffID,
Source = x.DataSource
}).ToList();
await _ghre_ExamStaffServices.Add(insertStaffs);
return ServiceResult<long>.OprateSuccess("修改成功!", id);
}
}
}

@ -603,8 +603,29 @@
<param name="body">条件</param>
<returns></returns>
</member>
<!-- Badly formed XML comment ignored for member "M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryDefault(System.Int64)" -->
<!-- Badly formed XML comment ignored for member "M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryStaff(System.Collections.Generic.List{System.Int32},System.String)" -->
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryDefault(System.Int64)">
<summary>
查询明细数据
</summary>
<param name="id">id</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.QueryStaff(System.Collections.Generic.List{System.Int32},System.String)">
<summary>
根据员工ID查询员工数据
</summary>
<param name="Ids">Ids</param>
<param name="type">type</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamController.Insert1(System.Int64,Tiobon.Core.Model.DefaultGhre_ExamPageData)">
<summary>
新增
</summary>
<param name="id">id</param>
<param name="pageData">pageData</param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamPaperConfigController">
<summary>
试卷配置(Controller)

Loading…
Cancel
Save