新增课程、考试管理 修改状态 关联数据校验

master
xiaochanghai 1 year ago
parent 851556bac8
commit 32a3e38392
  1. 1097
      Model/Tiobon.Web.pdm
  2. 26
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 2
      Tiobon.Core.Api/Tiobon.Core.xml
  4. 2
      Tiobon.Core.Services/BASE/BaseServices.cs
  5. 9
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  6. 13
      Tiobon.Core.Services/Ghre/Ghre_ExamPaperServices.cs
  7. 25
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  8. 26
      Tiobon.Core/Tiobon.Core.Model.xml
  9. 2
      Tiobon.Core/Tiobon.Core.xml

File diff suppressed because it is too large Load Diff

@ -2177,7 +2177,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordBase">
<summary> <summary>
Ghre_ExamRecord (Dto.Base) 考试记录 (Dto.Base)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ExamId"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ExamId">
@ -2215,14 +2215,14 @@
结束答题时间 结束答题时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualBeginTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualEndTime">
<summary> <summary>
实际开始时间 实际结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualEndTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.Status">
<summary> <summary>
实际结束时间 状态
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.RemarkSz">
@ -3201,7 +3201,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordInput"> <member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordInput">
<summary> <summary>
Ghre_ExamRecord (Dto.EditInput) 考试记录 (Dto.EditInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput"> <member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput">
@ -3311,7 +3311,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordInput"> <member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordInput">
<summary> <summary>
Ghre_ExamRecord (Dto.InsertInput) 考试记录 (Dto.InsertInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput"> <member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput">
@ -5695,7 +5695,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecord"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecord">
<summary> <summary>
Ghre_ExamRecord (Model) 考试记录 (Model)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ExamId"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ExamId">
@ -5733,14 +5733,14 @@
结束答题时间 结束答题时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualBeginTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualEndTime">
<summary> <summary>
实际开始时间 实际结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualEndTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.Status">
<summary> <summary>
实际结束时间 状态
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.RemarkSz">
@ -7693,7 +7693,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDto">
<summary> <summary>
Ghre_ExamRecord(Dto.View) 考试记录(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDto.CreateDataInfo"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDto.CreateDataInfo">

@ -761,7 +761,7 @@
</member> </member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController">
<summary> <summary>
Ghre_ExamRecord(Controller) 考试记录(Controller)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController">

@ -102,7 +102,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ
('GHR_Common_000080', @langId, ' ') ('GHR_Common_000080', @langId, ' ')
UpdateDataInfo UpdateDataInfo
FROM {entityType.GetEntityTableName()} a FROM {entityType.GetEntityTableName()} a
WHERE a.Id = @ID"; WHERE a.Id = @ID AND IsEnable='1'";
dto = await Db.Ado.SqlQuerySingleAsync<TEntityDto>(sql); dto = await Db.Ado.SqlQuerySingleAsync<TEntityDto>(sql);
return dto; return dto;
} }

@ -322,10 +322,13 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
if (entity.Status == "Released") if (entity.Status == "Released")
{ {
string sql = $"SELECT count(0) FROM Ghre_Exam WHERE CourseId='{id}' and IsEnable=1"; var examPaper = await Db.Queryable<Ghre_ExamPaper>().FirstAsync(x => x.LinkId == id && x.LinkType == "CourseId" && x.Status != "Disabled");
return ServiceResult.OprateFailed($"课程【{entity.CourseName}({entity.CourseNo})】已与试卷【{examPaper.PaperName}({examPaper.PaperName})】关联,暂不可{(status == "Draft" ? "" : "")}");
if (await Db.Ado.GetIntAsync(sql) > 0) //string sql = $"SELECT count(0) FROM Ghre_Exam WHERE CourseId='{id}' and IsEnable=1";
return ServiceResult.OprateFailed($"课程【{entity.CourseName}】已在考试中关联,不可{(status == "Disabled" ? "" : "")}!");
//if (await Db.Ado.GetIntAsync(sql) > 0)
// return ServiceResult.OprateFailed($"课程【{entity.CourseName}】已在考试中关联,不可{(status == "Disabled" ? "停用" : "取消发布")}!");
} }
BasePoco ent = entity; BasePoco ent = entity;

@ -3,6 +3,7 @@ using System.Data;
using System.Net; using System.Net;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using AgileObjects.AgileMapper; using AgileObjects.AgileMapper;
using MathNet.Numerics.Distributions;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using MongoDB.Driver.Linq; using MongoDB.Driver.Linq;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@ -42,7 +43,7 @@ public class Ghre_ExamPaperServices : BaseServices<Ghre_ExamPaper, Ghre_ExamPape
IGhre_ExamPaperQuestionServices ghre_ExamPaperQuestionServices, IGhre_ExamPaperQuestionServices ghre_ExamPaperQuestionServices,
IGhre_CourseServices ghre_CourseServices, IGhre_CourseServices ghre_CourseServices,
IGhre_CourseSceneServices ghre_CourseSceneServices, IGhre_CourseSceneServices ghre_CourseSceneServices,
IGhre_ExamServices ghre_ExamServices, //IGhre_ExamServices ghre_ExamServices,
IGhre_ExamRecordServices ghre_ExamRecordServices, IGhre_ExamRecordServices ghre_ExamRecordServices,
ICaching caching, ICaching caching,
IGhrs_UserServices ghrs_UserServices) IGhrs_UserServices ghrs_UserServices)
@ -57,7 +58,7 @@ public class Ghre_ExamPaperServices : BaseServices<Ghre_ExamPaper, Ghre_ExamPape
_ghrs_UserServices = ghrs_UserServices; _ghrs_UserServices = ghrs_UserServices;
_ghre_CourseServices = ghre_CourseServices; _ghre_CourseServices = ghre_CourseServices;
_ghre_CourseSceneServices = ghre_CourseSceneServices; _ghre_CourseSceneServices = ghre_CourseSceneServices;
_ghre_ExamServices = ghre_ExamServices; //_ghre_ExamServices = ghre_ExamServices;
_ghre_ExamRecordServices = ghre_ExamRecordServices; _ghre_ExamRecordServices = ghre_ExamRecordServices;
} }
@ -755,10 +756,12 @@ delete from Ghre_ExamPaperQuestion WHERE ExamPaperId='{id}';");
#region 校验数据是否被引用 #region 校验数据是否被引用
if (entity.Status == "Released" && (status == "Draft" || status == "Disabled"))//取消发布-停用 if (entity.Status == "Released" && (status == "Draft" || status == "Disabled"))//取消发布-停用
{ {
if (await _ghre_ExamServices.AnyAsync(x => x.ExamPaperId == id && x.Status == "Released"))
if (await Db.Queryable<Ghre_Exam>().AnyAsync(x => x.ExamPaperId == id && x.Status != "Disabled"))
{ {
var exam = await _ghre_ExamServices.QuerySingleDto(x => x.ExamPaperId == id && x.Status == "Released"); var exam = await Db.Queryable<Ghre_Exam>().FirstAsync(x => x.ExamPaperId == id && x.Status != "Disabled");
return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】已与考试【{exam.ExamName}({exam.ExamNo}】关联,暂不可{(status == "Draft" ? "" : "")}"); return ServiceResult.OprateFailed($"试卷【{entity.PaperName}({entity.PaperNo})】已与考试【{exam.ExamName}({exam.ExamNo})】关联,暂不可{(status == "Draft" ? "" : "")}");
} }
if (await _ghre_ExamRecordServices.AnyAsync(x => x.ExamPaperId == id && x.Status == "UnderWay")) if (await _ghre_ExamRecordServices.AnyAsync(x => x.ExamPaperId == id && x.Status == "UnderWay"))

@ -15,7 +15,6 @@ using Microsoft.AspNetCore.Http;
using Tiobon.Core.Common.UserManager; using Tiobon.Core.Common.UserManager;
using MongoDB.Driver.Linq; using MongoDB.Driver.Linq;
using Tiobon.Core.Common.DB.Dapper; using Tiobon.Core.Common.DB.Dapper;
using System.Drawing.Drawing2D;
namespace Tiobon.Core.Services; namespace Tiobon.Core.Services;
@ -1082,9 +1081,29 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
ent.UpdateIP = ip; ent.UpdateIP = ip;
ent.UpdateProg = api; ent.UpdateProg = api;
if (status != "Released" && await _ghre_ExamRecordServices.AnyAsync(x => x.ExamId == id)) if (entity.Status == "Released" && status == "Draft" && await _ghre_ExamRecordServices.AnyAsync(x => x.ExamId == id && x.Status == "UnderWay"))
return ServiceResult.OprateFailed("已有学员参与考试,不可取消发布!"); return ServiceResult.OprateFailed("已有学员参与考试,不可取消发布!");
if (entity.Status == "Disabled" && status == "Released")
{
if (entity.LinkType == "CourseId")
{
var course = await _ghre_CourseServices.QueryById(entity.CourseId);
if (course is null)
return ServiceResult.OprateFailed("该考试关联的课程已被删除,暂不可取消归档!");
if (course.Status != "Released")
return ServiceResult.OprateFailed($"该考试关联的课程【{course.CourseName}({course.CourseNo})】状态为【{(course.Status == "Disabled" ? "" : "稿")}】,暂不可取消归档!");
}
var examPaper = await _ghre_ExamPaperServices.QueryById(entity.ExamPaperId);
if (examPaper is null)
return ServiceResult.OprateFailed("该考试关联的试卷已被删除,暂不可取消归档!");
if (examPaper.Status != "Released")
return ServiceResult.OprateFailed($"该考试关联的试卷【{examPaper.PaperName}({examPaper.PaperNo})】状态为【{(examPaper.Status == "Disabled" ? "" : "稿")}】,暂不可取消归档!");
}
if (status == "Released" || status == "Disabled" || status == "Draft") if (status == "Released" || status == "Disabled" || status == "Draft")
{ {
entity.Status = status; entity.Status = status;
@ -1142,7 +1161,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
{ {
ExamId = id, ExamId = id,
UserId = UserContext.Current.User_Id, UserId = UserContext.Current.User_Id,
ActualBeginTime = dt, //ActualBeginTime = dt,
ExamPaperId = exam.ExamPaperId ExamPaperId = exam.ExamPaperId
}; };
await _ghre_ExamRecordServices.Add(insrt); await _ghre_ExamRecordServices.Add(insrt);

@ -2177,7 +2177,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordBase">
<summary> <summary>
Ghre_ExamRecord (Dto.Base) 考试记录 (Dto.Base)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ExamId"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ExamId">
@ -2215,14 +2215,14 @@
结束答题时间 结束答题时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualBeginTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualEndTime">
<summary> <summary>
实际开始时间 实际结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ActualEndTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.Status">
<summary> <summary>
实际结束时间 状态
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.RemarkSz">
@ -3201,7 +3201,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordInput"> <member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordInput">
<summary> <summary>
Ghre_ExamRecord (Dto.EditInput) 考试记录 (Dto.EditInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput"> <member name="T:Tiobon.Core.Model.Models.EditGhre_ExamRecordDetailInput">
@ -3311,7 +3311,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordInput"> <member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordInput">
<summary> <summary>
Ghre_ExamRecord (Dto.InsertInput) 考试记录 (Dto.InsertInput)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput"> <member name="T:Tiobon.Core.Model.Models.InsertGhre_ExamRecordDetailInput">
@ -5695,7 +5695,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecord"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecord">
<summary> <summary>
Ghre_ExamRecord (Model) 考试记录 (Model)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ExamId"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ExamId">
@ -5733,14 +5733,14 @@
结束答题时间 结束答题时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualBeginTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualEndTime">
<summary> <summary>
实际开始时间 实际结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ActualEndTime"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.Status">
<summary> <summary>
实际结束时间 状态
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.RemarkSz"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.RemarkSz">
@ -7693,7 +7693,7 @@
</member> </member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDto"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordDto">
<summary> <summary>
Ghre_ExamRecord(Dto.View) 考试记录(Dto.View)
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDto.CreateDataInfo"> <member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordDto.CreateDataInfo">

@ -761,7 +761,7 @@
</member> </member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController">
<summary> <summary>
Ghre_ExamRecord(Controller) 考试记录(Controller)
</summary> </summary>
</member> </member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController">

Loading…
Cancel
Save